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.
Autor: Simon Vasconcelos Lee
Publikováno 10. listopadu 2026Doba čtení: 13 minut
docker-compose.yml, .env a .db.env. Heslo k databázi zvolte před prvním spuštěním.APP_KEY má přesně 32 znaků, zůstává tajný a zálohuje se spolu s daty.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.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.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.
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í.
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.
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
docker-compose.yml popisuje tři služby: app, tedy aplikaci, db, databázi MariaDB, a cron, naplánovanou úlohu..env obsahuje nastavení Firefly III, včetně šifrovacího klíče a přístupu k databázi..db.env obsahuje nastavení databáze. Oba názvy zachovejte: soubor Compose se na ně odkazuje přes env_file.Vygenerujte dva řetězce o 32 znacích příkazem uvedeným v souboru .env: jeden pro klíč, druhý pro heslo k databázi.
head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 32 && echo
SITE_OWNER=you@example.com
APP_KEY=
DB_PASSWORD=
APP_URL=https://finances.example.com
MYSQL_PASSWORD=
APP_KEY šifruje vaše relace. Má přesně 32 znaků, bez speciálních znaků jako =, #, < nebo >, a soubor žádá, abyste ho velmi pečlivě chránili.DB_PASSWORD v .env a MYSQL_PASSWORD v .db.env mají stejnou hodnotu.SITE_OWNER: vaše adresa, zobrazovaná v některých chybách uživatelům, kteří nejsou správci.APP_URL: veřejná adresa vaší instance. Soubor vysvětluje, že slouží k ověřování některých požadavků a ke skládání odkazů v e-mailech.TZ: vaše časové pásmo ve formátu databáze tz, jak ukazuje příklad v souboru.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.
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:
ports:
- 127.0.0.1:8080:8080
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.
latest sleduje poslední stabilní verzi. Značka jako version-6.7.9 verzi pevně určí; staré značky projekt odstraňuje přibližně po šesti měsících.linux/amd64 a linux/arm64.firefly_iii_upload uchovává přílohy, firefly_iii_db databázi.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.
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:
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:
docker compose up -d --force-recreate app
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:
finances.example.com {
reverse_proxy 127.0.0.1:8080
}
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:
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:
sudo certbot --nginx
finances.example.com. FAQ upozorňuje, že Laravel nezpracuje holou adresu IPv6 v URL.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.
/settings, otevřete konfigurační volby Firefly III, zrušte zaškrtnutí volby, která registrace vypíná, a uložte.AUTHENTICATION_GUARD=remote_user_guard důvěřuje Firefly III ověřovací proxy umístěné před ním, například Authelia nebo Authentik, která předává uživatele v hlavičce.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:
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:
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.
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:
docker exec --user www-data firefly_iii_core /usr/local/bin/php /var/www/html/artisan firefly-iii:cron --force
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áze | Nastavení | Záloha |
|---|---|---|
| MariaDB nebo MySQL | Služba db z oficiálního souboru; DB_CONNECTION=mysql, port 3306 | Export pomocí mariadb-dump, nebo svazek databáze při zastavené službě |
| PostgreSQL | DB_CONNECTION=pgsql, port 5432, obraz postgres a proměnné POSTGRES_* v .db.env | Export pomocí pg_dump, nebo svazek databáze při zastavené službě |
| SQLite | DB_CONNECTION=sqlite, žádná služba db a svazek připojený na /var/www/html/storage/database | Svazek databáze při zastavené službě |
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.
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.
FIREFLY_III_URL=http://app:8080
VANITY_URL=https://finances.example.com
TRUSTED_PROXIES=*
FIREFLY_III_URL: interní adresa aplikace, ke které se importér dostane přes síť Docker.VANITY_URL: veřejná adresa Firefly III, kterou znají vaši uživatelé./callback, a zrušte zaškrtnutí „Confidential“. Importér si pak vyžádá jeho ID klienta.FIREFLY_III_ACCESS_TOKEN prázdné a ponechte FIREFLY_III_URL; každý uživatel se pak do importéru přihlásí vlastním účtem.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.
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
MAIL_ENCRYPTION přijímá null, ssl, starttls nebo tls podle vašeho poskytovatele; kód verze 6.7.9 použije tls, když je hodnota prázdná./settings/notifications odešle testovací e-mail, jakmile je kontejner znovu vytvořen./slack.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žka | Co 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ím | Povinně |
.env | Nastavení a především APP_KEY | Povinně, šifrovaně |
.db.env | Přístupové údaje k databázi | Povinně, šifrovaně |
docker-compose.yml a .importer.env | Vaše verze oficiálních souborů | Doporučeno |
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:
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:
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.
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.
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.
Dokumentace obnovuje svazek opačným příkazem při zastavené službě; svazek s přílohami se obnovuje stejně:
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:
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.
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:
docker compose stop
docker compose pull
docker compose -f docker-compose.yml up -d --remove-orphans
/settings.php artisan correction:rollback-single-migration poslední záznam migrace, aniž by se dotkl dat, a php artisan migrate ji pak spustí znovu, uvnitř kontejneru.Importér se podle své dokumentace aktualizuje stejně, s docker compose rm -f mezi zastavením a stažením obrazů.
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éma | Naše týmy | Vy |
|---|---|---|
| Server | Aktualizace systému a zabezpečení, včetně zásahů na serveru | Okamžik, který vyhovuje vašemu provozu |
| Dohled | Server 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 III | Proaktivní sledování: chyby, zpomalení, úloha cron a místo na disku zachycené, doporučená oprava | Jeho instalace, aktualizace a nastavení, které zapracujete vy nebo váš AI asistent |
| Účty a data | Server, který je nese, hlídaný a zálohovaný | Uživatelé, dvoufázové ověření, importér dat a jeho poskytovatelé dat |
| Zálohy | Každou noc, šifrované a uchovávané mimo stroj; obnova v ceně | Exporty vlastní Firefly III a žádost o obnovu, když ji potřebujete |
| Migrace | Váš stávající server přenesen zdarma | Okamž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.
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.
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ěží.
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.
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.
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.
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.
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.
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.
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.
Simafri
Promluvme si o vašem záměru
Řekněte nám v pár slovech, co potřebujete: rychle se vám ozveme.
Děkujeme! Vaše zpráva byla odeslána. Brzy se vám ozveme.
Máte raději e-mail? Napište nám na support@simafri.com.