Selv-Hosted Miljø Referanse
Begynn med utgivelsen env.examplesom du har lastet ned som .env i Komme i gang. Det er den minste støttede Compose konfigurasjon. Bruk env.full.example når du trenger en valgfri innstilling; denne siden forklarer hvilke innstillinger som hører sammen og når du skal endre dem.
Etter redigering .env, validere interpolering uten å skrive ut den løste konfigurasjonen:
docker compose config --quiet
Ikke forplikte .env, lim den inn i støtteforespørsler, eller utsett utgangen av docker compose config: Den løste utgangen inneholder hemmeligheter.
Nødvendige produksjonsverdier
Generer hver hemmelighet uavhengig med openssl rand -hex 32. Hold de gamle verdiene gjennom hver oppgradering og lagre en gjenopprettingskopi utenfor serveren.
| Variabel | Produksjonsverdi | Hvorfor det betyr noe |
|---|---|---|
POSTGRES_PASSWORD | Unikt tilfeldig passord | Beskytter den medfølgende PostgreSQL-databasen. |
WEB_ORIGIN | Offentlig HTTPS-appopprinnelse, som https://kanera.example.com | Brukes for nettleserlenker, CORS og autentiseringsflyter. Ikke ta med en etterfølgende skråstrek. |
COOKIE_DOMAIN | App-vertsnavn, for eksempel kanera.example.com | Tillegg for oppfriskningskaken. |
COOKIE_SECURE | true | Nødvendig når appen er servert over HTTPS. |
JWT_SECRET | Stabil tilfeldig hemmelighet, minst 16 tegn | Signerer brukerøkter. Rotasjon signerer alle ut. |
MCP_INTERNAL_SECRET | Stabil tilfeldig hemmelighet, minst 32 tegn og forskjellig fra JWT_SECRET | Lar MCP og offentlige API-tjenester utveksle publikumsbundet OAuth-legitimasjon uten å videresende en MCP-token til /api/v1Begge tjenestene må alltid ha samme verdi. |
MFA_ENCRYPTION_KEY | Stabil tilfeldig hemmelighet, minst 32 tegn | Beskytter autentiseringsregistrering og utfordringer. Rotasjon ugyldiggjør registrerte autentiseringspersoner. |
MEDIA_SIGNING_SECRET | Stabil tilfeldig hemmelighet, minst 32 tegn | Signerer private medieadresser. Rotasjon ugyldiggjør eksisterende signerte nettadresser. |
SECRETS_ENCRYPTION_KEY | Stabil tilfeldig hemmelighet, minst 32 tegn og forskjellig fra JWT_SECRET | Krypterer SMTP, lagring, webhook og integrasjonslegitimasjon som er lagret i databasen. |
KANERA_DEPLOYMENT_MODE standardverdier til self_hosted. Vertsbasert modus og dens Stripe, PostHog, plan-limit og lisensieringsvariabler er for Kanera-opererte distribusjoner og bør forbli uinnstilt på en selv-vert installasjon.
Komponer forsyninger NODE_ENV=production og ANALYTICS_ENABLED=false. La ANALYTICS_PROVIDER, POSTHOG_PROJECT_KEY, POSTHOG_API_HOST, hver STRIPE_*, HOSTED_*, og vertsmodus token unset. Disse innstillingene slår ikke en selvbetjent installasjon til Kanera Cloud.
Offentlige URL-adresser og tjenester
| Variabel | Standard | Sett den når |
|---|---|---|
KANERA_ENVIRONMENT | production i produksjon Compose | Du trenger et annet API-nøkkelprefiks for utvikling, testing eller iscenesettelse. |
API_PUBLIC_URL | WEB_ORIGIN | Appen API bruker en annen offentlig opprinnelse. |
KANERA_PUBLIC_API_URL | http://public-api:3001 i Komponere | MCP eller en annen intern prosess når den offentlige API-en et annet sted enn dens Compose-tjenesteadresse. Dette er en intern URL, ikke den nettleservendte API-opprinnelsen. |
PUBLIC_API_OAUTH_ISSUER | http://localhost:3001 | Du eksponerer OAuth eller den offentlige API eksternt; bruk den nettleser-nåbare HTTPS-opprinnelsen. |
MCP_SERVER_PUBLIC_URL | http://localhost:3002/mcp | Du eksponerer ekstern MCP; bruk hele publikum /mcp URL. |
MCP_PUBLIC_URL | Avledet fra MCP_SERVER_PUBLIC_URL etter Compose | Du kjører MCP-tjenesten utenfor den medfølgende komponere ledninger. |
OAUTH_ISSUER_URL | Avledet fra PUBLIC_API_OAUTH_ISSUER etter Compose | Du kjører MCP utenfor den medfølgende Compose ledninger. |
API_PORT, PUBLIC_API_PORT, WORKER_PORT, MCP_PORT | 3000, 3001, 3003, 3002 | Du kjører tjenester utenfor Compose eller trenger forskjellige interne lytterporter. |
API_TRUST_PROXY, PUBLIC_API_TRUST_PROXY, MCP_TRUST_PROXY | false, false, true | En pålitelig omvendt proxy leverer den virkelige klient-IP-en. Stol aldri på videresendte overskrifter fra vilkårlige klienter. |
Nettleseren kobler til web; ikke publisere hoved api service. Se Tjenester og rute før du eksponerer den offentlige API eller MCP.
Kontoer og autentisering
| Variabel | Standard | Formål |
|---|---|---|
SIGNUPS_ENABLED | true | Sett false for å stoppe offentlig registrering og opprettelse av ny organisasjon. Eksisterende organisasjonsinvitasjonslenker fungerer fortsatt. |
EMAIL_VERIFICATION_ENABLED | false | Krev en sekssifret e-postsjekk for registrering, inviter registrering og e-postendringer. Aktiver bare etter at SMTP fungerer. |
AUTH_RATE_LIMIT_ENABLED | true | Aktiver per-IP brute-force strupe på ikke-autentiserte auth ruter. |
AUTH_RATE_LIMIT_MAX / AUTH_RATE_LIMIT_WINDOW_MS | 10 / 60000 | Tillatt auth forsøk per vindu. |
JWT_ACCESS_TTL / JWT_REFRESH_TTL_DAYS | 5m / 10 | Tilgangstoken og oppdaterings-økt levetid. |
CLOUDFLARE_TURNSTILE_SITE_KEY / CLOUDFLARE_TURNSTILE_SECRET_KEY | Fjern | Vert registrering beskyttelse. La unset for normal selv-hosting. |
Brukere konfigurerer sin egen autentiseringsenhet under Innstillinger -> Din konto -> Sikkerhet. Organisasjonsadministratorer kan kreve det under Innstillinger -> Organisasjon -> Sikkerhet. Se Profil og sikkerhet.
Offentlige API- og MCP-grenser
| Variabel | Standard | Formål |
|---|---|---|
PUBLIC_API_RATE_LIMIT_ENABLED | true | Aktiverer offentlige API- og MCP-forespørselsgrenser. |
PUBLIC_API_IP_RATE_LIMIT_PER_MINUTE | 60 | Grense for ikke-autentiserte oppdagelses- og ugyldige bærerformater. |
PUBLIC_API_FAILED_KEY_RATE_LIMIT_PER_MINUTE | 10 | Per- IP- grense for mislyktes kanera_* Nøkkelforsøk. |
PUBLIC_API_KEY_RATE_LIMIT_PER_MINUTE | 400 | Begrensning per nøkkel-forespørsel etter vellykket autentisering. |
PUBLIC_API_UPLOAD_RATE_LIMIT_PER_MINUTE | 30 | Grense for opplasting av vedlegg per nøkkel. |
PUBLIC_API_RATE_LIMIT_WINDOW_MS | 60000 | Rate-limit vindu delt av den offentlige API og MCP. |
MCP_BODY_MAX_BYTES | 1048576 | Maksimal MCP-forespørselskropp. |
MCP_REQUEST_TIMEOUT_MS | 30000 | Maksimal tid for en MCP-forespørsel. |
MCP_HEADERS_TIMEOUT_MS / MCP_KEEP_ALIVE_TIMEOUT_MS | 10000 / 5000 | MCP HTTP-tilkoblingstimeouts. |
KANERA_API_KEY | Fjern | Kreves bare av den lokale standard MCP-broen, ikke HTTP MCP-tjenesten. |
Database, hurtigbuffer og kapasitet
Komponer forsyninger DATABASE_URL og REDIS_URL for de sammenpakkede PostgreSQL- og Valkey-tjenestene. Angi dem selv bare når du kjører en prosess utenfor nettverket eller bruker administrerte tjenester.
| Variabel | Skriv standard | Formål |
|---|---|---|
DATABASE_SSL | false | Aktiver bare når en ekstern database krever SSL. |
POSTGRES_BIND_PORT | 5433 | Loopback-bare vertsport for medfølgende PostgreSQL. |
API_REPLICAS / PUBLIC_API_REPLICAS / MCP_REPLICAS | 2 / 1 / 1 | Serviceprosessen teller. Hold arbeideren på nøyaktig ett. |
PG_POOL_MAX / WORKER_PG_POOL_MAX | 20 / 5 | Maksimal databasetilkobling per appprosess og for arbeideren. |
PG_IDLE_TIMEOUT_MS / PG_CONNECTION_TIMEOUT_MS | 30000 / 5000 | Pool tomgang og oppkjøp timeouts. |
PG_STATEMENT_TIMEOUT_MS / SLOW_QUERY_LOG_MS | 30000 / 250 | Tidsavbrudd for databasespørring og terskel for langsom spørring. |
NODE_OPTIONS | Fjern | Valgfrie nodeflagg, for eksempel en heapgrense. |
UV_THREADPOOL_SIZE | 16 | Innfødte arbeidertråder som brukes av hashing, krypto og bildebehandling. |
REALTIME_WEBSOCKET_COMPRESSION_ENABLED | true | Komprimer større Socket.IO WebSocket meldinger. |
REALTIME_WEBSOCKET_COMPRESSION_THRESHOLD_BYTES | 1024 | Minimum sanntidsrammestørrelse for komprimering. |
REALTIME_OUTBOX_POLL_MS | 500 i Komponere | Arbeider fallback polling intervall for sanntid og webhook utboks rader. |
USER_DISPLAY_CACHE_TTL_MS | 60000 | Levetid for hurtigbuffer under behandling for oppslag med visningsnavn. |
Hev kopier og bassenger sammen bare etter måling kapasitet. Se Oppdateringer og skalering.
Filer og objektlagring
| Variabel | Standard | Formål |
|---|---|---|
UPLOADS_DIR | /data/uploads i Komponere | Lokal opplastingskatalog. Bundlet Compose retter denne banen og vedvarer den i kanera_uploads; endre volumkartleggingen i stedet for .env. |
ATTACHMENT_MAX_BYTES | 104857600 | Maksimal opplastet vedleggsstørrelse i byte. |
S3_REGION / S3_BUCKET | Fjern | Start distribusjonsbred S3-kompatibel lagring når den leveres med legitimasjon. |
S3_ACCESS_KEY_ID / S3_SECRET_ACCESS_KEY | Fjern | Påloggingsopplysninger for opplastingsbøtta. Begge er nødvendige for miljøbasert S3. |
S3_ENDPOINT | Fjern | Egendefinert endepunkt for MinIO, R2 eller en annen S3-kompatibel leverandør. Innstilling det aktiverer banen stil forespørsler. |
S3_PUBLIC_URL_PREFIX | Fjern | Valgfritt offentlig eller CDN-prefiks for lagrede objekter. |
Miljølagring har forrang over organisasjonslagring som er konfigurert i appen. Se Lagring og sikkerhetskopiering før du bytter en installasjon som allerede har opplastinger.
E-post, varsler og integrasjoner
| Variabel | Standard | Formål |
|---|---|---|
SMTP_HOST, SMTP_USER, SMTP_PASSWORD, SMTP_FROM_EMAIL | Fjern | Standard utgående SMTP-tilkobling og avsender. |
SMTP_PORT / SMTP_SECURITY | 587 / starttls | SMTP-port og transport: starttls, tls, eller none. |
SMTP_FROM_NAME | Kanera | Avsenders visningsnavn. |
SMTP_IDENTITY_DOMAIN | Avsender e-postdomene | EHLO og Message-ID domene. |
INTERNAL_NOTIFICATION_EMAILS | Fjern | Komma-separerte mottakere for klartekst registrering og invitasjon varsler. Krever miljø SMTP. |
KANERA_ALLOW_PRIVATE_NOTIFICATION_DESTINATIONS | false | Tillat personlige ntfy, Gotify og webhook mottakere på HTTP eller private nettverk. Reserverte og metadata adresser forblir blokkert. |
ALERT_WEBHOOK_URL | Fjern | Slack-kompatibel destinasjon for beredskap, kjøretid og Grafana varsler. |
OPS_ALERTS_ENABLED / OPS_ALERT_THROTTLE_MS | true / 300000 | Aktiver og dedupliker driftsvarsler. Ingenting sendes uten et mål. |
SLOW_REQUEST_LOG_MS | 2500 | Terskel for langsom forespørsel i logger. |
GITHUB_APP_ID, GITHUB_APP_SLUG, GITHUB_APP_PRIVATE_KEY | Fjern | Valgfritt distribusjonsdefinert GitHub App for private lenke forhåndsvisninger. Selvbetjente administratorer kan i stedet bruke i-app manifest flyt. |
TRELLO_API_KEY | Fjern | Lar Trello importerer autentisering og kopiere vedlegg. |
Se E-post og varsler og Integrasjoner og APIer.
Sikkerhetskopiering og oppbevaring
| Variabel | Standard | Formål |
|---|---|---|
DB_BACKUPS_ENABLED | false | Aktiver planlagte krypterte PostgreSQL-sikkerhetskopier til S3-kompatibel lagring. |
DB_BACKUP_ENCRYPTION_PASSPHRASE | Fjern | Kreves når sikkerhetskopier er aktivert og kreves igjen for å gjenopprette dem. |
DB_BACKUP_TIMES_UTC | 00:15,12:15,16:45 | Komma-adskilt daglig UTC backup ganger. |
DB_BACKUP_RETENTION_DAYS | 14 | Vellykket backup oppbevaring vindu. |
DB_BACKUP_S3_PREFIX | backups/postgres | Objektprefiks for databasedumper. |
DB_BACKUP_S3_BUCKET, DB_BACKUP_S3_REGION, DB_BACKUP_S3_ENDPOINT | Opplastingsverdier | Valgfritt separat sikkerhetskopieringsdestinasjon. |
DB_BACKUP_S3_ACCESS_KEY_ID, DB_BACKUP_S3_SECRET_ACCESS_KEY | Opplastingsverdier | Valgfri separat sikkerhetskopieringsinformasjon. |
ACTIVITY_EVENT_RETENTION_DAYS | 730 | Aktivitetshistorie oppbevaring. |
ADMIN_AUDIT_LOG_RETENTION_DAYS | 1095 | Ledelsens revisjonslogg. |
NOTIFICATION_READ_RETENTION_DAYS / NOTIFICATION_MAX_RETENTION_DAYS | 90 / 365 | Les-varsling og absolutt varsling oppbevaring. |
AUTH_TOKEN_RETENTION_DAYS | 30 | Nådeperiode før utløpt eller forbrukt auth artefakter er renset. |
REALTIME_OUTBOX_RETENTION_DAYS / OUTBOX_STUCK_RETENTION_DAYS | 30 / 30 | Behandlet og permanent fast utboks oppbevaring. |
Se Lagring og sikkerhetskopiering for sikkerhetskopieringskrav og gjenopprettingsplanlegging.
Overvåking
| Variabel | Standard | Formål |
|---|---|---|
METRICS_ENABLED | true | Registrerer Prometheus-målepunkter. De returnerer 404 Uten gyldige tegn. |
METRICS_TOKEN | Fjern | Bærertoken, minst 16 tegn, kreves for skraping. |
COMPOSE_PROFILES | Fjern | Inkluder monitoring å starte Grafana, Prometheus, Loke, Alloy, og eksportører; inkludere admin for forvaltningsportalen. |
COMPOSE_PROJECT_NAME | kanera | Skriv identitet som brukes av Alloy til å velge logger for denne distribusjonen. docker compose ls på administrerte plattformer. |
GRAFANA_ADMIN_PASSWORD | Fjern | Nødvendig når overvåkingsprofilen er aktivert. |
MONITORING_BIND_IP | 127.0.0.1 | Vertsgrensesnitt for Grafana og Prometheus. Bruk en privat VPN-adresse, aldri 0.0.0.0 i produksjon. |
GRAFANA_BIND_PORT / PROMETHEUS_BIND_PORT | 3000 / 9090 | Vertsporter for de to overvåkingsgrensesnittene. |
PROMETHEUS_RETENTION / PROMETHEUS_RETENTION_SIZE | 30d / 5GB | Tid og disk tak for Prometheus data. |
GRAFANA_ROOT_URL | Fjern | Ekstern Grafana URL når den serveres gjennom en proxy. |
POSTGRES_EXPORTER_DSN | Bundlet database | Overstyring for en ekstern PostgreSQL-server. |
REALTIME_EMIT_METRICS_ENABLED | false | Aktiver samplede sanntid nyttelast beregninger. |
REALTIME_EMIT_METRICS_SAMPLE_RATE / REALTIME_EMIT_METRICS_MIN_BYTES | 0.01 / 0 | Sampling i sanntid og minste nyttelaststørrelse. |
Valgfri administrasjonsportal
Administrasjonsportalen er atskilt fra leietakerinnstillinger og har sin egen autentiseringsgrense. Aktiver den bare når operatører trenger administrasjon på tvers av organisasjonen eller reviderte støtteøkter.
| Variabel | Standard | Formål |
|---|---|---|
ADMIN_WEB_ORIGIN | http://localhost:4300 | Offentlig opprinnelse og CORS-grense for admin-konsollen. |
ADMIN_API_PORT | 3002 | Intern admin API lytter port når den kjører utenfor den medfølgende ledninger. |
ADMIN_COOKIE_DOMAIN | Fjern | Overstyring av informasjonskapsel-domene når administratorvertsnavnet er utenfor COOKIE_DOMAIN. |
ADMIN_JWT_SECRET | Fjern | kreves for admin API og må avvike fra JWT_SECRET. |
ADMIN_EMAIL / ADMIN_PASSWORD | Fjern | Seed den første superadmin bare mens admin-user tabellen er tom. De tilbakestiller ikke en eksisterende konto. |
ADMIN_JWT_ACCESS_TTL / ADMIN_JWT_REFRESH_TTL_DAYS | 15m / 7 | Admin tilgang og oppdatere levetider. |
ADMIN_LOGIN_RATE_LIMIT_MAX / ADMIN_LOGIN_RATE_LIMIT_WINDOW_MS | 5 / 300000 | Per-IP admin innlogging gass. |
ADMIN_TRUST_PROXY | true | Stol på admin omvendt proxy for ekte klient IP-adresser. |
SUPPORT_SESSION_TTL_MINUTES | 60 | Kort levetid på støtteøkten; maksimalt åtte timer og ingen oppdateringstoken. |
Hold administrasjonsportalen privat, bruk et eget vertsnavn og hemmelig, og gjennomgå revisjonsloggen. Den fullstendige distribusjonsledningen er dokumentert i DEPLOY.md i Kanera-arkivet.
Bruk og verifiser endringer
De fleste endringer krever at de berørte tjenestene gjenskapes:
docker compose config --quiet
docker compose up -d
docker compose ps
Kontroller de relevante tjenesteloggene etter endring av autentisering, levering, lagring, API, MCP eller administratorinnstillinger. .env Det er ikke bevist at eksterne legitimasjon eller URL-adresser fungerer.