Hostovanie Firefly III na Managed VPS: vaše financie na vašom serveri

Hostovanie Firefly III na Managed VPS znamená, že vaše účty, rozpočty a výdavky sú uložené na vlastnom stroji, ktorý naše tímy udržiavajú aktuálny a dohliadajú naň vo dne v noci. Firefly III je slobodný softvér na správu osobných financií pod licenciou AGPL. Tento sprievodca postupuje podľa jeho oficiálnej dokumentácie: inštalácia cez Docker Compose, APP_KEY, HTTPS, prvý účet, úloha cron, databáza, importér údajov, e-maily, zálohy a aktualizácie.

Simon Vasconcelos Lee Autor: Publikované 10. novembra 2026Čas čítania: 13 minút

Všetci sprievodcovia

To najdôležitejšie

  1. Licencia AGPL-3.0-or-later umožňuje Firefly III voľne prevádzkovať; ak ho upravíte, kód svojej verzie sprístupníte tým, ktorí ho používajú.
  2. Nainštalujte ho z troch oficiálnych súborov: docker-compose.yml, .env a .db.env. Heslo databázy si zvoľte ešte pred prvým spustením.
  3. APP_KEY má presne 32 znakov, zostáva tajný a zálohuje sa spolu s údajmi.
  4. Za reverznou proxy s HTTPS nastavte TRUSTED_PROXIES=* a svoju adresu v APP_URL a hneď si vytvorte účet: prvý zaregistrovaný používateľ sa stáva vlastníkom a registrácie sa potom zatvoria.
  5. Služba cron z oficiálneho súboru každú noc spúšťa automatické rozpočty a opakované transakcie. Pred každou aktualizáciou zálohujte databázu, zväzok s prílohami a .env.

Čo Firefly III robí

Firefly III je správca osobných financií určený na vlastnú prevádzku. Sleduje vaše výdavky a príjmy pomocou rozpočtov, kategórií a štítkov, aby ste videli, kam idú vaše peniaze. README ho opisuje ako úplne samostatne hostovaný a izolovaný: nekontaktuje žiadny externý server, kým mu to výslovne nepovolíte.

Jedna inštancia hostí ľubovoľný počet používateľov, každého s finančnou administráciou úplne oddelenou od ostatných. Dokumentácia opisuje model na zdieľanie jednej administrácie, ktorý je momentálne vo vývoji.

Čo umožňuje licencia AGPL

Firefly III vychádza pod licenciou GNU Affero General Public License, verzia 3 alebo podľa vašej voľby akákoľvek neskoršia verzia: to je identifikátor SPDX AGPL-3.0-or-later v jeho súbore composer.json. Text potvrdzuje neobmedzené povolenie spúšťať nezmenený program. Obraz zverejnený projektom teda môžete používať pre seba, svoju rodinu alebo svoju firmu bez licencie, ktorú by ste museli kupovať.

Článok 13 dopĺňa podmienku vlastnú AGPL: ak program upravíte, vaša verzia musí všetkým, ktorí ju používajú na diaľku, cez sieť, ponúknuť možnosť získať jej zdrojový kód zadarmo. Importér údajov vychádza pod tou istou licenciou.

Inštalácia pomocou Docker Compose

Dokumentácia označuje Docker Compose za najjednoduchší spôsob inštalácie Firefly III. Na serveri s nainštalovaným Dockerom vytvorte priečinok a stiahnite doň tri oficiálne súbory v surovej podobe: na medzerách v nich záleží a dokumentácia žiada nekopírovať ich z prehliadača.

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

Nastavenia, ktoré treba zmeniť pred prvým spustením

Príkazom uvedeným v súbore .env vygenerujte dva reťazce s 32 znakmi: jeden pre kľúč, druhý pre heslo databázy.

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

Heslo databázy si zvoľte pred prvým spustením. Databáza si ho uloží do svojho zväzku hneď pri vytvorení: ak ho neskôr zmeníte, prestane sedieť a Docker FAQ ponúka jediné východisko, odstrániť kontajnery aj zväzky a začať odznova.

Port publikovaný lokálne

Oficiálny súbor publikuje aplikáciu na porte 80 všetkých adries servera. Ak ju chcete obsluhovať cez HTTPS za reverznou proxy na tom istom stroji, zmeňte v službe app tento jediný riadok:

docker-compose.yml, v službe 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

Pri prvom spustení kontajner sám vytvorí databázu a vykoná jej migrácie. Keď je inštalácia hotová, Firefly III vám v zázname poďakuje za inštaláciu: prejdite na reverznú proxy.

Dokumentácia neuvádza nároky na pamäť; jej Docker FAQ odporúča PHP_MEMORY_LIMIT=512M alebo viac, ak PHP dôjde pamäť. Veľkosť závisí od počtu používateľov, objemu transakcií a importéra údajov. Na spravovanom VPS (Managed VPS) nám opíšte svoje použitie a odporučíme vám vhodnú veľkosť.

HTTPS a reverzná proxy

Firefly III obsluhuje aplikáciu cez HTTP na porte 8080 vnútri kontajnera a HTTPS zabezpečuje reverzná proxy pred ním. Aplikácia číta hlavičku X-Forwarded-Proto, aby vedela, že návštevník prišiel cez HTTPS, pokiaľ proxy dôveruje:

.env
TRUSTED_PROXIES=*

Docker FAQ je v tomto bode jednoznačné: bez TRUSTED_PROXIES=* zostávajú odkazy na http, formuláre a grafy prestávajú fungovať a bezpečnostné hlavičky CSP zlyhávajú. S portom publikovaným na 127.0.0.1 sa k aplikácii dostane len proxy samotného servera. Po každej zmene súboru .env kontajner znova vytvorte:

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

S Caddy

Caddy získa certifikát Let’s Encrypt sám a jeho direktíva reverse_proxy predvolene 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 Certbotom

Tento blok preberá hlavičky z inštalačného FAQ a vyrovnávacie pamäte, ktoré odporúča proti chybám 502, keď aplikácia vracia token v dlhej hlavičke. Počúva na porte 80, aby HTTPS mohol zapnúť 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 potom nainštaluje certifikát a postará sa o jeho obnovu:

Terminál
sudo certbot --nginx

Prvý účet a registrácie

Prvý používateľ, ktorý sa zaregistruje, sa stáva vlastníkom inštancie. Z bezpečnostných dôvodov sa registrácie potom samy zatvoria: väčšina ľudí inštaluje Firefly III len pre seba.

  1. Hneď ako proxy odpovedá, otvorte svoju adresu HTTPS a vytvorte si účet: získa rolu vlastníka.
  2. Vo svojom profile zapnite dvojfaktorové overenie a uschovajte osem záložných kódov, ktoré zobrazí.
  3. Ak chcete inštanciu otvoriť ďalším ľuďom, prejdite na /settings, otvorte konfiguračné voľby Firefly III, zrušte zaškrtnutie voľby, ktorá vypína registrácie, a uložte.

Úloha cron

Viacero funkcií funguje len s naplánovanou úlohou: automatické rozpočty, opakované transakcie, upozornenia na predplatné a aktuálne výmenné kurzy. Obraz Docker sám cron nespúšťa; oficiálny súbor na to pridáva malú službu cron, ktorá aplikáciu volá každý deň o 3:00.

Overuje sa statickým tokenom. Tým istým príkazom vygenerujte tretí reťazec a vložte ho do .env:

.env
STATIC_CRON_TOKEN=

Tento token má presne 32 znakov: kód verzie 6.7.9 inú dĺžku neprijme. Takto službu deklaruje oficiálny súbor; zdvojené $$ je zámerné a odkazuje na riadky TZ a STATIC_CRON_TOKEN súboru .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čí pre všetkých používateľov inštancie. Či prebehla, zistíte zo záznamu kontajnera: každá úloha sa ohlási v JSON, s job_fired a job_succeeded.

Terminál
docker logs firefly_iii_cron

Ak ju chcete spustiť ručne, Docker FAQ žiada použiť používateľa www-data, a nie root: s touto nástrahou FAQ spája chyby oprávnení na súboroch záznamov:

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

MariaDB, PostgreSQL alebo SQLite

Oficiálny súbor dodáva MariaDB s obrazom mariadb:lts. Firefly III podporuje aj PostgreSQL a SQLite, ktoré sa volia cez DB_CONNECTION v .env:

DatabázaZavedenieZáloha
MariaDB alebo MySQLSlužba db z oficiálneho súboru; DB_CONNECTION=mysql, port 3306Export pomocou mariadb-dump alebo zväzok databázy pri zastavenej službe
PostgreSQLDB_CONNECTION=pgsql, port 5432, obraz postgres a premenné POSTGRES_* v .db.envExport pomocou pg_dump alebo zväzok databázy pri zastavenej službe
SQLiteDB_CONNECTION=sqlite, žiadna služba db a zväzok pripojený na /var/www/html/storage/databaseZväzok databázy pri zastavenej službe
.env (PostgreSQL)
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432

Pre PostgreSQL dokumentácia nasmeruje službu db aj na obraz postgres, ktorý nainštaluje PostgreSQL 18, a jej zväzok pripojí na /var/lib/postgresql. V .db.env sa z premenných MYSQL_* stanú POSTGRES_USER, POSTGRES_DB a POSTGRES_PASSWORD.

Túto voľbu urobte skôr, než zadáte prvé transakcie. FAQ uvádza, že prechod z jednej databázy na inú je možný, hoci ho samotný Firefly III nepodporuje, a že export aplikácie neprenáša všetky údaje.

Importér údajov (Data Importer)

Firefly III Data Importer je samostatný nástroj s vlastnou inštaláciou a vlastnými aktualizáciami; jeho verzia 2.3.5 vyšla 23. septembra 2026. Importuje súbory CSV a CAMT.053 a vie aj sťahovať transakcie z vašich bánk cez externých poskytovateľov údajov, každého s vlastnými podmienkami.

Oficiálny repozitár Docker ho dodáva v druhom súbore, docker-compose-importer.yml, ktorý zachováva tie isté služby a pridáva importer. Jeho nastavenia patria do súboru .importer.env, prevzatého zo súboru .env.example importéra. Obsluhujte ho pod vlastným doménovým menom, s portom publikovaným lokálne a druhým blokom proxy: FAQ žiada neumiestňovať ho do podpriečinka.

.importer.env, riadky na zmenu
FIREFLY_III_URL=http://app:8080
VANITY_URL=https://finances.example.com
TRUSTED_PROXIES=*

E-maily: konfigurácia SMTP

Predvolene MAIL_MAILER=log zapisuje správy do záznamov namiesto ich odosielania. Ak chcete dostávať upozornenia, napríklad na predplatné, nastavte odosielanie v .env. Dokumentácia žiada vždy zmeniť MAIL_FROM a SITE_OWNER, inak žiadny e-mail neodíde.

Na VPS Simafri odosielanie prechádza cez overené relé SMTP na porte 587: adresa poštového účtu, ktorý už máte, alebo 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á zabudovaný postup zálohovania: dokumentácia odporúča nástroje samotného systému a upozorňuje, že funkcia exportu v aplikácii nie je záloha. S Dockerom treba uchovávať toto:

PrvokČo uchovávaZálohovať
Databáza (firefly_iii_db)Účty, transakcie, rozpočty, pravidlá a používateliaPovinne
Prílohy (firefly_iii_upload)Súbory priložené k transakciámPovinne
.envNastavenia, a predovšetkým APP_KEYPovinne, šifrovane
.db.envPrístupové údaje k databázePovinne, šifrovane
docker-compose.yml a .importer.envVaša verzia oficiálnych súborovOdporúčané

Databáza pri bežiacej službe

Pri MariaDB exportuje mariadb-dump databázu bez zastavenia služby; jeho voľba --single-transaction dáva konzistentnú kópiu tabuliek InnoDB bez ich zamknutia. Príkaz spustený z priečinka so súborom Compose načíta prístupové údaje z prostredia kontajnera:

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

Pri PostgreSQL sa ten istý postup robí cez pg_dump:

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

Tento export naplánujte na serveri aspoň raz denne a súbory, ktoré sa hromadia, prebierajte.

Zväzky pri zastavenej službe

Dokumentácia archivuje každý zväzok pomocou jednorazového kontajnera. Docker Compose pridáva pred názvy zväzkov názov projektu, ktorým je predvolene názov priečinka: pred spustením archivácie si overte presné názvy.

Terminál, v priečinku 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

Chybne napísaný názov zväzku nevyvolá žiadnu chybu: Docker pod týmto názvom vytvorí prázdny zväzok a zarchivuje ho, čím prepíše predchádzajúcu zálohu. Dokumentácia žiada pred každou archiváciou overiť, že zväzok existuje.

Kópiu súboru .env a týchto archívov uchovávajte mimo servera, šifrovane, keďže obsahuje kľúč a prístupové údaje k databáze. Uložené na disku servera sa tieto súbory dostanú aj do jeho nočných záloh.

Obnova

Dokumentácia obnovuje zväzok opačným príkazom pri zastavenej službe; zväzok s prílohami sa obnovuje rovnako:

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 sa načíta späť do bežiacej databázy:

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 aj .env s jeho APP_KEY, potom znova spustite a otvorte svoje účty. Dokumentácia to opakuje pri každej metóde: prvé, čo so zálohou urobiť, je obnoviť ju a overiť tak, že funguje.

Aktualizácie a migrácie

Firefly III sa aktualizuje sám, dokonca aj z verzií starých ako 4.7, a pri štarte kontajnera vykoná migrácie svojej databázy. Dokumentácia upozorňuje, že niektoré aktualizácie údaje odstraňujú alebo čistia, a pred každou z nich žiada zálohu databázy a zväzkov, najmä pri prechode medzi hlavnými verziami. Z priečinka so súborom Compose:

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

Importér sa aktualizuje rovnako, podľa jeho dokumentácie s docker compose rm -f medzi zastavením a stiahnutím obrazov.

Kto čo robí na Managed VPS

Hostovanie na vlastnom serveri vyžaduje popri aplikácii starať sa aj o server. Na Managed VPS preberajú server naše tímy a vašu inštanciu proaktívne sledujú; Firefly III zostáva vaším softvérom, s vašimi nastaveniami a finančnými údajmi.

TémaNaše tímyVy
ServerAktualizácie systému a zabezpečenia, vrátane zásahov na serveriČas, ktorý vyhovuje vašej činnosti
DohľadServer sledovaný 24 hodín denne, 7 dní v týždni, so zásahom bez čakania na vaše zavolanieČítanie záznamov vašej inštancie
Firefly IIIProaktívne sledovanie: chyby, spomalenia, úloha cron a miesto na disku, s odporúčanou opravouJeho inštalácia, aktualizácie a nastavenia, ktoré zapracujete vy alebo váš AI asistent
Účty a údajeServer, ktorý ich nesie, sledovaný a zálohovanýPoužívatelia, dvojfaktorové overenie, importér údajov a jeho poskytovatelia údajov
ZálohyKaždú noc, šifrované a uchovávané mimo stroja; obnova je v ceneExporty špecifické pre Firefly III a žiadosť o obnovu, keď ju potrebujete
MigráciaVáš súčasný server prenesený zdarmaČas prepnutia

Ak by ste uprednostnili, aby naše tímy zasiahli priamo v aplikácii, táto služba sa fakturuje hodinovo alebo paušálne, s cenovou ponukou oznámenou pred zásahom.

Firefly III na serveri, o ktorý sa staráme za vás

S Managed VPS od Simafri udržiavajú naše tímy server vašej inštancie Firefly III aktuálny, sledujú ho vo dne v noci a zasahujú bez čakania na vaše zavolanie; vašu inštanciu navyše proaktívne sledujú a odporúčajú vám užitočné opravy, ktoré zapracujete vy alebo váš AI asistent. Zálohy sa každú noc šifrujú a uchovávajú mimo stroja, ich obnova je v cene a migrácia vášho súčasného servera je zdarma.

Objaviť Managed VPS

Časté otázky

Je Firefly III zadarmo?

Áno. Firefly III vychádza pod licenciou AGPL-3.0-or-later: môžete ho prevádzkovať pre seba, svoju rodinu alebo svoju firmu bez licencie, ktorú by ste museli kupovať. Ak ho upravíte, vaša verzia musí ponúknuť zdrojový kód tým, ktorí ju používajú cez sieť. Zostáva náklad na server, na ktorom beží.

Ako nainštalovať Firefly III cez Docker Compose?

Stiahnite tri oficiálne súbory, docker-compose.yml, .env a .db.env. Pred prvým spustením nastavte APP_KEY s 32 znakmi a rovnaké heslo v DB_PASSWORD a MYSQL_PASSWORD, potom spustite docker compose up -d. Nakoniec pred aplikáciu umiestnite reverznú proxy s HTTPS.

Na čo slúži APP_KEY vo Firefly III?

APP_KEY je šifrovací kľúč relácií. Má presne 32 znakov, bez špeciálnych znakov ako = alebo #, a zostáva tajný. Dokumentácia žiada zálohovať ho spolu so zväzkami: patrí k tomu, čo potrebujete na obnovu inštancie.

Prečo odkazy Firefly III za proxy zostávajú na http?

Docker FAQ uvádza, že v súbore .env chýba TRUSTED_PROXIES=*: bez neho Firefly III ignoruje hlavičku X-Forwarded-Proto od proxy, odkazy zostávajú na http a formuláre a grafy prestávajú fungovať. Uveďte tiež svoju verejnú adresu v APP_URL.

Ako nastaviť úlohu cron Firefly III s Dockerom?

Oficiálny súbor Compose obsahuje službu cron, ktorá volá aplikáciu každý deň o 3:00. Nastavte v .env STATIC_CRON_TOKEN s presne 32 znakmi a potom reštartujte celý balík služieb. Jedna úloha slúži všetkým používateľom inštancie.

Ako otvoriť Firefly III viacerým používateľom?

Prvý zaregistrovaný používateľ sa stáva vlastníkom a registrácie sa potom zatvoria. Vlastník ich znova otvorí v /settings, v konfiguračných voľbách Firefly III. Každý používateľ potom má finančnú administráciu oddelenú od ostatných.

Ako zálohovať Firefly III?

Zálohujte databázu exportom cez mariadb-dump alebo pg_dump, zväzok s prílohami a súbory .env a .db.env, šifrovane. Funkcia exportu v aplikácii nie je záloha. Obnovu otestujte hneď po prvej zálohe.

Pokrýva Managed VPS aj Firefly III?

Managed VPS pokrýva server: systém, zabezpečenie, dohľad a zálohy. Naše tímy vašu inštanciu aj proaktívne sledujú a odporúčajú vám užitočné opravy, ktoré zapracujete vy. Zásah v samotnej aplikácii sa fakturuje hodinovo alebo paušálne.

Zdroje a oficiálna dokumentácia

Kontaktujte nás