Wdróż aplikację Firefly III na Pethost jednym kliknięciem
Menedżer finansów osobistych z księgowością podwójnego zapisu
Co się dzieje
- Logujesz się do Pethost albo zakładasz konto, kluczem dostępu, przez GitHub albo Google.
- Nie masz jeszcze maszyny? Wybierasz plan, a my ją dla ciebie przygotowujemy. Link czeka w twojej przeglądarce, aż będzie gotowa.
- Okno „Nowy projekt” otwiera się na tej aplikacji, a ty klikasz „Utwórz projekt”.
- Za minutę czy dwie aplikacja działa pod własnym adresem z HTTPS. Jej sekrety są tworzone losowo, a dane trafiają do nocnego backupu.
- To projekt jak każdy inny: jego compose.yaml, .env, logi i terminal są w panelu, a twój agent może go zmienić, cofnąć do wcześniejszej wersji albo przywrócić.
Pierwsze kroki
Otwórz adres projektu i załóż konto: pierwsze konto będzie jedynym, a po nim rejestracja się zamyka. Zrób to od razu: do tego czasu strona jest otwarta dla każdego, kto zna adres. Firefly III działa w UTC: dla innej strefy dodaj TZ, na przykład Europe/Berlin, do pliku .env projektu i wdróż ponownie.
Co uruchamia
Szablon to ten compose.yaml i zmienne, które zapisuje do .env projektu. Pethost uruchamia plik dokładnie tak, jak jest napisany.
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: