अपने प्रश्न को पूछें और दस्तावेज़ का सारांश प्राप्त करें, इस पृष्ठ और आपके चुने हुए AI प्रदाता का उपयोग करके
यह दस्तावेज़ पुराना है, आधार संस्करण को इस तिथि पर अपडेट किया गया है 2 जुलाई 2026.
अंग्रेजी दस्तावेज़ पर जाएँसंस्करण इतिहास
इस पृष्ठ की सामग्री एक AI द्वारा अनुवादित की गई है।
अंग्रेजी में मूल सामग्री के अंतिम संस्करण देखेंIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
इंटलेयर को सेल्फ-होस्ट करना
इंटलेयर पूरी तरह से आपके अपने इंफ्रास्ट्रक्चर पर चल सकता है - इसके लिए इंटलेयर क्लाउड खाते की आवश्यकता नहीं है। एक ही कमांड एक उत्पादन-तैयार स्टैक को बूट करता है:
कोड को क्लिपबोर्ड पर कॉपी करें
curl -fsSL https://intlayer.org/install.sh | shइंस्टॉलर एक docker-compose.yml और एक .env डाउनलोड करता है, आवश्यक सीक्रेट्स को स्वतः जेनरेट करता है, और docker compose up -d के साथ सभी कंटेनरों को शुरू करता है।
विषय-सूची
आर्किटेक्चर
कोड को क्लिपबोर्ड पर कॉपी करें
┌─────────────────────────────┐ browser ──────▶ │ app (TanStack Start) :3000│ ──┐ └─────────────────────────────┘ │ VITE_BACKEND_URL ┌─────────────────────────────┐ │ │ backend (Fastify/Bun) :3100│ ◀─┘ └──────────────┬──────────────┘ ┌──────────┬─────────┼──────────┬───────────┐ ▼ ▼ ▼ ▼ ▼ mongo:27017 redis:6379 minio:9000 mailpit:1025 Chromium (1-node RS) (S3 API) (SMTP) (in-image) minio:9001 mailpit:8025 (console) (web UI)क्रोमियम (Puppeteer स्क्रीनशॉट जनरेशन के लिए उपयोग किया जाता है) बैकएंड इमेज के अंदर बंडल किया गया है - किसी अलग कंटेनर की आवश्यकता नहीं है।
पूर्व-आवश्यकताएँ
- डॉकर ≥ 24 और डॉकर कंपोज ≥ v2। यदि इनमें से कोई भी गायब है, तो इंस्टॉलर इंस्टॉल लिंक प्रिंट करता है और बाहर निकल जाता है।
- होस्ट पर पोर्ट
3000,3100,8025,9000, और9001उपलब्ध होने चाहिए। - एक Linux या macOS होस्ट (या Windows पर WSL2)।
त्वरित शुरुआत
कोड को क्लिपबोर्ड पर कॉपी करें
curl -fsSL https://intlayer.org/install.sh | shइंस्टॉलर क्या करता है:
- जांचता है कि
dockerऔरdocker composeमौजूद हैं या नहीं। docker-compose.ymlऔर.env.exampleको./intlayer/में डाउनलोड करता है।- यदि कोई
.envमौजूद नहीं है, तो उदाहरण कॉपी करता है औरopenssl randके माध्यम सेBETTER_AUTH_SECRET,S3_ACCESS_KEY_ID, औरS3_SECRET_ACCESS_KEYके लिए रैंडम सीक्रेट्स जेनरेट करता है। docker compose pull+docker compose up -dचलाता है।- URL प्रिंट करता है: डैशबोर्ड
:3000, API:3100, ईमेल UI:8025, MinIO कंसोल:9001।
स्टैक के चालू होने के बाद, http://localhost:3000 खोलें और अपना पहला अकाउंट बनाएँ।
पहली बार सेटअप
एक नए instance (खाली डेटाबेस) पर, डैशबोर्ड खोलने से आप /init पृष्ठ पर रीडायरेक्ट हो जाते हैं:
- पहला खाता बनाएँ। क्योंकि users collection खाली है, यह खाता स्वचालित रूप से super admin को प्रचारित किया जाता है।
- एक सत्यापन ईमेल भेजा जाता है (Resend के माध्यम से)। ईमेल सत्यापन अनिवार्य है — यही कारण है कि
RESEND_API_KEYको शुरू करने से पहले सेट किया जाना चाहिए। - ईमेल में लिंक पर क्लिक करें, फिर साइन इन करें।
एक बार admin मौजूद हो जाने पर, /init मानक साइन-इन पृष्ठ पर रीडायरेक्ट करता है।
सेवाएँ
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| सर्विस | इमेज | होस्ट पोर्ट(s) | उद्देश्य |
|---|---|---|---|
| app | apps/app/Dockerfile से निर्मित | 3000 | TanStack Start डैशबोर्ड (CMS UI) |
| backend | apps/backend/Dockerfile से निर्मित | 3100 | Fastify REST API (/health एंडपॉइंट) |
| mongo | mongo:7 | आंतरिक | सिंगल-नोड रेप्लिका सेट (rs0) |
| redis | redis:7-alpine | आंतरिक | जॉब क्यू (BullMQ) और कैशिंग (ioredis) |
| minio | minio/minio | 9000 (S3), 9001 (कंसोल) | अवतार और स्क्रीनशॉट के लिए S3-संगत ऑब्जेक्ट स्टोरेज |
| mailpit | axllent/mailpit | 1025 (SMTP), 8025 (वेब UI) | लोकल ट्रांजैक्शनल ईमेल सिंक |
आंतरिक पोर्ट (mongo, redis) डिफ़ॉल्ट रूप से होस्ट पर एक्सपोज़ नहीं किए जाते हैं।
MinIO पोर्ट9000ब्राउज़र द्वारा पहुँच योग्य होना चाहिए क्योंकि अपलोड किए गए एसेट (अवतार, स्क्रीनशॉट) सीधेS3_PUBLIC_URL=http://localhost:9000/intlayerसे लोड होते हैं।
Environment variables
आवश्यक
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| Variable | Example | Description |
|---|---|---|
DB_ID | intlayer | MongoDB Atlas user |
DB_MDP | (your password) | MongoDB Atlas password |
DB_CLUSTER | cluster0.xxxxx.mongodb.net | MongoDB Atlas cluster host (used in the mongodb+srv:// URI) |
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 you configure a global SMTP mailer (see Global mailer) |
आवश्यक (स्वतः जेनरेटेड या प्रॉम्प्टेड)
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| वेरिएबल | उदाहरण | विवरण |
|---|---|---|
NODE_ENV | production | रनटाइम एनवायरनमेंट |
PORT | 3100 | बैकएंड लिसनिंग पोर्ट |
BACKEND_URL | http://localhost:3100 | बैकएंड API का पब्लिक URL |
APP_URL | http://localhost:3000 | डैशबोर्ड का पब्लिक URL |
DOMAIN | localhost | कुकी डोमेन |
MONGODB_URI | mongodb://mongo:27017/intlayer?replicaSet=rs0 | पूर्ण MongoDB कनेक्शन URI |
REDIS_URL | redis://redis:6379 | Redis कनेक्शन URL |
BETTER_AUTH_SECRET | (जेनरेटेड) | सेशन साइनिंग के लिए 32-बाइट सीक्रेट |
MAIL_PROVIDER | smtp | मेल ट्रांसपोर्ट: smtp या resend |
MAIL_SMTP_HOST | mailpit | SMTP होस्टनेम (मेलपिट कंटेनर नाम) |
MAIL_SMTP_PORT | 1025 | SMTP पोर्ट |
MAIL_FROM | Intlayer <no-reply@localhost> | प्रेषक पता |
S3_ENDPOINT | http://minio:9000 | S3-संगत एंडपॉइंट |
S3_PUBLIC_URL | http://localhost:9000/intlayer | ब्राउज़र एसेट लोडिंग के लिए पब्लिक URL |
S3_BUCKET_NAME | intlayer | बकेट नाम |
S3_ACCESS_KEY_ID | (जेनरेटेड) | MinIO एक्सेस की |
S3_SECRET_ACCESS_KEY | (जेनरेटेड) | MinIO सीक्रेट की |
VITE_BACKEND_URL | http://localhost:3100 | बिल्ड टाइम पर डैशबोर्ड में बेक किया गया बैकएंड URL |
VITE_DOMAIN | localhost | बिल्ड टाइम पर डैशबोर्ड में बेक किया गया डोमेन |
Optional (features degrade gracefully when absent)
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| Variable | Feature |
|---|---|
OPENAI_API_KEY | AI-assisted translation and content audit |
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_* | Billing and subscription management |
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET | GitHub OAuth login |
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET | Google OAuth login |
GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRET | GitLab OAuth login |
MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET | Microsoft OAuth login |
वैकल्पिक (अनुपस्थिति में फीचर धीरे-धीरे खराब हो जाते हैं)
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| वेरिएबल | फीचर |
|---|---|
OPENAI_API_KEY | AI-सहायता प्राप्त अनुवाद और कंटेंट ऑडिट |
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_* | बिलिंग और सब्सक्रिप्शन प्रबंधन |
RESEND_API_KEY | रीसेंड के माध्यम से ट्रांजैक्शनल ईमेल (सेट होने पर मेलपिट को ओवरराइड करता है) |
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET | GitHub OAuth लॉगिन |
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET | Google OAuth लॉगिन |
GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRET | GitLab OAuth लॉगिन |
MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET | Microsoft OAuth लॉगिन |
LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET | LinkedIn OAuth लॉगिन |
ATLASSIAN_CLIENT_ID, ATLASSIAN_CLIENT_SECRET | Atlassian OAuth लॉगिन |
अपने इंटलेयर प्रोजेक्ट को कनेक्ट करना
एक बार जब स्टैक चल रहा हो, तो अपने प्रोजेक्ट को intlayer.org के बजाय सेल्फ-होस्टेड बैकएंड और डैशबोर्ड पर पॉइंट करें।
प्रोजेक्ट कॉन्फ़िगरेशन
कोड को क्लिपबोर्ड पर कॉपी करें
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
editor: {
clientId: process.env.INTLAYER_CLIENT_ID,
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
/**
* सेल्फ-होस्टेड CMS डैशबोर्ड का URL।
* डिफ़ॉल्ट: https://app.intlayer.org
*/
cmsURL: process.env.INTLAYER_CMS_URL, // उदाहरण के लिए http://localhost:3000
/**
* सेल्फ-होस्टेड बैकएंड API का URL।
* डिफ़ॉल्ट: https://back.intlayer.org
*/
backendURL: process.env.INTLAYER_BACKEND_URL, // उदाहरण के लिए http://localhost:3100
},
};
export default config;अपने प्रोजेक्ट के .env में एनवायरनमेंट वेरिएबल सेट करें:
कोड को क्लिपबोर्ड पर कॉपी करें
INTLAYER_CMS_URL=http://localhost:3000INTLAYER_BACKEND_URL=http://localhost:3100INTLAYER_CLIENT_ID=<your-client-id>INTLAYER_CLIENT_SECRET=<your-client-secret>अपने सेल्फ-होस्टेड डैशबोर्ड में http://localhost:3000/projects पर प्रोजेक्ट्स → एक्सेस कीज़ के अंतर्गत एक्सेस क्रेडेंशियल बनाएँ।
@intlayer/api SDK
प्रोग्रामेटिक रूप से @intlayer/api SDK का उपयोग करते समय, backendURL को स्पष्ट रूप से पास करें:
कोड को क्लिपबोर्ड पर कॉपी करें
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();अपग्रेड करना
मौजूदा डिप्लॉयमेंट पर इंस्टॉलर को फिर से चलाने से रोलिंग अपग्रेड होता है:
कोड को क्लिपबोर्ड पर कॉपी करें
curl -fsSL https://intlayer.org/install.sh | shयह नवीनतम इमेज को खींचता है और docker compose pull && docker compose up -d के साथ कंटेनरों को रीस्टार्ट करता है। मौजूदा वॉल्यूम (mongo-data, redis-data, minio-data) संरक्षित रहते हैं - कोई डेटा हानि नहीं होती है।
./intlayer/ डायरेक्टरी के अंदर से मैन्युअल रूप से अपग्रेड करने के लिए:
कोड को क्लिपबोर्ड पर कॉपी करें
docker compose pulldocker compose up -dबैकअप और रीस्टोर
सभी स्थायी डेटा तीन नामित डॉकर वॉल्यूम में रहते हैं।
बैकअप
कोड को क्लिपबोर्ड पर कॉपी करें
docker run --rm \ -v intlayer_mongo-data:/data \ -v "$(pwd)":/backup \ busybox tar czf /backup/mongo-data.tar.gz /datadocker run --rm \ -v intlayer_redis-data:/data \ -v "$(pwd)":/backup \ busybox tar czf /backup/redis-data.tar.gz /datadocker run --rm \ -v intlayer_minio-data:/data \ -v "$(pwd)":/backup \ busybox tar czf /backup/minio-data.tar.gz /dataरीस्टोर
कोड को क्लिपबोर्ड पर कॉपी करें
docker run --rm \ -v intlayer_mongo-data:/data \ -v "$(pwd)":/backup \ busybox tar xzf /backup/mongo-data.tar.gz -C /# redis-data और minio-data के लिए दोहराएँसीमाएं
- MongoDB बाहरी (Atlas) होना चाहिए। बैकएंड केवल
mongodb+srv://पर कनेक्ट करता है (जोDB_ID/DB_MDP/DB_CLUSTERसे बनाया गया है), इसलिए एक सादाmongodb://host:27017— कंटेनर के अपने बंडल किए गएmongodसहित — का उपयोग नहीं किया जा सकता है। एक MongoDB Atlas क्लस्टर प्रदान करें। - कोई कस्टम डोमेन नहीं। सभी ब्राउज़र-सामने वाले
VITE_*URLs बिल्ड टाइम पर ऐप में इनलाइन किए जाते हैं, और प्रकाशित इमेजlocalhostमानों के साथ आती है। डैशबोर्ड कोhttp://localhost:3000पर एक्सेस किया जाना चाहिए; इसे एक सार्वजनिक डोमेन पर सर्व करने के लिए इमेज को लक्ष्य URLs के साथत: फिर से बनाने की आवश्यकता होगी और इसे तुरंत समर्थित नहीं किया जाता है। - ईमेल को एक काम करने वाले मेलर की आवश्यकता है। पहली बार सेटअप ईमेल सत्यापन को लागू करता है, इसलिए या तो
RESEND_API_KEYया एक global SMTP mailer (MAIL_PROVIDER=smtp+MAIL_SMTP_*) को कॉन्फ़िगर किया जाना चाहिए। पहले एडमिन साइन इन करने के बाद, प्रत्येक संगठन डैशबोर्ड से अपना स्वयं का SMTP या Resend मेलर भी कॉन्फ़िगर कर सकता है।
समस्या निवारण
पहली शुरुआत में बैकएंड क्रैश-लूप करता है
बैकएंड शुरू होने से पहले MongoDB और Redis स्वस्थ होने चाहिए। कंपोज़ फ़ाइल condition: service_healthy के साथ depends_on का उपयोग करती है। यदि आप बार-बार बैकएंड रीस्टार्ट देखते हैं, तो जांचें कि mongo और redis हेल्थचेक पास हो गए हैं या नहीं:
कोड को क्लिपबोर्ड पर कॉपी करें
docker compose psdocker compose logs mongodocker compose logs redisईमेल नहीं भेजा जा रहा है
डिफ़ॉल्ट रूप से, सभी आउटबाउंड ईमेल मेलपिट द्वारा कैप्चर किए जाते हैं। भेजे गए संदेशों को देखने के लिए http://localhost:8025 खोलें। वास्तविक ईमेल भेजने के लिए, .env में MAIL_PROVIDER=resend और RESEND_API_KEY=<your-key> सेट करें, फिर बैकएंड को रीस्टार्ट करें:
कोड को क्लिपबोर्ड पर कॉपी करें
docker compose restart backendMinIO बकेट गायब है
यदि minio-init वन-शॉट सर्विस नहीं चली (या MinIO के तैयार होने से पहले चली), तो बकेट को मैन्युअल रूप से बनाएँ:
कोड को क्लिपबोर्ड पर कॉपी करें
docker compose run --rm minio-init