Server Blossom Anda sendiri
Terakhir diperbarui: 27 Oktober 2026
Herkos Drive memotong setiap file menjadi blok-blok terenkripsi dan menyimpannya di beberapa server Blossom: tiga salinan, di sedikitnya dua jenis server, dan satu di server milik Anda. Server publik menyimpan blok secara gratis, tetapi tidak menjanjikan apa pun: server itu dapat menghapusnya, menjadi penuh, atau tutup.
Server Blossom milik Anda sendiri menyimpan salinan Anda selama yang Anda tentukan dan hanya menerima blok dari Drive Anda. Halaman ini menjelaskan cara menyiapkannya dalam tiga langkah, ditambah pencadangan setiap malam. Server ini cocok dipasangkan dengan relay kotak surat Anda sendiri, dan prosesnya memakan waktu sekitar lima belas menit jika Anda sudah memiliki server.
Server mana yang digunakan
blossom-server buatan hzrd149, versi 6.4.1 (6 Oktober 2026, lisensi MIT). Kami menjalankannya pada 27 Oktober 2026 dengan konfigurasi di bawah dan kode unggah milik Drive sendiri, lalu memeriksa apa yang dibutuhkan Drive, bukan apa yang diiklankan server:
| Yang dilakukan Drive | Hasil |
|---|---|
Mengunggah blok terenkripsi 8 MiB (application/octet-stream) |
Diterima |
| Bertanya sebelum mengunggah (BUD-06) | Menjawab, dan menolak kunci lain mana pun |
| Meminta server Anda menyalin blok dari server publik (BUD-04) | Disalin |
| Membaca blok tanpa mengidentifikasi diri | Dilayani, byte demi byte |
| Menghapus blok dengan kunci yang mengunggahnya | Dihapus: permintaan ulang menghasilkan 404 |
| Unggahan dari kunci lain mana pun | Ditolak (401) |
Yang Anda butuhkan
- Mesin yang selalu menyala dan dapat dijangkau dari internet: VPS kecil atau komputer di rumah. Mesin ini memerlukan ruang disk sebesar isi Drive Anda, ditambah sedikit ruang untuk bertambah.
- Domain atau subdomain yang mengarah ke mesin itu, misalnya
blossom.example.com. - Docker dan reverse proxy yang menyediakan HTTPS. Contoh-contoh di sini menggunakan Caddy, yang mendapatkan sertifikatnya sendiri.
- Kunci volume Drive Anda. Herkos Drive menampilkannya di Setelan → Server → Servermu sendiri, berupa 64 huruf dan angka. Ini bukan kunci profil Anda: Drive tidak pernah mengunggah dengan kunci profil Anda, jadi server yang hanya menerima npub Anda akan menolak Drive.
Langkah 1: jalankan server
Buat folder untuknya, misalnya /root/blossom, dan simpan dua file berikut di
dalamnya. Yang pertama adalah 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: {}
Yang kedua adalah config.yml. Masukkan domain Anda di publicDomain dan kunci volume
Anda di tempat yang bertuliskan 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
Artinya: hanya kunci volume Anda yang boleh mengunggah atau meminta salinan
(requirePubkeyInRule), dan blok disimpan sampai Drive menghapusnya. Server
memerlukan masa kedaluwarsa di setiap aturan; 100 years tanpa dibaca pada praktiknya berarti tidak pernah,
dan Drive memang membaca blok-bloknya secara rutin. Port hanya mendengarkan di mesin itu sendiri (127.0.0.1):
semuanya lewat proxy.
Jalankan server:
cd /root/blossom
docker compose up -d
Langkah 2: pasang HTTPS di depannya
Dengan Caddy, seluruh konfigurasinya (/etc/caddy/Caddyfile) adalah:
blossom.example.com {
reverse_proxy 127.0.0.1:3000
}
Jika Caddy yang sama sudah melayani relay Anda, tambahkan blok ini di bawah blok relay.
Muat ulang Caddy (sudo systemctl reload caddy). Membuka
https://blossom.example.com di browser sekarang seharusnya mendapat jawaban, berupa 404:
memang sengaja tidak ada halaman beranda.
Langkah 3: beri tahu Herkos Drive
- Di Herkos Drive, buka Setelan → Server, tambahkan
https://blossom.example.comdan tandai sebagai milik Anda. - Drive bertanya kepadanya sebelum setiap unggahan. Sejak saat itu, setiap file baru mendapat salinan di sana, dan file yang sudah Anda miliki mendapat salinannya pada kali berikutnya Drive memeriksa salinan.
- Tetap simpan server lain di daftar. Server Anda adalah salah satu dari tiga salinan, tidak pernah satu-satunya: jika server itu mati, file Anda masih ada di server lain, dan Drive memberi tahu Anda setelah seminggu tanpa kabar.
Langkah 4: cadangkan setiap malam
Jika server Anda mati, Drive mengetahuinya dan membuat salinan file yang terdampak di server lain dalam daftar Anda. Namun salinan di server Anda adalah satu-satunya yang tidak bergantung pada pihak lain, dan pencadangan setiap malam memungkinkan Anda membangunnya ulang tanpa menyalin semuanya lagi lewat internet.
Server menyimpan semuanya di dalam volume Docker blossom_data (namanya diawali dengan nama folder
tempat file-file tadi berada; periksa dengan docker volume ls):
blok-blok, masing-masing satu file, dan basis data SQLite kecil yang mencatat siapa yang mengunggah
setiap blok. Blok tidak pernah berubah, tetapi basis data tidak boleh disalin saat sedang
ditulisi. Jadi skrip menyalin semuanya saat server berjalan, menghentikannya
selama beberapa detik yang dibutuhkan untuk menyalin apa yang berubah di antaranya, menjalankannya
kembali, dan baru setelah itu mengunggah salinannya. Selama server berhenti, Drive cukup mencoba lagi
sedikit lebih lambat.
Salinan dikirim keluar dari server dengan restic, yang mengenkripsinya sebelum keluar. Gunakan tempat di penyedia yang berbeda dari server: akun SFTP (storage box, komputer di rumah) atau bucket yang kompatibel dengan S3. Jika Anda sudah mencadangkan relay Anda dengan cara ini, gunakan tempat yang sama dengan folder lain.
-
Instal alat-alatnya dan buat repositori. Simpan juga kata sandinya di pengelola kata sandi Anda: tanpanya salinan tidak dapat dibaca, dan jika kata sandi itu hanya ada di server, kata sandi itu ikut hilang bersama server. Untuk SFTP, root juga memerlukan kunci SSH yang diterima oleh mesin cadangan (
sudo ssh-keygen -t ed25519, lalu tambahkan/root/.ssh/id_ed25519.pubdi sana).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' -
Simpan ini sebagai
/usr/local/bin/backup-blossomdan jadikan dapat dieksekusi (sudo chmod 700 /usr/local/bin/backup-blossom). UbahBLOSSOM_DIRjika file Anda tidak berada di/root/blossom. Skrip ini menyimpan 14 hari, 8 minggu, dan 12 bulan terakhir. Blok tidak pernah berubah, jadi setiap malam hanya menambahkan yang baru.#!/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 -
Jalankan sekali secara manual (
sudo /usr/local/bin/backup-blossom), lalu jadwalkan dengansudo crontab -e. Baris kedua membaca kembali sepersepuluh dari data yang tersimpan setiap bulan, sepersepuluh yang berbeda setiap kali, untuk membuktikan bahwa salinan masih dapat dibuka. Sesekali lihat/var/log/backup-blossom.log: baris yang berisiFatalberarti salinan malam itu gagal. Jika relay dicadangkan di mesin yang sama, jadwal ini tidak bertabrakan dengan jadwal relay.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
Untuk memulihkan (server baru, atau setelah disk rusak): siapkan kembali server
(langkah 1 dan 2) dan ulangi poin 1 dan 2 dari langkah ini dengan repositori yang sama,
tetapi tulis kata sandi yang Anda simpan ke dalam /root/.restic-blossom-password alih-alih
membuat yang baru, dan lewati restic init. Kemudian salin cadangan terbaru ke
volume server:
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
Pada kali berikutnya ia memeriksa salinan, Drive menemukan kembali blok-bloknya dan menyalin, dari server lain, apa pun yang tiba setelah cadangan terakhir. Kami mencoba seluruh rantai ini pada 27 Oktober 2026: pencadangan, server dihapus, pemulihan, setiap blok dibaca kembali dan dicocokkan dengan hash-nya sendiri, lalu dihapus dengan kunci Drive.
Setahun sekali, lakukan pemulihan ini di mesin cadangan dan periksa bahwa server menjawab dengan blok-blok Anda: itulah satu-satunya pengujian yang membuktikan seluruh rantai, termasuk kata sandinya.
Perlu diketahui
- Hanya Drive Anda yang dapat mengunggah. Siapa pun yang mengetahui alamat sebuah blok dapat mengunduhnya, seperti di server Blossom mana pun, tetapi blok itu terenkripsi: tanpa kunci di Drive Anda, isinya hanyalah derau.
- Jika kunci volume Anda berubah (Drive memberi tahu Anda saat sebuah volume diperbarui), tambahkan
kunci baru sebagai baris lain di bawah
pubkeys, mulai ulang (docker compose up -d), dan biarkan kunci lama tetap di sana. - Pembaruan. Baca catatan perubahan,
ubah versi di
image:, lalu jalankandocker compose pulldandocker compose up -d. - Alamat IP Anda. Server melihat alamat setiap aplikasi yang terhubung dengannya, seperti server mana pun. Di server Anda sendiri, satu-satunya yang melihatnya adalah Anda.