Déployez Firefly III sur Pethost en un clic
Un gestionnaire de finances personnelles en comptabilité à partie double
Ce qui se passe
- Vous vous connectez à Pethost ou créez un compte, avec une clé d’accès, GitHub ou Google.
- Pas encore de machine ? Vous choisissez une offre, et nous en préparons une pour vous. Le lien attend dans votre navigateur qu’elle soit prête.
- Nouveau projet s’ouvre sur l’application, et vous cliquez sur Créer le projet.
- En une minute ou deux, l’application tourne à sa propre adresse en HTTPS. Ses secrets sont créés pour elle au hasard, et ses données sont dans la sauvegarde nocturne.
- C’est un projet comme les autres : son compose.yaml, son .env, ses logs et un terminal sont dans le panel, et votre agent peut le modifier, revenir à une version précédente ou le restaurer.
Premiers pas
Ouvrez l’adresse et inscrivez-vous : le premier compte est le seul, et les inscriptions se ferment ensuite. Faites-le tout de suite : d’ici là, la page est ouverte à quiconque connaît l’adresse. Firefly III fonctionne en UTC : pour un autre fuseau horaire, ajoutez TZ, par exemple Europe/Berlin, au .env du projet et redéployez.
Ce qui tourne
Le template, c’est ce compose.yaml et les variables qu’il écrit dans le .env du projet. Pethost exécute le fichier tel qu’il est écrit.
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: