Vlastní server Blossom
Naposledy aktualizováno: 27. října 2026
Herkos Drive rozdělí každý soubor na šifrované bloky a uchovává je na několika serverech Blossom: tři kopie, nejméně na dvou druzích serverů, a jednu na vašem vlastním serveru. Veřejné servery bloky uchovávají zdarma, ale nic neslibují: mohou je smazat, zaplnit se nebo skončit.
Vlastní server Blossom uchová vaši kopii tak dlouho, jak sami určíte, a bloky přijímá jen z vašeho Drive. Tato stránka vysvětluje, jak ho nastavit ve třech krocích, a k tomu noční zálohu. Dobře se hodí k vlastnímu poštovnímu relé a zabere to asi patnáct minut, pokud už server máte.
Jaký server použít
blossom-server od hzrd149, verze 6.4.1 (6. října 2026, licence MIT). 27. října 2026 jsme ho spustili s konfigurací níže a s vlastním kódem Drive pro nahrávání a ověřili, co Drive potřebuje, ne co server slibuje:
| Co Drive dělá | Výsledek |
|---|---|
Nahrává šifrované bloky po 8 MiB (application/octet-stream) |
Přijato |
| Před nahráním se ptá (BUD-06) | Odpovídá a jakýkoli jiný klíč odmítne |
| Požádá váš server, aby zkopíroval blok z veřejného (BUD-04) | Zkopírováno |
| Čte blok bez identifikace | Vydáno, bajt po bajtu |
| Maže blok klíčem, který ho nahrál | Smazáno: další dotaz vrátí 404 |
| Nahrávání z jakéhokoli jiného klíče | Odmítnuto (401) |
Co budete potřebovat
- Stroj, který je stále zapnutý a dostupný z internetu: malý VPS nebo počítač doma. Potřebuje tolik místa na disku, kolik obsahuje váš Drive, a nějakou rezervu do budoucna.
- Doménu nebo subdoménu, která na něj ukazuje, například
blossom.example.com. - Docker a reverzní proxy, která zajistí HTTPS. Příklady používají Caddy, který si certifikát obstará sám.
- Klíč svazku vašeho Drive. Herkos Drive ho ukazuje v Nastavení → Servery → Vlastní server jako 64 písmen a číslic. Není to klíč vašeho profilu: Drive nikdy nenahrává klíčem profilu, takže server, který přijímá jen váš npub, by Drive odmítl.
Krok 1: spusťte server
Vytvořte pro něj složku, například /root/blossom, a uložte do ní tyto dva
soubory. První je 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: {}
Druhý je config.yml. Do publicDomain zadejte svou doménu a klíč svazku
vložte tam, kde stojí YOUR-VOLUME-KEY:
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
Co to znamená: nahrávat a žádat o kopie smí jen váš klíč svazku
(requirePubkeyInRule) a blok se uchovává, dokud ho Drive nesmaže. Server
vyžaduje v každém pravidle dobu platnosti; 100 years bez čtení je v praxi
nikdy a Drive své bloky stejně pravidelně čte. Port naslouchá jen na samotném
stroji (127.0.0.1): všechno jde přes proxy.
Spusťte ho:
cd /root/blossom
docker compose up -d
Krok 2: předřaďte HTTPS
S Caddy je celá konfigurace (/etc/caddy/Caddyfile):
blossom.example.com {
reverse_proxy 127.0.0.1:3000
}
Pokud stejný Caddy už obsluhuje vaše relé, přidejte tento blok pod ten jeho.
Načtěte Caddy znovu (sudo systemctl reload caddy). Adresa
https://blossom.example.com by teď měla v prohlížeči odpovídat, a to 404:
domovská stránka záměrně není.
Krok 3: řekněte to Herkos Drive
- V Herkos Drive otevřete Nastavení → Servery, přidejte
https://blossom.example.coma označte ho jako tvůj. - Drive se ho před každým nahráním zeptá. Od té chvíle dostane každý nový soubor kopii tam a soubory, které už máte, dostanou svou, až Drive příště zkontroluje kopie.
- Ostatní servery v seznamu ponechte. Váš je jednou ze tří kopií, nikdy jedinou: když vypadne, vaše soubory jsou dál na ostatních a Drive vám to oznámí po týdnu ticha.
Krok 4: zálohujte každou noc
Když váš server odejde, Drive si toho všimne a dotčeným souborům vytvoří kopie na ostatních serverech ve vašem seznamu. Kopie na vašem serveru je ale jediná, která nezávisí na nikom jiném, a noční záloha vám umožní ji obnovit, aniž byste všechno znovu kopírovali přes internet.
Server má všechno uvnitř svazku Dockeru blossom_data (název začíná složkou,
ve které jsou soubory; ověřte ho příkazem docker volume ls): bloky, každý
v jednom souboru, a malou databázi SQLite, která říká, kdo který nahrál. Bloky
se nikdy nemění, ale databáze se nesmí kopírovat, zatímco se do ní zapisuje.
Proto skript všechno zkopíruje za běhu serveru, zastaví ho na těch pár sekund,
které zabere zkopírovat, co se mezitím změnilo, znovu ho spustí a teprve pak
kopii nahraje. Zatímco je zastavený, Drive to prostě o chvíli později zkusí
znovu.
Kopie odchází ze serveru pomocí restic, který ji před odesláním zašifruje. Použijte místo u jiného poskytovatele, než má server: účet SFTP (storage box, počítač doma) nebo bucket kompatibilní s S3. Pokud už takhle zálohujete své relé, použijte stejné místo s jinou složkou.
-
Nainstalujte nástroje a vytvořte repozitář. Heslo si uložte i do správce hesel: bez něj nelze kopie přečíst, a pokud je jen na serveru, zanikne spolu se serverem. Pro SFTP potřebuje root navíc klíč SSH, který záložní stroj přijme (
sudo ssh-keygen -t ed25519, pak tam přidejte/root/.ssh/id_ed25519.pub).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' -
Uložte toto jako
/usr/local/bin/backup-blossoma nastavte jako spustitelné (sudo chmod 700 /usr/local/bin/backup-blossom). Pokud vaše soubory nejsou v/root/blossom, změňteBLOSSOM_DIR. Uchovává posledních 14 dní, 8 týdnů a 12 měsíců. Bloky se nikdy nemění, takže každá noc přidá jen to, co je nové.#!/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 -
Jednou ho spusťte ručně (
sudo /usr/local/bin/backup-blossom), pak ho naplánujte pomocísudo crontab -e. Druhý řádek každý měsíc načte zpět desetinu uložených dat, pokaždé jinou desetinu, aby se prokázalo, že kopie jdou pořád otevřít. Občas se podívejte do/var/log/backup-blossom.log: řádek sFatalznamená, že kopie té noci selhala. Pokud se na stejném stroji zálohuje i relé, tyto časy se s jeho časy nepřekrývají.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
Obnovení (nový server nebo po selhání disku): znovu nastavte server
(kroky 1 a 2) a zopakujte body 1 a 2 tohoto kroku se stejným repozitářem,
ale místo vytvoření nového hesla zapište do /root/.restic-blossom-password
heslo, které jste si uložili, a vynechte restic init. Pak zkopírujte
nejnovější zálohu do svazku serveru:
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
Až příště zkontroluje kopie, Drive bloky znovu najde a z ostatních serverů dokopíruje vše, co přibylo po poslední záloze. Celý tento řetězec jsme vyzkoušeli 27. října 2026: záloha, smazání serveru, obnovení, zpětné přečtení každého bloku s ověřením jeho vlastního hashe a nakonec smazání klíčem Drive.
Jednou ročně proveďte toto obnovení na náhradním stroji a ověřte, že server odpovídá s vašimi bloky: je to jediný test, který prověří celý řetězec, včetně hesla.
Dobré vědět
- Nahrávat může jen váš Drive. Kdokoli, kdo zná adresu bloku, si ho může stáhnout, jako na každém serveru Blossom, ale blok je zašifrovaný: bez klíčů z vašeho Drive je to šum.
- Pokud se váš klíč svazku změní (Drive vám dá vědět, když se svazek
obnovuje), přidejte nový jako další řádek pod
pubkeys, restartujte (docker compose up -d) a starý tam nechte. - Aktualizace. Přečtěte si seznam změn,
změňte verzi v
image:a spusťtedocker compose pulladocker compose up -d. - Vaše IP adresa. Server vidí adresu každé aplikace, která se k němu připojí, jako každý server. Na vlastním serveru je vidíte jen vy.