This repository has been archived on 2025-03-19. You can view files and clone it, but cannot push or open issues or pull requests.
PowerTools/server/handler/apps/pterodactyl.js

143 lines
7.0 KiB
JavaScript

module.exports = {
variables: {
folder: "/var/www/pterodactyl",
domain: "cloud.example.com",
german: "Ja",
mail: "unknown@exmaple.com",
pass: "admin"
},
steps: [
{
description: "Zugriff prüfen",
command: "if [ $EUID -ne 0 ]; then exit 1; fi"
},
{
description: "Installationsort prüfen",
command: "if [ -d {folder} ]; then exit 1; fi"
},
{
description: "Paketquellen aktualisieren",
command: "apt update"
},
{
description: "PHP installieren",
command: "apt install -y sudo lsb-release ca-certificates apt-transport-https software-properties-common gnupg2",
os: "debian"
},
{
description: "PHP installieren",
command: "add-apt-repository --yes ppa:ondrej/php",
os: "ubuntu"
},
{
command: "echo \"deb https://packages.sury.org/php/ $(lsb_release -sc) main\" | tee /etc/apt/sources.list.d/sury-php.list && wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add -",
os: "debian"
},
{command: "apt update"},
{
description: "Pakete installieren",
command: "apt install -y wget curl php php-{common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip} mariadb-server nginx tar git redis-server"
},
{command: "mkdir -p {folder}"},
{
description: "Passwort generieren",
command: "echo \"{db_pass}\" > {folder}/.db_pass",
replace: {db_pass: () => Math.random().toString(36).slice(-8)}
},
{
description: "MySQL konfigurieren",
command: "mysql -e \"CREATE DATABASE IF NOT EXISTS panel; CREATE USER IF NOT EXISTS 'pterodactyl'@'127.0.0.1' IDENTIFIED BY '$(cat {folder}/.db_pass)'; GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION; FLUSH PRIVILEGES;\"",
},
{
description: "Neuste Version herunterladen",
command: "wget https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz -O {folder}/file.tar.gz",
},
{
description: "Dateien entpacken",
command: "tar -xzvf {folder}/file.tar.gz -C {folder}"
},
{
description: "Composer installieren",
command: "curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer"
},
{
description: "Dependencies installieren",
command: "cd {folder} && composer install --no-dev --optimize-autoloader --no-interaction --no-progress --no-suggest"
},
{
description: "Artisan konfigurieren",
command: "cd {folder} && cp .env.example .env && php artisan key:generate --force && php artisan p:environment:setup -n --author '{mail}' --url 'http://{url}' --timezone Europe/Berlin --cache --session --queue && php artisan p:environment:database --host 127.0.0.1 --port 3306 --database panel --username pterodactyl --password $(cat {folder}/.db_pass) && php artisan migrate --seed --force"
},
{command: "chown -R www-data:www-data {folder} && chmod -R 755 {folder}"},
{
description: "Cronjob einrichten",
command: "crontab -u www-data -l | { cat; echo \"* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1\n\"; } | crontab -u www-data -"
},
{
description: "Nutzer hinzufügen",
command: "cd {folder} && php artisan p:user:make -n --email '{mail}' --password '{pass}' --admin 1 --username=Admin --name-first=Admin --name-last=User"
},
{
description: "Nginx konfigurieren",
command: "echo \"server {\n" +
" listen 80;\n" +
" server_name {domain};\n" +
"\n" +
" root /var/www/pterodactyl/public;\n" +
" index index.html index.htm index.php;\n" +
" charset utf-8;\n" +
"\n" +
" location / {\n" +
" try_files \\$uri \\$uri/ /index.php?\\$query_string;\n" +
" }\n" +
"\n" +
" location = /favicon.ico { access_log off; log_not_found off; }\n" +
" location = /robots.txt { access_log off; log_not_found off; }\n" +
"\n" +
" access_log off;\n" +
" error_log /var/log/nginx/pterodactyl.app-error.log error;\n" +
"\n" +
" client_max_body_size 100m;\n" +
" client_body_timeout 120s;\n" +
"\n" +
" sendfile off;\n" +
"\n" +
" location ~ \\.php\$ {\n" +
" fastcgi_split_path_info ^(.+\\.php)(/.+)\$;\n" +
" fastcgi_pass unix:/run/php/php$(php --ini | grep Loaded | cut -d'/' -f4)-fpm.sock;\n" +
" fastcgi_index index.php;\n" +
" include fastcgi_params;\n" +
" fastcgi_param PHP_VALUE \\\"upload_max_filesize = 100M \\n post_max_size=100M\\\";\n" +
" fastcgi_param SCRIPT_FILENAME \\$document_root\\$fastcgi_script_name;\n" +
" fastcgi_param HTTP_PROXY \\\"\\\";\n" +
" fastcgi_intercept_errors off;\n" +
" fastcgi_buffer_size 16k;\n" +
" fastcgi_buffers 4 16k;\n" +
" fastcgi_connect_timeout 300;\n" +
" fastcgi_send_timeout 300;\n" +
" fastcgi_read_timeout 300;\n" +
" }\n" +
"\n" +
" location ~ /\\.ht {\n" +
" deny all;\n" +
" }\n" +
"}\" > /etc/nginx/sites-available/pterodactyl.conf && ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf && nginx -t && systemctl restart nginx"
},
{
description: "GermanDactyl installieren",
command: "curl -sSL https://install.germandactyl.de/ | sudo bash -s --",
condition: "german=Ja"
},
{
description: "Docker installieren",
command: "curl -sSL https://get.docker.com/ | CHANNEL=stable bash && systemctl enable docker && systemctl start docker"
},
{
description: "Wings installieren",
command: 'curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")" && chmod u+x /usr/local/bin/wings'
},
{
command: "curl -L -o /etc/systemd/system/wings.service https://raw.githubusercontent.com/pterodactyl-installer/pterodactyl-installer/master/configs/wings.service && systemctl enable wings"
}
]
}