Instalacja panelu Pterodactyl v1.1.1 + SSL

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

W serii moich poradników dowiecie się jak zainstalować:

  1. Apache2 + MariaDB + PHPMyAdmin + PHP 7.4 + rozszerzenia + SSL + HTTP/2 + Jak dostać ocenę A+ strony na SSLLabs.com
  2. Pterodactyl Panel + jak włączyć na nim Teamspeak 3
  3. TS3AudioBoty z panelem
  4. Status naszych stron lub aplikacji w uptimerobot.com

Jest to drugi poradnik z całej serii, a wiec zabierajmy się za robotę.

image

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

image

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.

image

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

image

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.

image

TWORZYMY BAZĘ DANYCH DLA PTERODACTYLA

W tym celu logujemy się do PHPMyAdmin u mnie jest to https://baza.glupikocz.fun
image
Następnie klikamy w przycisk Nowa znajdujący się po lewej stronie:
image

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
image

Teraz klikamy w Utwórz i gotowe

image

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

image

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

image

Jeśli wszystko się powiedzie zobaczymy

image

No i wklepujemy ostatnią linijkę

php artisan key:generate --force

Powinno nam wyskoczyć coś takiego

image

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.

image

Tutaj wpisujemy redis i klikamy enter.

image

Tutaj również wpisujemy redis.

image

Tu dokładnie to samo co powyżej - wpisujemy redis i zatwierdzamy enterem

image

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.

image

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.

image

Tu wpisujemy port bazy danych. Jeżeli port do bazy danych jest domyślny, wystarczy wcisnąć Enter.

image

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.

image

Tu wpisujemy hasło użytkownika bazy danych i zatwierdzamy Enterem. Proces zakończony.

Teraz musimy wykonać komendę

php artisan p:environment:mail

image

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:

image

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

image

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

image

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:

image

Wpisujemy yes i klikamy Enter, czekamy i po chwili zobaczymy

image

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

image

Tu wpisujemy yes i zatwierdzamy Enterem

image

Tu wpisujemy adres email administratora i klikamy Enter, w moim przypadku jest to kontakt@glupikocz.fun

image

Tutaj ustawiamy nazwę użytkownika i klikamy Enter

image

Tutaj wpisujemy imię administratora

image

Tutaj wpisujemy nazwisko administratora

Tu wpisujemy hasło.
Jeżeli wszystko się powiodło, pojawi nam się takie okienko:

image

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

<VirtualHost *:80>

	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

</VirtualHost>

image

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

image

i zmieniamy AllowOverride None na AllowOverride All , następnie wykonujemy kombinację Teraz klikamy Ctrl+X później Y i klikamy Enter

image

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

image

Certbot może nas zapytać czy ma wymuszać używanie https, zalecam wybrać 2 i kliknąć Enter

image

Po wszystkim powinniśmy zobaczyć oto taki wynik

image

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.

image

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ń image teraz szukamy image i klikamy po prawej stronie image żeby stworzyć nową lokalizacje.

image

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ę image
klikamy po prawej stronie image ż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.

image

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 image.

image

Pojawia nam się skonfigurowana wcześniej alokacja:

image

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

image

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

image

Przycisk wygeneruje nam Token który musimy wkleić w konsolę na naszym VPS

image

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

image

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

image

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 image

INSTALACJA SERWERA TEAMSPEAK 3

Żeby zainstalować serwer Teamspeak 3 wchodzimy w Ustawienia później w Servers
i klikamy image



i na końcu klikamy

image

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.

Serwer po chwili zostanie utworzony

Poradnik miesiąca: listopad 2020

13 polubień

Piękny i przejrzysty poradnik :heart:

Polecam każdemu!

1 polubienie

@Glupikocz mógł byś dodać do poradnika jak dodać kolejny węzeł do istniejącego panelu ??
Węzeł z innego vpsa

To jest na tyle łatwe że chyba nie ma potrzeby ale dodam to do poradnika.
Wystarczy że do domeny dodasz panel2.glupikocz.fun i adres IP drugiego VPS, później podczas dodawania nowego node wpisujesz panel2.glupikocz.fun

i zmieniasz porty na jakieś co nie używasz w moim przypadku dałem o 1 więcej czyli 8081 i 2023

jak widać działa

1 polubienie

Hmm, a może 0.7, bo chyba nie ma 7.0 …

Mój błąd, aktualnie nie mogę tego zmienić musiał by jakiś moderator

Zmienione :slight_smile: Włączyłem także tryb wiki, powinieneś móc edytować cały post

nadal nie mogę :stuck_out_tongue:

Ok, czyli to działa dla ludzi tl3 +

Proponuje dodać jeszcze informacje jak zaktualizować panel (cd /var/www/pterodactyl && php artisan p:upgrade, od wersji 1.3.2 - starsze według tej instrukcji) i jak zaktualizować wingsy.

Witajcie, wszystkie osoby używające pterodactyl panelu zapraszam na dc Discord
na którym pomagamy w rozwiązaniu problemów, instalacji panelu oraz proponujemy co powinno pojawić się w panelu.

To samo oferuje oficjalny discord pterodactyla.

2 polubienia

Owszem, z tym że u nas po polsku, a są osoby które z angielskim mają problemy.

Jest 21 wiek, w którym istnieją translatory takie jak google translator czy jeszcze lepszy deepl.
Wystarczy przez chrome uruchomić kartę i kliknąć prawym przetłumacz stronę.

zaproszenie nie działa do dc