Everything is in the web interface
Everything the server does is configurable from a web interface it serves itself. The same applications you have on the phone are in the browser too, arranged the way you arrange them, and the admin controls are among them rather than hidden in a separate panel — it is closer to using an operating system than to configuring a service. Put it behind the mesh, or do not: some people will want it reachable only on the tailnet and some will not, and that is a setting rather than a position this project takes.
One administrator, and guests where it fits
One administrator, and that is a decision rather than an omission. The platform was originally designed multi-user, with companies in mind; per-user sandboxes for terminals and home directories cost far more than they returned, so that was dropped rather than half-built. What replaced it is narrower and stronger. The web interface answers to a single super-admin — you. Individual apps can then carry their own users: Music does, so accounts you create in the database can sign in and stream, and for them the platform answers authentication and music and nothing else. Every other route is not theirs to call. Other apps will follow that same shape.
Standing one up
Start from a fresh host and run the setup script once. It works out whether it is talking to apt, pacman or brew and installs what is missing — the runtime, the build tools, the process manager — then the process manager keeps everything alive across reboots and power cuts. You will meet a terminal. This is a server, and pretending otherwise would be the first lie on the page. But you will not be pointing a DNS record at your house, opening a port on your router, or explaining a certificate to anybody.
Your disks, your layout
Point it at whatever you have. For most people the machine's own SSD is the entire answer. Keep a film and music library and an external array hangs off the same box instead, with the apps none the wiser about which disk they are reading. There is no layout the platform imposes and no volume it insists on owning — how your data sits on your disks is a decision it leaves to you, because it is one where nobody else's default fits.
However much machine you need
It depends entirely on what you intend to do with it, and a cheap machine covers most of it. Mail, passwords, the vault, invoices, the wallet, the agent — none of that is demanding. What raises the bar is media: streaming video, transcoding libraries, heavy FFmpeg work wants real cores and a real disk. Start from what you already have; the suite will tell you soon enough if you have asked too much of it.
Turn off what you do not want
A feature is a process, and the environment file decides which ones start. Run the mailbox and the vault and nothing else, if that is all you want — the rest are not disabled, they are absent. The apps handle that gracefully because it is a state the platform is built around rather than an error it recovers from: ask for something that is not running and you get a clean answer saying so, not a spinner that never stops.
Nothing is exposed
Nothing about the server is published. No public hostname, no open port, no certificate for the outside world to check. Your devices reach it across the private mesh and that mesh is the perimeter — something sweeping the internet for machines to try finds nothing to knock on, because on the public internet there is nothing there. There is exactly one exception, and it is the card that follows.
The one thing that lives elsewhere
A coordination server has to be reachable, because reaching it is the whole job: it is how two devices that have never met find each other. So Headscale is the one piece that cannot sit on your machine behind the mesh — it needs a small VPS with a public address, and very little else. Worth being precise about what that means, since it is the only public thing here: it holds keys and device names and nothing at all of yours. No files, no mail, no wallet, no vault. Run one yourself, or take hosting for it from us if a second machine is a nuisance. Better to read this now than to meet it halfway through a setup.
Updates
Not settled, and this page will keep saying so until it is. The server is moving to Docker, and the intent is the ordinary arrangement everyone already knows: the web interface shows the version you are running against the version available and tells you when they differ, very possibly updating in place from there. Written down as a plan, not as a feature.