commit a248a413fb0415c03cee34200b0541a2fdaa0d90 Author: shim_ Date: Tue Jun 7 23:08:29 2016 +0200 initial commit diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..79369f0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM frolvlad/alpine-glibc + +ENV TS_VERSION=3.0.12.4 +ENV ARCH=amd64 +ENV CHECKSUM=6bb0e8c8974fa5739b90e1806687128342b3ab36510944f576942e67df7a1bd9 + +ENV TS3DB_TYPE=SQLITE + +RUN apk update && \ + apk add --no-cache bash wget tar coreutils +RUN wget --no-check-certificate -O /usr/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.0.1/dumb-init_1.0.1_amd64 + +RUN chmod +x /usr/bin/dumb-init && \ + chmod +r /etc/murmur.conf && \ + mkdir -p /tpl + +COPY init.sh /usr/bin/init.sh +COPY ts3server.ini /tpl/ts3server.ini +COPY ts3db_mysql.ini /tpl/ts3db_mysql.ini + +VOLUME ["/opt/teamspeak3"] +EXPOSE 10011 9987/udp + +CMD ["/usr/bin/dumb-init","/usr/bin/init.sh"] diff --git a/init.sh b/init.sh new file mode 100755 index 0000000..53f8105 --- /dev/null +++ b/init.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +function write_config { + echo "$1"'='"$2" >> $CONFIG +} + +#value key alt +function write_config_if_else { + if [ ! -z "$1" ]; then + write_config "$2" "$1" + else + if [ ! -z "$3" ]; then write_config "$2" "$3"; fi + fi +} + +function wait_for_mysql { + if [ ! -z "$TS3DB_TYPE" ] && [ "$TS3DB_TYPE" == "MYSQL" ]; then + PORT=3306 + if [ ! -z "$TS3DB_PORT" ] ; then PORT="$TS3DB_PORT" ;fi + while ! nc -q 1 $TS3DB_HOST $PORT < /dev/null; do sleep 3; done + fi + sleep 3 +} + +function main_config { + CONFIG="$CONF_DIR/ts3server.ini" + cp /tpl/$(basename $CONFIG) $CONFIG + if [ ! -z "$TS3DB_TYPE" ] && [ "$TS3DB_TYPE" == "MYSQL" ]; then + write_config 'dbplugin' 'ts3db_mysql' + write_config 'dbpluginparameter' "$CONF_DIR/ts3db_mysql.ini" + fi +} + +function db_config { + CONFIG="$CONF_DIR/ts3db_mysql.ini" + if [ ! -z "$TS3DB_TYPE" ] && [ "$TS3DB_TYPE" == "MYSQL" ]; then + cp /tpl/$(basename $CONFIG) $CONFIG + write_config_if_else $TS3DB_HOST 'localhost' 'host' + write_config_if_else $TS3DB_PORT '3306' 'port' + write_config_if_else $TS3DB_USER 'root' 'username' + write_config_if_else $TS3DB_PASS '' 'password' + write_config_if_else $TS3DB_NAME 'ts3' 'database' + fi +} + +SERVER_DIR=/opt/teamspeak3 +CONF_DIR=$SERVER_DIR + +if [ ! -d $SERVER_DIR ]; then + echo Starting Initialization + URL=http://dl.4players.de/ts/releases/$TS_VERSION/teamspeak3-server_linux_$ARCH-$TS_VERSION.tar.bz2 + TMPFILE=/tmp/server.tar.bz2 + wget $URL -O $TMPFILE + if [ ! -z "$CHECKSUM" ]; then + ACTUAL=$(sha256sum $TMPFILE | cut -d " " -f1) + if [ "$ACTUAL" != "$CHECKSUM" ]; then + echo "Checksum mismatch!" + echo "set CHECKSUM to \"\" to ignore or" + echo "update CHECKSUM according to https://www.teamspeak.com/downloads" + exit 1 + fi + fi + tar -xjvf $TMPFILE -C /opt + mv /opt/teamspeak3-server_linux_$ARCH /opt/teamspeak3 + rm -f $TMPFILE + main_config + db_config + +fi +wait_for_mysql +$SERVER_DIR/ts3server_minimal_runscript.sh inifile=$CONF_DIR/ts3server.ini diff --git a/ts3db_mysql.ini b/ts3db_mysql.ini new file mode 100644 index 0000000..c68a898 --- /dev/null +++ b/ts3db_mysql.ini @@ -0,0 +1,2 @@ +[config] +socket= diff --git a/ts3server.ini b/ts3server.ini new file mode 100644 index 0000000..c70da3a --- /dev/null +++ b/ts3server.ini @@ -0,0 +1,12 @@ +machine_id= +default_voice_port=9987 +voice_ip=0.0.0.0 +liscensepath= +filetransfer_port=30033 +filetransfer_ip=0.0.0.0 +query_port=10011 +query_ip=0.0.0.0 +dbsqlpath=sql/ +dbsqlcreatepath=create_mysql/ +logpath=logs +logquerycommands=1