So I'm trying to setup traefik for the first time. I don't want to use docker for traefik (nope). It's on an archlinux host. The first service i'm trying to expose is planka. I have https setup with my own certs that i'm managing (Because I want to). Auto redirect to https works. Dashboard works. Discovery seems to work. It seems to be all setup. However, all I get are 404 errors. I know planka works. I can access it outside of traefik (Through direct ip-port). The server can curl it fine too (Again ip-port).
I'm at my wits end. Either traefik won't work at all... or I'm missing something simple.
Log and access log at the end.
e[90m2024-11-09T06:04:14+01:00e[0m e[32mINFe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/cmd/traefik/traefik.go:103e[0me[36m >e[0m Traefik version 3.2.0 built on I don't remember exactly e[36mversion=e[0m3.2.0
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/cmd/traefik/traefik.go:110e[0me[36m >e[0m Static configuration loaded [json] e[36mstaticConfiguration=e[0m{"accessLog":{"fields":{"defaultMode":"keep","headers":{"defaultMode":"drop"}},"filters":{},"format":"json"},"api":{"dashboard":true,"insecure":true},"entryPoints":{"traefik":{"address":":8080","forwardedHeaders":{},"http":{"maxHeaderBytes":1048576},"http2":{"maxConcurrentStreams":250},"transport":{"lifeCycle":{"graceTimeOut":"10s"},"respondingTimeouts":{"idleTimeout":"3m0s","readTimeout":"1m0s"}},"udp":{"timeout":"3s"}},"web":{"address":":80","forwardedHeaders":{},"http":{"maxHeaderBytes":1048576,"redirections":{"entryPoint":{"permanent":true,"priority":9223372036854775806,"scheme":"https","to":"websecure"}}},"http2":{"maxConcurrentStreams":250},"transport":{"lifeCycle":{"graceTimeOut":"10s"},"respondingTimeouts":{"idleTimeout":"3m0s","readTimeout":"1m0s"}},"udp":{"timeout":"3s"}},"websecure":{"address":":443","forwardedHeaders":{},"http":{"maxHeaderBytes":1048578},"http2":{"maxConcurrentStreams":250},"transport":{"lifeCycle":{"graceTimeOut":"10s"},"respondingTimeouts":{"idleTimeout":"3m0s","readTimeout":"1m0s"}},"udp":{"timeout":"3s"}}},"global":{"checkNewVersion":true},"log":{"format":"common","level":"DEBUG"},"providers":{"docker":{"defaultRule":"Host(`{{ normalize .Name }}`)","endpoint":"unix:///var/run/docker.sock","exposedByDefault":true,"watch":true},"file":{"filename":"/etc/traefik/conf.created/certificates.yml","watch":true},"providersThrottleDuration":"2s"},"serversTransport":{"maxIdleConnsPerHost":200},"tcpServersTransport":{"dialKeepAlive":"15s","dialTimeout":"30s"}}
e[90m2024-11-09T06:04:14+01:00e[0m e[32mINFe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/cmd/traefik/traefik.go:626e[0me[36m >e[0m
Stats collection is disabled.
Help us improve Traefik by turning this feature on :)
More details on: https://doc.traefik.io/traefik/contributing/data-collection/
e[90m2024-11-09T06:04:14+01:00e[0m e[32mINFe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/configurationwatcher.go:73e[0me[36m >e[0m Starting provider aggregator aggregator.ProviderAggregator
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/server_entrypoint_tcp.go:231e[0me[36m >e[0m Starting TCP Server e[36mentryPointName=e[0mwebsecure
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/server_entrypoint_tcp.go:231e[0me[36m >e[0m Starting TCP Server e[36mentryPointName=e[0mtraefik
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/server_entrypoint_tcp.go:231e[0me[36m >e[0m Starting TCP Server e[36mentryPointName=e[0mweb
e[90m2024-11-09T06:04:14+01:00e[0m e[32mINFe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/provider/aggregator/aggregator.go:202e[0me[36m >e[0m Starting provider *file.Provider
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/provider/aggregator/aggregator.go:203e[0me[36m >e[0m *file.Provider provider configuration e[36mconfig=e[0m{"filename":"/etc/traefik/conf.created/certificates.yml","watch":true}
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/provider/file/file.go:122e[0me[36m >e[0m add watcher on: /etc/traefik/conf.created
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/provider/file/file.go:122e[0me[36m >e[0m add watcher on: /etc/traefik/conf.created/certificates.yml
e[90m2024-11-09T06:04:14+01:00e[0m e[32mINFe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/provider/aggregator/aggregator.go:202e[0me[36m >e[0m Starting provider *traefik.Provider
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/provider/aggregator/aggregator.go:203e[0me[36m >e[0m *traefik.Provider provider configuration e[36mconfig=e[0m{}
e[90m2024-11-09T06:04:14+01:00e[0m e[32mINFe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/provider/aggregator/aggregator.go:202e[0me[36m >e[0m Starting provider *docker.Provider
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/provider/aggregator/aggregator.go:203e[0me[36m >e[0m *docker.Provider provider configuration e[36mconfig=e[0m{"defaultRule":"Host(`{{ normalize .Name }}`)","endpoint":"unix:///var/run/docker.sock","exposedByDefault":true,"watch":true}
e[90m2024-11-09T06:04:14+01:00e[0m e[32mINFe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/provider/aggregator/aggregator.go:202e[0me[36m >e[0m Starting provider *acme.ChallengeTLSALPN
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/provider/aggregator/aggregator.go:203e[0me[36m >e[0m *acme.ChallengeTLSALPN provider configuration e[36mconfig=e[0m{}
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/configurationwatcher.go:227e[0me[36m >e[0m Configuration received e[36mconfig=e[0m{"http":{},"tcp":{},"tls":{"stores":{"default":{}}},"udp":{}} e[36mproviderName=e[0mfile
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/configurationwatcher.go:227e[0me[36m >e[0m Configuration received e[36mconfig=e[0m{"http":{"middlewares":{"dashboard_redirect":{"redirectRegex":{"permanent":true,"regex":"^(http:\\/\\/(\\[[\\w:.]+\\]|[\\w\\._-]+)(:\\d+)?)\\/$","replacement":"${1}/dashboard/"}},"dashboard_stripprefix":{"stripPrefix":{"prefixes":["/dashboard/","/dashboard"]}},"redirect-web-to-websecure":{"redirectScheme":{"permanent":true,"port":"443","scheme":"https"}}},"routers":{"api":{"entryPoints":["traefik"],"priority":9223372036854775806,"rule":"PathPrefix(`/api`)","ruleSyntax":"v3","service":"api@internal"},"dashboard":{"entryPoints":["traefik"],"middlewares":["dashboard_redirect@internal","dashboard_stripprefix@internal"],"priority":9223372036854775805,"rule":"PathPrefix(`/`)","ruleSyntax":"v3","service":"dashboard@internal"},"web-to-websecure":{"entryPoints":["web"],"middlewares":["redirect-web-to-websecure"],"priority":9223372036854775806,"rule":"HostRegexp(`^.+$`)","ruleSyntax":"v3","service":"noop@internal"}},"serversTransports":{"default":{"maxIdleConnsPerHost":200}},"services":{"api":{},"dashboard":{},"noop":{}}},"tcp":{"serversTransports":{"default":{"dialKeepAlive":"15s","dialTimeout":"30s"}}},"tls":{},"udp":{}} e[36mproviderName=e[0minternal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/tls/tlsmanager.go:97e[0me[36m >e[0m No store is defined to add the certificate MIID, it will be added to the default store
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/tls/certificate.go:131e[0me[36m >e[0m Adding certificate for domain(s) *.example.com,example.com
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/stripprefix/strip_prefix.go:32e[0me[36m >e[0m Creating middleware e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mdashboard_stripprefix@internal e[36mmiddlewareType=e[0mStripPrefix e[36mrouterName=e[0mdashboard@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/observability/middleware.go:33e[0me[36m >e[0m Adding tracing to middleware e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mdashboard_stripprefix@internal e[36mrouterName=e[0mdashboard@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/redirect/redirect_regex.go:17e[0me[36m >e[0m Creating middleware e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mdashboard_redirect@internal e[36mmiddlewareType=e[0mRedirectRegex e[36mrouterName=e[0mdashboard@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/redirect/redirect_regex.go:18e[0me[36m >e[0m Setting up redirection from ^(http:\/\/(\[[\w:.]+\]|[\w\._-]+)(:\d+)?)\/$ to ${1}/dashboard/ e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mdashboard_redirect@internal e[36mmiddlewareType=e[0mRedirectRegex e[36mrouterName=e[0mdashboard@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/observability/middleware.go:33e[0me[36m >e[0m Adding tracing to middleware e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mdashboard_redirect@internal e[36mrouterName=e[0mdashboard@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/recovery/recovery.go:25e[0me[36m >e[0m Creating middleware e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mtraefik-internal-recovery e[36mmiddlewareType=e[0mRecovery
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/redirect/redirect_scheme.go:29e[0me[36m >e[0m Creating middleware e[36mentryPointName=e[0mweb e[36mmiddlewareName=e[0mredirect-web-to-websecure@internal e[36mmiddlewareType=e[0mRedirectScheme e[36mrouterName=e[0mweb-to-websecure@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/redirect/redirect_scheme.go:30e[0me[36m >e[0m Setting up redirection to https 443 e[36mentryPointName=e[0mweb e[36mmiddlewareName=e[0mredirect-web-to-websecure@internal e[36mmiddlewareType=e[0mRedirectScheme e[36mrouterName=e[0mweb-to-websecure@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/recovery/recovery.go:25e[0me[36m >e[0m Creating middleware e[36mentryPointName=e[0mweb e[36mmiddlewareName=e[0mtraefik-internal-recovery e[36mmiddlewareType=e[0mRecovery
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/provider/docker/pdocker.go:90e[0me[36m >e[0m Provider connection established with docker 27.3.1 (API 1.47) e[36mproviderName=e[0mdocker
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/configurationwatcher.go:227e[0me[36m >e[0m Configuration received e[36mconfig=e[0m{"http":{"routers":{"planka":{"entryPoints":["websecure"],"rule":"Host(`projects.example.com`)","service":"planka"},"postgres-planka":{"rule":"Host(`postgres-planka`)","service":"postgres-planka"}},"services":{"planka":{"loadBalancer":{"passHostHeader":true,"responseForwarding":{"flushInterval":"100ms"},"servers":[{"url":"http://172.18.0.3:1337"}]}},"postgres-planka":{"loadBalancer":{"passHostHeader":true,"responseForwarding":{"flushInterval":"100ms"},"servers":[{"url":"http://172.18.0.2:5432"}]}}}},"tcp":{},"tls":{},"udp":{}} e[36mproviderName=e[0mdocker
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/aggregator.go:51e[0me[36m >e[0m No entryPoint defined for this router, using the default one(s) instead e[36mentryPointName=e[0m["web","websecure"] e[36mrouterName=e[0mpostgres-planka
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/tls/tlsmanager.go:97e[0me[36m >e[0m No store is defined to add the certificate MIID, it will be added to the default store
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/tls/certificate.go:131e[0me[36m >e[0m Adding certificate for domain(s) *.example.com,example.com
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/service/service.go:299e[0me[36m >e[0m Creating load-balancer e[36mentryPointName=e[0mwebsecure e[36mrouterName=e[0mplanka@docker e[36mserviceName=e[0mplanka@docker
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/service/service.go:336e[0me[36m >e[0m Creating server e[36mentryPointName=e[0mwebsecure e[36mrouterName=e[0mplanka@docker e[36mserverName=e[0m71b197a0bb51c1d1 e[36mserviceName=e[0mplanka@docker e[36mtarget=e[0mhttp://172.18.0.3:1337
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/service/service.go:299e[0me[36m >e[0m Creating load-balancer e[36mentryPointName=e[0mwebsecure e[36mrouterName=e[0mpostgres-planka@docker e[36mserviceName=e[0mpostgres-planka@docker
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/server/service/service.go:336e[0me[36m >e[0m Creating server e[36mentryPointName=e[0mwebsecure e[36mrouterName=e[0mpostgres-planka@docker e[36mserverName=e[0m1c7aecb7841413d2 e[36mserviceName=e[0mpostgres-planka@docker e[36mtarget=e[0mhttp://172.18.0.2:5432
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/recovery/recovery.go:25e[0me[36m >e[0m Creating middleware e[36mentryPointName=e[0mwebsecure e[36mmiddlewareName=e[0mtraefik-internal-recovery e[36mmiddlewareType=e[0mRecovery
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/redirect/redirect_scheme.go:29e[0me[36m >e[0m Creating middleware e[36mentryPointName=e[0mweb e[36mmiddlewareName=e[0mredirect-web-to-websecure@internal e[36mmiddlewareType=e[0mRedirectScheme e[36mrouterName=e[0mweb-to-websecure@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/redirect/redirect_scheme.go:30e[0me[36m >e[0m Setting up redirection to https 443 e[36mentryPointName=e[0mweb e[36mmiddlewareName=e[0mredirect-web-to-websecure@internal e[36mmiddlewareType=e[0mRedirectScheme e[36mrouterName=e[0mweb-to-websecure@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/recovery/recovery.go:25e[0me[36m >e[0m Creating middleware e[36mentryPointName=e[0mweb e[36mmiddlewareName=e[0mtraefik-internal-recovery e[36mmiddlewareType=e[0mRecovery
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/stripprefix/strip_prefix.go:32e[0me[36m >e[0m Creating middleware e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mdashboard_stripprefix@internal e[36mmiddlewareType=e[0mStripPrefix e[36mrouterName=e[0mdashboard@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/observability/middleware.go:33e[0me[36m >e[0m Adding tracing to middleware e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mdashboard_stripprefix@internal e[36mrouterName=e[0mdashboard@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/redirect/redirect_regex.go:17e[0me[36m >e[0m Creating middleware e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mdashboard_redirect@internal e[36mmiddlewareType=e[0mRedirectRegex e[36mrouterName=e[0mdashboard@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/redirect/redirect_regex.go:18e[0me[36m >e[0m Setting up redirection from ^(http:\/\/(\[[\w:.]+\]|[\w\._-]+)(:\d+)?)\/$ to ${1}/dashboard/ e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mdashboard_redirect@internal e[36mmiddlewareType=e[0mRedirectRegex e[36mrouterName=e[0mdashboard@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/observability/middleware.go:33e[0me[36m >e[0m Adding tracing to middleware e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mdashboard_redirect@internal e[36mrouterName=e[0mdashboard@internal
e[90m2024-11-09T06:04:14+01:00e[0m e[33mDBGe[0m e[1m../../../../build/traefik/src/traefik-3.2.0/pkg/middlewares/recovery/recovery.go:25e[0me[36m >e[0m Creating middleware e[36mentryPointName=e[0mtraefik e[36mmiddlewareName=e[0mtraefik-internal-recovery e[36mmiddlewareType=e[0mRecovery
{"ClientAddr":"84.239.7.19:38744","ClientHost":"84.239.7.19","ClientPort":"38744","ClientUsername":"-","DownstreamContentSize":19,"DownstreamStatus":404,"Duration":25178,"GzipRatio":0,"OriginContentSize":0,"OriginDuration":0,"OriginStatus":0,"Overhead":25178,"RequestAddr":"projects.example.com","RequestContentSize":0,"RequestCount":1,"RequestHost":"projects.example.com","RequestMethod":"GET","RequestPath":"/","RequestPort":"-","RequestProtocol":"HTTP/2.0","RequestScheme":"https","RetryAttempts":0,"StartLocal":"2024-11-09T06:04:36.036946073+01:00","StartUTC":"2024-11-09T05:04:36.036946073Z","TLSCipher":"TLS_AES_128_GCM_SHA256","TLSVersion":"1.3","entryPointName":"websecure","level":"info","msg":"","time":"2024-11-09T06:04:36+01:00"}
traefik config:
global:
checkNewVersion: true
sendAnonymousUsage: false
entryPoints:
web:
address: :80
http:
redirections:
entryPoint:
to: websecure
scheme: https
websecure:
address: :443
log:
level: DEBUG
api:
insecure: true
dashboard: true
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
# defaultRule: Host(`{{ normalize .Name }}.docker.localhost`)
exposedByDefault: true
file:
#directory: /etc/traefik/conf.active
filename: /etc/traefik/conf.created/certificates.yml
watch: true
accessLog:
format: json
planka docker yml:
version: "3"
services:
planka:
image: ghcr.io/plankanban/planka:latest
restart: on-failure
volumes:
- user-avatars:/app/public/user-avatars
- project-background-images:/app/public/project-background-images
- attachments:/app/private/attachments
ports:
- 3173:1337
labels:
- traefik.enable=true
- traefik.http.routers.planka.rule=Host(`projects.example.com`)
- traefik.http.routers.planka.entrypoints=websecure
- traefik.http.services.planka.loadbalancer.server.port=1337
environment:
- BASE_URL=http://projects.example.com
- DATABASE_URL=postgresql://postgres@postgres/planka
- SECRET_KEY=6fe
# - TRUST_PROXY=0
# - TOKEN_EXPIRES_IN=365 # In days
# related: https://github.com/knex/knex/issues/2354
# As knex does not pass query parameters from the connection string we
# have to use environment variables in order to pass the desired values, e.g.
# - PGSSLMODE=<value>
# Configure knex to accept SSL certificates
# - KNEX_REJECT_UNAUTHORIZED_SSL_CERTIFICATE=false
- DEFAULT_ADMIN_EMAIL=***** # Do not remove if you want to prevent this user from being edited/deleted
- DEFAULT_ADMIN_PASSWORD=******
- DEFAULT_ADMIN_NAME=Luanta Yarcsi
- DEFAULT_ADMIN_USERNAME=***
# - SHOW_DETAILED_AUTH_ERRORS=false # Set to true to show more detailed authentication error messages. It should not be enabled without a rate limiter for security reasons.
# - ALLOW_ALL_TO_CREATE_PROJECTS=true
# - OIDC_ISSUER=
# - OIDC_CLIENT_ID=
# - OIDC_CLIENT_SECRET=
# - OIDC_ID_TOKEN_SIGNED_RESPONSE_ALG=
# - OIDC_USERINFO_SIGNED_RESPONSE_ALG=
# - OIDC_SCOPES=openid email profile
# - OIDC_RESPONSE_MODE=fragment
# - OIDC_USE_DEFAULT_RESPONSE_MODE=true
# - OIDC_ADMIN_ROLES=admin
# - OIDC_CLAIMS_SOURCE=userinfo
# - OIDC_EMAIL_ATTRIBUTE=email
# - OIDC_NAME_ATTRIBUTE=name
# - OIDC_USERNAME_ATTRIBUTE=preferred_username
# - OIDC_ROLES_ATTRIBUTE=groups
# - OIDC_IGNORE_USERNAME=true
# - OIDC_IGNORE_ROLES=true
# - OIDC_ENFORCED=true
# Email Notifications (https://nodemailer.com/smtp/)
# - SMTP_HOST=
# - SMTP_PORT=587
# - SMTP_NAME=
# - SMTP_SECURE=true
# - SMTP_USER=
# - SMTP_PASSWORD=
# - SMTP_FROM="Demo Demo" <demo@demo.demo>
# - SMTP_TLS_REJECT_UNAUTHORIZED=false
# Optional fields: accessToken, events, excludedEvents
# - |
# WEBHOOKS=[{
# "url": "http://localhost:3001",
# "accessToken": "notaccesstoken",
# "events": ["cardCreate", "cardUpdate", "cardDelete"],
# "excludedEvents": ["notificationCreate", "notificationUpdate"]
# }]
# - SLACK_BOT_TOKEN=
# - SLACK_CHANNEL_ID=
# - GOOGLE_CHAT_WEBHOOK_URL=
# - TELEGRAM_BOT_TOKEN=
# - TELEGRAM_CHAT_ID=
# - TELEGRAM_THREAD_ID=
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:16-alpine
restart: on-failure
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=planka
- POSTGRES_HOST_AUTH_METHOD=trust
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d planka"]
interval: 10s
timeout: 5s
retries: 5
volumes:
user-avatars:
project-background-images:
attachments:
db-data:
Any ideas? All i get is;
404 page not found