Your first server, if you have never run one

What "self-hosting" actually asks of you, the three places a server can live, the path with the least to learn, and what a month of upkeep looks like.

Last reviewed

You do not need to be a developer. You need to be the kind of person who can follow a recipe and does not mind reading an error message. This page is for you.

What you are signing up for

A server is a computer that stays on and that your phone can reach. OpenTodo on it is one program in one container with one folder of data: no database to install, no configuration file to write. The work is in three parts: give the program a place to run, give it an address with a padlock (https://), and keep it updated and backed up. Running with Docker

Where it can live

Cheapest first:

  • A machine already at home: a NAS, a mini PC, an old laptop. Costs nothing more than it does today; reaching it from outside the house is the part to learn.
  • A Raspberry Pi: a one-off purchase and a few watts. OpenTodo ships for its processor. Running OpenTodo on a Raspberry Pi
  • A small rented server (a VPS): a provider gives you a computer in their data centre with a public address, for a monthly fee for the whole household. The smallest plan of any provider is more than enough; OpenTodo idles at about 20 MB of memory. Resource usage

Prices are in words on purpose: what it costs.

The path with the least to learn

Coolify is a free program that turns a rented server into a place you deploy things to by clicking, and it takes care of the padlock. If you have never run a server, this is the path.

  1. Rent the smallest server a provider offers and follow Coolify’s own install instructions on it. Give it a domain name, or a subdomain of one you own, such as todo.example.com, pointing at the server’s address.
  2. In Coolify, choose + New → Docker Compose, paste the OpenTodo service template, and set Domains to https://todo.example.com. One-click template
  3. Select Deploy, then open the domain right away: the first visitor creates the owner account, and sign-up closes after that. Deploying on Coolify
  4. Open Settings → Backups and turn on a daily backup to storage that is not on the same server. Backups
  5. Invite your household from Settings → Administration → Members, one link each. Invite people to your server Invite someone new
  6. Install the app on your phone from the browser and turn on notifications in it. Install the app Installing the app

If you already run Docker somewhere, the plain Docker path is three commands. Docker Compose

Not sure which of these fits? Plan your server asks four questions and gives you the checklist and the compose file for your answers.

What a month looks like

  • Updates: when a release comes out, pull the new image and restart; the database updates itself. A few minutes, every few weeks. Update the server
  • Backups: nothing, once they are scheduled. Glance at Settings → Backups now and then to see the last run succeeded. Schedule and retention
  • People: a forgotten password means you create a reset link and send it; nothing is emailed by the server. Managing users
  • The rest: keeping your server healthy is the longer checklist.

When something goes wrong

  • The app cannot be installed on a phone or shows no Security section: the address is not https://. Coolify gives you that when the domain starts with https://. Passkeys
  • The owner forgot the password: one command on the server prints a reset link. Recover the owner password
  • Anything else: the troubleshooting page, then an issue on GitHub. Troubleshooting

Your to-do list, on your own server.

Try the demo in your browser. When you like it, install OpenTodo on your server and import your tasks.

OpenTodo is free and open source, with no paid tier. If it helps you, a star on GitHub helps other people find it, and a coffee helps keep it going.

Buy me a coffee