Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Ta dokumentacja jest nieaktualna, wersja bazowa została zaktualizowana w 23 sierpnia 2026.
Przejdź do angielskiej wersji dokumentuHistoria wersji
Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimJeśli masz pomysł na ulepszenie tej dokumentacji, zachęcamy do przesłania pull requesta na GitHubie.
Link do dokumentacji na GitHubieKopiuj dokument Markdown do schowka
Samodzielne hostowanie Intlayer
Intlayer może działać w całości na Twojej własnej infrastrukturze — konto Intlayer Cloud nie jest wymagane. Jedno polecenie uruchamia gotowy do produkcji stos:
Jedno polecenie instaluje wszystko:
Skopiuj kod do schowka
Instalator pobiera plik docker-compose.yml oraz .env, automatycznie generuje wymagane sekrety i uruchamia wszystkie kontenery za pomocą docker compose up -d.
Jedyną zewnętrzną zależnością jest MongoDB: backend łączy się z klastrem MongoDB Atlas, który Ty dostarczasz. Wszystko inne działa wewnątrz kontenera.
Spis treści
Architektura
Skopiuj kod do schowka
Chromium (używany do generowania zrzutów ekranu przez Puppeteer) jest dołączony do obrazu backendu — nie jest potrzebny oddzielny kontener.
Wymagania wstępne
- Docker ≥ 24 i Docker Compose ≥ v2. Jeśli którykolwiek z nich jest brakujący, instalator wyświetli link do instalacji i zakończy działanie.
- Porty
3000,3100,8025,9000i9001dostępne na hoście. - Host Linux lub macOS (lub WSL2 na Windows).
Wszystko inne — Bun, Redis, MinIO, Chromium — jest dołączone do obrazu.
Szybki start
1. Uruchom instalator
Skopiuj kod do schowka
Instalator sprawdza, czy Docker jest zainstalowany i uruchomiony, zapisuje ./intlayer.env z już wygenerowanymi BETTER_AUTH_SECRET i S3_SECRET_ACCESS_KEY, a następnie pobiera obraz. Nie uruchamia kontenera — backend nie może się uruchomić bez poświadczeń bazy danych.
Ponowne uruchomienie instalatora jest bezpieczne: istniejący plik intlayer.env nigdy nie zostanie nadpisany, co czyni to również ścieżką aktualizacji.
2. Wypełnij swoje dane uwierzytelniające
Otwórz intlayer.env i uzupełnij wartości oznaczone TODO:
Skopiuj kod do schowka
Plik zawiera również skomentowane bloki dla opcjonalnych funkcji — SMTP mailer, OPENAI_API_KEY i dostawcy OAuth. Odkomentuj to, czego potrzebujesz.
Plik jest odczytywany przezdocker run --env-file, który nie usuwa cudzysłowów i traktuje wszystko po=jako wartość. Wpisz wartości bez cudzysłowów i przechowuj komentarze na własnych liniach.
3. Uruchom kontener
To jest polecenie, które instalator wypisuje po zakończeniu:
Skopiuj kod do schowka
Następnie otwórz http://localhost:3000. Pierwszy boot inicjalizuje magazyny danych, więc daj mu minutę.
Dashboard jest serwowany na localhost. Zobacz Ograniczenia — niestandardowe domeny nie są obsługiwane przez opublikowany obraz.
Ustawienia instalatora
Installer odczytuje kilka zmiennych środowiskowych. Ponieważ są one przesyłane do sh, przekaż je do powłoki zamiast do curl:
Skopiuj kod do schowka
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Zmienna | Domyślnie | Opis |
|---|---|---|
INTLAYER_IMAGE | ghcr.io/aymericzip/intlayer-selfhost:latest | Obraz do pobrania |
INTLAYER_ENV_FILE | ./intlayer.env | Gdzie zapisać plik env |
INTLAYER_CONTAINER_NAME | intlayer | Nazwa kontenera |
INTLAYER_DATA_VOLUME | intlayer-data | Named volume zamontowany w /data |
INTLAYER_APP_PORT | 3000 | Port hosta dla dashboardu |
INTLAYER_API_PORT | 3100 | Port hosta dla API |
INTLAYER_S3_PORT | 9000 | Port hosta dla MinIO S3 API |
INTLAYER_CONSOLE_PORT | 9001 | Port hosta dla konsoli MinIO |
Cztery zmienne portów zmieniają tylko stronę hosta mapowania wydrukowanego w poleceniudocker run. Opublikowany obraz mahttp://localhost:3000,http://localhost:3100ihttp://localhost:9000skompilowane w bundle'u dashboardu w czasie kompilacji, dlatego zmapowanie ich na nowo powoduje, że przeglądarka wskazuje na stare porty. Zachowaj wartości domyślne, chyba że budujesz swój własny obraz — zobacz Ograniczenia.
Szybki start
Co robi instalator:
- Sprawdza, czy
dockeridocker composesą obecne. - Pobiera
docker-compose.ymli.env.exampledo./intlayer/. - Jeśli plik
.envnie istnieje, kopiuje przykład i generuje losowe sekrety dlaBETTER_AUTH_SECRET,S3_ACCESS_KEY_IDiS3_SECRET_ACCESS_KEYza pomocąopenssl rand. - Uruchamia
docker compose pull+docker compose up -d. - Wyświetla adresy URL: pulpit nawigacyjny
:3000, API:3100, interfejs e-mail:8025, konsola MinIO:9001.
Po uruchomieniu stosu, otwórz http://localhost:3000 i utwórz swoje pierwsze konto.
Usługi
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Usługa | Obraz | Port(y) hosta | Cel |
|---|---|---|---|
| aplikacja | zbudowana z apps/app/Dockerfile | 3000 | Pulpit nawigacyjny TanStack Start (interfejs użytkownika CMS) |
| backend | zbudowany z apps/backend/Dockerfile | 3100 | Fastify REST API (punkt końcowy /health) |
| mongo | mongo:7 | wewnętrzny | Zestaw replikacji z jednym węzłem (rs0) |
| redis | redis:7-alpine | wewnętrzny | Kolejki zadań (BullMQ) i buforowanie (ioredis) |
| minio | minio/minio | 9000 (S3), 9001 (konsola) | Przechowywanie obiektów zgodne z S3 dla awatarów i zrzutów ekranu |
| mailpit | axllent/mailpit | 1025 (SMTP), 8025 (interfejs webowy) | Lokalny odbiornik transakcyjnych wiadomości e-mail |
Port MinIO9000musi być osiągalny przez przeglądarkę, ponieważ przesłane zasoby (awatary, zrzuty ekranu) są ładowane bezpośrednio zS3_PUBLIC_URL=http://localhost:9000/intlayer.
Zmienne środowiskowe
Wymagane
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Variable | Example | Description |
|---|---|---|
DB_ID | intlayer | Użytkownik MongoDB Atlas |
DB_MDP | (your password) | Hasło MongoDB Atlas |
DB_CLUSTER | cluster0.xxxxx.mongodb.net | Host klastra MongoDB Atlas (używany w URI mongodb+srv://) |
BETTER_AUTH_SECRET | (generated) | 32-bajtowy secret do podpisywania sesji |
S3_SECRET_ACCESS_KEY | (generated) | Secret dla wbudowanego MinIO |
RESEND_API_KEY | (your key) | Transakcyjne e-maile via Resend. Wymagane dla konfiguracji przy pierwszym uruchomieniu, chyba że skonfigurujesz globalny mailer SMTP (zobacz Global mailer) |
Wymagane (generowane automatycznie lub monitowane)
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Zmienna | Przykład | Opis |
|---|---|---|
NODE_ENV | production | Środowisko uruchomieniowe |
PORT | 3100 | Port nasłuchiwania backendu |
BACKEND_URL | http://localhost:3100 | Publiczny URL API backendu |
APP_URL | http://localhost:3000 | Publiczny URL pulpitu nawigacyjnego |
DOMAIN | localhost | Domena plików cookie |
MONGODB_URI | mongodb://mongo:27017/intlayer?replicaSet=rs0 | Pełny URI połączenia z MongoDB |
REDIS_URL | redis://redis:6379 | URL połączenia z Redis |
BETTER_AUTH_SECRET | (generated) | 32-bajtowy sekret do podpisywania sesji |
MAIL_PROVIDER | smtp | Transport poczty: smtp lub resend |
MAIL_SMTP_HOST | mailpit | Nazwa hosta SMTP (nazwa kontenera Mailpit) |
MAIL_SMTP_PORT | 1025 | Port SMTP |
MAIL_FROM | Intlayer <no-reply@localhost> | Adres nadawcy |
S3_ENDPOINT | http://minio:9000 | Punkt końcowy zgodny z S3 |
S3_PUBLIC_URL | http://localhost:9000/intlayer | Publiczny URL do ładowania zasobów przez przeglądarkę |
S3_BUCKET_NAME | intlayer | Nazwa zasobnika (bucket) |
S3_ACCESS_KEY_ID | (generated) | Klucz dostępu MinIO |
S3_SECRET_ACCESS_KEY | (generated) | Tajny klucz MinIO |
VITE_BACKEND_URL | http://localhost:3100 | URL backendu wbudowany w pulpit nawigacyjny w czasie kompilacji |
VITE_DOMAIN | localhost | Domena wbudowana w pulpit nawigacyjny w czasie kompilacji |
Opcjonalne (funkcje działają z ograniczoną funkcjonalnością, gdy ich brakuje)
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Zmienna | Funkcja |
|---|---|
OPENAI_API_KEY | Tłumaczenie wspomagane AI i audyt treści |
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_* | Zarządzanie płatnościami i subskrypcjami |
RESEND_API_KEY | Transakcyjne wiadomości e-mail za pośrednictwem Resend (przesłania Mailpit, gdy jest ustawione) |
GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET | Logowanie GitHub OAuth |
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET | Logowanie Google OAuth |
GITLAB_CLIENT_ID, GITLAB_CLIENT_SECRET | Logowanie GitLab OAuth |
MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET | Logowanie Microsoft OAuth |
LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET | Logowanie LinkedIn OAuth |
ATLASSIAN_CLIENT_ID, ATLASSIAN_CLIENT_SECRET | Logowanie Atlassian OAuth |
Globalny dostawca poczty
Domyślnie wszystkie transakcyjne wiadomości e-mail są wysyłane za pośrednictwem Resend przy użyciu RESEND_API_KEY. Wdrożenia self-hosted mogą zamiast tego kierować każdy e-mail — w tym e-maile niezwiązane z organizacją, takie jak resetowanie hasła i linki magiczne — za pośrednictwem globalnego dostawcy poczty skonfigurowanego zmiennymi środowiskowymi.
Ustaw MAIL_PROVIDER, aby go aktywować. Jeśli nie jest ustawiony, używany jest domyślny dostawca Resend.
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Zmienna | Przykład | Opis |
|---|---|---|
MAIL_PROVIDER | smtp | Transport globalny: smtp lub resend. Pozostaw puste, aby użyć domyślnych |
MAIL_FROM | Intlayer <no-reply@acme.com> | Nagłówek nadawcy. Akceptuje zwykły adres lub format Nazwa <email> |
MAIL_SMTP_HOST | smtp.acme.com | Host SMTP (wymagany, gdy MAIL_PROVIDER=smtp) |
MAIL_SMTP_PORT | 587 | Port SMTP (domyślnie 587) |
MAIL_SMTP_SECURE | false | Niejawny TLS. Ustaw true dla portu 465 |
MAIL_SMTP_USER | (twoja nazwa użytkownika) | Nazwa użytkownika SMTP (opcjonalnie; pomiń dla nieuwierzytelnionych przekaźników) |
MAIL_SMTP_PASSWORD | (twoje hasło) | Hasło SMTP |
Priorytet: własny dostawca poczty organizacji (skonfigurowany z pulpitu Organizacji) ma priorytet nad globalnym dostawcą poczty, który z kolei ma priorytet nad domyślnym kluczem Resend.
Łączenie Twojego projektu Intlayer
Po uruchomieniu stosu, skieruj swój projekt na samodzielnie hostowany backend i pulpit nawigacyjny zamiast na intlayer.org.
Konfiguracja projektu
Skopiuj kod do schowka
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
editor: {
clientId: process.env.INTLAYER_CLIENT_ID,
clientSecret: process.env.INTLAYER_CLIENT_SECRET,
/**
* URL samodzielnie hostowanego pulpitu nawigacyjnego CMS.
* Domyślnie: https://app.intlayer.org
*/
cmsURL: process.env.INTLAYER_CMS_URL, // np. http://localhost:3000
/**
* URL samodzielnie hostowanego API backendu.
* Domyślnie: https://back.intlayer.org
*/
backendURL: process.env.INTLAYER_BACKEND_URL, // np. http://localhost:3100
},
};
export default config;
Ustaw zmienne środowiskowe w pliku .env Twojego projektu:
Skopiuj kod do schowka
Utwórz dane uwierzytelniające dostęp w swoim samodzielnie hostowanym pulpicie nawigacyjnym w sekcji Projects → Access keys pod adresem http://localhost:3000/projects.
SDK @intlayer/api
Używając SDK @intlayer/api programowo, przekaż backendURL jawnie:
Skopiuj kod do schowka
Aktualizacja
Spowoduje to pobranie najnowszych obrazów i ponowne uruchomienie kontenerów za pomocą docker compose pull && docker compose up -d. Istniejące woluminy (mongo-data, redis-data, minio-data) zostaną zachowane — brak utraty danych.
Skopiuj kod do schowka
Kopia zapasowa i przywracanie
Wszystkie trwałe dane znajdują się w trzech nazwach woluminów Docker.
Kopia zapasowa
Skopiuj kod do schowka
Przywracanie
Skopiuj kod do schowka
Ograniczenia
- MongoDB musi być zewnętrzna (Atlas). Backend łączy się tylko przez
mongodb+srv://(zbudowany zDB_ID/DB_MDP/DB_CLUSTER), więc zwykłymongodb://host:27017— w tym wbudowanymongodkontenera — nie może być używany. Zapewnij klaster MongoDB Atlas. - Brak niestandardowej domeny. Wszystkie adresy URL
VITE_*dostępne w przeglądarce są wbudowywane w aplikację w czasie kompilacji, a opublikowany obraz zawiera wartościlocalhost. Dostęp do dashboardu musi być realizowany pod adresemhttp://localhost:3000; udostępnienie go w domenie publicznej wymagałoby przebudowania obrazu z docelowymi adresami URL wbakowanymi w kod i nie jest obsługiwane out of the box. - Email wymaga działającego mailera. Konfiguracja przy pierwszym uruchomieniu wymusza weryfikację email, więc musi być skonfigurowany
RESEND_API_KEYlub globalny mailer SMTP (MAIL_PROVIDER=smtp+MAIL_SMTP_*). Po zalogowaniu się pierwszego administratora każda organizacja może również skonfigurować swój własny mailer SMTP lub Resend z dashboardu.
Rozwiązywanie problemów
Backend w pętli awarii przy pierwszym uruchomieniu
MongoDB i Redis muszą być sprawne przed uruchomieniem backendu. Plik compose używa depends_on z condition: service_healthy. Jeśli widzisz powtarzające się restarty backendu, sprawdź, czy testy kondycji mongo i redis przechodzą pomyślnie:
Skopiuj kod do schowka
Poszukaj MongoDB connection error w górnej części dziennika.
Pulpit nawigacyjny nie może dotrzeć do API
Sprawdź, czy VITE_BACKEND_URL odpowiada adresowi URL, pod którym backend jest osiągalny z przeglądarki (nie z sieci Docker). Jeśli zmieniłeś port backendu lub dodałeś reverse proxy, ponownie zbuduj obraz pulpitu nawigacyjnego:
Brak zasobnika MinIO
Jeśli jednorazowa usługa minio-init nie uruchomiła się (lub uruchomiła się, zanim MinIO było gotowe), utwórz zasobnik ręcznie:
Skopiuj kod do schowka
