Penulis:
    Dibuat:2026-06-30Terakhir diperbarui:2026-09-27

    Self-Hosting Intlayer

    Intlayer dapat dijalankan di infrastruktur Anda sendiri tanpa memerlukan akun Intlayer Cloud. Tiga konfigurasi disediakan, semuanya dapat diatur menggunakan penginstal yang sama (install.sh, install.ps1 di Windows, atau npx intlayer init infra):

    SetupWhat it isPick it for
    Aplikasi DesktopDasbor native untuk macOS, Linux, dan WindowsKlien lokal, tidak ada yang perlu di-host
    Docker All-in-OneDasbor, API, MongoDB, Redis, dan MinIO dalam satu kontainerPengujian dan instalasi box tunggal skala kecil
    Docker ComposeSatu kontainer per layanan, setiap penyimpanan data dapat diganti dengan layanan terkelolaProduksi, penskalaan, basis data terkelola

    Table of Contents

    Image dan Paket yang Diterbitkan

    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)

    Ketiga image dibuat dari docker/selfhost/Dockerfile yang sama dan diterbitkan pada setiap rilis. Stack Compose juga menarik image resmi mongo:8, redis:8-alpine, dan quay.io/minio/minio.

    Pengaturan

    Penginstal akan menanyakan pengaturan yang diinginkan, memeriksa prasyarat (menawarkan untuk menginstal Docker), menulis file lingkungan dengan secret yang telah dibuat sebelumnya, dan menarik image. Penginstal tidak memulai apa pun dengan sendirinya: mode Docker memerlukan pengirim email terlebih dahulu, sehingga proses diakhiri dengan mencetak perintah yang harus dijalankan. Menjalankan ulang aman dilakukan: file lingkungan yang ada tidak akan pernah ditimpa, yang juga menjadikannya jalur pembaruan.

    Dasbor Intlayer sebagai aplikasi native yang dibangun dengan Tauri. Masuk ke Intlayer Cloud (https://app.intlayer.org), sehingga tidak ada yang perlu di-host. Pilihan yang tepat ketika Anda menginginkan klien lokal daripada tab browser.

    Instalasi

    Penginstal mengunduh paket yang sesuai untuk OS dan CPU Anda dan membukanya (macOS), menginstalnya (dpkg / rpm di Linux), atau meluncurkan wizard pengaturan (Windows). Anda juga dapat mengunduhnya secara manual dari halaman Rilis.

    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
    

    Persyaratan

    • Node.js: Aplikasi menyematkan server dasbor dan memulainya dengan biner node mesin. Instal dari nodejs.org jika aplikasi tidak dapat dibuka.
    Build desktop yang diterbitkan berkomunikasi dengan backend Intlayer Cloud. Mengarahkannya ke backend self-hosted memerlukan pembuatan ulang aplikasi dengan VITE_BACKEND_URL yang disetel ke API Anda, lihat Batasan.

    Semuanya berjalan di dalam satu kontainer intlayer/cms-all, diawasi oleh s6-overlay, dengan setiap penyimpanan data dipertahankan pada satu volume.

    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
    
    LayananPort HostTujuan
    app3000Dasbor (UI CMS)
    backend3100REST API (endpoint /health)
    mongointernalMongoDB 8, replica-set node tunggal rs0
    redisinternalAntrean pekerjaan (BullMQ) dan caching
    minio9000 (S3), 9001 (konsol)Penyimpanan objek yang kompatibel dengan S3 untuk avatar dan tangkapan layar

    Urutan booting dikelola oleh dependensi s6 (mongod → inisialisasi replica-set, minio → pembuatan bucket, kemudian backend, lalu app), dan layanan akan dimulai ulang jika berhenti, sehingga booting pertama akan pulih dengan sendirinya.

    Prasyarat

    • Docker ≥ 24: Penginstal menawarkan untuk menginstalnya (melalui get.docker.com di Linux, Homebrew di macOS). Di Windows, instal Docker Desktop (backend WSL 2) terlebih dahulu.
    • Port 3000, 3100, 9000, dan 9001 bebas di host. MinIO 9000 harus tetap dapat dijangkau oleh browser karena aset dimuat langsung dari S3_PUBLIC_URL.
    • Pengirim email: Kunci API Resend atau relay SMTP.

    1. Instalasi

    Menulis ./intlayer.env dengan BETTER_AUTH_SECRET dan S3_SECRET_ACCESS_KEY yang telah dibuat, mengajukan beberapa pertanyaan untuk mengisi sisanya, lalu menarik 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. Jawab pertanyaan penyiapan

    Penginstal menanyakan (tekan Enter untuk menerima saran; setiap jawaban dapat diubah di file nanti):

    • Domain tempat Intlayer disajikan. Biarkan kosong untuk tetap di localhost. Dengan domain seperti example.org, penginstal menyarankan https://cms.example.org untuk dasbor, https://back.example.org untuk API, dan https://s3.example.org/intlayer untuk penyimpanan objek, lalu menulis DOMAIN, APP_URL, BACKEND_URL, dan S3_PUBLIC_URL. Lihat Domain kustom untuk langkah selanjutnya.
    • Mailer: Resend (kunci API) atau relay SMTP (host, port, kredensial), serta alamat pengirim. Langkah ini dapat dilewati dan dilakukan secara manual nanti.
    • Kunci API OpenAI opsional untuk fitur AI.

    Tanpa terminal (misalnya saat skrip dijalankan dari CI), pertanyaan dilewati dan hanya secret yang dibuat. Buka intlayer.env dan isi Resend atau SMTP secara manual (lihat Mailer global untuk detailnya):

    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. Jalankan

    Ini adalah perintah eksekusi yang dicetak oleh penginstal (dengan domain kustom, perintah ini didahului oleh docker build yang menghasilkan intlayer/cms-all:custom, lihat Domain kustom):

    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 menjalankan penginstal yang mencetak perintah docker run … yang ditunjukkan pada tab lain. Tempel ke terminal Anda setelah mengonfigurasi mailer.

    Buka http://localhost:3000 (atau URL dasbor Anda) dan ikuti Pengaturan Pertama Kali. Booting pertama menginisialisasi replica-set dan bucket, jadi berikan waktu sekitar satu menit.

    Cadangan dan Peningkatan

    Semua status disimpan dalam volume 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 /
    

    Untuk meningkatkan (upgrade), jalankan kembali penginstal (akan menarik image terbaru dan mempertahankan intlayer.env), lalu jalankan docker rm -f intlayer dan jalankan kembali perintah mulai. Untuk menggunakan MongoDB terkelola alih-alih yang disertakan, setel MONGODB_URI di intlayer.env.

    Satu kontainer per layanan di jaringan Compose privat. Dasbor dan API menggunakan image intlayer/cms-frontend dan intlayer/cms-backend yang diterbitkan; penyimpanan data menggunakan image resmi mongo, redis, dan 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
    
    LayananImagePeran
    appintlayer/cms-frontendDasbor pada :3000; menunggu backend sehat
    backendintlayer/cms-backendAPI pada :3100 dengan Chromium; menunggu Mongo, Redis, dan bucket MinIO
    mongomongo:8Replica-set node tunggal rs0, diinisialisasi oleh pemeriksaan kesehatannya sendiri
    redisredis:8-alpineAntrean dan caching, persistensi append-only
    minioquay.io/minio/minioPenyimpanan S3 pada :9000, konsol pada :9001
    minio-initquay.io/minio/mcSekali jalan: membuat bucket dan kebijakan unduhan anonimnya

    Data disimpan dalam volume intlayer_mongo-data, intlayer_redis-data, dan intlayer_minio-data. Sambungan layanan (MONGODB_URI, REDIS_URL, S3_ENDPOINT, URL backend internal untuk server-side rendering) telah ditentukan dalam file compose dan lebih diutamakan daripada .env, yang hanya menyimpan secret dan integrasi opsional.

    Prasyarat

    • Docker ≥ 24 dengan plugin Compose: Penginstal menawarkan untuk menginstalnya di Linux dan macOS. Di Windows, instal Docker Desktop (backend WSL 2) terlebih dahulu.
    • Port 3000, 3100, 9000, dan 9001 bebas di host.
    • Pengirim email: Kunci API Resend atau relay SMTP.

    1. Instalasi

    Menulis docker-compose.yml dan .env dengan secret yang dihasilkan ke ./intlayer/, mengajukan pertanyaan penyiapan yang sama seperti mode all-in-one (domain, mailer, kunci OpenAI), dan menarik image.

    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. Konfigurasi Mailer

    Jika Anda melewati pertanyaan mailer, isi Resend atau SMTP di intlayer/.env, persis seperti kontainer all-in-one (lihat Mailer global).

    3. Jalankan

    sh
    cd intlayer && docker compose up -d
    

    Dengan domain kustom, penginstal juga mengunduh docker-compose.build.yml dan perintah mulai menjadi docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build (lihat Domain kustom).

    Buka http://localhost:3000 (atau URL dasbor Anda) dan ikuti Pengaturan Pertama Kali.

    Penyimpanan Data Terkelola

    Hapus layanan yang Anda ganti dari file compose (bersama dengan entri depends_on di backend), dan timpa variabel yang sesuai:

    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 berfungsi langsung terhadap penyedia mana pun yang kompatibel dengan S3.

    Penskalaan

    app dan backend bersifat stateless. Di balik penyeimbang beban (load balancer), jika pemetaan port host tetap dihapus dan proksi merutekan berdasarkan nama layanan, docker compose up -d --scale backend=3 akan berfungsi. Pekerjaan latar belakang dikoordinasikan melalui Redis (BullMQ), sehingga beberapa replika backend dapat berbagi antrean dengan aman.

    Membangun dari Sumber

    Sebuah override mengganti dua layanan Intlayer dari image: ke build:. Dari hasil kloning repositori:

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

    Tanpa kloning, arahkan konteks build ke repositori itu sendiri dengan mengatur INTLAYER_BUILD_CONTEXT=https://github.com/aymericzip/intlayer.git#main di .env. Argumen build VITE_* dasbor mengikuti DOMAIN, APP_URL, dan BACKEND_URL dari file yang sama, dan dengan cara inilah domain kustom diterapkan.

    Cadangan dan Peningkatan

    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 compose start
    
    # Upgrade, volumes are kept
    docker compose pull && docker compose up -d
    

    Pengaturan Penginstal

    Tanpa --mode (atau INTLAYER_MODE), penginstal akan menampilkan menu: desktop, docker (all-in-one), atau compose. Penginstal juga membaca beberapa variabel lingkungan; teruskan ke shell alih-alih ke curl karena ini disalurkan (piped):

    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
    Variabel port hanya mengubah sisi host dari pemetaan. Image yang diterbitkan memiliki http://localhost:3000, http://localhost:3100, dan http://localhost:9000 yang dikompilasi ke dalam bundle dasbor, jadi pertahankan default kecuali Anda membuat image sendiri, lihat Batasan.

    Pengaturan Pertama Kali

    Membuka dasbor pada instance baru (database kosong) akan otomatis dialihkan ke /init:

    1. Buat akun pertama. Karena koleksi pengguna kosong, akun ini secara otomatis dipromosikan menjadi Super Admin.
    2. Email verifikasi dikirim melalui Resend atau relay SMTP Anda. Verifikasi email wajib dilakukan, itulah mengapa pengirim email harus dikonfigurasi sebelum memulai.
    3. Klik tautan di email dan masuk.

    Setelah admin ada, /init akan dialihkan ke halaman masuk biasa.

    Variabel Lingkungan

    Kedua mode Docker membaca file yang sama (berupa intlayer.env untuk kontainer atau .env untuk Compose) yang dihasilkan dari docker/selfhost/.env.template.

    Wajib

    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)

    Ditetapkan oleh Penerapan

    Variabel ini diatur oleh image (all-in-one) atau oleh file compose, dan hanya perlu ditimpa untuk topologi non-standar. DOMAIN, APP_URL, BACKEND_URL, dan S3_PUBLIC_URL adalah pengecualian: jika diatur di file env, variabel ini diutamakan di kedua mode (lihat Domain kustom).

    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

    Layanan Compose app juga menerima INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100: browser menjangkau API di localhost:3100, tetapi rendering sisi server berjalan di dalam jaringan Compose sehingga harus menggunakan nama layanan.

    Domain kustom

    Backend membaca URL publiknya saat runtime, tetapi dasbor memilikinya terkompilasi di dalamnya: image intlayer/cms-frontend dan intlayer/cms-all yang diterbitkan hanya berfungsi di http://localhost:3000. Karena itu, menyajikan Intlayer di domain Anda sendiri memerlukan dua hal, yang keduanya disiapkan oleh penginstal saat Anda menjawab pertanyaan domain:

    1. Empat variabel di file env, dibaca oleh backend (cookie, tautan email, callback OAuth, URL aset) dan digunakan sebagai argumen build oleh 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. Image dasbor yang dibuat dengan URL tersebut. Docker membuatnya langsung dari repositori, tanpa perlu kloning:

      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
      

    Kemudian pasang reverse proxy dengan TLS di depan kontainer: cms.example.org → port 3000, back.example.org → 3100, s3.example.org → 9000. Ketiga host harus berbagi sufiks DOMAIN, karena cookie sesi dibatasi pada domain tersebut.

    Opsional (fitur akan dinonaktifkan dengan lancar jika tidak disetel)

    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

    Mailer Global

    Semua email transaksional, termasuk email di luar organisasi seperti reset kata sandi dan magic link, melewati salah satu dari dua transport global:

    • Resend: Menggunakan RESEND_API_KEY.
    • SMTP: Menggunakan variabel MAIL_SMTP_*. Menyetel MAIL_SMTP_HOST akan langsung memilih transport SMTP dan mengabaikan RESEND_API_KEY.

    MAIL_PROVIDER hanya diperlukan untuk memaksa salah satu transport jika keduanya dikonfigurasi (misalnya MAIL_PROVIDER=resend untuk tetap menggunakan Resend saat host SMTP ada).

    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
    Urutan prioritas: Mailer milik organisasi sendiri (dikonfigurasi dari dasbor Organisasi) menggantikan mailer global, dan mailer global menggantikan kunci Resend default.

    Menghubungkan Proyek Intlayer Anda

    Setelah stack berjalan, konfigurasikan proyek Anda untuk mengarah ke backend dan dasbor self-hosted Anda, bukan ke intlayer.org.

    Konfigurasi Proyek

    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>
    

    Buat kredensial akses di dasbor self-hosted Anda di Proyek → Kunci Akses (http://localhost:3000/projects).

    SDK @intlayer/api

    Saat menggunakan SDK @intlayer/api secara terprogram, teruskan backendURL secara eksplisit:

    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();
    

    Batasan

    • Domain kustom berarti build ulang. Semua URL VITE_* yang ditujukan untuk browser dipanggang ke dalam dasbor pada waktu build, dan image yang diterbitkan (serta aplikasi desktop) memiliki nilai localhost / Intlayer Cloud. Secara bawaan, dasbor harus diakses di http://localhost:3000, API di :3100, dan MinIO di :9000; memetakan ulang port host memiliki efek yang sama. Penginstal menyiapkan semuanya untuk build ulang dari repositori saat Anda memberikan domain (lihat Domain kustom), tetapi build itu sendiri memakan waktu beberapa menit. Mengarahkan aplikasi desktop ke backend self-hosted tidak didukung.
    • Pengiriman email memerlukan mailer yang berfungsi. Pengaturan pertama kali mewajibkan verifikasi email, jadi RESEND_API_KEY atau relay SMTP (MAIL_SMTP_*) harus dikonfigurasi. Setelah admin pertama masuk, organisasi juga dapat mengonfigurasi mailer SMTP atau Resend mereka sendiri dari dasbor.
    • Aplikasi desktop memerlukan Node.js di mesin untuk memulai server yang disematkan.
    • Tidak ada asisten dokumentasi. Asisten dokumentasi AI intlayer.org (/api/ai/ask, /api/search/doc) bergantung pada sekitar 130 MB embedding dokumentasi yang telah dihitung sebelumnya, yang tidak disertakan dalam image self-host; kedua rute tersebut tidak didaftarkan dalam mode self-hosted. Fitur AI milik dasbor itu sendiri (terjemahan, audit, pelengkapan otomatis, chat) tidak terpengaruh dan hanya memerlukan OPENAI_API_KEY.

    Tautan Berguna