-
Notifications
You must be signed in to change notification settings - Fork 37
/
autoinstall.sh
152 lines (140 loc) · 8.31 KB
/
autoinstall.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#!/bin/bash
#!/usr/bin/env bash
########################################################################
# #
# Pterodactyl Installer, Updater, Remover and More #
# Copyright 2022, Malthe K, <[email protected]> #
# https://github.com/guldkage/Pterodactyl-Installer/blob/main/LICENSE #
# #
# This script is not associated with the official Pterodactyl Panel. #
# You may not remove this line #
# #
########################################################################
dist="$(. /etc/os-release && echo "$ID")"
version="$(. /etc/os-release && echo "$VERSION_ID")"
### This script is meant to be used: ###
### ./install.sh <FQDN/URL to panel> <SSL true or false> <email> <username> <firstname> <lastname> <password> <wings true or false> ###
finish(){
clear
echo ""
echo "[!] Panel installed."
echo ""
}
panel_conf(){
[ "$SSL" == true ] && appurl="https://$FQDN"
[ "$SSL" == false ] && appurl="http://$FQDN"
DBPASSWORD=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1`
mariadb -u root -e "CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY '$DBPASSWORD';" && mariadb -u root -e "CREATE DATABASE panel;" && mariadb -u root -e "GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;" && mariadb -u root -e "FLUSH PRIVILEGES;"
php artisan p:environment:setup --author="$EMAIL" --url="$appurl" --timezone="CET" --telemetry=false --cache="redis" --session="redis" --queue="redis" --redis-host="localhost" --redis-pass="null" --redis-port="6379" --settings-ui=true
php artisan p:environment:database --host="127.0.0.1" --port="3306" --database="panel" --username="pterodactyl" --password="$DBPASSWORD"
php artisan migrate --seed --force
php artisan p:user:make --email="$EMAIL" --username="$USERNAME" --name-first="$FIRSTNAME" --name-last="$LASTNAME" --password="$PASSWORD" --admin=1
chown -R www-data:www-data /var/www/pterodactyl/*
curl -o /etc/systemd/system/pteroq.service https://raw.githubusercontent.com/guldkage/Pterodactyl-Installer/main/configs/pteroq.service
(crontab -l ; echo "* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1")| crontab -
sudo systemctl enable --now redis-server
sudo systemctl enable --now pteroq.service
[ "$WINGS" == true ] && curl -sSL https://get.docker.com/ | CHANNEL=stable bash && systemctl enable --now docker && mkdir -p /etc/pterodactyl && apt-get -y install curl tar unzip && 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")" && curl -o /etc/systemd/system/wings.service https://raw.githubusercontent.com/guldkage/Pterodactyl-Installer/main/configs/wings.service && chmod u+x /usr/local/bin/wings
if [ "$SSL" = "true" ]; then
rm -rf /etc/nginx/sites-enabled/default
curl -o /etc/nginx/sites-enabled/pterodactyl.conf https://raw.githubusercontent.com/guldkage/Pterodactyl-Installer/main/configs/pterodactyl-nginx-ssl.conf
sed -i -e "s@<domain>@${FQDN}@g" /etc/nginx/sites-enabled/pterodactyl.conf
systemctl stop nginx
certbot certonly --standalone -d $FQDN --staple-ocsp --no-eff-email -m $EMAIL --agree-tos
systemctl start nginx
finish
fi
if [ "$SSL" = "false" ]; then
rm -rf /etc/nginx/sites-enabled/default
curl -o /etc/nginx/sites-enabled/pterodactyl.conf https://raw.githubusercontent.com/guldkage/Pterodactyl-Installer/main/configs/pterodactyl-nginx.conf
sed -i -e "s@<domain>@${FQDN}@g" /etc/nginx/sites-enabled/pterodactyl.conf
systemctl restart nginx
finish
fi
}
panel_install(){
echo ""
apt update
apt install certbot -y
if [ "$dist" = "ubuntu" ] && [ "$version" = "20.04" ]; then
apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
apt update
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"
fi
if [ "$dist" = "debian" ] && [ "$version" = "11" ]; then
apt -y install software-properties-common curl ca-certificates gnupg2 sudo lsb-release
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
curl -fsSL https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/sury-keyring.gpg
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
apt update -y
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
fi
if [ "$dist" = "debian" ] && [ "$version" = "12" ]; then
apt -y install software-properties-common curl ca-certificates gnupg2 sudo lsb-release
sudo apt install -y apt-transport-https lsb-release ca-certificates wget
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
apt update -y
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
fi
apt install -y mariadb-server tar unzip git redis-server
sed -i 's/character-set-collations = utf8mb4=uca1400_ai_ci/character-set-collations = utf8mb4=utf8mb4_general_ci/' /etc/mysql/mariadb.conf.d/50-server.cnf
systemctl restart mariadb
apt -y install php8.3 php8.3-{cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip}
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
pause 0.5s
mkdir /var
mkdir /var/www
mkdir /var/www/pterodactyl
cd /var/www/pterodactyl
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/
cp .env.example .env
command composer install --no-dev --optimize-autoloader --no-interaction
php artisan key:generate --force
apt install nginx -y
panel_conf
}
#! /bin/sh -
FQDN=`echo $1`
SSL=`echo $2`
EMAIL=`echo $3`
USERNAME=`echo $4`
FIRSTNAME=`echo $5`
LASTNAME=`echo $6`
PASSWORD=`echo $7`
WINGS=`echo $8`
if [ -z "$FQDN" ] || [ -z "$SSL" ] || [ -z "$EMAIL" ] || [ -z "$USERNAME" ] || [ -z "$FIRSTNAME" ] || [ -z "$LASTNAME" ] || [ -z "$PASSWORD" ] || [ -z "$WINGS" ]; then
echo "Error! THe usage of this script is incorrect."
exit 1
fi
echo "Checking your OS.."
if { [ "$dist" = "ubuntu" ] && [ "$version" = "20.04" ]; } || { [ "$dist" = "debian" ] && [ "$version" = "11" ] || [ "$version" = "12" ]; }; then
echo "Welcome to Autoinstall of Pterodactyl Panel"
echo "Quick summary before the install begins:"
echo ""
echo "FQDN (URL): $FQDN"
echo "SSL: $SSL"
echo "Preselected webserver: NGINX"
echo "Email $EMAIL"
echo "Username $USERNAME"
echo "First name $FIRSTNAME"
echo "Last name $LASTNAME"
echo "Password: $PASSWORD"
echo "Wings install: $WINGS"
echo ""
echo "Starting automatic installation in 5 seconds"
sleep 5s
panel_install
else
echo "Your OS, $dist $version, is not supported"
exit 1
fi