Author:
    Creation:2026-06-30Last update:2026-09-27

    Intlayer सेल्फ-होस्टिंग

    Intlayer आपके अपने बुनियादी ढांचे पर चल सकता है, किसी Intlayer Cloud खाते की आवश्यकता नहीं है। तीन सेटअप उपलब्ध हैं, जो सभी एक ही इंस्टॉलर (install.sh, Windows पर install.ps1, या npx intlayer init infra) द्वारा प्रबंधित होते हैं:

    SetupWhat it isPick it for
    डेस्कटॉप ऐपmacOS, Linux और Windows के लिए नेटिव डैशबोर्डएक स्थानीय क्लाइंट, कुछ भी होस्ट करने की आवश्यकता नहीं
    ऑल-इन-वन Dockerडैशबोर्ड, API, MongoDB, Redis और MinIO एक एकल कंटेनर मेंपरीक्षण और छोटे एकल-मशीन इंस्टॉलेशन
    Docker Composeप्रति सेवा एक कंटेनर, प्रत्येक डेटास्टोर को प्रबंधित सेवा से बदला जा सकता हैप्रोडक्शन, स्केलिंग, प्रबंधित डेटाबेस

    Table of Contents

    प्रकाशित इमेज और पैकेज

    ArtifactDocker HubGHCR mirrorContents
    All-in-one containerintlayer/cms-allghcr.io/aymericzip/intlayer/cms-allapp + backend + MongoDB 8 + Redis + MinIO + Chromium
    Dashboard (frontend)intlayer/cms-frontendghcr.io/aymericzip/intlayer/cms-frontendTanStack Start dashboard on Bun
    API (backend)intlayer/cms-backendghcr.io/aymericzip/intlayer/cms-backendFastify REST API on Bun + Chromium
    Desktop appGitHub releasesn/a.dmg (macOS), .deb / .rpm / .AppImage (Linux), .exe / .msi (Windows)

    तीनों इमेज एक ही docker/selfhost/Dockerfile से बनाई गई हैं और प्रत्येक रिलीज़ पर प्रकाशित की जाती हैं। Compose स्टैक आधिकारिक mongo:8, redis:8-alpine और quay.io/minio/minio इमेज भी खींचता है।

    सेटअप

    इंस्टॉलर पूछता है कि आप कौन सा सेटअप चाहते हैं, पूर्वापेक्षाओं की जाँच करता है (Docker स्थापित करने की पेशकश करता है), पहले से उत्पन्न रहस्यों के साथ पर्यावरण फ़ाइल लिखता है, और इमेज खींचता है। यह अपने आप कुछ भी शुरू नहीं करता है: Docker मोड को पहले मेलर की आवश्यकता होती है, इसलिए यह चलाने के लिए कमांड प्रिंट करके समाप्त होता है। इसे फिर से चलाना सुरक्षित है: मौजूदा पर्यावरण फ़ाइल कभी भी अधिलेखित नहीं होती है, जो इसे अपग्रेड पथ भी बनाती है।

    Tauri के साथ निर्मित एक नेटिव एप्लिकेशन के रूप में Intlayer डैशबोर्ड। यह Intlayer Cloud (https://app.intlayer.org) में साइन इन करता है, इसलिए कुछ भी होस्ट करने की आवश्यकता नहीं है। जब आप ब्राउज़र टैब के बजाय स्थानीय क्लाइंट चाहते हैं तो यह सही विकल्प है।

    इंस्टॉल करें

    इंस्टॉलर आपके OS और CPU के लिए उपयुक्त पैकेज डाउनलोड करता है और उसे खोलता है (macOS), इंस्टॉल करता है (Linux पर dpkg / rpm), या सेटअप विज़ार्ड शुरू करता है (Windows)। आप इसे रिलीज़ पेज से मैन्युअल रूप से भी डाउनलोड कर सकते हैं।

    sh
    curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode desktop
    

    In PowerShell:

    powershell
    $env:INTLAYER_MODE = "desktop"; irm https://intlayer.org/install.ps1 | iex
    
    bash
    npx intlayer init infra --mode desktop
    

    आवश्यकताएं

    • Node.js: ऐप डैशबोर्ड सर्वर को एम्बेड करता है और इसे मशीन के node बाइनरी के साथ शुरू करता है। यदि ऐप नहीं खुलता है तो इसे nodejs.org से इंस्टॉल करें।
    प्रकाशित डेस्कटॉप बिल्ड Intlayer Cloud बैकएंड से संचार करता है। इसे सेल्फ-होस्टेड बैकएंड पर इंगित करने के लिए ऐप को आपके API पर सेट VITE_BACKEND_URL के साथ फिर से बनाने की आवश्यकता होती है, सीमाएँ देखें।

    सब कुछ एक ही intlayer/cms-all कंटेनर के अंदर चलता है, जिसकी देखरेख s6-overlay द्वारा की जाती है, जिसमें प्रत्येक डेटास्टोर एक ही वॉल्यूम पर बना रहता है।

    plaintext
                    ┌─────────────────────────────┐
     browser ──────▶ │  app  (TanStack Start)  :3000│ ──┐
     (localhost)    └─────────────────────────────┘   │ VITE_BACKEND_URL (baked at build)
                    ┌─────────────────────────────┐   │
                    │  backend (Fastify/Bun)  :3100│ ◀─┘
                    └──────────────┬──────────────┘
              ┌──────────┬─────────┼──────────────┐
              ▼          ▼         ▼               ▼
          mongo:27017  redis:6379  minio:9000   Chromium
          /data/mongo  /data/redis /data/minio  (in-image)
          (1-node RS)              minio:9001
    
    सेवाहोस्ट पोर्टउद्देश्य
    app3000डैशबोर्ड (CMS UI)
    backend3100REST API (/health एंडपॉइंट)
    mongoआंतरिकMongoDB 8, एकल-नोड प्रतिकृति सेट rs0
    redisआंतरिककार्य कतारें (BullMQ) और कैशिंग
    minio9000 (S3), 9001 (कंसोल)अवतार और स्क्रीनशॉट के लिए S3-संगत ऑब्जेक्ट स्टोरेज

    बूट क्रम s6 निर्भरताओं द्वारा प्रबंधित किया जाता है (mongod → प्रतिकृति-सेट आरंभ, minio → बकेट निर्माण, फिर backend, फिर app), और सेवाएं समाप्त होने पर पुनरारंभ होती हैं, इसलिए पहला बूट स्वचालित रूप से ठीक हो जाता है।

    पूर्वापेक्षाएँ

    • Docker ≥ 24: इंस्टॉलर इसे इंस्टॉल करने की पेशकश करता है (Linux पर get.docker.com के माध्यम से, macOS पर Homebrew)। Windows पर, पहले Docker Desktop (WSL 2 बैकएंड) इंस्टॉल करें।
    • होस्ट पर पोर्ट 3000, 3100, 9000 और 9001 खाली होने चाहिए। MinIO 9000 ब्राउज़र द्वारा सुलभ रहना चाहिए क्योंकि संपत्तियां सीधे S3_PUBLIC_URL से लोड होती हैं।
    • एक मेलर: Resend API कुंजी या एक SMTP रिले।

    1. इंस्टॉल करें

    उत्पन्न BETTER_AUTH_SECRET और S3_SECRET_ACCESS_KEY के साथ ./intlayer.env लिखता है, बाकी भरने के लिए कुछ प्रश्न पूछता है, और intlayer/cms-all:latest खींचता है।

    sh
    curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode docker
    

    In PowerShell:

    powershell
    $env:INTLAYER_MODE = "docker"; irm https://intlayer.org/install.ps1 | iex
    
    bash
    npx intlayer init infra --mode docker
    

    2. सेटअप प्रश्नों के उत्तर दें

    इंस्टॉलर निम्नलिखित पूछता है (किसी सुझाव को स्वीकार करने के लिए Enter दबाएँ, हर उत्तर को बाद में फ़ाइल में बदला जा सकता है):

    • वह डोमेन जिस पर Intlayer सर्व किया जाता है। localhost पर बने रहने के लिए इसे खाली छोड़ दें। example.org जैसे डोमेन के साथ, यह डैशबोर्ड के लिए https://cms.example.org, API के लिए https://back.example.org और ऑब्जेक्ट स्टोरेज के लिए https://s3.example.org/intlayer सुझाता है, और DOMAIN, APP_URL, BACKEND_URL तथा S3_PUBLIC_URL लिखता है। आगे के चरणों के लिए कस्टम डोमेन देखें।
    • मेलर: Resend (API कुंजी) या एक SMTP रिले (होस्ट, पोर्ट, क्रेडेंशियल), साथ ही प्रेषक का पता। इसे छोड़ा जा सकता है और बाद में हाथ से किया जा सकता है।
    • AI सुविधाओं के लिए एक वैकल्पिक OpenAI API कुंजी।

    टर्मिनल के बिना (उदाहरण के लिए जब स्क्रिप्ट CI से चलाई जाती है), प्रश्न छोड़ दिए जाते हैं और केवल रहस्य उत्पन्न होते हैं। intlayer.env खोलें और Resend या SMTP हाथ से भरें (विवरण के लिए ग्लोबल मेलर देखें):

    intlayer.env
    # Option A: Resend
    RESEND_API_KEY=<your-resend-key>
    
    # Option B: SMTP (takes over from Resend as soon as MAIL_SMTP_HOST is set)
    MAIL_SMTP_HOST=smtp.example.com
    MAIL_SMTP_PORT=587
    MAIL_SMTP_USER=<user>
    MAIL_SMTP_PASSWORD=<password>
    MAIL_FROM=Intlayer <no-reply@example.com>
    

    3. चलाएं

    यह इंस्टॉलर द्वारा प्रिंट किया गया रन कमांड है (कस्टम डोमेन के साथ, इससे पहले वह docker build चलता है जो intlayer/cms-all:custom बनाता है, कस्टम डोमेन देखें):

    sh
    docker run -d --name intlayer \
      --restart unless-stopped \
      -p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 \
      -v intlayer-data:/data \
      --env-file ./intlayer.env \
      intlayer/cms-all:latest
    
    powershell
    docker run -d --name intlayer `
      --restart unless-stopped `
      -p 3000:3000 -p 3100:3100 -p 9000:9000 -p 9001:9001 `
      -v intlayer-data:/data `
      --env-file ./intlayer.env `
      intlayer/cms-all:latest
    

    CLI इंस्टॉलर चलाता है जो अन्य टैब में दिखाए गए docker run … कमांड को प्रिंट करता है। मेलर को कॉन्फ़िगर करने के बाद इसे अपने टर्मिनल में पेस्ट करें।

    http://localhost:3000 (या अपना डैशबोर्ड URL) खोलें और प्रथम-रन सेटअप का पालन करें। पहला बूट प्रतिकृति सेट और बकेट को इनिशियलाइज़ करता है, इसलिए इसे एक मिनट का समय दें।

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

    सभी स्थिति intlayer-data वॉल्यूम (/data/mongo, /data/redis, /data/minio) में रखी जाती है।

    sh
    # Backup (stop the container first so MongoDB's files are consistent)
    docker stop intlayer
    docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar czf /backup/intlayer-data.tar.gz /data
    docker start intlayer
    
    # Restore
    docker run --rm -v intlayer-data:/data -v "$(pwd)":/backup busybox tar xzf /backup/intlayer-data.tar.gz -C /
    

    अपग्रेड करने के लिए, इंस्टॉलर को फिर से चलाएं (यह नवीनतम इमेज खींचता है और intlayer.env रखता है), फिर docker rm -f intlayer चलाएं और स्टार्ट कमांड को फिर से चलाएं। बंडल किए गए के बजाय प्रबंधित MongoDB का उपयोग करने के लिए, intlayer.env में MONGODB_URI सेट करें।

    एक निजी Compose नेटवर्क पर प्रति सेवा एक कंटेनर। डैशबोर्ड और API प्रकाशित intlayer/cms-frontend और intlayer/cms-backend इमेज का उपयोग करते हैं; डेटास्टोर आधिकारिक mongo, redis और minio इमेज का उपयोग करते हैं।

    plaintext
                    ┌───────────────────┐
     browser ──────▶ │  app        :3000 │ ── SSR ──▶ http://backend:3100
     (localhost)    └───────────────────┘
                    ┌───────────────────┐
     browser ──────▶ │  backend    :3100 │
     (localhost)    └─────────┬─────────┘
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
         mongo:27017     redis:6379      minio:9000 ◀── browser (assets)
         (1-node RS)                     minio:9001
    
    सेवाइमेजभूमिका
    appintlayer/cms-frontend:3000 पर डैशबोर्ड; बैकएंड के स्वस्थ होने की प्रतीक्षा करता है
    backendintlayer/cms-backendChromium के साथ :3100 पर API; Mongo, Redis और MinIO बकेट की प्रतीक्षा करता है
    mongomongo:8एकल-नोड प्रतिकृति सेट rs0, अपने स्वयं के स्वास्थ्य परीक्षण द्वारा प्रारंभ किया गया
    redisredis:8-alpineकतारें और कैशिंग, केवल-जोड़ें (append-only) दृढ़ता
    minioquay.io/minio/minio:9000 पर S3 स्टोरेज, :9001 पर कंसोल
    minio-initquay.io/minio/mcवन-शॉट: बकेट और उसकी अज्ञात डाउनलोड नीति बनाता है

    डेटा intlayer_mongo-data, intlayer_redis-data और intlayer_minio-data वॉल्यूम में संग्रहीत किया जाता है। सेवा कनेक्शन (MONGODB_URI, REDIS_URL, S3_ENDPOINT, सर्वर-साइड रेंडरिंग के लिए आंतरिक बैकएंड URL) compose फ़ाइल में तय होते हैं और .env पर प्राथमिकता लेते हैं, जो केवल रहस्यों और वैकल्पिक एकीकरणों को रखता है।

    पूर्वापेक्षाएँ

    • Docker ≥ 24 (Compose प्लगइन के साथ): इंस्टॉलर इसे Linux और macOS पर स्थापित करने की पेशकश करता है। Windows पर, पहले Docker Desktop (WSL 2 बैकएंड) स्थापित करें।
    • होस्ट पर पोर्ट 3000, 3100, 9000 और 9001 खाली होने चाहिए।
    • एक मेलर: Resend API कुंजी या एक SMTP रिले।

    1. इंस्टॉल करें

    उत्पन्न रहस्यों के साथ docker-compose.yml और एक .env को ./intlayer/ में लिखता है, ऑल-इन-वन मोड वाले ही सेटअप प्रश्न (डोमेन, मेलर, OpenAI कुंजी) पूछता है, और इमेज खींचता है।

    sh
    curl -fsSL https://intlayer.org/install.sh | sh -s -- --mode compose
    

    Or by hand:

    sh
    mkdir intlayer && cd intlayer
    curl -fsSLO https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml
    curl -fsSL  https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -o .env
    # fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY (openssl rand -hex 32)
    

    In PowerShell:

    powershell
    $env:INTLAYER_MODE = "compose"; irm https://intlayer.org/install.ps1 | iex
    

    Or by hand:

    powershell
    mkdir intlayer; cd intlayer
    irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/docker-compose.yml -OutFile docker-compose.yml
    irm https://raw.githubusercontent.com/aymericzip/intlayer/main/docker/selfhost/.env.template -OutFile .env
    # fill in BETTER_AUTH_SECRET and S3_SECRET_ACCESS_KEY
    
    bash
    npx intlayer init infra --mode compose
    

    2. मेलर कॉन्फ़िगर करें

    यदि आपने मेलर वाला प्रश्न छोड़ दिया था, तो ऑल-इन-वन कंटेनर की तरह ही intlayer/.env में Resend या SMTP भरें (ग्लोबल मेलर देखें)।

    3. चलाएं

    sh
    cd intlayer && docker compose up -d
    

    कस्टम डोमेन के साथ, इंस्टॉलर docker-compose.build.yml भी डाउनलोड करता है और स्टार्ट कमांड docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build बन जाता है (कस्टम डोमेन देखें)।

    http://localhost:3000 (या अपना डैशबोर्ड URL) खोलें और प्रथम-रन सेटअप का पालन करें।

    प्रबंधित डेटास्टोर

    आप जिस सेवा को बदल रहे हैं उसे compose फ़ाइल से (और backend पर इसकी depends_on प्रविष्टि) हटा दें, और संबंधित चर को ओवरराइड करें:

    docker-compose.yml
    services:
      backend:
        environment:
          MONGODB_URI: mongodb+srv://user:password@cluster0.xxxxx.mongodb.net/intlayer
          REDIS_URL: rediss://default:password@redis.example.com:6380
          S3_ENDPOINT: https://s3.eu-west-1.amazonaws.com
          S3_PUBLIC_URL: https://intlayer-assets.s3.eu-west-1.amazonaws.com
    

    S3_ACCESS_KEY_ID / S3_SECRET_ACCESS_KEY / S3_BUCKET_NAME किसी भी S3-संगत प्रदाता के खिलाफ काम करते हैं।

    स्केलिंग

    app और backend स्टेटलेस हैं। लोड बैलेंसर के पीछे, निश्चित होस्ट पोर्ट मैपिंग को हटाने और सेवा नाम द्वारा प्रॉक्सी रूटिंग के साथ, docker compose up -d --scale backend=3 काम करता है। पृष्ठभूमि कार्य Redis (BullMQ) के माध्यम से समन्वित होते हैं, इसलिए कई बैकएंड प्रतिकृतियां सुरक्षित रूप से कतारें साझा करती हैं।

    स्रोत से निर्माण

    एक ओवरराइड दो Intlayer सेवाओं को image: से build: पर स्विच करता है। रिपॉजिटरी क्लोन से:

    sh
    cd docker/selfhost
    docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
    

    क्लोन के बिना, .env में INTLAYER_BUILD_CONTEXT=https://github.com/aymericzip/intlayer.git#main सेट करके बिल्ड कॉन्टेक्स्ट को सीधे रिपॉजिटरी पर इंगित करें। डैशबोर्ड के VITE_* बिल्ड आर्ग्स उसी फ़ाइल के DOMAIN, APP_URL और BACKEND_URL का अनुसरण करते हैं, और इसी तरह एक कस्टम डोमेन लागू किया जाता है।

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

    sh
    # Backup one volume (repeat for intlayer_redis-data and intlayer_minio-data)
    docker compose stop
    docker run --rm -v intlayer_mongo-data:/data -v "$(pwd)":/backup busybox tar czf /backup/mongo-data.tar.gz /data
    docker start intlayer
    
    # Upgrade, volumes are kept
    docker compose pull && docker compose up -d
    

    इंस्टॉलर सेटिंग्स

    --mode (या INTLAYER_MODE) के बिना, इंस्टॉलर एक मेनू का संकेत देता है: desktop, docker (ऑल-इन-वन) या compose। यह कुछ पर्यावरण चर भी पढ़ता है; इन्हें curl के बजाय शेल में पास करें क्योंकि यह पाइप किया गया है:

    sh
    curl -fsSL https://intlayer.org/install.sh | INTLAYER_COMPOSE_DIR=./cms sh -s -- --mode compose
    
    powershell
    $env:INTLAYER_MODE = "compose"; $env:INTLAYER_COMPOSE_DIR = ".\cms"; irm https://intlayer.org/install.ps1 | iex
    
    VariableDefaultApplies toDescription
    INTLAYER_MODE(asked)alldesktop, docker or compose, same as --mode
    INTLAYER_DOWNLOAD_DIR~/DownloadsdesktopWhere the app installer is saved
    INTLAYER_IMAGEintlayer/cms-all:latestdockerAll-in-one image to pull
    INTLAYER_ENV_FILE./intlayer.envdockerWhere to write the environment file
    INTLAYER_CONTAINER_NAMEintlayerdockerContainer name
    INTLAYER_DATA_VOLUMEintlayer-datadockerNamed volume mounted at /data
    INTLAYER_APP_PORT3000dockerHost port for the dashboard
    INTLAYER_API_PORT3100dockerHost port for the API
    INTLAYER_S3_PORT9000dockerHost port for the MinIO S3 API
    INTLAYER_CONSOLE_PORT9001dockerHost port for the MinIO console
    INTLAYER_COMPOSE_DIR./intlayercomposeWhere docker-compose.yml and .env are written
    INTLAYER_SELFHOST_REFmainbothGit ref the compose file and env template are fetched from
    INTLAYER_BUILD_CONTEXT…/intlayer.git#mainbothBuild context used when a custom domain requires a rebuild
    INTLAYER_CUSTOM_IMAGEintlayer/cms-all:customdockerTag of the all-in-one image built for a custom domain
    पोर्ट चर मैपिंग के केवल होस्ट पक्ष को बदलते हैं। प्रकाशित इमेज में http://localhost:3000, http://localhost:3100 और http://localhost:9000 डैशबोर्ड बंडल में संकलित होते हैं, इसलिए जब तक आप अपनी खुद की इमेज नहीं बनाते, तब तक डिफ़ॉल्ट रखें, सीमाएँ देखें।

    प्रथम-रन सेटअप

    एक नए इंस्टेंस (खाली डेटाबेस) पर डैशबोर्ड खोलने पर स्वचालित रूप से /init पर पुनर्निर्देशित किया जाएगा:

    1. पहला खाता बनाएं। चूंकि उपयोगकर्ता संग्रह खाली है, इसलिए यह खाता स्वचालित रूप से सुपर एडमिन में पदोन्नत हो जाता है।
    2. आपके Resend या SMTP रिले के माध्यम से एक सत्यापन ईमेल भेजा जाता है। ईमेल सत्यापन अनिवार्य है, यही कारण है कि शुरू करने से पहले एक मेलर कॉन्फ़िगर किया जाना चाहिए।
    3. ईमेल में दिए गए लिंक पर क्लिक करें और साइन इन करें।

    एक बार व्यवस्थापक मौजूद होने के बाद, /init सामान्य साइन-इन पृष्ठ पर पुनर्निर्देशित करता है।

    पर्यावरण चर

    दोनों Docker मोड docker/selfhost/.env.template से उत्पन्न एक ही फ़ाइल (कंटेनर के लिए intlayer.env, Compose के लिए .env) पढ़ते हैं।

    आवश्यक

    VariableExampleDescription
    BETTER_AUTH_SECRET(generated)32-byte secret for session signing
    S3_SECRET_ACCESS_KEY(generated)Secret for the bundled MinIO
    RESEND_API_KEY(your key)Transactional email via Resend. Required for first-run setup unless an SMTP relay is configured instead (see Global mailer)

    परिनियोजन द्वारा तय

    ये इमेज (ऑल-इन-वन) या compose फ़ाइल द्वारा सेट किए जाते हैं, और इन्हें केवल गैर-मानक टोपोलॉजी के लिए ओवरराइड करने की आवश्यकता होती है। DOMAIN, APP_URL, BACKEND_URL और S3_PUBLIC_URL इसके अपवाद हैं: env फ़ाइल में सेट होने पर, ये दोनों मोड में प्राथमिकता लेते हैं (कस्टम डोमेन देखें)।

    VariableAll-in-oneDocker ComposeDescription
    PORT31003100Backend listening port
    APP_URLhttp://localhost:3000http://localhost:3000Public URL of the dashboard
    BACKEND_URLhttp://localhost:3100http://localhost:3100Public URL of the backend API
    DOMAINlocalhostlocalhostCookie domain
    SELF_HOSTEDtruetrueDisables the cloud-only API endpoints (billing, subscriptions, marketplace)
    MONGODB_URImongodb://127.0.0.1:27017/intlayer?replicaSet=rs0mongodb://mongo:27017/…MongoDB connection string, any mongodb:// or mongodb+srv:// cluster works
    REDIS_URLredis://127.0.0.1:6379redis://redis:6379Redis
    S3_ENDPOINThttp://127.0.0.1:9000http://minio:9000MinIO (server-to-server)
    S3_PUBLIC_URLhttp://localhost:9000/intlayerhttp://localhost:9000/intlayerPublic URL for browser asset loading
    S3_BUCKET_NAMEintlayerintlayerBucket name
    S3_ACCESS_KEY_IDintlayerintlayerMinIO access key

    Compose app सेवा अतिरिक्त रूप से INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100 प्राप्त करती है: ब्राउज़र localhost:3100 पर API तक पहुँचता है, लेकिन सर्वर-साइड रेंडरिंग Compose नेटवर्क के अंदर चलती है और इसलिए इसे सेवा नाम का उपयोग करना चाहिए।

    कस्टम डोमेन

    बैकएंड अपने सार्वजनिक URL रनटाइम पर पढ़ता है, लेकिन डैशबोर्ड में वे कंपाइल किए हुए होते हैं: प्रकाशित intlayer/cms-frontend और intlayer/cms-all इमेज केवल http://localhost:3000 पर काम करती हैं। इसलिए अपने डोमेन पर Intlayer सर्व करने के लिए दो चीज़ों की आवश्यकता होती है, और डोमेन वाले प्रश्न का उत्तर देने पर इंस्टॉलर दोनों तैयार करता है:

    1. env फ़ाइल में चार वेरिएबल, जिन्हें बैकएंड पढ़ता है (कुकीज़, ईमेल लिंक, OAuth कॉलबैक, एसेट URL) और जिन्हें docker-compose.build.yml बिल्ड आर्ग्स के रूप में उपयोग करता है:

      intlayer.env
      DOMAIN=example.org                          # cookie domain, parent of the hosts below
      APP_URL=https://cms.example.org
      BACKEND_URL=https://back.example.org
      S3_PUBLIC_URL=https://s3.example.org/intlayer
      
    2. उन URL के साथ बनाई गई डैशबोर्ड इमेज। Docker इसे सीधे रिपॉजिटरी से बनाता है, क्लोन की आवश्यकता नहीं:

      sh
      # Docker Compose: the override reads the build args from .env
      docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
      
      # All-in-one
      docker build -f docker/selfhost/Dockerfile \
        --build-arg VITE_DOMAIN=example.org \
        --build-arg VITE_SITE_URL=https://cms.example.org \
        --build-arg VITE_IDE_URL=https://cms.example.org \
        --build-arg VITE_BACKEND_URL=https://back.example.org \
        -t intlayer/cms-all:custom \
        https://github.com/aymericzip/intlayer.git#main
      

    फिर कंटेनर के सामने TLS के साथ एक रिवर्स प्रॉक्सी लगाएँ: cms.example.org → पोर्ट 3000, back.example.org → 3100, s3.example.org → 9000। तीनों होस्ट को DOMAIN प्रत्यय साझा करना होगा, क्योंकि सेशन कुकी उसी तक सीमित है।

    वैकल्पिक (अनुपस्थित होने पर सुविधाएं सुचारू रूप से कार्य करती हैं)

    VariableFeature
    OPENAI_API_KEYAI-assisted translation and content audit
    GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRETGitHub OAuth login
    GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRETGoogle OAuth login
    GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRETGitLab OAuth login
    MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRETMicrosoft OAuth login

    ग्लोबल मेलर

    पासवर्ड रीसेट और मैजिक लिंक जैसे गैर-संगठन ईमेल सहित सभी लेन-देन संबंधी ईमेल दो वैश्विक ट्रांसपोर्ट में से एक से होकर गुजरते हैं:

    • Resend: RESEND_API_KEY का उपयोग करके।
    • SMTP: MAIL_SMTP_* चरों का उपयोग करके। जैसे ही MAIL_SMTP_HOST सेट होता है, SMTP का उपयोग किया जाता है और RESEND_API_KEY को अनदेखा कर दिया जाता है।

    MAIL_PROVIDER केवल तभी आवश्यक होता है जब दोनों कॉन्फ़िगर होने पर किसी एक ट्रांसपोर्ट को बाध्य करना हो (उदाहरण के लिए SMTP होस्ट मौजूद होने पर Resend रखने के लिए MAIL_PROVIDER=resend)।

    VariableExampleDescription
    MAIL_FROMIntlayer <no-reply@acme.com>Sender header for either transport. Accepts a bare address or Name <email>
    MAIL_SMTP_HOSTsmtp.acme.comSMTP host. Setting it selects the SMTP transport
    MAIL_SMTP_PORT587SMTP port (defaults to 587)
    MAIL_SMTP_SECUREfalseImplicit TLS. Set true for port 465
    MAIL_SMTP_USER(your user)SMTP username (optional; omit for unauthenticated relays)
    MAIL_SMTP_PASSWORD(your password)SMTP password
    MAIL_PROVIDERresendOptional override: smtp or resend. Leave unset to auto-select
    प्राथमिकता क्रम: किसी संगठन का अपना मेलर (संगठन डैशबोर्ड से कॉन्फ़िगर किया गया) ग्लोबल मेलर को ओवरराइड करता है, और ग्लोबल मेलर डिफ़ॉल्ट Resend कुंजी को ओवरराइड करता है।

    अपने Intlayer प्रोजेक्ट को कनेक्ट करना

    एक बार स्टैक चलने के बाद, अपने प्रोजेक्ट को intlayer.org के बजाय अपने सेल्फ-होस्टेड बैकएंड और डैशबोर्ड की ओर इंगित करने के लिए कॉन्फ़िगर करें।

    प्रोजेक्ट कॉन्फ़िगरेशन

    intlayer.config.ts
    import type { IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      editor: {
        clientId: process.env.INTLAYER_CLIENT_ID,
        clientSecret: process.env.INTLAYER_CLIENT_SECRET,
    
        /**
         * URL of the self-hosted CMS dashboard.
         * Default: https://app.intlayer.org
         */
        cmsURL: process.env.INTLAYER_CMS_URL, // e.g. http://localhost:3000
    
        /**
         * URL of the self-hosted backend API.
         * Default: https://back.intlayer.org
         */
        backendURL: process.env.INTLAYER_BACKEND_URL, // e.g. http://localhost:3100
      },
    };
    
    export default config;
    

    Set the environment variables in your project's .env:

    sh
    INTLAYER_CMS_URL=http://localhost:3000
    INTLAYER_BACKEND_URL=http://localhost:3100
    INTLAYER_CLIENT_ID=<your-client-id>
    INTLAYER_CLIENT_SECRET=<your-client-secret>
    

    अपने सेल्फ-होस्टेड डैशबोर्ड में प्रोजेक्ट्स → एक्सेस कुंजियाँ (http://localhost:3000/projects) पर एक्सेस क्रेडेंशियल बनाएं।

    @intlayer/api SDK

    प्रोग्रामेटिक रूप से @intlayer/api SDK का उपयोग करते समय, backendURL को स्पष्ट रूप से पास करें:

    cms.ts
    import { createIntlayerCMS } from "@intlayer/api";
    import { dictionaryEndpoint } from "@intlayer/api/dictionary";
    
    const cms = createIntlayerCMS({
      editor: {
        clientId: process.env.INTLAYER_CLIENT_ID,
        clientSecret: process.env.INTLAYER_CLIENT_SECRET,
        backendURL: process.env.INTLAYER_BACKEND_URL, // http://localhost:3100
      },
    });
    
    const { data: dictionaries } = await dictionaryEndpoint(cms).getDictionaries();
    

    सीमाएँ

    • कस्टम डोमेन का अर्थ है पुनर्निर्माण। सभी ब्राउज़र-सामना करने वाले VITE_* URL निर्माण के समय डैशबोर्ड में इनलाइन होते हैं, और प्रकाशित इमेज (और डेस्कटॉप ऐप) localhost / Intlayer Cloud मानों के साथ आते हैं। डिफ़ॉल्ट रूप से डैशबोर्ड को http://localhost:3000 पर, API को :3100 पर और MinIO को :9000 पर एक्सेस किया जाना चाहिए; होस्ट पोर्ट को रीमैप करने का भी यही प्रभाव होता है। जब आप डोमेन देते हैं तो इंस्टॉलर रिपॉजिटरी से पुनर्निर्माण के लिए सब कुछ तैयार कर देता है (कस्टम डोमेन देखें), लेकिन बिल्ड में स्वयं कई मिनट लगते हैं। डेस्कटॉप ऐप को सेल्फ-होस्टेड बैकएंड पर इंगित करना समर्थित नहीं है।
    • ईमेल के लिए एक कार्यशील मेलर की आवश्यकता होती है। प्रथम-रन सेटअप ईमेल सत्यापन लागू करता है, इसलिए या तो RESEND_API_KEY या SMTP रिले (MAIL_SMTP_*) कॉन्फ़िगर किया जाना चाहिए। पहले एडमिन के साइन इन करने के बाद, प्रत्येक संगठन डैशबोर्ड से अपना स्वयं का SMTP या Resend मेलर भी कॉन्फ़िगर कर सकता है।
    • डेस्कटॉप ऐप को अपने एम्बेडेड सर्वर को शुरू करने के लिए मशीन पर Node.js की आवश्यकता होती है।
    • कोई डॉक्यूमेंटेशन असिस्टेंट नहीं। intlayer.org का AI डॉक असिस्टेंट (/api/ai/ask, /api/search/doc) लगभग 130 MB के पूर्व-गणना किए गए डॉक्यूमेंटेशन एम्बेडिंग पर निर्भर करता है जो सेल्फ-होस्ट इमेज में शामिल नहीं होते; इसलिए सेल्फ-होस्टेड मोड में ये दो रूट पंजीकृत नहीं होते। डैशबोर्ड की अपनी AI सुविधाएँ (अनुवाद, ऑडिट, ऑटोकम्प्लीट, चैट) अप्रभावित रहती हैं और उन्हें केवल OPENAI_API_KEY की आवश्यकता होती है।

    उपयोगी लिंक्स