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
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
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"
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 -