The first public release. What it does: https://weavesignal.top; what changed: CHANGELOG.md.
88 lines
3.9 KiB
Shell
88 lines
3.9 KiB
Shell
# SPDX-License-Identifier: AGPL-3.0-only
|
|
# SPDX-FileCopyrightText: 2026 The WeaveSignal contributors
|
|
# Copy to .env and fill in. .env holds secrets and is ignored by git.
|
|
# `weavesignal-control sample-config` makes a station identifier.
|
|
STATION_ID=00000000-0000-0000-0000-000000000000
|
|
STATION_NAME=Kettle FM
|
|
ROOM=studio
|
|
# How a caller asks for their call to be taken down: an email address or a link. Call-in stays
|
|
# closed until it is set (ADR-0124).
|
|
CONSENT_CONTACT=
|
|
# The image the desk and the control plane run (`just server-image` builds it).
|
|
SERVER_IMAGE=forgejo.weavesignal.top/weavesignal/weavesignal-server:1.0.0
|
|
|
|
LIVEKIT_API_KEY=weavesignal
|
|
# At least 32 characters.
|
|
LIVEKIT_API_SECRET=
|
|
LISTENERS_SOURCE_PASSWORD=
|
|
POSTGRES_PASSWORD=
|
|
# Leave empty to keep the admin routes off.
|
|
CONTROL_ADMIN_TOKEN=
|
|
|
|
# Keys the hash of chatters' email addresses (ADR-0125); at least 32 characters, e.g.
|
|
# `openssl rand -hex 32`. The chat will not start without it. Keep it with the database's backups:
|
|
# a different key finds none of the existing chat accounts.
|
|
CHAT_EMAIL_KEY=
|
|
|
|
# Keys the hash of staff email addresses and sign-in codes (ADR-0127), the same way; needed when
|
|
# MAIL_MODE is on.
|
|
CONTROL_EMAIL_KEY=
|
|
|
|
# Keys API tokens and webhook secrets (ADR-0195, ADR-0202): at least 32 characters, `openssl rand
|
|
# -hex 32`; weavesignal.sh makes one. Keep it with the backups: a different key revokes every token.
|
|
# Unset, the control plane derives one from CONTROL_ADMIN_TOKEN, and rotating that revokes them.
|
|
CONTROL_TOKEN_KEY=
|
|
|
|
# The chat's and the staff's sign-in codes: "off" until the station can send email ("command" pipes each to
|
|
# /usr/sbin/sendmail -t -i in the image's PATH; see weavesignal-chat sample-config).
|
|
MAIL_MODE=off
|
|
MAIL_FROM=chat@station.example
|
|
|
|
# Listing. Both are off until the station goes public. SEARCH_LISTING lets search engines list the
|
|
# public address (ADR-0133); DIRECTORY_LISTING makes the stream ask internet radio directories to
|
|
# list it (ADR-0129).
|
|
SEARCH_LISTING=false
|
|
DIRECTORY_LISTING=false
|
|
|
|
# The MP3 compatibility stream (ADR-0002): one extra stream, LAME-encoded, on the listener port
|
|
# under its own mount, for directories and smart speakers that do not take Opus. Off by default;
|
|
# the reverse proxy must publish the mount to reach anyone off this machine.
|
|
COMPAT_STREAM=false
|
|
COMPAT_MOUNT=programme.mp3
|
|
COMPAT_BITRATE=128
|
|
# The listener process's cushion of playout's feed, in seconds (ADR-0182); raise it to 1-2 on a busy host
|
|
# if listeners hear the fallback for moments while playout is on air.
|
|
FEED_BUFFER_S=0.5
|
|
|
|
# Playout's processing chain (ADR-0044): a slow gain control towards a loudness target, then the
|
|
# limiter. Set PROCESSING=false to take the gain control out (the limiter stays).
|
|
PROCESSING=true
|
|
PROCESSING_TARGET_LUFS=-16
|
|
PROCESSING_MAX_GAIN_DB=6
|
|
|
|
# Video (ADR-0009): cameras, the vision mixer, AV1 to HLS for the player. Off by default.
|
|
VIDEO=false
|
|
|
|
# Ports (ADR-0075): the defaults; any free port may be used instead.
|
|
CONTROL_PORT=7310
|
|
CHAT_PORT=7311
|
|
LISTENERS_PORT=7312
|
|
SRT_INGEST_PORT=7313
|
|
PLAYOUT_FEED_PORT=7315
|
|
DESK_FEED_PORT=7317
|
|
LIVEKIT_HTTP_PORT=7880
|
|
LIVEKIT_MEDIA_PORT=7882
|
|
|
|
# The public route (opt-in; see public.yaml). `weavesignal.sh --public station.example` writes
|
|
# these, derived addresses included, and runs the bundle with public.yaml; by hand, add public.yaml
|
|
# to the compose command and set what it reads. Left unset, the bundle stays on loopback.
|
|
# PUBLIC_DOMAIN=station.example
|
|
# PUBLIC_TLS=acme # or internal: Caddy's own CA (a private network, a test)
|
|
# ACME_EMAIL=
|
|
# PROXY_HTTPS_PORT=443 # a certificate authority reaches 443 and 80 only
|
|
# PROXY_HTTP_PORT=80
|
|
# TURN_TLS_PORT=5349 # LiveKit's TURN over TLS (ADR-0080); 15349 where 5349 is taken
|
|
# TURN_UDP_PORT=0 # 0 is off
|
|
# LIVEKIT_TCP_PORT=0 # ICE over TCP; 0 is off
|
|
# NODE_IP= # LiveKit's public address; empty, found by STUN
|
|
# TURN_ALLOW_CIDRS= # for a private NODE_IP: 10.0.0.5/32
|