WindowsMay 28, 2026 11 views

Installer un serveur TeamSpeak sur VPS Windows

Installer un serveur TeamSpeak sur VPS Windows

Quick Summary: 5 steps to have a functional TeamSpeak server in less than 20 minutes:

  1. Connect to your VPS via RDP

  2. Download TeamSpeak Server 3.13.7 (64-bit) from teamspeak.com/en/downloads

  3. Extract to C:\TeamSpeak3-Server\, launch ts3server.exe, immediately save the privilege key and ServerQuery credentials

  4. Open ports 9987/UDP, 10011/TCP, 30033/TCP, 41144/TCP in the Windows firewall

  5. Create a scheduled task for automatic startup

# PowerShell command: open the 4 ports at once
New-NetFirewallRule -DisplayName "TS3 Voice" -Direction Inbound -Protocol UDP -LocalPort 9987 -Action Allow
New-NetFirewallRule -DisplayName "TS3 Query" -Direction Inbound -Protocol TCP -LocalPort 10011 -Action Allow
New-NetFirewallRule -DisplayName "TS3 FileTransfer" -Direction Inbound -Protocol TCP -LocalPort 30033 -Action Allow
New-NetFirewallRule -DisplayName "TS3 TSDNS" -Direction Inbound -Protocol TCP -LocalPort 41144 -Action Allow

Prerequisites

Recommended VPS Specs based on the number of users

Concurrent Users

RAM

vCPU

Bandwidth

Up to 10

1 GB

1 vCPU

100 Mbps

Up to 50

2 GB

2 vCPU

200 Mbps

Up to 100

4 GB

2 vCPU

500 Mbps

Up to 200

8 GB

4 vCPU

1 Gbps

TeamSpeak is lightweight. A VPS with 2 GB of RAM is sufficient for the vast majority of gaming communities.

Ports to open

Port

Protocol

Usage

9987

UDP

Voice traffic (main port)

10011

TCP

ServerQuery (administration)

30033

TCP

File transfer

41144

TCP

TSDNS (internal DNS resolution)

Required OS

Windows Server 2019 or 2022 (64-bit). Windows Server 2016 also works, but 2022 is recommended for security.


Step 1: RDP Connection to your Windows VPS

First, connect to your VPS via Remote Desktop (RDP).

On Windows 10/11: Win + R → type mstsc → enter your VPS IP, username, and password.

Ensure you are connected as Administrator: this is essential for creating firewall rules and scheduled tasks.


Step 2: Download TeamSpeak Server

Go to the official page: teamspeak.com/en/downloads

Select Server 64-bit for Windows. The current version is 3.13.7. Download the .zip file and verify the SHA256 hash provided on the page.

TeamSpeak 3 vs TeamSpeak 5: which to choose in 2026?

Criterion

TeamSpeak 3

TeamSpeak 5

Server Stability

✅ Mature, proven

⚠️ Still evolving

Permission System

✅ Complete and documented

⚠️ Incomplete features

Plugins & Bots

✅ Rich ecosystem

❌ Limited support

Client Interface

Classic interface

Modern interface

RAM Consumption

Very low

Higher

Self-hosting

✅ Recommended

⚠️ In development

Our recommendation in 2026: TeamSpeak 3. The TS5 server does not yet offer the maturity needed for serious hosting. TS3 remains the reference for creating a stable and manageable TeamSpeak server.


Step 3: Install and configure the server

Extracting files

Open PowerShell as Administrator and run:

# Create the installation directory
New-Item -ItemType Directory -Path "C:\TeamSpeak3-Server" -Force

# Extract the archive (adjust the path according to your download)
Expand-Archive -Path "$env:USERPROFILE\Downloads\teamspeak3-server_win64-3.13.7.zip" -DestinationPath "C:\TeamSpeak3-Server" -Force

# Move files if necessary (depending on the ZIP structure)
# Files must be directly in C:\TeamSpeak3-Server\

First launch

# Change to the directory
Set-Location "C:\TeamSpeak3-Server"

# Start the server
.\ts3server.exe

A console window opens. Read it carefully: it displays the initial connection information.

⚠️ SAVE THIS INFORMATION IMMEDIATELY

🔴 CRITICAL ALERT: This data appears only ONCE

------------------------------------------------------------------
ServerAdmin privilege key created, please use it to gain
serveradmin rights for your virtualserver. please
also check the doc/privilegekey_guide.txt for details.

 token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
------------------------------------------------------------------

Copy and save immediately:

  • The token (privilege key): without it, you will not be able to manage your server

  • The ServerQuery login (serveradmin) and its automatically generated password

Store them in a password manager (Bitwarden, KeePass). If you lose the privilege key, recovery via ServerQuery is possible but tedious.

Accepting the license

On the first launch, a license_accepted file is automatically created if you accept via the console. You can also create this file manually:

# Accept the license manually
New-Item -ItemType File -Path "C:\TeamSpeak3-Server\license_accepted" -Force

Step 4: Configure the Windows firewall

Open PowerShell as Administrator and paste this complete block:

# Rule 1: Main voice port (UDP 9987)
New-NetFirewallRule `
  -DisplayName "TeamSpeak3 - Voice (UDP 9987)" `
  -Direction Inbound `
  -Protocol UDP `
  -LocalPort 9987 `
  -Action Allow `
  -Profile Any

# Rule 2: ServerQuery (TCP 10011)
New-NetFirewallRule `
  -DisplayName "TeamSpeak3 - ServerQuery (TCP 10011)" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 10011 `
  -Action Allow `
  -Profile Any

# Rule 3: File transfer (TCP 30033)
New-NetFirewallRule `
  -DisplayName "TeamSpeak3 - FileTransfer (TCP 30033)" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 30033 `
  -Action Allow `
  -Profile Any

# Rule 4: TSDNS (TCP 41144)
New-NetFirewallRule `
  -DisplayName "TeamSpeak3 - TSDNS (TCP 41144)" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 41144 `
  -Action Allow `
  -Profile Any

Write-Host "✅ 4 firewall rules created successfully" -ForegroundColor Green

Check that the rules are created:

Get-NetFirewallRule | Where-Object { $_.DisplayName -like "TeamSpeak3*" } | Select-Object DisplayName, Enabled, Direction

Note: If your host provides a network firewall (in addition to the Windows firewall), be sure to open the same ports from your client area.


Step 5: Automatic startup via Task Scheduler

This is the step that most guides skimp on. Here is the complete and reliable method.

Create the startup script

# Create the startup script
$scriptContent = @'
# TeamSpeak 3 startup script
$tsPath = "C:\TeamSpeak3-Server"
$tsExe  = "$tsPath\ts3server.exe"

# Check if the server is already running
$running = Get-Process -Name "ts3server" -ErrorAction SilentlyContinue

if (-not $running) {
    Start-Process -FilePath $tsExe `
                  -WorkingDirectory $tsPath `
                  -ArgumentList "inifile=ts3server.ini" `
                  -WindowStyle Hidden
    Write-EventLog -LogName Application -Source "TeamSpeak3" -EventId 1000 `
                   -EntryType Information -Message "TeamSpeak 3 Server started" `
                   -ErrorAction SilentlyContinue
}
'@

New-Item -ItemType Directory -Path "C:\Scripts" -Force | Out-Null
$scriptContent | Out-File -FilePath "C:\Scripts\Start-TeamSpeak3.ps1" -Encoding UTF8
Write-Host "✅ Script created: C:\Scripts\Start-TeamSpeak3.ps1" -ForegroundColor Green

Create the scheduled task

# Task parameters
$taskName    = "TeamSpeak3-AutoStart"
$scriptPath  = "C:\Scripts\Start-TeamSpeak3.ps1"
$description = "Automatic startup of TeamSpeak 3 server on boot"

# Action: launch PowerShell with the script
$action = New-ScheduledTaskAction `
    -Execute "powershell.exe" `
    -Argument "-NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File `"$scriptPath`""

# Trigger: at system startup, with a 30-second delay
$trigger = New-ScheduledTaskTrigger -AtStartup
$trigger.Delay = "PT30S"  # 30 seconds delay (important for stability)

# Settings: run even without an open session, with SYSTEM rights
$settings = New-ScheduledTaskSettingsSet `
    -ExecutionTimeLimit (New-TimeSpan -Hours 0) `
    -RestartCount 3 `
    -RestartInterval (New-TimeSpan -Minutes 1)

$principal = New-ScheduledTaskPrincipal `
    -UserId "SYSTEM" `
    -LogonType ServiceAccount `
    -RunLevel Highest

# Register the task
Register-ScheduledTask `
    -TaskName $taskName `
    -Action $action `
    -Trigger $trigger `
    -Settings $settings `
    -Principal $principal `
    -Description $description `
    -Force

Write-Host "✅ Scheduled task '$taskName' created successfully" -ForegroundColor Green

Check functionality

# Check that the task exists
Get-ScheduledTask -TaskName "TeamSpeak3-AutoStart" | Select-Object TaskName, State

# Test manually (simulate a startup)
Start-ScheduledTask -TaskName "TeamSpeak3-AutoStart"

# Wait 5 seconds then check the process
Start-Sleep -Seconds 5
Get-Process -Name "ts3server" -ErrorAction SilentlyContinue

Restart your VPS and check that ts3server.exe appears in the Task Manager after boot.


Step 6: Initial connection and configuration

Download the TeamSpeak client

Download the client from teamspeak.com/en/downloadsClient section.

Connect to the server

  1. Open the TeamSpeak client

  2. Connections → Connect (or Ctrl+S)

  3. Address: YOUR_VPS_IP:9987

  4. Nickname: your username

  5. Click on Connect

Use the privilege key (admin token)

On the first connection, a window will prompt you to enter a token. Paste your privilege key saved in step 3. You will gain Server Admin rights.

If the window does not appear automatically: Permissions → Use privilege token.

Basic server settings

Right-click on the server name → Edit virtual server:

  • Server name: choose a clear name for your community

  • Message of the Day (MOTD): message displayed upon connection

  • Maximum slots: 32 with the free license, up to 1024 with a Gamer license

  • Password: optional, to restrict access


Step 7: Advanced permission system

The permission system of TeamSpeak 3 is powerful but often misunderstood. Here’s how to approach it.

Enable advanced mode

In the client: Tools → Options → Application → check Advanced mode. Without this, you only have access to a fraction of the permissions.

Group hierarchy

TeamSpeak distinguishes between two types of groups:

Server groups: apply across the entire server:

Group

Typical Role

Server Admin

Full control of the server

Moderator

Kick, ban, move

Member

Access to standard channels

Guest

Limited access, read-only

Channel groups: apply only within a channel:

Group

Typical Role

Channel Admin

Manages sub-channels and local permissions

Channel Operator

Can kick members from the channel

Normal

Speaks and listens

Create a custom group

  1. Permissions → Server groups

  2. Right-click → Add group

  3. Name it (e.g., "VIP", "Streamer")

  4. Check the desired permissions (e.g., b_channel_create_permanent to create permanent channels)

Assign permissions by channel

  1. Right-click on a channel → Edit channel

  2. Permissions tab: set the values i_channel_needed_join_power to restrict access

  3. Or use Permissions → Channel permissions for granular control

Practical tip: use i_channel_join_power on the group side and i_channel_needed_join_power on the channel side. If the group value is lower than the channel value, access is denied.


Step 8: Advanced security

Hosting a TeamSpeak server exposes your VPS. These steps go beyond just the firewall.

1. Change the ServerQuery password

The default password is randomly generated, but it’s better to change it. Connect via telnet or a ServerQuery client:

telnet VPS_IP 10011
login serveradmin YOUR_CURRENT_PASSWORD
clientupdate client_login_password=NEW_STRONG_PASSWORD

Or via PowerShell with the TS3 module:

# Connect to ServerQuery via TCP
$client = New-Object System.Net.Sockets.TcpClient("127.0.0.1", 10011)
$stream = $client.GetStream()
# Then send the login + clientupdate commands

2. Disable unused ports

If you are not using file transfer, disable port 30033:

# Disable the file transfer rule
Set-NetFirewallRule -DisplayName "TeamSpeak3 - FileTransfer (TCP 30033)" -Enabled False

3. Enable channel encryption (Opus Voice codec)

In the client, right-click on each channel → Edit channelCodec: choose Opus Voice and enable encryption. Opus offers the best quality/compression and supports end-to-end encryption.

4. Limit connections by IP

Via ServerQuery:

serveredit virtualserver_max_clients_per_identity=3

This limits to 3 simultaneous connections per identity, reducing the impact of floods.

5. Ban malicious IPs

# Via ServerQuery
banclient clid=CLIENT_ID banreason=Spam time=3600
# or ban an IP directly
banadd ip=1.2.3.4 banreason=Flood time=0

time=0 = permanent ban.

6. Security checklist: 6 points

  • ServerQuery password changed (different from the generated password)

  • Port 10011 (ServerQuery) accessible only from your IP if possible

  • Opus Voice codec + encryption enabled on sensitive channels

  • Connection limit per configured IP

  • Server password enabled if the community is private

  • Logs enabled and regularly checked (C:\TeamSpeak3-Server\logs\)


Step 9: Backups and Restoration

Critical Files to Backup

File

Content

Priority

ts3server.sqlitedb

Complete database (users, channels, permissions)

🔴 Critical

licensekey.dat

Your TeamSpeak license

🔴 Critical

query_ip_allowlist.txt

Allowed IPs for ServerQuery

🟡 Important

query_ip_denylist.txt

Banned ServerQuery IPs

🟡 Important

ts3server.ini

Server configuration

🟡 Important

Automated Backup PowerShell Script

# Script : C:\Scripts\Backup-TeamSpeak3.ps1
# Daily backup with rotation for 7 days

$sourceDir  = "C:\TeamSpeak3-Server"
$backupRoot = "C:\Backups\TeamSpeak3"
$date       = Get-Date -Format "yyyy-MM-dd_HH-mm"
$backupDir  = "$backupRoot\$date"
$maxBackups = 7

# Create the backup directory
New-Item -ItemType Directory -Path $backupDir -Force | Out-Null

# Files to backup
$filesToBackup = @(
    "ts3server.sqlitedb",
    "licensekey.dat",
    "query_ip_allowlist.txt",
    "query_ip_denylist.txt",
    "ts3server.ini"
)

foreach ($file in $filesToBackup) {
    $src = Join-Path $sourceDir $file
    if (Test-Path $src) {
        Copy-Item -Path $src -Destination $backupDir -Force
        Write-Host "✅ Backed up: $file" -ForegroundColor Green
    } else {
        Write-Host "⚠️  File not found: $file" -ForegroundColor Yellow
    }
}

# Rotation: delete backups older than 7 days
$allBackups = Get-ChildItem -Path $backupRoot -Directory | Sort-Object CreationTime
if ($allBackups.Count -gt $maxBackups) {
    $toDelete = $allBackups | Select-Object -First ($allBackups.Count - $maxBackups)
    foreach ($dir in $toDelete) {
        Remove-Item -Path $dir.FullName -Recurse -Force
        Write-Host "🗑️  Old backup deleted: $($dir.Name)" -ForegroundColor Gray
    }
}

Write-Host "✅ Backup completed: $backupDir" -ForegroundColor Cyan

Schedule Daily Backup

$backupAction = New-ScheduledTaskAction `
    -Execute "powershell.exe" `
    -Argument "-NonInteractive -ExecutionPolicy Bypass -File `"C:\Scripts\Backup-TeamSpeak3.ps1`""

$backupTrigger = New-ScheduledTaskTrigger -Daily -At "03:00"

Register-ScheduledTask `
    -TaskName "TeamSpeak3-DailyBackup" `
    -Action $backupAction `
    -Trigger $backupTrigger `
    -Principal (New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount) `
    -Description "Daily TeamSpeak 3 Backup" `
    -Force

Write-Host "✅ Daily backup scheduled at 03:00" -ForegroundColor Green

Restoration Procedure

# 1. Stop the TeamSpeak server
Stop-Process -Name "ts3server" -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 3

# 2. Set the backup to restore (adjust the date)
$backupToRestore = "C:\Backups\TeamSpeak3\2026-05-27_03-00"
$targetDir       = "C:\TeamSpeak3-Server"

# 3. Restore the files
$filesToRestore = @("ts3server.sqlitedb", "licensekey.dat", "query_ip_allowlist.txt", "ts3server.ini")
foreach ($file in $filesToRestore) {
    $src = Join-Path $backupToRestore $file
    if (Test-Path $src) {
        Copy-Item -Path $src -Destination $targetDir -Force
        Write-Host "✅ Restored: $file" -ForegroundColor Green
    }
}

# 4. Restart the server
Start-Process -FilePath "$targetDir\ts3server.exe" -WorkingDirectory $targetDir
Write-Host "✅ TeamSpeak 3 server restarted" -ForegroundColor Cyan

Step 10: Update TeamSpeak Server

Never replace binaries while running. Follow this procedure.

Manual Procedure

# Step 1: Stop the server
Stop-Process -Name "ts3server" -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 5
Write-Host "✅ Server stopped"

# Step 2: Backup before update
& "C:\Scripts\Backup-TeamSpeak3.ps1"

# Step 3: Download the new version
$newVersion = "3.13.7"  # Update this number
$downloadUrl = "https://files.teamspeak-services.com/releases/server/$newVersion/teamspeak3-server_win64-$newVersion.zip"
$zipPath = "$env:TEMP\ts3server_update.zip"

Invoke-WebRequest -Uri $downloadUrl -OutFile $zipPath
Write-Host "✅ New version downloaded"

# Step 4: Extract to a temporary folder
$tempDir = "$env:TEMP\ts3server_new"
Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force

# Step 5: Copy new binaries (without overwriting the DB and config)
$filesToUpdate = @("ts3server.exe", "*.dll", "redist")
foreach ($pattern in $filesToUpdate) {
    Copy-Item -Path "$tempDir\teamspeak3-server_win64\$pattern" `
              -Destination "C:\TeamSpeak3-Server\" `
              -Recurse -Force -ErrorAction SilentlyContinue
}
Write-Host "✅ Binaries updated"

# Step 6: Clean up and restart
Remove-Item $zipPath, $tempDir -Recurse -Force
Start-Process -FilePath "C:\TeamSpeak3-Server\ts3server.exe" -WorkingDirectory "C:\TeamSpeak3-Server"
Write-Host "✅ Server restarted with version $newVersion" -ForegroundColor Green

Tip: check the official release notes before each update to verify configuration changes.


Step 11: DNS Configuration (Custom Domain)

Instead of sharing a raw IP (185.x.x.x:9987), configure a domain like ts.mydomain.com.

Why use a DNS SRV record?

  • Your users connect with ts.mydomain.com without typing the port

  • If you change IP, just update the DNS: no need to redistribute a new address

  • Professional appearance for your community

Create DNS Records

Step 1: A Record (in your DNS manager):

Type : A
Name  : ts
Value : YOUR_VPS_IP
TTL  : 3600

Step 2: SRV Record:

Type     : SRV
Name      : _ts3._udp.ts.mydomain.com
Priority : 0
Weight    : 5
Port     : 9987
Target    : ts.mydomain.com
TTL      : 3600

At most registrars (OVH, Namecheap, Cloudflare), the form looks like this:

Field

Value

Service

_ts3

Protocol

_udp

Name

ts.mydomain.com

Priority

0

Weight

5

Port

9987

Target

ts.mydomain.com

After DNS propagation (a few minutes to 24 hours), your users can connect with ts.mydomain.com without specifying the port.

Check Resolution

# Check the SRV record
Resolve-DnsName -Name "_ts3._udp.ts.mydomain.com" -Type SRV

Troubleshooting: 6 Common Errors

1. "failed to bind network interface": port already in use

The port 9987 is occupied by another process.

# Identify the process using port 9987
netstat -ano | findstr :9987

# Find the process name from the PID
Get-Process -Id PID_NUMBER

Stop the conflicting process or change the TeamSpeak port in ts3server.ini:

default_voice_port=9988

2. The server does not start after reboot

The scheduled task is misconfigured. Check:

# Check the task status
Get-ScheduledTask -TaskName "TeamSpeak3-AutoStart" | Select-Object State, LastRunTime, LastTaskResult

# LastTaskResult = 0 → success | other value → error
# Restart manually to test
Start-ScheduledTask -TaskName "TeamSpeak3-AutoStart"

Common cause: the PowerShell execution policy blocks the script. Check with Get-ExecutionPolicy and ensure that the -ExecutionPolicy Bypass parameter is included in the task action.

3. Unable to connect from outside

Two firewalls to check:

  1. Windows Firewall: ensure that the rules created in step 4 are enabled

    Get-NetFirewallRule | Where-Object { $_.DisplayName -like "TeamSpeak3*" } | Select-Object DisplayName, Enabled
    
  2. Host provider network firewall: log in to your client area and check that ports 9987/UDP, 10011/TCP, 30033/TCP are open for inbound traffic.

4. "You are banned": IP mistakenly banned

Via ServerQuery (telnet on port 10011):

login serveradmin YOUR_PASSWORD
use sid=1
banlist
bandel banid=BAN_ID

If your own IP is banned and you can no longer connect, add your IP to query_ip_allowlist.txt and restart the server.

5. Lost privilege key

If you have lost the admin token, retrieve it via ServerQuery:

login serveradmin YOUR_PASSWORD
use sid=1
tokenadd tokentype=0 tokenid1=6 tokenid2=0

This generates a new token for the Server Admin group (group ID 6 by default).

6. Corrupted database

# 1. Stop the server
Stop-Process -Name "ts3server" -Force

# 2. Rename the corrupted DB
Rename-Item "C:\TeamSpeak3-Server\ts3server.sqlitedb" "ts3server.sqlitedb.corrupt"

# 3. Restore from the latest backup
$latestBackup = Get-ChildItem "C:\Backups\TeamSpeak3" -Directory | Sort-Object CreationTime -Descending | Select-Object -First 1
Copy-Item "$($latestBackup.FullName)\ts3server.sqlitedb" "C:\TeamSpeak3-Server\"

# 4. Restart
Start-Process -FilePath "C:\TeamSpeak3-Server\ts3server.exe" -WorkingDirectory "C:\TeamSpeak3-Server"

If you do not have a backup, the server will recreate an empty database on the next startup: you will lose channels, groups, and users, but the server will become functional again.


FAQ

TeamSpeak 3 or TeamSpeak 5 in 2026?

TeamSpeak 3 remains the recommended choice for a self-hosted server in 2026. TS5 offers a more modern interface, but the permission system and administration tools are still incomplete on the server side. For a serious gaming community, stick with TS3: it's stable, lightweight, and the ecosystem of bots/plugins is mature.

How many simultaneous users on a 4 GB RAM VPS?

A 4 GB RAM VPS with 2 vCPUs comfortably handles 100 simultaneous users with TeamSpeak 3. The TS3 server consumes about 30-50 MB of RAM for 50 active users. Bandwidth is the real limiting factor: expect ~10 Kbps per user in Opus Voice, or ~1 Mbps for 100 people.

Is TeamSpeak free for private use?

Yes. The free license (Non-Profit License) covers up to 32 simultaneous users and 1 virtual server, at no cost. For more slots, the Gamer License (up to 1024 slots) is available upon request from TeamSpeak. Check teamspeak.com/features/licensing for details.

How to change the default port (9987)?

Edit ts3server.ini in C:\TeamSpeak3-Server\:

default_voice_port=9988

Then update the firewall rule:

Remove-NetFirewallRule -DisplayName "TeamSpeak3 - Voice (UDP 9987)"
New-NetFirewallRule -DisplayName "TeamSpeak3 - Voice (UDP 9988)" -Direction Inbound -Protocol UDP -LocalPort 9988 -Action Allow

And update your DNS SRV record if you have one.

Can TeamSpeak and FiveM run on the same VPS?

Yes, as long as you have enough resources. FiveM consumes much more than TeamSpeak: expect at least 8 GB of RAM and 4 vCPUs to run both comfortably. The ports do not overlap (FiveM uses 30120, TeamSpeak 9987), so there is no network conflict.

How to migrate an existing TeamSpeak server to a new VPS?

  1. Backup critical files on the old server: ts3server.sqlitedb, licensekey.dat, ts3server.ini, query_ip_allowlist.txt

  2. Install TeamSpeak Server on the new VPS (steps 1 to 5 of this guide)

  3. Stop the new server before copying the files

  4. Copy the backed-up files to C:\TeamSpeak3-Server\ on the new VPS

  5. Restart the server: all your channels, groups, and users are restored

  6. Update your A DNS record to point to the new IP


Useful Sources