आपका अपना Blossom सर्वर
अंतिम अपडेट: 27 अक्टूबर 2026
Herkos Drive हर फ़ाइल को एन्क्रिप्ट किए गए ब्लॉक में काटता है और उन्हें कई Blossom सर्वर पर रखता है: तीन कॉपी, कम से कम दो तरह के सर्वर पर, और एक आपके अपने सर्वर पर। सार्वजनिक सर्वर ब्लॉक मुफ़्त में रखते हैं, लेकिन कोई वादा नहीं करते: वे उन्हें मिटा सकते हैं, भर सकते हैं या बंद हो सकते हैं।
आपका अपना Blossom सर्वर आपकी कॉपी तब तक रखता है जब तक आप तय करें, और सिर्फ़ आपके Drive से ब्लॉक लेता है। यह पेज बताता है कि तीन चरणों में एक सर्वर कैसे सेट करें, साथ में हर रात का बैकअप भी। यह आपके अपने मेलबॉक्स रिले के साथ अच्छा चलता है, और अगर आपके पास पहले से सर्वर है, तो इसमें लगभग पंद्रह मिनट लगते हैं।
कौन-सा सर्वर इस्तेमाल करें
hzrd149 का blossom-server, वर्शन 6.4.1 (6 अक्टूबर 2026, MIT लाइसेंस)। हमने 27 अक्टूबर 2026 को इसे नीचे दिए कॉन्फ़िगरेशन और Drive के अपने अपलोड कोड के साथ चलाकर देखा, और जांचा कि Drive को क्या चाहिए, न कि सर्वर क्या दावा करता है:
| Drive क्या करता है | नतीजा |
|---|---|
8 MiB के एन्क्रिप्ट किए गए ब्लॉक अपलोड करता है (application/octet-stream) |
स्वीकार |
| अपलोड से पहले पूछता है (BUD-06) | जवाब देता है, और किसी भी दूसरी कुंजी को लौटा देता है |
| आपके सर्वर से किसी सार्वजनिक सर्वर का ब्लॉक कॉपी करने को कहता है (BUD-04) | कॉपी हो गया |
| बिना पहचान बताए ब्लॉक पढ़ता है | बाइट-दर-बाइट वैसा ही मिला |
| जिस कुंजी से ब्लॉक अपलोड हुआ था, उसी से उसे मिटाता है | मिट गया: दोबारा मांगने पर 404 |
| किसी भी दूसरी कुंजी से अपलोड | मना (401) |
आपको क्या चाहिए
- एक मशीन जो हमेशा चालू हो और इंटरनेट से पहुंच में हो: एक छोटा VPS या घर का कोई कंप्यूटर। उसमें उतनी डिस्क चाहिए जितना आपके Drive में है, और बढ़ने के लिए कुछ जगह भी।
- उसकी ओर इशारा करने वाला एक डोमेन या सबडोमेन, जैसे
blossom.example.com। - Docker और एक रिवर्स प्रॉक्सी जो HTTPS दे। उदाहरणों में Caddy का इस्तेमाल किया गया है, जो सर्टिफ़िकेट ख़ुद ले लेता है।
- आपके Drive की वॉल्यूम कुंजी। Herkos Drive इसे सेटिंग → सर्वर → आपका अपना सर्वर में 64 अक्षरों और अंकों के रूप में दिखाता है। यह आपकी प्रोफ़ाइल की कुंजी नहीं है: Drive कभी भी आपकी प्रोफ़ाइल कुंजी से अपलोड नहीं करता, इसलिए जो सर्वर सिर्फ़ आपका npub स्वीकार करता है, वह Drive को लौटा देगा।
चरण 1: सर्वर चलाएं
इसके लिए एक फ़ोल्डर बनाएं, जैसे /root/blossom, और उसमें ये दो फ़ाइलें सेव करें। पहली है
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: {}
दूसरी है config.yml। publicDomain में अपना डोमेन डालें, और जहां 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
इसका मतलब: सिर्फ़ आपकी वॉल्यूम कुंजी अपलोड कर सकती है या कॉपी मांग सकती है
(requirePubkeyInRule), और ब्लॉक तब तक रखा जाता है जब तक Drive उसे मिटा न दे। सर्वर को हर नियम
में एक समय-सीमा चाहिए; बिना पढ़े 100 years असल में कभी नहीं के बराबर है, और वैसे भी Drive अपने
ब्लॉक नियमित रूप से पढ़ता है। पोर्ट सिर्फ़ उसी मशीन पर सुनता है (127.0.0.1): सब कुछ प्रॉक्सी से
होकर जाता है। इसे शुरू करें:
cd /root/blossom
docker compose up -d
चरण 2: आगे HTTPS लगाएं
Caddy के साथ पूरा कॉन्फ़िगरेशन (/etc/caddy/Caddyfile) यह है:
blossom.example.com {
reverse_proxy 127.0.0.1:3000
}
अगर वही Caddy पहले से आपका रिले चला रहा है, तो यह ब्लॉक उसके ब्लॉक के नीचे जोड़ दें। Caddy को फिर से
लोड करें (sudo systemctl reload caddy)। अब ब्राउज़र में https://blossom.example.com खोलने पर
404 के साथ जवाब आना चाहिए: कोई होम पेज नहीं है, जानबूझकर।
चरण 3: Herkos Drive को बताएं
- Herkos Drive में सेटिंग → सर्वर खोलें,
https://blossom.example.comजोड़ें और उसे आपका सर्वर के रूप में चिह्नित करें। - Drive हर अपलोड से पहले उससे पूछता है। तब से हर नई फ़ाइल की एक कॉपी वहां बनती है, और जो फ़ाइलें आपके पास पहले से थीं, उन्हें अपनी कॉपी तब मिलती है जब Drive अगली बार प्रतियाँ जाँचता है।
- सूची में बाकी सर्वर भी रखें। आपका सर्वर तीन कॉपी में से एक है, कभी अकेला नहीं: अगर वह बंद हो जाए, तो आपकी फ़ाइलें बाकी सर्वर पर फिर भी रहती हैं, और एक हफ़्ते तक कोई जवाब न आने पर Drive आपको बताता है।
चरण 4: हर रात बैकअप लें
अगर आपका सर्वर ख़त्म हो जाए, तो Drive इसे पहचान लेता है और प्रभावित फ़ाइलों को आपकी सूची के दूसरे सर्वर पर कॉपी देता है। लेकिन आपके सर्वर वाली कॉपी ही अकेली ऐसी है जो किसी और पर निर्भर नहीं है, और हर रात का बैकअप आपको उसे फिर से बनाने देता है, इंटरनेट पर सब कुछ दोबारा कॉपी किए बिना।
सर्वर सब कुछ Docker वॉल्यूम blossom_data के अंदर रखता है (नाम उस फ़ोल्डर से शुरू होता है जिसमें
फ़ाइलें हैं; इसे docker volume ls से जांचें): ब्लॉक, हर एक अलग फ़ाइल में, और एक छोटा SQLite
डेटाबेस जो बताता है कि हर ब्लॉक किसने अपलोड किया। ब्लॉक कभी नहीं बदलते, लेकिन डेटाबेस को तब कॉपी
नहीं करना चाहिए जब उसमें लिखा जा रहा हो। इसलिए स्क्रिप्ट सर्वर चलते हुए सब कुछ कॉपी करती है, फिर
बीच में जो बदला उसे कॉपी करने में लगने वाले कुछ सेकंड के लिए उसे रोकती है, उसे फिर शुरू करती है,
और उसके बाद ही कॉपी अपलोड करती है। जब तक वह रुका रहता है, Drive बस थोड़ी देर बाद फिर कोशिश करता है।
कॉपी restic के ज़रिए सर्वर से बाहर जाती है, जो उसे बाहर जाने से पहले एन्क्रिप्ट करता है। सर्वर वाले प्रोवाइडर से अलग प्रोवाइडर की जगह इस्तेमाल करें: एक SFTP खाता (स्टोरेज बॉक्स, घर का कंप्यूटर) या S3-संगत बकेट। अगर आप पहले से अपने रिले का बैकअप इसी तरह लेते हैं, तो वही जगह किसी दूसरे फ़ोल्डर के साथ इस्तेमाल करें।
-
टूल इंस्टॉल करें और रिपॉज़िटरी बनाएं। पासवर्ड अपने पासवर्ड मैनेजर में भी रखें: उसके बिना कॉपी पढ़ी नहीं जा सकतीं, और अगर वह सिर्फ़ सर्वर पर है, तो सर्वर के साथ ही ख़त्म हो जाएगा। SFTP के लिए, root को एक ऐसी SSH कुंजी भी चाहिए जिसे बैकअप मशीन स्वीकार करे (
sudo ssh-keygen -t ed25519, फिर/root/.ssh/id_ed25519.pubको वहां जोड़ें)।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' -
इसे
/usr/local/bin/backup-blossomके रूप में सेव करें और एक्ज़ीक्यूटेबल बनाएं (sudo chmod 700 /usr/local/bin/backup-blossom)। अगर आपकी फ़ाइलें/root/blossomमें नहीं हैं, तोBLOSSOM_DIRबदलें। यह पिछले 14 दिन, 8 हफ़्ते और 12 महीने की कॉपी रखती है। ब्लॉक कभी नहीं बदलते, इसलिए हर रात सिर्फ़ नया हिस्सा जुड़ता है।#!/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 -
इसे एक बार हाथ से चलाएं (
sudo /usr/local/bin/backup-blossom), फिरsudo crontab -eसे शेड्यूल करें। दूसरी लाइन हर महीने स्टोर किए गए डेटा का दसवां हिस्सा वापस पढ़ती है, हर बार अलग दसवां हिस्सा, ताकि साबित हो सके कि कॉपी अब भी खोली जा सकती हैं। बीच-बीच में/var/log/backup-blossom.logदेखते रहें:Fatalवाली लाइन का मतलब है कि उस रात की कॉपी विफल रही। अगर रिले का बैकअप भी इसी मशीन पर लिया जाता है, तो ये समय उसके अपने समय से नहीं टकराते।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
रीस्टोर करने के लिए (नया सर्वर, या डिस्क ख़राब होने के बाद): सर्वर को फिर से सेट करें
(चरण 1 और 2) और इसी रिपॉज़िटरी के साथ इस चरण के बिंदु 1 और 2 दोहराएं,
लेकिन नया पासवर्ड बनाने के बजाय अपना सेव किया हुआ पासवर्ड /root/.restic-blossom-password में
लिखें, और restic init छोड़ दें। फिर नवीनतम बैकअप को
सर्वर के वॉल्यूम में कॉपी करें:
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 प्रतियाँ जाँचता है, तो वह ब्लॉक को फिर से पा लेता है, और आख़िरी बैकअप के बाद जो कुछ आया, उसे दूसरे सर्वर से कॉपी कर लेता है। हमने 27 अक्टूबर 2026 को यह पूरी कड़ी आज़माई: बैकअप, सर्वर मिटाया, रीस्टोर, हर ब्लॉक उसके अपने हैश से जांचकर वापस पढ़ा गया, और बाद में Drive की कुंजी से मिटाया गया।
साल में एक बार, यह रीस्टोर किसी अतिरिक्त मशीन पर करें और जांचें कि सर्वर आपके ब्लॉक के साथ जवाब देता है: यही एकमात्र टेस्ट है जो पासवर्ड समेत पूरी कड़ी को साबित करता है।
जानने लायक बातें
- सिर्फ़ आपका Drive अपलोड कर सकता है। किसी भी Blossom सर्वर की तरह, जो कोई किसी ब्लॉक का पता जानता है वह उसे डाउनलोड कर सकता है, लेकिन वह एन्क्रिप्टेड है: आपके Drive की कुंजियों के बिना वह सिर्फ़ शोर है।
- अगर आपकी वॉल्यूम कुंजी बदल जाए (वॉल्यूम नया होने पर Drive आपको बताता है), तो नई कुंजी को
pubkeysके नीचे एक और लाइन के रूप में जोड़ें, फिर से शुरू करें (docker compose up -d), और पुरानी कुंजी वहीं रहने दें। - अपडेट। चेंजलॉग पढ़ें,
image:में वर्शन बदलें, औरdocker compose pullऔरdocker compose up -dचलाएं। - आपका IP पता। सर्वर उससे कनेक्ट होने वाले हर ऐप का पता देखता है, जैसा कि हर सर्वर करता है। आपके अपने सर्वर पर, उन्हें देखने वाले सिर्फ़ आप हैं।