143 lines
7.0 KiB
JavaScript
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"
|
|
}
|
|
]
|
|
} |