I migrated my server to an ARM64 based instance because those are cheaper and deliver the level of performance I need.
Apple and others offer ARM based Laptops since a few years, the Multiarch support is wide spread these days and common software is available for the ARM architecture as well.
While migrating I realized that the Teamspeak3 server is not available for ARM. I checked the forum and saw that the common solution is to install and use a community Docker image. I didn't want to do that, since this image contains binaries I can't verify (e.g. libraries) and I also don't use Containers on that server.
The solution was to install the needed x86 libraries via the package manager (Debian 12 Multiarch) and start Teamspeak using QEMU for userspace.
# create user
useradd -m teamspeak
cd /home/teamspeak/
# install teamspeak
wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_x86-3.13.7.tar.bz2
tar xfj teamspeak3-server_linux_x86-3.13.7.tar.bz2
chown teamspeak: teamspeak3-server_linux_x86 -R
cd teamspeak3-server_linux_x86
touch .ts3server_license_accepted
# install x86 libs and qemu
dpkg --add-architecture i386
apt-get update
apt-get install libc6:i386 libstdc++6:i386 qemu-user
# run teamspeak one time and save passwords and tokens
# stop the server with ctrl+c
sudo -u teamspeak qemu-i386 -B 0x8000 ./ts3server
Once this is done, the startup can be automated using my example init script or a systemd unit file. The startup options for the Teamspeak server are part of the init script, check it and change as needed.
# install init script
wget -O /etc/init.d/teamspeak3 https://d0m.me/wp-content/uploads/2024/07/teamspeak3.txt
chmod 755 /etc/init.d/teamspeak3
systemctl daemon-reload
update-rc.d teamspeak3 defaults 20
/etc/init.d/teamspeak3 start
Because of QEMU the startup of Teamspeak consumes a lot of CPU time and takes a while. Once the Teamspeak server is running the CPU load should be pretty low.