Autor:
    Data utworzenia:2026-06-30Ostatnia aktualizacja:2026-09-27

    Self-hosting Intlayer

    Intlayer może działać na Twojej własnej infrastrukturze, bez konieczności posiadania konta Intlayer Cloud. Dostępne są trzy konfiguracje, zarządzane przez ten sam instalator (install.sh, install.ps1 w systemie Windows lub npx intlayer init infra):

    SetupWhat it isPick it for
    Aplikacja desktopowaNatywny pulpit nawigacyjny dla systemów macOS, Linux i WindowsKlient lokalny, brak konieczności hostowania
    All-in-one DockerPulpit nawigacyjny, API, MongoDB, Redis i MinIO w jednym kontenerzeWersje próbne i instalacje na pojedynczej maszynie
    Docker ComposeJeden kontener na usługę, każdy magazyn danych wymienialny na usługę zarządzanąProdukcja, skalowanie, zarządzane bazy danych

    Table of Contents

    Opublikowane obrazy i pakiety

    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)

    Wszystkie trzy obrazy są budowane z tego samego pliku docker/selfhost/Dockerfile i publikowane przy każdym wydaniu. Stos Compose pobiera również oficjalne obrazy mongo:8, redis:8-alpine oraz quay.io/minio/minio.

    Konfiguracja

    Instalator pyta o preferowaną konfigurację, sprawdza wymagania wstępne (proponując instalację Dockera), zapisuje plik środowiskowy z wygenerowanymi sekretami i pobiera obrazy. Nigdy nie uruchamia niczego samodzielnie: tryby Dockera wymagają najpierw mailera, więc na końcu wyświetla polecenie do uruchomienia. Ponowne uruchomienie jest bezpieczne: istniejący plik środowiskowy nigdy nie jest nadpisywany, co czyni go również ścieżką aktualizacji.

    Pulpit nawigacyjny Intlayer jako natywna aplikacja zbudowana w Tauri. Loguje się do Intlayer Cloud (https://app.intlayer.org), więc nie trzeba niczego hostować. To właściwy wybór, gdy wolisz lokalnego klienta zamiast karty przeglądarki.

    Instalacja

    Instalator pobiera pakiet dla Twojego systemu operacyjnego i procesora, a następnie otwiera go (macOS), instaluje (dpkg / rpm w systemie Linux) lub uruchamia kreatora instalacji (Windows). Możesz go także pobrać ręcznie ze strony wydań.

    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
    

    Wymagania

    • Node.js: aplikacja zawiera wbudowany serwer pulpitu i uruchamia go przy użyciu pliku binarnego node z systemu. Zainstaluj go z nodejs.org, jeśli aplikacja się nie uruchamia.
    Opublikowana wersja desktopowa łączy się z backendem Intlayer Cloud. Skierowanie jej na własny backend wymaga przebudowania aplikacji ze zmienną VITE_BACKEND_URL wskazującą na Twoje API, zobacz Ograniczenia.

    Wszystko działa wewnątrz pojedynczego kontenera intlayer/cms-all, nadzorowanego przez s6-overlay, a każdy magazyn danych jest utrwalany w jednym wolumenie.

    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
    
    UsługaPort(y) hostaPrzeznaczenie
    app3000Pulpit nawigacyjny (interfejs CMS)
    backend3100REST API (punkt końcowy /health)
    mongowewnętrznyMongoDB 8, jedno-węzłowy zestaw replik rs0
    rediswewnętrznyKolejki zadań (BullMQ) i buforowanie
    minio9000 (S3), 9001 (konsola)Magazyn obiektów zgodny z S3 dla awatarów i zrzutów ekranu

    Kolejność uruchamiania jest wymuszana przez zależności s6 (mongod → init replica-set, minio → utworzenie zasobnika, następnie backend, a potem app), a usługi restartują się po zakończeniu, dzięki czemu pierwszy rozruch naprawia się samoczynnie.

    Wymagania wstępne

    • Docker ≥ 24: instalator oferuje jego instalację (przez get.docker.com w systemie Linux, Homebrew w macOS). W systemie Windows najpierw zainstaluj Docker Desktop (backend WSL 2).
    • Wolne porty 3000, 3100, 9000 i 9001 na hoście. MinIO 9000 musi być dostępne dla przeglądarki, która ładuje zasoby bezpośrednio z S3_PUBLIC_URL.
    • Mailer: klucz API Resend lub przekaźnik SMTP.

    1. Instalacja

    Zapisuje ./intlayer.env z wygenerowanymi BETTER_AUTH_SECRET oraz S3_SECRET_ACCESS_KEY, zadaje kilka pytań, aby uzupełnić resztę, i pobiera 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. Odpowiedz na pytania konfiguracyjne

    Instalator pyta o (naciśnij Enter, aby zaakceptować sugestię; każdą odpowiedź można później zmienić w pliku):

    • Domenę, pod którą serwowany jest Intlayer. Pozostaw puste, aby zostać przy localhost. Dla domeny takiej jak example.org proponuje https://cms.example.org dla pulpitu nawigacyjnego, https://back.example.org dla API oraz https://s3.example.org/intlayer dla magazynu obiektów, a następnie zapisuje DOMAIN, APP_URL, BACKEND_URL i S3_PUBLIC_URL. Dalsze kroki opisano w sekcji Domena niestandardowa.
    • Mailer: Resend (klucz API) lub przekaźnik SMTP (host, port, dane uwierzytelniające) oraz adres nadawcy. Ten krok można pominąć i wykonać ręcznie później.
    • Opcjonalny klucz API OpenAI dla funkcji AI.

    Bez terminala (na przykład gdy skrypt jest uruchamiany z CI) pytania są pomijane i generowane są tylko sekrety. Otwórz intlayer.env i ręcznie uzupełnij Resend lub SMTP (szczegóły w sekcji Globalny mailer):

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

    Oto polecenie, które wyświetla instalator (przy domenie niestandardowej poprzedza je docker build, który tworzy intlayer/cms-all:custom, zobacz Domena niestandardowa):

    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 uruchamia instalator, który wyświetla polecenie docker run … widoczne na pozostałych kartach. Skopiuj je do terminala po skonfigurowaniu mailera.

    Otwórz http://localhost:3000 (lub adres URL swojego pulpitu nawigacyjnego) i postępuj zgodnie z instrukcją Pierwsza konfiguracja. Pierwsze uruchomienie inicjalizuje zestaw replik oraz zasobnik, odczekaj chwilę.

    Kopia zapasowa i aktualizacja

    Cały stan znajduje się w wolumenie 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 /
    

    Aby zaktualizować, uruchom ponownie instalator (pobiera najnowszy obraz i zachowuje intlayer.env), a następnie wykonaj docker rm -f intlayer i uruchom ponownie polecenie startowe. Aby użyć zarządzanej bazy MongoDB zamiast wbudowanej, ustaw MONGODB_URI w intlayer.env.

    Jeden kontener na usługę w prywatnej sieci Compose. Pulpit nawigacyjny i API korzystają z opublikowanych obrazów intlayer/cms-frontend oraz intlayer/cms-backend; magazyny danych korzystają z oficjalnych obrazów mongo, redis i 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
    
    UsługaObrazRola
    appintlayer/cms-frontendPulpit nawigacyjny na :3000; oczekuje na sprawność backendu
    backendintlayer/cms-backendAPI na :3100 z Chromium; oczekuje na Mongo, Redis i zasobnik MinIO
    mongomongo:8Jedno-węzłowy zestaw replik rs0, inicjalizowany przez własny healthcheck
    redisredis:8-alpineKolejki i buforowanie, trwałość append-only
    minioquay.io/minio/minioPamięć S3 na :9000, konsola na :9001
    minio-initquay.io/minio/mcPojedyncze uruchomienie: tworzy zasobnik i politykę anonimowego pobierania

    Dane są przechowywane w wolumenach intlayer_mongo-data, intlayer_redis-data oraz intlayer_minio-data. Połączenia między usługami (MONGODB_URI, REDIS_URL, S3_ENDPOINT, wewnętrzny adres URL backendu używany przez SSR) są ustalone w pliku compose i mają pierwszeństwo przed .env, który zawiera tylko sekrety i opcjonalne integracje.

    Wymagania wstępne

    • Docker ≥ 24 z wtyczką Compose: instalator oferuje jego instalację w systemach Linux i macOS. W systemie Windows najpierw zainstaluj Docker Desktop (backend WSL 2).
    • Wolne porty 3000, 3100, 9000 i 9001 na hoście.
    • Mailer: klucz API Resend lub przekaźnik SMTP.

    1. Instalacja

    Zapisuje docker-compose.yml oraz .env z wygenerowanymi sekretami w ./intlayer/, zadaje te same pytania konfiguracyjne co tryb all-in-one (domena, mailer, klucz OpenAI) i pobiera obrazy.

    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. Konfiguracja mailera

    Jeśli pominięto pytanie o mailer, uzupełnij Resend lub SMTP w intlayer/.env, dokładnie tak samo jak w konfiguracji all-in-one (zobacz Globalny mailer).

    3. Uruchomienie

    sh
    cd intlayer && docker compose up -d
    

    Przy domenie niestandardowej instalator pobiera również docker-compose.build.yml, a polecenie uruchomienia zmienia się na docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build (zobacz Domena niestandardowa).

    Otwórz http://localhost:3000 (lub adres URL swojego pulpitu nawigacyjnego) i postępuj zgodnie z instrukcją Pierwsza konfiguracja.

    Zarządzane magazyny danych

    Usuń zastępowaną usługę z pliku compose (oraz jej wpis w depends_on w backend), a następnie nadpisz odpowiednią zmienną:

    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 zachowują swoje znaczenie w przypadku każdego dostawcy zgodnego z S3.

    Skalowanie

    app i backend są bezstanowe (stateless). Za modułem równoważenia obciążenia docker compose up -d --scale backend=3 działa po usunięciu stałych mapowań portów hosta i gdy proxy odwołuje się do usług po nazwie. Zadania w tle są koordynowane za pośrednictwem Redis (BullMQ), więc wiele replik backendu bezpiecznie współdzieli kolejkę.

    Budowanie ze źródeł

    Plik nadpisujący przełącza obie usługi Intlayer z image: na build:. W sklonowanym repozytorium:

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

    Bez klonu wskaż kontekst budowania bezpośrednio na repozytorium, ustawiając INTLAYER_BUILD_CONTEXT=https://github.com/aymericzip/intlayer.git#main w .env. Argumenty budowania VITE_* pulpitu nawigacyjnego podążają za DOMAIN, APP_URL i BACKEND_URL z tego samego pliku — w ten sposób stosowana jest domena niestandardowa.

    Kopia zapasowa i aktualizacja

    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
    

    Ustawienia instalatora

    Bez --mode (lub INTLAYER_MODE) instalator wyświetla menu: desktop, docker (all-in-one) lub compose. Odczytuje również kilka zmiennych środowiskowych. Ponieważ instalator jest przekazywany potokiem do powłoki, przekaż je do powłoki, a nie do 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
    Zmienne portów zmieniają wyłącznie stronę hosta w mapowaniu. Opublikowane obrazy mają wartości http://localhost:3000, http://localhost:3100 oraz http://localhost:9000 skompilowane w pakiecie pulpitu, więc zachowaj wartości domyślne, chyba że budujesz własne obrazy, zobacz Ograniczenia.

    Pierwsza konfiguracja

    W nowej instancji (pusta baza danych) otwarcie pulpitu nawigacyjnego przekierowuje na stronę /init:

    1. Utwórz pierwsze konto. Ponieważ kolekcja użytkowników jest pusta, to konto zostanie automatycznie awansowane na superadministratora.
    2. Wiadomość e-mail weryfikacyjna jest wysyłana za pośrednictwem Resend lub przekaźnika SMTP. Weryfikacja adresu e-mail jest obowiązkowa, dlatego mailer musi być skonfigurowany przed uruchomieniem.
    3. Kliknij link w wiadomości e-mail, a następnie zaloguj się.

    Gdy administrator już istnieje, /init przekierowuje do standardowej strony logowania.

    Zmienne środowiskowe

    Oba tryby Dockera odczytują ten sam plik (intlayer.env dla kontenera, .env dla Compose), wygenerowany na podstawie docker/selfhost/.env.template.

    Wymagane

    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)

    Ustalane przez wdrożenie

    Są one ustawiane przez obraz (all-in-one) lub przez plik compose i wymagają nadpisania tylko w przypadku niestandardowej topologii. Wyjątkiem są DOMAIN, APP_URL, BACKEND_URL i S3_PUBLIC_URL: ustawione w pliku env, mają pierwszeństwo w obu trybach (zobacz Domena niestandardowa).

    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

    Usługa Compose app otrzymuje dodatkowo INTLAYER_BACKEND_INTERNAL_URL=http://backend:3100: przeglądarka łączy się z API pod adresem localhost:3100, ale renderowanie po stronie serwera działa wewnątrz sieci Compose i musi używać nazwy usługi.

    Domena niestandardowa

    Backend odczytuje swoje publiczne adresy URL w czasie działania, ale pulpit nawigacyjny ma je wkompilowane: opublikowane obrazy intlayer/cms-frontend i intlayer/cms-all działają tylko pod http://localhost:3000. Udostępnienie Intlayer we własnej domenie wymaga więc dwóch rzeczy, które instalator przygotowuje, gdy odpowiesz na pytanie o domenę:

    1. Cztery zmienne w pliku env, odczytywane przez backend (ciasteczka, linki w e-mailach, callbacki OAuth, adresy URL zasobów) i używane jako argumenty budowania przez 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. Obraz pulpitu nawigacyjnego zbudowany z tymi adresami URL. Docker buduje go bezpośrednio z repozytorium, bez potrzeby klonowania:

      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
      

    Następnie umieść przed kontenerem reverse proxy z TLS: cms.example.org → port 3000, back.example.org → 3100, s3.example.org → 9000. Trzy hosty muszą mieć wspólny sufiks DOMAIN, ponieważ ciasteczko sesji jest do niego ograniczone.

    Opcjonalne (funkcje działają poprawnie w stopniu ograniczonym przy ich braku)

    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

    Globalny mailer

    Każda transakcyjna wiadomość e-mail, w tym wiadomości spoza organizacji (takie jak resetowanie hasła i linki logowania), przechodzi przez jeden z dwóch globalnych transportów:

    • Resend, przy użyciu RESEND_API_KEY.
    • SMTP, przy użyciu zmiennych MAIL_SMTP_*. Gdy tylko zostanie ustawiona zmienna MAIL_SMTP_HOST, używany jest protokół SMTP, a RESEND_API_KEY jest ignorowany.

    MAIL_PROVIDER jest potrzebny tylko do wymuszenia jednego transportu, gdy oba są skonfigurowane (na przykład MAIL_PROVIDER=resend, aby zachować Resend, gdy zdefiniowany jest host SMTP).

    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
    Pierwszeństwo: własny mailer organizacji (skonfigurowany w panelu Organizacja) ma pierwszeństwo przed mailerem globalnym, który z kolei ma pierwszeństwo przed domyślnym kluczem Resend.

    Łączenie projektu Intlayer

    Po uruchomieniu stosu skieruj swój projekt na samodzielnie hostowany backend i pulpit nawigacyjny zamiast intlayer.org.

    Konfiguracja projektu

    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>
    

    Utwórz poświadczenia dostępu w swoim hostowanym pulpicie w sekcji Projekty → Klucze dostępu pod adresem http://localhost:3000/projects.

    SDK @intlayer/api

    W przypadku programistycznego korzystania z pakietu SDK @intlayer/api przekaż backendURL jawnie:

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

    Ograniczenia

    • Domena niestandardowa oznacza ponowne zbudowanie. Wszystkie adresy URL VITE_* widoczne dla przeglądarki są wbudowane w pulpit nawigacyjny podczas kompilacji, a opublikowane obrazy (i aplikacja desktopowa) są dostarczane z wartościami localhost / Intlayer Cloud. Domyślnie dostęp do pulpitu nawigacyjnego musi odbywać się pod adresem http://localhost:3000, do API pod :3100, a do MinIO pod :9000; remapowanie portów hosta daje ten sam efekt. Gdy podasz domenę, instalator przygotowuje wszystko do ponownego zbudowania z repozytorium (zobacz Domena niestandardowa), ale samo budowanie trwa kilka minut. Wskazywanie aplikacji desktopowej na własny backend nie jest obsługiwane.
    • Wysyłanie e-maili wymaga działającego mailera. Pierwsza konfiguracja wymusza weryfikację e-mail, dlatego należy skonfigurować RESEND_API_KEY lub przekaźnik SMTP (MAIL_SMTP_*). Po zalogowaniu się pierwszego administratora każda organizacja może również skonfigurować własny mailer SMTP lub Resend z poziomu pulpitu nawigacyjnego.
    • Aplikacja desktopowa wymaga środowiska Node.js na komputerze do uruchomienia wbudowanego serwera.
    • Brak asystenta dokumentacji. Asystent AI dokumentacji intlayer.org (/api/ai/ask, /api/search/doc) opiera się na ok. 130 MB wstępnie obliczonych embeddingów dokumentacji, których obrazy self-hosted nie zawierają; te dwie trasy nie są rejestrowane w trybie self-hosted. Własne funkcje AI pulpitu nawigacyjnego (tłumaczenie, audyt, autouzupełnianie, czat) nie są tym objęte i wymagają jedynie OPENAI_API_KEY.

    Przydatne linki