Overview
Keeping your TeamSpeak 6 Server up to date ensures you have the latest features, security patches, and bug fixes. This guide covers update procedures for both Docker and binary installations.
TeamSpeak 6 is currently in beta. Update procedures may change as the product evolves toward stable release.
Before You Update
Create a backup
Always backup before updating. See Backup & Restore for detailed instructions.# Quick backup command
docker run --rm -v teamspeak-data:/data -v $(pwd):/backup alpine \
tar czf /backup/teamspeak-backup-pre-update-$(date +%Y%m%d).tar.gz -C /data .
Review configuration changes
Check if the new version requires configuration updates:
- New parameters in CONFIG.md
- Deprecated settings
- Database schema changes
Plan maintenance window
Schedule the update during low-usage periods:
- Notify users in advance
- Estimated downtime: 5-15 minutes
- Have rollback plan ready
Test updates in a non-production environment first if possible. Never update directly in production without a backup.
Docker Updates
Update Using Docker Compose
Pull the latest image
# Pull latest version
docker compose pull teamspeak
# Or pull specific version
docker pull teamspeaksystems/teamspeak6-server:1.0.0
Stop and remove the container
# Stop and remove container (data is preserved in volume)
docker compose down
Using docker compose down removes the container but keeps volumes intact. Your data is safe.
Start with new image
# Start with updated image
docker compose up -d
Verify the update
# Check server logs
docker logs -f teamspeak-server
# Verify version
docker exec teamspeak-server ./tsserver --version
# Check container status
docker ps
Update Using Docker Run
Stop and remove the container
docker stop teamspeak-server
docker rm teamspeak-server
Pull the latest image
docker pull teamspeaksystems/teamspeak6-server:latest
Start with updated image
docker run -d \
--name teamspeak-server \
-p 9987:9987/udp \
-p 30033:30033 \
-e TSSERVER_LICENSE_ACCEPTED=accept \
-v teamspeak-data:/var/tsserver/ \
teamspeaksystems/teamspeak6-server:latest
Verify the update
docker logs -f teamspeak-server
Automated Docker Updates
Use Watchtower to automatically update containers:services:
teamspeak:
image: teamspeaksystems/teamspeak6-server:latest
container_name: teamspeak-server
restart: unless-stopped
# ... other configuration ...
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_POLL_INTERVAL=86400 # Check daily
- WATCHTOWER_INCLUDE_RESTARTING=true
command: teamspeak-server
Automatic updates can cause unexpected downtime. Use with caution in production environments.
Create an update script for controlled updates:#!/bin/bash
set -e
CONTAINER_NAME="teamspeak-server"
IMAGE="teamspeaksystems/teamspeak6-server:latest"
BACKUP_DIR="/backups/teamspeak"
echo "[$(date)] Starting TeamSpeak update..."
# Create pre-update backup
echo "[$(date)] Creating backup..."
./backup-teamspeak.sh
# Pull new image
echo "[$(date)] Pulling latest image..."
docker pull "${IMAGE}"
# Stop and remove container
echo "[$(date)] Stopping container..."
docker stop "${CONTAINER_NAME}"
docker rm "${CONTAINER_NAME}"
# Start with new image
echo "[$(date)] Starting updated container..."
docker compose up -d
# Wait for startup
sleep 10
# Verify
echo "[$(date)] Verifying update..."
if docker ps | grep -q "${CONTAINER_NAME}"; then
echo "[$(date)] Update successful!"
docker logs --tail 50 "${CONTAINER_NAME}"
else
echo "[$(date)] Update failed! Rolling back..."
# Rollback logic here
exit 1
fi
chmod +x update-teamspeak.sh
./update-teamspeak.sh
Binary Installation Updates
Linux Update Procedure
Download the latest version
# Download from official source
cd /tmp
wget https://files.teamspeak-services.com/releases/server/6.x.x/teamspeak6-server_linux_amd64-6.x.x.tar.gz
# Verify checksum (if provided)
sha256sum teamspeak6-server_linux_amd64-6.x.x.tar.gz
Stop the server
# If using systemd
sudo systemctl stop teamspeak
# Or if running directly
pkill tsserver
# Verify server stopped
ps aux | grep tsserver
Backup current installation
# Create backup
cd /opt
tar czf teamspeak-backup-pre-update-$(date +%Y%m%d).tar.gz teamspeak/
# Or rename current directory
mv teamspeak teamspeak-old-$(date +%Y%m%d)
Extract new version
# Extract to new directory
cd /opt
tar xzf /tmp/teamspeak6-server_linux_amd64-6.x.x.tar.gz
mv teamspeak6-server_linux_amd64 teamspeak-new
Migrate data and configuration
# Copy data files from old installation
cp teamspeak-old/*.sqlite teamspeak-new/
cp teamspeak-old/licensekey.dat teamspeak-new/
cp teamspeak-old/tsserver.yaml teamspeak-new/
# Copy file storage
cp -r teamspeak-old/files teamspeak-new/
# Copy SSH keys (if using SSH query)
cp teamspeak-old/ssh_host_rsa_key* teamspeak-new/
# Set permissions
chown -R tsserver:tsserver teamspeak-new/
chmod +x teamspeak-new/tsserver
# Replace old with new
rm -rf teamspeak
mv teamspeak-new teamspeak
Review configuration
# Check for new configuration options
./teamspeak/tsserver --help | less
# Compare with CONFIG.md
# Update tsserver.yaml if needed
Start the server
# If using systemd
sudo systemctl start teamspeak
sudo systemctl status teamspeak
# Or run directly
cd /opt/teamspeak
./tsserver --accept-license
Verify the update
# Check version
./tsserver --version
# Monitor logs
tail -f /opt/teamspeak/logs/ts6server_*.log
# Test connectivity
# Connect with TeamSpeak client
Keep the old installation directory for a few days in case you need to rollback. Remove it once you’re confident the update is stable.
Windows Update Procedure
Download the latest version
Stop the server
# If running as service
Stop-Service TeamSpeak6
# Or stop the process
Stop-Process -Name tsserver
# Verify stopped
Get-Process tsserver -ErrorAction SilentlyContinue
Backup current installation
# Create backup
Compress-Archive -Path "C:\TeamSpeak" `
-DestinationPath "C:\Backups\teamspeak-backup-$(Get-Date -Format 'yyyyMMdd').zip"
# Or rename current directory
Rename-Item "C:\TeamSpeak" "C:\TeamSpeak-old-$(Get-Date -Format 'yyyyMMdd')"
Install new version
# Copy new files
Copy-Item -Path "C:\Temp\teamspeak6-server\*" `
-Destination "C:\TeamSpeak-new" -Recurse
Migrate data
# Copy database and configuration
Copy-Item "C:\TeamSpeak-old\*.sqlite" "C:\TeamSpeak-new\"
Copy-Item "C:\TeamSpeak-old\licensekey.dat" "C:\TeamSpeak-new\"
Copy-Item "C:\TeamSpeak-old\tsserver.yaml" "C:\TeamSpeak-new\"
# Copy file storage
Copy-Item "C:\TeamSpeak-old\files" "C:\TeamSpeak-new\files" -Recurse
# Rename directories
Rename-Item "C:\TeamSpeak-new" "C:\TeamSpeak"
Start the server
# If using service
Start-Service TeamSpeak6
# Or start directly
Start-Process -FilePath "C:\TeamSpeak\tsserver.exe"
Verify the update
# Check version
& "C:\TeamSpeak\tsserver.exe" --version
# Check service status
Get-Service TeamSpeak6
# View logs
Get-Content "C:\TeamSpeak\logs\ts6server_*.log" -Tail 50 -Wait
Database Updates
Automatic Schema Updates
TeamSpeak 6 Server automatically applies database schema updates on startup:
# Monitor logs for database updates
tail -f logs/ts6server_*.log | grep -i "database\|migration\|schema"
Database migrations run automatically. Large databases may take several minutes to update during the first startup after an update.
Manual Database Backup Before Update
For critical installations, backup the database separately:
sqlite3 /var/tsserver/ts6server.sqlite \
".backup /backups/ts6server-pre-update-$(date +%Y%m%d).sqlite"
mysqldump -u teamspeak -p teamspeak \
--single-transaction \
> teamspeak-db-pre-update-$(date +%Y%m%d).sql
Rollback Procedures
If an update fails or causes issues:
Docker Rollback
Stop the updated container
Restore previous image
services:
teamspeak:
image: teamspeaksystems/teamspeak6-server:1.0.0 # Previous version
# ... rest of configuration ...
Restore backup if needed
# If database was corrupted
docker run --rm -v teamspeak-data:/data -v $(pwd):/backup alpine \
sh -c "rm -rf /data/* && tar xzf /backup/teamspeak-backup-pre-update-YYYYMMDD.tar.gz -C /data"
Start with previous version
Binary Rollback
Stop the server
sudo systemctl stop teamspeak
Restore previous version
# Remove new version
rm -rf /opt/teamspeak
# Restore old version
mv /opt/teamspeak-old-YYYYMMDD /opt/teamspeak
# Or extract from backup
tar xzf teamspeak-backup-pre-update-YYYYMMDD.tar.gz -C /opt/
Restore database if needed
# SQLite
cp /backups/ts6server-pre-update-YYYYMMDD.sqlite \
/opt/teamspeak/ts6server.sqlite
# MariaDB
mysql -u root -p teamspeak < teamspeak-db-pre-update-YYYYMMDD.sql
Start the server
sudo systemctl start teamspeak
Rollbacks may fail if the new version made irreversible database changes. Always test updates in a non-production environment first.
Beta License Updates
During the beta period, the 32-slot license is renewed every two months. No manual action is required.
The server will automatically fetch the updated license:
# Check license status in logs
grep -i "license" logs/ts6server_*.log
# Verify license file
ls -lh licensekey.dat
If license renewal fails:
- Check network connectivity
- Verify firewall allows outbound connections
- Restart the server
- Contact TeamSpeak support if issues persist
Version Pinning
For production stability, pin specific versions:
Docker Version Pinning
services:
teamspeak:
image: teamspeaksystems/teamspeak6-server:1.0.0 # Specific version
# Do not use :latest in production
Update Policy
Establish an update policy:
- Security updates: Apply within 48 hours
- Feature updates: Test for 1-2 weeks before production
- Major versions: Test for 4+ weeks before production
Post-Update Checklist
After updating, verify:
# Quick verification script
#!/bin/bash
echo "Server status:"
docker ps | grep teamspeak-server || systemctl status teamspeak
echo "\nRecent logs:"
docker logs --tail 50 teamspeak-server 2>&1 | grep -i "error\|warning" || \
tail -50 /opt/teamspeak/logs/ts6server_*.log | grep -i "error\|warning"
echo "\nPort connectivity:"
nc -zuv localhost 9987
nc -zv localhost 30033
echo "\nUpdate verification complete."
Troubleshooting Updates
Common Update Issues
| Issue | Cause | Solution |
|---|
| Server won’t start | Configuration incompatibility | Review CONFIG.md for changes, update tsserver.yaml |
| Database errors | Failed migration | Restore from backup, check logs for specific error |
| Permission denied | Wrong file ownership | Fix with chown -R tsserver:tsserver /opt/teamspeak |
| Port binding failed | Old process still running | Kill process: pkill -9 tsserver |
| Clients can’t connect | Version mismatch | Ensure clients are updated to compatible version |
Getting Help
If you encounter issues:
- Check the TeamSpeak Community Forum
- Review GitHub Issues
- Collect logs and system information:
# Create support bundle
tar czf teamspeak-support-$(date +%Y%m%d).tar.gz \
logs/ \
tsserver.yaml \
docker-compose.yaml
- Report issues on GitHub with:
- Server version (before and after update)
- Operating system and version
- Installation method (Docker/binary)
- Error messages from logs
- Steps to reproduce
For urgent issues during the beta period, contact TeamSpeak support through official channels.