WSTĘP
Wszystko co robię jest wykonywane na Debianie 10, konto root
Zauważyłem ze w ostatnim czasie dużo osób ma problemy z zainstalowaniem panelu Pterodactyla, ponieważ @DoreK stworzył poradnik który nie ukrywam jest dobry, lecz jest on na wersję 0.7+ a ludze aktualnie bardzo chcą wersję 1.0+
WAŻNE! Wspomogę się i dużo rzeczy skopiuję od @dorek z oto tego poradnika
https://lvlup.rok.ovh/t/instalacja-panelu-pterodactyl-i-uruchomienie-serwera-spigot-na-vps-kvm/8116
W serii moich poradników dowiecie się jak zainstalować:
- Apache2 + MariaDB + PHPMyAdmin + PHP 7.4 + rozszerzenia + SSL + HTTP/2 + Jak dostać ocenę A+ strony na SSLLabs.com
- Pterodactyl Panel + jak włączyć na nim Teamspeak 3
- TS3AudioBoty z panelem
- Status naszych stron lub aplikacji w uptimerobot.com
Jest to drugi poradnik z całej serii, a wiec zabierajmy się za robotę.
INFORMACJE
Poradnik jest aktualny, jednak może zawierać stare linki . Aby upewnić się, że instalujemy najnowszą wersję, polecam kopiować linki z oficjalnej dokumentacji. W przypadku panelu: https://pterodactyl.io/panel/getting_started.html#download-files W przypadku daemona: https://pterodactyl.io/daemon/installing.html#installing-daemon-software
O PANELU
Pterodactyl to darmowy i otwarto-źródłowy panel do zarządzania serwerami gier. W tym poradniku skupimy się na instalacji panelu na VPS (Debian 10, Apache2) oraz uruchomienia serwera Teamspeak 3.
WYMAGANIA
Do uruchomienia panelu Pterodactyl musimy mieć:
- system Ubuntu w 18.04/20.04 lub Debian 8/9/10,
- PHP w wersji 7.3+ z dodatkami cli, openssl, gd, mysql, PDO, mbstring, tokenizer, bcmath, xml lub dom, curl, zip,
- MySQL w wersji 5.7.22 (lub wyższej) lub MariaDB w wersji 10.2 lub wyższej,
- Redis (redis-server),
- Serwer webowy (na przykład domyślnie zainstalowany Apache2),
- curl, tar, unzip, git, composer
INSTALACJA APACHE2, MARIADB, PHP 7,4, PHPMYADMIN
Jak widać wyżej potrzebujemy, serwera Apache2 lub Ngnix, do tego PHP 7,2+ i bazę danych w moim przypadku MariaDB, ale nie będę tego instalował w tym poradniku ponieważ wszystko jest w moim pierwszym poradniku całej serii. https://lvlup.rok.ovh/t/nowy-poradnik-jak-zainstalowac-apache2-mariadb-php7-4-phpmyadmin-ssl-http-2-ocena-a-na-ssllabs/16838
TWORZYMY BAZĘ DANYCH DLA PTERODACTYLA
W tym celu logujemy się do PHPMyAdmin u mnie jest to https://baza.glupikocz.fun Następnie klikamy w przycisk Nowa znajdujący się po lewej stronie:
Teraz wystarczy utworzyć nową bazę danych. Zapamiętaj nazwę, ponieważ będzie ona potrzebna w dalszej części poradnika. Dla przykładu użyłem nazwy panel
Teraz klikamy w Utwórz i gotowe
PRZYGOTOWANIE DO INSTALACJI PTERODACTYLA
Musimy jeszcze doinstalować kilka pakietów
Instalacja pozostałych pakietów również ogranicza się do wykonania prostych komend
add-apt-repository ppa:chris-lea/redis-server -y
apt install curl tar zip unzip git composer redis-server -y
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
INSTALACJA PANELU PTERODACTYLA
Tworzenie katalogu
Musimy pierw utworzyć katalog, w którym panel będzie się znajdować, a następnie się do niego przenieść. Wystarczy wykonać poniższe komendy:
mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
Następnie pobieramy pliki, rozpakowujemy je oraz nadajemy im odpowiednie uprawnienia:
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/download/v1.1.1/panel.tar.gz
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/
Najpierw należy skopiować domyślny plik ustawień środowiska, zainstalować podstawowe zależności, a następnie wygenerować klucz szyfrowania aplikacji.
Wystarczy wykonać poniższe komendy:
cp .env.example .env
composer install --no-dev --optimize-autoloader
Wyskoczy nam coś takiego wpisujemy yes klikamy Enter
Jeśli wszystko się powiedzie zobaczymy
No i wklepujemy ostatnią linijkę
php artisan key:generate --force
Powinno nam wyskoczyć coś takiego
Konfiguracja środowiska
Teraz musimy skonfigurować środowisko. Wykonujemy komendę
php artisan p:environment:setup
pojawi nam się coś takiego:
W tym miejscu wpisujemy swój adres e-mail i zatwierdzamy Enterem. Kolejny etap:
W tym miejscu podajemy adres, na którym ma znajdować się panel. Zakładając, że mamy podpiętą domenę example.com i chcemy, aby , w tym miejscu wpisujemy http://example.com lub (w przypadku gdy posiadamy SSL) - https://example.com i zatwierdzamy enterem. W moim przypadku jest to https://panel.glupikocz.fun
W tym miejscu musimy wpisać strefę czasową. W przypadku Polski będzie to Europe/Warsaw.
Tutaj wpisujemy redis i klikamy enter.
Tutaj również wpisujemy redis.
Tu dokładnie to samo co powyżej - wpisujemy redis i zatwierdzamy enterem
Jeżeli chcemy mieć edytor ustawień oparty na interfejsie, wpisujemy yes, jeśli nie - no. Zalecam yes dla mniej doświadczonych użytkowników.
Serwer redis znajduje się na naszym VPS - w tym przypadku wystarczy wcisnąć enter bez wpisywania niczego
Domyślnie Redis działa lokalnie i nie wymagane jest wprowadzenie hasła. Jeżeli chcemy aby nasza instancja była dostępna dla innych serwerów należy wpisać hasło, w przeciwnym razie wystarczy zostawić to pole puste i zatwierdzić enterem.
Tu ustawiamy port dla Redis. Domyślnie jest to 6379, jeśli nie chcemy go zmieniać, wystarczy wcisnąć enter.
Po wykonaniu powyższych czynności wpisujemy komendę
php artisan p:environment:database
Tu wpisujemy adres do naszej bazy danych. Jeżeli baza znajduje się na naszym VPSie, wystarczy wcisnąć Enter. W moim przypadku klikam Enter ponieważ baza danych znajduje się u mnie na VPS, bo instalowałem ją z mojego pierwszego poradnika.
Tu wpisujemy port bazy danych. Jeżeli port do bazy danych jest domyślny, wystarczy wcisnąć Enter.
Tu wpisujemy nazwę bazy danych dla pterodactyl utworzoną wcześniej, czyli panel
Tutaj należy wpisać nazwę użytkownika do bazy danych. Zaleca się ustawienie innej nazwy niż root ze względu na bezpieczeństwo, aczkolwiek na potrzeby poradnika użyłem konta root.
Tu wpisujemy hasło użytkownika bazy danych i zatwierdzamy Enterem. Proces zakończony.
Teraz musimy wykonać komendę
php artisan p:environment:mail
Zalecane jest używanie serwera SMTP. Jeżeli go posiadamy, klikamy Enter. Jeśli nie, wystarczy wpisać mail i korzystać z wbudowanej funkcji mail w PHP. Jeśli skorzystamy z funkcji mail, pojawi się takie okienko:
Tu należy wpisać adres mailowy, z którego przychodzić będą maile. Zakładając, że pod VPS mamy podpiętą domenę example.com , wpisujemy dowolnanazwa@example.com, na przykład no-reply@example.com. W moim przypadku jest to kontakt@glupikocz.fun
Tutaj należy ustawić nazwę emaili. Jeśli chcemy zachować domyślne ustawienie, klikamy enter, albo tak jak ja znów wpisać ten sam adres email
Tu wybieramy metodę szyfrowania - zalecam wpisać tls i wcisnąć Enter.
Konfiguracja bazy danych
Musimy jeszcze skonfigurować bazę danych, w tym celu użyjmy komendy
php artisan migrate --seed
Pojawi nam się następujące okienko:
Wpisujemy yes i klikamy Enter, czekamy i po chwili zobaczymy
Tworzenie administratora panelu
W tym kroku ustawiamy użytkownika i hasło, które wykorzystywane będzie do zalogowania się do naszego panelu. Wymagania dot. hasła są następujące:
- co najmniej 8 znaków,
- mieszane znaki,
- co najmniej 1 liczba. Aby utworzyć nowego administratora, wykonujemy komendę
php artisan p:user:make
Tu wpisujemy yes i zatwierdzamy Enterem
Tu wpisujemy adres email administratora i klikamy Enter, w moim przypadku jest to kontakt@glupikocz.fun
Tutaj ustawiamy nazwę użytkownika i klikamy Enter
Tutaj wpisujemy imię administratora
Tutaj wpisujemy nazwisko administratora
Tu wpisujemy hasło. Jeżeli wszystko się powiodło, pojawi nam się takie okienko:
Ustawienie uprawnień
Ostatnim krokiem instalacji jest nadanie odpowiednich uprawnień do plików za pomocą poniższych komend:
chown -R www-data:www-data *
Kolejka zdarzeń
Jeżeli chcemy aby aplikacja była wydajniejsza, należy dodać odpowiednie wartości do crontaba, w tym celu wykonujemy komendę
crontab -e
Należy teraz wcisnąć przycisk strzałka w dół i jeżeli dojdziemy do samego końca, dopiszmy wartość
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1
Teraz klikamy Ctrl+X później Y i klikamy Enter
Teraz musimy utworzyć nowe zadanie systemd, aby nasze zadanie kolejkowania działało w tle. Ta kolejka jest odpowiedzialna za wysyłanie wiadomości e-mail i obsługę wielu innych zadań w tle dla panelu Pterodactyl.
W tym celu stworzymy plik pteroq.service
w katalogu /etc/systemd/system
za pomocą komendy
sudo nano /etc/systemd/system/pteroq.service
W tym miejscu należy wkleić:
[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service
[Service]
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
[Install]
WantedBy=multi-user.target
Uwaga: aby wkleić powyższe wartości należy wcisnąć prawy przycisk myszy, a nie wykonać skrót ctrl+v! Powinno to wyglądać tak:
Teraz klikamy Ctrl+X później Y i klikamy Enter
Ostatnim krokiem jest wykonanie komend:
sudo systemctl enable pteroq.service
systemctl start pteroq
Po wszystkim zobaczymy
Teraz jeszcze włączamy serwer Redis i Pterodactyl
sudo systemctl enable --now redis-server
sudo systemctl enable --now pteroq.service
Konfiguracja serwera apache2
Aby Pterodactyl działał jako nasza subdomena, należy zmienić konfigurację serwera apache2. W tym celu modyfikujemy plik pterodactyl.conf za pomocą komendy
sudo nano /etc/apache2/sites-available/pterodactyl.conf
Wklejamy to ale pamiętajcie żeby zmienić na swoją domenę w moim przypadku jest to panel.glupikocz.fun
ServerName panel.glupikocz.fun
ServerAdmin webmaster@localhost
DocumentRoot /var/www/pterodactyl/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Teraz klikamy Ctrl+X później Y i klikamy Enter Następnie należy zmodyfikować plik /etc/apache2/apache2.conf przy użyciu komendy
sudo nano /etc/apache2/apache2.conf
i szukamy linijki
i zmieniamy AllowOverride None na AllowOverride All , następnie wykonujemy kombinację Teraz klikamy Ctrl+X później Y i klikamy Enter
Teraz klikamy Ctrl+X później Y i klikamy Enter Po tych czynnościach należy włączyć naszą subdomenę i zrestartować apache2 za pomocą komendy
a2ensite pterodactyl
sudo service apache2 restart
Teraz jeszcze szybko dodajemy subdomenę w naszym hostingu i zabezpieczamy stronę SSL Wiec wchodzimy na panel klienta w naszym hostingu w moim przypadku jest to home.pl, teraz wchodzimy w zarządzanie DNS naszej domeny i dodajemy rekord A z IPv4 naszego VPS w moim przypadku jest to 34.89.248.181 a w HOST wpisujemy panel jak widać na zdjęciu poniżej.
WAŻNE! Pamiętajcie że czasami trzeba trochę czasu żeby nasza subdomena zaczeła działać
Teraz zabezpieczamy subdomene SSL przez aplikacje Certbot która instalowałem w pierwszym poradniku, no to jazda.
certbot --apache
Teraz wybieramy nasza subdomenę w moim przypadku o numerze 3 i klikamy Enter
Certbot może nas zapytać czy ma wymuszać używanie https, zalecam wybrać 2 i kliknąć Enter
Po wszystkim powinniśmy zobaczyć oto taki wynik
Pierwsze logowanie do panelu
Wchodzimy na nasz adres w moim przypadku jest to adres https://panel.glupikocz.fun. Naszym oczom ukazuje się panel logowania. Wpisujemy tu dane ustawione wcześniej, podczas instalacji.
Tworzenie lokacji
Aby móc utworzyć węzeł (a potem serwer), pierw należy utworzyć lokację. W tym wypadku należy udać się do ustawień teraz szukamy i klikamy po prawej stronie żeby stworzyć nową lokalizacje.
W Short Code wpisujemy krótki identyfikator lokacji, dla przykładu można użyć Polska. W Description wpisujemy opis lokacji, i klikamy Create
Tworzenie węzła
Aby móc dodać serwer, pierw należy utworzyć węzeł. W tym wypadku ponownie udajemy się do ustawień, a następnie z lewej strony wybieramy zakładkę klikamy po prawej stronie żeby stworzyć nowy węzeł.
W Name wpisujemy nazwę węzła (na przykład Node1), w Description wpisujemy opis węzła a w Location wybieramy lokację węzła - na przykład Polska .
FQDN - tu należy wpisać domenę węzła, w przypadku gdy nie posiadamy domeny należy używać adresu IP, jednak wtedy nie możemy korzystać z SSL, w naszym przypadku ustawiamy panel.glupikocz.fun ponieważ my używamy SSL
Communicate Over SSL - jeżeli korzystamy z SSL, należy ustawić na Use SSL Connection, w przeciwnym wypadku - Use HTTP Connection.
Behind Proxy - jeśli korzystamy z proxy na przykład Cloudflare, wybieramy Behind Proxy, w przeciwnym wypadku zostawiamy Not Behind Proxy.
Daemon Server File Directory - wybieramy folder w którym mają znajdować się pliki serwera, najlepiej nic nie zmieniać
Total Memory - ustawiamy całkowitą ilość pamięci dostępnej dla nowych serwerów. W przypadku gdy chcesz zezwolić na alokację wpisz procent, na który chcesz zezwolić (Memory Over-Allocation). Aby wyłączyć sprawdzanie w celu przeniesienia, wpisz -1 w polu. Wpisanie 0 uniemożliwi utworzenie nowych serwerów, jeśli spowoduje przekroczenie limitu przez węzeł. W moim przypadku posiadam VPS który ma 4GB pamięci RAM i ustawiam 0 żebym nie mógł tworzyć nowych serwerów jeśli nie mam dostępnego RAMU
Total Disk Space - ustawiamy całkowitą ilość dysku dostępnej dla nowych serwerów. W przypadku, gdy chcesz zezwolić na alokację wpisz procent, na który chcesz zezwolić (Disk Over-Allocation). Aby wyłączyć sprawdzanie w celu przeniesienia, wpisz -1 w polu. Wpisanie 0 uniemożliwi utworzenie nowych serwerów, jeśli spowoduje przekroczenie limitu przez węzeł. W moim przypadku posiadam VPS który ma 20GB pamięci na dysku i ustawiam 0 żebym nie mógł tworzyć nowych serwerów jeśli nie mam dostępnego miejsca na dysku
Daemon Port i Daemon SFTP Port - Daemon uruchamia własny kontener zarządzania SFTP i nie korzysta z procesu SSHd na głównym serwerze fizycznym. Nie korzystaj z tego samego portu, który został przypisany do procesu SSH serwera fizycznego. Jeśli uruchomisz daemona korzystając z CloudFlare, powinieneś ustawić Daemon Port na 8443, aby umożliwić serwer proxy na SSL.
Po wypełnieniu powyższej konfiguracji naszym oczom ukaże się taka informacja:
Oznacza to, że węzeł został pomyślnie utworzony i jest możliwość automatycznej konfiguracji Daemona w zakładce Configuration (o tym za chwilę) oraz, że należy przydzielić co najmniej jeden adres IP oraz port dla węzła w zakładce Allocation.
Jak widać, jesteśmy już w powyższej zakładce:
Po prawej stronie wystarczy wypłenić pola odpowiednimi wartościami: IP Address - IP naszego VPS’a. IP Alias - alias alokacji - niewymagane, w tym przypadku zostawiam puste. Ports - porty, w przypadku gdy na węźle będzie jeden serwer Teamspeak 3 z portami 9987, 10011, 30033 należy wpisać 9987, 10011, 30033 Po wypełnieniu pól klikamy w .
Pojawia nam się skonfigurowana wcześniej alokacja:
WINGS
Wings to automatyczne zarządzanie serwerami nowej generacji od Pterodactyl.
Instalowanie Dockera
curl -sSL https://get.docker.com/ | CHANNEL=stable bash
Po instalacji zobaczmy to
teraz włączamy dockera
systemctl enable --now docker
Instalujemy Wings
mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings https://github.com/pterodactyl/wings/releases/download/v1.1.1/wings_linux_amd64
chmod u+x /usr/local/bin/wings
I teraz znów przechodzimy na naszą stronę a dokładnie do Ustawień, później Nodes i wchodzimy w Configuration, następnie po prawej stronie klikamy Generate Token
Przycisk wygeneruje nam Token który musimy wkleić w konsolę na naszym VPS
Po tym w naszej konsoli powinniśmy zobaczyć taki wynik, jak widać na końcu piszę Successfully configured wings
Teraz wklepujemy
wings --debug
UWAGA! Może to potrwać chwilkę wiec nie martwcie się że nic się nie dzieję
Po wszystkim powinniśmy zobaczyć taki oto efekt
Teraz zamykamy Wings klikając Ctrl+C i tworzymy automatyczne włączanie się Wings np. po reboocie maszyny
nano /etc/systemd/system/wings.service
i wklejamy tam
[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
[Service]
User=root
WorkingDirectory=/etc/pterodactyl
LimitNOFILE=4096
PIDFile=/var/run/wings/daemon.pid
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=600
[Install]
WantedBy=multi-user.target
Ma to wyglądać w taki sposób
Teraz klikamy Ctrl+X później Y i klikamy Enter
i na końcu zostało na uruchomienie Wings
systemctl enable --now wings
Polecam jeszcze edytować plik /etc/default/grub i dodać do linijki GRUB_CMDLINE_LINUX_DEFAULT="' wartość swapaccount=1
nano /etc/default/grub
Teraz klikamy Ctrl+X później Y i klikamy Enter
i na końcu zostało zrestartować Wings
systemctl restart --now wings
Gotowe Panel już działa
Możemy to sprawdzić wchodząc w Ustawienia i Nodes i przy naszym węźle pojawi się oto takie zielone serduszko
INSTALACJA SERWERA TEAMSPEAK 3
Żeby zainstalować serwer Teamspeak 3 wchodzimy w Ustawienia później w Servers i klikamy
i na końcu klikamy
Server Name - nazwa serwera
Server Owner - właściciel serwera
Server Description - opis serwera
Start Server when installed - włącz serwer po instalacji
Node - wybieramy węzeł, w moim wypadku wcześniej został utworzony węzeł n1
Default Allocation - wybieramy domyślną alokację
Additional Allocation(s) - dodatkowe alokacje - w tym wypadku niewymagane, więc można zostawić puste
Database Limit - limit bazy danych dla serwera, zostaw puste jeśli chcesz aby nie było limitu
Allocation Limit - liczba alokacji, które użytkownik może utworzyć dla tego serwera, zostaw puste jeśli chcesz aby nie było limitu
Backup Limit - Limit backupów na tym serwerze
Memory - przydzielamy pamięć RAM dla serwera
Swap - przydzielamy pamięć Swap dla serwera (0 jeśli nie chcemy korzystać ze swap, -1 jeśli chcemy wyłączyć ograniczenie)
Disk Space - przydzielamy miejsce dysku dla serwera
CPU Limit - jeśli nie chcesz ograniczać użycia procesora, ustaw tą wartość na 0 . Aby określić wartość, pomnóż liczbę rdzeni fizycznych przez 100. Na przykład w przypadku czterordzeniowego procesora (4*100=400) istnieje 400% dostępnego przydziału. Aby ograniczyć serwer do użycia połowy pojedynczego rdzenia, należy ustawić wartość na 50 . Aby umożliwić serwerowi wykorzystanie maksymalnie dwóch rdzeni fizycznych, ustaw wartość na 200 .
CPU Pinning - określa rdzenie procesora, na których może działać ten proces, lub pozostaw puste pole, aby zezwolić na wszystkie rdzenie. Może to być pojedyncza liczba lub lista oddzielona przecinkami. Przykład: 0, 0-1,3 lub 0,1,3,4.
Nest - wybieramy Voice Servers
Egg - wybieramy silnik serwera, w tym przypadku chcemy uruchomić serwer Teamspeak wiec wybieramy Teamspeak3 Server
Data Pack - tu należy wybrać pakiet danych, który zostanie automatycznie zainstalowany po pierwszym uruchomieniu. My nie mamy pakietów danych, więc zostawiamy No Service Pack.
Skip Egg Install Script - jeśli wybrany silnik ma skrypt instalacyjny, będzie on działać podczas instalacji po zainstalowaniu. Jeśli chcesz to pominąć, zaznacz to pole.
Docker Image - domyślny obraz Docker, który będzie używany do uruchomienia serwera. Zostawiamy domyślną wartość.
Startup Command - komenda startowa, jeśli nie wiesz co to jest ani jak z tego skorzystać - zostaw jak jest.
Server Version - Wersja serwera Teamspeak najlepiej zostawić najnowszą wersję.
File Transfer Port - Port transferu plików, najlepiej zostawić 30033.