Mitināt Firefly III Managed VPS serverī: jūsu finanses jūsu serverī

Mitināt Firefly III Managed VPS serverī nozīmē glabāt savus kontus, budžetus un izdevumus uz savas mašīnas, ko mūsu komandas uztur atjauninātu un uzrauga dienu un nakti. Firefly III ir bezmaksas atvērtā koda personīgo finanšu pārvaldnieks ar AGPL licenci. Šis ceļvedis seko tā oficiālajai dokumentācijai: uzstādīšana ar Docker Compose, APP_KEY, HTTPS, pirmais konts, cron uzdevums, datubāze, datu importētājs, e-pasti, rezerves kopijas un atjauninājumi.

Simon Vasconcelos Lee Autors: Publicēts 2026. gada 10. novembrīLasīšanas laiks: 13 minūtes

Visi ceļveži

Galvenais

  1. AGPL-3.0-or-later licence ļauj Firefly III brīvi darbināt; ja to mainīsiet, savas versijas pirmkodu piedāvājat tiem, kas to izmanto.
  2. Uzstādiet to no trim oficiālajiem failiem: docker-compose.yml, .env un .db.env. Datubāzes paroli izvēlieties pirms pirmās palaišanas.
  3. APP_KEY ir tieši 32 rakstzīmes gara, paliek slepena, un tās rezerves kopiju veido kopā ar datiem.
  4. Aiz HTTPS reversā starpniekservera iestatiet TRUSTED_PROXIES=* un savu adresi mainīgajā APP_URL, pēc tam uzreiz izveidojiet savu kontu: pirmais lietotājs, kas reģistrējas, kļūst par īpašnieku, un pēc tam reģistrācija tiek slēgta.
  5. Oficiālā faila pakalpojums cron katru nakti izpilda automātiskos budžetus un periodiskos darījumus. Pirms katra atjauninājuma veidojiet datubāzes, augšupielāžu sējuma un .env rezerves kopiju.

Ko dara Firefly III

Firefly III ir personīgo finanšu pārvaldnieks, kas paredzēts mitināšanai savā serverī. Tas uzskaita jūsu izdevumus un ienākumus ar budžetiem, kategorijām un birkām, lai jūs redzētu, kur paliek nauda. Tā README raksturo to kā pilnībā pašmitinātu un izolētu: tas nesazinās ne ar vienu ārēju serveri, kamēr jūs to skaidri nepalūdzat.

Viena instance var uzņemt tik daudz lietotāju, cik vēlaties, un katram ir finanšu pārvaldība, kas pilnībā nošķirta no pārējām. Dokumentācija apraksta arī modeli vienas pārvaldības koplietošanai, kas pašlaik tiek izstrādāts.

Ko atļauj AGPL licence

Firefly III tiek publicēts ar GNU Affero General Public License, 3. versiju vai, pēc jūsu izvēles, jebkuru vēlāku versiju: tas ir SPDX identifikators AGPL-3.0-or-later tā failā composer.json. Teksts apliecina neierobežotu atļauju darbināt nemainītu programmu. Tāpēc jūs varat sev, savai ģimenei vai savam uzņēmumam izmantot projekta publicēto attēlu, nepērkot nekādu licenci.

13. pants pievieno AGPL raksturīgu nosacījumu: ja jūs mainīsiet programmu, jūsu versijai jādod ikvienam, kas to izmanto attālināti, caur tīklu, iespēja bez maksas iegūt tās pirmkodu. Data Importer ir ar to pašu licenci.

Uzstādīšana ar Docker Compose

Dokumentācija sauc Docker Compose par vienkāršāko veidu, kā uzstādīt Firefly III. Serverī, kur uzstādīts Docker, izveidojiet mapi un lejupielādējiet tajā trīs oficiālos failus neapstrādātā veidā: atstarpēm tajos ir nozīme, un dokumentācija lūdz tos nekopēt no pārlūkprogrammas.

Terminālis
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

Iestatījumi, kas jāmaina pirms pirmās palaišanas

Ar komandu, kas norādīta failā .env, ģenerējiet divas 32 rakstzīmju virknes: vienu atslēgai, otru datubāzes parolei.

Terminālis
head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 32 && echo
.env, maināmās rindas
SITE_OWNER=you@example.com
APP_KEY=
DB_PASSWORD=
APP_URL=https://finances.example.com
.db.env
MYSQL_PASSWORD=

Datubāzes paroli izvēlieties pirms pirmās palaišanas. Datubāze to saglabā savā sējumā jau izveides brīdī: ja to vēlāk nomainīsiet, tā vairs nesakritīs, un Docker FAQ piedāvā tikai vienu izeju: dzēst konteinerus un sējumus un sākt no jauna.

Lokāli publicēts ports

Oficiālais fails publicē lietojumprogrammu uz porta 80 visās servera adresēs. Lai to pasniegtu ar HTTPS aiz reversā starpniekservera tajā pašā mašīnā, pakalpojumā app nomainiet tikai šo rindu:

docker-compose.yml, pakalpojumā app
ports:
  - 127.0.0.1:8080:8080
Terminālis
docker compose -f docker-compose.yml up -d --pull=always
docker compose -f docker-compose.yml logs -f

Pirmajā palaišanā konteiners pats izveido un migrē datubāzi. Kad uzstādīšana ir pabeigta, Firefly III žurnālā pateicas jums par uzstādīšanu: pārejiet pie reversā starpniekservera.

Dokumentācija nenosauc atmiņas apjomu; tās Docker FAQ iesaka PHP_MEMORY_LIMIT=512M vai vairāk, ja PHP pietrūkst atmiņas. Izmērs ir atkarīgs no lietotāju skaita, darījumu apjoma un datu importētāja. Ar Managed VPS aprakstiet mums savu lietojumu, un mēs jums iesakām piemērotu izmēru.

HTTPS un reversais starpniekserveris

Firefly III pasniedz lietojumprogrammu ar HTTP uz porta 8080 konteinerā, bet HTTPS nodrošina reversais starpniekserveris, kas atrodas pirms tā. Lietojumprogramma nolasa galveni X-Forwarded-Proto, lai zinātu, ka apmeklētājs ieradās ar HTTPS, ja vien tā uzticas starpniekserverim:

.env
TRUSTED_PROXIES=*

Docker FAQ šajā jautājumā ir nepārprotams: bez TRUSTED_PROXIES=* saites paliek uz http, veidlapas un diagrammas pārstāj darboties, un CSP drošības galvenes neizdodas. Ja ports ir publicēts uz 127.0.0.1, lietojumprogrammu sasniedz tikai paša servera starpniekserveris. Pēc katras faila .env izmaiņas izveidojiet konteineru no jauna:

Terminālis
docker compose up -d --force-recreate app

Ar Caddy

Caddy pats iegūst Let’s Encrypt sertifikātu, un tā direktīva reverse_proxy pēc noklusējuma iestata galvenes X-Forwarded-For, X-Forwarded-Proto un X-Forwarded-Host:

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

Ar Nginx un Certbot

Šis bloks pārņem galvenes no uzstādīšanas FAQ un tā ieteiktos buferus pret 502 kļūdām, kad lietojumprogramma atdod marķieri garā galvenē. Tas klausās uz porta 80, lai Certbot varētu ieslēgt HTTPS:

Nginx bloks
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;
    }
}

Pēc tam Certbot uzstāda sertifikātu un parūpējas par tā atjaunošanu:

Terminālis
sudo certbot --nginx

Pirmais konts un reģistrācijas

Pirmais lietotājs, kas reģistrējas, kļūst par instances īpašnieku. Drošības nolūkos reģistrācija pēc tam tiek slēgta automātiski: vairums cilvēku uzstāda Firefly III tikai sev.

  1. Atveriet savu HTTPS adresi, tiklīdz starpniekserveris atbild, un izveidojiet savu kontu: tas saņem īpašnieka lomu.
  2. Savā profilā ieslēdziet divfaktoru autentifikāciju un saglabājiet astoņus rezerves kodus, ko tā parāda.
  3. Lai atvērtu instanci citiem cilvēkiem, dodieties uz /settings, atveriet Firefly III konfigurācijas opcijas, noņemiet atzīmi no opcijas, kas atslēdz reģistrāciju, un saglabājiet.

Cron uzdevums

Vairākas funkcijas darbojas tikai ar ieplānotu uzdevumu: automātiskie budžeti, periodiskie darījumi, abonementu brīdinājumi un aktuāli valūtas kursi. Docker attēls pats cron nepalaiž; oficiālais fails šim nolūkam pievieno nelielu pakalpojumu cron, kas katru dienu plkst. 3.00 izsauc lietojumprogrammu.

Tas autentificējas ar statisku marķieri. Ar to pašu komandu ģenerējiet trešo virkni un ievietojiet to failā .env:

.env
STATIC_CRON_TOKEN=

Šis marķieris ir tieši 32 rakstzīmes garš: versijas 6.7.9 kods citu garumu nepieņem. Lūk, pakalpojums tā, kā to deklarē oficiālais fails; dubultais $$ ir apzināts un atsaucas uz faila .env rindām TZ un STATIC_CRON_TOKEN:

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

Ar vienu uzdevumu pietiek visiem instances lietotājiem. Lai pārbaudītu, vai tas ir izpildīts, izlasiet konteinera žurnālu: katrs uzdevums atskaitās JSON formātā ar job_fired un job_succeeded.

Terminālis
docker logs firefly_iii_cron

Lai to palaistu manuāli, Docker FAQ lūdz izmantot lietotāju www-data, nevis root: FAQ saista šo slazdu ar atļauju kļūdām žurnālfailos:

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

MariaDB, PostgreSQL vai SQLite

Oficiālais fails ietver MariaDB ar attēlu mariadb:lts. Firefly III atbalsta arī PostgreSQL un SQLite, ko izvēlas ar DB_CONNECTION failā .env:

DatubāzeIeviešanaRezerves kopija
MariaDB vai MySQLOficiālā faila pakalpojums db; DB_CONNECTION=mysql, ports 3306Eksports ar mariadb-dump vai datubāzes sējums, pakalpojumam apturētam
PostgreSQLDB_CONNECTION=pgsql, ports 5432, attēls postgres un mainīgie POSTGRES_* failā .db.envEksports ar pg_dump vai datubāzes sējums, pakalpojumam apturētam
SQLiteDB_CONNECTION=sqlite, bez pakalpojuma db, ar sējumu, kas montēts uz /var/www/html/storage/databaseDatubāzes sējums, pakalpojumam apturētam
.env (PostgreSQL)
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432

PostgreSQL gadījumā dokumentācija pakalpojumam db norāda arī attēlu postgres, kas uzstāda PostgreSQL 18, un montē tā sējumu uz /var/lib/postgresql. Failā .db.env mainīgie MYSQL_* kļūst par POSTGRES_USER, POSTGRES_DB un POSTGRES_PASSWORD.

Izdariet šo izvēli, pirms ievadāt pirmos darījumus. FAQ norāda, ka pāreja no vienas datubāzes uz citu ir iespējama, lai gan pats Firefly III to neatbalsta, un ka lietojumprogrammas eksports nepārnes visus datus.

Data Importer

Firefly III Data Importer ir atsevišķs rīks ar savu uzstādīšanu un saviem atjauninājumiem; tā versija 2.3.5 iznāca 2026. gada 23. septembrī. Tas importē CSV un CAMT.053 failus un var arī iegūt darījumus no jūsu bankām caur trešo pušu datu nodrošinātājiem, katram ar saviem noteikumiem.

Oficiālais Docker repozitorijs to piedāvā otrā failā, docker-compose-importer.yml, kas saglabā tos pašus pakalpojumus un pievieno importer. Tā iestatījumi tiek ievietoti failā .importer.env, kas ņemts no importētāja .env.example. Pasniedziet to ar savu domēna vārdu, ar lokāli publicētu portu un otru starpniekservera bloku: FAQ lūdz to nenovietot apakšmapē.

.importer.env, maināmās rindas
FIREFLY_III_URL=http://app:8080
VANITY_URL=https://finances.example.com
TRUSTED_PROXIES=*

E-pasti: SMTP konfigurācija

Pēc noklusējuma MAIL_MAILER=log ieraksta ziņojumus žurnālos, nevis tos nosūta. Lai saņemtu paziņojumus, piemēram, abonementu brīdinājumus, konfigurējiet sūtīšanu failā .env. Dokumentācija lūdz vienmēr nomainīt MAIL_FROM un SITE_OWNER, citādi neviens e-pasts netiks nosūtīts.

Simafri VPS serverī sūtīšana notiek caur autentificētu SMTP releju, izmantojot portu 587: ar jau esoša pasta konta adresi vai 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

Rezerves kopijas

Firefly III nav iebūvēta rezerves kopiju procedūra: dokumentācija iesaka pašas sistēmas rīkus un norāda, ka lietojumprogrammas eksporta funkcija nav rezerves kopija. Ar Docker jāsaglabā tas, kas uzskaitīts tabulā:

ElementsKo tas glabāRezerves kopija
Datubāze (firefly_iii_db)Kontus, darījumus, budžetus, noteikumus un lietotājusObligāti
Pielikumi (firefly_iii_upload)Darījumiem pievienotos failusObligāti
.envIestatījumus un galvenokārt APP_KEYObligāti, šifrētu
.db.envDatubāzes piekļuves datusObligāti, šifrētu
docker-compose.yml un .importer.envJūsu oficiālo failu versijuIeteicams

Datubāze, pakalpojumam darbojoties

Ar MariaDB mariadb-dump eksportē datubāzi, neapturot pakalpojumu; tā opcija --single-transaction dod saskaņotu InnoDB tabulu kopiju, tās nebloķējot. Palaista no Compose faila mapes, komanda nolasa piekļuves datus no konteinera vides:

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

Ar PostgreSQL tā pati ideja tiek īstenota ar pg_dump:

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

Ieplānojiet šo eksportu serverī vismaz reizi dienā un izkārtojiet failus, kas uzkrājas.

Sējumi, pakalpojumam apturētam

Dokumentācija arhivē katru sējumu ar vienreizēju konteineru. Docker Compose sējumu nosaukumiem pievieno projekta nosaukuma prefiksu, kas pēc noklusējuma ir mapes nosaukums: pirms arhivēšanas pārbaudiet precīzos nosaukumus.

Terminālis, mapē 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

Kļūdaini uzrakstīts sējuma nosaukums neizraisa kļūdu: Docker ar šo nosaukumu izveido tukšu sējumu un arhivē to, tādējādi pārrakstot iepriekšējo rezerves kopiju. Dokumentācija lūdz pirms katras arhivēšanas pārbaudīt, vai sējums pastāv.

Glabājiet faila .env un šo arhīvu kopiju ārpus servera, šifrētu, jo tajā ir atslēga un datubāzes piekļuves dati. Novietoti servera diskā, šie faili nonāk arī tā nakts rezerves kopijās.

Atjaunošana

Dokumentācija atjauno sējumu ar pretēju komandu, pakalpojumam apturētam; pielikumu sējumu atjauno tāpat:

Terminālis
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 eksportu ielādē atpakaļ strādājošā datubāzē:

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

Atjaunojiet arī .env ar tā APP_KEY, pēc tam palaidiet no jauna un atveriet savus kontus. Dokumentācija to atkārto pēc katras metodes: pirmais, kas jādara ar rezerves kopiju, ir to atjaunot, lai pārbaudītu, vai tā darbojas.

Atjauninājumi un migrācijas

Firefly III atjauninās pats, pat no tik vecām versijām kā 4.7, un konteinera palaišanas brīdī migrē savu datubāzi. Dokumentācija brīdina, ka daži atjauninājumi dzēš vai sakārto datus, un pirms katra no tiem lūdz veidot datubāzes un sējumu rezerves kopiju, īpaši starp galvenajām versijām. No Compose faila mapes:

Terminālis
docker compose stop
docker compose pull
docker compose -f docker-compose.yml up -d --remove-orphans

Importētājs tiek atjaunināts tāpat, saskaņā ar tā dokumentāciju starp apturēšanu un attēlu lejupielādi izpildot docker compose rm -f.

Kurš ko dara Managed VPS serverī

Mitināšana savā serverī prasa uzturēt serveri papildus lietojumprogrammai. Ar Managed VPS mūsu komandas uzņemas serveri un proaktīvi seko jūsu instancei; Firefly III paliek jūsu programmatūra ar saviem iestatījumiem un jūsu finanšu datiem.

TematsMūsu komandasJūs
ServerisSistēmas un drošības atjauninājumi, ieskaitot iejaukšanos serverīBrīdis, kas der jūsu darbam
UzraudzībaServeris tiek uzraudzīts 24/7, iejaucoties, negaidot jūsu zvanuJūsu instances žurnālu lasīšana
Firefly IIIProaktīva sekošana: kļūdas, palēninājumi, cron uzdevums un diska vieta tiek pamanīti, labojums tiek ieteiktsTā uzstādīšana, atjauninājumi un iestatījumi, ko ieviešat jūs vai jūsu MI asistents
Konti un datiServeris, kas tos nes, uzraudzīts un ar rezerves kopijāmLietotāji, divfaktoru autentifikācija, datu importētājs un tā datu nodrošinātāji
Rezerves kopijasKatru nakti, šifrētas un glabātas ārpus mašīnas; atjaunošana iekļautaFirefly III raksturīgie eksporti un atjaunošanas pieprasījums, kad tas vajadzīgs
MigrācijaJūsu pašreizējā servera migrācija, bez maksasPārslēgšanās brīdis

Ja vēlaties, lai mūsu komandas iejaucas pašā lietojumprogrammā, šis pakalpojums tiek rēķināts par stundu vai par fiksētu summu, ar novērtējumu, kas paziņots pirms iejaukšanās.

Firefly III serverī, ko uzturam jūsu vietā

Ar Simafri Managed VPS mūsu komandas uztur jūsu Firefly III instances serveri atjauninātu, uzrauga to dienu un nakti un iejaucas, negaidot jūsu zvanu; tās arī proaktīvi seko jūsu instancei un iesaka noderīgus labojumus, ko ieviešat jūs paši vai jūsu MI asistents. Rezerves kopijas katru nakti tiek šifrētas un glabātas ārpus mašīnas, to atjaunošana ir iekļauta, un jūsu pašreizējā servera migrācija ir bez maksas.

Skatīt Managed VPS

Biežāk uzdotie jautājumi

Vai Firefly III ir bez maksas?

Jā. Firefly III ir ar AGPL-3.0-or-later licenci: varat to darbināt sev, savai ģimenei vai savam uzņēmumam, nepērkot nekādu licenci. Ja to mainīsiet, jūsu versijai jāpiedāvā pirmkods tiem, kas to izmanto caur tīklu. Paliek tikai servera izmaksas, uz kura tas darbojas.

Kā uzstādīt Firefly III ar Docker Compose?

Lejupielādējiet trīs oficiālos failus: docker-compose.yml, .env un .db.env. Pirms pirmās palaišanas iestatiet 32 rakstzīmju APP_KEY un vienu un to pašu paroli mainīgajos DB_PASSWORD un MYSQL_PASSWORD, pēc tam palaidiet docker compose up -d. Tad pirms tā novietojiet HTTPS reverso starpniekserveri.

Kam Firefly III kalpo APP_KEY?

APP_KEY ir sesiju šifrēšanas atslēga. Tā ir tieši 32 rakstzīmes gara, bez speciālajām rakstzīmēm, piemēram, = vai #, un paliek slepena. Dokumentācija lūdz veidot tās rezerves kopiju kopā ar sējumiem: tā ir daļa no tā, kas vajadzīgs instances atjaunošanai.

Kāpēc Firefly III saites aiz starpniekservera paliek uz http?

Docker FAQ norāda, ka failā .env trūkst TRUSTED_PROXIES=*: bez tā Firefly III ignorē starpniekservera galveni X-Forwarded-Proto, saites paliek uz http, un veidlapas un diagrammas pārstāj darboties. Iestatiet arī savu publisko adresi mainīgajā APP_URL.

Kā konfigurēt Firefly III cron uzdevumu ar Docker?

Oficiālajā Compose failā ir pakalpojums cron, kas katru dienu plkst. 3.00 izsauc lietojumprogrammu. Failā .env iestatiet STATIC_CRON_TOKEN, kas ir tieši 32 rakstzīmes garš, pēc tam restartējiet steku. Viens uzdevums apkalpo visus instances lietotājus.

Kā atvērt Firefly III vairākiem lietotājiem?

Pirmais lietotājs, kas reģistrējas, kļūst par īpašnieku, un pēc tam reģistrācija tiek slēgta. Īpašnieks to atkal atver sadaļā /settings, Firefly III konfigurācijas opcijās. Katram lietotājam tad ir sava finanšu pārvaldība, nošķirta no pārējām.

Kā veidot Firefly III rezerves kopiju?

Saglabājiet datubāzi ar mariadb-dump vai pg_dump eksportu, pielikumu sējumu un failus .env un .db.env, šifrētus. Lietojumprogrammas eksporta funkcija nav rezerves kopija. Pārbaudiet atjaunošanu uzreiz pēc pirmās rezerves kopijas.

Vai Managed VPS aptver Firefly III?

Managed VPS aptver serveri: sistēmu, drošību, uzraudzību un rezerves kopijas. Mūsu komandas proaktīvi seko arī jūsu instancei un iesaka noderīgus labojumus, ko ieviešat jūs. Iejaukšanās lietojumprogrammā tiek rēķināta par stundu vai par fiksētu summu.

Avoti un oficiālā dokumentācija

Sazinieties ar mums