Firefly III на Pethost в один клік
Менеджер особистих фінансів із подвійним записом
Що відбудеться
- Ви входите в Pethost або створюєте акаунт — з ключем доступу, через GitHub або Google.
- Машини ще немає? Ви обираєте тариф, і ми готуємо машину для вас. Посилання чекає у вашому браузері, доки машина не буде готова.
- Вікно «Новий проєкт» відкривається на цьому застосунку, і ви натискаєте «Створити проєкт».
- За хвилину-дві застосунок працює за власною адресою з HTTPS. Його секрети створюються випадково, а дані потрапляють у щонічний бекап.
- Це проєкт як будь-який інший: його compose.yaml, .env, логи й термінал — у панелі, а ваш агент може його змінити, відкотити або відновити.
Перші кроки
Відкрийте адресу й зареєструйтеся: перший акаунт буде єдиним, і після нього реєстрація закривається. Зробіть це одразу: доти сторінка відкрита кожному, хто знає адресу. Firefly III працює за UTC: для іншого часового поясу додайте TZ, наприклад Europe/Berlin, у файл .env проєкту й задеплойте ще раз.
Що запускається
Шаблон — це цей compose.yaml і змінні, які він записує в .env проєкту. Pethost запускає файл так, як його написано.
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: