Hostovat Firefly III na Managed VPS: vaše finance na vašem serveru

Hostovat Firefly III na Managed VPS znamená mít své účty, rozpočty a výdaje na vlastním stroji, který naše týmy udržují aktuální a ve dne i v noci hlídají. Firefly III je svobodný a otevřený správce osobních financí pod licencí AGPL. Tento průvodce sleduje jeho oficiální dokumentaci: instalaci pomocí Docker Compose, APP_KEY, HTTPS, první účet, úlohu cron, databázi, importér dat, e-maily, zálohy a aktualizace.

Simon Vasconcelos Lee Autor: Publikováno 10. listopadu 2026Doba čtení: 13 minut

Všichni průvodci

To nejdůležitější

  1. Licence AGPL-3.0-or-later dovoluje Firefly III volně provozovat; pokud ho upravíte, nabídnete zdrojový kód své verze těm, kdo ji používají.
  2. Nainstalujte ho ze tří oficiálních souborů: docker-compose.yml, .env a .db.env. Heslo k databázi zvolte před prvním spuštěním.
  3. APP_KEY má přesně 32 znaků, zůstává tajný a zálohuje se spolu s daty.
  4. Za reverzní proxy s HTTPS nastavte TRUSTED_PROXIES=* a svou adresu v APP_URL a hned si vytvořte účet: první registrovaný uživatel se stává vlastníkem a registrace se pak uzavřou.
  5. Služba cron z oficiálního souboru každou noc spouští automatické rozpočty a opakované transakce. Před každou aktualizací zálohujte databázi, svazek s nahranými soubory a .env.

Co Firefly III umí

Firefly III je správce osobních financí určený pro vlastní hosting. Sleduje vaše výdaje a příjmy pomocí rozpočtů, kategorií a štítků, abyste viděli, kam vaše peníze jdou. Jeho README ho popisuje jako zcela samostatně hostovaný a izolovaný: nekontaktuje žádný vnější server, dokud mu to výslovně nepřikážete.

Jedna instance pojme libovolný počet uživatelů a každý z nich má finanční správu zcela oddělenou od ostatních. Dokumentace popisuje model sdílení jedné společné správy, který je zatím ve vývoji.

Co dovoluje licence AGPL

Firefly III je vydáván pod GNU Affero General Public License, verze 3 nebo podle vaší volby kterékoli pozdější verze: to vyjadřuje identifikátor SPDX AGPL-3.0-or-later v jeho souboru composer.json. Text stanoví neomezené oprávnění program v nezměněné podobě provozovat. Obraz zveřejněný projektem tedy můžete používat pro sebe, svou rodinu nebo svou firmu, aniž byste kupovali licenci.

Článek 13 přidává podmínku specifickou pro AGPL: pokud program upravíte, musí vaše verze všem, kdo ji používají na dálku přes síť, nabídnout možnost získat její zdrojový kód zdarma. Importér dat je pod stejnou licencí.

Instalace pomocí Docker Compose

Dokumentace označuje Docker Compose za nejsnazší způsob instalace Firefly III. Na serveru s nainstalovaným Dockerem vytvořte složku a stáhněte do ní tři oficiální soubory v surové podobě: na jejich odsazení záleží a dokumentace žádá, abyste je nekopírovali z prohlížeče.

Terminál
mkdir firefly-iii && cd firefly-iii
curl -o docker-compose.yml https://raw.githubusercontent.com/firefly-iii/docker/main/docker-compose.yml
curl -o .env https://raw.githubusercontent.com/firefly-iii/firefly-iii/main/.env.example
curl -o .db.env https://raw.githubusercontent.com/firefly-iii/docker/main/database.env

Nastavení, která změnit před prvním spuštěním

Vygenerujte dva řetězce o 32 znacích příkazem uvedeným v souboru .env: jeden pro klíč, druhý pro heslo k databázi.

Terminál
head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 32 && echo
.env, řádky ke změně
SITE_OWNER=you@example.com
APP_KEY=
DB_PASSWORD=
APP_URL=https://finances.example.com
.db.env
MYSQL_PASSWORD=

Heslo k databázi zvolte před prvním spuštěním. Databáze si ho uloží do svého svazku hned při vytvoření: pokud ho změníte později, přestane souhlasit a Docker FAQ nabízí jediné řešení, odstranit kontejnery a svazky a začít znovu.

Lokálně publikovaný port

Oficiální soubor publikuje aplikaci na portu 80 na všech adresách serveru. Chcete-li ji obsluhovat přes HTTPS za reverzní proxy na stejném stroji, změňte ve službě app tento jediný řádek:

docker-compose.yml, ve službě app
ports:
  - 127.0.0.1:8080:8080
Terminál
docker compose -f docker-compose.yml up -d --pull=always
docker compose -f docker-compose.yml logs -f

Při prvním spuštění kontejner sám vytvoří a zmigruje databázi. Po dokončení instalace vám Firefly III v protokolu poděkuje za instalaci: přejděte k reverzní proxy.

Dokumentace neuvádí žádný údaj o paměti; její Docker FAQ navrhuje PHP_MEMORY_LIMIT=512M nebo více, pokud PHP dojde paměť. Velikost závisí na počtu uživatelů, objemu transakcí a na importéru dat. Na Managed VPS nám popište své využití a doporučíme vám vhodnou velikost.

HTTPS a reverzní proxy

Firefly III obsluhuje aplikaci přes HTTP na portu 8080 uvnitř kontejneru a HTTPS zajišťuje reverzní proxy před ním. Aplikace čte hlavičku X-Forwarded-Proto, aby věděla, že návštěvník přišel přes HTTPS, pokud proxy důvěřuje:

.env
TRUSTED_PROXIES=*

Docker FAQ je v tomto bodě jasné: bez TRUSTED_PROXIES=* zůstávají odkazy na http, formuláře a grafy přestanou fungovat a bezpečnostní hlavičky CSP selžou. S portem publikovaným na 127.0.0.1 se k aplikaci dostane jen proxy na samotném serveru. Po každé změně souboru .env kontejner znovu vytvořte:

Terminál
docker compose up -d --force-recreate app

S Caddy

Caddy získá certifikát Let’s Encrypt samo a jeho direktiva reverse_proxy ve výchozím nastavení nastavuje hlavičky X-Forwarded-For, X-Forwarded-Proto a X-Forwarded-Host:

Caddyfile
finances.example.com {
  reverse_proxy 127.0.0.1:8080
}

S Nginx a Certbotem

Tento blok přebírá hlavičky z instalačního FAQ a vyrovnávací paměti, které doporučuje proti chybám 502, když aplikace vrací token v dlouhé hlavičce. Naslouchá na portu 80, aby HTTPS nasadil Certbot:

Blok Nginx
server {
    listen 80;
    listen [::]:80;
    server_name finances.example.com;

    client_max_body_size 64M;
    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 300s;
    }
}

Certbot pak nainstaluje certifikát a postará se o jeho obnovu:

Terminál
sudo certbot --nginx

První účet a registrace

První uživatel, který se zaregistruje, se stává vlastníkem instance. Z bezpečnostních důvodů se pak registrace uzavřou samy: většina lidí instaluje Firefly III jen pro sebe.

  1. Jakmile proxy odpovídá, otevřete svou adresu HTTPS a vytvořte si účet: získá roli vlastníka.
  2. Ve svém profilu zapněte dvoufázové ověření a uschovejte osm záložních kódů, které zobrazí.
  3. Chcete-li instanci otevřít dalším lidem, přejděte na /settings, otevřete konfigurační volby Firefly III, zrušte zaškrtnutí volby, která registrace vypíná, a uložte.

Úloha cron

Několik funkcí funguje jen s naplánovanou úlohou: automatické rozpočty, opakované transakce, upozornění na předplatná a aktuální směnné kurzy. Obraz Docker cron sám nespouští; oficiální soubor k tomu přidává malou službu cron, která aplikaci volá každý den ve 3 hodiny ráno.

Ověřuje se statickým tokenem. Vygenerujte stejným příkazem třetí řetězec a vložte ho do .env:

.env
STATIC_CRON_TOKEN=

Tento token má přesně 32 znaků: kód verze 6.7.9 jinou délku nepřijme. Takto službu deklaruje oficiální soubor; zdvojené $$ je záměrné a odkazuje na řádky TZ a STATIC_CRON_TOKEN souboru .env:

docker-compose.yml, služba cron
cron:
  image: alpine
  restart: always
  container_name: firefly_iii_cron
  env_file: .env
  init: true
  command: ["sh", "-c", "apk add tzdata && \
    (ln -s /usr/share/zoneinfo/$$TZ /etc/localtime || true) && \
    echo \"0 3 * * * wget -qO- http://app:8080/api/v1/cron/$$STATIC_CRON_TOKEN;echo\" \
    | crontab - && \
    exec crond -f -L /dev/stdout"]
  networks:
    - firefly_iii
  depends_on:
    - app

Jedna úloha stačí pro všechny uživatele instance. Chcete-li ověřit, že proběhla, přečtěte si protokol kontejneru: každá úloha hlásí výsledek v JSON, s job_fired a job_succeeded.

Terminál
docker logs firefly_iii_cron

Pro ruční spuštění žádá Docker FAQ použít uživatele www-data, nikoli root: FAQ tuto past spojuje s chybami oprávnění u souborů protokolu:

Terminál
docker exec --user www-data firefly_iii_core /usr/local/bin/php /var/www/html/artisan firefly-iii:cron --force

MariaDB, PostgreSQL, nebo SQLite

Oficiální soubor dodává MariaDB s obrazem mariadb:lts. Firefly III podporuje také PostgreSQL a SQLite, které se volí pomocí DB_CONNECTION v .env:

DatabázeNastaveníZáloha
MariaDB nebo MySQLSlužba db z oficiálního souboru; DB_CONNECTION=mysql, port 3306Export pomocí mariadb-dump, nebo svazek databáze při zastavené službě
PostgreSQLDB_CONNECTION=pgsql, port 5432, obraz postgres a proměnné POSTGRES_* v .db.envExport pomocí pg_dump, nebo svazek databáze při zastavené službě
SQLiteDB_CONNECTION=sqlite, žádná služba db a svazek připojený na /var/www/html/storage/databaseSvazek databáze při zastavené službě
.env (PostgreSQL)
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432

Pro PostgreSQL dokumentace také přepíná službu db na obraz postgres, který instaluje PostgreSQL 18, a připojuje jeho svazek na /var/lib/postgresql. V .db.env se z proměnných MYSQL_* stávají POSTGRES_USER, POSTGRES_DB a POSTGRES_PASSWORD.

Tuto volbu udělejte dřív, než zadáte první transakce. FAQ uvádí, že přechod z jedné databáze na jinou zůstává možný, i když ho Firefly III sám nepodporuje, a že export aplikace nepřenáší všechna data.

Importér dat

Firefly III Data Importer je samostatný nástroj s vlastní instalací a vlastními aktualizacemi; jeho verze 2.3.5 vyšla 23. září 2026. Importuje soubory CSV a CAMT.053 a umí také stahovat transakce z vašich bank prostřednictvím externích poskytovatelů dat, z nichž každý má vlastní podmínky.

Oficiální repozitář Docker ho dodává v druhém souboru, docker-compose-importer.yml, který zachovává stejné služby a přidává importer. Jeho nastavení patří do souboru .importer.env, převzatého z .env.example importéru. Provozujte ho pod vlastním doménovým jménem, s lokálně publikovaným portem a druhým blokem proxy: FAQ žádá, abyste ho neumisťovali do podadresáře.

.importer.env, řádky ke změně
FIREFLY_III_URL=http://app:8080
VANITY_URL=https://finances.example.com
TRUSTED_PROXIES=*

E-maily: konfigurace SMTP

Ve výchozím nastavení MAIL_MAILER=log zapisuje zprávy do protokolů, místo aby je odesílal. Chcete-li dostávat oznámení, například upozornění na předplatná, nastavte odesílání v .env. Dokumentace žádá vždy změnit MAIL_FROM a SITE_OWNER, jinak žádný e-mail nikdy neodejde.

Na VPS Simafri vede odesílání přes ověřené relé SMTP na portu 587: adresa poštovního účtu, který už máte, nebo Simafri Suite.

.env
MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_FROM=finances@example.com
MAIL_USERNAME=finances@example.com
MAIL_PASSWORD=account_password
MAIL_ENCRYPTION=tls

Zálohy

Firefly III nemá vestavěnou zálohovací rutinu: dokumentace doporučuje nástroje samotného systému a upozorňuje, že exportní funkce aplikace zálohou není. S Dockerem uchovávejte toto:

PoložkaCo uchováváZálohovat
Databáze (firefly_iii_db)Účty, transakce, rozpočty, pravidla a uživateléPovinně
Přílohy (firefly_iii_upload)Soubory připojené k transakcímPovinně
.envNastavení a především APP_KEYPovinně, šifrovaně
.db.envPřístupové údaje k databáziPovinně, šifrovaně
docker-compose.yml a .importer.envVaše verze oficiálních souborůDoporučeno

Databáze za běhu služby

S MariaDB exportuje mariadb-dump databázi bez zastavení služby; jeho volba --single-transaction dává konzistentní kopii tabulek InnoDB, aniž by je zamykala. Spuštěný ze složky se souborem Compose čte příkaz přístupové údaje z prostředí kontejneru:

Terminál
docker exec firefly_iii_db sh -c 'mariadb-dump --single-transaction -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE"' > firefly-$(date +%F).sql

S PostgreSQL vede stejný postup přes pg_dump:

Terminál
docker exec firefly_iii_db sh -c 'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' > firefly-$(date +%F).sql

Naplánujte tento export na serveru alespoň jednou denně a soubory, které se hromadí, třiďte.

Svazky při zastavené službě

Dokumentace archivuje každý svazek pomocí jednorázového kontejneru. Docker Compose před názvy svazků přidává název projektu, ve výchozím nastavení název složky: přesné názvy si ověřte, než archivaci spustíte.

Terminál, ve složce firefly-iii
docker volume ls
docker compose stop
docker run --rm -v "firefly-iii_firefly_iii_db:/tmp" -v "$HOME/backups/firefly:/backup" \
    ubuntu tar -czvf /backup/firefly_db.tar /tmp
docker run --rm -v "firefly-iii_firefly_iii_upload:/tmp" -v "$HOME/backups/firefly:/backup" \
    ubuntu tar -czvf /backup/firefly_upload.tar /tmp
docker compose start

Překlep v názvu svazku nevyvolá žádnou chybu: Docker pod tímto názvem vytvoří prázdný svazek a zarchivuje ho, čímž přepíše předchozí zálohu. Dokumentace žádá před každou archivací ověřit, že svazek existuje.

Kopii .env a těchto archivů uchovávejte mimo server, šifrovaně, protože obsahuje klíč a přístupové údaje k databázi. Uložené na disku serveru se tyto soubory dostanou i do jeho nočních záloh.

Obnova

Dokumentace obnovuje svazek opačným příkazem při zastavené službě; svazek s přílohami se obnovuje stejně:

Terminál
docker run --rm -v "firefly-iii_firefly_iii_db:/recover" -v "$HOME/backups/firefly:/backup" \
    ubuntu tar -xvf /backup/firefly_db.tar -C /recover --strip 1

Export SQL se nahraje zpět do běžící databáze:

Terminál
docker exec -i firefly_iii_db sh -c 'mariadb -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE"' < firefly-YYYY-MM-DD.sql

Obnovte také .env s jeho APP_KEY, pak spusťte znovu a otevřete své účty. Dokumentace to opakuje po každé metodě: první, co se zálohou udělat, je obnovit ji, a ověřit tak, že funguje.

Aktualizace a migrace

Firefly III se aktualizuje sám, i z verzí tak starých jako 4.7, a při spuštění kontejneru migruje svou databázi. Dokumentace upozorňuje, že některé aktualizace data odstraňují nebo čistí, a před každou z nich žádá zálohu databáze a svazků, zvlášť při přechodu mezi hlavními verzemi. Ze složky se souborem Compose:

Terminál
docker compose stop
docker compose pull
docker compose -f docker-compose.yml up -d --remove-orphans

Importér se podle své dokumentace aktualizuje stejně, s docker compose rm -f mezi zastavením a stažením obrazů.

Kdo co dělá na Managed VPS

Vlastní hosting vyžaduje, abyste kromě aplikace udržovali i server. Na Managed VPS se serveru ujímají naše týmy a vaši instanci proaktivně sledují; Firefly III zůstává vaším softwarem, s jeho nastavením a vašimi finančními daty.

TémaNaše týmyVy
ServerAktualizace systému a zabezpečení, včetně zásahů na serveruOkamžik, který vyhovuje vašemu provozu
DohledServer sledovaný 24 hodin denně, 7 dní v týdnu, se zásahem bez čekání na vaše voláníČtení protokolů vaší instance
Firefly IIIProaktivní sledování: chyby, zpomalení, úloha cron a místo na disku zachycené, doporučená opravaJeho instalace, aktualizace a nastavení, které zapracujete vy nebo váš AI asistent
Účty a dataServer, který je nese, hlídaný a zálohovanýUživatelé, dvoufázové ověření, importér dat a jeho poskytovatelé dat
ZálohyKaždou noc, šifrované a uchovávané mimo stroj; obnova v ceněExporty vlastní Firefly III a žádost o obnovu, když ji potřebujete
MigraceVáš stávající server přenesen zdarmaOkamžik přepnutí

Pokud dáváte přednost tomu, aby naše týmy zasáhly přímo v aplikaci, tato služba se účtuje po hodinách nebo paušálem, s cenovou nabídkou sdělenou před zásahem.

Firefly III na serveru, o který se staráme za vás

S Managed VPS od Simafri udržují naše týmy server vaší instance Firefly III aktuální, hlídají ho ve dne i v noci a zasahují bez čekání na vaše volání; vaši instanci také proaktivně sledují a doporučí vám užitečné opravy, které zapracujete vy nebo váš AI asistent. Zálohy se každou noc šifrují a uchovávají mimo stroj, jejich obnova je v ceně a migrace vašeho stávajícího serveru je zdarma.

Objevit Managed VPS

Časté otázky

Je Firefly III zdarma?

Ano. Firefly III je pod licencí AGPL-3.0-or-later: můžete ho provozovat pro sebe, svou rodinu nebo svou firmu, aniž byste kupovali licenci. Pokud ho upravíte, musí vaše verze nabídnout zdrojový kód těm, kdo ji používají přes síť. Zbývají náklady na server, na kterém běží.

Jak nainstalovat Firefly III pomocí Docker Compose?

Stáhněte tři oficiální soubory, docker-compose.yml, .env a .db.env. Před prvním spuštěním nastavte APP_KEY o 32 znacích a stejné heslo v DB_PASSWORD a MYSQL_PASSWORD, pak spusťte docker compose up -d. Potom před něj umístěte reverzní proxy s HTTPS.

K čemu slouží APP_KEY ve Firefly III?

APP_KEY je šifrovací klíč relací. Má přesně 32 znaků, bez speciálních znaků jako = nebo #, a zůstává tajný. Dokumentace žádá zálohovat ho spolu se svazky: patří k tomu, co k obnově instance potřebujete.

Proč odkazy Firefly III za proxy zůstávají na http?

Docker FAQ uvádí, že v souboru .env chybí TRUSTED_PROXIES=*: bez něj Firefly III hlavičku X-Forwarded-Proto od proxy ignoruje, odkazy zůstávají na http a formuláře a grafy přestanou fungovat. Uveďte také svou veřejnou adresu v APP_URL.

Jak nastavit úlohu cron Firefly III s Dockerem?

Oficiální soubor Compose obsahuje službu cron, která aplikaci volá každý den ve 3 hodiny ráno. Nastavte v .env STATIC_CRON_TOKEN o přesně 32 znacích a pak sadu služeb restartujte. Jediná úloha obslouží všechny uživatele instance.

Jak otevřít Firefly III více uživatelům?

První registrovaný uživatel se stává vlastníkem a registrace se pak uzavřou. Vlastník je znovu otevře v /settings, v konfiguračních volbách Firefly III. Každý uživatel pak má finanční správu oddělenou od ostatních.

Jak zálohovat Firefly III?

Zálohujte databázi exportem pomocí mariadb-dump nebo pg_dump, svazek s přílohami a soubory .env a .db.env, šifrovaně. Exportní funkce aplikace zálohou není. Obnovu vyzkoušejte hned po první záloze.

Pokrývá Managed VPS i Firefly III?

Managed VPS pokrývá server: systém, zabezpečení, dohled a zálohy. Naše týmy také proaktivně sledují vaši instanci a doporučí vám užitečné opravy, které zapracujete vy. Zásah v samotné aplikaci se účtuje po hodinách nebo paušálem.

Zdroje a oficiální dokumentace

Kontaktujte nás