blob: 3acc2d9e82e4be45dfec637873dda01f10b6e56a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# ---------------------------------------------------------------------------
# Shared configuration for the dashboard (Flask, config.py) and the browser
# voice gateway (Node, gateway/src/config.js). Both read this one file.
#
# Secrets do NOT belong here: put them in `.env` (see .env.template).
# Any environment variable listed next to a setting overrides the value here.
# ---------------------------------------------------------------------------
# Where the app listens. When voice is enabled, the voice gateway owns the
# public port and forwards every non-voice request to the dashboard, which
# then listens on 127.0.0.1:dashboard_port only. One port to expose/proxy.
[web]
host = "0.0.0.0" # WEB_HOST
port = 5000 # WEB_PORT - public port
dashboard_port = 5001 # DASHBOARD_PORT - internal Flask port (voice enabled only)
# TeamSpeak server connection settings
[server]
host = "" # TS_HOST - server IP or hostname, e.g. 192.168.1.50
webquery_port = 8443 # TS_WEBQUERY_PORT - HTTP WebQuery port (TS6)
server_id = 1 # TS_SERVER_ID - virtual server id
voice_port = 9987 # TS_VOICE_PORT - UDP voice port the web voice gateway connects to
ts_domain = "" # TS_DOMAIN - address used by the "Connect" button; empty = host
cache_time = 30 # Refresh interval in seconds (anti-spam)
cache_file = "cache.json" # Relative to the repository root
afk_status_max_clients = 3 # Skip per-client clientinfo (AFK/streaming) calls when client count exceeds this (due to potential rate limits)
# TS_API_KEY (.env) - WebQuery API key
# TS_SERVER_PASSWORD (.env) - server password; required for web voice
# Browser voice (join the server from the dashboard).
# Voice is only offered when `enabled = true` AND TS_SERVER_PASSWORD is set:
# visitors must type the server password, which the gateway checks before
# it opens any TeamSpeak connection (the TeamSpeak server checks it again).
[voice]
enabled = true # VOICE_ENABLED
max_sessions = 8 # Concurrent browser voice sessions (keep low on small SBCs)
max_sessions_per_ip = 2 # Concurrent sessions from one IP address
max_failed_logins = 5 # Wrong passwords per IP before a temporary lockout
lockout_minutes = 10 # Lockout duration after too many wrong passwords
nickname_prefix = "" # Prepended to web users' nicknames, e.g. "[web] "
default_channel = "" # Channel name (or path "Parent/Child") to join; empty = server default
identity_security_level = 8 # TeamSpeak identity security level for new web users
trust_proxy = false # Use X-Forwarded-For for per-IP limits (only behind your own reverse proxy)
allowed_origins = [] # Extra allowed Origins for /ws/voice, e.g. ["https://ts.example.com"]; same-host is always allowed
# Main design and copy
[ui]
title = ""
subtitle = ""
background_color = "#07111f" # Main background color
panel_color = "#101b2d" # Main panel and channel block color
accent_color = "#2589ff" # Buttons, highlights, and refresh timer
text_color = "#e8f2ff"
banner_url = "https://files.catbox.moe/8852dq.jpg" # Absolute URL (e.g. "https://...") or path; leave empty ("") to hide the header banner
enable_stars = true # Set to true to enable a subtle animated space background
# Interface buttons and links
[buttons]
join = "Connect in TeamSpeak"
web_join = "Join from browser"
download_text = "Teamspeak is not installed yet?"
download_link = "Download Teamspeak"
download_url = "https://www.teamspeak.com/en/downloads/" # Official download link
# Useful links. Add or remove as many rows as you want: "Name" = "https://..."
[external_links]
# Footer
[footer]
text = "another moekyun service"
author = ""
author_url = ""
# Channel customization. Exact channel name => absolute image URL (e.g. "https://...")
[channel_banners]
"INFORMATION" = "https://files.catbox.moe/ap6r2c.webp"
"GAME SERVERS" = "game.jpeg"
"General" = "general.jpg"
"CRASHING OUT" = "crash.png"
"Wonhee HQ" = "illit.jpg"
[channel_icons]
# "Lobby" = "https://example.com/lobby_icon.png"
# "General" = "https://example.com/general_icon.png"
[generic_images]
background = "" # Default image URL applied to unknown channels
icon = "" # Default icon URL applied to unknown channels
# Server groups / roles: "GROUP_ID" = "https://example.com/role_icon.png"
[role_icons]
# "6" = "https://example.com/admin.png"
# "9" = "https://example.com/vip.png"
|