Oma Blossom-palvelin
Viimeksi päivitetty: 27. lokakuuta 2026
Herkos Drive pilkkoo jokaisen tiedoston salatuiksi lohkoiksi ja säilyttää ne useilla Blossom-palvelimilla: kolme kopiota, vähintään kahdenlaisilla palvelimilla, ja yksi omalla palvelimellasi. Julkiset palvelimet säilyttävät lohkoja ilmaiseksi, mutta ne eivät lupaa mitään: ne voivat poistaa lohkot, täyttyä tai lopettaa.
Oma Blossom-palvelin säilyttää kopiosi niin kauan kuin itse päätät ja ottaa vastaan lohkoja vain omasta Drivestasi. Tämä sivu kertoo, miten sellainen pystytetään kolmessa vaiheessa, sekä öisestä varmuuskopiosta. Se sopii hyvin yhteen oman postilaatikkopalvelimesi kanssa, ja siihen menee noin vartti, jos sinulla on jo palvelin.
Mikä palvelin valita
blossom-server, tekijä hzrd149, versio 6.4.1 (6. lokakuuta 2026, MIT-lisenssi). Ajoimme sitä 27. lokakuuta 2026 alla olevalla määrityksellä ja Driven omalla lähetyskoodilla ja tarkistimme, mitä Drive tarvitsee, emme sitä, mitä palvelin mainostaa:
| Mitä Drive tekee | Tulos |
|---|---|
Lähettää 8 MiB:n salattuja lohkoja (application/octet-stream) |
Hyväksytään |
| Kysyy ennen lähettämistä (BUD-06) | Vastaa ja torjuu kaikki muut avaimet |
| Pyytää palvelintasi kopioimaan lohkon julkiselta palvelimelta (BUD-04) | Kopioidaan |
| Lukee lohkon tunnistautumatta | Toimitetaan, tavu tavulta |
| Poistaa lohkon avaimella, jolla se lähetettiin | Poistetaan: uusi pyyntö antaa 404:n |
| Lähetykset muilla avaimilla | Torjutaan (401) |
Mitä tarvitset
- Koneen, joka on aina päällä ja tavoitettavissa internetistä: pieni VPS tai kotitietokone. Levytilaa tarvitaan yhtä paljon kuin Drivessasi on tietoa, ja vähän varaa kasvulle.
- Siihen osoittavan verkkotunnuksen tai aliverkkotunnuksen, esimerkiksi
blossom.example.com. - Dockerin ja käänteisen välityspalvelimen (reverse proxy), joka tarjoaa HTTPS:n. Esimerkeissä käytetään Caddya, joka hankkii varmenteen itse.
- Drivesi taltioavaimen. Herkos Drive näyttää sen kohdassa Asetukset → Palvelimet → Oma palvelin 64 kirjaimena ja numerona. Se ei ole profiilisi avain: Drive ei koskaan lähetä lohkoja profiiliavaimellasi, joten palvelin, joka hyväksyy vain npubisi, torjuisi Driven.
Vaihe 1: käynnistä palvelin
Luo sille kansio, esimerkiksi /root/blossom, ja tallenna siihen nämä kaksi
tiedostoa. Ensimmäinen on 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: {}
Toinen on config.yml. Kirjoita verkkotunnuksesi kohtaan publicDomain ja
taltioavaimesi kohtaan, jossa lukee 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
Mitä se tarkoittaa: vain taltioavaimesi saa lähettää lohkoja tai pyytää
kopioita (requirePubkeyInRule), ja lohko säilytetään, kunnes Drive poistaa
sen. Palvelin vaatii jokaiseen sääntöön vanhenemisajan; 100 years ilman
lukemista on käytännössä ei koskaan, ja Drive lukee lohkojaan joka tapauksessa
säännöllisesti. Portti kuuntelee vain itse koneella (127.0.0.1): kaikki
kulkee proxyn kautta. Käynnistä se:
cd /root/blossom
docker compose up -d
Vaihe 2: lisää HTTPS eteen
Caddylla koko määritys (/etc/caddy/Caddyfile) on:
blossom.example.com {
reverse_proxy 127.0.0.1:3000
}
Jos sama Caddy palvelee jo välityspalvelintasi, lisää tämä määrityslohko sen
lohkon alle. Lataa Caddyn määritys uudelleen (sudo systemctl reload caddy).
Kun avaat https://blossom.example.com selaimessa, sen pitäisi nyt vastata
404:llä: etusivua ei ole, tarkoituksella.
Vaihe 3: kerro Herkos Drivelle
- Avaa Herkos Drivessa Asetukset → Palvelimet, lisää
https://blossom.example.comja merkitse se omaksi palvelimeksesi. - Drive kysyy siltä ennen jokaista lähetystä. Siitä lähtien jokainen uusi tiedosto saa sinne kopion, ja jo olemassa olevat tiedostosi saavat omansa, kun Drive seuraavan kerran tarkistaa kopiot.
- Pidä muut palvelimet listalla. Omasi on yksi kolmesta kopiosta, ei koskaan ainoa: jos se on alhaalla, tiedostosi ovat yhä muilla, ja Drive kertoo siitä viikon hiljaisuuden jälkeen.
Vaihe 4: varmuuskopioi joka yö
Jos palvelimesi hajoaa, Drive huomaa sen ja antaa asianomaisille tiedostoille kopiot listasi muille palvelimille. Mutta palvelimesi kopio on ainoa, joka ei riipu kenestäkään muusta, ja öisen varmuuskopion avulla voit rakentaa sen uudelleen kopioimatta kaikkea uudestaan internetin yli.
Palvelin säilyttää kaiken Docker-taltiossa blossom_data (nimi alkaa sen
kansion nimellä, jossa tiedostot ovat; tarkista se komennolla
docker volume ls): lohkot, kukin omana tiedostonaan, ja pienen
SQLite-tietokannan, joka kertoo, kuka lähetti minkäkin lohkon. Lohkot eivät
koskaan muutu, mutta tietokantaa ei saa kopioida kesken kirjoituksen. Siksi
skripti kopioi kaiken palvelimen ollessa käynnissä, pysäyttää sen niiksi
muutamaksi sekunniksi, jotka välillä muuttuneen kopioiminen vie, käynnistää sen
uudelleen ja vasta sitten lähettää kopion. Pysäytyksen aikana Drive yksinkertaisesti
yrittää uudelleen hieman myöhemmin.
Kopio siirretään pois palvelimelta resticillä, joka salaa sen ennen lähtöä. Käytä paikkaa, joka on eri palveluntarjoajalla kuin palvelin: SFTP-tili (tallennuslaatikko, kotitietokone) tai S3-yhteensopiva bucket. Jos varmuuskopioit jo välityspalvelimesi tällä tavalla, käytä samaa paikkaa eri kansiossa.
-
Asenna työkalut ja luo repositorio. Säilytä salasana myös salasanojen hallintasovelluksessasi: ilman sitä kopioita ei voi lukea, ja jos se on vain palvelimella, se kuolee palvelimen mukana. SFTP:tä varten root tarvitsee myös SSH-avaimen, jonka varmuuskopiokone hyväksyy (
sudo ssh-keygen -t ed25519, ja lisää sitten/root/.ssh/id_ed25519.pubsinne).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' -
Tallenna tämä nimellä
/usr/local/bin/backup-blossomja tee siitä suoritettava (sudo chmod 700 /usr/local/bin/backup-blossom). MuutaBLOSSOM_DIR, jos tiedostosi eivät ole kansiossa/root/blossom. Se säilyttää viimeiset 14 päivää, 8 viikkoa ja 12 kuukautta. Lohkot eivät koskaan muutu, joten joka yö lisätään vain uudet.#!/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 -
Aja se kerran käsin (
sudo /usr/local/bin/backup-blossom) ja ajasta se sitten komennollasudo crontab -e. Toinen rivi lukee joka kuukausi takaisin kymmenesosan tallennetuista tiedoista, joka kerta eri kymmenesosan, todistaakseen, että kopiot voi yhä avata. Katso tiedostoa/var/log/backup-blossom.logsilloin tällöin: rivi, jossa onFatal, tarkoittaa, että sen yön kopio epäonnistui. Jos välityspalvelimen varmuuskopiointi ajetaan samalla koneella, nämä ajat eivät mene päällekkäin sen omien kanssa.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
Palauttaminen (uusi palvelin tai levyvian jälkeen): pystytä palvelin
uudelleen (vaiheet 1 ja 2) ja toista tämän vaiheen kohdat 1 ja 2 samalla
repositoriolla, mutta kirjoita tallentamasi salasana tiedostoon
/root/.restic-blossom-password uuden luomisen sijaan ja ohita restic init.
Kopioi sitten uusin varmuuskopio palvelimen taltioon:
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
Kun Drive seuraavan kerran tarkistaa kopiot, se löytää lohkot taas ja kopioi muilta palvelimilta kaiken, mikä saapui viimeisimmän varmuuskopion jälkeen. Kokeilimme koko tämän ketjun 27. lokakuuta 2026: varmuuskopio, palvelimen poisto, palautus, jokainen lohko luettu takaisin oman tiivisteensä mukaisena ja lopuksi poistettu Driven avaimella.
Tee tämä palautus kerran vuodessa varakoneella ja tarkista, että palvelin vastaa lohkoillasi: se on ainoa testi, joka todistaa koko ketjun toimivan, salasana mukaan lukien.
Hyvä tietää
- Vain Drivesi voi lähettää lohkoja. Kuka tahansa, joka tietää lohkon osoitteen, voi ladata sen, kuten millä tahansa Blossom-palvelimella, mutta se on salattu: ilman Drivesi avaimia se on pelkkää kohinaa.
- Jos taltioavaimesi vaihtuu (Drive kertoo, kun taltio uusitaan), lisää
uusi omaksi rivikseen kohdan
pubkeysalle, käynnistä uudelleen (docker compose up -d) ja jätä vanha paikalleen. - Päivitykset. Lue muutosloki,
vaihda versio kohdassa
image:ja ajadocker compose pulljadocker compose up -d. - IP-osoitteesi. Palvelin näkee jokaisen siihen yhdistävän sovelluksen osoitteen, kuten mikä tahansa palvelin. Omalla palvelimellasi ainoa, joka näkee ne, olet sinä.