services: app: image: fireflyiii/core:version-6 restart: unless-stopped environment: APP_URL: ${APP_URL} APP_KEY: ${APP_KEY} STATIC_CRON_TOKEN: ${STATIC_CRON_TOKEN} # TLS ends at the machine's proxy, which says so in X-Forwarded-Proto. TRUSTED_PROXIES: "**" DB_CONNECTION: pgsql DB_HOST: db DB_PORT: "5432" DB_DATABASE: firefly DB_USERNAME: firefly DB_PASSWORD: ${DB_PASSWORD} TZ: ${TZ:-UTC} depends_on: db: condition: service_healthy volumes: - upload:/var/www/html/storage/upload db: image: postgres:18-alpine restart: unless-stopped environment: POSTGRES_DB: firefly POSTGRES_USER: firefly POSTGRES_PASSWORD: ${DB_PASSWORD} volumes: - db:/var/lib/postgresql healthcheck: test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U firefly -d firefly"] interval: 5s timeout: 5s retries: 12 start_period: 30s # Calls Firefly III's daily jobs at 03:00 UTC: recurring transactions, auto-budgets, bill reminders. cron: image: alpine:3 restart: unless-stopped command: [sh, -c, 'echo "0 3 * * * wget -qO- http://app:8080/api/v1/cron/${STATIC_CRON_TOKEN}" | crontab - && exec crond -f -L /dev/stdout'] depends_on: app: condition: service_healthy volumes: upload: db: