diff --git a/.env.example b/.env.example index 3560c6c..5b40213 100644 --- a/.env.example +++ b/.env.example @@ -46,3 +46,7 @@ MAIL_FROM=firefly@jbnel.dev FIREFLY_III_URL=http://app:8080 VANITY_URL=https://import.jbnel.dev FIREFLY_III_ACCESS_TOKEN=REPLACE_AFTER_FIRST_RUN + +# --- Cron --- +# Generate with: python3 -c "import secrets; print(secrets.token_hex(16))" +STATIC_CRON_TOKEN=REPLACE_WITH_RANDOM_HEX diff --git a/docker-compose.yml b/docker-compose.yml index 7d71b73..f94c4b0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,6 +8,7 @@ services: - firefly_upload:/var/www/html/storage/upload networks: - firefly + - traefik_proxy depends_on: db: condition: service_healthy @@ -19,17 +20,27 @@ services: timeout: 10s retries: 3 start_period: 60s + labels: + - "traefik.enable=true" + - "traefik.http.routers.firefly.rule=Host(`firefly.jbnel.dev`)" + - "traefik.http.routers.firefly.entrypoints=websecure" + - "traefik.http.routers.firefly.tls.certresolver=letsencrypt" + - "traefik.http.services.firefly.loadbalancer.server.port=8080" + - "traefik.docker.network=traefik_proxy" cron: - image: fireflyiii/core:latest + image: alpine:latest restart: unless-stopped + # Calls the Firefly III cron endpoint nightly at 03:00 + command: > + sh -c "echo '0 3 * * * wget -qO- http://app:8080/api/v1/cron/$${STATIC_CRON_TOKEN}' + | crontab - && crond -f -l 8" env_file: .env - command: sh -c "sleep 60 && php /var/www/html/artisan firefly-iii:cron" - entrypoint: /bin/sh networks: - firefly depends_on: - - app + app: + condition: service_healthy importer: image: fireflyiii/data-importer:latest @@ -37,6 +48,7 @@ services: env_file: .env networks: - firefly + - traefik_proxy depends_on: app: condition: service_healthy @@ -46,6 +58,13 @@ services: timeout: 10s retries: 3 start_period: 30s + labels: + - "traefik.enable=true" + - "traefik.http.routers.firefly-importer.rule=Host(`import.jbnel.dev`)" + - "traefik.http.routers.firefly-importer.entrypoints=websecure" + - "traefik.http.routers.firefly-importer.tls.certresolver=letsencrypt" + - "traefik.http.services.firefly-importer.loadbalancer.server.port=8080" + - "traefik.docker.network=traefik_proxy" db: image: postgres:16-alpine @@ -83,3 +102,5 @@ volumes: networks: firefly: driver: bridge + traefik_proxy: + external: true