Docker, Docker-AIO: one .env example per compose file
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
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>
This commit is contained in:
1 parent
39583a9db0
commit
66e48712c7
50 files changed
+3911
-167
No files matched your search
@@ -0,0 +1,171 @@
|
||||
# Settings for docker-compose.pocketbase.yml:
|
||||
# the homeserver on PocketBase, the admin panel and the web client, in
|
||||
# one container.
|
||||
#
|
||||
# cp .env.pocketbase.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.yml up -d --build
|
||||
#
|
||||
# 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
|
||||
|
||||
# ------------------------------------------------------------------- aio
|
||||
|
||||
# false runs the container without the admin panel or the web client.
|
||||
WARP_AIO_ADMIN=true
|
||||
WARP_AIO_WEB=true
|
||||
|
||||
# ------------------------------------------------------------ homeserver
|
||||
|
||||
# Part of every user and room ID: it cannot be changed later.
|
||||
WARP_SERVER_NAME=localhost
|
||||
|
||||
# The URL clients are told to use, in /.well-known/matrix/client.
|
||||
# Default https://<server name>.
|
||||
WARP_WELL_KNOWN_CLIENT_BASE_URL=http://localhost:8008
|
||||
# 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=
|
||||
|
||||
# Media in an S3 bucket instead of pb_data/storage. Bucket, region,
|
||||
# endpoint and keys are all required when it is on, and the bucket must
|
||||
# exist. For a bucket set up for you, use the pocketbase.s3 or
|
||||
# pocketbase.seaweedfs files. Media stored before S3 was on is not moved.
|
||||
WARP_PB_S3_ENABLED=false
|
||||
WARP_PB_S3_BUCKET=
|
||||
WARP_PB_S3_REGION=
|
||||
WARP_PB_S3_ENDPOINT=
|
||||
WARP_PB_S3_ACCESS_KEY=
|
||||
WARP_PB_S3_SECRET=
|
||||
WARP_PB_S3_FORCE_PATH_STYLE=false
|
||||
|
||||
# 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
|
||||
@@ -0,0 +1,176 @@
|
||||
# Settings for docker-compose.pocketbase.prod.yml:
|
||||
# the homeserver on PocketBase, the admin panel and the web client, in
|
||||
# one container.
|
||||
#
|
||||
# cp .env.pocketbase.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.prod.yml up -d
|
||||
#
|
||||
# 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 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
|
||||
|
||||
# ------------------------------------------------------------ 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=
|
||||
|
||||
# Media in an S3 bucket instead of pb_data/storage. Bucket, region,
|
||||
# endpoint and keys are all required when it is on, and the bucket must
|
||||
# exist. For a bucket set up for you, use the pocketbase.s3 or
|
||||
# pocketbase.seaweedfs files. Media stored before S3 was on is not moved.
|
||||
WARP_PB_S3_ENABLED=false
|
||||
WARP_PB_S3_BUCKET=
|
||||
WARP_PB_S3_REGION=
|
||||
WARP_PB_S3_ENDPOINT=
|
||||
WARP_PB_S3_ACCESS_KEY=
|
||||
WARP_PB_S3_SECRET=
|
||||
WARP_PB_S3_FORCE_PATH_STYLE=false
|
||||
|
||||
# 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
|
||||
@@ -0,0 +1,177 @@
|
||||
# Settings for docker-compose.pocketbase.s3.yml:
|
||||
# the homeserver on PocketBase with media in an S3 bucket elsewhere, the
|
||||
# admin panel and the web client, in one container.
|
||||
#
|
||||
# cp .env.pocketbase.s3.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.s3.yml up -d --build
|
||||
#
|
||||
# Required, with no default: WARP_PB_S3_ENDPOINT, WARP_PB_S3_ACCESS_KEY
|
||||
# and WARP_PB_S3_SECRET.
|
||||
#
|
||||
# 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
|
||||
|
||||
# ------------------------------------------------------------------- aio
|
||||
|
||||
# false runs the container without the admin panel or the web client.
|
||||
WARP_AIO_ADMIN=true
|
||||
WARP_AIO_WEB=true
|
||||
|
||||
# ------------------------------------------------------------- media (S3)
|
||||
|
||||
# Media goes to this bucket; the database stays in /data/pb_data. The bucket
|
||||
# must already exist: nothing here runs a gateway or creates it. For a
|
||||
# gateway on the Docker host, use http://host.docker.internal:8333. Media
|
||||
# stored before S3 was on is not moved into the bucket.
|
||||
WARP_PB_S3_ENDPOINT=
|
||||
WARP_PB_S3_BUCKET=warp
|
||||
WARP_PB_S3_ACCESS_KEY=
|
||||
WARP_PB_S3_SECRET=
|
||||
# SeaweedFS and MinIO ignore the region; the client insists on one.
|
||||
WARP_PB_S3_REGION=us-east-1
|
||||
# true for SeaweedFS and MinIO, false for AWS S3 proper.
|
||||
WARP_PB_S3_FORCE_PATH_STYLE=true
|
||||
|
||||
# ------------------------------------------------------------ homeserver
|
||||
|
||||
# Part of every user and room ID: it cannot be changed later.
|
||||
WARP_SERVER_NAME=localhost
|
||||
|
||||
# The URL clients are told to use, in /.well-known/matrix/client.
|
||||
# Default https://<server name>.
|
||||
WARP_WELL_KNOWN_CLIENT_BASE_URL=http://localhost:8008
|
||||
# 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
|
||||
@@ -0,0 +1,182 @@
|
||||
# Settings for docker-compose.pocketbase.s3.prod.yml:
|
||||
# the homeserver on PocketBase with media in an S3 bucket elsewhere, the
|
||||
# admin panel and the web client, in one container.
|
||||
#
|
||||
# cp .env.pocketbase.s3.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.s3.prod.yml up -d
|
||||
#
|
||||
# Required, with no default: WARP_PB_S3_ENDPOINT, WARP_PB_S3_ACCESS_KEY
|
||||
# and WARP_PB_S3_SECRET.
|
||||
#
|
||||
# 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-s3 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
|
||||
|
||||
# ------------------------------------------------------------- media (S3)
|
||||
|
||||
# Media goes to this bucket; the database stays in /data/pb_data. The bucket
|
||||
# must already exist: nothing here runs a gateway or creates it. For a
|
||||
# gateway on the Docker host, use http://host.docker.internal:8333. Media
|
||||
# stored before S3 was on is not moved into the bucket.
|
||||
WARP_PB_S3_ENDPOINT=
|
||||
WARP_PB_S3_BUCKET=warp
|
||||
WARP_PB_S3_ACCESS_KEY=
|
||||
WARP_PB_S3_SECRET=
|
||||
# SeaweedFS and MinIO ignore the region; the client insists on one.
|
||||
WARP_PB_S3_REGION=us-east-1
|
||||
# true for SeaweedFS and MinIO, false for AWS S3 proper.
|
||||
WARP_PB_S3_FORCE_PATH_STYLE=true
|
||||
|
||||
# ------------------------------------------------------------ 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
|
||||
@@ -0,0 +1,181 @@
|
||||
# Settings for docker-compose.pocketbase.seaweedfs.yml:
|
||||
# the homeserver on PocketBase, the admin panel, the web client and
|
||||
# SeaweedFS for media, in one container.
|
||||
#
|
||||
# cp .env.pocketbase.seaweedfs.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.yml up -d --build
|
||||
#
|
||||
# Required, with no default: WARP_PB_S3_ACCESS_KEY and WARP_PB_S3_SECRET.
|
||||
#
|
||||
# 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
|
||||
|
||||
# ------------------------------------------------------------------- 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:
|
||||
# the gateway's only one, and what the homeserver signs with.
|
||||
# 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
|
||||
|
||||
# Building only: the SeaweedFS release to bake in. Leave it commented out
|
||||
# to keep the Dockerfile's pin; an empty value breaks the build.
|
||||
# SEAWEED_VERSION=4.45
|
||||
|
||||
# ------------------------------------------------------------ homeserver
|
||||
|
||||
# Part of every user and room ID: it cannot be changed later.
|
||||
WARP_SERVER_NAME=localhost
|
||||
|
||||
# The URL clients are told to use, in /.well-known/matrix/client.
|
||||
# Default https://<server name>.
|
||||
WARP_WELL_KNOWN_CLIENT_BASE_URL=http://localhost:8008
|
||||
# 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
|
||||
@@ -0,0 +1,182 @@
|
||||
# Settings for docker-compose.pocketbase.seaweedfs.prod.yml:
|
||||
# the homeserver on PocketBase, the admin panel, the web client and
|
||||
# SeaweedFS for media, in one container.
|
||||
#
|
||||
# cp .env.pocketbase.seaweedfs.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.prod.yml up -d
|
||||
#
|
||||
# Required, with no default: WARP_PB_S3_ACCESS_KEY and WARP_PB_S3_SECRET.
|
||||
#
|
||||
# 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 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:
|
||||
# the gateway's only one, and what the homeserver signs with.
|
||||
# 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
|
||||
|
||||
# ------------------------------------------------------------ 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
|
||||
@@ -1,18 +1,20 @@
|
||||
# Settings for every compose file in this folder.
|
||||
# Settings for docker-compose.pocketbase.seaweedfs.split.yml:
|
||||
# the homeserver on PocketBase, the admin panel, the web client and
|
||||
# SeaweedFS split into its roles, for media, in one container.
|
||||
#
|
||||
# cp .env.example .env
|
||||
# cp .env.pocketbase.seaweedfs.split.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.split.yml up -d --build
|
||||
#
|
||||
# then edit .env. Compose reads it for the ports and the registry, and
|
||||
# hands all of it to the container, so anything below takes effect on the
|
||||
# next `docker compose ... up -d`.
|
||||
# Required, with no default: WARP_PB_S3_ACCESS_KEY, WARP_PB_S3_SECRET and
|
||||
# SEAWEED_ADMIN_PASSWORD.
|
||||
#
|
||||
# An empty value means the built-in default, given in the comment above it.
|
||||
# Every homeserver setting is described in docs/configuration.md.
|
||||
# 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, not here: the database driver and connection string
|
||||
# (each Dockerfile is one database), the listen addresses, the signing key
|
||||
# and media paths inside /data, the address the admin panel and web client
|
||||
# reach the homeserver on, and whether the bundled PostgreSQL runs.
|
||||
# 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
|
||||
|
||||
@@ -21,32 +23,32 @@ WARP_PORT=8008
|
||||
WARP_ADMIN_PORT=8009
|
||||
WARP_WEB_PORT=8080
|
||||
|
||||
# The *.prod.yml files pull $WARP_REGISTRY/warp-aio (SQLite),
|
||||
# warp-aio-pocketbase or warp-aio-postgresql 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
|
||||
# -------------------------------------------------------------- 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=
|
||||
|
||||
# docker-compose.pocketbase.seaweedfs*.yml only; set WARP_PB_S3_ACCESS_KEY
|
||||
# and WARP_PB_S3_SECRET below as well.
|
||||
#
|
||||
# The S3 gateway's host port, on loopback unless the bind address says
|
||||
# otherwise. The homeserver reaches it inside the container; this is for
|
||||
# aws-cli and the like.
|
||||
# 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
|
||||
|
||||
# The split file only: 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.
|
||||
# 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
|
||||
@@ -54,8 +56,8 @@ SEAWEED_ADMIN_PASSWORD=
|
||||
SEAWEED_ADMIN_READONLY_USER=
|
||||
SEAWEED_ADMIN_READONLY_PASSWORD=
|
||||
|
||||
# Building only: the SeaweedFS release to bake in. Leave it commented out to
|
||||
# keep the Dockerfile's pin; an empty value breaks the build.
|
||||
# Building only: the SeaweedFS release to bake in. Leave it commented out
|
||||
# to keep the Dockerfile's pin; an empty value breaks the build.
|
||||
# SEAWEED_VERSION=4.45
|
||||
|
||||
# ------------------------------------------------------------ homeserver
|
||||
@@ -105,34 +107,9 @@ WARP_IDLE_TIMEOUT=
|
||||
WARP_MAX_HEADER_BYTES=
|
||||
WARP_SHUTDOWN_TIMEOUT=
|
||||
|
||||
# Database pool (PostgreSQL). Defaults 10, 5, 1h, true.
|
||||
WARP_DB_MAX_OPEN_CONNS=
|
||||
WARP_DB_MAX_IDLE_CONNS=
|
||||
WARP_DB_CONN_MAX_LIFETIME=
|
||||
# Apply pending database migrations at startup. Default true.
|
||||
WARP_DB_AUTO_MIGRATE=
|
||||
|
||||
# docker-compose.pocketbase*.yml only: keep media in an S3 bucket instead
|
||||
# of pb_data/storage. Bucket, region, endpoint and keys are all required
|
||||
# when it is on.
|
||||
#
|
||||
# The pocketbase.seaweedfs files turn it on themselves, against the
|
||||
# SeaweedFS in the container; there only the access key and secret are
|
||||
# needed (required: they are the gateway's credentials too), and the bucket
|
||||
# defaults to warp.
|
||||
#
|
||||
# The pocketbase.s3 files turn it on against a bucket elsewhere: the
|
||||
# endpoint, access key and secret are required, the bucket (default warp)
|
||||
# must exist, the region defaults to us-east-1 and path style to true
|
||||
# (SeaweedFS, MinIO; set false for AWS S3). For a gateway on the Docker
|
||||
# host, use http://host.docker.internal:8333.
|
||||
WARP_PB_S3_ENABLED=false
|
||||
WARP_PB_S3_BUCKET=
|
||||
WARP_PB_S3_REGION=
|
||||
WARP_PB_S3_ENDPOINT=
|
||||
WARP_PB_S3_ACCESS_KEY=
|
||||
WARP_PB_S3_SECRET=
|
||||
WARP_PB_S3_FORCE_PATH_STYLE=
|
||||
|
||||
# Client API. Defaults *, false, 0s (never expire), 0s, true.
|
||||
WARP_CORS_ALLOWED_ORIGINS=
|
||||
WARP_TRUST_X_FORWARDED_FOR=
|
||||
@@ -199,6 +176,7 @@ WARP_TRACING_ENDPOINT=
|
||||
WARP_TRACING_SAMPLE_RATIO=
|
||||
WARP_TRACING_SERVICE_NAME=
|
||||
|
||||
|
||||
# ----------------------------------------------------------- admin panel
|
||||
|
||||
# text or json.
|
||||
@@ -0,0 +1,194 @@
|
||||
# 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
|
||||
@@ -0,0 +1,162 @@
|
||||
# Settings for docker-compose.postgresql.yml:
|
||||
# the homeserver, the admin panel, the web client and PostgreSQL in one
|
||||
# container.
|
||||
#
|
||||
# cp .env.postgresql.example .env # then edit it
|
||||
# docker compose -f docker-compose.postgresql.yml up -d --build
|
||||
#
|
||||
# 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
|
||||
|
||||
# ------------------------------------------------------------------- aio
|
||||
|
||||
# false runs the container without the admin panel or the web client.
|
||||
WARP_AIO_ADMIN=true
|
||||
WARP_AIO_WEB=true
|
||||
|
||||
# ------------------------------------------------------------ homeserver
|
||||
|
||||
# Part of every user and room ID: it cannot be changed later.
|
||||
WARP_SERVER_NAME=localhost
|
||||
|
||||
# The URL clients are told to use, in /.well-known/matrix/client.
|
||||
# Default https://<server name>.
|
||||
WARP_WELL_KNOWN_CLIENT_BASE_URL=http://localhost:8008
|
||||
# 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=
|
||||
|
||||
# Database pool (PostgreSQL). Defaults 10, 5, 1h, true.
|
||||
WARP_DB_MAX_OPEN_CONNS=
|
||||
WARP_DB_MAX_IDLE_CONNS=
|
||||
WARP_DB_CONN_MAX_LIFETIME=
|
||||
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
|
||||
@@ -0,0 +1,167 @@
|
||||
# Settings for docker-compose.postgresql.prod.yml:
|
||||
# the homeserver, the admin panel, the web client and PostgreSQL in one
|
||||
# container.
|
||||
#
|
||||
# cp .env.postgresql.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.postgresql.prod.yml up -d
|
||||
#
|
||||
# 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-postgresql 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
|
||||
|
||||
# ------------------------------------------------------------ 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=
|
||||
|
||||
# Database pool (PostgreSQL). Defaults 10, 5, 1h, true.
|
||||
WARP_DB_MAX_OPEN_CONNS=
|
||||
WARP_DB_MAX_IDLE_CONNS=
|
||||
WARP_DB_CONN_MAX_LIFETIME=
|
||||
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
|
||||
@@ -0,0 +1,159 @@
|
||||
# Settings for docker-compose.sqlite.yml:
|
||||
# the homeserver on SQLite, the admin panel and the web client, in one
|
||||
# container.
|
||||
#
|
||||
# cp .env.sqlite.example .env # then edit it
|
||||
# docker compose -f docker-compose.sqlite.yml up -d --build
|
||||
#
|
||||
# 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
|
||||
|
||||
# ------------------------------------------------------------------- aio
|
||||
|
||||
# false runs the container without the admin panel or the web client.
|
||||
WARP_AIO_ADMIN=true
|
||||
WARP_AIO_WEB=true
|
||||
|
||||
# ------------------------------------------------------------ homeserver
|
||||
|
||||
# Part of every user and room ID: it cannot be changed later.
|
||||
WARP_SERVER_NAME=localhost
|
||||
|
||||
# The URL clients are told to use, in /.well-known/matrix/client.
|
||||
# Default https://<server name>.
|
||||
WARP_WELL_KNOWN_CLIENT_BASE_URL=http://localhost:8008
|
||||
# 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
|
||||
@@ -0,0 +1,164 @@
|
||||
# Settings for docker-compose.sqlite.prod.yml:
|
||||
# the homeserver on SQLite, the admin panel and the web client, in one
|
||||
# container.
|
||||
#
|
||||
# cp .env.sqlite.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.sqlite.prod.yml up -d
|
||||
#
|
||||
# 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 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
|
||||
|
||||
# ------------------------------------------------------------ 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
|
||||
+12
-9
@@ -30,7 +30,7 @@ SeaweedFS images add `seaweed-data` on `/seaweed/data` (and the split one
|
||||
|
||||
```sh
|
||||
cd Docker-AIO
|
||||
cp .env.example .env # then edit it
|
||||
cp .env.sqlite.example .env # then edit it
|
||||
docker compose -f docker-compose.sqlite.yml up -d --build
|
||||
docker compose -f docker-compose.sqlite.yml exec warp warp create-account --username admin --admin
|
||||
```
|
||||
@@ -54,8 +54,8 @@ exists: AWS, MinIO, or a SeaweedFS on another host. Nothing in the
|
||||
container runs a gateway or creates the bucket.
|
||||
|
||||
```sh
|
||||
cp .env.example .env # set WARP_PB_S3_ENDPOINT, WARP_PB_S3_ACCESS_KEY,
|
||||
# WARP_PB_S3_SECRET (and WARP_PB_S3_BUCKET)
|
||||
cp .env.pocketbase.s3.example .env # set WARP_PB_S3_ENDPOINT, WARP_PB_S3_ACCESS_KEY,
|
||||
# WARP_PB_S3_SECRET (and WARP_PB_S3_BUCKET)
|
||||
docker compose -f docker-compose.pocketbase.s3.yml up -d --build
|
||||
```
|
||||
|
||||
@@ -74,8 +74,7 @@ SeaweedFS inside the same container. The compose files point the
|
||||
homeserver at it; `.env` only has to give it credentials:
|
||||
|
||||
```sh
|
||||
cp .env.example .env # set WARP_PB_S3_ACCESS_KEY, WARP_PB_S3_SECRET
|
||||
# (and SEAWEED_ADMIN_PASSWORD for split)
|
||||
cp .env.pocketbase.seaweedfs.example .env # set WARP_PB_S3_ACCESS_KEY, WARP_PB_S3_SECRET
|
||||
docker compose -f docker-compose.pocketbase.seaweedfs.yml up -d --build
|
||||
```
|
||||
|
||||
@@ -107,10 +106,14 @@ across first. The SeaweedFS release is pinned in the Dockerfiles
|
||||
|
||||
## Settings
|
||||
|
||||
Every setting is in `.env`, copied from [`.env.example`](.env.example),
|
||||
which lists them all with their defaults; an empty value means the
|
||||
default. `.env` is not committed. On top of the settings of
|
||||
[Docker/](../Docker/README.md), it has:
|
||||
Every compose file has its own settings file, named after it:
|
||||
`docker-compose.<name>.yml` takes `.env.<name>.example`, so
|
||||
`docker-compose.pocketbase.seaweedfs.split.yml` takes
|
||||
`.env.pocketbase.seaweedfs.split.example`. Each lists only the settings
|
||||
its compose file uses, with their defaults, and names the ones that are
|
||||
required; an empty value means the default. Copy the one you need to
|
||||
`.env`. `.env` is not committed. On top of the settings of
|
||||
[Docker/](../Docker/README.md), they have:
|
||||
|
||||
| Variable | Default | |
|
||||
| --- | --- | --- |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# web client in one container, pulled from a registry.
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it
|
||||
# cp .env.pocketbase.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.prod.yml up -d
|
||||
#
|
||||
# PocketBase is embedded in the homeserver (the pocketbase database driver):
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
# from a registry (the image is built from Dockerfile.PocketBase.s3).
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ENDPOINT,
|
||||
# # WARP_PB_S3_ACCESS_KEY and WARP_PB_S3_SECRET
|
||||
# cp .env.pocketbase.s3.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.s3.prod.yml up -d
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
# this checkout (Dockerfile.PocketBase.s3).
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ENDPOINT,
|
||||
# # WARP_PB_S3_ACCESS_KEY and WARP_PB_S3_SECRET
|
||||
# cp .env.pocketbase.s3.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.s3.yml up -d --build
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
# Dockerfile.PocketBase.SeaweedFS).
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ACCESS_KEY
|
||||
# # and WARP_PB_S3_SECRET
|
||||
# cp .env.pocketbase.seaweedfs.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.prod.yml up -d
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
@@ -45,7 +44,7 @@ services:
|
||||
WARP_PB_S3_ENABLED: "true"
|
||||
WARP_PB_S3_ENDPOINT: http://127.0.0.1:8333
|
||||
WARP_PB_S3_BUCKET: ${WARP_PB_S3_BUCKET:-warp}
|
||||
WARP_PB_S3_REGION: ${WARP_PB_S3_REGION:-us-east-1}
|
||||
WARP_PB_S3_REGION: us-east-1 # SeaweedFS ignores it; the client wants one
|
||||
WARP_PB_S3_FORCE_PATH_STYLE: "true"
|
||||
# The gateway's only identity, and what the homeserver signs with.
|
||||
WARP_PB_S3_ACCESS_KEY: ${WARP_PB_S3_ACCESS_KEY:?set WARP_PB_S3_ACCESS_KEY in .env}
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
# a registry (the image is built from Dockerfile.PocketBase.SeaweedFS.split).
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ACCESS_KEY,
|
||||
# # WARP_PB_S3_SECRET and SEAWEED_ADMIN_PASSWORD
|
||||
# cp .env.pocketbase.seaweedfs.split.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.split.prod.yml up -d
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
@@ -47,7 +46,7 @@ services:
|
||||
WARP_PB_S3_ENABLED: "true"
|
||||
WARP_PB_S3_ENDPOINT: http://127.0.0.1:8333
|
||||
WARP_PB_S3_BUCKET: ${WARP_PB_S3_BUCKET:-warp}
|
||||
WARP_PB_S3_REGION: ${WARP_PB_S3_REGION:-us-east-1}
|
||||
WARP_PB_S3_REGION: us-east-1 # SeaweedFS ignores it; the client wants one
|
||||
WARP_PB_S3_FORCE_PATH_STYLE: "true"
|
||||
# The homeserver's identity in SeaweedFS, and what it signs with.
|
||||
WARP_PB_S3_ACCESS_KEY: ${WARP_PB_S3_ACCESS_KEY:?set WARP_PB_S3_ACCESS_KEY in .env}
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
# this checkout (Dockerfile.PocketBase.SeaweedFS.split).
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ACCESS_KEY,
|
||||
# # WARP_PB_S3_SECRET and SEAWEED_ADMIN_PASSWORD
|
||||
# cp .env.pocketbase.seaweedfs.split.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.split.yml up -d --build
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
@@ -46,7 +45,7 @@ services:
|
||||
WARP_PB_S3_ENABLED: "true"
|
||||
WARP_PB_S3_ENDPOINT: http://127.0.0.1:8333
|
||||
WARP_PB_S3_BUCKET: ${WARP_PB_S3_BUCKET:-warp}
|
||||
WARP_PB_S3_REGION: ${WARP_PB_S3_REGION:-us-east-1}
|
||||
WARP_PB_S3_REGION: us-east-1 # SeaweedFS ignores it; the client wants one
|
||||
WARP_PB_S3_FORCE_PATH_STYLE: "true"
|
||||
# The homeserver's identity in SeaweedFS, and what it signs with.
|
||||
WARP_PB_S3_ACCESS_KEY: ${WARP_PB_S3_ACCESS_KEY:?set WARP_PB_S3_ACCESS_KEY in .env}
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
# container built from this checkout (Dockerfile.PocketBase.SeaweedFS).
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ACCESS_KEY
|
||||
# # and WARP_PB_S3_SECRET
|
||||
# cp .env.pocketbase.seaweedfs.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.yml up -d --build
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
@@ -43,7 +42,7 @@ services:
|
||||
WARP_PB_S3_ENABLED: "true"
|
||||
WARP_PB_S3_ENDPOINT: http://127.0.0.1:8333
|
||||
WARP_PB_S3_BUCKET: ${WARP_PB_S3_BUCKET:-warp}
|
||||
WARP_PB_S3_REGION: ${WARP_PB_S3_REGION:-us-east-1}
|
||||
WARP_PB_S3_REGION: us-east-1 # SeaweedFS ignores it; the client wants one
|
||||
WARP_PB_S3_FORCE_PATH_STYLE: "true"
|
||||
# The gateway's only identity, and what the homeserver signs with.
|
||||
WARP_PB_S3_ACCESS_KEY: ${WARP_PB_S3_ACCESS_KEY:?set WARP_PB_S3_ACCESS_KEY in .env}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# web client in one container, built from this checkout.
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it
|
||||
# cp .env.pocketbase.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.yml up -d --build
|
||||
#
|
||||
# PocketBase is embedded in the homeserver (the pocketbase database driver):
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# client and PostgreSQL in one container, pulled from a registry.
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it
|
||||
# cp .env.postgresql.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.postgresql.prod.yml up -d
|
||||
#
|
||||
# PostgreSQL runs inside the container, listening only on a Unix socket
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# client and PostgreSQL in one container, built from this checkout.
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it
|
||||
# cp .env.postgresql.example .env # then edit it
|
||||
# docker compose -f docker-compose.postgresql.yml up -d --build
|
||||
#
|
||||
# PostgreSQL runs inside the container, listening only on a Unix socket
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# client in one container, pulled from a registry.
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it
|
||||
# cp .env.sqlite.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.sqlite.prod.yml up -d
|
||||
#
|
||||
# Homeserver http://localhost:8008, admin panel http://localhost:8009, web
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# client in one container, built from this checkout.
|
||||
#
|
||||
# cd Docker-AIO
|
||||
# cp .env.example .env # then edit it
|
||||
# cp .env.sqlite.example .env # then edit it
|
||||
# docker compose -f docker-compose.sqlite.yml up -d --build
|
||||
#
|
||||
# Homeserver http://localhost:8008, admin panel http://localhost:8009, web
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
# Settings for docker-compose.pocketbase.yml:
|
||||
# the homeserver on PocketBase, the admin panel and the web client, each
|
||||
# in its own container.
|
||||
#
|
||||
# cp .env.pocketbase.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.yml up -d --build
|
||||
#
|
||||
# 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 compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- compose
|
||||
|
||||
# Host ports for the homeserver, the admin panel and the web client.
|
||||
WARP_PORT=8008
|
||||
WARP_ADMIN_PORT=8009
|
||||
WARP_WEB_PORT=8080
|
||||
|
||||
# ------------------------------------------------------------ homeserver
|
||||
|
||||
# Part of every user and room ID: it cannot be changed later.
|
||||
WARP_SERVER_NAME=localhost
|
||||
|
||||
# The URL clients are told to use, in /.well-known/matrix/client.
|
||||
# Default https://<server name>.
|
||||
WARP_WELL_KNOWN_CLIENT_BASE_URL=http://localhost:8008
|
||||
# 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=
|
||||
|
||||
# Media in an S3 bucket instead of pb_data/storage. Bucket, region,
|
||||
# endpoint and keys are all required when it is on, and the bucket must
|
||||
# exist. For a bucket set up for you, use the pocketbase.s3 or
|
||||
# pocketbase.seaweedfs files. Media stored before S3 was on is not moved.
|
||||
WARP_PB_S3_ENABLED=false
|
||||
WARP_PB_S3_BUCKET=
|
||||
WARP_PB_S3_REGION=
|
||||
WARP_PB_S3_ENDPOINT=
|
||||
WARP_PB_S3_ACCESS_KEY=
|
||||
WARP_PB_S3_SECRET=
|
||||
WARP_PB_S3_FORCE_PATH_STYLE=false
|
||||
|
||||
# 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
|
||||
@@ -0,0 +1,171 @@
|
||||
# Settings for docker-compose.pocketbase.prod.yml:
|
||||
# the homeserver on PocketBase, the admin panel and the web client, each
|
||||
# in its own container.
|
||||
#
|
||||
# cp .env.pocketbase.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.prod.yml up -d
|
||||
#
|
||||
# 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 compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- 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 images are pulled from $WARP_REGISTRY/warp, warp-admin and warp-web
|
||||
# at this tag. Pin a release in production.
|
||||
WARP_REGISTRY=ghcr.io/dariuszjaniak
|
||||
WARP_VERSION=latest
|
||||
|
||||
# ------------------------------------------------------------ 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=
|
||||
|
||||
# Media in an S3 bucket instead of pb_data/storage. Bucket, region,
|
||||
# endpoint and keys are all required when it is on, and the bucket must
|
||||
# exist. For a bucket set up for you, use the pocketbase.s3 or
|
||||
# pocketbase.seaweedfs files. Media stored before S3 was on is not moved.
|
||||
WARP_PB_S3_ENABLED=false
|
||||
WARP_PB_S3_BUCKET=
|
||||
WARP_PB_S3_REGION=
|
||||
WARP_PB_S3_ENDPOINT=
|
||||
WARP_PB_S3_ACCESS_KEY=
|
||||
WARP_PB_S3_SECRET=
|
||||
WARP_PB_S3_FORCE_PATH_STYLE=false
|
||||
|
||||
# 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
|
||||
@@ -0,0 +1,172 @@
|
||||
# Settings for docker-compose.pocketbase.s3.yml:
|
||||
# the homeserver on PocketBase with media in an S3 bucket elsewhere, the
|
||||
# admin panel and the web client, each in its own container.
|
||||
#
|
||||
# cp .env.pocketbase.s3.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.s3.yml up -d --build
|
||||
#
|
||||
# Required, with no default: WARP_PB_S3_ENDPOINT, WARP_PB_S3_ACCESS_KEY
|
||||
# and WARP_PB_S3_SECRET.
|
||||
#
|
||||
# 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 compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- compose
|
||||
|
||||
# Host ports for the homeserver, the admin panel and the web client.
|
||||
WARP_PORT=8008
|
||||
WARP_ADMIN_PORT=8009
|
||||
WARP_WEB_PORT=8080
|
||||
|
||||
# ------------------------------------------------------------- media (S3)
|
||||
|
||||
# Media goes to this bucket; the database stays in /data/pb_data. The bucket
|
||||
# must already exist: nothing here runs a gateway or creates it. For a
|
||||
# gateway on the Docker host, use http://host.docker.internal:8333. Media
|
||||
# stored before S3 was on is not moved into the bucket.
|
||||
WARP_PB_S3_ENDPOINT=
|
||||
WARP_PB_S3_BUCKET=warp
|
||||
WARP_PB_S3_ACCESS_KEY=
|
||||
WARP_PB_S3_SECRET=
|
||||
# SeaweedFS and MinIO ignore the region; the client insists on one.
|
||||
WARP_PB_S3_REGION=us-east-1
|
||||
# true for SeaweedFS and MinIO, false for AWS S3 proper.
|
||||
WARP_PB_S3_FORCE_PATH_STYLE=true
|
||||
|
||||
# ------------------------------------------------------------ homeserver
|
||||
|
||||
# Part of every user and room ID: it cannot be changed later.
|
||||
WARP_SERVER_NAME=localhost
|
||||
|
||||
# The URL clients are told to use, in /.well-known/matrix/client.
|
||||
# Default https://<server name>.
|
||||
WARP_WELL_KNOWN_CLIENT_BASE_URL=http://localhost:8008
|
||||
# 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
|
||||
@@ -0,0 +1,177 @@
|
||||
# Settings for docker-compose.pocketbase.s3.prod.yml:
|
||||
# the homeserver on PocketBase with media in an S3 bucket elsewhere, the
|
||||
# admin panel and the web client, each in its own container.
|
||||
#
|
||||
# cp .env.pocketbase.s3.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.s3.prod.yml up -d
|
||||
#
|
||||
# Required, with no default: WARP_PB_S3_ENDPOINT, WARP_PB_S3_ACCESS_KEY
|
||||
# and WARP_PB_S3_SECRET.
|
||||
#
|
||||
# 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 compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- 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 images are pulled from $WARP_REGISTRY/warp, warp-admin and warp-web
|
||||
# at this tag. Pin a release in production.
|
||||
WARP_REGISTRY=ghcr.io/dariuszjaniak
|
||||
WARP_VERSION=latest
|
||||
|
||||
# ------------------------------------------------------------- media (S3)
|
||||
|
||||
# Media goes to this bucket; the database stays in /data/pb_data. The bucket
|
||||
# must already exist: nothing here runs a gateway or creates it. For a
|
||||
# gateway on the Docker host, use http://host.docker.internal:8333. Media
|
||||
# stored before S3 was on is not moved into the bucket.
|
||||
WARP_PB_S3_ENDPOINT=
|
||||
WARP_PB_S3_BUCKET=warp
|
||||
WARP_PB_S3_ACCESS_KEY=
|
||||
WARP_PB_S3_SECRET=
|
||||
# SeaweedFS and MinIO ignore the region; the client insists on one.
|
||||
WARP_PB_S3_REGION=us-east-1
|
||||
# true for SeaweedFS and MinIO, false for AWS S3 proper.
|
||||
WARP_PB_S3_FORCE_PATH_STYLE=true
|
||||
|
||||
# ------------------------------------------------------------ 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
|
||||
@@ -0,0 +1,176 @@
|
||||
# Settings for docker-compose.pocketbase.seaweedfs.yml:
|
||||
# the homeserver on PocketBase, the admin panel and the web client, with
|
||||
# media in SeaweedFS in a container of its own.
|
||||
#
|
||||
# cp .env.pocketbase.seaweedfs.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.yml up -d --build
|
||||
#
|
||||
# Required, with no default: WARP_PB_S3_ACCESS_KEY and WARP_PB_S3_SECRET.
|
||||
#
|
||||
# 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 compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- compose
|
||||
|
||||
# Host ports for the homeserver, the admin panel and the web client.
|
||||
WARP_PORT=8008
|
||||
WARP_ADMIN_PORT=8009
|
||||
WARP_WEB_PORT=8080
|
||||
|
||||
# -------------------------------------------------------------- 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:
|
||||
# the gateway's only one, and what the homeserver signs with.
|
||||
# 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 SeaweedFS image every SeaweedFS container runs. Pin it: the data
|
||||
# volume outlives the image.
|
||||
SEAWEED_IMAGE=chrislusf/seaweedfs:4.45
|
||||
|
||||
# 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
|
||||
|
||||
# ------------------------------------------------------------ homeserver
|
||||
|
||||
# Part of every user and room ID: it cannot be changed later.
|
||||
WARP_SERVER_NAME=localhost
|
||||
|
||||
# The URL clients are told to use, in /.well-known/matrix/client.
|
||||
# Default https://<server name>.
|
||||
WARP_WELL_KNOWN_CLIENT_BASE_URL=http://localhost:8008
|
||||
# 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
|
||||
@@ -0,0 +1,181 @@
|
||||
# Settings for docker-compose.pocketbase.seaweedfs.prod.yml:
|
||||
# the homeserver on PocketBase, the admin panel and the web client, with
|
||||
# media in SeaweedFS in a container of its own.
|
||||
#
|
||||
# cp .env.pocketbase.seaweedfs.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.prod.yml up -d
|
||||
#
|
||||
# Required, with no default: WARP_PB_S3_ACCESS_KEY and WARP_PB_S3_SECRET.
|
||||
#
|
||||
# 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 compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- 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 images are pulled from $WARP_REGISTRY/warp, warp-admin and warp-web
|
||||
# at this tag. Pin a release in production.
|
||||
WARP_REGISTRY=ghcr.io/dariuszjaniak
|
||||
WARP_VERSION=latest
|
||||
|
||||
# -------------------------------------------------------------- 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:
|
||||
# the gateway's only one, and what the homeserver signs with.
|
||||
# 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 SeaweedFS image every SeaweedFS container runs. Pin it: the data
|
||||
# volume outlives the image.
|
||||
SEAWEED_IMAGE=chrislusf/seaweedfs:4.45
|
||||
|
||||
# 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
|
||||
|
||||
# ------------------------------------------------------------ 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
|
||||
@@ -1,18 +1,21 @@
|
||||
# Settings for every compose file in this folder.
|
||||
# Settings for docker-compose.pocketbase.seaweedfs.split.yml:
|
||||
# the homeserver on PocketBase, the admin panel and the web client, with
|
||||
# media in SeaweedFS split into a container per role.
|
||||
#
|
||||
# cp .env.example .env
|
||||
# cp .env.pocketbase.seaweedfs.split.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.split.yml up -d --build
|
||||
#
|
||||
# then edit .env. Compose reads it for the ports, the registry and the
|
||||
# PostgreSQL password, and hands all of it to the containers, so anything
|
||||
# below takes effect on the next `docker compose ... up -d`.
|
||||
# Required, with no default: WARP_PB_S3_ACCESS_KEY, WARP_PB_S3_SECRET and
|
||||
# SEAWEED_ADMIN_PASSWORD.
|
||||
#
|
||||
# An empty value means the built-in default, given in the comment above it.
|
||||
# Every homeserver setting is described in docs/configuration.md.
|
||||
# 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 compose files, not here: the database driver and connection
|
||||
# string (each file is one database), the listen addresses, the signing key
|
||||
# and media paths inside /data, and the address the admin panel and web
|
||||
# client reach the homeserver on.
|
||||
# Set by the compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- compose
|
||||
|
||||
@@ -21,34 +24,30 @@ WARP_PORT=8008
|
||||
WARP_ADMIN_PORT=8009
|
||||
WARP_WEB_PORT=8080
|
||||
|
||||
# The *.prod.yml files pull $WARP_REGISTRY/warp, warp-admin and warp-web at
|
||||
# this tag. Pin a release in production.
|
||||
WARP_REGISTRY=ghcr.io/dariuszjaniak
|
||||
WARP_VERSION=latest
|
||||
# -------------------------------------------------------------- seaweedfs
|
||||
|
||||
# docker-compose.postgresql*.yml only. Used when PostgreSQL is first set up;
|
||||
# changing it later does not change the database's password. The prod file
|
||||
# refuses to start without it.
|
||||
WARP_POSTGRES_PASSWORD=change-me
|
||||
# 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=
|
||||
|
||||
# ------------------------------------------------------------- seaweedfs
|
||||
|
||||
# docker-compose.pocketbase.seaweedfs*.yml only; set WARP_PB_S3_ACCESS_KEY
|
||||
# and WARP_PB_S3_SECRET below as well.
|
||||
#
|
||||
# The SeaweedFS image every SeaweedFS container runs. Pin it: the data
|
||||
# volume outlives the image.
|
||||
SEAWEED_IMAGE=chrislusf/seaweedfs:4.45
|
||||
|
||||
# The S3 gateway's host port, on loopback unless the bind address says
|
||||
# otherwise. The homeserver reaches it over the compose network; this is
|
||||
# for aws-cli and the like.
|
||||
# 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
|
||||
|
||||
# The split file only: 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.
|
||||
# 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
|
||||
@@ -103,33 +102,9 @@ WARP_IDLE_TIMEOUT=
|
||||
WARP_MAX_HEADER_BYTES=
|
||||
WARP_SHUTDOWN_TIMEOUT=
|
||||
|
||||
# Database pool (PostgreSQL). Defaults 10, 5, 1h, true.
|
||||
WARP_DB_MAX_OPEN_CONNS=
|
||||
WARP_DB_MAX_IDLE_CONNS=
|
||||
WARP_DB_CONN_MAX_LIFETIME=
|
||||
# Apply pending database migrations at startup. Default true.
|
||||
WARP_DB_AUTO_MIGRATE=
|
||||
|
||||
# docker-compose.pocketbase*.yml only: keep media in an S3 bucket instead
|
||||
# of pb_data/storage. Bucket, region, endpoint and keys are all required
|
||||
# when it is on.
|
||||
#
|
||||
# The pocketbase.seaweedfs files turn it on themselves, against their own
|
||||
# SeaweedFS; there only the access key and secret are needed (required:
|
||||
# they are the gateway's credentials too), and the bucket defaults to warp.
|
||||
#
|
||||
# The pocketbase.s3 files turn it on against a bucket elsewhere: the
|
||||
# endpoint, access key and secret are required, the bucket (default warp)
|
||||
# must exist, the region defaults to us-east-1 and path style to true
|
||||
# (SeaweedFS, MinIO; set false for AWS S3). For a gateway on the Docker
|
||||
# host, use http://host.docker.internal:8333.
|
||||
WARP_PB_S3_ENABLED=false
|
||||
WARP_PB_S3_BUCKET=
|
||||
WARP_PB_S3_REGION=
|
||||
WARP_PB_S3_ENDPOINT=
|
||||
WARP_PB_S3_ACCESS_KEY=
|
||||
WARP_PB_S3_SECRET=
|
||||
WARP_PB_S3_FORCE_PATH_STYLE=
|
||||
|
||||
# Client API. Defaults *, false, 0s (never expire), 0s, true.
|
||||
WARP_CORS_ALLOWED_ORIGINS=
|
||||
WARP_TRUST_X_FORWARDED_FOR=
|
||||
@@ -196,6 +171,7 @@ WARP_TRACING_ENDPOINT=
|
||||
WARP_TRACING_SAMPLE_RATIO=
|
||||
WARP_TRACING_SERVICE_NAME=
|
||||
|
||||
|
||||
# ----------------------------------------------------------- admin panel
|
||||
|
||||
# text or json.
|
||||
@@ -0,0 +1,193 @@
|
||||
# Settings for docker-compose.pocketbase.seaweedfs.split.prod.yml:
|
||||
# the homeserver on PocketBase, the admin panel and the web client, with
|
||||
# media in SeaweedFS split into a container per role.
|
||||
#
|
||||
# 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 compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- 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 images are pulled from $WARP_REGISTRY/warp, warp-admin and warp-web
|
||||
# at this tag. Pin a release in production.
|
||||
WARP_REGISTRY=ghcr.io/dariuszjaniak
|
||||
WARP_VERSION=latest
|
||||
|
||||
# -------------------------------------------------------------- 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 SeaweedFS image every SeaweedFS container runs. Pin it: the data
|
||||
# volume outlives the image.
|
||||
SEAWEED_IMAGE=chrislusf/seaweedfs:4.45
|
||||
|
||||
# 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
|
||||
@@ -0,0 +1,161 @@
|
||||
# Settings for docker-compose.postgresql.yml:
|
||||
# the homeserver on PostgreSQL, the admin panel, the web client and
|
||||
# PostgreSQL, each in its own container.
|
||||
#
|
||||
# cp .env.postgresql.example .env # then edit it
|
||||
# docker compose -f docker-compose.postgresql.yml up -d --build
|
||||
#
|
||||
# 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 compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- compose
|
||||
|
||||
# Host ports for the homeserver, the admin panel and the web client.
|
||||
WARP_PORT=8008
|
||||
WARP_ADMIN_PORT=8009
|
||||
WARP_WEB_PORT=8080
|
||||
|
||||
# PostgreSQL's password, used when its database is first set up; changing
|
||||
# it later does not change the database's password.
|
||||
WARP_POSTGRES_PASSWORD=change-me
|
||||
|
||||
# ------------------------------------------------------------ homeserver
|
||||
|
||||
# Part of every user and room ID: it cannot be changed later.
|
||||
WARP_SERVER_NAME=localhost
|
||||
|
||||
# The URL clients are told to use, in /.well-known/matrix/client.
|
||||
# Default https://<server name>.
|
||||
WARP_WELL_KNOWN_CLIENT_BASE_URL=http://localhost:8008
|
||||
# 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=
|
||||
|
||||
# Database pool (PostgreSQL). Defaults 10, 5, 1h, true.
|
||||
WARP_DB_MAX_OPEN_CONNS=
|
||||
WARP_DB_MAX_IDLE_CONNS=
|
||||
WARP_DB_CONN_MAX_LIFETIME=
|
||||
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
|
||||
@@ -0,0 +1,169 @@
|
||||
# Settings for docker-compose.postgresql.prod.yml:
|
||||
# the homeserver on PostgreSQL, the admin panel, the web client and
|
||||
# PostgreSQL, each in its own container.
|
||||
#
|
||||
# cp .env.postgresql.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.postgresql.prod.yml up -d
|
||||
#
|
||||
# Required, with no default: WARP_POSTGRES_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 compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- 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 images are pulled from $WARP_REGISTRY/warp, warp-admin and warp-web
|
||||
# at this tag. Pin a release in production.
|
||||
WARP_REGISTRY=ghcr.io/dariuszjaniak
|
||||
WARP_VERSION=latest
|
||||
|
||||
# PostgreSQL's password, used when its database is first set up; changing
|
||||
# it later does not change the database's password.
|
||||
# Required: this file refuses to start without it.
|
||||
WARP_POSTGRES_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=
|
||||
|
||||
# Database pool (PostgreSQL). Defaults 10, 5, 1h, true.
|
||||
WARP_DB_MAX_OPEN_CONNS=
|
||||
WARP_DB_MAX_IDLE_CONNS=
|
||||
WARP_DB_CONN_MAX_LIFETIME=
|
||||
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
|
||||
@@ -0,0 +1,154 @@
|
||||
# Settings for docker-compose.sqlite.yml:
|
||||
# the homeserver on SQLite, the admin panel and the web client, each in
|
||||
# its own container.
|
||||
#
|
||||
# cp .env.sqlite.example .env # then edit it
|
||||
# docker compose -f docker-compose.sqlite.yml up -d --build
|
||||
#
|
||||
# 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 compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- compose
|
||||
|
||||
# Host ports for the homeserver, the admin panel and the web client.
|
||||
WARP_PORT=8008
|
||||
WARP_ADMIN_PORT=8009
|
||||
WARP_WEB_PORT=8080
|
||||
|
||||
# ------------------------------------------------------------ homeserver
|
||||
|
||||
# Part of every user and room ID: it cannot be changed later.
|
||||
WARP_SERVER_NAME=localhost
|
||||
|
||||
# The URL clients are told to use, in /.well-known/matrix/client.
|
||||
# Default https://<server name>.
|
||||
WARP_WELL_KNOWN_CLIENT_BASE_URL=http://localhost:8008
|
||||
# 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
|
||||
@@ -0,0 +1,159 @@
|
||||
# Settings for docker-compose.sqlite.prod.yml:
|
||||
# the homeserver on SQLite, the admin panel and the web client, each in
|
||||
# its own container.
|
||||
#
|
||||
# cp .env.sqlite.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.sqlite.prod.yml up -d
|
||||
#
|
||||
# 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 compose file, not here: the database driver and connection
|
||||
# string, and the address the admin panel and web client reach the
|
||||
# homeserver on.
|
||||
|
||||
# ---------------------------------------------------------------- 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 images are pulled from $WARP_REGISTRY/warp, warp-admin and warp-web
|
||||
# at this tag. Pin a release in production.
|
||||
WARP_REGISTRY=ghcr.io/dariuszjaniak
|
||||
WARP_VERSION=latest
|
||||
|
||||
# ------------------------------------------------------------ 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
|
||||
+11
-6
@@ -16,7 +16,7 @@ The homeserver (`warp`), the admin panel (`warp-admin`) and the web client
|
||||
|
||||
```sh
|
||||
cd Docker
|
||||
cp .env.example .env # then edit it
|
||||
cp .env.sqlite.example .env # then edit it
|
||||
docker compose -f docker-compose.sqlite.yml up -d --build
|
||||
docker compose -f docker-compose.sqlite.yml exec warp warp create-account --username admin --admin
|
||||
```
|
||||
@@ -81,11 +81,16 @@ done
|
||||
|
||||
## Settings
|
||||
|
||||
Every setting is in `.env`, copied from [`.env.example`](.env.example),
|
||||
which lists them all with their defaults; an empty value means the
|
||||
default. Compose reads it for the ports, the registry and the PostgreSQL
|
||||
password, and passes all of it to the homeserver, the admin panel and the
|
||||
web client. `.env` is not committed.
|
||||
Every compose file has its own settings file, named after it:
|
||||
`docker-compose.<name>.yml` takes `.env.<name>.example`, so
|
||||
`docker-compose.pocketbase.seaweedfs.prod.yml` takes
|
||||
`.env.pocketbase.seaweedfs.prod.example`. Each lists only the settings
|
||||
its compose file uses, with their defaults, and names the ones that are
|
||||
required; an empty value means the default. Copy the one you need to
|
||||
`.env`, which compose reads for the ports, the registry and the passwords,
|
||||
and passes to the homeserver, the admin panel and the web client. `.env`
|
||||
is not committed. The prod examples start from a public server name
|
||||
rather than `localhost`.
|
||||
|
||||
The compose files set only what makes each one what it is: the database
|
||||
driver and connection string, and the address the admin panel and web
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# each in its own container, pulled from a registry.
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it
|
||||
# cp .env.pocketbase.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.prod.yml up -d
|
||||
#
|
||||
# PocketBase is embedded in the homeserver (the pocketbase database driver),
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
# from a registry.
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ENDPOINT,
|
||||
# # WARP_PB_S3_ACCESS_KEY and WARP_PB_S3_SECRET
|
||||
# cp .env.pocketbase.s3.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.s3.prod.yml up -d
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
# this checkout.
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ENDPOINT,
|
||||
# # WARP_PB_S3_ACCESS_KEY and WARP_PB_S3_SECRET
|
||||
# cp .env.pocketbase.s3.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.s3.yml up -d --build
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
# process).
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ACCESS_KEY
|
||||
# # and WARP_PB_S3_SECRET
|
||||
# cp .env.pocketbase.seaweedfs.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.prod.yml up -d
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
@@ -96,7 +95,7 @@ services:
|
||||
WARP_PB_S3_ENABLED: "true"
|
||||
WARP_PB_S3_ENDPOINT: http://seaweedfs:8333
|
||||
WARP_PB_S3_BUCKET: ${WARP_PB_S3_BUCKET:-warp}
|
||||
WARP_PB_S3_REGION: ${WARP_PB_S3_REGION:-us-east-1}
|
||||
WARP_PB_S3_REGION: us-east-1 # SeaweedFS ignores it; the client wants one
|
||||
WARP_PB_S3_FORCE_PATH_STYLE: "true"
|
||||
WARP_PB_S3_ACCESS_KEY: ${WARP_PB_S3_ACCESS_KEY:?set WARP_PB_S3_ACCESS_KEY in .env}
|
||||
WARP_PB_S3_SECRET: ${WARP_PB_S3_SECRET:?set WARP_PB_S3_SECRET in .env}
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
# separate containers.
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ACCESS_KEY,
|
||||
# # WARP_PB_S3_SECRET and SEAWEED_ADMIN_PASSWORD
|
||||
# cp .env.pocketbase.seaweedfs.split.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.split.prod.yml up -d
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
@@ -199,7 +198,7 @@ services:
|
||||
WARP_PB_S3_ENABLED: "true"
|
||||
WARP_PB_S3_ENDPOINT: http://seaweedfs-s3:8333
|
||||
WARP_PB_S3_BUCKET: ${WARP_PB_S3_BUCKET:-warp}
|
||||
WARP_PB_S3_REGION: ${WARP_PB_S3_REGION:-us-east-1}
|
||||
WARP_PB_S3_REGION: us-east-1 # SeaweedFS ignores it; the client wants one
|
||||
WARP_PB_S3_FORCE_PATH_STYLE: "true"
|
||||
WARP_PB_S3_ACCESS_KEY: ${WARP_PB_S3_ACCESS_KEY:?set WARP_PB_S3_ACCESS_KEY in .env}
|
||||
WARP_PB_S3_SECRET: ${WARP_PB_S3_SECRET:?set WARP_PB_S3_SECRET in .env}
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
# separate containers.
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ACCESS_KEY,
|
||||
# # WARP_PB_S3_SECRET and SEAWEED_ADMIN_PASSWORD
|
||||
# cp .env.pocketbase.seaweedfs.split.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.split.yml up -d --build
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
@@ -194,7 +193,7 @@ services:
|
||||
WARP_PB_S3_ENABLED: "true"
|
||||
WARP_PB_S3_ENDPOINT: http://seaweedfs-s3:8333
|
||||
WARP_PB_S3_BUCKET: ${WARP_PB_S3_BUCKET:-warp}
|
||||
WARP_PB_S3_REGION: ${WARP_PB_S3_REGION:-us-east-1}
|
||||
WARP_PB_S3_REGION: us-east-1 # SeaweedFS ignores it; the client wants one
|
||||
WARP_PB_S3_FORCE_PATH_STYLE: "true"
|
||||
WARP_PB_S3_ACCESS_KEY: ${WARP_PB_S3_ACCESS_KEY:?set WARP_PB_S3_ACCESS_KEY in .env}
|
||||
WARP_PB_S3_SECRET: ${WARP_PB_S3_SECRET:?set WARP_PB_S3_SECRET in .env}
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
# process).
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it; set WARP_PB_S3_ACCESS_KEY
|
||||
# # and WARP_PB_S3_SECRET
|
||||
# cp .env.pocketbase.seaweedfs.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.seaweedfs.yml up -d --build
|
||||
#
|
||||
# The database stays in /data/pb_data (warp-data); media goes to the bucket
|
||||
@@ -91,7 +90,7 @@ services:
|
||||
WARP_PB_S3_ENABLED: "true"
|
||||
WARP_PB_S3_ENDPOINT: http://seaweedfs:8333
|
||||
WARP_PB_S3_BUCKET: ${WARP_PB_S3_BUCKET:-warp}
|
||||
WARP_PB_S3_REGION: ${WARP_PB_S3_REGION:-us-east-1}
|
||||
WARP_PB_S3_REGION: us-east-1 # SeaweedFS ignores it; the client wants one
|
||||
WARP_PB_S3_FORCE_PATH_STYLE: "true"
|
||||
WARP_PB_S3_ACCESS_KEY: ${WARP_PB_S3_ACCESS_KEY:?set WARP_PB_S3_ACCESS_KEY in .env}
|
||||
WARP_PB_S3_SECRET: ${WARP_PB_S3_SECRET:?set WARP_PB_S3_SECRET in .env}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# each in its own container, built from this checkout.
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it
|
||||
# cp .env.pocketbase.example .env # then edit it
|
||||
# docker compose -f docker-compose.pocketbase.yml up -d --build
|
||||
#
|
||||
# PocketBase is embedded in the homeserver (the pocketbase database driver),
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# PostgreSQL, each in its own container, pulled from a registry.
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it; set WARP_POSTGRES_PASSWORD
|
||||
# cp .env.postgresql.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.postgresql.prod.yml up -d
|
||||
#
|
||||
# Homeserver http://localhost:8008, admin panel http://localhost:8009, web
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# PostgreSQL, each in its own container, built from this checkout.
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it; set WARP_POSTGRES_PASSWORD
|
||||
# cp .env.postgresql.example .env # then edit it
|
||||
# docker compose -f docker-compose.postgresql.yml up -d --build
|
||||
#
|
||||
# Homeserver http://localhost:8008, admin panel http://localhost:8009, web
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# in its own container, pulled from a registry.
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it
|
||||
# cp .env.sqlite.prod.example .env # then edit it
|
||||
# docker compose -f docker-compose.sqlite.prod.yml up -d
|
||||
#
|
||||
# Homeserver http://localhost:8008, admin panel http://localhost:8009, web
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# in its own container, built from this checkout.
|
||||
#
|
||||
# cd Docker
|
||||
# cp .env.example .env # then edit it
|
||||
# cp .env.sqlite.example .env # then edit it
|
||||
# docker compose -f docker-compose.sqlite.yml up -d --build
|
||||
#
|
||||
# Homeserver http://localhost:8008, admin panel http://localhost:8009, web
|
||||
|
||||
Reference in new issue
Block a user