Hi!
I’ve been trying to make Vikunja work with Trafik (3.3.3). I am getting a “Server not found” aka 404….
I’m not an expert by any stretch of the imagination, and what I want to achieve is very simple, use FQDN from my LAN to access the container (instead of ….hostname:3456). On 3 separate VPS running docker and traefik other containers are all working perfectly (lidarr, radarr, paperless-ngx, etvc etc etc…).
I pretty much reused my working configs as a starting point, and double checked that all the parameters are OK (hostnames, etc).
Then, I cross checked with the setup instructions available on Vikunja’s website ( Full docker example ), to no avail.
Some details about my setup:
Traefik Docker compose (deployed in Portainer):
services:
traefik:
image:docker.io / library/traefik:v3.3.3
container_name: traefik
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/run/docker.sock:ro
- /home/traefik/config/:/etc/traefik/:ro
- /home/traefik/certs/:/var/traefik/certs/:rw
environment:
- PUID=1002
- PGID=1002
networks:
- frontend
restart: unless-stopped
networks:
frontend:
external: true
traefik.yaml
global:
checkNewVersion: false
sendAnonymousUsage: false
log:
level: DEBUG
api:
dashboard: false
insecure: false
entryPoints:
web:
address: :80
websecure:
address: :443
providers:
docker:
endpoint: “unix:///var/run/docker.sock”
exposedByDefault: false
vikunja Docker compose (deployed in Portainer):
services:
vikunja:
image: vikunja/vikunja
environment:
VIKUNJA_DATABASE_HOST: **************
VIKUNJA_DATABASE_PASSWORD: **************
VIKUNJA_DATABASE_TYPE: mysql
VIKUNJA_DATABASE_USER: **************
VIKUNJA_DATABASE_DATABASE: **************
VIKUNJA_SERVICE_PUBLICURL: http://vikunja.mydomain
VIKUNJA_SERVICE_ENABLETASKATTACHMENTS: 1
VIKUNJA_SERVICE_ENABLEREGISTRATION: 1
VIKUNJA_SERVICE_ENABLEEMAILREMINDERS: 1
VIKUNJA_MAILER_ENABLED: 1
VIKUNJA_MAILER_FORCESSL: 1
VIKUNJA_MAILER_HOST: support.mydomain
VIKUNJA_MAILER_PORT: 8025
VIKUNJA_MAILER_USERNAME: **************
VIKUNJA_MAILER_PASSWORD: **************
PUID: 1003
PGID: 1003
volumes:
- /home/vikunja:/app/vikunja/files
restart: unless-stopped
networks:
- frontend
labels:
- “traefik.enable=true”
- “traefik.docker.network=frontend”
- “traefik.http.routers.vikunja.rule=Host(vikunja.mydomain)”
- “traefik.http.routers.vikunja-http.entrypoints=web”
networks:
frontend:
external: true
Not sure whats going on. Traefik’s logs dont seem to show anything to me indicating issues…
2025-12-08T19:23:29Z INF github.com/traefik/traefik/v3/cmd/traefik/traefik.go:107 > Traefik version 3.3.3 built on 2025-01-31T14:55:01Z version=3.3.3
api={“basePath”:“/”} entryPoints={“web”:{“address”:“:80”,“forwardedHeaders”:{},“http”:{“maxHeaderBytes”:1048576},“http2”:{“maxConcurrentStreams”:250},“transport”:{“lifeCycle”:{“graceTimeOut”:“10s”},“respondingTimeouts”:{“idleTimeout”:“3m0s”,“readTimeout”:“1m0s”}},“udp”:{“timeout”:“3s”}},“websecure”:{“address”:“:443”,“forwardedHeaders”:{},“http”:{“maxHeaderBytes”:1048576},“http2”:{“maxConcurrentStreams”:250},“transport”:{“lifeCycle”:{“graceTimeOut”:“10s”},“respondingTimeouts”:{“idleTimeout”:“3m0s”,“readTimeout”:“1m0s”}},“udp”:{“timeout”:“3s”}}} global={} log={“format”:“common”,“level”:“DEBUG”} providers={“docker”:{“defaultRule”:“Host({{ normalize .Name }})”,“endpoint”:“unix:///var/run/docker.sock”,“watch”:true},“providersThrottleDuration”:“2s”} serversTransport={“maxIdleConnsPerHost”:200} tcpServersTransport={“dialKeepAlive”:“15s”,“dialTimeout”:“30s”}
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/cmd/traefik/traefik.go:114 > Static configuration loaded [json] staticConfiguration=
2025-12-08T19:23:29Z INF github.com/traefik/traefik/v3/cmd/traefik/traefik.go:633 >
Stats collection is disabled.
Help us improve Traefik by turning this feature on
More details on: https://doc.traefik.io/traefik/contributing/data-collection/
2025-12-08T19:23:29Z INF github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:73 > Starting provider aggregator *aggregator.ProviderAggregator
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:231 > Starting TCP Server entryPointName=web
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/pkg/server/server_entrypoint_tcp.go:231 > Starting TCP Server entryPointName=websecure
2025-12-08T19:23:29Z INF github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:202 > Starting provider *traefik.Provider
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:203 > *traefik.Provider provider configuration config=
http={“serversTransports”:{“default”:{“maxIdleConnsPerHost”:200}},“services”:{“api”:{},“noop”:{}}} tcp={“serversTransports”:{“default”:{“dialKeepAlive”:“15s”,“dialTimeout”:“30s”}}} tls={} udp={}
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:227 > Configuration received config=providerName=internal
2025-12-08T19:23:29Z INF github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:202 > Starting provider *docker.Provider
defaultRule=Host({{ normalize .Name }}) endpoint=unix:///var/run/docker.sock watch=true
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:203 > *docker.Provider provider configuration config=
2025-12-08T19:23:29Z INF github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:202 > Starting provider *acme.ChallengeTLSALPN
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/pkg/provider/aggregator/aggregator.go:203 > *acme.ChallengeTLSALPN provider configuration config=
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/pkg/provider/docker/pdocker.go:90 > Provider connection established with docker 26.1.3 (API 1.45) providerName=docker
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/pkg/provider/docker/config.go:185 > Filtering disabled container container=traefik-traefik-f29e8292c844eb971615775af1f11497ac6e11d4b5339f31166e3c5e70000320 providerName=docker
http={“routers”:{“vikunja”:{“rule”:“Host(vikunja.mydomain)”,“service”:“vikunja-vikunja”},“vikunja-http”:{“entryPoints”:[“web”],“rule”:“Host(vikunja-vikunja)”,“service”:“vikunja-vikunja”}},“services”:{“vikunja-vikunja”:{“loadBalancer”:{“passHostHeader”:true,“responseForwarding”:{“flushInterval”:“100ms”},“servers”:[{“url”:“http://172.30.0.3:3456”}]}}}} tcp={} tls={} udp={}
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:227 > Configuration received config=providerName=docker
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/pkg/tls/tlsmanager.go:321 > No default certificate, fallback to the internal generated certificate tlsStoreName=default
2025-12-08T19:23:29Z DBG github.com/traefik/traefik/v3/pkg/server/aggregator.go:52 > No entryPoint defined for this router, using the default one(s) instead entryPointName=[“web”,“websecure”] routerName=vikunja
2025-12-08T19:23:30Z DBG github.com/traefik/traefik/v3/pkg/tls/tlsmanager.go:321 > No default certificate, fallback to the internal generated certificate tlsStoreName=default
2025-12-08T19:23:30Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:313 > Creating load-balancer entryPointName=websecure routerName=vikunja@docker serviceName=vikunja-vikunja@docker
2025-12-08T19:23:30Z DBG github.com/traefik/traefik/v3/pkg/server/service/service.go:350 > Creating server entryPointName=websecure routerName=vikunja@docker serverName=daec55fcb905d2a1 serviceName=vikunja-vikunja@docker target=http://172.30.0.3:3456
2025-12-08T19:23:30Z DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:25 > Creating middleware entryPointName=websecure middlewareName=traefik-internal-recovery middlewareType=Recovery
2025-12-08T19:23:30Z DBG github.com/traefik/traefik/v3/pkg/middlewares/recovery/recovery.go:25 > Creating middleware entryPointName=web middlewareName=traefik-internal-recovery middlewareType=Recovery
Vikunja’s container logs: (some permission denied but I see the same error when I start the container outside of Traefik)…
2025/12/08 19:13:22 failed to create modcache index dir: mkdir /.cache: permission denied
time=2025-12-08T19:13:22.610Z level=INFO msg="No config file found, using default or config from environment variables."
time=2025-12-08T19:13:22.611Z level=INFO msg="Running migrations…"
time=2025-12-08T19:13:22.695Z level=INFO msg="Ran all migrations successfully."
time=2025-12-08T19:13:22.698Z level=INFO msg="Vikunja version v1.0.0-rc3"
⇨ http server started on [::]:3456
Any pointer would be appreciated.
