Issue with Traefik, other containers are working but not Vikunja

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.

Could this be your issue? Error response from daemon: client version 1.24 is too old · Issue #12253 · traefik/traefik · GitHub

Does it work with a newer version of Traefik?

Hello! I installed the latest version 3.6.4 and I am seeing the same issue…

As I said in my original post, traefik 3.3.3 is installed on many other linux VPS and AFAK all running well. This gotta be some setting I overlooked but I cant find. Will report back if I see something.

Now I feel really stupid…

Note to myself: when using “something.subnet.domain” one must add the DNS resolution rule to its pfsense firewall…

Something like this in the DNS Resolver config (custom options) (a random example from the web)

Case closed. All well now :wink: