Kendi Blossom sunucunuz
Son güncelleme: 27 Ekim 2026
Herkos Drive her dosyayı şifreli bloklara böler ve bunları birkaç Blossom sunucusunda tutar: üç kopya, en az iki tür sunucuda ve biri size ait bir sunucuda. Herkese açık sunucular blokları ücretsiz tutar, ama hiçbir şey vaat etmez: blokları temizleyebilir, dolabilir ya da kapanabilirler.
Kendinize ait bir Blossom sunucusu kopyanızı sizin karar verdiğiniz süre boyunca saklar ve yalnızca sizin Drive'ınızdan blok kabul eder. Bu sayfa, birini üç adımda, artı her gece alınan bir yedekle nasıl kuracağınızı anlatır. Kendi posta kutusu aktarıcınızla iyi bir ikili oluşturur ve zaten bir sunucunuz varsa yaklaşık on beş dakika sürer.
Hangi sunucuyu kullanmalı
blossom-server (geliştiren: hzrd149), sürüm 6.4.1 (6 Ekim 2026, MIT lisansı). Aşağıdaki yapılandırma ve Drive'ın kendi yükleme koduyla 27 Ekim 2026'da çalıştırdık ve sunucunun reklamında ne dediğini değil, Drive'ın neye ihtiyaç duyduğunu denetledik:
| Drive ne yapar | Sonuç |
|---|---|
8 MiB'lik şifreli bloklar yükler (application/octet-stream) |
Kabul edildi |
| Yüklemeden önce sorar (BUD-06) | Yanıt verir ve diğer tüm anahtarları geri çevirir |
| Sunucunuzdan bir bloğu herkese açık bir sunucudan kopyalamasını ister (BUD-04) | Kopyalandı |
| Bir bloğu kimliğini doğrulamadan okur | Sunuldu, bayt bayt aynı |
| Bir bloğu, onu yükleyen anahtarla siler | Silindi: yeniden istendiğinde 404 döner |
| Başka herhangi bir anahtardan yükleme | Reddedildi (401) |
Neye ihtiyacınız var
- Her zaman açık ve internetten erişilebilen bir makine: küçük bir VPS veya evde bir bilgisayar. Drive'ınızda ne kadar veri varsa o kadar disk alanına ve büyümek için biraz pay bırakmaya ihtiyacı vardır.
- Ona yönlendirilmiş bir alan adı veya alt alan adı, örneğin
blossom.example.com. - Docker ve HTTPS sağlayan bir ters vekil sunucu (reverse proxy). Örnekler, sertifikayı kendi başına alan Caddy kullanır.
- Drive'ınızın birim anahtarı. Herkos Drive bunu Ayarlar → Sunucular → Kendi sunucun bölümünde, 64 harf ve rakam olarak gösterir. Bu, profilinizin anahtarı değildir: Drive asla profil anahtarınızla yükleme yapmaz, bu yüzden yalnızca npub'ınızı kabul eden bir sunucu Drive'ı geri çevirirdi.
Adım 1: sunucuyu çalıştırın
Onun için bir klasör oluşturun, örneğin /root/blossom, ve bu iki dosyayı
içine kaydedin. Birincisi 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: {}
İkincisi config.yml. Alan adınızı publicDomain alanına, birim anahtarınızı
da YOUR-VOLUME-KEY yazan yere koyun:
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
Bunun anlamı şu: yalnızca birim anahtarınız yükleme yapabilir veya kopya
isteyebilir (requirePubkeyInRule) ve bir blok, Drive onu silene kadar
saklanır. Sunucu her kuralda bir sona erme süresi ister; okunmadan geçen
100 years pratikte hiçbir zaman demektir ve Drive zaten bloklarını düzenli
olarak okur. Port yalnızca makinenin kendisinde dinler (127.0.0.1): her şey
vekil sunucudan geçer. Başlatın:
cd /root/blossom
docker compose up -d
Adım 2: önüne HTTPS koyun
Caddy ile tüm yapılandırma (/etc/caddy/Caddyfile) şudur:
blossom.example.com {
reverse_proxy 127.0.0.1:3000
}
Aynı Caddy zaten aktarıcınıza hizmet veriyorsa, bu bloğu onunkinin altına
ekleyin. Caddy'yi yeniden yükleyin (sudo systemctl reload caddy). Artık bir
tarayıcıda https://blossom.example.com açıldığında 404 ile yanıt vermelidir:
bilerek bir ana sayfa yoktur.
Adım 3: Herkos Drive'a söyleyin
- Herkos Drive'da Ayarlar → Sunucular bölümünü açın,
https://blossom.example.comadresini ekleyin ve onu senin sunucun olarak işaretleyin. - Drive her yüklemeden önce ona sorar. O andan itibaren her yeni dosya orada bir kopya alır, zaten sahip olduğunuz dosyalar da kendi kopyalarını Drive kopyaları bir dahaki sefere denetlediğinde alır.
- Diğer sunucuları listede tutun. Sizinki üç kopyadan biridir, asla tek kopya değil: çökerse dosyalarınız hâlâ diğerlerinde durur ve Drive bir haftalık sessizlikten sonra size haber verir.
Adım 4: her gece yedekleyin
Sunucunuz ölürse Drive bunu fark eder ve etkilenen dosyalara listenizdeki diğer sunucularda kopyalar verir. Ama sunucunuzdaki kopya, başka hiç kimseye bağlı olmayan tek kopyadır ve gecelik bir yedek, her şeyi internet üzerinden yeniden kopyalamadan onu yeniden kurmanızı sağlar.
Sunucu her şeyi blossom_data Docker biriminin içinde tutar (ad, dosyaların
bulunduğu klasörün adıyla başlar; docker volume ls ile denetleyin): her biri
ayrı bir dosya olan blokları ve her bloğu kimin yüklediğini kaydeden küçük bir
SQLite veritabanını. Bloklar asla değişmez, ama veritabanı yazılırken
kopyalanmamalıdır. Bu yüzden betik her şeyi sunucu çalışırken kopyalar,
aradaki değişiklikleri kopyalamanın sürdüğü birkaç saniye için sunucuyu
durdurur, yeniden başlatır ve ancak ondan sonra kopyayı yükler. Durduğu sürece
Drive biraz sonra yeniden dener, o kadar.
Kopya sunucudan restic ile çıkar; restic onu ayrılmadan önce şifreler. Sunucudan farklı bir sağlayıcıdaki bir yer kullanın: bir SFTP hesabı (bir depolama kutusu, evde bir bilgisayar) veya S3 uyumlu bir bucket. Aktarıcınızı zaten bu şekilde yedekliyorsanız, aynı yeri başka bir klasörle kullanın.
-
Araçları kurun ve depoyu oluşturun. Parolayı parola yöneticinizde de saklayın: o olmadan kopyalar okunamaz ve yalnızca sunucuda yaşıyorsa sunucuyla birlikte ölür. SFTP için root kullanıcısının yedekleme makinesinin kabul ettiği bir SSH anahtarına da ihtiyacı vardır (
sudo ssh-keygen -t ed25519, ardından/root/.ssh/id_ed25519.pubdosyasını oraya ekleyin).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' -
Bunu
/usr/local/bin/backup-blossomolarak kaydedin ve çalıştırılabilir yapın (sudo chmod 700 /usr/local/bin/backup-blossom). Dosyalarınız/root/blossomiçinde değilseBLOSSOM_DIRdeğerini değiştirin. Son 14 günü, 8 haftayı ve 12 ayı tutar. Bloklar asla değişmediği için her gece yalnızca yeni olanlar eklenir.#!/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 -
Bir kez elle çalıştırın (
sudo /usr/local/bin/backup-blossom), ardındansudo crontab -eile zamanlayın. İkinci satır her ay saklanan verinin onda birini, her seferinde farklı bir onda birini geri okuyarak kopyaların hâlâ açılabildiğini kanıtlar. Arada bir/var/log/backup-blossom.logdosyasına bakın:Fataliçeren bir satır, o gecenin kopyasının başarısız olduğu anlamına gelir. Aktarıcı da aynı makinede yedekleniyorsa, bu saatler onun saatleriyle çakışmaz.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
Geri yüklemek için (yeni bir sunucu ya da bir disk arızasından sonra):
sunucuyu yeniden kurun (1. ve 2. adımlar) ve bu adımın 1. ve 2. maddelerini
aynı depoyla tekrarlayın, ancak yeni bir parola oluşturmak yerine sakladığınız
parolayı /root/.restic-blossom-password içine yazın ve restic init adımını
atlayın. Ardından en son yedeği sunucunun birimine kopyalayın:
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
Drive, kopyaları bir dahaki sefere denetlediğinde blokları yeniden bulur ve son yedekten sonra gelenleri diğer sunuculardan kopyalar. Bu zincirin tamamını 27 Ekim 2026'da denedik: yedekleme, sunucunun silinmesi, geri yükleme, her bloğun kendi özetiyle (hash) geri okunması ve ardından Drive'ın anahtarıyla silinmesi.
Yılda bir kez bu geri yüklemeyi yedek bir makinede yapın ve sunucunun bloklarınızla yanıt verdiğini denetleyin: parola dâhil tüm zinciri kanıtlayan tek deneme budur.
Bilmekte yarar var
- Yalnızca sizin Drive'ınız yükleme yapabilir. Bir bloğun adresini bilen herkes, her Blossom sunucusunda olduğu gibi onu indirebilir, ama blok şifrelidir: Drive'ınızdaki anahtarlar olmadan gürültüden ibarettir.
- Birim anahtarınız değişirse (Drive bir birim yenilendiğinde size haber
verir), yenisini
pubkeysaltına ayrı bir satır olarak ekleyin, yeniden başlatın (docker compose up -d) ve eskisini orada bırakın. - Güncellemeler. Değişiklik günlüğünü
okuyun,
image:içindeki sürümü değiştirin vedocker compose pulliledocker compose up -dkomutlarını çalıştırın. - IP adresiniz. Sunucu, her sunucu gibi, kendisine bağlanan her uygulamanın adresini görür. Kendi sunucunuzda bunları gören tek kişi sizsiniz.