Din egen Blossom-server
Senast uppdaterad: 27 oktober 2026
Herkos Drive delar upp varje fil i krypterade block och lagrar dem på flera Blossom-servrar: tre kopior, på minst två sorters servrar, och en på en server som är din. Offentliga servrar lagrar block gratis, men de lovar ingenting: de kan rensa bort dem, bli fulla eller stänga.
En egen Blossom-server behåller din kopia så länge du bestämmer och tar bara emot block från din Drive. Den här sidan förklarar hur du sätter upp en i tre steg, plus en säkerhetskopiering varje natt. Den passar bra ihop med ditt eget brevlådsrelä, och det tar ungefär en kvart om du redan har en server.
Vilken server du ska använda
blossom-server av hzrd149, version 6.4.1 (6 oktober 2026, MIT-licens). Vi körde den den 27 oktober 2026 med konfigurationen nedan och Drives egen uppladdningskod, och kontrollerade vad Drive behöver, inte vad servern utlovar:
| Vad Drive gör | Resultat |
|---|---|
Laddar upp krypterade block på 8 MiB (application/octet-stream) |
Accepteras |
| Frågar innan uppladdning (BUD-06) | Svarar, och avvisar alla andra nycklar |
| Ber din server kopiera ett block från en offentlig server (BUD-04) | Kopieras |
| Läser ett block utan att identifiera sig | Levereras, byte för byte |
| Raderar ett block med nyckeln som laddade upp det | Raderas: en ny förfrågan ger 404 |
| Uppladdning från andra nycklar | Avvisas (401) |
Vad du behöver
- En dator som alltid är påslagen och nåbar från internet: en liten VPS eller en dator hemma. Den behöver lika mycket diskutrymme som din Drive rymmer, och lite utrymme att växa.
- En domän eller underdomän som pekar på den, till exempel
blossom.example.com. - Docker och en omvänd proxy som tillhandahåller HTTPS. Exemplen använder Caddy, som skaffar certifikatet på egen hand.
- Din Drives volymnyckel. Herkos Drive visar den under Inställningar → Servrar → Din egen server, som 64 bokstäver och siffror. Det är inte din profils nyckel: Drive laddar aldrig upp med din profilnyckel, så en server som bara godtar din npub skulle avvisa Drive.
Steg 1: kör servern
Skapa en mapp för den, till exempel /root/blossom, och spara de här två
filerna i den. Den första är 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: {}
Den andra är config.yml. Skriv in din domän i publicDomain och din
volymnyckel där det står 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
Vad den säger: bara din volymnyckel får ladda upp eller be om kopior
(requirePubkeyInRule), och ett block behålls tills Drive raderar det.
Servern kräver en utgångstid i varje regel; 100 years utan att blocket läses
är i praktiken aldrig, och Drive läser ändå sina block regelbundet. Porten
lyssnar bara på själva datorn (127.0.0.1): allt går via proxyn. Starta den:
cd /root/blossom
docker compose up -d
Steg 2: lägg HTTPS framför
Med Caddy är hela konfigurationen (/etc/caddy/Caddyfile):
blossom.example.com {
reverse_proxy 127.0.0.1:3000
}
Om samma Caddy redan betjänar ditt relä lägger du till det här blocket under
det befintliga. Läs in Caddy på nytt (sudo systemctl reload caddy). Om du
öppnar https://blossom.example.com i en webbläsare ska du nu få svar, med en
404: det finns ingen startsida, med avsikt.
Steg 3: berätta för Herkos Drive
- Öppna Inställningar → Servrar i Herkos Drive, lägg till
https://blossom.example.comoch markera den som egen. - Drive frågar den före varje uppladdning. Från och med då får varje ny fil en kopia där, och filerna du redan hade får sina nästa gång Drive kontrollerar kopiorna.
- Behåll de andra servrarna i listan. Din är en av de tre kopiorna, aldrig den enda: om den ligger nere finns dina filer kvar på de andra, och Drive säger till efter en veckas tystnad.
Steg 4: säkerhetskopiera varje natt
Om din server går sönder märker Drive det och ger de berörda filerna kopior på de andra servrarna i din lista. Men kopian på din server är den enda som inte är beroende av någon annan, och en kopia varje natt låter dig bygga upp den igen utan att kopiera allt på nytt över internet.
Servern lagrar allt i Docker-volymen blossom_data (namnet börjar med mappen
som filerna ligger i; kontrollera det med docker volume ls): blocken, en fil
per block, och en liten SQLite-databas som anger vem som laddade upp vart och
ett. Blocken ändras aldrig, men databasen får inte kopieras medan den skrivs
till. Därför kopierar skriptet allt medan servern är igång, stoppar den under
de få sekunder det tar att kopiera det som har ändrats under tiden, startar den
igen och laddar först därefter upp kopian. Medan servern är stoppad försöker
Drive helt enkelt igen lite senare.
Kopian lämnar servern med restic, som krypterar den innan den skickas. Använd en plats hos en annan leverantör än servern: ett SFTP-konto (en lagringsbox, en dator hemma) eller en S3-kompatibel bucket. Om du redan säkerhetskopierar ditt relä på det här sättet kan du använda samma plats med en annan mapp.
-
Installera verktygen och skapa arkivet. Spara lösenordet i din lösenordshanterare också: utan det går kopiorna inte att läsa, och om det bara finns på servern försvinner det med servern. För SFTP behöver root dessutom en SSH-nyckel som backupdatorn godtar (
sudo ssh-keygen -t ed25519, lägg sedan till/root/.ssh/id_ed25519.pubdär).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' -
Spara detta som
/usr/local/bin/backup-blossomoch gör det körbart (sudo chmod 700 /usr/local/bin/backup-blossom). ÄndraBLOSSOM_DIRom dina filer inte ligger i/root/blossom. Skriptet behåller de senaste 14 dagarna, 8 veckorna och 12 månaderna. Blocken ändras aldrig, så varje natt läggs bara det nya till.#!/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 -
Kör det en gång för hand (
sudo /usr/local/bin/backup-blossom) och schemalägg det sedan medsudo crontab -e. Den andra raden läser tillbaka en tiondel av de lagrade data varje månad, en ny tiondel varje gång, för att bevisa att kopiorna fortfarande går att öppna. Titta i/var/log/backup-blossom.logdå och då: en rad medFatalbetyder att nattens kopia misslyckades. Om reläet säkerhetskopieras på samma dator krockar de här tiderna inte med dess egna.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
Så återställer du (en ny server, eller efter ett diskfel): sätt upp servern
igen (steg 1 och 2) och upprepa punkt 1 och 2 i det här steget med samma
arkiv, men skriv in lösenordet du sparade i /root/.restic-blossom-password i
stället för att skapa ett nytt, och hoppa över restic init. Kopiera sedan den
senaste säkerhetskopian till serverns volym:
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
Nästa gång Drive kontrollerar kopiorna hittar den blocken igen och kopierar över, från de andra servrarna, det som har kommit efter den senaste säkerhetskopian. Vi provade hela den här kedjan den 27 oktober 2026: säkerhetskopiering, raderad server, återställning, varje block tillbakaläst med sin egen hash och därefter raderat med Drives nyckel.
En gång om året bör du göra den här återställningen på en reservdator och kontrollera att servern svarar med dina block: det är det enda testet som bevisar hela kedjan, lösenordet inräknat.
Bra att veta
- Bara din Drive kan ladda upp. Den som känner till adressen till ett block kan ladda ner det, som på alla Blossom-servrar, men det är krypterat: utan nycklarna i din Drive är det brus.
- Om din volymnyckel ändras (Drive säger till när en volym förnyas), lägg
till den nya som en ny rad under
pubkeys, starta om (docker compose up -d) och låt den gamla stå kvar. - Uppdateringar. Läs ändringsloggen,
ändra versionen i
image:och kördocker compose pullochdocker compose up -d. - Din IP-adress. Servern ser adressen för varje app som ansluter till den, som alla servrar gör. På din egen server är det bara du som ser dem.