Ga naar de hoofdinhoud

Referentie voor zelfgehoste omgevingen

Begin met de release env.example, die je hebt gedownload als .env binnen Aan de slag. Het is de kleinste ondersteunde Compose-configuratie. Gebruik env.full.example wanneer u een optionele instelling nodig heeft; op deze pagina wordt uitgelegd welke instellingen bij elkaar horen en wanneer u deze kunt wijzigen.

Na bewerking .envvalideert u de interpolatie zonder de opgeloste configuratie af te drukken:

docker compose config --quiet

Niet plegen .env, plak het in ondersteuningsverzoeken of geef de uitvoer vrij van docker compose config: de opgeloste uitvoer bevat geheimen.

Vereiste productiewaarden​

Genereer elk geheim onafhankelijk met openssl rand -hex 32. Behoud de oude waarden bij elke upgrade en bewaar een herstelkopie buiten de server.

VariabelProductiewaardeWaarom het ertoe doet
POSTGRES_PASSWORDUniek willekeurig wachtwoordBeschermt de gebundelde PostgreSQL-database.
WEB_ORIGINOpenbare HTTPS-app-oorsprong, zoals https://kanera.example.comWordt gebruikt voor browserlinks, CORS en authenticatiestromen. Voeg geen afsluitende schuine streep toe.
COOKIE_DOMAINApp-hostnaam, zoals kanera.example.comReikwijdte voor de vernieuwingscookie.
COOKIE_SECUREtrueVereist wanneer de app via HTTPS wordt aangeboden.
JWT_SECRETStabiel willekeurig geheim, minimaal 16 tekensOndertekent gebruikerssessies. Rotatie meldt iedereen af.
MCP_INTERNAL_SECRETStabiel willekeurig geheim, minimaal 32 tekens en verschillend van JWT_SECRETHiermee kunnen de MCP- en openbare API-services doelgroepgebonden OAuth-inloggegevens uitwisselen zonder een MCP-token door te sturen /api/v1. Beide services moeten altijd dezelfde waarde gebruiken.
MFA_ENCRYPTION_KEYStabiel willekeurig geheim, minimaal 32 tekensBeschermt authenticatorinschrijving en uitdagingen. Rotatie maakt ingeschreven authenticators ongeldig.
MEDIA_SIGNING_SECRETStabiel willekeurig geheim, minimaal 32 tekensOndertekent privémedia-URL's. Rotatie maakt bestaande ondertekende URL's ongeldig.
SECRETS_ENCRYPTION_KEYStabiel willekeurig geheim, minimaal 32 tekens en verschillend van JWT_SECRETVersleutelt SMTP-, opslag-, webhook- en integratiereferenties die zijn opgeslagen in de database.

KANERA_DEPLOYMENT_MODE standaard ingesteld op self_hosted. De gehoste modus en de bijbehorende Stripe-, PostHog-, plan-limit- en licentievariabelen zijn bedoeld voor door Kanera beheerde implementaties en moeten uitgeschakeld blijven op een zelf-gehoste installatie.

Benodigdheden samenstellen NODE_ENV=production en ANALYTICS_ENABLED=false. Vertrekken ANALYTICS_PROVIDER, POSTHOG_PROJECT_KEY, POSTHOG_API_HOST, elke STRIPE_*, HOSTED_*en het token in de gehoste modus is uitgeschakeld. Deze instellingen veranderen een zelf-gehoste installatie niet in Kanera Cloud.

Openbare URL's en services​

VariabelStandaardStel in wanneer
KANERA_ENVIRONMENTproduction in productie ComponerenU hebt een ander API-sleutelvoorvoegsel nodig voor ontwikkeling, testen of staging.
API_PUBLIC_URLWEB_ORIGINDe browsergerichte app-API gebruikt een andere openbare oorsprong.
KANERA_PUBLIC_API_URLhttp://public-api:3001 bij ComponerenMCP of een ander intern proces bereikt de openbare API ergens anders dan het Compose-serviceadres. Dit is een interne URL, niet de browsergerichte API-oorsprong.
PUBLIC_API_OAUTH_ISSUERhttp://localhost:3001U maakt OAuth of de openbare API op afstand openbaar; gebruik de browser-bereikbare HTTPS-oorsprong.
MCP_SERVER_PUBLIC_URLhttp://localhost:3002/mcpJe stelt externe MCP bloot; gebruik maken van het volledige publiek /mcp URL.
MCP_PUBLIC_URLAfgeleid van MCP_SERVER_PUBLIC_URL door ComponerenJe voert de MCP-service uit buiten de meegeleverde Compose-bedrading.
OAUTH_ISSUER_URLAfgeleid van PUBLIC_API_OAUTH_ISSUER door ComponerenJe gebruikt de MCP buiten de meegeleverde Compose-bedrading.
API_PORT, PUBLIC_API_PORT, WORKER_PORT, MCP_PORT3000, 3001, 3003, 3002U voert services buiten Compose uit of hebt verschillende interne luisteraarpoorten nodig.
API_TRUST_PROXY, PUBLIC_API_TRUST_PROXY, MCP_TRUST_PROXYfalse, false, trueEen vertrouwde reverse proxy levert het echte client-IP. Vertrouw nooit doorgestuurde headers van willekeurige clients.

De browser maakt verbinding met web; publiceer de belangrijkste niet api dienst. Zie Diensten en routering voordat het publiek API of MCP wordt blootgesteld.

Accounts en authenticatie​

VariabelStandaardDoel
SIGNUPS_ENABLEDtrueInstellen false om openbare aanmelding en het creëren van nieuwe organisaties te stoppen. Bestaande uitnodigingslinks voor organisaties werken nog steeds.
EMAIL_VERIFICATION_ENABLEDfalseEen zescijferige e-mailcontrole vereisen voor aanmelding, aanmelding voor uitnodigingen en e-mailwijzigingen. Alleen inschakelen nadat SMTP werkt.
AUTH_RATE_LIMIT_ENABLEDtrueSchakel de brute-force-beperking per IP in op niet-geverifieerde verificatieroutes.
AUTH_RATE_LIMIT_MAX / AUTH_RATE_LIMIT_WINDOW_MS10 / 60000Toegestane authentificatiepogingen per venster.
JWT_ACCESS_TTL / JWT_REFRESH_TTL_DAYS5m / 10Levensduur van toegangstokens en vernieuwingssessies.
CLOUDFLARE_TURNSTILE_SITE_KEY / CLOUDFLARE_TURNSTILE_SECRET_KEYUitgeschakeldGehoste aanmeldingsbescherming. Laat deze instelling uitgeschakeld voor normale zelfhosting.

Gebruikers configureren hun eigen authenticator onder Instellingen -> Uw account -> Beveiliging. Organisatiebeheerders kunnen dit vereisen onder Instellingen -> Organisatie -> Beveiliging. Zie Profiel en beveiliging.

Openbare API- en MCP-limieten​

VariabelStandaardDoel
PUBLIC_API_RATE_LIMIT_ENABLEDtrueSchakelt openbare API- en MCP-verzoeklimieten in.
PUBLIC_API_IP_RATE_LIMIT_PER_MINUTE60Limiet voor niet-geverifieerde detectie en ongeldige dragerformaten.
PUBLIC_API_FAILED_KEY_RATE_LIMIT_PER_MINUTE10Limiet per IP voor mislukt kanera_* belangrijke pogingen.
PUBLIC_API_KEY_RATE_LIMIT_PER_MINUTE400Verzoeklimiet per sleutel na succesvolle authenticatie.
PUBLIC_API_UPLOAD_RATE_LIMIT_PER_MINUTE30Limiet voor het uploaden van bijlagen per sleutel.
PUBLIC_API_RATE_LIMIT_WINDOW_MS60000Tarieflimietvenster gedeeld door de openbare API en MCP.
MCP_BODY_MAX_BYTES1048576Maximale MCP-aanvraagtekst.
MCP_REQUEST_TIMEOUT_MS30000Maximale tijd voor een MCP-aanvraag.
MCP_HEADERS_TIMEOUT_MS / MCP_KEEP_ALIVE_TIMEOUT_MS10000 / 5000MCP HTTP-verbindingstime-outs.
KANERA_API_KEYUitgeschakeldAlleen vereist door de lokale stdio MCP-bridge, niet de HTTP MCP-service.

Database, cache en capaciteit​

Benodigdheden samenstellen DATABASE_URL en REDIS_URL voor de gebundelde PostgreSQL- en Valkey-services. Stel ze alleen zelf in als u een proces buiten dat netwerk uitvoert of beheerde services gebruikt.

VariabelStel standaard samenDoel
DATABASE_SSLfalseAlleen inschakelen als een externe database SSL vereist.
POSTGRES_BIND_PORT5433Alleen-loopback-hostpoort voor gebundelde PostgreSQL.
API_REPLICAS / PUBLIC_API_REPLICAS / MCP_REPLICAS2 / 1 / 1Serviceproces telt. Houd de werker op precies één.
PG_POOL_MAX / WORKER_PG_POOL_MAX20 / 5Maximale databaseverbindingen per app-proces en voor de werknemer.
PG_IDLE_TIMEOUT_MS / PG_CONNECTION_TIMEOUT_MS30000 / 5000Pool-inactiviteit en acquisitie-time-outs.
PG_STATEMENT_TIMEOUT_MS / SLOW_QUERY_LOG_MS30000 / 250Time-out voor databasequery's en drempelwaarde voor loggen van langzame query's.
NODE_OPTIONSUitgeschakeldOptionele knooppuntvlaggen, zoals een heaplimiet.
UV_THREADPOOL_SIZE16Native worker-threads die worden gebruikt door hashing, crypto en beeldverwerking.
REALTIME_WEBSOCKET_COMPRESSION_ENABLEDtrueComprimeer grotere Socket.IO WebSocket-berichten.
REALTIME_WEBSOCKET_COMPRESSION_THRESHOLD_BYTES1024Minimale realtime framegrootte om te comprimeren.
REALTIME_OUTBOX_POLL_MS500 bij ComponerenPolling-interval voor fallback van werknemers voor realtime- en webhook-outbox-rijen.
USER_DISPLAY_CACHE_TTL_MS60000Levensduur van de cache tijdens het proces voor het opzoeken van weergavenamen.

Breng replica's en pools pas samen na het meten van de capaciteit. Zie Updates en schaling.

Bestanden en objectopslag​

VariabelStandaardDoel
UPLOADS_DIR/data/uploads bij ComponerenLokale uploadmap. Bundled Compose repareert dit pad en zet het voort kanera_uploads; verander de volumetoewijzing in plaats van .env.
ATTACHMENT_MAX_BYTES104857600Maximale grootte van geüploade bijlagen in bytes.
S3_REGION / S3_BUCKETUitgeschakeldStart implementatiebrede S3-compatibele opslag wanneer u beschikt over inloggegevens.
S3_ACCESS_KEY_ID / S3_SECRET_ACCESS_KEYUitgeschakeldInloggegevens voor de uploadbucket. Beide zijn vereist voor omgevingsgebaseerde S3.
S3_ENDPOINTUitgeschakeldAangepast eindpunt voor MinIO, R2 of een andere S3-compatibele provider. Als u dit instelt, worden verzoeken in padstijl ingeschakeld.
S3_PUBLIC_URL_PREFIXUitgeschakeldOptioneel openbaar of CDN-voorvoegsel voor opgeslagen objecten.

Omgevingsopslag heeft voorrang op organisatieopslag die in de app is geconfigureerd. Zie Opslag en back-ups voordat u overschakelt naar een installatie die al uploads heeft.

E-mail, meldingen en integraties​

VariabelStandaardDoel
SMTP_HOST, SMTP_USER, SMTP_PASSWORD, SMTP_FROM_EMAILUitgeschakeldStandaard uitgaande SMTP-verbinding en afzender.
SMTP_PORT / SMTP_SECURITY587 / starttlsSMTP-poort en transport: starttls, tls, of none.
SMTP_FROM_NAMEKaneraWeergavenaam van afzender.
SMTP_IDENTITY_DOMAINE-maildomein van afzenderEHLO- en Message-ID-domein.
INTERNAL_NOTIFICATION_EMAILSUitgeschakeldDoor komma's gescheiden ontvangers voor aanmelding in platte tekst en uitnodigingswaarschuwingen. Vereist omgevings-SMTP.
KANERA_ALLOW_PRIVATE_NOTIFICATION_DESTINATIONSfalseSta persoonlijke ntfy-, Gotify- en webhook-ontvangers toe op HTTP- of privénetwerken. Gereserveerde en metadata-adressen blijven geblokkeerd.
ALERT_WEBHOOK_URLUitgeschakeldSlack-compatibele bestemming voor gereedheids-, runtime- en Grafana-waarschuwingen.
OPS_ALERTS_ENABLED / OPS_ALERT_THROTTLE_MStrue / 300000Schakel operationele waarschuwingen in en ontdubbel ze. Niets wordt zonder bestemming verzonden.
SLOW_REQUEST_LOG_MS2500Drempel voor een waarschuwing voor langzame aanvragen in logboeken.
GITHUB_APP_ID, GITHUB_APP_SLUG, GITHUB_APP_PRIVATE_KEYUitgeschakeldOptionele, door de implementatie gedefinieerde GitHub-app voor previews van privékoppelingen. Zelf-hostende beheerders kunnen in plaats daarvan de in-app-manifeststroom gebruiken.
TRELLO_API_KEYUitgeschakeldLaat Trello importeert bijlagen verifiëren en kopiëren.

Zie E-mail en meldingen en Integraties en API's.

Back-ups en retentie​

VariabelStandaardDoel
DB_BACKUPS_ENABLEDfalseSchakel geplande gecodeerde PostgreSQL-back-ups naar S3-compatibele opslag in.
DB_BACKUP_ENCRYPTION_PASSPHRASEUitgeschakeldVereist wanneer back-ups zijn ingeschakeld en opnieuw vereist om ze te herstellen.
DB_BACKUP_TIMES_UTC00:15,12:15,16:45Door komma's gescheiden dagelijkse UTC-back-uptijden.
DB_BACKUP_RETENTION_DAYS14Succesvolle bewaarperiode voor back-ups.
DB_BACKUP_S3_PREFIXbackups/postgresObjectvoorvoegsel voor databasedumps.
DB_BACKUP_S3_BUCKET, DB_BACKUP_S3_REGION, DB_BACKUP_S3_ENDPOINTUpload-opslagwaardenOptioneel afzonderlijk back-updoel.
DB_BACKUP_S3_ACCESS_KEY_ID, DB_BACKUP_S3_SECRET_ACCESS_KEYUpload-opslagwaardenOptionele afzonderlijke back-upreferenties.
ACTIVITY_EVENT_RETENTION_DAYS730Behouden van activiteitengeschiedenis.
ADMIN_AUDIT_LOG_RETENTION_DAYS1095Bewaren van beheerauditlogboeken.
NOTIFICATION_READ_RETENTION_DAYS / NOTIFICATION_MAX_RETENTION_DAYS90 / 365Leesmelding en absoluut behoud van meldingen.
AUTH_TOKEN_RETENTION_DAYS30De respijtperiode voordat verlopen of verbruikte auth-artefacten worden verwijderd.
REALTIME_OUTBOX_RETENTION_DAYS / OUTBOX_STUCK_RETENTION_DAYS30 / 30Verwerkte en permanent vastgelopen outbox-retentie.

Zie Opslag en back-ups voor back-upvereisten en herstelplanning.

Toezicht​

VariabelStandaardDoel
METRICS_ENABLEDtrueRegistreert eindpunten van Prometheus-metrieken. Ze keren terug 404 zonder geldig token.
METRICS_TOKENUitgeschakeldBearer-token, minimaal 16 tekens, vereist voor scrapen.
COMPOSE_PROFILESUitgeschakeldInclusief monitoring om Grafana, Prometheus, Loki, Alloy en exporteurs te starten; omvatten admin voor het beheerportaal.
COMPOSE_PROJECT_NAMEkaneraStel de identiteit samen die door Alloy wordt gebruikt om de logboeken van deze implementatie te selecteren. Controleer docker compose ls op beheerde platforms.
GRAFANA_ADMIN_PASSWORDUitgeschakeldVereist wanneer het monitoringprofiel is ingeschakeld.
MONITORING_BIND_IP127.0.0.1Hostinterface voor Grafana en Prometheus. Gebruik nooit een privé VPN-adres 0.0.0.0 in productie.
GRAFANA_BIND_PORT / PROMETHEUS_BIND_PORT3000 / 9090Hostpoorten voor de twee monitoring-UI's.
PROMETHEUS_RETENTION / PROMETHEUS_RETENTION_SIZE30d / 5GBTijd- en schijfplafonds voor Prometheus-gegevens.
GRAFANA_ROOT_URLUitgeschakeldExterne Grafana-URL bij weergave via een proxy.
POSTGRES_EXPORTER_DSNGebundelde databaseOverschrijven voor een externe PostgreSQL-server.
REALTIME_EMIT_METRICS_ENABLEDfalseSchakel bemonsterde realtime payload-statistieken in.
REALTIME_EMIT_METRICS_SAMPLE_RATE / REALTIME_EMIT_METRICS_MIN_BYTES0.01 / 0Realtime bemonstering van metrische gegevens en minimale payloadgrootte.

Optioneel beheerportaal​

De beheerportal staat los van de tenantinstellingen en heeft een eigen authenticatiegrens. Schakel het alleen in als operators organisatiebreed beheer of gecontroleerde ondersteuningssessies nodig hebben.

VariabelStandaardDoel
ADMIN_WEB_ORIGINhttp://localhost:4300Openbare oorsprong en CORS-grens voor de beheerdersconsole.
ADMIN_API_PORT3002Interne beheer-API-listenerpoort wanneer deze buiten de gebundelde bedrading wordt uitgevoerd.
ADMIN_COOKIE_DOMAINUitgeschakeldCookie-domein overschrijven wanneer de hostnaam van de beheerder zich buiten bevindt COOKIE_DOMAIN.
ADMIN_JWT_SECRETUitgeschakeldVereist voor de admin API en moet afwijken van JWT_SECRET.
ADMIN_EMAIL / ADMIN_PASSWORDUitgeschakeldSeed de eerste superadmin alleen als de admin-user-tabel leeg is. Ze resetten geen bestaand account.
ADMIN_JWT_ACCESS_TTL / ADMIN_JWT_REFRESH_TTL_DAYS15m / 7Beheerderstoegang en vernieuwingslevensduren.
ADMIN_LOGIN_RATE_LIMIT_MAX / ADMIN_LOGIN_RATE_LIMIT_WINDOW_MS5 / 300000Inlogbeperking per IP-beheerder.
ADMIN_TRUST_PROXYtrueVertrouw op de omgekeerde proxy van de beheerder voor echte client-IP's.
SUPPORT_SESSION_TTL_MINUTES60Korte levensduur van de ondersteuningssessie; maximaal acht uur en geen vernieuwingstoken.

Houd de beheerportal privé, gebruik een aparte hostnaam en geheim, en bekijk het auditlogboek. De volledige implementatiebedrading is gedocumenteerd in DEPLOY.md in de Kanera-repository.

Wijzigingen toepassen en verifiëren​

Bij de meeste wijzigingen moeten de betreffende services opnieuw worden gemaakt:

docker compose config --quiet
docker compose up -d
docker compose ps

Controleer de relevante servicelogboeken na het wijzigen van authenticatie-, leverings-, opslag-, API-, MCP- of beheerdersinstellingen. Een syntactisch geldige .env bewijst niet dat externe inloggegevens of URL's werken.