Skip to content

Instantly share code, notes, and snippets.

@NotYusta
Last active July 11, 2025 08:05
Show Gist options
  • Save NotYusta/bc9d45b0c2f9db2588f464b164b607b0 to your computer and use it in GitHub Desktop.
Save NotYusta/bc9d45b0c2f9db2588f464b164b607b0 to your computer and use it in GitHub Desktop.
Generate Wings Config
#!/bin/bash
# Example usage:
# ./generate_wings_config.sh \
# --uuid "1046d1d1-b8ef-4771-82b1-2b5946d33397" \ # Node UUID from panel
# --token_id "iAcosCn1KCAgVjVO" \ # Token ID from panel
# --token "FanPzLCptUxkGow3vi7Z" \ # Token secret from panel
# --ssl_cert "/etc/letsencrypt/live/pterodactyl.file.properties/fullchain.pem" \ # Path to SSL cert
# --ssl_key "/etc/letsencrypt/live/pterodactyl.file.properties/privkey.pem" \ # Path to SSL key
# --remote_url "https://pterodactyl.file.properties" \ # Panel URL
# --pid_limit 512 # PID limit (0 = unlimited)
# --ssl_enabled true # Enable or disable SSL (true/false)
# Default configuration values
DEBUG=false
UUID=""
TOKEN_ID=""
TOKEN=""
HOST="0.0.0.0" # Wings API listening address
PORT=8080 # Wings API port
UPLOAD_LIMIT=100 # Upload size limit in MiB
SSL_ENABLED="true" # Enable or disable SSL (as string)
SSL_CERT_PATH="/etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem" # SSL cert path
SSL_KEY_PATH="/etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem" # SSL key path
DATA_PATH="/var/lib/pterodactyl" # Location for daemon data
SFTP_PORT=2022 # SFTP bind port
PID_LIMIT=512 # Default PID limit for Docker containers
REMOTE_URL="https://YOUR_PANEL_DOMAIN" # URL of the panel (frontend)
# Parse command-line arguments
while [[ "$#" -gt 0 ]]; do
case $1 in
--uuid) UUID="$2"; shift ;;
--token_id) TOKEN_ID="$2"; shift ;;
--token) TOKEN="$2"; shift ;;
--host) HOST="$2"; shift ;;
--port) PORT="$2"; shift ;;
--upload_limit) UPLOAD_LIMIT="$2"; shift ;;
--ssl_cert) SSL_CERT_PATH="$2"; shift ;;
--ssl_key) SSL_KEY_PATH="$2"; shift ;;
--ssl_enabled) SSL_ENABLED=$(echo "$2" | tr '[:upper:]' '[:lower:]'); shift ;;
--data_path) DATA_PATH="$2"; shift ;;
--sftp_port) SFTP_PORT="$2"; shift ;;
--pid_limit) PID_LIMIT="$2"; shift ;;
--remote_url) REMOTE_URL="$2"; shift ;;
*) echo "Unknown parameter: $1"; exit 1 ;;
esac
shift
done
# Validate required values
if [[ -z "$UUID" || -z "$TOKEN_ID" || -z "$TOKEN" ]]; then
echo "Error: --uuid, --token_id, and --token are required."
exit 1
fi
# Define output path
CONFIG_PATH="/etc/pterodactyl/config.yml"
mkdir -p "$(dirname "$CONFIG_PATH")"
# Generate config.yml
cat > "$CONFIG_PATH" <<EOF
debug: $DEBUG
uuid: $UUID
token_id: $TOKEN_ID
token: $TOKEN
api:
host: $HOST
port: $PORT
ssl:
enabled: $SSL_ENABLED
cert: $SSL_CERT_PATH
key: $SSL_KEY_PATH
upload_limit: $UPLOAD_LIMIT
system:
data: $DATA_PATH
sftp:
bind_port: $SFTP_PORT
docker:
container_pid_limit: $PID_LIMIT
remote: $REMOTE_URL
EOF
echo "✅ Wings config generated at $CONFIG_PATH"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment