Running OpenTodo on Easypanel
OpenTodo is one container with one volume and no required settings. On Easypanel it is one App service; Easypanel puts its domain behind https for you.
On this page
An OpenTodo template has been prepared for Easypanel's template list but is not listed yet. Until it is, set the service up by hand as below; the result is the same.
Install as an app service#
In a project, click + Service → App and name it
opentodo.Source: choose Docker Image and enter
ghcr.io/pixari/opentodo:0.9.0.Environment: add
OPENTODO_BASE_URL=https://$(PRIMARY_DOMAIN) OPENTODO_SETUP_TOKEN=<a random string of 32 letters and digits> OPENTODO_ALLOW_SIGNUP=false OPENTODO_TRUSTED_PROXIES=$(PRIMARY_DOMAIN)is the service's main domain. Generate the token with a password manager oropenssl rand -hex 16.Domains: the service's domain must point to port 8080 (the default domain Easypanel gives the service is fine).
Mounts: add a Volume named
datawith the mount path/data.Deploy, then open the domain. The first visitor creates the owner account and is asked for the setup token (it is in the service's Environment). After that, the owner invites people (sign-up is closed).
Install from the template list#
Once OpenTodo is listed: in a project, choose + Service → Templates, search for OpenTodo and click Create. The template sets up everything above and generates the setup token; the template's instructions say where to find it.
The settings#
| Variable | Template value | What it does |
|---|---|---|
OPENTODO_BASE_URL |
https://$(PRIMARY_DOMAIN) |
The https address people open. Passkeys, secure cookies and links in emails use it. If you add a domain of your own and make it primary, check this matches the address people open, then redeploy. |
OPENTODO_SETUP_TOKEN |
generated | Asked once, when the owner account is created, so a fresh server on the internet cannot be claimed by a stranger. |
OPENTODO_ALLOW_SIGNUP |
false |
true lets anyone who can reach the server create an account. |
OPENTODO_TRUSTED_PROXIES |
empty | The reverse proxies whose X-Forwarded-For is trusted, or cloudflare when the domain is behind Cloudflare's proxy. |
Every other OPENTODO_* variable from the configuration table can be added in Environment. Installing the app, offline use, push notifications, passkeys and end-to-end encryption need https; Easypanel's domains have it. If you open OpenTodo by plain http instead (the server's address and a published port), empty OPENTODO_BASE_URL, because an https base URL over plain http breaks signing in. More on proxies in Running with Docker.
Updates and backups#
The service names one release (0.9.0), never a moving tag, so it changes only when you change it: set the image to the new release under Source and Deploy. Migrations run on start and there are no down-migrations, so back up first.
Everything OpenTodo stores is in the data volume. Turn on scheduled backups in Settings → Server (written to backups/ in the same volume, or to S3 or WebDAV) to get copies off the server. See Backups.