Hostati Firefly III na Managed VPS-u: vaše financije na vašem poslužitelju

Hostati Firefly III na Managed VPS-u znači čuvati svoje račune, budžete i troškove na stroju koji je vaš, a koji naši timovi održavaju ažurnim i nadziru danju i noću. Firefly III slobodan je softver otvorenog koda za upravljanje osobnim financijama, pod licencom AGPL. Ovaj vodič prati njegovu službenu dokumentaciju: instalaciju s Docker Composeom, APP_KEY, HTTPS, prvi račun, cron zadatak, bazu podataka, alat za uvoz podataka, e-poštu, sigurnosne kopije i ažuriranja.

Simon Vasconcelos Lee Autor: Objavljeno 10. studenoga 2026.Vrijeme čitanja: 13 minuta

Svi vodiči

Najvažnije

  1. Licenca AGPL-3.0-or-later omogućuje slobodno pokretanje Firefly III; ako ga izmijenite, izvorni kod svoje inačice nudite onima koji je koriste.
  2. Instalirajte ga iz tri službene datoteke: docker-compose.yml, .env i .db.env. Lozinku baze odaberite prije prvog pokretanja.
  3. APP_KEY ima točno 32 znaka, ostaje tajan i sigurnosno se kopira zajedno s podacima.
  4. Iza obrnutog proxyja s HTTPS-om postavite TRUSTED_PROXIES=* i svoju adresu u APP_URL, a zatim odmah izradite svoj račun: prvi korisnik koji se registrira postaje vlasnik, a registracije se nakon toga zatvaraju.
  5. Usluga cron iz službene datoteke svake noći pokreće automatske budžete i ponavljajuće transakcije. Prije svakog ažuriranja sigurnosno kopirajte bazu, volumen s privicima i .env.

Što radi Firefly III

Firefly III alat je za upravljanje osobnim financijama, namijenjen hostanju na vlastitom poslužitelju. Bilježi vaše troškove i prihode, s budžetima, kategorijama i oznakama, kako biste vidjeli kamo odlazi vaš novac. README ga opisuje kao potpuno samostalno hostan i izoliran: ne kontaktira nijedan vanjski poslužitelj dok mu to izričito ne zatražite.

Jedna instanca prima neograničen broj korisnika, a svaki ima financijsku administraciju potpuno odvojenu od ostalih. Dokumentacija opisuje model dijeljenja jedne administracije, koji je trenutačno u razvoju.

Što dopušta licenca AGPL

Firefly III objavljen je pod licencom GNU Affero General Public License, inačica 3 ili, prema vašem izboru, bilo koja kasnija inačica: to je SPDX identifikator AGPL-3.0-or-later u njegovoj datoteci composer.json. Tekst potvrđuje neograničeno dopuštenje za pokretanje neizmijenjenog programa. Stoga možete koristiti sliku koju objavljuje projekt za sebe, svoju obitelj ili svoju tvrtku, bez kupnje licence.

Članak 13. dodaje uvjet svojstven licenci AGPL: ako program izmijenite, vaša inačica mora svima koji je koriste na daljinu, preko mreže, omogućiti da besplatno dobiju njezin izvorni kod. Data Importer, alat za uvoz podataka, objavljen je pod istom licencom.

Instalacija s Docker Composeom

Dokumentacija Docker Compose naziva najjednostavnijim načinom instalacije Firefly III. Na poslužitelju s instaliranim Dockerom izradite mapu i u nju preuzmite tri službene datoteke, u izvornom obliku: razmaci u njima su važni, a dokumentacija traži da ih ne kopirate iz preglednika.

Terminal
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

Postavke koje treba promijeniti prije prvog pokretanja

Naredbom navedenom u datoteci .env generirajte dva niza od 32 znaka: jedan za ključ, drugi za lozinku baze.

Terminal
head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 32 && echo
.env, retci koje treba promijeniti
SITE_OWNER=you@example.com
APP_KEY=
DB_PASSWORD=
APP_URL=https://finances.example.com
.db.env
MYSQL_PASSWORD=

Lozinku baze odaberite prije prvog pokretanja. Baza je sprema u svoj volumen čim nastane: ako je kasnije promijenite, više se ne podudara, a Docker FAQ nudi samo jedan izlaz, uklanjanje kontejnera i volumena te ponovni početak.

Port objavljen lokalno

Službena datoteka objavljuje aplikaciju na portu 80 svih adresa poslužitelja. Da biste je posluživali preko HTTPS-a iza obrnutog proxyja na istom stroju, promijenite ovaj jedan redak u usluzi app:

docker-compose.yml, u usluzi app
ports:
  - 127.0.0.1:8080:8080
Terminal
docker compose -f docker-compose.yml up -d --pull=always
docker compose -f docker-compose.yml logs -f

Pri prvom pokretanju kontejner sam izrađuje i migrira bazu. Kada je instalacija gotova, Firefly III vam u zapisniku zahvaljuje na instalaciji: prijeđite na obrnuti proxy.

Dokumentacija ne navodi potrebnu memoriju; njezin Docker FAQ predlaže PHP_MEMORY_LIMIT=512M ili više ako PHP-u ponestane memorije. Veličina ovisi o broju korisnika, količini transakcija i alatu za uvoz podataka. Na Managed VPS-u opišite nam svoju upotrebu, a mi vam preporučujemo odgovarajuću veličinu.

HTTPS i obrnuti proxy

Firefly III aplikaciju poslužuje preko HTTP-a na portu 8080 unutar kontejnera, a HTTPS je na obrnutom proxyju ispred njega. Aplikacija čita zaglavlje X-Forwarded-Proto kako bi znala da je posjetitelj stigao preko HTTPS-a, pod uvjetom da vjeruje proxyju:

.env
TRUSTED_PROXIES=*

Docker FAQ o tome je jasan: bez TRUSTED_PROXIES=* poveznice ostaju na http, obrasci i grafikoni prestaju raditi, a sigurnosna zaglavlja CSP ne prolaze. Uz port objavljen na 127.0.0.1 aplikaciju dosiže samo proxy samog poslužitelja. Nakon svake izmjene datoteke .env ponovno izradite kontejner:

Terminal
docker compose up -d --force-recreate app

S Caddyjem

Caddy sam pribavlja certifikat Let’s Encrypt, a njegova direktiva reverse_proxy prema zadanim postavkama postavlja zaglavlja X-Forwarded-For, X-Forwarded-Proto i X-Forwarded-Host:

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

S Nginxom i Certbotom

Ovaj blok preuzima zaglavlja iz FAQ-a o instalaciji i međuspremnike koje on predlaže protiv pogrešaka 502 kada aplikacija vraća token u dugom zaglavlju. Sluša na portu 80 kako bi Certbot postavio HTTPS:

Blok za 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 zatim postavlja certifikat i brine se za njegovu obnovu:

Terminal
sudo certbot --nginx

Prvi račun i registracije

Prvi korisnik koji se registrira postaje vlasnik instance. Iz sigurnosnih razloga registracije se potom same zatvaraju: većina ljudi instalira Firefly III samo za sebe.

  1. Otvorite svoju HTTPS adresu čim proxy odgovori i izradite svoj račun: on dobiva ulogu vlasnika.
  2. U svojem profilu uključite dvofaktorsku autentifikaciju i sačuvajte osam pričuvnih kodova koje prikazuje.
  3. Da biste instancu otvorili drugim osobama, idite na /settings, otvorite konfiguracijske opcije Firefly III, odznačite opciju koja isključuje registracije i spremite.

Cron zadatak

Nekoliko funkcija radi samo uz planirani zadatak: automatski budžeti, ponavljajuće transakcije, upozorenja o pretplatama i ažurni tečajevi. Docker slika sama ne pokreće cron; službena datoteka za to dodaje malu uslugu cron, koja aplikaciju poziva svaki dan u 3 sata ujutro.

Autentificira se statičnim tokenom. Istom naredbom generirajte treći niz i stavite ga u .env:

.env
STATIC_CRON_TOKEN=

Taj token ima točno 32 znaka: kod inačice 6.7.9 ne prihvaća nijednu drugu duljinu. Evo usluge onako kako je deklarira službena datoteka; dvostruki $$ je namjeran i upućuje na retke TZ i STATIC_CRON_TOKEN datoteke .env:

docker-compose.yml, usluga 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

Jedan zadatak dovoljan je za sve korisnike instance. Da biste provjerili je li se izvršio, pročitajte zapisnik kontejnera: svaki zadatak izvještava u JSON-u, s job_fired i job_succeeded.

Terminal
docker logs firefly_iii_cron

Da biste ga pokrenuli ručno, Docker FAQ traži da to učinite kao korisnik www-data, a ne kao root: FAQ tu zamku povezuje s pogreškama dopuštenja na datotekama zapisnika:

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

MariaDB, PostgreSQL ili SQLite

Službena datoteka isporučuje MariaDB, sa slikom mariadb:lts. Firefly III podržava i PostgreSQL i SQLite, koje birate s DB_CONNECTION u .env:

BazaPostavljanjeSigurnosna kopija
MariaDB ili MySQLUsluga db iz službene datoteke; DB_CONNECTION=mysql, port 3306Izvoz s mariadb-dump ili volumen baze, uz zaustavljenu uslugu
PostgreSQLDB_CONNECTION=pgsql, port 5432, slika postgres i varijable POSTGRES_* u .db.envIzvoz s pg_dump ili volumen baze, uz zaustavljenu uslugu
SQLiteDB_CONNECTION=sqlite, bez usluge db, s volumenom montiranim na /var/www/html/storage/databaseVolumen baze, uz zaustavljenu uslugu
.env (PostgreSQL)
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432

Za PostgreSQL dokumentacija usluzi db dodjeljuje i sliku postgres, koja instalira PostgreSQL 18, te njezin volumen montira na /var/lib/postgresql. U .db.env varijable MYSQL_* postaju POSTGRES_USER, POSTGRES_DB i POSTGRES_PASSWORD.

Ovaj izbor napravite prije unosa prvih transakcija. FAQ navodi da prelazak s jedne baze na drugu ostaje moguć, iako ga sam Firefly III ne podržava, te da izvoz iz aplikacije ne prenosi sve podatke.

Data Importer, alat za uvoz podataka

Firefly III Data Importer zaseban je alat, s vlastitom instalacijom i vlastitim ažuriranjima; njegova inačica 2.3.5 izašla je 23. rujna 2026. Uvozi datoteke CSV i CAMT.053, a može i preuzimati transakcije iz vaših banaka preko vanjskih pružatelja podataka, od kojih svaki ima vlastite uvjete.

Službeni Docker repozitorij isporučuje ga u drugoj datoteci, docker-compose-importer.yml, koja zadržava iste usluge i dodaje importer. Njegove postavke idu u datoteku .importer.env, izrađenu prema datoteci .env.example alata za uvoz. Poslužujte ga pod vlastitim nazivom domene, s portom objavljenim lokalno i drugim blokom proxyja: FAQ traži da ga ne postavljate u poddirektorij.

.importer.env, retci koje treba promijeniti
FIREFLY_III_URL=http://app:8080
VANITY_URL=https://finances.example.com
TRUSTED_PROXIES=*

E-pošta: SMTP konfiguracija

Prema zadanim postavkama MAIL_MAILER=log poruke upisuje u zapisnike umjesto da ih šalje. Da biste primali obavijesti, poput upozorenja o pretplatama, postavite slanje u .env. Dokumentacija traži da uvijek promijenite MAIL_FROM i SITE_OWNER, inače nijedna poruka e-pošte neće otići.

Na Simafri VPS-u slanje ide preko autentificiranog SMTP releja, na portu 587: adresa računa e-pošte koji već imate ili 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

Sigurnosne kopije

Firefly III nema ugrađenu rutinu za sigurnosno kopiranje: dokumentacija preporučuje alate samog sustava i ističe da funkcija izvoza u aplikaciji nije sigurnosna kopija. Uz Docker, evo što treba sačuvati:

ElementŠto čuvaZa sigurnosno kopiranje
Baza (firefly_iii_db)Račune, transakcije, budžete, pravila i korisnikeObavezno
Privici (firefly_iii_upload)Datoteke priložene transakcijamaObavezno
.envPostavke, a prije svega APP_KEYObavezno, šifrirano
.db.envPristupne podatke bazeObavezno, šifrirano
docker-compose.yml i .importer.envVašu inačicu službenih datotekaPreporučeno

Baza, dok usluga radi

Uz MariaDB, mariadb-dump izvozi bazu bez zaustavljanja usluge; njegova opcija --single-transaction daje dosljednu kopiju tablica InnoDB bez njihova zaključavanja. Pokrenuta iz mape s datotekom Compose, naredba pristupne podatke čita iz okruženja kontejnera:

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

Uz PostgreSQL ista zamisao ide preko pg_dump:

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

Taj izvoz planirajte na poslužitelju barem jednom dnevno i povremeno prorijedite datoteke, koje se nakupljaju.

Volumeni, uz zaustavljenu uslugu

Dokumentacija svaki volumen arhivira pomoću privremenog kontejnera. Docker Compose nazivima volumena dodaje prefiks s nazivom projekta, a to je prema zadanim postavkama naziv mape: provjerite točne nazive prije pokretanja arhiviranja.

Terminal, u mapi 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

Pogrešno napisan naziv volumena ne izaziva pogrešku: Docker pod tim nazivom izrađuje prazan volumen i arhivira ga, čime se prepisuje prethodna sigurnosna kopija. Dokumentacija traži da prije svakog arhiviranja provjerite postoji li volumen.

Čuvajte kopiju datoteke .env i ovih arhiva izvan poslužitelja, šifrirano, jer sadrži ključ i pristupne podatke baze. Postavljene na disk poslužitelja, te datoteke ulaze i u njegove noćne sigurnosne kopije.

Vraćanje

Dokumentacija volumen vraća obrnutom naredbom, uz zaustavljenu uslugu; volumen s privicima vraća se na isti način:

Terminal
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

SQL izvoz ponovno se učitava u bazu dok radi:

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

Vratite i datoteku .env s njezinim APP_KEY, a zatim ponovno pokrenite i otvorite svoje račune. Dokumentacija to ponavlja nakon svake metode: prvo što treba učiniti sa sigurnosnom kopijom jest vratiti je, kako biste provjerili da radi.

Ažuriranja i migracije

Firefly III sam se nadograđuje, čak i s inačica starih poput 4.7, te migrira svoju bazu pri pokretanju kontejnera. Dokumentacija upozorava da neke nadogradnje uklanjaju ili čiste podatke i traži sigurnosnu kopiju baze i volumena prije svake od njih, osobito pri prijelazu između glavnih inačica. Iz mape s datotekom Compose:

Terminal
docker compose stop
docker compose pull
docker compose -f docker-compose.yml up -d --remove-orphans

Alat za uvoz ažurira se na isti način, prema njegovoj dokumentaciji s docker compose rm -f između zaustavljanja i preuzimanja slika.

Tko što radi na Managed VPS-u

Hostanje na vlastitom poslužitelju traži da uz aplikaciju održavate i poslužitelj. Na Managed VPS-u naši timovi preuzimaju poslužitelj i proaktivno prate vašu instancu; Firefly III ostaje vaš softver, sa svojim postavkama i vašim financijskim podacima.

TemaNaši timoviVi
PoslužiteljAžuriranja sustava i sigurnosti, uključujući intervencije na poslužiteljuTrenutak koji odgovara vašem poslovanju
NadzorPoslužitelj pod nadzorom 24 sata dnevno, 7 dana u tjednu, s intervencijom bez čekanja vašeg pozivaČitanje zapisnika vaše instance
Firefly IIIProaktivno praćenje: uočene pogreške, usporavanja, cron zadatak i prostor na disku, preporučen ispravakNjegova instalacija, ažuriranja i postavke, koje primjenjujete vi ili vaš AI asistent
Računi i podaciPoslužitelj koji ih nosi, nadziran i sigurnosno kopiranKorisnici, dvofaktorska autentifikacija, alat za uvoz podataka i njegovi pružatelji podataka
Sigurnosne kopijeSvake noći, šifrirane i čuvane izvan stroja; vraćanje uključenoIzvozi specifični za Firefly III i zahtjev za vraćanje, kada vam zatreba
MigracijaVaš trenutačni poslužitelj migriran, besplatnoTrenutak prelaska

Ako želite da naši timovi interveniraju u samoj aplikaciji, ta se usluga naplaćuje po satu ili paušalno, uz procjenu koja vam se priopćuje prije intervencije.

Firefly III, na poslužitelju koji vodimo za vas

Uz Simafri Managed VPS naši timovi održavaju poslužitelj vaše instance Firefly III ažurnim, nadziru ga danju i noću i interveniraju bez čekanja vašeg poziva; uz to proaktivno prate vašu instancu i preporučuju vam korisne ispravke, koje primjenjujete vi ili vaš AI asistent. Sigurnosne kopije svake se noći šifriraju i čuvaju izvan stroja, njihovo vraćanje je uključeno, a migracija vašeg trenutačnog poslužitelja je besplatna.

Otkrijte Managed VPS

Česta pitanja

Je li Firefly III besplatan?

Da. Firefly III je pod licencom AGPL-3.0-or-later: možete ga pokretati za sebe, svoju obitelj ili svoju tvrtku bez kupnje licence. Ako ga izmijenite, vaša inačica mora ponuditi izvorni kod onima koji je koriste preko mreže. Ostaje trošak poslužitelja na kojem radi.

Kako instalirati Firefly III s Docker Composeom?

Preuzmite tri službene datoteke, docker-compose.yml, .env i .db.env. Prije prvog pokretanja postavite APP_KEY od 32 znaka i istu lozinku u DB_PASSWORD i MYSQL_PASSWORD, a zatim pokrenite docker compose up -d. Nakon toga ispred postavite obrnuti proxy s HTTPS-om.

Čemu služi APP_KEY u Firefly III?

APP_KEY je ključ za šifriranje sesija. Ima točno 32 znaka, bez posebnih znakova poput = ili #, i ostaje tajan. Dokumentacija traži da ga sigurnosno kopirate zajedno s volumenima: dio je onoga što vam treba za vraćanje instance.

Zašto poveznice Firefly III iza proxyja ostaju na http?

Docker FAQ navodi da u datoteci .env nedostaje TRUSTED_PROXIES=*: bez toga Firefly III zanemaruje zaglavlje X-Forwarded-Proto proxyja, poveznice ostaju na http, a obrasci i grafikoni prestaju raditi. U APP_URL upišite i svoju javnu adresu.

Kako postaviti cron zadatak Firefly III s Dockerom?

Službena datoteka Compose sadrži uslugu cron koja aplikaciju poziva svaki dan u 3 sata ujutro. U .env postavite STATIC_CRON_TOKEN od točno 32 znaka, a zatim ponovno pokrenite stog. Jedan zadatak služi svim korisnicima instance.

Kako otvoriti Firefly III većem broju korisnika?

Prvi korisnik koji se registrira postaje vlasnik, a registracije se nakon toga zatvaraju. Vlasnik ih ponovno otvara u /settings, među konfiguracijskim opcijama Firefly III. Svaki korisnik tada ima financijsku administraciju odvojenu od ostalih.

Kako sigurnosno kopirati Firefly III?

Sigurnosno kopirajte bazu, izvozom s mariadb-dump ili pg_dump, volumen s privicima te datoteke .env i .db.env, šifrirano. Funkcija izvoza u aplikaciji nije sigurnosna kopija. Testirajte vraćanje odmah nakon prve sigurnosne kopije.

Pokriva li Managed VPS Firefly III?

Managed VPS pokriva poslužitelj: sustav, sigurnost, nadzor i sigurnosne kopije. Naši timovi proaktivno prate i vašu instancu te vam preporučuju korisne ispravke, koje primjenjujete vi. Intervencija u aplikaciji naplaćuje se po satu ili paušalno.

Izvori i službena dokumentacija

Kontaktirajte nas