跳转到主要内容

自托管环境参考

从发布开始 env.example,您下载为 .env 在 快速入门。它是受支持的最小 Compose 配置。使用 env.full.example 当您需要可选设置时;此页面解释哪些设置属于一起以及何时更改它们。

编辑后 .env,验证插值而不打印解析的配置:

docker compose config --quiet

不要犯罪 .env,将其粘贴到支持请求中,或公开以下输出 docker compose config:解析的输出包含秘密。

所需生产值​

使用以下方法独立生成每个秘密: openssl rand -hex 32。每次升级时保留旧值,并在服务器外部存储恢复副本。

变量生产值为什么这很重要
POSTGRES_PASSWORD独特的随机密码保护捆绑的 PostgreSQL 数据库。
WEB_ORIGIN公共 HTTPS 应用源,例如 https://kanera.example.com用于浏览器链接、CORS 和身份验证流程。 不要包含后缀斜线。
COOKIE_DOMAIN应用程序主机名,例如 kanera.example.com刷新cookie的范围。
COOKIE_SECUREtrue当应用通过 HTTPS 提供时,必须使用此项。
JWT_SECRET稳定的随机密码,至少16个字符用户会话签名。 轮换会将所有人注销。
MCP_INTERNAL_SECRET稳定的随机密码,至少32个字符,不同于 JWT_SECRET允许 MCP 和公共 API 服务交换受众约束 OAuth 凭据,而不会将 MCP 令牌转发到 /api/v1。两种服务必须始终使用相同的值。
MFA_ENCRYPTION_KEY稳定的随机密码,至少32个字符保护身份验证器的注册和挑战。 轮换会使已注册的身份验证器无效。
MEDIA_SIGNING_SECRET稳定的随机密码,至少32个字符签署私有媒体 URL。 轮换会使现有签署的 URL 无效。
SECRETS_ENCRYPTION_KEY稳定的随机密码,至少32个字符,不同于 JWT_SECRET加密存储在数据库中的 SMTP、存储、webhook 和集成凭据。

KANERA_DEPLOYMENT_MODE 未付款额 self_hosted。托管模式及其 Stripe、PostHog、计划限制和许可变量适用于 Kanera 操作的部署,并且在自托管安装上应保持未设置状态。

编写用品 NODE_ENV=production 以及 ANALYTICS_ENABLED=false。离开 ANALYTICS_PROVIDER, POSTHOG_PROJECT_KEY, POSTHOG_API_HOST, 每个 STRIPE_*, HOSTED_*,并且托管模式令牌未设置。这些设置不会将自托管安装转变为 Kanera 云。

公共 URL 和服务​

变量默认设置它时
KANERA_ENVIRONMENTproduction 生产中 编写您需要不同的 API 密钥前缀来进行开发、测试或临时安装。
API_PUBLIC_URLWEB_ORIGIN面向浏览器的应用 API 使用不同的公共源。
KANERA_PUBLIC_API_URLhttp://public-api:3001 编写MCP 或其他内部进程在其 Compose 服务地址以外的某个位置访问公共 API,这是一个内部 URL,而不是面向浏览器的 API 源。
PUBLIC_API_OAUTH_ISSUERhttp://localhost:3001您远程公开 OAuth 或公共 API;使用其可由浏览器访问的 HTTPS 源。
MCP_SERVER_PUBLIC_URLhttp://localhost:3002/mcp您公开远程 MCP;使用完整的公共 /mcp URL .
MCP_PUBLIC_URL来自 MCP_SERVER_PUBLIC_URL 按编写方式分类您在捆绑的 Compose 布线之外运行 MCP 服务。
OAUTH_ISSUER_URL来自 PUBLIC_API_OAUTH_ISSUER 按编写方式分类您在捆绑的 Compose 布线之外运行 MCP。
API_PORT, PUBLIC_API_PORT, WORKER_PORT, MCP_PORT3000, 3001, 3003, 3002您在 Compose 之外运行服务,或者需要不同的内部侦听端口。
API_TRUST_PROXY, PUBLIC_API_TRUST_PROXY, MCP_TRUST_PROXYfalse, false, true受信任的反向代理提供真实的客户端 IP。切勿信任来自任意客户端的转发标头。

浏览器连接到 web;不发布主要内容 api 服务。 服务与路由 在公开公共 API 或 MCP 之前。

帐户和身份验证​

变量默认目 的
SIGNUPS_ENABLEDtrue集合 false 停止公开注册和创建新组织。 现有组织邀请链接仍然有效。
EMAIL_VERIFICATION_ENABLEDfalse要求对注册、邀请注册和电子邮件更改进行六位数字的电子邮件验证。 只有在 SMTP 工作后才启用。
AUTH_RATE_LIMIT_ENABLEDtrue在未经身份验证的 auth 路由上启用每个 IP 的暴力控制。
AUTH_RATE_LIMIT_MAX / AUTH_RATE_LIMIT_WINDOW_MS10 / 60000每个窗口允许的身份验证尝试。
JWT_ACCESS_TTL / JWT_REFRESH_TTL_DAYS5m / 10访问令牌和刷新会话生命周期。
CLOUDFLARE_TURNSTILE_SITE_KEY / CLOUDFLARE_TURNSTILE_SECRET_KEY未设置托管注册保护。 对于正常的自托管,请不要设置。

用户在下面配置自己的身份验证器 设置 -> 您的帐户 -> 安全。组织管理员可以在下面要求它 设置 -> 组织 -> 安全。参见 个人资料与安全.

公共 API 和 MCP 限制​

变量默认目 的
PUBLIC_API_RATE_LIMIT_ENABLEDtrue启用公共 API 和 MCP 请求限制。
PUBLIC_API_IP_RATE_LIMIT_PER_MINUTE60限制未经身份验证的发现和无效载体格式。
PUBLIC_API_FAILED_KEY_RATE_LIMIT_PER_MINUTE10失败的每个 IP 限制 kanera_* 关键的尝试。
PUBLIC_API_KEY_RATE_LIMIT_PER_MINUTE400成功身份验证后的每个密钥请求限制。
PUBLIC_API_UPLOAD_RATE_LIMIT_PER_MINUTE30每个密钥的附件上传限制。
PUBLIC_API_RATE_LIMIT_WINDOW_MS60000由公共 API 和 MCP 共享的速率限制窗口。
MCP_BODY_MAX_BYTES1048576最大 MCP 请求正文。
MCP_REQUEST_TIMEOUT_MS30000MCP 请求的最大时间。
MCP_HEADERS_TIMEOUT_MS / MCP_KEEP_ALIVE_TIMEOUT_MS10000 / 5000MCP HTTP 连接超时。
KANERA_API_KEY未设置仅本地 stdio MCP 桥需要,而不是 HTTP MCP 服务。

数据库、缓存和容量​

编写用品 DATABASE_URL 以及 REDIS_URL 为了孩子 PostgreSQL 以及 Valkey 只有在在该网络之外运行进程或使用托管服务时,才能自行设置它们。

变量默认编写目 的
DATABASE_SSLfalse仅当外部数据库需要 SSL 时才启用。
POSTGRES_BIND_PORT5433捆绑的 PostgreSQL 的仅循环回路主机端口。
API_REPLICAS / PUBLIC_API_REPLICAS / MCP_REPLICAS2 / 1 / 1服务过程是重要的。 让工作者保持在正确的位置。
PG_POOL_MAX / WORKER_PG_POOL_MAX20 / 5每个应用程序进程和工作程序的最大数据库连接数。
PG_IDLE_TIMEOUT_MS / PG_CONNECTION_TIMEOUT_MS30000 / 5000池空闲和采集超时。
PG_STATEMENT_TIMEOUT_MS / SLOW_QUERY_LOG_MS30000 / 250数据库查询超时和缓慢查询日志记录阈值。
NODE_OPTIONS未设置可选节点标志,如堆限制。
UV_THREADPOOL_SIZE16散列、加密和图像处理所使用的本机工作线程。
REALTIME_WEBSOCKET_COMPRESSION_ENABLEDtrue压缩较大的 Socket.IO WebSocket 消息。
REALTIME_WEBSOCKET_COMPRESSION_THRESHOLD_BYTES1024要压缩的最小实时帧大小。
REALTIME_OUTBOX_POLL_MS500 编写实时和 webhook 发件箱行的工作程序备用调查间隔。
USER_DISPLAY_CACHE_TTL_MS60000显示名称查找的进程中缓存寿命。

只有在测量容量后才能将复制件和池一起提升。 更新与扩展.

文件和对象存储​

变量默认目 的
UPLOADS_DIR/data/uploads 编写本地上传目录。 Bundled Compose 修复此路径并将其保留在 kanera_uploads;更改卷映射而不是 .env.
ATTACHMENT_MAX_BYTES104857600上传的附件最大大小(字节 ) 。
S3_REGION / S3_BUCKET未设置提供凭据后,启动全部署范围内的 S3 兼容存储。
S3_ACCESS_KEY_ID / S3_SECRET_ACCESS_KEY未设置上传 bucket 的凭据。 基于环境的 S3 需要这两个凭据。
S3_ENDPOINT未设置适用于 MinIO、R2 或其他 S3 兼容提供程序的自定义端点。 设置它后,启用路径式请求。
S3_PUBLIC_URL_PREFIX未设置存储对象的可选公共或 CDN 前缀。

环境存储优先于应用程序中配置的组织存储。 参见 存储与备份 在切换已有上传的安装之前。

电子邮件、通知和集成​

变量默认目 的
SMTP_HOST, SMTP_USER, SMTP_PASSWORD, SMTP_FROM_EMAIL未设置默认的出站 SMTP 连接和发件人。
SMTP_PORT / SMTP_SECURITY587 / starttlsSMTP 端口和传输: starttls, tls, 或 none.
SMTP_FROM_NAMEKanera发件人显示名称。
SMTP_IDENTITY_DOMAIN发件人电子邮件域EHLO 和消息 ID 域。
INTERNAL_NOTIFICATION_EMAILS未设置用逗号分隔的收件人用于纯文本注册和邀请提醒。 需要环境 SMTP。
KANERA_ALLOW_PRIVATE_NOTIFICATION_DESTINATIONSfalse允许 HTTP 或专用网络上的个人 ntfy、Gotify 和 webhook 接收器。保留地址和元数据地址仍然被阻止。
ALERT_WEBHOOK_URL未设置与 Slack 兼容的准备状态、运行时和 Grafana 警报目标。
OPS_ALERTS_ENABLED / OPS_ALERT_THROTTLE_MStrue / 300000启用并去重操作警报。 没有目标,就不会发送任何信息。
SLOW_REQUEST_LOG_MS2500日志中缓慢请求警告的阈值。
GITHUB_APP_ID, GITHUB_APP_SLUG, GITHUB_APP_PRIVATE_KEY未设置可选部署定义的 GitHub 应用程序,用于私有链接预览。 自托管管理员可以使用应用程序内清单流。
TRELLO_API_KEY未设置让 Trello 导入验证和复制附件。

海 电子邮件与通知 以及 集成与 API.

Backups and retention​

变量默认目 的
DB_BACKUPS_ENABLEDfalse启用将 PostgreSQL 加密备份到 S3 兼容存储的计划备份。
DB_BACKUP_ENCRYPTION_PASSPHRASE未设置启用备份时必需,并且还原备份时再次需要。
DB_BACKUP_TIMES_UTC00:15,12:15,16:45用逗号分隔的每日 UTC 备份时间。
DB_BACKUP_RETENTION_DAYS14成功的备份保留窗口。
DB_BACKUP_S3_PREFIXbackups/postgres数据库转储的对象前缀。
DB_BACKUP_S3_BUCKET, DB_BACKUP_S3_REGION, DB_BACKUP_S3_ENDPOINT上传存储值可选单独备份目标。
DB_BACKUP_S3_ACCESS_KEY_ID, DB_BACKUP_S3_SECRET_ACCESS_KEY上传存储值可选单独备份凭据。
ACTIVITY_EVENT_RETENTION_DAYS730活动历史保留。
ADMIN_AUDIT_LOG_RETENTION_DAYS1095管理审计记录保留。
NOTIFICATION_READ_RETENTION_DAYS / NOTIFICATION_MAX_RETENTION_DAYS90 / 365读取通知和绝对通知保留。
AUTH_TOKEN_RETENTION_DAYS30过期或消耗的认证文件被清除之前的宽限期。
REALTIME_OUTBOX_RETENTION_DAYS / OUTBOX_STUCK_RETENTION_DAYS30 / 30处理和永久卡住的发件箱保留。

海 存储与备份 备份要求和恢复规划。

监测​

变量默认目 的
METRICS_ENABLEDtrue注册 Prometheus 指标端点。 404 没有有效的令牌。
METRICS_TOKEN未设置不记名令牌,至少 16 个字符,用于抓取。
COMPOSE_PROFILES未设置包括 monitoring 开始Grafana,普罗米修斯,洛基,合金,和出口商;包括 admin 管理门户网站的管理
COMPOSE_PROJECT_NAMEkaneraAlloy 用于选择此部署的日志的编写身份。 检查 docker compose ls 在托管平台上。
GRAFANA_ADMIN_PASSWORD未设置启用监控配置文件时必需。
MONITORING_BIND_IP127.0.0.1使用私有VPN地址,永远不要使用私有VPN地址。 0.0.0.0 生产中。
GRAFANA_BIND_PORT / PROMETHEUS_BIND_PORT3000 / 9090两个监控 UI 的主机端口。
PROMETHEUS_RETENTION / PROMETHEUS_RETENTION_SIZE30d / 5GBPrometheus 数据的时间和磁盘上限。
GRAFANA_ROOT_URL未设置通过代理服务器提供外部 Grafana URL。
POSTGRES_EXPORTER_DSN捆绑数据库覆盖外部 PostgreSQL 服务器。
REALTIME_EMIT_METRICS_ENABLEDfalse启用采样的实时有效载荷指标。
REALTIME_EMIT_METRICS_SAMPLE_RATE / REALTIME_EMIT_METRICS_MIN_BYTES0.01 / 0实时指标采样和最小有效载荷大小。

可选管理门户​

管理门户与租户设置分开,并且有自己的身份验证边界,只有在操作员需要跨组织管理或审核支持会话时才能启用。

变量默认目 的
ADMIN_WEB_ORIGINhttp://localhost:4300管理控制台的公共源和 CORS 边界。
ADMIN_API_PORT3002内部管理 API 侦听端口在捆绑布线之外运行时。
ADMIN_COOKIE_DOMAIN未设置当管理员主机名在外面时,cookie-domain覆盖 COOKIE_DOMAIN.
ADMIN_JWT_SECRET未设置管理 API 所需,必须与 JWT_SECRET.
ADMIN_EMAIL / ADMIN_PASSWORD未设置只有在 admin-user 表为空时才播种第一个 superadmin。 它们不会重置现有帐户。
ADMIN_JWT_ACCESS_TTL / ADMIN_JWT_REFRESH_TTL_DAYS15m / 7管理员访问和刷新生命周期。
ADMIN_LOGIN_RATE_LIMIT_MAX / ADMIN_LOGIN_RATE_LIMIT_WINDOW_MS5 / 300000每个IP管理员登录节流阀。
ADMIN_TRUST_PROXYtrue对于真实客户端 IP,信任管理员反向代理。
SUPPORT_SESSION_TTL_MINUTES60支持会话寿命短暂;最长八小时,无刷新令牌。

保持管理门户的隐私,使用单独的主机名和密钥,并查看其审核日志。 DEPLOY.md 关于 Kanera 存储库的信息

应用并验证更改​

大多数更改都需要重新创建受影响的服务:

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

更改身份验证、传送、存储、API、MCP 或管理设置后,检查相关服务日志。语法上有效的 .env 并不能证明外部凭据或 URL 是有效的。