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" + } + ] +}