Upload Icons with ts3 server in docker

I’m having an issue with the icons using the docker version.

Here is my docker-compose file.

version: '3.1'
services:
  teamspeak:
    image: teamspeak
    restart: always
    ports:
      - 9988:9987/udp
      - 10012:10011
      - 30034:30033
    volumes:
      - ./teamspeak3:/var/ts3server/
    environment:
      TS3SERVER_DB_PLUGIN: ts3db_mariadb
      TS3SERVER_DB_SQLCREATEPATH: create_mariadb
      TS3SERVER_DB_HOST: db
      TS3SERVER_DB_USER: root
      TS3SERVER_DB_PASSWORD: password
      TS3SERVER_DB_NAME: teamspeak
      TS3SERVER_DB_WAITUNTILREADY: 30
      TS3SERVER_LICENSE: accept
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: teamspeak
    volumes:
      - ./db:/var/lib/mysql

When I go to upload icons, it seems that it works. I get no errors or any message in the server logs. So I close the icons dialogue box, then go back to it and the icons are not there.

After selecting the Icon to upload

After closing the icons dialogue box and opening again

The icons look like they are uploaded to the server in /files/virtualserver_1/internal/icons but they are all 0kb.

Icons in the server files

Has anyone run across this before?

Of course it won’t work. You changed the file transfer port but don’t provide a config informing the server of that change.
But why do you use non-default ports in general. Keep in mind that without a license you may not host multiple servers. And with a license you can host all servers as virtual servers in the same container.

Assuming that this is your only server and you simply want to not run it on the default ports :wink: you will need to create a config file and mount that in the container as there is no way top configure this via the env variables.

1 Like

The non-standard ports are outside the container. Inside the container they are standard.

The files do get transferred it just they appear corrupted or something on the server, they should be 1kb, but they are 0kb.

Exactly the ports are non standard outside.
When you connect with the client to port 9988 it created a connection using the TeamSpeak protocol.
When you then try to upload a file the client asks the server for the file transfer port, receives 30033 as that is what’s configured on the server. The server will create the file but without content as the content will come from the tcp connection.
But because 30033 is the wrong public port the data will never reach the server.
As I said. You need to tell the TeamSpeak server that the file transfer port is not the default one.

1 Like

Ahh ok I see now. Thank you for your help!