nia-todo documentation
Install with Docker
Run nia-todo as one container with a persistent volume using Docker Compose or docker run.Docker is the recommended installation method for most self-hosters. The published image contains the FastAPI server, web app and matching native-client downloads.
Docker Compose
Create compose.yml:
services:
nia-todo:
image: docker.io/weedpump/nia-todo:latest
container_name: nia-todo
restart: unless-stopped
ports:
- "8753:8753"
environment:
NIA_TODO_HOST: auto
NIA_TODO_PORT: 8753
NIA_TODO_DATA_DIR: /data
NIA_TODO_DB: nia-todo.db
volumes:
- nia-todo-data:/data
volumes:
nia-todo-data:
Start the stack:
docker compose up -d
docker compose logs -f nia-todo
Then open http://YOUR-SERVER:8753/setup.
Docker run
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 \
-v nia-todo-data:/data \
docker.io/weedpump/nia-todo:latest
The same image is mirrored at ghcr.io/weedpump/nia-todo:latest.
Persistent data
Everything that must survive a container replacement lives below /data:
- SQLite database
- generated application and VAPID keys
- avatars and todo attachments
- backups and other local runtime files
Use a named volume as shown above or bind-mount a host directory:
volumes:
- /srv/nia-todo:/data
Ensure that UID 10001 inside the container can write to a bind-mounted directory.
Environment variables
| Variable | Default | Purpose |
|---|---|---|
NIA_TODO_HOST |
auto |
Bind IPv4 and IPv6 where available |
NIA_TODO_PORT |
8753 |
HTTP port inside the container |
NIA_TODO_DATA_DIR |
/data |
Persistent runtime directory |
NIA_TODO_DB |
nia-todo.db |
Database filename or path |
NIA_TODO_VAPID_SUBJECT |
derived | Optional VAPID contact, usually a mailto: URI |
Most application settings are stored through /admin, not as environment variables.
Health and logs
docker compose ps
docker compose logs --tail=200 nia-todo
curl --fail http://127.0.0.1:8753/api/instance
Continue with HTTPS and reverse proxy configuration.