Saját Blossom-szerver
Utolsó frissítés: 2026. október 27.
A Herkos Drive minden fájlt titkosított blokkokra vág, és ezeket több Blossom-szerveren tárolja: három példányban, legalább kétféle szerveren, és egyet egy saját szerveren. A nyilvános szerverek ingyen tárolják a blokkokat, de semmit sem ígérnek: törölhetik őket, megtelhetnek vagy bezárhatnak.
Egy saját Blossom-szerver addig őrzi az Ön példányát, ameddig Ön dönt, és csak az Ön Drive-jából fogad blokkokat. Ez az oldal elmagyarázza, hogyan állíthat be egyet három lépésben, valamint egy éjszakai biztonsági mentést. Jól kiegészíti a saját postafiók-relét, és ha már van szervere, körülbelül tizenöt percet vesz igénybe.
Melyik szervert használja?
blossom-server, hzrd149 munkája, 6.4.1-es verzió (2026. október 6., MIT-licenc). 2026. október 27-én futtattuk az alábbi konfigurációval és a Drive saját feltöltőkódjával, és azt ellenőriztük, amire a Drive-nak szüksége van, nem azt, amit a szerver hirdet:
| Amit a Drive csinál | Eredmény |
|---|---|
8 MiB-os titkosított blokkokat tölt fel (application/octet-stream) |
Elfogadva |
| Feltöltés előtt rákérdez (BUD-06) | Válaszol, és minden más kulcsot elutasít |
| Megkéri a szerverét, hogy másoljon át egy blokkot egy nyilvánosról (BUD-04) | Átmásolva |
| Azonosítás nélkül olvas egy blokkot | Kiszolgálva, bájtról bájtra |
| Töröl egy blokkot azzal a kulccsal, amely feltöltötte | Törölve: újabb lekérésre 404 |
| Feltöltés bármely más kulccsal | Elutasítva (401) |
Amire szüksége lesz
- Egy gép, amely mindig be van kapcsolva, és elérhető az internetről: egy kis VPS vagy egy otthoni számítógép. Annyi lemezterület kell rajta, amennyit a Drive-ja tárol, és még némi hely a növekedésre.
- Egy rá mutató domain vagy aldomain, például
blossom.example.com. - Docker és egy HTTPS-t biztosító fordított proxy (reverse proxy). A példák a Caddy programot használják, amely magától beszerzi a tanúsítványt.
- A Drive-ja kötetkulcsa. A Herkos Drive a Beállítások → Szerverek → Saját szerver menüpontban mutatja meg, 64 betűből és számjegyből álló formában. Ez nem a profilja kulcsa: a Drive soha nem a profilkulcsával tölt fel, így egy szerver, amely csak az Ön npubját fogadja el, elutasítaná a Drive-ot.
1. lépés: a szerver elindítása
Hozzon létre neki egy mappát, például /root/blossom, és mentse bele ezt a két
fájlt. Az első a docker-compose.yml:
services:
blossom:
image: ghcr.io/hzrd149/blossom-server:6.4.1
environment:
BLOSSOM_REQUIRE_CONFIG: "1"
ports:
- "127.0.0.1:3000:3000"
volumes:
- data:/app/data
- ./config.yml:/app/config.yml:ro
restart: unless-stopped
volumes:
data: {}
A második a config.yml. A publicDomain mezőbe írja a domainjét, a
kötetkulcsát pedig oda, ahol YOUR-VOLUME-KEY áll:
port: 3000
host: 0.0.0.0
publicDomain: blossom.example.com
storage:
backend: local
local:
dir: ./data/blobs
rules:
- type: "*"
expiration: 100 years
pubkeys:
- "YOUR-VOLUME-KEY"
upload:
requireAuth: true
maxSize: 104857600
requirePubkeyInRule: true
mirror:
enabled: true
requireAuth: true
delete:
requireAuth: true
list:
enabled: false
media:
enabled: false
report:
enabled: false
landing:
enabled: false
Mit jelent ez: csak az Ön kötetkulcsa tölthet fel vagy kérhet másolatot
(requirePubkeyInRule), és egy blokk addig marad meg, amíg a Drive ki nem törli.
A szerver minden szabályban lejárati időt követel; a 100 years olvasás nélkül
a gyakorlatban soha, és a Drive egyébként is rendszeresen olvassa a blokkjait.
A port csak magán a gépen figyel (127.0.0.1): minden a proxyn keresztül megy.
Indítsa el:
cd /root/blossom
docker compose up -d
2. lépés: HTTPS a szerver elé
A Caddy esetében a teljes konfiguráció (/etc/caddy/Caddyfile) ennyi:
blossom.example.com {
reverse_proxy 127.0.0.1:3000
}
Ha ugyanaz a Caddy már a reléjét is kiszolgálja, ezt a blokkot az alá írja.
Töltse újra a Caddyt (sudo systemctl reload caddy). Ha most böngészőben
megnyitja a https://blossom.example.com címet, válaszolnia kell, mégpedig
404-gyel: kezdőlap szándékosan nincs.
3. lépés: a Herkos Drive beállítása
- A Herkos Drive-ban nyissa meg a Beállítások → Szerverek menüpontot, adja
hozzá a
https://blossom.example.comcímet, és jelölje meg sajátként. - A Drive minden feltöltés előtt megkérdezi. Ettől kezdve minden új fájlról kerül oda egy példány, a már meglévő fájlok pedig akkor kapják meg a sajátjukat, amikor a Drive legközelebb ellenőrzi a másolatokat.
- A többi szervert hagyja a listában. Az Öné a három példány egyike, soha nem az egyetlen: ha leáll, a fájljai továbbra is megvannak a többin, és a Drive egy hét csend után szól Önnek.
4. lépés: biztonsági mentés minden éjjel
Ha a szervere tönkremegy, a Drive észreveszi, és az érintett fájlokról a listája többi szerverén készít példányt. A saját szerverén lévő példány azonban az egyetlen, amely senki mástól nem függ, és egy éjszakai mentéssel újraépítheti anélkül, hogy mindent újra át kellene másolnia az interneten.
A szerver mindent a blossom_data Docker-köteten belül tárol (a név annak a
mappának a nevével kezdődik, amelyben a fájlok vannak; ellenőrizze a
docker volume ls paranccsal): a blokkokat, mindegyiket külön fájlban, és egy
kis SQLite-adatbázist, amely nyilvántartja, ki melyiket töltötte fel. A blokkok
soha nem változnak, de az adatbázist nem szabad másolni, amíg írás folyik bele.
Ezért a szkript mindent átmásol futó szerver mellett, arra a néhány másodpercre
leállítja, amíg átmásolja, ami közben megváltozott, újraindítja, és csak ezután
tölti fel a másolatot. Amíg le van állítva, a Drive egyszerűen kicsit később
újrapróbálkozik.
A másolat a restic segítségével kerül le a szerverről, amely titkosítja, mielőtt elhagyná a gépet. Olyan helyet használjon, amely a szervertől eltérő szolgáltatónál van: egy SFTP-fiókot (tárhelydobozt, otthoni számítógépet) vagy egy S3-kompatibilis tárolót (bucketet). Ha a reléjét már így menti, használja ugyanazt a helyet egy másik mappával.
-
Telepítse az eszközöket, és hozza létre a tárolót. A jelszót a jelszókezelőjében is tartsa meg: nélküle a másolatok nem olvashatók, és ha csak a szerveren van, a szerverrel együtt elvész. SFTP esetén a rootnak egy olyan SSH-kulcs is kell, amelyet a mentési gép elfogad (
sudo ssh-keygen -t ed25519, majd adja hozzá ott a/root/.ssh/id_ed25519.pubkulcsot).sudo apt install restic rsync sudo sh -c 'openssl rand -base64 32 > /root/.restic-blossom-password' sudo sh -c 'cat > /root/.restic-blossom-env' <<'END' export RESTIC_REPOSITORY=sftp:backup@backup.example.com:/blossom export RESTIC_PASSWORD_FILE=/root/.restic-blossom-password END sudo chmod 600 /root/.restic-blossom-password /root/.restic-blossom-env sudo sh -c '. /root/.restic-blossom-env && restic init' -
Mentse ezt
/usr/local/bin/backup-blossomnéven, és tegye futtathatóvá (sudo chmod 700 /usr/local/bin/backup-blossom). Módosítsa aBLOSSOM_DIRértékét, ha a fájljai nem a/root/blossommappában vannak. A szkript megőrzi az utolsó 14 napot, 8 hetet és 12 hónapot. A blokkok soha nem változnak, így minden éjjel csak az új adatok kerülnek hozzá.#!/bin/sh set -eu . /root/.restic-blossom-env BLOSSOM_DIR=/root/blossom COPY=/var/backups/blossom-data VOLUME=$(docker volume inspect --format '{{ .Mountpoint }}' blossom_data) mkdir -p "$COPY" rsync -a --delete "$VOLUME/" "$COPY/" cd "$BLOSSOM_DIR" docker compose stop blossom trap 'docker compose start blossom' EXIT rsync -a --delete "$VOLUME/" "$COPY/" docker compose start blossom trap - EXIT restic backup "$COPY" --tag blossom restic forget --tag blossom --keep-daily 14 --keep-weekly 8 --keep-monthly 12 --prune -
Futtassa le egyszer kézzel (
sudo /usr/local/bin/backup-blossom), majd ütemezze asudo crontab -eparanccsal. A második sor havonta visszaolvassa a tárolt adatok egytizedét, minden alkalommal egy másik tizedét, hogy bizonyítsa: a másolatok továbbra is megnyithatók. Időnként nézzen bele a/var/log/backup-blossom.logfájlba: egyFatalszót tartalmazó sor azt jelenti, hogy az aznap éjjeli másolat nem sikerült. Ha a relé mentése ugyanazon a gépen fut, ezek az időpontok nem fedik át a relé időpontjait.35 4 * * * /usr/local/bin/backup-blossom >> /var/log/backup-blossom.log 2>&1 55 5 2 * * . /root/.restic-blossom-env && restic check --read-data-subset=10% >> /var/log/backup-blossom.log 2>&1
Visszaállítás (új szerver vagy lemezhiba után): állítsa be újra a szervert
(1. és 2. lépés), és ismételje meg ennek a lépésnek az 1. és 2. pontját
ugyanazzal a tárolóval, de új jelszó létrehozása helyett a mentett jelszót írja
a /root/.restic-blossom-password fájlba, és hagyja ki a restic init
parancsot. Ezután másolja a legutóbbi mentést a szerver kötetébe:
sudo sh -c '. /root/.restic-blossom-env && restic restore latest --tag blossom --target /'
cd /root/blossom && sudo docker compose stop blossom
sudo rsync -a --delete /var/backups/blossom-data/ "$(sudo docker volume inspect --format '{{ .Mountpoint }}' blossom_data)/"
sudo docker compose start blossom
Amikor legközelebb ellenőrzi a másolatokat, a Drive újra megtalálja a blokkokat, és a többi szerverről átmásolja mindazt, ami az utolsó mentés után érkezett. 2026. október 27-én az egész láncot kipróbáltuk: mentés, a szerver törlése, visszaállítás, minden blokk visszaolvasása a saját hash-ével ellenőrizve, végül törlés a Drive kulcsával.
Évente egyszer végezze el ezt a visszaállítást egy tartalék gépen, és ellenőrizze, hogy a szerver a blokkjaival válaszol-e: ez az egyetlen próba, amely a teljes láncot igazolja, a jelszót is beleértve.
Jó tudni
- Csak az Ön Drive-ja tölthet fel. Aki ismeri egy blokk címét, letöltheti, ahogy bármely Blossom-szerveren, de a blokk titkosított: a Drive-jában lévő kulcsok nélkül csak zaj.
- Ha a kötetkulcsa megváltozik (a Drive szól, amikor egy kötet megújul), adja
hozzá az újat egy új sorként a
pubkeysalá, indítsa újra (docker compose up -d), és a régit hagyja ott. - Frissítések. Olvassa el a változásnaplót,
módosítsa a verziót az
image:sorban, és futtassa adocker compose pull, majd adocker compose up -dparancsot. - Az IP-címe. A szerver minden hozzá csatlakozó alkalmazás címét látja, ahogy bármely szerver. A saját szerverén ezeket egyedül Ön látja.