Vikunja is a to-do and project app with lists, boards, and Gantt charts.
This stack runs Vikunja with a Tailscale sidecar, as described in the standard setup.
| Item | Value |
|---|---|
| Web interface | https://vikunja.<tailnet>.ts.net |
| Service port | 3456 |
| Image | vikunja/vikunja |
| Data | ./vikunja-data/files (attachments) |
./vikunja-data/db (SQLite database) |
Set these values in .env:
VIKUNJA_SERVICE_PUBLICURL. The address of the web interface with a slash at the end,https://vikunja.<tailnet>.ts.net/.VIKUNJA_SERVICE_SECRET. A long random value that signs the login tokens. Generate one withopenssl rand -hex 32. Compose stops with an error if it is empty.
- Runs as
root. Theapplicationcontainer runs as user and group0through theusersetting, so that Vikunja can write to the data folders that Docker creates. - Database.
VIKUNJA_DATABASE_PATHin.envputs the SQLite database in the mounted./vikunja-data/dbfolder.
Open the web interface and register the first account.
This directory contains config.yml, a sample configuration file with all settings as comments. To use it, edit the file and uncomment the line that mounts it in the volumes block of compose.yaml.
Earlier versions of this stack did not set VIKUNJA_SERVICE_SECRET, so Vikunja generated a new secret at every start, which ended every login. The stack now requires the secret in .env, and Compose stops with an error until you set it. Add a value with openssl rand -hex 32. Existing logins end one last time when you start the stack with the secret. After that, a login stays valid across restarts.