Docker Compose से डिप्लॉय करें
एक ही मशीन पर पूरा BostonIvy चलता है: PostgreSQL, सर्वर और BostonIvy Web, जिनका विवरण bostonivy-os रिपॉज़िटरी की deploy/compose.yaml में है। शुरू करने का यह सबसे तेज़ तरीका है, और परिवार या छोटी टीम के लिए काफ़ी है।
शुरू करने से पहले
- Docker और Compose v2 (
docker compose versionv2.x दिखाए)। - डिप्लॉय फ़ाइलें: bostonivy-os का
deployफ़ोल्डर, जिसमेंcompose.yaml,https.yamlऔर.env.exampleहैं। - इमेज तक पहुँच। ये GitHub Container Registry पर प्राइवेट पैकेज हैं।
read:packagesस्कोप वाले GitHub टोकन से एक बार साइन इन करें:
echo "$GITHUB_TOKEN" | docker login ghcr.io -u <आपका GitHub यूज़रनेम> --password-stdin
BostonIvy शुरू करें
उदाहरण से अपनी सेटिंग बनाएँ:
cd deploy cp .env.example .envसर्वर सीक्रेट बनाएँ और उसे
.envमेंBOSTONIVY_AUTH_SECRETके रूप में चिपकाएँ:docker compose run --rm --no-deps bostonivy keygenसब कुछ शुरू करें:
docker compose up -dhttp://localhost:8080 खोलें और अकाउंट बनाएँ। नए डेटाबेस पर पहला अकाउंट एडमिनिस्ट्रेटर बन जाता है। इसके बाद दूसरे लोग साइन अप कर सकते हैं या नहीं, यह
auth.open_registrationऔर एडमिन पैनल की सेटिंग से तय होता है।
docker compose ps में तीनों सर्विस healthy दिखनी चाहिए। सर्वर हर बार शुरू होते समय डेटाबेस माइग्रेट करता है, इसलिए और कुछ चलाने की ज़रूरत नहीं है।
उदाहरण वाली
.envमेंBOSTONIVY_COOKIE_SECURE=falseहै, जो सिर्फ़http://localhostपर काम करता है। किसी और के इस्तेमाल से पहले HTTPS सेट करें (नीचे देखें) और इसेtrueकर दें।
सेटिंग
सारी सेटिंग deploy/.env में हैं:
| वेरिएबल | मतलब |
|---|---|
BOSTONIVY_AUTH_SECRET |
ज़रूरी। सभी साइनिंग और एन्क्रिप्शन कुंजियाँ इसी से बनती हैं। यह खो जाए तो सबको दोबारा साइन इन करना होगा, और एन्क्रिप्ट करके रखे गए TOTP और webhook सीक्रेट भी नहीं खुलेंगे। इसका बैकअप रखें |
BOSTONIVY_URL |
वह पता जिसे लोग खोलते हैं। ईमेल के लिंक और शेयर लिंक इसी का इस्तेमाल करते हैं |
BOSTONIVY_PORT |
इस मशीन का पोर्ट, डिफ़ॉल्ट 8080 |
BOSTONIVY_COOKIE_SECURE |
प्रोडक्शन में true, जिसके लिए HTTPS ज़रूरी है। false सिर्फ़ http://localhost पर आज़माने के लिए, वरना पेज रीलोड करने पर साइन इन छूट जाता है |
BOSTONIVY_SMTP_URL, BOSTONIVY_MAIL_FROM |
ईमेल। जैसे smtps://user:password@smtp.example.com और BostonIvy <noreply@example.com>। ख़ाली छोड़ें तो ईमेल नहीं जाते; log से ईमेल सर्वर लॉग में लिखे जाते हैं, जो आज़माने में काम आता है |
POSTGRES_PASSWORD |
डेटाबेस का पासवर्ड |
BOSTONIVY_VERSION |
इमेज टैग; latest सबसे नई रिलीज़ के साथ चलता है |
BOSTONIVY_SITE |
Caddy का साइट पता; नीचे HTTPS देखें |
सर्वर की बाक़ी हर सेटिंग (रेट लिमिट, Redis, webhook, ऑब्जेक्ट स्टोरेज, अकाउंट डिलीट करने की ग्रेस अवधि आदि) BOSTONIVY_<सेक्शन>__<की> नाम के एनवायरनमेंट वेरिएबल से सेट की जा सकती है, जैसे BOSTONIVY_STORAGE__KIND=s3। इसे compose.yaml में bostonivy.environment के नीचे जोड़ें। पूरी सूची bostonivy-os की bostonivy.example.toml में है।
HTTPS
इनमें से एक चुनें:
Caddy को सर्टिफ़िकेट लेने दें। अपने डोमेन को इस मशीन की ओर पॉइंट करें, फिर
.envमें यह सेट करें:BOSTONIVY_SITE=tasks.example.com BOSTONIVY_URL=https://tasks.example.com BOSTONIVY_COOKIE_SECURE=trueऔर HTTPS ओवरराइड के साथ शुरू करें, जो पोर्ट 80 और 443 खोलता है:
docker compose -f compose.yaml -f https.yaml up -dCaddy सर्टिफ़िकेट अपने-आप लेता और रिन्यू करता है, और उसे
caddyवॉल्यूम में रखता है।आपके मौजूदा रिवर्स प्रॉक्सी के पीछे।
BOSTONIVY_SITE=:80रहने दें, प्रॉक्सी कोBOSTONIVY_PORTकी ओर पॉइंट करें, और पक्का करें कि वह/api/v1/realtimeके WebSocket कनेक्शन भी आगे भेजे, जिनसे लाइव अपडेट आते हैं।
बैकअप और अपग्रेड
तीन चीज़ों का बैकअप लें:
डेटाबेस:
docker compose exec postgres pg_dump -U bostonivy bostonivy > backup.sqlअटैचमेंट और अवतार:
filesवॉल्यूम (या आपका बकेट, अगर आपने उन्हें S3 पर रखा है)।सीक्रेट:
.envमेंBOSTONIVY_AUTH_SECRET।
अपग्रेड करने के लिए नई इमेज लें और दोबारा शुरू करें:
docker compose pull && docker compose up -d
नया वर्ज़न शुरू होते समय डेटाबेस माइग्रेट करता है। माइग्रेशन सिर्फ़ जोड़ते हैं, कभी हटाते नहीं, इसलिए बैकअप के साथ आप पिछले वर्ज़न पर लौट सकते हैं।
कमांड लाइन
docker compose exec bostonivy bostonivy admin promote <यूज़रनेम> # किसी को एडमिनिस्ट्रेटर बनाएँ
echo "नया पासवर्ड" | docker compose exec -T bostonivy bostonivy admin set-password <यूज़रनेम>
docker compose exec bostonivy bostonivy health # हेल्थ चेक
इमेज ख़ुद बनाएँ
bostonivy-web को bostonivy-os के बगल में चेक आउट करें, या .env में BOSTONIVY_WEB_SOURCE से उसका पाथ बताएँ। वेब ऐप BostonIvy के प्राइवेट डिज़ाइन पैकेज का इस्तेमाल करता है, इसलिए बिल्ड को ऐसा टोकन चाहिए जो IvyLabsApp की प्राइवेट रिपॉज़िटरी पढ़ सके। यह सिर्फ़ बिल्ड सीक्रेट के रूप में इस्तेमाल होता है और इमेज में कभी नहीं जाता:
cd deploy
GITHUB_TOKEN=$(gh auth token) docker compose build
docker compose up -d