1. The problem I’m having:
I have deployed the a billing software called Kimai following directions from
and now I have a 502 Error message on the webpage I am expecting to see the initial login page to set up the software.
2. Error messages and/or full log output:
The remote server returned an error: (502) Bad Gateway. (https://billing.dataallday.com/)
3. Caddy version:
v2.11.2 h1:iOlpsSiSKqEW+SIXrcZsZ/NO74SzB/ycqqvAIEfIm64=
4. How I installed and ran Caddy:
Copied a repo and updated to latest with docker compose pull. I run it through a docker compose yml file.
git clone https://github.com/kimai/kimai-docker-caddy.git
a. System environment:
Digital Ocean, Ubuntu 22.04.5 LTS, systemd 249 (249.11-0ubuntu3.19),
Client: Docker Engine - Community
Version: 29.3.1
API version: 1.54
Go version: go1.25.8
Git commit: c2be9cc
Built: Wed Mar 25 16:13:32 2026
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 29.3.1
API version: 1.54 (minimum version 1.40)
Go version: go1.25.8
Git commit: f78c987
Built: Wed Mar 25 16:13:32 2026
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v2.2.2
GitCommit: 301b2dac98f15c27117da5c8af12118a041a31d9
runc:
Version: 1.3.4
GitCommit: v1.3.4-0-gd6d73eb8
docker-init:
Version: 0.19.0
GitCommit: de40ad0
b. Command:
c. Service/unit/compose file:
services:
caddy:
image: caddy:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- caddy_data:/data
- ${DATA_FOLDER}/caddy_config:/config
- ${DATA_FOLDER}/caddy_config/Caddyfile:/etc/caddy/Caddyfile
sqldb:
image: mysql:8.3
volumes:
- mysql_data:/var/lib/mysql
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
command: --default-storage-engine innodb
restart: unless-stopped
healthcheck:
test: mysqladmin -p${MYSQL_ROOT_PASSWORD} ping -h localhost
interval: 10s
timeout: 5s
retries: 12
start_period: 30s
kimai:
image: kimai/kimai2:apache
depends_on:
sqldb:
condition: service_healthy
restart: true
volumes:
- kimai_data:/opt/kimai/var/data
- ${DATA_FOLDER}/kimai_plugins:/opt/kimai/var/plugins
- ${DATA_FOLDER}/kimai_config/local.yaml:/opt/kimai/config/packages/local.yaml
ports:
- 8001:8001
environment:
- ADMINMAIL=${KIMAI_USER}
- ADMINPASS=${KIMAI_PASSWORD}
- "DATABASE_URL=mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@sqldb/${MYSQL_DATABASE}?charset=utf8mb4&serverVersion=8.3.0"
- TRUSTED_HOSTS=localhost|127.0.0.1|${SUBDOMAIN}.${DOMAIN_NAME}
- TZ=${TIMEZONE}
restart: unless-stopped
volumes:
caddy_data:
external: true
kimai_data:
external: true
kimai_plugins:
external: true
mysql_data:
external: true
d. My complete Caddy config:
{
debug
}
billing.dataallday.com {
reverse_proxy kimai:8001 {
flush_interval -1
}
}