From 18534b73be0fbcb0302065d0c04319d836810576 Mon Sep 17 00:00:00 2001 From: Bas van den Berg <74251551+bvdberg01@users.noreply.github.com> Date: Tue, 4 Mar 2025 11:52:23 +0100 Subject: [PATCH] Pterodactyl Wings (#2800) * New Script: Pterodactyl Wings * Add sources and replace tag * Update pterodactyl-wings.sh * Update pterodactyl-wings-install.sh --- ct/pterodactyl-wings.sh | 58 +++++++++++++++++++++++ install/pterodactyl-wings-install.sh | 70 ++++++++++++++++++++++++++++ json/pterodactyl-wings.json | 39 ++++++++++++++++ 3 files changed, 167 insertions(+) create mode 100644 ct/pterodactyl-wings.sh create mode 100644 install/pterodactyl-wings-install.sh create mode 100644 json/pterodactyl-wings.json diff --git a/ct/pterodactyl-wings.sh b/ct/pterodactyl-wings.sh new file mode 100644 index 000000000..509d3bdb4 --- /dev/null +++ b/ct/pterodactyl-wings.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: bvdberg01 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/pterodactyl/wings + +APP="Pterodactyl-Wings" +var_tags="gaming" +var_cpu="2" +var_ram="4096" +var_disk="8" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /usr/local/bin/wings ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/pterodactyl/wings/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Service" + systemctl stop wings + msg_ok "Stopped Service" + + msg_info "Updating ${APP} to v${RELEASE}" + rm /usr/local/bin/wings + wget -q -O /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/download/v${RELEASE}/wings_linux_amd64" + chmod u+x /usr/local/bin/wings + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting Service" + systemctl start wings + msg_ok "Started Service" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" diff --git a/install/pterodactyl-wings-install.sh b/install/pterodactyl-wings-install.sh new file mode 100644 index 000000000..e610e5986 --- /dev/null +++ b/install/pterodactyl-wings-install.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: bvdberg01 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/pterodactyl/wings + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc +msg_ok "Installed Dependencies" + +msg_info "Installing Docker" +DOCKER_CONFIG_PATH='/etc/docker/daemon.json' +mkdir -p $(dirname $DOCKER_CONFIG_PATH) +echo -e '{\n "log-driver": "journald"\n}' >/etc/docker/daemon.json +$STD sh <(curl -sSL https://get.docker.com) +systemctl enable -q --now docker +msg_ok "Installed Docker" + +msg_info "Installing Pterodactyl Wings" +RELEASE=$(curl -s https://api.github.com/repos/pterodactyl/wings/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q -O /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/download/v${RELEASE}/wings_linux_amd64" +chmod u+x /usr/local/bin/wings +mkdir -p /etc/pterodactyl +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Installed Pterodactyl Wings" + +msg_info "Creating Service" +cat </etc/systemd/system/wings.service +[Unit] +Description=Pterodactyl Wings Daemon +After=docker.service +Requires=docker.service +PartOf=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=180 +StartLimitBurst=30 +RestartSec=5s + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now wings +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/pterodactyl-wings.json b/json/pterodactyl-wings.json new file mode 100644 index 000000000..855c33b0c --- /dev/null +++ b/json/pterodactyl-wings.json @@ -0,0 +1,39 @@ +{ + "name": "Pterodactyl Wings", + "slug": "Pterodactyl-wings", + "categories": [ + 24 + ], + "date_created": "2025-03-03", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": null, + "documentation": "https://pterodactyl.io/wings/1.0/installing.html", + "website": "https://pterodactyl.io", + "logo": "https://pterodactyl.io/logos/pterry.svg", + "description": "Pterodactyl Wings is Pterodactyl's server control plane, built for the rapidly changing gaming industry and designed to be highly performant and secure. Wings provides an HTTP API allowing you to interface directly with running server instances, fetch server logs, generate backups, and control all aspects of the server lifecycle.", + "install_methods": [ + { + "type": "default", + "script": "ct/pterodactyl-wings.sh", + "resources": { + "cpu": 2, + "ram": 4096, + "hdd": 8, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "After installation, you need to use the Auto Deploy command generated by Pterodactyl Panel and, after running the command, restart the Wings service with `systemctl restart wings.service`", + "type": "info" + } + ] +}