IvyLabs Wiki
भाषा: हिन्दी

Docker Compose से डिप्लॉय करें

एक ही मशीन पर पूरा BostonIvy चलता है: PostgreSQL, सर्वर और BostonIvy Web, जिनका विवरण bostonivy-os रिपॉज़िटरी की deploy/compose.yaml में है। शुरू करने का यह सबसे तेज़ तरीका है, और परिवार या छोटी टीम के लिए काफ़ी है।

शुरू करने से पहले

echo "$GITHUB_TOKEN" | docker login ghcr.io -u <आपका GitHub यूज़रनेम> --password-stdin

BostonIvy शुरू करें

  1. उदाहरण से अपनी सेटिंग बनाएँ:

    cd deploy
    cp .env.example .env
    
  2. सर्वर सीक्रेट बनाएँ और उसे .env में BOSTONIVY_AUTH_SECRET के रूप में चिपकाएँ:

    docker compose run --rm --no-deps bostonivy keygen
    
  3. सब कुछ शुरू करें:

    docker compose up -d
    
  4. http://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

इनमें से एक चुनें:

बैकअप और अपग्रेड

तीन चीज़ों का बैकअप लें:

अपग्रेड करने के लिए नई इमेज लें और दोबारा शुरू करें:

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