Proton Unlimited is five services under one login, and they split in two. Passwords, calendar and files are ordinary self-hosting: Vaultwarden, Radicale and Nextcloud on a small server, wired together with backups by an agent in a weekend. Mail and the VPN are not: mail that big providers accept needs a sender reputation built over years, and a VPN pool means many countries and shared addresses, while one server is one address in one datacenter range. The honest build is the self-hosted part, and keeping Proton, or another hosted mailbox, for email.
Before you buildProton Free keeps one mailbox and 1 GB at no cost. You can also move only the passwords to Vaultwarden and keep Proton for mail.
Build me a self-hosted privacy stack to replace the Pass, Drive, Calendar and VPN parts of Proton Unlimited. Requirements: - A docker-compose.yml, a Makefile and a .env.example for one Debian 12 VPS with 2 GB of RAM. Caddy serves HTTPS for vault., files. and dav. subdomains of DOMAIN from .env; the only other public port is UDP 51820. `make init` writes every generated secret into .env, pins image tags and turns on unattended-upgrades; `make update` pulls newer tags and restarts one service at a time. - Passwords: Vaultwarden (`vaultwarden/server`) with signups closed after the first account, the admin page disabled and data in a named volume. The official Bitwarden apps are the clients. - Files: Nextcloud (`nextcloud:apache`) with Postgres 16 and Redis, a 100 GB quota for my user and only the Files app enabled. The README says plainly that the server can read these files. - Calendar and contacts: Radicale (`tomsquest/docker-radicale`) with an htpasswd user, reachable over CalDAV and CardDAV from DAVx5 and Apple Calendar. - VPN: `ghcr.io/wg-easy/wg-easy` with its web UI bound to 127.0.0.1 and reached through an SSH tunnel; DNS for peers comes from .env. Peers are created in the UI and shown as QR codes. - `make backup` runs restic over every volume to an S3-compatible bucket (RESTIC_REPOSITORY and RESTIC_PASSWORD in .env), after `pg_dump` for Nextcloud and `sqlite3 .backup` for Vaultwarden. `make restore-test` restores the latest snapshot to a temp folder and checks the dumps open. - `make check` verifies valid certificates, Vaultwarden's /alive, Nextcloud's status.php, a Radicale PROPFIND that returns 207 and the open WireGuard port, then prints each service URL. - Single user. No telemetry; outbound calls are image pulls, Let's Encrypt and the backup bucket. - Out of scope: email hosting and aliases (keep Proton Mail or a hosted mailbox), more than one VPN location, apps of my own. - README: moving in from Proton (Pass export to Bitwarden's importer, Drive files by download), the limit that the VPN exits from one datacenter address, and a warning to keep Proton until every service has run for a month.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Proton Unlimited.
Add a password-import helper to the self-hosted stack in this folder. Requirements: - `make import-passwords FILE=<path>` accepts a Proton Pass CSV export or the decrypted JSON from its PGP-encrypted export and prints counts of logins, notes and skipped items. - Convert it to Bitwarden's CSV import format in a temp folder under ./tmp (mode 700), print the path and the exact steps to import it in the Vaultwarden web vault. - Offer to overwrite and delete the temp file afterwards, and delete it by default after 15 minutes. - Never send the file or its contents anywhere. Update the README.
Add monitoring to the self-hosted stack in this folder. Requirements: - `make monitor` installs a systemd timer that runs `make check` every 10 minutes and keeps the last 100 results in a log file. - On the first failure and on recovery send a message to an ntfy topic set in .env; no message for repeated failures within 6 hours. - Also warn when a backup is older than 36 hours or when disk usage is above 85%. - Update the README with the ntfy setup.
Extend the self-hosted stack in this folder with a second WireGuard server. Requirements: - A `make vpn-exit REGION=<name>` target that creates a cheap server through the cloud provider API in .env, installs WireGuard with cloud-init, and prints a peer config for it. - Keep the keys in ./data (mode 600) and list the servers with their monthly cost in `make status`. - `make vpn-exit-destroy REGION=<name>` asks me to type the region name first. - State in the README that each extra exit is another server and bill.
People pay for one account that covers mail, calendar, files, passwords and a VPN, from a company whose business is privacy, with end-to-end encryption by default and apps on every platform. The draw is not any single service but not having to run, patch or vouch for five of them, plus an address that other providers deliver to.
Estimate · A small VPS, a domain and a backup bucket come to roughly $5 to $12 a month depending on the host (not checked here), against $12.99 for Unlimited billed monthly. The build is token usage on your agent plan.
Checked 2026-10-20 against Proton Unlimited's docs: 1, 2, 3, 4, 5, 6
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | 1 GB of storage, 1 user, 1 encrypted email address, 3 folders and labels, 150 messages a day. |
| Mail Plus | $4.99 | $3.99 | 15 GB, 10 encrypted email addresses, 1 custom domain, unlimited folders and labels, 10 hide-my-email aliases, priority support. |
| Unlimited | $12.99 | $9.99 | 500 GB, 1 user, 15 encrypted email addresses, 3 custom domains, unlimited folders, labels and hide-my-email aliases, VPN, password manager, encrypted cloud storage for photos and documents, advanced account protection. |
| Duo and Family | custom | — | Bundles for two people or a family, sold under a For Families link on the pricing page. |
| Business | custom | — | Team mail, drive, VPN and password plans for organisations. |
Proton Free gives 1 GB of storage, one user and one encrypted email address.
Not really. People pay for one account that covers mail, calendar, files, passwords and a VPN, from a company whose business is privacy, with end-to-end encryption by default and apps on every platform. The draw is not any single service but not having to run, patch or vouch for five of them, plus an address that other providers deliver to. The prompt on this page builds the closest honest substitute.
About $12.99 a month on the Unlimited plan, $155.88 a year (checked 2026-10-20).
An end-to-end encrypted mailbox with 15 addresses and 3 custom domains, delivered by someone else's reputation; A VPN with many server locations instead of one address in one datacenter; Hide-my-email aliases, dark web monitoring and emergency access; One login, one bill and matching apps on every platform; Priority support and backups on Proton's side for 500 GB. If any of those matter to you, keep paying.
Yes: Vaultwarden (open source), wg-easy (open source), Stalwart (open source).