Fix malformed MIFCOM badge table row, replace section numbering placeholder, split respeak reference into Part I/II, add version notes for teaspeak contradictions, fix truncated YaTQA error codes.
1287 lines
50 KiB
Markdown
1287 lines
50 KiB
Markdown
# TeaSpeak Offline Reference Document
|
|
|
|
> Compiled from GitHub repositories (TeaSpeak, TeaWeb, TeaMusic) and archived website (teaspeak.de).
|
|
> Last updated: June 2026
|
|
|
|
---
|
|
|
|
## Table of Contents
|
|
|
|
1. [Project Overview](#project-overview)
|
|
2. [Architecture](#architecture)
|
|
3. [Feature Comparison](#feature-comparison)
|
|
4. [Complete Feature List](#complete-feature-list)
|
|
5. [Protocol Implementation Details](#protocol-implementation-details)
|
|
6. [Audio/Codec Support](#audiocodec-support)
|
|
7. [Channel Types and Properties](#channel-types-and-properties)
|
|
8. [Permissions System](#permissions-system)
|
|
9. [Server Configuration](#server-configuration)
|
|
10. [Music Bot System](#music-bot-system)
|
|
11. [Chat System](#chat-system)
|
|
12. [Token System](#token-system)
|
|
13. [ServerQuery Notify System](#serverquery-notify-system)
|
|
14. [Ban System](#ban-system)
|
|
15. [Web Client Architecture](#web-client-architecture)
|
|
16. [Music Bot Architecture (TeaMusic)](#music-bot-architecture-teamusic)
|
|
17. [Server Binary Distribution](#server-binary-distribution)
|
|
18. [License Information](#license-information)
|
|
19. [Known Issues and Limitations](#known-issues-and-limitations)
|
|
20. [Properties Reference](#properties-reference)
|
|
21. [Feature Support Commands](#feature-support-commands)
|
|
|
|
---
|
|
|
|
## Project Overview
|
|
|
|
**TeaSpeak** is a free-to-use, community-driven VoIP (Voice over IP) communication platform consisting of a server and multiple client implementations. It is designed as an alternative to TeamSpeak with enhanced features, no license fees, and open-source components.
|
|
|
|
### Components
|
|
|
|
| Component | Repository | Language | Description |
|
|
|-----------|-----------|----------|-------------|
|
|
| **TeaSpeak Server** | [TeaSpeak/TeaSpeak](https://github.com/TeaSpeak/TeaSpeak) | C++ (proprietary binary) | The server daemon (issue tracker + docs in repo) |
|
|
| **TeaWeb** | [TeaSpeak/TeaWeb](https://github.com/TeaSpeak/TeaWeb) | TypeScript (84.1%), SCSS, HTML | Web client (open source, MPL-2.0) |
|
|
| **TeaMusic** | [TeaSpeak/TeaMusic](https://github.com/TeaSpeak/TeaMusic) | C++ (99.3%), CMake | Music bot provider plugins (open source) |
|
|
| **TeaClient** | Not open source | Native | Desktop client for Windows/Linux |
|
|
|
|
### Key Design Principles
|
|
|
|
- Free to use (no license fees)
|
|
- Community-driven development
|
|
- Self-hostable server
|
|
- Web client (installation-less)
|
|
- Built-in music bots
|
|
- Hidden/invisible channel system
|
|
- Extended ServerQuery interface
|
|
- Compatible with TeamSpeak 3 protocol
|
|
|
|
---
|
|
|
|
## Architecture
|
|
|
|
### Server Architecture
|
|
|
|
The TeaSpeak server is a single binary (`TeaSpeakServer`) written in C++ that handles:
|
|
|
|
- **Voice connections** via UDP (native TeamSpeak protocol) and WebRTC (for web clients)
|
|
- **ServerQuery** via TCP telnet-like interface (default port 10101)
|
|
- **File transfer** via HTTP/HTTPS (default port 30303)
|
|
- **Web client hosting** via built-in web server
|
|
- **Music bot management** with provider plugin system
|
|
- **Database** using SQLite (default) or MySQL
|
|
- **Instance management** supporting multiple virtual servers
|
|
|
|
### Network Architecture
|
|
|
|
```
|
|
┌─────────────────┐ ┌──────────────────┐
|
|
│ Native Clients │────▶│ UDP Voice │
|
|
│ (TeaClient/TS3)│ │ (Port 9987) │
|
|
└─────────────────┘ └──────────────────┘
|
|
│
|
|
┌─────────────────┐ ┌──────────────────┐
|
|
│ Web Clients │────▶│ WebRTC Bridge │
|
|
│ (Browser) │ │ (via HTTPS) │
|
|
└─────────────────┘ └──────────────────┘
|
|
│
|
|
┌─────────────────┐ ┌──────────────────┐
|
|
│ Query Clients │────▶│ ServerQuery │
|
|
│ (YaTQA, bots) │ │ (Port 10101) │
|
|
└─────────────────┘ └──────────────────┘
|
|
│
|
|
┌─────────────────┐ ┌──────────────────┐
|
|
│ File Transfer │────▶│ HTTP/HTTPS │
|
|
│ │ │ (Port 30303) │
|
|
└─────────────────┘ └──────────────────┘
|
|
```
|
|
|
|
### Threading Model (1.5.4+)
|
|
|
|
As of version 1.5.4, the server merges the web, query, and voice client network event loops into fewer threads, reducing resource usage.
|
|
|
|
---
|
|
|
|
## Feature Comparison
|
|
|
|
From the archived teaspeak.de website:
|
|
|
|
| Feature | TeaSpeak | TeamSpeak | Discord | Skype |
|
|
|---------|----------|-----------|---------|-------|
|
|
| Community and non-commercial driven | ✅ | ❌ | ❌ | ❌ |
|
|
| Spam/Ad free | ✅ | ✅ | ❌ | ❌ |
|
|
| Web Client / Installation-less Client | ✅ | ❌ | ✅ | ❌ |
|
|
| Host your own private server | ✅ | ✅ | ❌ | ❌ |
|
|
| High quality video and screen sharing | ✅ | ✅ | ✅ | ✅ |
|
|
| Built in music bots | ✅ | ❌ | ❌ | ❌ |
|
|
| Ability to hide channels | ✅ | ❌ | ❌ | ❌ |
|
|
| Cross and permanent channel chat | ✅ | ❌ | ✅ | ✅ |
|
|
| Built in unlimited file transfer | ✅ | ✅ | ❌ | ✅ |
|
|
| High quality OPUS voice transmission | ✅ | ✅ | ✅ | ✅ |
|
|
| Offline / LAN functionality | ✅ | ✅ | ❌ | ❌ |
|
|
| Advanced permissions system | ✅ | ✅ | ✅ | ❌ |
|
|
| Easy to use chat box with markdown support | ✅ | ❌ | ✅ | ✅ |
|
|
| Open Source | Partial | ❌ | ❌ | ❌ |
|
|
| Direct Messaging | ✅ | ✅ | ✅ | ✅ |
|
|
|
|
---
|
|
|
|
## Complete Feature List
|
|
|
|
### Server Features (Unique to TeaSpeak)
|
|
|
|
1. **Built-in Music Bots** - High-quality, low bandwidth music bots with playlist management
|
|
2. **Invisible/Hidden Channels** - Channels hidden based on `i_channel_view_power`
|
|
3. **Customizable Messages** - Customize server stop messages, default descriptions, version display, license type, query MOTD, country flags
|
|
4. **Built-in Console** - Stdout commands: `end|shutdown`, `chat`, `permgrant`, `passwd`
|
|
5. **VPN Detection** - `b_client_ignore_vpn` permission to bypass
|
|
6. **Scheduled Shutdowns** - `serverprocessstop type=schedule time=60 msg=`
|
|
7. **Increased Slot Count** - Up to 1024 slots per virtual server (unlimited virtual servers)
|
|
8. **Per-Server Binding** - Individual binding options per virtual server
|
|
9. **Global Ban System** - Instance-wide bans with `sid=0`
|
|
10. **Ban Enforcement List** - Log of all ban enforcements (`bantriggerlist`)
|
|
11. **Ban Editing** - Direct ban editing (not delete+recreate)
|
|
12. **HWID Bans** - Ban by hardware ID
|
|
13. **Encrypted Query** - SSL/TLS encrypted ServerQuery connections
|
|
14. **Extended ServerQuery Notifies** - Almost all events available to query clients
|
|
15. **Global Group Assignment** - Instance-wide group assignment via `use 0`
|
|
16. **Channel Chat Conversations** - Persistent cross-channel chat
|
|
17. **SNI Certificate Support** - Different certificates for different server names
|
|
18. **WebRTC for Web Clients** - Native WebRTC voice bridge
|
|
19. **Video Broadcasting** - Camera and screen sharing via WebRTC
|
|
20. **Automatic Permission Updates** - New permissions auto-applied via `i_group_auto_update_type`
|
|
21. **Channel Creation Limits** - Per-client limits on temporary/semi/permanent channels
|
|
22. **Customizable Token System** - Configurable token values and actions
|
|
23. **Multiple IP Bindings** - IPv4 and IPv6 multi-binding support
|
|
24. **Compressed Snapshots** - Server snapshot compression
|
|
25. **IP Range Whitelists/Blacklists** - For query and file transfer
|
|
|
|
### TeamSpeak Compatibility
|
|
|
|
TeaSpeak implements the TeamSpeak 3 Server Query protocol and voice protocol, making it compatible with:
|
|
- TeamSpeak 3 clients (native voice)
|
|
- YaTQA (query administration)
|
|
- SinusBot (music bot)
|
|
- Other TS3-compatible tools
|
|
|
|
---
|
|
|
|
## Protocol Implementation Details
|
|
|
|
### Voice Protocol
|
|
|
|
- **Transport**: UDP for native clients, WebRTC for web clients
|
|
- **Codec**: OPUS only (all non-OPUS codecs dropped in 1.5.0)
|
|
- Speex 8/16/32kbps: Removed
|
|
- CELT-Mono 48kbps: Removed
|
|
- OPUS Voice: Default
|
|
- OPUS Music: Available
|
|
- **Encryption**: Configurable per channel (`channel_codec_is_unencrypted`) and server-wide (`virtualserver_codec_encryption_mode`)
|
|
- **Video Codecs**: VP8 (default, better with packet loss), H264 available
|
|
- **Packet handling**: Control commands separated from voice/keepalive (1.4.7+) for reliability
|
|
- **RTO**: 200ms (matching Linux kernel TCP/IP RFC 6298)
|
|
- **WebRTC**: Uses libnice for ICE/STUN, thread pool for bridges (not per-client threads)
|
|
|
|
### ServerQuery Protocol
|
|
|
|
- **Transport**: TCP (plain text) or TLS/SSL encrypted
|
|
- **Default port**: 10101
|
|
- **Newline**: `\n` (changed from `\n\r` in 1.4.14-beta6)
|
|
- **Max command length**: Configurable via `config.yml`
|
|
- **Flood protection**: Configurable commands/time/ban_time
|
|
- **Authentication**: Server admin password, token-based, or name-based
|
|
|
|
### File Transfer Protocol
|
|
|
|
- **Transport**: HTTP/HTTPS
|
|
- **Default port**: 30303
|
|
- **Commands**: `ftcreatedir`, `ftgetfilelist`, `ftgetfileinfo`, `ftdeletefile`, `ftinitupload`, `ftinitdownload`, `ftrenamefile`, `ftlist`, `ftstop`
|
|
- **Bulk support**: `ftdeletefile` and `ftgetfileinfo` support bulks
|
|
- **Bandwidth limits**: Per-transfer and server-wide configurable
|
|
|
|
---
|
|
|
|
## Audio/Codec Support
|
|
|
|
### Voice Codecs (Server 1.5.0+)
|
|
|
|
| Codec | Status | Notes |
|
|
|-------|--------|-------|
|
|
| OPUS Voice | ✅ Default | Primary codec |
|
|
| OPUS Music | ✅ Supported | Higher quality for music |
|
|
| Speex 8/16/32kbps | ❌ Removed | Permissions removed |
|
|
| CELT-Mono 48kbps | ❌ Removed | Permission removed |
|
|
|
|
### Video Codecs
|
|
|
|
| Codec | Status | Notes |
|
|
|-------|--------|-------|
|
|
| VP8 | ✅ Default | Better with packet loss |
|
|
| H264 | ✅ Available | Poor performance with packet loss |
|
|
|
|
### Video Permissions
|
|
|
|
- `b_video_screen` - Screen sharing permission
|
|
- `b_video_camera` - Camera permission
|
|
- `i_video_max_kbps` - Max video bitrate
|
|
- `i_video_max_streams` - Max total video streams
|
|
- `i_video_max_screen_streams` - Max screen share streams
|
|
- `i_video_max_camera_streams` - Max camera streams
|
|
|
|
### Audio Processing (Web Client)
|
|
|
|
- Voice Activity Detection (VAD) - Default mode
|
|
- Push-to-Talk (PTT) with configurable delay
|
|
- Threshold-based audio filtering
|
|
- Echo test support
|
|
- Whisper support
|
|
- Native audio encoding/decoding (Rust-based worker, replaced Emscripten)
|
|
|
|
---
|
|
|
|
## Channel Types and Properties
|
|
|
|
### Channel Types
|
|
|
|
| Type | Flag | Description |
|
|
|------|------|-------------|
|
|
| Permanent | `channel_flag_permanent=1` | Persists after all users leave |
|
|
| Semi-Permanent | `channel_flag_semi_permanent=1` | Persists until deleted |
|
|
| Temporary | Both flags `0` | Auto-deleted when empty (with configurable delay) |
|
|
| Default | `channel_flag_default=1` | Landing channel for new connections |
|
|
| Password-Protected | `channel_flag_password=1` | Requires password to join |
|
|
| Private/Hidden | `channel_flag_private=1` | Invisible to unauthorized users |
|
|
|
|
### Conversation Modes (1.4.22+)
|
|
|
|
| Value | Mode | Description |
|
|
|-------|------|-------------|
|
|
| 0 | None | Shows channel description instead of conversation |
|
|
| 1 | Public | Default conversation mode |
|
|
| 2 | Private | Only accessible while in the channel |
|
|
|
|
### Sidebar Modes (1.5.0+)
|
|
|
|
| Value | Mode | Description |
|
|
|-------|------|-------------|
|
|
| 0 | Public | Default sidebar mode |
|
|
|
|
### Channel Properties (Key)
|
|
|
|
| Property | Type | Default | Description |
|
|
|----------|------|---------|-------------|
|
|
| `channel_name` | string | - | Channel name |
|
|
| `channel_topic` | string | empty | Channel topic |
|
|
| `channel_description` | string | empty | Channel description |
|
|
| `channel_password` | string | empty | Channel password |
|
|
| `channel_codec` | number | 4 (OPUS) | Audio codec |
|
|
| `channel_codec_quality` | number | 7 | Codec quality (0-10) |
|
|
| `channel_maxclients` | number | -1 (-1=unlimited) | Max clients |
|
|
| `channel_maxfamilyclients` | number | -1 | Max clients including sub-channels |
|
|
| `channel_needed_talk_power` | number | 0 | Required talk power |
|
|
| `channel_forced_silence` | bool | 0 | Force silence in channel |
|
|
| `channel_delete_delay` | number | 0 | Delay before temp channel deletion |
|
|
| `channel_conversation_history_length` | number | 1500 | Chat history length (-1=none, 0=unlimited) |
|
|
| `channel_conversation_mode` | number | 1 | Conversation mode |
|
|
| `channel_sidebar_mode` | number | 0 | Sidebar mode |
|
|
| `channel_created_at` | number | - | Creation timestamp |
|
|
| `channel_created_by` | number | - | Creator database ID |
|
|
| `channel_last_left` | number | - | Last time a user left |
|
|
|
|
### Channel Name Spacers
|
|
|
|
TeaSpeak supports `[spacerX]` channel name spacers for visual organization in the channel tree.
|
|
|
|
---
|
|
|
|
## Permissions System
|
|
|
|
### Permission Calculation Flow
|
|
|
|
TeaSpeak uses a multi-layer permission system:
|
|
|
|
1. **Server Groups** - Global permissions from server group membership
|
|
2. **Channel Groups** - Channel-specific permissions
|
|
3. **Client Permissions** - Per-client overrides
|
|
4. **Channel Client Permissions** - Per-client per-channel overrides
|
|
5. **Playlist Permissions** - Music bot playlist permissions
|
|
|
|
Each permission has:
|
|
- **Value** - The granted power level
|
|
- **Negate** - If set, the permission is denied regardless
|
|
- **Skip** - If set, skips this permission in calculation
|
|
|
|
### TeaSpeak-Specific Permissions
|
|
|
|
#### General Permissions
|
|
|
|
| Permission | Description |
|
|
|------------|-------------|
|
|
| `b_client_allow_invalid_badges` | Bypass server kick for invalid badges |
|
|
| `b_client_allow_invalid_packet` | Bypass server kick for empty packets |
|
|
| `b_client_even_textmessage_send` | Allow sending private messages to self |
|
|
| `b_client_ignore_vpn` | Bypass VPN check |
|
|
| `b_client_music_server_list` | List all music bots on server |
|
|
| `b_client_music_channel_list` | List music bots in current channel |
|
|
| `b_client_music_create` | Create music bots |
|
|
| `b_client_music_delete_own` | Delete own music bots |
|
|
| `i_client_music_delete_power` | Power to delete music bots |
|
|
| `i_client_music_needed_delete_power` | Needed power to delete music bots |
|
|
| `i_client_music_info` | Power for `.mbot info` |
|
|
| `i_client_music_needed_info` | Needed info power for bot |
|
|
| `i_client_music_play_power` | Power for `.mbot play` |
|
|
| `i_client_music_needed_play_power` | Needed play power for bot |
|
|
| `i_client_music_rename_power` | Power for `.mbot rename` |
|
|
| `i_client_music_needed_rename_power` | Needed rename power for bot |
|
|
| `i_client_music_limit` | Max music bots per client |
|
|
| `i_client_max_clones_hwid` | Max clones with same HWID |
|
|
| `i_client_max_clones_ip` | Max clones with same IP |
|
|
| `b_virtualserver_modify_music_bot_limit` | Modify server music bot limit |
|
|
|
|
#### Channel View Permissions
|
|
|
|
| Permission | Description |
|
|
|------------|-------------|
|
|
| `i_channel_view_power` | Channel view power |
|
|
| `b_channel_ignore_view_power` | Bypass visibility check |
|
|
| `i_channel_needed_view_power` | Required view power for channel |
|
|
|
|
#### Group Management Permissions
|
|
|
|
| Permission | Description |
|
|
|------------|-------------|
|
|
| `i_channel_group_member_add_power` | Power to set channel group |
|
|
| `i_channel_group_needed_member_add_power` | Needed power to add to channel group |
|
|
| `i_channel_group_member_remove_power` | Power to remove channel group |
|
|
| `i_channel_group_needed_member_remove_power` | Needed power to remove channel group |
|
|
| `i_channel_group_modify_power` | Power to modify channel group |
|
|
| `i_channel_group_needed_modify_power` | Needed power to modify channel group |
|
|
| `i_server_group_self_add_power` | Power to add self to server group |
|
|
| `i_server_group_self_remove_power` | Power to remove self from server group |
|
|
| `i_channel_group_self_add_power` | Power to add self to channel group |
|
|
| `i_channel_group_self_remove_power` | Power to remove self from channel group |
|
|
|
|
#### Ban Permissions
|
|
|
|
| Permission | Description |
|
|
|------------|-------------|
|
|
| `b_client_ban_create_global` | Create global ban rules |
|
|
| `b_client_ban_delete_global` | Delete any global ban rules |
|
|
| `b_client_ban_delete_own_global` | Delete own global ban rules |
|
|
| `b_client_ban_edit` | Edit local ban rules |
|
|
| `b_client_ban_edit_global` | Edit global ban rules |
|
|
| `b_client_ban_list_global` | List global ban rules |
|
|
|
|
#### Channel Limit Permissions
|
|
|
|
| Permission | Description |
|
|
|------------|-------------|
|
|
| `i_client_max_channels` | Max channels per client |
|
|
| `i_client_max_temporary_channels` | Max temporary channels |
|
|
| `i_client_max_semi_channels` | Max semi-permanent channels |
|
|
| `i_client_max_permanent_channels` | Max permanent channels |
|
|
|
|
#### Chat/Conversation Permissions
|
|
|
|
| Permission | Description |
|
|
|------------|-------------|
|
|
| `b_channel_create_modify_conversation_private` | Modify conversation private flag |
|
|
| `b_channel_create_modify_conversation_history_length` | Modify history length (value = max) |
|
|
| `b_channel_create_modify_conversation_history_unlimited` | Set unlimited history |
|
|
| `b_channel_create_modify_conversation_mode_private` | Create/modify private conversation mode |
|
|
| `b_channel_create_modify_conversation_mode_public` | Create/modify public conversation mode |
|
|
| `b_channel_create_modify_conversation_mode_none` | Create/modify none conversation mode |
|
|
|
|
#### Other Permissions
|
|
|
|
| Permission | Description |
|
|
|------------|-------------|
|
|
| `b_channel_ignore_description_view_power` | Bypass description view power |
|
|
| `b_channel_ignore_subscribe_power` | Bypass subscribe power |
|
|
| `b_virtualserver_modify_country_code` | Edit server country code |
|
|
| `b_virtualserver_select_godmode` | Query can select server without binding *(removed 1.5.0+)* |
|
|
| `i_channel_subscribe_power` (-1) | Prevent channel subscription |
|
|
| `b_channel_create_modify_sidebar_mode` | Modify channel sidebar mode |
|
|
| `b_channel_modify_temp_delete_delay` | Modify temp delete delay |
|
|
| `b_channel_create_modify_force_password` | Force password on channel creation |
|
|
|
|
### Removed Permissions (1.5.0+)
|
|
|
|
- `b_channel_create_modify_with_codec_speex8`
|
|
- `b_channel_create_modify_with_codec_speex16`
|
|
- `b_channel_create_modify_with_codec_speex32`
|
|
- `b_channel_create_modify_with_codec_celtmono48`
|
|
- `b_channel_create_private` (replaced by conversation modes)
|
|
- `b_virtualserver_select_godmode` (removed, queries always visible)
|
|
|
|
---
|
|
|
|
## Server Configuration
|
|
|
|
### config.yml Options
|
|
|
|
The server uses a YAML configuration file with the following key sections:
|
|
|
|
#### Instance Properties
|
|
|
|
| Property | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `serverinstance_filetransfer_host` | `0.0.0.0,[::]` | File transfer bind address |
|
|
| `serverinstance_filetransfer_port` | `30303` | File transfer port |
|
|
| `serverinstance_filetransfer_max_connections` | `100` | Max file transfer connections |
|
|
| `serverinstance_filetransfer_max_connections_per_ip` | `20` | Max file transfer connections per IP |
|
|
| `serverinstance_query_host` | `0.0.0.0,[::]` | Query bind address |
|
|
| `serverinstance_query_port` | `10101` | Query port |
|
|
| `serverinstance_query_max_connections` | `100` | Max query connections |
|
|
| `serverinstance_query_max_connections_per_ip` | `3` | Max query connections per IP |
|
|
| `serverinstance_serverquery_flood_commands` | `3` | Flood protection commands |
|
|
| `serverinstance_serverquery_flood_time` | `1` | Flood protection time (seconds) |
|
|
| `serverinstance_serverquery_ban_time` | `600` | Query ban time (seconds) |
|
|
| `serverinstance_virtual_server_id_index` | `1` | Starting virtual server ID |
|
|
|
|
#### Customizable Messages (config.yml)
|
|
|
|
| Config Key | Description |
|
|
|------------|-------------|
|
|
| Server stop/crash message | Message shown when server stops |
|
|
| Default channel/client description | Fallback descriptions |
|
|
| Idle kick message | Message for idle timeout kicks |
|
|
| Server version/platform | Displayed version info |
|
|
| License type display | No Licence, ATHP, LAN, NPL, or auto modes |
|
|
| Query MOTD | Message of the day for query clients |
|
|
| Query newline character | `\n` (default) or `\n\r` |
|
|
| Default country flag | Flag when no valid country detected |
|
|
|
|
#### Other Notable Config Options
|
|
|
|
| Option | Description |
|
|
|--------|-------------|
|
|
| `allow_session_reinitialize` | Allow session re-initialization |
|
|
| `suppress_myts_warnings` | Suppress MyTeamSpeak warnings |
|
|
| `notifymute` | Notify on mute |
|
|
| `connect_limit` | Connection limit |
|
|
| `client_connect_limit` | Per-client connection limit |
|
|
| `strict_ut8_mode` | Strict UTF-8 mode |
|
|
| `show_invisible_clients` | Show invisible clients |
|
|
| `default_music_bot` | Default music bot settings |
|
|
| `virtualserver_max_channels` | Max channels per virtual server |
|
|
|
|
### Runtime Terminal Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `end\|shutdown <now\|time> <reason>` | Stop the server |
|
|
| `chat <serverId> <mode> <targetId> <message>` | Send chat message |
|
|
| `permgrant <ServerId> <GroupId> <PermName> <Grant>` | Fix permissions |
|
|
| `passwd <new_password> <repeated>` | Change admin password |
|
|
| `reload config` | Reload config.yml |
|
|
|
|
---
|
|
|
|
## Music Bot System
|
|
|
|
### Quick Setup
|
|
|
|
1. Grant yourself music-related permissions
|
|
2. Type `.mbot` in channel chat
|
|
3. Use query commands for advanced control
|
|
|
|
### Music Bot Query Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `musicbotcreate [cid=<channel>]` | Create a music bot |
|
|
| `musicbotdelete bot_id=<id>` | Delete a music bot |
|
|
| `musicbotsetsubscription bot_id=<id>` | Subscribe to bot events |
|
|
| `musicbotplayerinfo bot_id=<id>` | Get player info |
|
|
| `musicbotplayeraction bot_id=<id> action=<n>` | Control playback |
|
|
| `musicbotqueueadd bot_id=<id> type=<n> url=<url>` | Add song to queue |
|
|
| `musicbotqueueadd bot_id=<id> type=2 url=cid=<n>\sname=<file>\spath` | Add file from channel |
|
|
| `musicbotqueuelist bot_id=<id> [-bulk]` | List queue entries |
|
|
| `musicbotqueueremove bot_id=<id> song_id=<id> [-skip_error]` | Remove queue entry |
|
|
| `musicbotqueuereorder bot_id=<id> song_id=<id> index=<n>` | Reorder queue |
|
|
|
|
### Player Actions
|
|
|
|
| Value | Action | Description |
|
|
|-------|--------|-------------|
|
|
| 0 | Stop | Stop the player |
|
|
| 1 | Play | Play current song |
|
|
| 2 | Pause | Pause current song |
|
|
| 3 | Forward | Skip to next song |
|
|
| 4 | Rewind | Jump to last song (limited support) |
|
|
|
|
### Player States
|
|
|
|
| Value | State | Description |
|
|
|-------|-------|-------------|
|
|
| 0 | Sleeping | Waiting for new song |
|
|
| 1 | Loading | Loading current song |
|
|
| 2 | Playing | Playing current song |
|
|
| 3 | Paused | Playback paused |
|
|
| 4 | Stopped | Playback stopped |
|
|
|
|
### Song Loader Types
|
|
|
|
| Value | Type | Description |
|
|
|-------|------|-------------|
|
|
| 0 | YouTube-DL | Resolve URL via youtube-dl |
|
|
| 1 | FFMPEG | Direct FFMPEG playback |
|
|
| 2 | Channel File | Play from channel file system |
|
|
|
|
### Playlist System
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `playlistcreate` | Create playlist |
|
|
| `playlistdelete` | Delete playlist |
|
|
| `playlistlist` | List playlists |
|
|
| `playlistinfo` | Get playlist info |
|
|
| `playlistedit` | Edit playlist properties |
|
|
| `playlistsonglist` | List songs in playlist |
|
|
| `playlistsongadd` | Add song to playlist |
|
|
| `playlistsongremove` | Remove song from playlist |
|
|
| `playlistsongreorder` | Reorder songs |
|
|
| `playlistsongsetcurrent` | Set current song |
|
|
| `musicbotplaylistassign` | Assign playlist to bot |
|
|
| `playlistclientlist` | List client playlists |
|
|
| `playlistclientpermlist` | List client permissions |
|
|
| `playlistclientaddperm` | Add client permission |
|
|
| `playlistclientdelperm` | Remove client permission |
|
|
|
|
### Playlist Properties
|
|
|
|
| Property | Type | Description |
|
|
|----------|------|-------------|
|
|
| `playlist_id` | number | Playlist identifier |
|
|
| `playlist_title` | string | Playlist title |
|
|
| `playlist_description` | string | Playlist description |
|
|
| `playlist_type` | number | 0=bot-bound, 1=global |
|
|
| `playlist_owner_dbid` | number | Owner database ID |
|
|
| `playlist_max_songs` | number | Max songs (-1=unlimited) |
|
|
| `playlist_flag_delete_played` | bool | Delete played songs |
|
|
| `playlist_flag_finished` | bool | Playlist finished flag |
|
|
| `playlist_replay_mode` | number | 0=normal, 1=loop, 2=loop-single, 3=shuffle |
|
|
| `playlist_current_song_id` | number | Current song ID |
|
|
|
|
### Music Bot Permissions
|
|
|
|
| Permission | Description |
|
|
|------------|-------------|
|
|
| `i_max_playlists` | Max playlists per client |
|
|
| `i_max_playlist_size` | Max songs per playlist |
|
|
| `i_playlist_view_power` / `i_playlist_needed_view_power` | View power |
|
|
| `i_playlist_modify_power` / `i_playlist_needed_modify_power` | Modify power |
|
|
| `i_playlist_delete_power` / `i_playlist_needed_delete_power` | Delete power |
|
|
| `i_playlist_song_add_power` / `i_playlist_song_needed_add_power` | Add song power |
|
|
| `i_playlist_song_remove_power` / `i_playlist_song_needed_remove_power` | Remove song power |
|
|
| `i_playlist_song_move_power` / `i_playlist_song_needed_move_power` | Move song power |
|
|
|
|
### Music Bot Chat Commands
|
|
|
|
Type in channel chat:
|
|
- `.mbot` - Show help
|
|
- `.mbot play` - Start playback
|
|
- `.mbot info` - Show bot info
|
|
- `.mbot rename <name>` - Rename bot
|
|
|
|
### Music Bot Events
|
|
|
|
| Event | Description |
|
|
|-------|-------------|
|
|
| `notifymusicqueueadd` | Song added to queue |
|
|
| `notifymusicqueueremove` | Song removed from queue |
|
|
| `notifymusicqueueorderchange` | Queue order changed |
|
|
| `notifymusicplayersongchange` | Current song changed |
|
|
| `notifymusicstatusupdate` | Player status update (every second when subscribed) |
|
|
|
|
---
|
|
|
|
## Chat System
|
|
|
|
### Overview
|
|
|
|
TeaSpeak's chat system is channel-based, using voice channel tree channels as chat rooms. Features:
|
|
|
|
- Each voice channel can be used as a chat room
|
|
- Conversations are persistent (saved to database)
|
|
- Offline users can read missed messages
|
|
- Cross-channel messaging (if you have join permission)
|
|
- Password-protected channels require active channel membership for chat
|
|
|
|
### Chat Properties
|
|
|
|
| Property | Range | Description |
|
|
|----------|-------|-------------|
|
|
| `channel_conversation_history_length` | -1 to 65535 | -1=no history, 0=unlimited, N=max messages |
|
|
| `channel_flag_conversation_private` | bool | Private = only accessible while in channel |
|
|
|
|
### Chat Commands (ServerQuery)
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `sendtextmessage target=<id> targetmode=<mode> msg=<text> [cid=<channel>]` | Send message |
|
|
| `conversationhistory cid=<channel>` | Get conversation history |
|
|
| `conversationfetch cid=<channel>` | Fetch conversation |
|
|
| `conversationmessagedelete` | Delete message |
|
|
| `conversationsetsubscription` | Set subscription |
|
|
|
|
### Supported Chat Features
|
|
|
|
- BBCode formatting
|
|
- Markdown support
|
|
- Emoji support
|
|
- Image preview
|
|
- YouTube video embeds
|
|
- URL detection and linking
|
|
- Tables, headings, lists, horizontal rules
|
|
- Code blocks
|
|
- Blockquotes
|
|
|
|
---
|
|
|
|
## Token System
|
|
|
|
### Overview
|
|
|
|
Tokens are long, random-generated keys that trigger actions when used. Their main purpose is granting extra permissions.
|
|
|
|
### Token Properties
|
|
|
|
| Property | Description |
|
|
|----------|-------------|
|
|
| `token_max_uses` | Maximum uses (-1 = unlimited) |
|
|
| `token_expired` | Expiration timestamp (seconds since epoch) |
|
|
| `token` | Custom token value (optional, auto-generated if not set) |
|
|
|
|
### Token Actions
|
|
|
|
| Action | ID | ID1 | ID2 | Text |
|
|
|--------|-----|-----|-----|------|
|
|
| Add server group | `0x01` | Server group ID | unused | unused |
|
|
| Remove server group | `0x02` | Server group ID | unused | unused |
|
|
| Set channel group | `0x03` | Channel group ID | Channel ID | unused |
|
|
| Allow channel join | `0x04` | unused | Channel ID | Channel password |
|
|
|
|
### Token Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `tokenadd` | Create token |
|
|
| `tokendelete` | Delete token |
|
|
| `tokenlist [-new]` | List tokens |
|
|
| `tokenuse` | Use a token |
|
|
| `tokenedit` | Edit token (new system) |
|
|
| `tokenactionlist` | List token actions (new system) |
|
|
|
|
### New Token System (1.5.1+)
|
|
|
|
- Token length increased from 20 to 32 characters
|
|
- `-new` switch for new token system
|
|
- `tokenuse` no longer requires permissions
|
|
- `tokendelete` no longer requires permissions for own tokens
|
|
- Tokens given on join are taken into account
|
|
|
|
---
|
|
|
|
## ServerQuery Notify System
|
|
|
|
### Registration
|
|
|
|
```
|
|
servernotifyregister event=all specifier=all # All events
|
|
servernotifyregister event=server specifier={edit} # Server edit
|
|
servernotifyregister event=client specifier={poke|update|command|join|switch|leave|add|remove|change}
|
|
servernotifyregister event=chat specifier={composing|receive_server|receive_channel|receive_private|close}
|
|
servernotifyregister event=channel specifier={create|edit|desc|move|delete}
|
|
servernotifyregister event=music specifier={queue|player}
|
|
```
|
|
|
|
### Server Events
|
|
|
|
| Event | Command | Description |
|
|
|-------|---------|-------------|
|
|
| Server Edit | `notifyserverupdated` | Server settings changed |
|
|
|
|
### Client Events
|
|
|
|
| Event | Command | Description |
|
|
|-------|---------|-------------|
|
|
| Client Poke | `notifyclientpoke` | Received a poke |
|
|
| Client Updated | `notifyclientupdated` | Client property changed |
|
|
| Client Command | `notifyplugincmd` | Plugin message received |
|
|
| Client Join | `notifycliententerview` | Client entered view |
|
|
| Client Switch | `notifyclientmoved` | Client moved channels |
|
|
| Client Leave | `notifyclientleftview` | Client left/kicked/banned |
|
|
| Group Add | `notifyservergroupclientadded` | Added to server group |
|
|
| Group Remove | `notifyservergroupclientdeleted` | Removed from server group |
|
|
| Channel Group Change | `notifyclientchannelgroupchanged` | Channel group changed |
|
|
|
|
### Chat Events
|
|
|
|
| Event | Command | Description |
|
|
|-------|---------|-------------|
|
|
| Composing | `notifyclientchatcomposing` | Client is typing |
|
|
| Receive | `notifytextmessage` | Message received |
|
|
| Close | `notifyclientchatclosed` | Chat closed |
|
|
|
|
### Channel Events
|
|
|
|
| Event | Command | Description |
|
|
|-------|---------|-------------|
|
|
| Create | `notifychannelcreated` | Channel created |
|
|
| Edit | `notifychanneledited` | Channel edited |
|
|
| Description Changed | `notifychanneldescriptionchanged` | Description changed |
|
|
| Password Changed | `notifychannelpasswordchanged` | Password changed |
|
|
| Moved | `notifychannelmoved` | Channel moved |
|
|
| Deleted | `notifychanneldeleted` | Channel deleted |
|
|
|
|
---
|
|
|
|
## Ban System
|
|
|
|
### Standard Ban Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `banadd` | Add ban rule |
|
|
| `bandel` | Delete ban rule |
|
|
| `banedit` | Edit ban rule (TeaSpeak-specific) |
|
|
| `banlist` | List ban rules |
|
|
| `banclient` | Ban client (supports database ID) |
|
|
| `bantriggerlist` | List ban enforcements |
|
|
|
|
### Global Bans
|
|
|
|
Use `sid=0` for instance-wide bans:
|
|
```
|
|
banadd sid=0 ip=8.8.8.8 reason=Global\sban
|
|
```
|
|
|
|
### HWID Bans
|
|
|
|
```
|
|
banadd hwid=<hardware_id_1>,<hardware_id_2>
|
|
banadd hwid= # Ban empty HWIDs
|
|
```
|
|
|
|
### Ban Properties
|
|
|
|
- IP-based bans
|
|
- Name-based bans
|
|
- HWID-based bans
|
|
- Configurable auto-ban on complain threshold
|
|
- Ban time in seconds
|
|
- Global (instance-wide) or local (per-server)
|
|
|
|
---
|
|
|
|
## Web Client Architecture
|
|
|
|
### Technology Stack
|
|
|
|
| Technology | Version | Purpose |
|
|
|------------|---------|---------|
|
|
| TypeScript | 4.2+ | Primary language (84.1%) |
|
|
| React | 16.x | UI framework |
|
|
| SCSS | - | Styling (10.8%) |
|
|
| Webpack | 5.x | Build system |
|
|
| Rust/WASM | - | Audio processing worker |
|
|
| WebRTC | - | Voice/video communication |
|
|
|
|
### Key Dependencies
|
|
|
|
| Package | Purpose |
|
|
|---------|---------|
|
|
| `react` / `react-dom` | UI rendering |
|
|
| `react-grid-layout` | Drag-and-drop layouts |
|
|
| `react-player` | Media playback |
|
|
| `remarkable` | Markdown rendering |
|
|
| `emoji-mart` | Emoji picker |
|
|
| `twemoji` | Twitter emoji support |
|
|
| `highlight.js` | Code syntax highlighting |
|
|
| `sdp-transform` | SDP parsing for WebRTC |
|
|
| `webrtc-adapter` | WebRTC cross-browser support |
|
|
| `dompurify` | HTML sanitization |
|
|
| `crypto-js` / `webcrypto-liner` | Cryptography |
|
|
| `jquery` | Legacy DOM manipulation |
|
|
| `moment` | Date/time handling |
|
|
| `detect-browser` | Browser detection |
|
|
|
|
### Project Structure
|
|
|
|
```
|
|
TeaWeb/
|
|
├── client-api/ # PHP API endpoint (legacy)
|
|
├── client/ # Native client wrapper code
|
|
├── documentation/ # i18n documentation
|
|
├── loader/ # Initial loader (ES5 compatible)
|
|
├── scripts/ # Build/install scripts
|
|
├── shared/ # Shared code between web/client
|
|
├── tools/ # Development tools
|
|
├── vendor/ # Vendor dependencies
|
|
├── web/ # Main web application
|
|
│ ├── css/ # SCSS styles
|
|
│ ├── html/ # HTML templates
|
|
│ └── ts/ # TypeScript source
|
|
│ ├── client/ # Client-side code
|
|
│ ├── connection/ # Server connection
|
|
│ ├── ui/ # UI components (React)
|
|
│ └── voice/ # Voice/audio handling
|
|
├── webpack/ # Webpack configurations
|
|
├── webpack-web.config.ts
|
|
├── webpack-client.config.ts
|
|
├── package.json
|
|
└── tsconfig.json
|
|
```
|
|
|
|
### Build Commands
|
|
|
|
```bash
|
|
npm install # Install dependencies
|
|
./scripts/install_dependencies.sh # Install rustup, wasm-pack
|
|
npm start web # Start dev server (http://localhost:8081)
|
|
npm run build-web # Build for production
|
|
npm run build-client # Build native client
|
|
./scripts/web_package.sh rel # Package into .zip
|
|
```
|
|
|
|
### Browser Support
|
|
|
|
| Browser | Supported |
|
|
|---------|-----------|
|
|
| Chrome | ✅ Yes |
|
|
| Firefox | ✅ Yes |
|
|
| Opera | ✅ Yes |
|
|
| Safari | ✅ Yes |
|
|
| MS Edge (Chromium) | ✅ Yes |
|
|
| MS Edge (Legacy) | ⚠️ Partial |
|
|
| Internet Explorer | ❌ No |
|
|
|
|
### Key Web Client Features
|
|
|
|
- Multi-server tabs (connect to multiple servers)
|
|
- Popoutable modals (detached windows)
|
|
- CSS variable editor for theming
|
|
- Dark theme
|
|
- Responsive design (font-size based)
|
|
- Bookmark system with import/export
|
|
- Auto-connect on startup
|
|
- Channel tree with React rendering
|
|
- Video spotlight mode (multiple simultaneous videos)
|
|
- Screen sharing
|
|
- Watch-together mode
|
|
- Image preview in chat
|
|
- Drag-and-drop for clients
|
|
- Context menus
|
|
- Hotkey system
|
|
- Volume controls (master + per-client)
|
|
- Identity management with auto-generation
|
|
- Auto-reconnect system
|
|
|
|
---
|
|
|
|
## Music Bot Architecture (TeaMusic)
|
|
|
|
### Technology
|
|
|
|
- **Language**: C++ (99.3%), CMake (0.7%)
|
|
- **Standard**: C++17
|
|
- **Build**: CMake with shared library providers
|
|
|
|
### Provider System
|
|
|
|
TeaMusic uses a plugin-based provider architecture:
|
|
|
|
```
|
|
TeaMusic/
|
|
├── include/teaspeak/ # Headers (MusicPlayer.h)
|
|
├── providers/
|
|
│ ├── ffmpeg/ # FFMPEG provider (000 prefix = load first)
|
|
│ │ ├── FFMpegProvider.cpp
|
|
│ │ ├── FFMpegMusicPlayer.cpp
|
|
│ │ ├── FFMpegMusicProcess.cpp
|
|
│ │ └── FFMpegStream.cpp
|
|
│ ├── yt/ # YouTube-DL provider (001 prefix = load second)
|
|
│ │ ├── YTProvider.cpp
|
|
│ │ ├── YTVManager.cpp
|
|
│ │ ├── YoutubeMusicPlayer.cpp
|
|
│ │ └── YTRegex.cpp
|
|
│ └── shared/ # Shared utilities
|
|
│ ├── libevent.cpp
|
|
│ └── CommandWrapper.cpp
|
|
├── helpers/ # Development helpers
|
|
└── CMakeLists.txt
|
|
```
|
|
|
|
### Provider Details
|
|
|
|
| Provider | Prefix | Dependencies | Description |
|
|
|----------|--------|--------------|-------------|
|
|
| FFMPEG | `000` | libevent, threadpool, StringVariables | Direct audio playback via FFMPEG |
|
|
| YouTube-DL | `001` | FFMPEG provider, jsoncpp, threadpool, StringVariables | YouTube/video URL resolution + playback |
|
|
|
|
### Build Options
|
|
|
|
```cmake
|
|
BUILD_PROVIDER_YT=ON # Build YouTube-DL provider
|
|
BUILD_PROVIDER_FFMPEG=ON # Build FFMPEG provider
|
|
BUILD_HELPERS=ON # Build development helpers
|
|
```
|
|
|
|
### Music Provider Features
|
|
|
|
- Automatic reconnect (3 attempts) on stream disconnect
|
|
- Shuffle mode
|
|
- Song change notifications
|
|
- Configurable announce messages
|
|
- Volume control per bot
|
|
- Playlist persistence across restarts
|
|
- YouTube URL resolution via youtube-dl
|
|
- FFMPEG direct stream playback
|
|
- Channel file system playback
|
|
|
|
---
|
|
|
|
## Server Binary Distribution
|
|
|
|
### Download Sources (Archived)
|
|
|
|
| Platform | URL Pattern |
|
|
|----------|-------------|
|
|
| Linux x64 (stable) | `https://repo.teaspeak.de/server/linux/amd64_stable/TeaSpeak-.tar.gz` |
|
|
| Linux x64 (nightly) | `https://repo.teaspeak.de/server/linux/amd64_nightly/` |
|
|
| Docker (TeaWeb) | `https://hub.docker.com/r/teaspeak/web` |
|
|
| Web Client Releases | `https://github.com/TeaSpeak/TeaWeb/releases` |
|
|
| TeaClient Releases | `https://clientapi.teaspeak.de/files/release/` |
|
|
|
|
### TeaClient Versions (Archived)
|
|
|
|
| Platform | Format | Version |
|
|
|----------|--------|---------|
|
|
| Linux x64 | .deb installer | 1.5.3-2 |
|
|
| Linux x64 | .tar.gz | 1.5.3-2 |
|
|
| Windows x64 | .exe installer | 1.5.3-2 |
|
|
| Windows x64 | .tar.gz | 1.5.3-2 |
|
|
|
|
### Installation
|
|
|
|
**Server:**
|
|
```bash
|
|
# Download
|
|
wget https://repo.teaspeak.de/server/linux/amd64_stable/TeaSpeak-.tar.gz
|
|
# Extract
|
|
tar -xzf TeaSpeak-*.tar.gz
|
|
# Run
|
|
./teastart.sh start
|
|
```
|
|
|
|
**Docker (Web Client):**
|
|
```bash
|
|
docker pull teaspeak/web
|
|
```
|
|
|
|
### teastart.sh Commands
|
|
|
|
```bash
|
|
./teastart.sh start # Start server
|
|
./teastart.sh stop # Stop server
|
|
./teastart.sh status # Returns 0 if running, 1 if not
|
|
./teastart.sh reload # Reload config
|
|
./teastart.sh execute # Execute command
|
|
```
|
|
|
|
### Supported Architectures
|
|
|
|
- x86_64 (primary)
|
|
- armv32v7 (since 1.4.5, with web client since 1.4.6)
|
|
|
|
---
|
|
|
|
## License Information
|
|
|
|
### TeaWeb (Web Client)
|
|
|
|
**License**: Mozilla Public License 2.0 (MPL-2.0)
|
|
|
|
Key terms:
|
|
- Source code modifications must remain under MPL-2.0
|
|
- Can be combined with other code under different licenses
|
|
- Must provide source for MPL-covered portions
|
|
- No warranty, no liability
|
|
|
|
### TeaMusic (Music Bot Providers)
|
|
|
|
**License**: Not explicitly stated in repository (likely open source based on public GitHub presence)
|
|
|
|
### TeaSpeak Server
|
|
|
|
**License**: Proprietary / Not open source
|
|
|
|
The server binary is distributed freely but is not open source. The issue tracker and documentation are public.
|
|
|
|
### TeaClient (Desktop Client)
|
|
|
|
**License**: Not open source (distributed as binary)
|
|
|
|
---
|
|
|
|
## Known Issues and Limitations
|
|
|
|
### Open Issues (as of compilation)
|
|
|
|
From the GitHub issue tracker (61 open issues on TeaSpeak/TeaSpeak):
|
|
|
|
| Issue | Title | Status |
|
|
|-------|-------|--------|
|
|
| #723 | Arch Linux core dump | Open |
|
|
| #722 | Screen share not working, project unmaintained | Open |
|
|
| #721 | Server crashes | Open |
|
|
| #720 | Video sharing erratic and crashing | Open |
|
|
| #719 | Can't start server on Windows WSL2 | Open |
|
|
| #718 | Failed to parse VP8 header, screen share failed | Open |
|
|
| #717 | Raspberry Pi setup | Open |
|
|
| #716 | Can't download | Open |
|
|
| #715 | None of available versions working | Open |
|
|
| #714 | Server binary for Raspberry Pi (ARM) | Open |
|
|
| #713 | Packet resend failed | Open |
|
|
| #712 | Feature discussion | Open |
|
|
|
|
### Web Client Issues (TeaWeb, 15 open)
|
|
|
|
The TeaWeb repository is archived (read-only since Jul 9, 2025).
|
|
|
|
### Known Limitations
|
|
|
|
1. **Non-OPUS codecs removed** - All Speex and CELT codecs dropped in 1.5.0
|
|
2. **VP8 parsing issues** - Screen sharing can fail with VP8 header parsing errors
|
|
3. **ARM support limited** - Raspberry Pi builds not consistently available
|
|
4. **WebRTC stability** - Some video streaming instability reported
|
|
5. **Project maintenance** - Appears unmaintained since ~2022
|
|
6. **Video performance** - H264 performs poorly with packet loss
|
|
7. **Windows WSL2** - Server startup issues on WSL2
|
|
8. **Music bot queue** - Some features marked as "unimplemented" in documentation
|
|
9. **YouTube-DL dependency** - Requires separate youtube-dl installation
|
|
10. **Snapshot version** - Version 2 introduced breaking changes for music bot data
|
|
|
|
### Critical Fixes (Historical)
|
|
|
|
- **1.4.12-beta4**: Fixed critical server crash due to malformed packets
|
|
- **1.4.12-beta4**: Fixed crash from missing "providers" directory
|
|
- **1.3.26b**: Fixed out-of-order packet sending ("invalid clientID disconnect")
|
|
- **1.3.17b**: Fixed deeply rooted protocol bug (generation ID miscalculation)
|
|
- **1.3.14b**: Fixed voice encryption issue
|
|
|
|
---
|
|
|
|
## Properties Reference
|
|
|
|
### Instance Properties
|
|
|
|
| Property | Type | Default | Description |
|
|
|----------|------|---------|-------------|
|
|
| `serverinstance_database_version` | uint | 0 | Database version |
|
|
| `serverinstance_permissions_version` | uint | 0 | Permissions version |
|
|
| `serverinstance_filetransfer_host` | string | `0.0.0.0,[::]` | File transfer host |
|
|
| `serverinstance_filetransfer_port` | uint | 30303 | File transfer port |
|
|
| `serverinstance_filetransfer_max_connections` | uint | 100 | Max connections |
|
|
| `serverinstance_filetransfer_max_connections_per_ip` | uint | 20 | Max per IP |
|
|
| `serverinstance_query_host` | string | `0.0.0.0,[::]` | Query host |
|
|
| `serverinstance_query_port` | uint | 10101 | Query port |
|
|
| `serverinstance_query_max_connections` | uint | 100 | Max query connections |
|
|
| `serverinstance_query_max_connections_per_ip` | uint | 3 | Max per IP |
|
|
| `serverinstance_max_download_total_bandwidth` | int | -1 | Download bandwidth limit |
|
|
| `serverinstance_max_upload_total_bandwidth` | int | -1 | Upload bandwidth limit |
|
|
| `serverinstance_serverquery_flood_commands` | uint | 3 | Flood commands |
|
|
| `serverinstance_serverquery_flood_time` | uint | 1 | Flood time |
|
|
| `serverinstance_serverquery_ban_time` | uint | 600 | Ban time |
|
|
| `serverinstance_virtual_server_id_index` | uint | 1 | Server ID start index |
|
|
|
|
### Virtual Server Properties
|
|
|
|
| Property | Type | Default | Description |
|
|
|----------|------|---------|-------------|
|
|
| `virtualserver_unique_identifier` | string | - | Server UID |
|
|
| `virtualserver_name` | string | "Another TeaSpeak server..." | Server name |
|
|
| `virtualserver_welcomemessage` | string | "Welcome on another..." | Welcome message |
|
|
| `virtualserver_maxclients` | uint | 120 | Max clients |
|
|
| `virtualserver_password` | string | empty | Server password |
|
|
| `virtualserver_port` | uint | 9987 | Voice port |
|
|
| `virtualserver_host` | string | `0.0.0.0,::` | Bind address |
|
|
| `virtualserver_codec_encryption_mode` | uint | 0 | Encryption mode |
|
|
| `virtualserver_hostmessage` | string | "Welcome" | Host message |
|
|
| `virtualserver_hostbanner_url` | string | empty | Banner URL |
|
|
| `virtualserver_hostbanner_gfx_url` | string | empty | Banner image URL |
|
|
| `virtualserver_hostbanner_gfx_interval` | uint | 0 | Banner rotation interval |
|
|
| `virtualserver_complain_autoban_count` | uint | 5 | Auto-ban threshold |
|
|
| `virtualserver_complain_autoban_time` | uint | 5 | Auto-ban time |
|
|
| `virtualserver_complain_remove_time` | uint | 5 | Complain expiry |
|
|
| `virtualserver_priority_speaker_dimm_modificator` | float | -18 | Priority speaker volume reduction |
|
|
| `virtualserver_antiflood_points_tick_reduce` | uint | 25 | Anti-flood point reduction |
|
|
| `virtualserver_antiflood_points_needed_command_block` | uint | 150 | Command block threshold |
|
|
| `virtualserver_antiflood_points_needed_ip_block` | uint | 300 | IP block threshold |
|
|
| `virtualserver_needed_identity_security_level` | uint | 8 | Required security level |
|
|
| `virtualserver_channel_temp_delete_delay_default` | uint | 60 | Temp channel delete delay |
|
|
| `virtualserver_max_channels` | uint | 1000 | Max channels |
|
|
| `virtualserver_web_host` | string | `0.0.0.0` | Web client host |
|
|
| `virtualserver_web_port` | uint | 0 | Web client port |
|
|
| `virtualserver_default_client_description` | string | empty | Default client description |
|
|
| `virtualserver_default_channel_description` | string | empty | Default channel description |
|
|
| `virtualserver_default_channel_topic` | string | empty | Default channel topic |
|
|
| `virtualserver_music_bot_limit` | int | -1 | Music bot limit |
|
|
| `virtualserver_country_code` | string | XX | Server country code |
|
|
| `virtualserver_reserved_slots` | uint | 0 | Reserved slots |
|
|
|
|
### Client Properties (Key)
|
|
|
|
| Property | Type | Default | Description |
|
|
|----------|------|---------|-------------|
|
|
| `client_unique_identifier` | string | - | Client UID |
|
|
| `client_nickname` | string | - | Nickname |
|
|
| `client_version` | string | "unknown" | Client version |
|
|
| `client_platform` | string | "unknown" | Client platform |
|
|
| `client_input_muted` | bool | 0 | Input muted |
|
|
| `client_output_muted` | bool | 0 | Output muted |
|
|
| `client_is_recording` | bool | 0 | Recording flag |
|
|
| `client_database_id` | uint | 0 | Database ID |
|
|
| `client_away` | bool | 0 | Away status |
|
|
| `client_away_message` | string | empty | Away message |
|
|
| `client_type` | uint | 0 | 0=normal, 1=query |
|
|
| `client_type_exact` | uint | 0 | Exact type |
|
|
| `client_talk_power` | uint | 0 | Talk power |
|
|
| `client_is_talker` | bool | 0 | Talker flag |
|
|
| `client_is_priority_speaker` | bool | 0 | Priority speaker |
|
|
| `client_is_channel_commander` | bool | 0 | Channel commander |
|
|
| `client_badges` | string | empty | Client badges |
|
|
| `client_total_online_time` | uint | 0 | Total online time |
|
|
| `client_month_online_time` | uint | 0 | Monthly online time |
|
|
| `client_meta_data` | string | empty | Metadata |
|
|
| `client_description` | string | empty | Description |
|
|
| `client_country` | string | "TS" | Country code |
|
|
| `client_teaforo_id` | uint | 0 | TeaForum ID |
|
|
| `client_teaforo_name` | string | empty | TeaForum name |
|
|
| `client_owner` | uint | 0 | Owner (for music bots) |
|
|
| `client_bot_type` | uint | 0 | Bot type |
|
|
| `player_state` | uint | 0 | Music player state |
|
|
| `player_volume` | float | 1 | Music player volume |
|
|
| `client_playlist_id` | uint | 0 | Assigned playlist |
|
|
|
|
---
|
|
|
|
## Feature Support Commands
|
|
|
|
### listfeaturesupport
|
|
|
|
The server exposes feature support via `listfeaturesupport`:
|
|
|
|
| Feature Name | Version | Description |
|
|
|--------------|---------|-------------|
|
|
| `error-bulks` | 1 | Bulked command responses |
|
|
| `advanced-channel-chat` | 1 | Cross-channel persistent chat |
|
|
| `log-query` | 1 | Instance log querying |
|
|
| `sidebar-mode` | 1 | Channel sidebar modes |
|
|
|
|
### Bulked Command Responses
|
|
|
|
Supported commands for individual error results:
|
|
- `servergroupaddperm`, `servergroupdelperm`, `servergroupautoaddperm`, `servergroupautodelperm`
|
|
- `channeladdperm`, `channeldelperm`
|
|
- `clientaddperm`, `clientdelperm`
|
|
- `channelclientaddperm`, `channelclientdelperm`
|
|
- `channelgroupaddperm`, `channelgroupdelperm`
|
|
- `playlistaddperm`, `playlistdelperm`, `playlistclientaddperm`, `playlistclientdelperm`
|
|
- `ftdeletefile`, `ftgetfileinfo`
|
|
|
|
---
|
|
|
|
## Additional Command Extensions
|
|
|
|
### Extended Command Parameters
|
|
|
|
| Command | Extra Parameters |
|
|
|---------|-----------------|
|
|
| `channellist` / `channelinfo` | `created_by`, `created_at` |
|
|
| `clientdblist -details` / `clientdbfind -details` / `clientdbinfo` | `client_badges`, `client_version`, `client_platform`, `client_hwid` |
|
|
| `notifyplugincmd` / `notifyconnectioninforequest` | `invokerid` |
|
|
| `sendtextmessage` | `cid` (target channel) |
|
|
| `tokenadd` | `token` (custom value) |
|
|
| `banclient` | Accepts database ID |
|
|
|
|
### New Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `propertylist` | List all properties |
|
|
| `listfeaturesupport` | List supported features |
|
|
| `logquery` | Query server log |
|
|
| `logadd` | Add log entry |
|
|
| `permoverview` | Permission overview |
|
|
| `ftrenamefile` | Rename file |
|
|
| `ftlist` | List file transfers |
|
|
| `ftstop` | Stop file transfer |
|
|
| `conversationhistory` | Chat history |
|
|
| `conversationfetch` | Fetch conversation |
|
|
| `conversationmessagedelete` | Delete chat message |
|
|
| `conversationsetsubscription` | Set chat subscription |
|
|
| `tokenactionlist` | List token actions |
|
|
| `tokenedit` | Edit token |
|
|
|
|
### Removed Commands
|
|
|
|
| Command | Replacement |
|
|
|---------|-------------|
|
|
| `logview` | `logquery` |
|
|
| `musicbotqueuelist` | Playlist system *(removed 1.5.4+)* |
|
|
| `musicbotqueueadd` | Playlist system *(removed 1.5.4+)* |
|
|
| `musicbotqueuereorder` | Playlist system *(removed 1.5.4+)* |
|
|
| `musicbotqueueremove` | Playlist system *(removed 1.5.4+)* |
|
|
|
|
---
|
|
|
|
## Version History Highlights
|
|
|
|
### Major Versions
|
|
|
|
| Version | Key Changes |
|
|
|---------|-------------|
|
|
| **1.5.6** | Latest known version, IP2Location update, config reload fix |
|
|
| **1.5.5** | Video viewer tracking, native client counting |
|
|
| **1.5.4** | Channel admin fix, bulked commands, query group improvements |
|
|
| **1.5.2** | WebRTC STUN enabled by default |
|
|
| **1.5.1** | Token system redesign, web list removal |
|
|
| **1.5.0** | **Video broadcasting**, OPUS-only, WebRTC improvements, sidebar modes |
|
|
| **1.4.22** | Conversation modes (none/public/private) |
|
|
| **1.4.21** | File transfer crash fix, logging properties |
|
|
| **1.4.20** | Web client whisper support, echo tests |
|
|
| **1.4.19** | Raw command support for web client, whisper API |
|
|
| **1.4.18** | Database improvements, compressed snapshots, snapshot deploy improvements |
|
|
| **1.4.17** | YT-DL improvements, file transfer changes |
|
|
| **1.4.16** | Server logging system, `logadd`/`logquery` commands |
|
|
| **1.4.15** | File transfer restructure, bulked responses, `ftrenamefile` |
|
|
| **1.4.14** | Permission checking rework, bulk operations, query newline change |
|
|
| **1.4.13** | Statistics improvements, packet loss calculation, RTO adjustment |
|
|
| **1.4.12** | Connection statistics, UDP packet loss, RTO RFC 6298 |
|
|
| **1.4.11** | WebRTC thread pool, automated rlimit check |
|
|
| **1.4.10** | License renewal system, music bot fixes |
|
|
| **1.4.8** | Playlist client commands, skip/negate fix |
|
|
| **1.4.7** | Packet handling restructure (voice separation) |
|
|
| **1.4.6** | Command API rework, permission system overhaul |
|
|
| **1.4.5** | ARM support, join flood protection |
|
|
| **1.4.4** | Config reload, default certificates |
|
|
| **1.4.3** | libnice bundled, music bot slot counting |
|
|
| **1.4.1** | Music bot properties, country code, IP2Location |
|
|
| **1.4.0** | Server snapshots, conversation system, new permissions |
|
|
| **1.3.26b** | Critical packet ordering fix |
|
|
| **1.3.22b** | Permission system performance improvements |
|
|
| **1.3b** | Music bot overhaul, playlist system introduction |
|
|
|
|
---
|
|
|
|
## References
|
|
|
|
- **TeaSpeak Server Issues**: https://github.com/TeaSpeak/TeaSpeak/issues
|
|
- **TeaWeb Issues**: https://github.com/TeaSpeak/TeaWeb/issues (archived)
|
|
- **TeaMusic Issues**: https://github.com/TeaSpeak/TeaMusic/issues
|
|
- **Archived Website**: https://web.archive.org/web/2024/https://teaspeak.de/
|
|
- **Forum** (archived): https://forum.teaspeak.de/
|
|
- **Docker Hub**: https://hub.docker.com/r/teaspeak/web
|