CI / Test (ubuntu-latest) (push) Canceled after 0s
CI / Test (windows-latest) (push) Canceled after 0s
CI / Storage tests on PostgreSQL (push) Canceled after 0s
CI / Complement (federation off) (push) Canceled after 0s
CI / golangci-lint (push) Canceled after 0s
CI / Smoke test the binary (push) Canceled after 0s
CI / Admin panel (push) Canceled after 0s
CI / Web client (push) Canceled after 0s
CI / Desktop client (ubuntu-24.04) (push) Canceled after 0s
CI / Desktop client (windows-latest) (push) Canceled after 0s
Replace each folder's shared .env.example with one example per compose file, named after it (docker-compose.<name>.yml takes .env.<name>.example), as DriverVault does. Each lists only the settings its compose file uses, names the required ones in its header, and the prod examples start from a public server name. Every variable a compose file substitutes is defined in its example. The compose headers point at their own example. The SeaweedFS files now fix WARP_PB_S3_REGION at us-east-1 instead of reading it from .env, since SeaweedFS ignores the region. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
195 lines
6.4 KiB
Bash
195 lines
6.4 KiB
Bash
# Settings for docker-compose.pocketbase.seaweedfs.split.prod.yml:
|
|
# the homeserver on PocketBase, the admin panel, the web client and
|
|
# SeaweedFS split into its roles, for media, in one container.
|
|
#
|
|
# cp .env.pocketbase.seaweedfs.split.prod.example .env # then edit it
|
|
# docker compose -f docker-compose.pocketbase.seaweedfs.split.prod.yml up -d
|
|
#
|
|
# Required, with no default: WARP_PB_S3_ACCESS_KEY, WARP_PB_S3_SECRET and
|
|
# SEAWEED_ADMIN_PASSWORD.
|
|
#
|
|
# Compose reads .env for the values it puts into the compose file, and hands
|
|
# all of it to the containers, so a change takes effect on the next `up -d`.
|
|
# An empty value means the built-in default, given in the comment above it;
|
|
# every homeserver setting is described in docs/configuration.md.
|
|
#
|
|
# Set by the image or the compose file, not here: the database driver and
|
|
# connection string, the listen addresses and the paths inside /data.
|
|
|
|
# ---------------------------------------------------------------- compose
|
|
|
|
# Host ports for the homeserver, the admin panel and the web client.
|
|
WARP_PORT=8008
|
|
WARP_ADMIN_PORT=8009
|
|
WARP_WEB_PORT=8080
|
|
|
|
# The image is pulled from $WARP_REGISTRY/warp-aio-pocketbase-seaweedfs-split at this tag.
|
|
# Pin a release in production.
|
|
WARP_REGISTRY=ghcr.io/dariuszjaniak
|
|
WARP_VERSION=latest
|
|
|
|
# ------------------------------------------------------------------- aio
|
|
|
|
# false runs the container without the admin panel or the web client.
|
|
WARP_AIO_ADMIN=true
|
|
WARP_AIO_WEB=true
|
|
|
|
# -------------------------------------------------------------- seaweedfs
|
|
|
|
# Media goes to this bucket in SeaweedFS, created on start; the database
|
|
# stays in /data/pb_data. The key pair is the homeserver's S3 identity:
|
|
# written into the filer's IAM store on every start, beside any identity
|
|
# added in the admin UI, so a new secret here lands on the next start.
|
|
# Media stored before S3 was on is not moved into the bucket.
|
|
WARP_PB_S3_BUCKET=warp
|
|
WARP_PB_S3_ACCESS_KEY=
|
|
WARP_PB_S3_SECRET=
|
|
|
|
# The S3 gateway's host port, on loopback unless the bind address says
|
|
# otherwise. The homeserver does not need it; it is for aws-cli and the
|
|
# like.
|
|
SEAWEED_S3_BIND=127.0.0.1
|
|
SEAWEED_S3_PORT=8333
|
|
|
|
# SeaweedFS's admin UI. It can mint credentials for the bucket, so the
|
|
# password is required. Put it behind a reverse proxy before binding it
|
|
# to 0.0.0.0. The read-only login is optional.
|
|
SEAWEED_ADMIN_BIND=127.0.0.1
|
|
SEAWEED_ADMIN_PORT=23646
|
|
SEAWEED_ADMIN_USER=admin
|
|
SEAWEED_ADMIN_PASSWORD=
|
|
SEAWEED_ADMIN_READONLY_USER=
|
|
SEAWEED_ADMIN_READONLY_PASSWORD=
|
|
|
|
# ------------------------------------------------------------ homeserver
|
|
|
|
# Part of every user and room ID: it cannot be changed later.
|
|
WARP_SERVER_NAME=matrix.example.org
|
|
|
|
# The URL clients are told to use, in /.well-known/matrix/client.
|
|
# Default https://<server name>.
|
|
WARP_WELL_KNOWN_CLIENT_BASE_URL=https://matrix.example.org
|
|
# Default empty.
|
|
WARP_WELL_KNOWN_IDENTITY_SERVER_BASE_URL=
|
|
# host:port other homeservers should use. Default empty: no delegation.
|
|
WARP_WELL_KNOWN_SERVER_ADDRESS=
|
|
|
|
# Registration. Default false; the admin API can switch it at runtime.
|
|
WARP_REGISTRATION_ENABLED=false
|
|
# Default true.
|
|
WARP_REGISTRATION_ALLOW_RUNTIME_TOGGLE=
|
|
# Comma-separated sign-up tokens. Default none.
|
|
WARP_REGISTRATION_TOKENS=
|
|
# Default false.
|
|
WARP_REGISTRATION_REQUIRE_TOKEN=
|
|
|
|
# Federation. Default false.
|
|
WARP_FEDERATION_ENABLED=false
|
|
# Default true.
|
|
WARP_FEDERATION_ALLOW_RUNTIME_TOGGLE=
|
|
# Comma-separated server names. Default none.
|
|
WARP_FEDERATION_ALLOWLIST=
|
|
WARP_FEDERATION_DENYLIST=
|
|
WARP_FEDERATION_TRUSTED_KEY_SERVERS=
|
|
# Default 24h.
|
|
WARP_FEDERATION_KEY_VALIDITY_PERIOD=
|
|
# A second, TLS listener for federation, e.g. :8448, with its certificate
|
|
# and key (paths inside the container). Publish the port yourself.
|
|
WARP_LISTEN_FEDERATION_ADDRESS=
|
|
WARP_TLS_CERT_FILE=
|
|
WARP_TLS_KEY_FILE=
|
|
WARP_FEDERATION_TLS_CA_FILE=
|
|
|
|
# HTTP server. Defaults 10s, 60s, 120s, 120s, 1048576, 30s.
|
|
WARP_READ_HEADER_TIMEOUT=
|
|
WARP_READ_TIMEOUT=
|
|
WARP_WRITE_TIMEOUT=
|
|
WARP_IDLE_TIMEOUT=
|
|
WARP_MAX_HEADER_BYTES=
|
|
WARP_SHUTDOWN_TIMEOUT=
|
|
|
|
# Apply pending database migrations at startup. Default true.
|
|
WARP_DB_AUTO_MIGRATE=
|
|
|
|
# Client API. Defaults *, false, 0s (never expire), 0s, true.
|
|
WARP_CORS_ALLOWED_ORIGINS=
|
|
WARP_TRUST_X_FORWARDED_FOR=
|
|
WARP_ACCESS_TOKEN_LIFETIME=
|
|
WARP_REFRESH_TOKEN_LIFETIME=
|
|
WARP_RATE_LIMIT_ENABLED=
|
|
|
|
# Calls: the LiveKit JWT service's URL (see docs/calls.md). Default empty.
|
|
WARP_RTC_LIVEKIT_SERVICE_URL=
|
|
# Delayed events. Defaults 24h, 100.
|
|
WARP_DELAYED_EVENTS_MAX_DELAY=
|
|
WARP_DELAYED_EVENTS_MAX_PER_USER=
|
|
# TURN for legacy 1:1 calls: comma-separated URIs, then a shared secret or
|
|
# a static username and password. Lifetime default 1h.
|
|
WARP_TURN_URIS=
|
|
WARP_TURN_SHARED_SECRET=
|
|
WARP_TURN_USER_LIFETIME=
|
|
WARP_TURN_USERNAME=
|
|
WARP_TURN_PASSWORD=
|
|
|
|
# Sync. Defaults false, 30s, 30s.
|
|
WARP_SYNC_PRESENCE=
|
|
WARP_SYNC_TYPING_TIMEOUT=
|
|
WARP_SYNC_LONG_POLL_TIMEOUT=
|
|
|
|
# Media. Defaults 52428800 (50 MiB), 0 (no limit), 32000000, 24h, 10, false.
|
|
WARP_MEDIA_MAX_UPLOAD_BYTES=
|
|
WARP_MEDIA_MAX_USER_STORAGE_BYTES=
|
|
WARP_MEDIA_MAX_THUMBNAIL_PIXELS=
|
|
WARP_MEDIA_PENDING_UPLOAD_EXPIRY=
|
|
WARP_MEDIA_MAX_PENDING_UPLOADS=
|
|
WARP_MEDIA_LEGACY_UNAUTHENTICATED_DOWNLOADS=
|
|
|
|
# Push. Defaults true, true, 10s, 720h.
|
|
WARP_PUSH_ENABLED=
|
|
WARP_PUSH_INCLUDE_CONTENT=
|
|
WARP_PUSH_GATEWAY_TIMEOUT=
|
|
WARP_PUSH_NOTIFICATION_RETENTION=
|
|
|
|
# Application services: comma-separated registration files (paths inside
|
|
# the container). Timeout default 30s.
|
|
WARP_APPSERVICE_CONFIG_FILES=
|
|
WARP_APPSERVICE_TIMEOUT=
|
|
|
|
# Server notices. Defaults false, server-notices, Server Notices, Server
|
|
# Notices.
|
|
WARP_SERVER_NOTICES_ENABLED=
|
|
WARP_SERVER_NOTICES_LOCALPART=
|
|
WARP_SERVER_NOTICES_DISPLAY_NAME=
|
|
WARP_SERVER_NOTICES_ROOM_NAME=
|
|
|
|
# Logging: debug, info, warn or error; text or json; file and line.
|
|
WARP_LOG_LEVEL=info
|
|
WARP_LOG_FORMAT=json
|
|
WARP_LOG_ADD_SOURCE=
|
|
|
|
# Metrics. Defaults true, /metrics.
|
|
WARP_METRICS_ENABLED=
|
|
WARP_METRICS_PATH=
|
|
|
|
# OpenTelemetry tracing. Defaults false, localhost:4318, 1, warp.
|
|
WARP_TRACING_ENABLED=false
|
|
WARP_TRACING_ENDPOINT=
|
|
WARP_TRACING_SAMPLE_RATIO=
|
|
WARP_TRACING_SERVICE_NAME=
|
|
|
|
|
|
# ----------------------------------------------------------- admin panel
|
|
|
|
# text or json.
|
|
WARP_ADMIN_LOG_FORMAT=json
|
|
|
|
# ------------------------------------------------------------ web client
|
|
|
|
# The homeserver's public URL. Set, the browser talks to it directly and
|
|
# the web client proxies nothing; empty, it proxies the client API.
|
|
WARP_WEB_PUBLIC_HOMESERVER=
|
|
# Space-separated origins of the LiveKit JWT service and SFU, for calls.
|
|
WARP_WEB_CALL_ORIGINS=
|
|
# text or json.
|
|
WARP_WEB_LOG_FORMAT=json
|