Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue with Hostname resolve for PSQL #77

Open
computeralex92 opened this issue Mar 13, 2021 · 8 comments
Open

Issue with Hostname resolve for PSQL #77

computeralex92 opened this issue Mar 13, 2021 · 8 comments

Comments

@computeralex92
Copy link

Hello,

after testing the new PSQL support for the Teamspeak Server and the Docker image, i maybe found a bug in the image or Teamspeak itself.
When trying to run PSQL and Teamspeak together in a Docker Swarm, Teamspeak is not able to resolve the hostname for the PSQL.

Warning - name 'query_ip_whitelist' from file /var/run/ts3server/ts3server.ini is deprecated (but understood), please use the new name 'query_ip_allowlist' instead.
Warning - name 'query_ip_blacklist' from file /var/run/ts3server/ts3server.ini is deprecated (but understood), please use the new name 'query_ip_denylist' instead.
2021-03-13 13:13:07.082245|INFO    |ServerLibPriv |   |TeamSpeak 3 Server 3.13.3 (2020-12-16 14:17:05)
2021-03-13 13:13:07.082488|INFO    |ServerLibPriv |   |SystemInformation: Linux 5.10.0-4-amd64 #1 SMP Debian 5.10.19-1 (2021-03-02) x86_64 Binary: 64bit
2021-03-13 13:13:07.082590|INFO    |ServerLibPriv |   |Using hardware aes
2021-03-13 13:13:07.092824|INFO    |DatabaseQuery |   |dbPlugin name:    PostgreSQL plugin, version 1, (c)TeamSpeak Systems GmbH
2021-03-13 13:13:07.092907|INFO    |DatabaseQuery |   |dbPlugin version: 1
2021-03-13 13:13:07.101203|ERROR   |DatabaseQuery |   |make_connection had broken connect could not parse network address "postgresql": Name does not resolve
2021-03-13 13:13:07.101264|CRITICAL|ServerLibPriv |   |Server() DatabaseError

Since the same setup is working perfectly for MariaDB, it seems that the docker container or Teamspeak itself have a issue to resolve correctly the DB.

Here is my config:

version: "3.2"

services:
  postgresql:
    image: postgres:13-alpine
    volumes:
      - /opt/docker/teamspeak/psql/data/:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=PASSWORD
      - POSTGRES_USER=teamspeak
  server:
    image: IMAGE
    ports:
            - 9987:9987/udp
            - 30033:30033
    volumes:
        - "/opt/docker/teamspeak/teamspeak/data:/var/ts3server:rw"
    environment:
      TS3SERVER_DB_PLUGIN: ts3db_postgresql
      TS3SERVER_DB_SQLCREATEPATH: create_postgresql
      TS3SERVER_DB_HOST: postgresql
      TS3SERVER_DB_CONNECTIONS: 50
      TS3SERVER_DB_USER: teamspeak
      TS3SERVER_DB_PASSWORD: "PASSWORD"
      TS3SERVER_DB_NAME: teamspeak
      TS3SERVER_DB_WAITUNTILREADY: 30
      TS3SERVER_LICENSE: accept

Note: The image for the Teamspeak Server is build out of master of this git repo because the images hosted at DockerHub do not contain the required fix for the PSQL Lib yet.

@Hazmi35
Copy link

Hazmi35 commented Jul 30, 2021

Any updates about this issue? having the same problem, do you find a workaround?

@computeralex92
Copy link
Author

Any updates about this issue? having the same problem, do you find a workaround?

Unfortunately no, but I didn't test it with a newer version of the server.

@Dilergore
Copy link

Dilergore commented Jan 6, 2022

This is still an ongoing issue with the latest docker image.

Might be connected to:
gliderlabs/docker-alpine#539

@thetredev
Copy link

thetredev commented Jan 23, 2023

I created a Docker image based on AlmaLinux 9.1 Minimal and the issue persists. I'm starting to believe this has more to do with the TeamSpeak PostgreSQL plugin rather than Alpine Linux.

This gist of it:

FROM almalinux:9.1-minimal-20221201

ARG TEAMSPEAK_RELEASE_URL="https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2"

RUN microdnf install libpq # plus some more, not showing here for brevity

WORKDIR /app

RUN wget -O server.tar.bz2 ${TEAMSPEAK_RELEASE_URL} && \
    tar xfj server.tar.bz2 && \
    rm server.tar.bz2 && \
    mv teamspeak3-server_linux_amd64/* . && \
    rm -rf teamspeak3-server_linux_amd64 && \
    touch .ts3server_license_accepted

EXPOSE 9987/udp

Then starting it with /bin/sh -c "/app/ts3server_minimal_runscript.sh inifile=ts3server.ini" where that ini file as well as my PSQL ini file is mounted into the container. It still can't resolve DNS, whereas ping can...

Actually I'm using this on my Kubernetes cluster, where I have a separate PostgreSQL instance running in its own namespace. My GitLab deployment can connect to it no problem (from another namespace), so the hostname does work 100%. The TeamSpeak error message indicates I've configured it correctly. I'm out of ideas :(

@thetredev
Copy link

Update: works fine with TeamSpeak 5 Beta from https://github.com/TeamSpeak-Systems/ts-native (https://github.com/TeamSpeak-Systems/ts-native/releases/tag/beta-58rc12). I guess they just don't bother supporting PostgreSQL for TeamSpeak 3 anymore.

@thetredev
Copy link

Update 2: Of course the TeamSpeak 3 client doesn't work with a TeamSpeak 5 server. And the TeamSpeak 5 server requires a user account "for beta access". Guess we have to wait for the official TeamSpeak 5 release then or switch to MariaDB for TeamSpeak 3... Falling back to TeamSpeak 3 with SQLite for now.

@qknight
Copy link

qknight commented Jan 25, 2023

@computeralex92 maybe one of these two things helps you:

in your docker-compose.yaml you need to add this to each service:

  postgresql:
    image: postgres:13-alpine
    restart: on-failure
    expose:
      - "5432"
    networks:
      ts-net:
  ...
  teamspeak:
    image: some_url
    networks:
      ts-net:
   ...

networks:
  ts-net:

And then you should be able to connect the two containers. And you have to make sure that the postgresql service is up before you try to connect to it.

@thetredev
Copy link

@qknight that would work if the DNS resolution worked in the TeamSpeak PostgreSQL plugin. Sadly it doesn't.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants