Why containers
Rather than installing each app directly — where dependencies collide and updates get messy — run each in a container. Every service gets its own sealed environment described by a short text file. Adding, updating, or removing one never disturbs the others. First, get the container engine for your box's OS:
root@box:~$ sudo usermod -aG docker you # log out/in after
# then launch Docker Desktop once to finish setup
Install Docker Desktop, which runs containers on the WSL2 engine you set up in step 01:
From there, every service starts the same way, on every OS:
# update everything cleanly, later:
$ docker compose pull && docker compose up -d
The replacements
Files, photos & calendar → Nextcloud
The big one. Nextcloud covers file sync across devices, phone photo backup, shared calendars, and contacts — the bulk of what a corporate account does. Its phone app auto-uploads photos the moment you take them.
Passwords → Vaultwarden
Vaultwarden is a lightweight server compatible with the Bitwarden apps and extensions. Your vault lives on your box; the polished clients you already know keep working, pointed at your server.
Media library → Jellyfin
Jellyfin streams your own films, shows, and music to any device, with apps for TVs and phones. Fully free, no accounts, no upsells.
Notes, bookmarks, and more
There's a self-hosted equivalent for almost everything: read-it-later, RSS, home dashboards, git hosting, document editing. Browse the awesome-selfhosted catalog and add what you'll actually use.
Two things that now matter
You did it
Hardware you hold, a network that blocks the watchers, your own sites, your own mail, and your own cloud. That's the whole ladder. The web was ours — and piece by piece, you took it back.