Instalacja serwera TeamSpeak 3 + Bot muzyczny + Baza MySQL Debian 8 / Ubuntu 14.04 / Ubuntu 16.04

sinus_ts1

UPDATE:

PORADNIK ZOSTAŁ ZAKTUALIZOWANY DNIA 26.04.2017,

z dostosowaniem do najnowszycg wersji oprogramownaia, serwera TS3, serwera www oraz SibusBota.

 

Dziś odświeżam temat instalacji serwera TeamSpeak 3 na systemach typu Debian 8 / Ubuntu 14.04 / Ubuntu 16.04 opartego o bazie danych MariaDB i interfejsie PHPMyAdmin.

Jako wisienka na torcie – bot muzyczny SinusBot

Jako serwer WWW użyjemy lekkiego serwera tengine (jakiś czas temu o nim pisałem) oraz dla Ubuntu 16.04 serwer nginx w wersji 1.10.0, bazy danych MariaDB w wersji 10.0.x lub 5.5.x oraz zabezpieczymy wszystko zaporą firewall UFW.

Dopełnieniem wszystkiego będą skrypty zabezpieczające przed “crashem” serwera TeamSpeak 3, bota muzycznego z obsługą skryptów, YouTube, Radia Internetowego oraz odtwarzacza MP3 – SinusBot jako wisienka na torcie – skrypt wykonujący codzienną kopię zapasową oraz skryptu typu AntyCrash.

1. Przygotowanie systemu i instalacja niezbędnych pakietów

apt update
apt upgrade -y
apt install nano ufw htop curl wget fontconfig-config fonts-dejavu-core \
libfontconfig1 screen libgd3 libjbig0 liblua5.1-0 libperl5* libtiff5 libxpm4 \
libxslt1.1 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib zip \
python-minimal python2.7 python2.7-minimal fcgiwrap ssl-cert libglib2.0-0 \
x11vnc xvfb libxcursor1 ca-certificates bzip2 python libossp-uuid16 unzip sudo -y

update-ca-certificates

2. Instalacja serwera www, bazy danych i interfejsu phpmyadmin

Tengine:

Debian 8

wget http://kompilacje.linuxiarz.pl/Debian_8/Tengine-2.2.0/nginx-common_2-tengine-linuxiarz.pl_all.deb
wget http://kompilacje.linuxiarz.pl/Debian_8/Tengine-2.2.0/nginx-doc_2-tengine-linuxiarz.pl_all.deb
wget http://kompilacje.linuxiarz.pl/Debian_8/Tengine-2.2.0/nginx-extras_2-tengine-linuxiarz.pl_amd64.deb
wget http://kompilacje.linuxiarz.pl/Debian_8/Tengine-2.2.0/nginx_2-tengine-linuxiarz.pl_all.deb
dpkg -i nginx-common_2-tengine*.deb nginx_2-tengine*.deb nginx-extras_2-tengine*.deb nginx-doc_2-tengine*.deb
service nginx stop

Ubuntu 14.04 LTS

wget http://kompilacje.linuxiarz.pl/Ubuntu_14.04_LTS/Tengine-2.2.0/nginx-common_2-tengine-linuxiarz.pl_all.deb
wget http://kompilacje.linuxiarz.pl/Ubuntu_14.04_LTS/Tengine-2.2.0/nginx-extras_2-tengine-linuxiarz.pl_amd64.deb
wget http://kompilacje.linuxiarz.pl/Ubuntu_14.04_LTS/Tengine-2.2.0/nginx_2-tengine-linuxiarz.pl_all.deb
wget http://kompilacje.linuxiarz.pl/Ubuntu_14.04_LTS/Tengine-2.2.0/nginx-doc_2-tengine-linuxiarz.pl_all.deb
dpkg -i nginx-common_2-tengine*.deb nginx_2-tengine*.deb nginx-extras_2-tengine*.deb nginx-doc_2-tengine*.deb
service nginx stop

nginx:

Ubuntu 16.04 LTS

wget http://kompilacje.linuxiarz.pl/Ubuntu_16.04_LTS/nginx-1.12.0-linuxiarz.pl-%5Bopenssl-1.1.0e%5D/nginx-common_1.12.0-linuxiarz.pl_all.deb
wget http://kompilacje.linuxiarz.pl/Ubuntu_16.04_LTS/nginx-1.12.0-linuxiarz.pl-%5Bopenssl-1.1.0e%5D/nginx-doc_1.12.0-linuxiarz.pl_all.deb
wget http://kompilacje.linuxiarz.pl/Ubuntu_16.04_LTS/nginx-1.12.0-linuxiarz.pl-%5Bopenssl-1.1.0e%5D/nginx-extras_1.12.0-linuxiarz.pl_amd64.deb
wget http://kompilacje.linuxiarz.pl/Ubuntu_16.04_LTS/nginx-1.12.0-linuxiarz.pl-%5Bopenssl-1.1.0e%5D/nginx_1.12.0-linuxiarz.pl_all.deb
dpkg -i nginx-*.deb 
systemctl stop nginx.service

2.2 PHP

Debian 8 / Ubuntu 14.04

apt install php5-fpm php5-mysql php5-mcrypt -y

Ubuntu 16.04 LTS

apt-get -y install php7.0-fpm php7.0-mysql php7.0-curl php7.0-gd php7.0-intl \
php7.0-pspell php7.0-mbstring php-gettext php-pear php-imagick php7.0-imap php7.0-mcrypt

2.3 PHPMyAdmin

cd /opt/; wget https://files.phpmyadmin.net/phpMyAdmin/4.7.0/phpMyAdmin-4.7.0-all-languages.zip
unzip php*
mv phpMyAdmin-4.7.0-all-languages pma
mkdir -p /var/lib/php/session
chmod 4777 /var/lib/php/session
rm STABLE*
rm -rf /etc/nginx/conf.d/*
wget http://pliki.linuxiarz.pl/05-2017/pma.conf -O /etc/nginx/conf.d/pma.conf 
systemctl start nginx.service

2.4 Baza danych MariaDB

apt install mariadb-server mariadb-client -y
service mysql start

Konfigracja hasła dla konta root:

mysql_secure_installation

W systemie Ubuntu 16.04 LTS wykonaj jeszcze:

echo "update user set plugin='' where User='root'; flush privileges;" | mysql --defaults-file=/etc/mysql/debian.cnf mysql

3. Serwer TeamSpeak 3
3.1 Instalacja

adduser teamspeak3 --disabled-login -q
echo "teamspeak3 ALL=NOPASSWD: ALL" >>  /etc/sudoers
su teamspeak3
cd $HOME
wget http://dl.4players.de/ts/releases/3.0.13.6/teamspeak3-server_linux_amd64-3.0.13.6.tar.bz2
tar xvf teamspeak3-server_linux_amd64-3.0.13.6.tar.bz2
rm teamspeak3-server_linux_amd64-3.0.13.6.tar.bz2
mv /home/teamspeak3/teamspeak3-server_linux_amd64 /home/teamspeak3/server/

3.2 Tworzenie bazy danych dla serwera TeamSpeak 3

Wydajemy polecenie aby zalogować sie do bazy MySQL

mysql -u root -p

I tworzymy bazę danych dla serwera:

CREATE DATABASE teamspeak3;
CREATE USER 'teamspeak3'@'localhost' IDENTIFIED BY 'ZMIEN_HASŁO';
GRANT ALL PRIVILEGES ON teamspeak3.* TO teamspeak3@localhost IDENTIFIED BY 'ZMIEN_HASŁO';
quit

Lub za pomocą interfejsu PHPMyAdmin
Wywołujemy w przeglądarce:
http://ip-servera:81

db1
db2
db3

3.2 Konfiguracja serwera TeamSpeak 3

cd /home/teamspeak3/server
sudo ln -s /home/teamspeak3/server/redist/libmariadb.so.2 /lib/x86_64-linux-gnu/libmariadb.so.2
cp redist/libmariadb.so.2 ./

Na początek tworzymy plik ts3server.ini

touch /home/teamspeak3/server/ts3server.ini
nano /home/teamspeak3/server/ts3server.ini
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
query_ip_whitelist=query_ip_whitelist.txt
query_ip_blacklist=query_ip_blacklist.txt
dbplugin=ts3db_mariadb
dbpluginparameter=ts3db_mariadb.ini
dbsqlpath=sql/
dbsqlcreatepath=create_mariadb/
dblogkeepdays=90
logpath=logs
logquerycommands=0
dbclientkeepdays=30

Zapisujemy CTRL + O, wychodzimy CTRL + X

oraz plik: ts3db_mariadb.ini

touch /home/teamspeak3/server/ts3db_mariadb.ini
nano /home/teamspeak3/server/ts3db_mariadb.ini
[config]
host=localhost
port=3306
username=teamspeak3
password=RE7TMzug97o2SaD6 ## TWOJE HASŁO !!
database=teamspeak3
socket=/var/run/mysqld/mysqld.sock

3.3 Pierwsze uruchomienie serwera TeamSpeak 3

cd /home/teamspeak3/server
ldd libts3db_mariadb.so
./ts3server_minimal_runscript.sh start inifile=ts3server.ini

Zanotuj sobie Dane dostepowe do “server query” oraz token administratora do stworzonej instancji.
Po pierwszym uruchomieniu warto zalogowac sie do swojego serwera, aby przypisać sobie uprawnienia.

Po zalogowaniu zamknij proces ( CTRL + C ) i przejdź do kolejnego kroku.

3.4 Skrypt uruchamiający serwer przy starcie

sudo wget http://pliki.linuxiarz.pl/04-2016/ts3 -O /etc/init.d/ts3
sudo chmod +x /etc/init.d/ts3
sudo update-rc.d ts3 defaults
sudo service ts3 start

3.5 Anty-Crash serwera TeamSpeak3

wget http://pliki.linuxiarz.pl/04-2016/antycrash.sh -O /home/teamspeak3/server/antycrash.sh
chmod +x /home/teamspeak3/server/antycrash.sh
(sudo crontab -u teamspeak3 -l; echo "* * * * * bash /home/teamspeak3/server/antycrash.sh >> /dev/null") | crontab -u teamspeak3 -

4. Konfiguracja zapory

sudo ufw allow ssh
sudo ufw allow outgoing
sudo ufw allow 9987/udp
sudo ufw allow 10011/tcp
sudo ufw allow 81/tcp
sudo ufw allow www
sudo ufw allow 30033/tcp
sudo ufw enable

5. Instalacja bota muzycznego SinusBot (wersja na dzień 26.04.2017 -> 0.9.18-8499d2c)

cd $HOME
mkdir bot; cd bot
wget https://www.sinusbot.com/pre/sinusbot-0.9.18-8499d2c.tar.bz2
tar -xjf sinu*
wget http://pliki.linuxiarz.pl/04-2016/config.ini
wget http://dl.4players.de/ts/releases/3.0.19.4/TeamSpeak3-Client-linux_amd64-3.0.19.4.run
chmod 0755 TeamSpeak3-Client-linux_amd64-*.run
./TeamSpeak3-Client-linux_amd64-*.run

Zaakceptuj regulamin klienta TeamSpeak3

reg

cp plugin/libsoundbot_plugin.so /home/teamspeak3/bot/TeamSpeak3-Client-linux_amd64/plugins
curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /home/teamspeak3/bot/youtube-dl
chmod +x /home/teamspeak3/bot/youtube-dl
sudo wget http://pliki.linuxiarz.pl/04-2016/bot -O /etc/init.d/bot
sudo chmod +x /etc/init.d/bot
chmod 777 -R /home/teamspeak3/bot/
Możesz wylogować się z użytkownika "teamspeak3" i wykonać polecenia już jako root.
exit
sudo update-rc.d bot defaults
sudo wget http://pliki.linuxiarz.pl/04-2016/bot.conf -O /etc/nginx/conf.d/bot.conf
sudo service bot start 
sudo service nginx restart

Dostep do bota – wywołujesz w przeglądarce – swój adres IP -> http://IP

Domyślne dane logowania to: znajdziesz w logach bota, wywołasz je:

cat /home/teamspeak3/bot/bot.log | grep "Generating"

 

SInusBot

6. Antycrash bota SinusBot

wget http://pliki.linuxiarz.pl/04-2016/antycrash-bot.sh -O /home/teamspeak3/bot/antycrash.sh
chmod +x /home/teamspeak3/bot/antycrash.sh
(sudo crontab -u root -l; echo "* * * * * bash /home/teamspeak3/bot/antycrash.sh >> /dev/null") | crontab -u root -

7. Cykliczne kopie zapasowe serwera TeamSpeak3

wget http://pliki.linuxiarz.pl/04-2016/ts-backup.sh -O /home/teamspeak3/ts-backup.sh
chmod +x /home/teamspeak3/ts-backup.sh
mkdir -p /home/teamspeak3/backup-ts3
(sudo crontab -u teamspeak3 -l; echo "@daily sudo bash /home/teamspeak3/ts-backup.sh >> /dev/null") | crontab -u teamspeak3 -

Działanie serwera z botem 🙂
2016-04-16 14_25_14-TeamSpeak 3