Herkos

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

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

  1. Öppna Inställningar → Servrar i Herkos Drive, lägg till https://blossom.example.com och markera den som egen.
  2. 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.
  3. 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.

  1. 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.pub dä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'
    
  2. Spara detta som /usr/local/bin/backup-blossom och gör det körbart (sudo chmod 700 /usr/local/bin/backup-blossom). Ändra BLOSSOM_DIR om 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
    
  3. Kör det en gång för hand (sudo /usr/local/bin/backup-blossom) och schemalägg det sedan med sudo 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.log då och då: en rad med Fatal betyder 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