Self-hosted todo system with FastAPI, SQLite, offline PWA, and native clients.
1.6K
Official Docker image: docker.io/weedpump/nia-todo
nia-todo is a self-hosted todo system with SQLite, FastAPI, a polished Web UI, offline-capable PWA support, and bundled native client downloads for Windows, Android, and Debian desktop.
This repository is the official Docker Hub mirror for nia-todo. Other Docker Hub images may be community-maintained forks and are not published or supported by the project maintainer.
Run nia-todo with Docker Compose:
services:
nia-todo:
image: docker.io/weedpump/nia-todo:latest
ports:
- "8753:8753"
environment:
NIA_TODO_HOST: auto
NIA_TODO_PORT: 8753
NIA_TODO_DATA_DIR: /data
NIA_TODO_DB: nia-todo.db
read_only: true
tmpfs:
- /tmp
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
volumes:
- nia-todo-data:/data
volumes:
nia-todo-data:
Start it:
docker compose up -d
Read the one-time setup token, then open the setup page:
docker compose logs nia-todo
http://YOUR-SERVER:8753/setup
The token is deleted after the first user is created. Create the initial admin account, then use the app at:
http://YOUR-SERVER:8753/
docker run -d \
--name nia-todo \
--restart unless-stopped \
-p 8753:8753 \
-e NIA_TODO_HOST=auto \
-e NIA_TODO_PORT=8753 \
-e NIA_TODO_DATA_DIR=/data \
-e NIA_TODO_DB=nia-todo.db \
--read-only \
--tmpfs /tmp \
--cap-drop ALL \
--security-opt no-new-privileges:true \
-v nia-todo-data:/data \
docker.io/weedpump/nia-todo:latest
latest — latest published stable releaseX.Y.Z — pinned release version, recommended for productionExample:
image: docker.io/weedpump/nia-todo:3.0.1
For production deployments, pin a version instead of relying on latest.
The container stores runtime data in:
/data
Keep this volume persistent. It contains the SQLite database, generated keys, avatars, backups, todo attachments, and local runtime data.
Docker installations are updated by pulling the new image and recreating the container or Compose stack:
docker compose pull
docker compose up -d
Before major upgrades, create a backup of the persistent data volume.
For production use, put nia-todo behind HTTPS and configure the public base URL in the admin panel. Passkeys and native app integrations rely on the public URL being correct.
Useful paths after setup:
/setup Initial setup
/admin Admin panel
/downloads Bundled native app downloads
Official images are published to:
docker.io/weedpump/nia-todo
ghcr.io/weedpump/nia-todo
Both registries are official release targets for the same project.
nia-todo is free software licensed under the GNU Affero General Public License v3.0 or later.
Copyright (C) 2026 Tobias Kneidl
Content type
Image
Digest
sha256:e7d63b081…
Size
154.6 MB
Last updated
3 days ago
docker pull weedpump/nia-todo