Maybe it’s just me, but this documentation doesn’t show or link to a full blown docker compose example as stated in the introduction: Full docker example
Do I miss something or?
This docker compose configuration will run Vikunja with a postgres database. It uses a proxy configuration to make it available under a domain.
Maybe I got confused.. and then add a link behind “This docker compose configuration” text.. to this “Example without any proxy” section? Since maybe its just me, but it was very confusing.
Also. I notice the following warning in the log, using the latest docker compose example:
time=2026-04-25T15:22:23.354Z level=INFO msg="No config file found, using default or config from environment variables."
time=2026-04-25T15:22:23.355Z level=WARN msg="config: both service.secret and service.jwtsecret are set. Using service.secret. Please remove service.jwtsecret, it is deprecated and will be removed in a future release."
Should I use VIKUNJA_SERVICE_JWTSECRET or not?
….
FWIW, here’s my compose file:
services:
vikunja:
image: vikunja/vikunja:latest
stdin_open: true
tty: true
user: "0:0"
dns: 192.168.0.4
environment:
VIKUNJA_SERVICE_PUBLICURL: http://192.168.0.3:3456
VIKUNJA_DATABASE_HOST: db
VIKUNJA_DATABASE_PASSWORD: changeme
VIKUNJA_DATABASE_TYPE: mysql
VIKUNJA_DATABASE_USER: vikunja
VIKUNJA_DATABASE_DATABASE: vikunja
VIKUNJA_SERVICE_JWTSECRET: <a super secure random secret>
VIKUNJA_SERVICE_ENABLETASKATTACHMENTS: true
VIKUNJA_SERVICE_ENABLEEMAILREMINDERS: true
VIKUNJA_MAILER_ENABLED: true
VIKUNJA_MAILER_AUTHTYPE: login
VIKUNJA_MAILER_FORCESSL: false
VIKUNJA_MAILER_SKIPTLSVERIFY: true
VIKUNJA_MAILER_HOST: 50.******
VIKUNJA_MAILER_PORT: 587
VIKUNJA_MAILER_USERNAME: ******
VIKUNJA_MAILER_PASSWORD: *****
VIKUNJA_MAILER_FROMEMAIL: ******
VIKUNJA_SERVICE_TIMEZONE: America/Chicago
ports:
- 3456:3456
volumes:
- /share/Container/vikunja/files:/app/vikunja/files
depends_on:
db:
condition: service_healthy
restart: unless-stopped
db:
image: mariadb:10
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: supersecret
MYSQL_USER: vikunja
MYSQL_PASSWORD: changeme
MYSQL_DATABASE: vikunja
volumes:
- /share/Container/vikunja/db:/var/lib/mysql
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h localhost -u $$MYSQL_USER --password=$$MYSQL_PASSWORD"]
interval: 2s
start_period: 30s
I just left all the passwords as were in the examples. My container is not exposed to the internet so I don’t really care what the passwords are or if anyone else knows them! I was able to get most of this from what is called out on Docker Hub. It worked right away. The only problem I have is the email host. I have to use my server’s IP address as the container is using an IP of 127.0.0.11 that I didn’t set for the DNS host and no one has been able to answer my question as to why.
I’m running my container on a QNAP NAS, FYI.