Self-host
Run OpenTodo on your own server in a few minutes.
It is one container with no database server to set up and nothing to configure. Start it, open the address, create your account, and invite the people who will use it.
- Server binary
- about 26 MB
- Database
- one SQLite file
- Runs on
- amd64 and arm64
Install in minutes
Pick the way you already run things. Every method serves the same app; updates are a new image or binary, and the database migrates itself on start.
- Sign-up closes after the owner account; invite people with a link
- Automatic HTTPS when you deploy with Coolify
- Single sign-on with the OpenID Connect provider you already run
- A built-in health check for your orchestrator
Docker
docker run -d --name opentodo -p 8080:8080 \
-v opentodo-data:/data ghcr.io/pixari/opentodo:0.6.0
# then open http://localhost:8080 and create the owner accountCoolify
# Coolify: + New Resource, Public Repository
Repository https://github.com/pixari/opentodo
Build pack Docker Compose
# Assign a domain to the opentodo service, deploy,
# open the domain and create the owner account.Compose
git clone https://github.com/pixari/opentodo.git
cd opentodo
docker compose up -d
# data lives in the opentodo-data volumeBinary
# download opentodo-<os>-<arch> from the release, then:
chmod +x opentodo-linux-amd64 && ./opentodo-linux-amd64
# serves on :8080, data in ./dataSync that converges
Edit anywhere, offline. Never pick a version again.
Every change is a small operation on one field, stamped with a clock. Devices queue them while offline and exchange them through your server when they reconnect. The same rule runs everywhere, so every device lands on the same state.
What happens in a conflict
- Your laptop and your phone both lose their connection.
- On the phone you complete "Book flights to Lisbon". On the laptop you rename the same task.
- Both reconnect. Each device sends its queued changes, one per field, to your server, and receives the other's.
- Both devices end up with the renamed, completed task. No "pick a version" dialog.
With JavaScript on, this section is an interactive playground.
Switch Wi-Fi off on a device, change something, then switch it back on.
Your data, in one place you control
One folder
Everything lives in one data volume around a single database file. Back it up, move it, restore it anywhere.
Data and volumesScheduled backups
To a folder, S3-compatible storage or WebDAV, with retention and optional encryption.
BackupsExport any time
Every person can download all their data as one JSON file and import it on any other server.
Import and exportRun it tonight.
Try the demo first if you like; your tasks can follow later with an import.