Self-hosting, demystified.

Running your own server sounds like something only an experienced linux sysadmin would do. It isn't — not anymore. Here's what it actually involves, layer by layer, and why you own something real at every step.

You own every layer.

Big tech cloud services have you renting a room in someone else's building. Self-hosting means you hold the lease on the whole building — foundation to roof. At every layer of the stack, you are the owner, not a tenant.

The ownership loop: at every layer, you are in control — not a platform, not a vendor.
  • Your domain — your address, portable between hosts
  • Your server — your account, your billing
  • Your data — no one else reads or profits from it
  • Your backups — you decide what to keep
  • Your choice — swap any component at any time

This page explains the infrastructure that makes self-hosting possible, layer by layer. If you'd rather skip to the software your team actually uses day-to-day, head to the end user experience page.

Seven layers. All yours.

Think of it as a building. Each floor supports the one above it. You own the whole structure — and you can replace any floor without demolishing the rest.

7
👥
You and your users
Browser · standard email clients · mobile apps — nothing exotic required
access
6
📦
Your apps
Email server · file & workspace server · community platform · and more
routed through
5
🚦
Web server + SSL
Traffic director — and the 🔒 padlock in every browser
runs on
4
🐧
Operating system + firewall
Linux · security hardening · configured once, maintained quietly
installed on
3
☁️
Cloud server
A virtual machine in a data centre — your account, your billing, from ~€5/month
protected by
2
💾
Backups
Application-level + whole-server snapshots · offsite · encrypted
addressed via
1
🌍
Your domain + DNS
The foundation — your address on the internet, independent of any host
💡 One server can run multiple apps simultaneously. Your email server, workspace, and community platform can all run on a single cloud instance — or on separate servers if you prefer. Either way, every layer is yours.

What each layer does — and why it matters.

One layer at a time. The ownership note at the bottom of each explains why having this layer in your own hands makes a difference.

1
🌍
Your domain
The foundation of your digital identity

A domain name like yourorg.org is your permanent address on the internet. It's registered through a domain registrar — a company that reserves the name and lets you control where it points via DNS records.

DNS (Domain Name System) is the glue between your domain and your server. When someone visits mail.yourorg.org, their device looks up a DNS record you control, finds your server's IP address, and connects. Change the record, and traffic goes to a different server. That portability is the whole point.

Choosing a registrar with a clean interface and straightforward DNS management matters. I use and recommend Namecheap, which ticks those boxes. There are other solid options — what matters most is that you hold the account in your own name.

Why this matters for ownership: your domain is the one thing you carry with you regardless of which server, host, or software you use. If your cloud provider disappeared tomorrow, you'd point your DNS to a new server and be back online quickly.
A note of caution... Domain registrations do need to be renewed annually — a lapsed registration can be registered by someone else. Keep your registrar contact details up to date and auto-renew turned on.
2
💾
Backups
Two complementary layers of protection

A self-hosted server is only as safe as its backups. I set up two complementary layers:

Cloud provider snapshots — most cloud hosting providers offer a way to take a point-in-time copy of your entire server at the click of a button. Hetzner offers these in their web console. Think of this as a full system restore point. Good for recovering from catastrophic failure.

Application-level backups with BorgBorg is an open source, deduplicated, encrypted backup tool that runs on a schedule (nightly) and copies your app data to an offsite destination. Unlike a full server snapshot, Borg can restore individual files, mailboxes, or databases without restoring the entire machine. I use a Hetzner Storage Box as the offsite destination — it's affordable, in the same European infrastructure, and integrates well. Others may prefer a different offsite destination.

Why this matters for ownership: your backups are encrypted with a key only you hold. No provider — not even Hetzner — can read your backup data. And because you control the backup schedule and destination, you decide how much history to keep.
3
☁️
Cloud server
Your virtual machine in a data centre

A cloud server (also called a VPS — Virtual Private Server) is a virtual machine you rent by the month. It's always on, connected to the internet, and yours to configure however you like.

I recommend Hetzner — a German cloud provider with data centres in Germany and Finland, fully subject to European privacy law (GDPR). Their pricing is exceptional: a server capable of running email, workspace, and community software for a small team typically costs €6–€20/month. Their web console lets you configure a firewall, take server snapshots, and resize your server — all without touching the command line.

⚙️ Other providers I can work with: any that support Ubuntu Linux — including DigitalOcean, Linode, Contabo, and OVHcloud.

Why this matters for ownership: your server account is in your name, billed to you directly. If you ever stopped working with me, your server keeps running — you own it. I never hold the keys to your infrastructure.
4
🐧
Operating system + firewall
The invisible foundation everything runs on

Every server needs an operating system. For self-hosting open source software, Ubuntu LTS (Long Term Support) is the gold standard — free, widely supported, and targeted explicitly by most self-hosting software. Before any apps go on, the server is hardened: a firewall (UFW) that blocks everything except the ports your apps need, SSH key authentication replacing password login, and automatic OS security updates.

End-users on your domain never interact with any of this. They use their email and apps like normal. The OS is invisible infrastructure.

⚙️ Debian is a solid alternative for those who prefer it. My runbooks cover Ubuntu; Debian users will find the differences minimal.

Why this matters for ownership: open source operating systems have no licensing fees and no vendor lock-in. Your server can run indefinitely without anyone's permission, and security updates are publicly auditable.
5
🚦
Web server + SSL certificates
Traffic director and the 🔒 in every browser

A reverse proxy is a piece of software that sits in front of all your apps and decides which app gets incoming traffic. When a browser requests mail.yourorg.org, it routes to your email server. When it requests cloud.yourorg.org, it routes to your workspace. One server, multiple services, each on its own subdomain.

It also handles SSL/TLS — the encryption that produces the 🔒 padlock in browsers. Certificates come from Let's Encrypt, a free, automated certificate authority. They're issued and renewed automatically. You never need to buy or manually manage an SSL certificate.

I use Nginx as the reverse proxy. Mailcow ships with its own built-in Nginx, so apps installed on the same server as Mailcow can piggyback on that. Other apps use a separate Nginx instance or Caddy.

⚙️ Caddy is a modern alternative that handles SSL even more automatically. Some Docker-based setups include their own built-in proxy.

Why this matters for ownership: Nginx and Let's Encrypt are both free and open source. Your encrypted connections depend on no paid service and no proprietary vendor.
6
🐳
Your apps — running in Docker
Why self-hosting in 2026 is accessible in a way it wasn't 10 years ago

Docker is the single biggest reason self-hosting is approachable today. It runs each application in its own sealed, self-contained container — like a shipping container on a cargo ship. Each app brings all of its own dependencies with it, so installing Nextcloud doesn't interfere with your email server, and upgrading Discourse can't break anything else on the server.

Installing most open source software now looks roughly like this:

  1. Pull the app's code from its public repository
  2. Create a .env file — a simple text file where you set passwords, API keys, and configuration. It lives only on your server, never in the public code.
  3. Run docker compose up -d — Docker downloads the app image and starts it

Updates follow the same pattern: pull the latest image, run compose again. The app upgrades. Your data, stored separately in a volume, is untouched.

Ten years ago, self-hosting meant manually compiling software, managing system-wide dependencies, and hoping nothing conflicted. Docker changed that entirely.

Why this matters for ownership: each app is containerised and your configuration lives in a .env file that you hold. This means no vendor lock-in at the application layer, and migrations between servers are clean and repeatable.
7
📧
Outbound notifications email
How your apps send alerts, notifications, and resets

When an app on your server needs to send an email — a Discourse notification, a Nextcloud password reset, a calendar reminder — it needs an outbound email relay. The right approach depends on your setup:

For internal installs (a private team's Discourse, a private Nextcloud), I use and recommend routing these notifications through a dedicated account on your own Mailcow server via SMTP. It keeps everything sovereign and in-house, with full control over what gets sent and logged.

For public-facing installs — particularly a Discourse community open to hundreds or thousands of users — it's better to use a dedicated transactional email service. I use and recommend Mailgun for this. Sending high volumes of notifications from your primary mail server's IP address risks damaging its sending reputation, which could affect the deliverability of your own email. Mailgun's free tier covers most small community use cases.

Why this matters: knowing the difference between your primary email server and a notification relay is one of the subtler but important choices in a sovereign setup. Getting this right means your real email always gets delivered — and your app notifications do too.

What I help with. What you own and run.

You don't need to configure a web server or write a docker-compose file. That's what I'm here for. But you should feel informed, not dependent. Here's the division of labour — and why it's set up this way.

🔧 What I help with

  • 🌍 Domain DNS configuration — pointing your subdomains to your server
  • ☁️ Cloud server provisioning — creating and sizing your VPS
  • 🔥 Firewall and OS security hardening
  • 🐳 Docker and app installation — from git clone to running container
  • 🚦 Web server and SSL certificate configuration
  • 💾 Backup setup and testing — Borg + cloud snapshots
  • 📧 Email deliverability — SPF, DKIM, DMARC, reverse DNS
  • 🎓 Hands-on training and onboarding for you and your team
  • 📋 Runbook documentation written for your specific install
  • 🚨 Emergency help if something breaks — available at my hourly rate

🔑 What you own and run

  • 🌐 Your domain registrar account — you keep the login
  • ☁️ Your cloud server account — billed to you directly
  • 🔑 Your SSH key — the cryptographic key to your server
  • 🔒 Your .env files — your secrets, on your server only
  • 💾 Your backup encryption key — only you can decrypt your backups
  • 👥 Your user accounts — you're the admin of every app
  • 📂 Your data — emails, files, calendars, databases
  • 🔄 Day-to-day maintenance — updates, monitoring, responding to alerts
  • 🏠 The whole server — it runs with or without me
On ongoing maintenance: I set things up and hand them over. Day-to-day maintenance — applying updates, keeping an eye on disk usage, responding to backup alerts — is yours to own. The runbooks walk you through each of these tasks step by step. If something urgent breaks or you need emergency help, I'm available at my hourly rate for premium members. The goal is for you to be fully in control — not dependent on anybody.

The community is where the runbooks live — step-by-step maintenance guides written so that a technically curious person can follow them without needing to call anyone.

Answers about the mechanics.

How much does the infrastructure actually cost?
A cloud server capable of running email, workspace, and community for a small team typically costs €6–€20/month depending on the number of users and storage needed. Add a domain (~$10–15/year), a Hetzner Storage Box for offsite backups (~€3–6/month), and transactional email if needed (Mailgun's free tier covers most small use cases). Total infrastructure for most small organisations: under €30/month — often significantly less. Compare that to per-user, per-month Big Tech pricing.
Do I need to know Linux?
End-users on your domain never touch a command line — they just use the web interfaces and apps they are already accustomed to. The admin (the person responsible for keeping the server running) needs occasional command-line access for maintenance tasks, but these are covered by step-by-step runbooks. You will need to be comfortable copying and pasting commands from a guide and reading the output to check it worked. That's it.
Can one server really run email, workspace, and community at the same time?
Yes — and it does so comfortably for teams of up to ~20 people on modest Hetzner hardware. Each app runs in its own Docker container and doesn't interfere with the others. But you can use separate servers if you prefer — your DNS records simply point different subdomains to different servers. This might be a good idea since it means you don't take down your entire infrastructure when you do periodic snapshot backups and software updates.
What about email deliverability — will our emails end up in spam?
This is the trickiest part of self-hosted email, and it's what I take care of during setup. Good deliverability requires making sure the IP address of your new server is not already on a balcklist, then correctly configuring SPF, DKIM, and DMARC DNS records, a reverse DNS entry for your server IP, and starting with a careful sending pattern to build IP reputation. Done properly, self-hosted email is fully deliverable. I've been running my own email this way with no issues.
What if my server goes down?
Cloud hosting like Hetzner has very high uptime — typically 99.9%+. If something does go wrong, you have: the Hetzner console to restart or rebuild from a snapshot, the community runbooks for common failure scenarios, and me available for emergency help at my hourly rate.
What if I want to move to a different server or provider later?
This is one of Docker's great advantages. Because each app is containerised and your configuration is in .env files, migrating to a new server is well-documented and repeatable: spin up a new server, copy containers and volumes across, update your DNS records. Usually a few hours of downtime at most — often less. There is no lock-in to any provider.

Ready for digital sovereignty?

I help you set up your server. You run it. The community supports you. That's the model.