entitybtw revised this gist 4 weeks ago. Go to revision
1 file changed, 351 insertions, 237 deletions
pterodactyl install guide.txt
| @@ -1,5 +1,5 @@ | |||
| 1 | 1 | ╔══════════════════════════════════════════════════════════════════╗ | |
| 2 | - | ║ PTERODACTYL PANEL & WINGS INSTALLATION GUIDE (ASCII) ║ | |
| 2 | + | ║ PTERODACTYL PANEL & WINGS INSTALLATION GUIDE ║ | |
| 3 | 3 | ║ Complete Step-by-Step Walkthrough ║ | |
| 4 | 4 | ╚══════════════════════════════════════════════════════════════════╝ | |
| 5 | 5 | ||
| @@ -24,7 +24,6 @@ | |||
| 24 | 24 | └─────────────────────────────────────────────────────────────┘ | |
| 25 | 25 | ||
| 26 | 26 | >>> SELECT: 3 (BOTH) | |
| 27 | - | ||
| 28 | 27 | > Type "3" and press ENTER | |
| 29 | 28 | ||
| 30 | 29 | ||
| @@ -37,7 +36,6 @@ | |||
| 37 | 36 | └─────────────────────────────────────────────────────────────┘ | |
| 38 | 37 | ||
| 39 | 38 | >>> SELECT: y (YES) | |
| 40 | - | ||
| 41 | 39 | > Type "y" and press ENTER | |
| 42 | 40 | ||
| 43 | 41 | ||
| @@ -51,7 +49,6 @@ | |||
| 51 | 49 | └─────────────────────────────────────────────────────────────┘ | |
| 52 | 50 | ||
| 53 | 51 | >>> SELECT: y (YES) | |
| 54 | - | ||
| 55 | 52 | > Type "y" and press ENTER | |
| 56 | 53 | ||
| 57 | 54 | ||
| @@ -65,9 +62,9 @@ | |||
| 65 | 62 | ||
| 66 | 63 | >>> LEAVE BLANK: Press ENTER (uses default) | |
| 67 | 64 | ||
| 68 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 69 | - | │ * Database host password: │ | |
| 70 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 65 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 66 | + | │ * Database host password: │ | |
| 67 | + | └─────────────────────────────────────────────────────────────┘ | |
| 71 | 68 | ||
| 72 | 69 | >>> IMPORTANT! Type a strong password (write it down!) | |
| 73 | 70 | > Example: MyStr0ngP@ssw0rd!2026 | |
| @@ -84,7 +81,6 @@ | |||
| 84 | 81 | └─────────────────────────────────────────────────────────────┘ | |
| 85 | 82 | ||
| 86 | 83 | >>> SELECT: n (NO) | |
| 87 | - | ||
| 88 | 84 | > Type "n" and press ENTER | |
| 89 | 85 | ||
| 90 | 86 | ||
| @@ -116,36 +112,35 @@ | |||
| 116 | 112 | └─────────────────────────────────────────────────────────────┘ | |
| 117 | 113 | ||
| 118 | 114 | >>> SELECT: y (YES) | |
| 119 | - | ||
| 120 | 115 | > Type "y" and press ENTER | |
| 121 | 116 | ||
| 122 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 123 | - | │ * Enter your email address: │ | |
| 124 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 117 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 118 | + | │ * Enter your email address: │ | |
| 119 | + | └─────────────────────────────────────────────────────────────┘ | |
| 125 | 120 | ||
| 126 | 121 | >>> Type your admin email: admin@example.com | |
| 127 | 122 | ||
| 128 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 129 | - | │ * Enter your username: │ | |
| 130 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 123 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 124 | + | │ * Enter your username: │ | |
| 125 | + | └─────────────────────────────────────────────────────────────┘ | |
| 131 | 126 | ||
| 132 | 127 | >>> Type your username: admin | |
| 133 | 128 | ||
| 134 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 135 | - | │ * Enter your first name: │ | |
| 136 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 129 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 130 | + | │ * Enter your first name: │ | |
| 131 | + | └─────────────────────────────────────────────────────────────┘ | |
| 137 | 132 | ||
| 138 | 133 | >>> Type your first name: John | |
| 139 | 134 | ||
| 140 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 141 | - | │ * Enter your last name: │ | |
| 142 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 135 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 136 | + | │ * Enter your last name: │ | |
| 137 | + | └─────────────────────────────────────────────────────────────┘ | |
| 143 | 138 | ||
| 144 | 139 | >>> Type your last name: Doe | |
| 145 | 140 | ||
| 146 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 147 | - | │ * Enter your password: │ | |
| 148 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 141 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 142 | + | │ * Enter your password: │ | |
| 143 | + | └─────────────────────────────────────────────────────────────┘ | |
| 149 | 144 | ||
| 150 | 145 | >>> IMPORTANT! Type a strong password (write it down!) | |
| 151 | 146 | > Example: Admin@2026#Secure! | |
| @@ -156,19 +151,23 @@ | |||
| 156 | 151 | │ STEP 9: SSL CONFIGURATION (PANEL) │ | |
| 157 | 152 | └─────────────────────────────────────────────────────────────────┘ | |
| 158 | 153 | ||
| 159 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 160 | - | │ * Do you want to use Let's Encrypt SSL? (y/N): │ | |
| 161 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 154 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 155 | + | │ * Do you want to use Let's Encrypt SSL? (y/N): │ | |
| 156 | + | └─────────────────────────────────────────────────────────────┘ | |
| 162 | 157 | ||
| 163 | - | ╔══════════════════════════════════════════════════════════════════╗ | |
| 164 | - | ║ IF YOU HAVE A DOMAIN NAME: ║ | |
| 165 | - | ║ SELECT: y (YES) ║ | |
| 166 | - | ║ Then enter your domain: panel.example.com ║ | |
| 167 | - | ║ ║ | |
| 168 | - | ║ IF YOU ONLY HAVE AN IP ADDRESS (NO DOMAIN): ║ | |
| 169 | - | ║ SELECT: n (NO) ║ | |
| 170 | - | ║ The panel will use HTTP (port 80) ║ | |
| 171 | - | ╚══════════════════════════════════════════════════════════════════╝ | |
| 158 | + | +------------------------------------------------------------------+ | |
| 159 | + | | IF YOU HAVE A DOMAIN NAME: | | |
| 160 | + | | SELECT: y (YES) | | |
| 161 | + | | Then enter your domain: panel.example.com | | |
| 162 | + | | | | |
| 163 | + | | IF YOU ONLY HAVE AN IP ADDRESS (NO DOMAIN): | | |
| 164 | + | | SELECT: n (NO) | | |
| 165 | + | | The panel will use HTTP (port 80) | | |
| 166 | + | | | | |
| 167 | + | | IF USING REVERSE PROXY (Nginx/Apache as proxy): | | |
| 168 | + | | SELECT: n (NO) | | |
| 169 | + | | We'll configure SSL later in Nginx | | |
| 170 | + | +------------------------------------------------------------------+ | |
| 172 | 171 | ||
| 173 | 172 | >>> Choose based on your setup | |
| 174 | 173 | > Type "y" or "n" and press ENTER | |
| @@ -178,13 +177,12 @@ | |||
| 178 | 177 | │ STEP 10: WINGS CONFIGURATION (UFW FIREWALL) │ | |
| 179 | 178 | └─────────────────────────────────────────────────────────────────┘ | |
| 180 | 179 | ||
| 181 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 182 | - | │ * Do you want to automatically configure UFW (firewall)? │ | |
| 183 | - | │ (y/N): │ | |
| 184 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 180 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 181 | + | │ * Do you want to automatically configure UFW (firewall)? │ | |
| 182 | + | │ (y/N): │ | |
| 183 | + | └─────────────────────────────────────────────────────────────┘ | |
| 185 | 184 | ||
| 186 | 185 | >>> SELECT: y (YES) - Recommended! | |
| 187 | - | ||
| 188 | 186 | > Type "y" and press ENTER | |
| 189 | 187 | ||
| 190 | 188 | ||
| @@ -192,36 +190,34 @@ | |||
| 192 | 190 | │ STEP 11: DATABASE USER FOR WINGS │ | |
| 193 | 191 | └─────────────────────────────────────────────────────────────────┘ | |
| 194 | 192 | ||
| 195 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 196 | - | │ * Do you want to configure a user for database hosts? │ | |
| 197 | - | │ (y/N): │ | |
| 198 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 193 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 194 | + | │ * Do you want to configure a user for database hosts? │ | |
| 195 | + | │ (y/N): │ | |
| 196 | + | └─────────────────────────────────────────────────────────────┘ | |
| 199 | 197 | ||
| 200 | 198 | >>> SELECT: y (YES) | |
| 201 | - | ||
| 202 | 199 | > Type "y" and press ENTER | |
| 203 | 200 | ||
| 204 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 205 | - | │ * Database host username (pterodactyluser): │ | |
| 206 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 201 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 202 | + | │ * Database host username (pterodactyluser): │ | |
| 203 | + | └─────────────────────────────────────────────────────────────┘ | |
| 207 | 204 | ||
| 208 | 205 | >>> LEAVE BLANK: Press ENTER | |
| 209 | 206 | ||
| 210 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 211 | - | │ * Database host password: │ | |
| 212 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 207 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 208 | + | │ * Database host password: │ | |
| 209 | + | └─────────────────────────────────────────────────────────────┘ | |
| 213 | 210 | ||
| 214 | 211 | >>> Type a password (write it down!) | |
| 215 | 212 | > Example: WingsDB@2026#Strong! | |
| 216 | 213 | > Press ENTER | |
| 217 | 214 | ||
| 218 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 219 | - | │ * Do you want to configure MySQL to be accessed externally? │ | |
| 220 | - | │ (y/N): │ | |
| 221 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 215 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 216 | + | │ * Do you want to configure MySQL to be accessed externally? │ | |
| 217 | + | │ (y/N): │ | |
| 218 | + | └─────────────────────────────────────────────────────────────┘ | |
| 222 | 219 | ||
| 223 | 220 | >>> SELECT: n (NO) | |
| 224 | - | ||
| 225 | 221 | > Type "n" and press ENTER | |
| 226 | 222 | ||
| 227 | 223 | ||
| @@ -229,13 +225,21 @@ | |||
| 229 | 225 | │ STEP 12: SSL FOR WINGS │ | |
| 230 | 226 | └─────────────────────────────────────────────────────────────────┘ | |
| 231 | 227 | ||
| 232 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 233 | - | │ * Do you want to automatically configure HTTPS using │ | |
| 234 | - | │ Let's Encrypt? (y/N): │ | |
| 235 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 228 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 229 | + | │ * Do you want to automatically configure HTTPS using │ | |
| 230 | + | │ Let's Encrypt? (y/N): │ | |
| 231 | + | └─────────────────────────────────────────────────────────────┘ | |
| 236 | 232 | ||
| 237 | - | >>> SELECT: n (NO) | |
| 233 | + | +------------------------------------------------------------------+ | |
| 234 | + | | IF YOU HAVE A DOMAIN AND WANT SSL DIRECTLY: | | |
| 235 | + | | SELECT: y (YES) | | |
| 236 | + | | | | |
| 237 | + | | IF USING REVERSE PROXY OR IP ONLY: | | |
| 238 | + | | SELECT: n (NO) | | |
| 239 | + | | We'll configure SSL via reverse proxy later | | |
| 240 | + | +------------------------------------------------------------------+ | |
| 238 | 241 | ||
| 242 | + | >>> SELECT: n (NO) - if using reverse proxy | |
| 239 | 243 | > Type "n" and press ENTER | |
| 240 | 244 | ||
| 241 | 245 | ||
| @@ -243,69 +247,241 @@ | |||
| 243 | 247 | │ STEP 13: FINAL CONFIRMATION │ | |
| 244 | 248 | └─────────────────────────────────────────────────────────────────┘ | |
| 245 | 249 | ||
| 246 | - | ┌─────────────────────────────────────────────────────────────────┐ | |
| 247 | - | │ * Proceed with installation? (y/N): │ | |
| 248 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 250 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 251 | + | │ * Proceed with installation? (y/N): │ | |
| 252 | + | └─────────────────────────────────────────────────────────────┘ | |
| 249 | 253 | ||
| 250 | 254 | >>> SELECT: y (YES) | |
| 251 | - | ||
| 252 | 255 | > Type "y" and press ENTER | |
| 253 | - | > Wait for installation to complete... | |
| 254 | - | ||
| 255 | - | ||
| 256 | - | ╔══════════════════════════════════════════════════════════════════╗ | |
| 257 | - | ║ INSTALLATION COMPLETE! ║ | |
| 258 | - | ║ ║ | |
| 259 | - | ║ Your Pterodactyl Panel is now installed! ║ | |
| 260 | - | ║ ║ | |
| 261 | - | ║ Access your panel at: ║ | |
| 262 | - | ║ http://YOUR_SERVER_IP ║ ║ | |
| 263 | - | ║ ║ | |
| 264 | - | ║ Login with: ║ | |
| 265 | - | ║ Email: [your admin email] ║ | |
| 266 | - | ║ Password: [your admin password] ║ | |
| 267 | - | ║ ║ | |
| 268 | - | ║ ⚠️ IMPORTANT: Your Wings still needs to be configured! ║ | |
| 269 | - | ║ 1. Log into the panel ║ | |
| 270 | - | ║ 2. Go to Admin → Nodes → Create New ║ | |
| 271 | - | ║ 3. Generate the configuration file ║ | |
| 272 | - | ║ 4. Copy it to /etc/pterodactyl/config.yml ║ | |
| 273 | - | ║ 5. Run: systemctl start wings ║ | |
| 274 | - | ╚══════════════════════════════════════════════════════════════════╝ | |
| 256 | + | > Wait for installation to complete (2-5 minutes) | |
| 257 | + | ||
| 258 | + | ||
| 259 | + | +------------------------------------------------------------------+ | |
| 260 | + | | INSTALLATION COMPLETE! | | |
| 261 | + | | | | |
| 262 | + | | Your Pterodactyl Panel is now installed! | | |
| 263 | + | | | | |
| 264 | + | | Access your panel at: | | |
| 265 | + | | http://YOUR_SERVER_IP | | |
| 266 | + | | or | | |
| 267 | + | | https://YOUR_DOMAIN (if SSL enabled) | | |
| 268 | + | | | | |
| 269 | + | | Login with: | | |
| 270 | + | | Email: [your admin email] | | |
| 271 | + | | Password: [your admin password] | | |
| 272 | + | | | | |
| 273 | + | | IMPORTANT: Your Wings still needs to be configured! | | |
| 274 | + | | 1. Log into the panel | | |
| 275 | + | | 2. Go to Admin -> Nodes -> Create New | | |
| 276 | + | | 3. Generate the configuration file | | |
| 277 | + | | 4. Copy it to /etc/pterodactyl/config.yml | | |
| 278 | + | | 5. Run: systemctl start wings | | |
| 279 | + | +------------------------------------------------------------------+ | |
| 275 | 280 | ||
| 276 | 281 | ||
| 277 | 282 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 278 | 283 | │ QUICK REFERENCE SHEET │ | |
| 279 | 284 | └─────────────────────────────────────────────────────────────────┘ | |
| 280 | 285 | ||
| 281 | - | ┌──────────────┬─────────────┬──────────────────────────────┐ | |
| 282 | - | │ QUESTION │ ANSWER │ REASON │ | |
| 283 | - | ├──────────────┼─────────────┼──────────────────────────────┤ | |
| 284 | - | │ Panel/Wings │ 3 (Both) │ Install everything at once │ | |
| 285 | - | │ Continue? │ y │ Start installation │ | |
| 286 | - | │ Auto DB? │ y │ Let script handle DB │ | |
| 287 | - | │ DB username │ [ENTER] │ Use default │ | |
| 288 | - | │ DB password │ [TYPE] │ Strong password (save it) │ | |
| 289 | - | │ MySQL ext │ n │ No external access needed │ | |
| 290 | - | │ Admin user? │ y │ Create admin account │ | |
| 291 | - | │ Let's Encrypt│ n │ n = IP only, y = domain │ | |
| 292 | - | │ Configure │ y │ Auto open firewall ports │ | |
| 293 | - | │ UFW? │ │ │ | |
| 294 | - | │ Wings DB │ y │ Create DB user for Wings │ | |
| 295 | - | │ Wings SSL │ n or y │ Same as panel SSL choice │ | |
| 296 | - | └──────────────┴─────────────┴──────────────────────────────┘ | |
| 286 | + | +--------------+-------------+----------------------------------+ | |
| 287 | + | | QUESTION | ANSWER | REASON | | |
| 288 | + | +--------------+-------------+----------------------------------+ | |
| 289 | + | | Panel/Wings | 3 (Both) | Install everything at once | | |
| 290 | + | | Continue? | y | Start installation | | |
| 291 | + | | Auto DB? | y | Let script handle DB | | |
| 292 | + | | DB username | [ENTER] | Use default | | |
| 293 | + | | DB password | [TYPE] | Strong password (save it) | | |
| 294 | + | | MySQL ext | n | No external access needed | | |
| 295 | + | | Admin user? | y | Create admin account | | |
| 296 | + | | Let's Encrypt| n or y | n = IP/proxy, y = domain | | |
| 297 | + | | Configure | y | Auto open firewall ports | | |
| 298 | + | | UFW? | | | | |
| 299 | + | | Wings DB | y | Create DB user for Wings | | |
| 300 | + | | Wings SSL | n | n = proxy, y = direct | | |
| 301 | + | +--------------+-------------+----------------------------------+ | |
| 297 | 302 | ||
| 298 | 303 | ||
| 299 | 304 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 300 | 305 | │ FIREWALL PORTS TO OPEN │ | |
| 301 | 306 | └─────────────────────────────────────────────────────────────────┘ | |
| 302 | 307 | ||
| 303 | - | ┌─────────────────────────────────────────────────────────────┐ | |
| 304 | - | │ Port 80 - HTTP (Web Panel) │ | |
| 305 | - | │ Port 443 - HTTPS (Web Panel) - if SSL enabled │ | |
| 306 | - | │ Port 8080 - Wings WebSocket (Server communication) │ | |
| 307 | - | │ Port 2022 - SFTP (File transfer for servers) │ | |
| 308 | - | └─────────────────────────────────────────────────────────────┘ | |
| 308 | + | +-------------------------------------------------------------+ | |
| 309 | + | | Port 80 - HTTP (Web Panel) | | |
| 310 | + | | Port 443 - HTTPS (Web Panel) - if SSL enabled | | |
| 311 | + | | Port 8080 - Wings WebSocket (Server communication) | | |
| 312 | + | | Port 2022 - SFTP (File transfer for servers) | | |
| 313 | + | +-------------------------------------------------------------+ | |
| 314 | + | ||
| 315 | + | ||
| 316 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 317 | + | │ COMMON ERRORS & SOLUTIONS │ | |
| 318 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 319 | + | ||
| 320 | + | ERROR: "No application encryption key has been specified" | |
| 321 | + | -------------------------------------------------------------- | |
| 322 | + | SOLUTION: php /var/www/pterodactyl/artisan key:generate --force | |
| 323 | + | ||
| 324 | + | ERROR: "Unknown database 'panel'" | |
| 325 | + | -------------------------------------------------------------- | |
| 326 | + | SOLUTION: mysql -u root -p -e "CREATE DATABASE panel;" | |
| 327 | + | ||
| 328 | + | ERROR: "Connection refused" on Wings | |
| 329 | + | -------------------------------------------------------------- | |
| 330 | + | SOLUTION: Check if port 8080 is open: netstat -tlnp | grep 8080 | |
| 331 | + | Also check: systemctl status wings | |
| 332 | + | ||
| 333 | + | ERROR: "403 Forbidden" on panel | |
| 334 | + | -------------------------------------------------------------- | |
| 335 | + | SOLUTION: chown -R www-data:www-data /var/www/pterodactyl/storage | |
| 336 | + | chmod -R 755 /var/www/pterodactyl/storage | |
| 337 | + | ||
| 338 | + | ERROR: "502 Bad Gateway" on panel | |
| 339 | + | -------------------------------------------------------------- | |
| 340 | + | SOLUTION: systemctl restart php8.2-fpm | |
| 341 | + | systemctl restart nginx | |
| 342 | + | ||
| 343 | + | ERROR: "allowed_origins" missing in Wings config | |
| 344 | + | -------------------------------------------------------------- | |
| 345 | + | SOLUTION: Add to /etc/pterodactyl/config.yml: | |
| 346 | + | allowed_origins: | |
| 347 | + | - https://your-domain.com | |
| 348 | + | ||
| 349 | + | ERROR: Panel shows "500 Internal Server Error" | |
| 350 | + | -------------------------------------------------------------- | |
| 351 | + | SOLUTION: Check logs: tail -f /var/www/pterodactyl/storage/logs/*.log | |
| 352 | + | Clear cache: php /var/www/pterodactyl/artisan config:clear | |
| 353 | + | ||
| 354 | + | ||
| 355 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 356 | + | │ POST-INSTALLATION: WINGS SETUP │ | |
| 357 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 358 | + | ||
| 359 | + | 1. Login to panel: http://YOUR_SERVER_IP | |
| 360 | + | ||
| 361 | + | 2. Go to: Admin -> Nodes -> Create New | |
| 362 | + | ||
| 363 | + | 3. Fill in: | |
| 364 | + | * Name: Main Node | |
| 365 | + | * Description: (optional) | |
| 366 | + | * Location: (optional) | |
| 367 | + | * Allow Automatic Allocation: Yes | |
| 368 | + | * FQDN: YOUR_SERVER_IP or domain | |
| 369 | + | * Daemon Port: 443 (or 8080 if using proxy) | |
| 370 | + | * Communicate over SSL: Yes (if using SSL) | |
| 371 | + | * Behind Proxy: Yes (if using reverse proxy) | |
| 372 | + | * Public: Yes | |
| 373 | + | ||
| 374 | + | 4. After creating, click on the node -> Configuration | |
| 375 | + | ||
| 376 | + | 5. Copy the configuration code and: | |
| 377 | + | - If using reverse proxy: change port 443 to 8080 | |
| 378 | + | - If using direct SSL: keep port 443 | |
| 379 | + | ||
| 380 | + | 6. Add allowed_origins after allowed_mounts: | |
| 381 | + | allowed_mounts: [] | |
| 382 | + | allowed_origins: | |
| 383 | + | - https://your-domain.com | |
| 384 | + | - https://panel.your-domain.com | |
| 385 | + | ||
| 386 | + | 7. Save to: /etc/pterodactyl/config.yml | |
| 387 | + | ||
| 388 | + | 8. Start Wings: | |
| 389 | + | systemctl start wings | |
| 390 | + | systemctl enable wings | |
| 391 | + | ||
| 392 | + | ||
| 393 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 394 | + | │ NGINX REVERSE PROXY EXAMPLE CFG │ | |
| 395 | + | │ (For Panel + Wings Behind Proxy) │ | |
| 396 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 397 | + | ||
| 398 | + | upstream pterodactyl { | |
| 399 | + | server 127.0.0.1:80; # Panel port | |
| 400 | + | } | |
| 401 | + | ||
| 402 | + | upstream pterodactyl_ws { | |
| 403 | + | server 127.0.0.1:8080; # Wings WebSocket port | |
| 404 | + | } | |
| 405 | + | ||
| 406 | + | server { | |
| 407 | + | listen 80; | |
| 408 | + | server_name panel.your-domain.com; | |
| 409 | + | return 301 https://$server_name$request_uri; | |
| 410 | + | } | |
| 411 | + | ||
| 412 | + | server { | |
| 413 | + | listen 443 ssl http2; | |
| 414 | + | server_name panel.your-domain.com; | |
| 415 | + | ||
| 416 | + | ssl_certificate /etc/letsencrypt/live/panel.your-domain.com/fullchain.pem; | |
| 417 | + | ssl_certificate_key /etc/letsencrypt/live/panel.your-domain.com/privkey.pem; | |
| 418 | + | include /etc/letsencrypt/options-ssl-nginx.conf; | |
| 419 | + | ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; | |
| 420 | + | ||
| 421 | + | client_max_body_size 10G; | |
| 422 | + | ||
| 423 | + | # WebSocket connections | |
| 424 | + | location = /api/system { | |
| 425 | + | proxy_pass http://pterodactyl_ws; | |
| 426 | + | proxy_http_version 1.1; | |
| 427 | + | proxy_set_header Upgrade $http_upgrade; | |
| 428 | + | proxy_set_header Connection "upgrade"; | |
| 429 | + | proxy_set_header Host $host; | |
| 430 | + | proxy_set_header X-Real-IP $remote_addr; | |
| 431 | + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 432 | + | proxy_set_header X-Forwarded-Proto https; | |
| 433 | + | proxy_set_header Origin https://panel.your-domain.com; | |
| 434 | + | proxy_buffering off; | |
| 435 | + | } | |
| 436 | + | ||
| 437 | + | # File uploads/downloads | |
| 438 | + | location /upload/ { | |
| 439 | + | proxy_pass http://pterodactyl_ws; | |
| 440 | + | proxy_http_version 1.1; | |
| 441 | + | proxy_set_header Host $host; | |
| 442 | + | proxy_set_header X-Real-IP $remote_addr; | |
| 443 | + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 444 | + | proxy_set_header X-Forwarded-Proto https; | |
| 445 | + | proxy_set_header Origin https://panel.your-domain.com; | |
| 446 | + | client_max_body_size 10G; | |
| 447 | + | } | |
| 448 | + | ||
| 449 | + | location /download/ { | |
| 450 | + | proxy_pass http://pterodactyl_ws; | |
| 451 | + | proxy_http_version 1.1; | |
| 452 | + | proxy_set_header Host $host; | |
| 453 | + | proxy_set_header X-Real-IP $remote_addr; | |
| 454 | + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 455 | + | proxy_set_header X-Forwarded-Proto https; | |
| 456 | + | proxy_set_header Origin https://panel.your-domain.com; | |
| 457 | + | proxy_buffering off; | |
| 458 | + | } | |
| 459 | + | ||
| 460 | + | # API endpoints with WebSocket | |
| 461 | + | location ~ ^/api/servers { | |
| 462 | + | proxy_pass http://pterodactyl_ws; | |
| 463 | + | proxy_http_version 1.1; | |
| 464 | + | proxy_set_header Upgrade $http_upgrade; | |
| 465 | + | proxy_set_header Connection "upgrade"; | |
| 466 | + | proxy_set_header Host $host; | |
| 467 | + | proxy_set_header X-Real-IP $remote_addr; | |
| 468 | + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 469 | + | proxy_set_header X-Forwarded-Proto https; | |
| 470 | + | proxy_set_header Origin https://panel.your-domain.com; | |
| 471 | + | proxy_read_timeout 3600s; | |
| 472 | + | proxy_send_timeout 3600s; | |
| 473 | + | proxy_buffering off; | |
| 474 | + | } | |
| 475 | + | ||
| 476 | + | # Main panel | |
| 477 | + | location / { | |
| 478 | + | proxy_pass http://pterodactyl; | |
| 479 | + | proxy_set_header Host $host; | |
| 480 | + | proxy_set_header X-Real-IP $remote_addr; | |
| 481 | + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 482 | + | proxy_set_header X-Forwarded-Proto https; | |
| 483 | + | } | |
| 484 | + | } | |
| 309 | 485 | ||
| 310 | 486 | ||
| 311 | 487 | ┌─────────────────────────────────────────────────────────────────┐ | |
| @@ -337,152 +513,90 @@ | |||
| 337 | 513 | # Clear cache | |
| 338 | 514 | php /var/www/pterodactyl/artisan config:clear | |
| 339 | 515 | php /var/www/pterodactyl/artisan cache:clear | |
| 516 | + | php /var/www/pterodactyl/artisan view:clear | |
| 517 | + | ||
| 518 | + | # Check MySQL status | |
| 519 | + | systemctl status mysql | |
| 520 | + | mysql -u root -p -e "SHOW DATABASES;" | |
| 521 | + | ||
| 522 | + | # Check open ports | |
| 523 | + | netstat -tlnp | grep -E ':80|:443|:8080|:2022' | |
| 524 | + | ||
| 525 | + | # Check if Wings can connect to panel | |
| 526 | + | curl -I https://panel.your-domain.com | |
| 340 | 527 | ||
| 341 | 528 | ||
| 342 | 529 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 343 | - | │ POST-INSTALLATION: WINGS SETUP │ | |
| 530 | + | │ BACKUP COMMANDS │ | |
| 344 | 531 | └─────────────────────────────────────────────────────────────────┘ | |
| 345 | 532 | ||
| 346 | - | 1. Login to panel: http://YOUR_SERVER_IP | |
| 347 | - | ||
| 348 | - | 2. Go to: Admin → Nodes → Create New | |
| 349 | - | ||
| 350 | - | 3. Fill in: | |
| 351 | - | • Name: Main Node | |
| 352 | - | • Description: (optional) | |
| 353 | - | • Location: (optional) | |
| 354 | - | • Allow Automatic Allocation: Yes | |
| 355 | - | • FQDN: YOUR_SERVER_IP or domain | |
| 356 | - | • Daemon Port: 443 | |
| 357 | - | • Communicate over SSL: Yes | |
| 358 | - | • Behind Proxy: Yes | |
| 359 | - | • Public: Yes | |
| 360 | - | ||
| 361 | - | 4. After creating, click on the node → Configuration | |
| 362 | - | ||
| 363 | - | 5. Copy the configuration code and change port 443 in it to 8080 & add | |
| 533 | + | # Backup panel files | |
| 534 | + | tar -czf /root/panel_backup_$(date +%Y%m%d).tar.gz /var/www/pterodactyl | |
| 364 | 535 | ||
| 365 | - | 6. Add allowed_origins after allowed_mounts like this | |
| 536 | + | # Backup database | |
| 537 | + | mysqldump -u root -p panel > /root/panel_db_backup_$(date +%Y%m%d).sql | |
| 538 | + | ||
| 539 | + | # Backup Wings config | |
| 540 | + | cp /etc/pterodactyl/config.yml /root/config.yml.backup | |
| 541 | + | ||
| 542 | + | # Backup Nginx config | |
| 543 | + | cp -r /etc/nginx/sites-available /root/nginx_backup/ | |
| 544 | + | ||
| 545 | + | # Restore database | |
| 546 | + | mysql -u root -p panel < /root/panel_db_backup_YYYYMMDD.sql | |
| 366 | 547 | ||
| 367 | - | allowed_mounts: [] | |
| 368 | - | allowed_origins: | |
| 369 | - | - https://pterodactyl.entitybtw.ru | |
| 370 | - | ||
| 371 | - | 7. Save to: /etc/pterodactyl/config.yml | |
| 372 | - | ||
| 373 | - | 8. Start Wings: | |
| 374 | - | systemctl start wings | |
| 375 | - | systemctl enable wings | |
| 376 | 548 | ||
| 377 | 549 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 378 | - | │ NGINX REVERSE PROXY EXAMPLE CFG │ | |
| 550 | + | │ SECURITY RECOMMENDATIONS │ | |
| 379 | 551 | └─────────────────────────────────────────────────────────────────┘ | |
| 380 | 552 | ||
| 381 | - | upstream pterodactyl { | |
| 382 | - | server 100.64.0.17:80; | |
| 383 | - | } | |
| 384 | - | ||
| 385 | - | upstream pterodactyl_ws { | |
| 386 | - | server 100.64.0.17:8080; | |
| 387 | - | } | |
| 388 | - | ||
| 389 | - | server { | |
| 390 | - | listen 80; | |
| 391 | - | server_name pterodactyl.entitybtw.ru; | |
| 392 | - | return 301 https://$server_name$request_uri; | |
| 393 | - | } | |
| 394 | - | ||
| 395 | - | server { | |
| 396 | - | listen 443 ssl; | |
| 397 | - | # http2 on; | |
| 398 | - | server_name pterodactyl.entitybtw.ru; | |
| 399 | - | ||
| 400 | - | ssl_certificate /etc/letsencrypt/live/pterodactyl.entitybtw.ru/fullchain.pem; | |
| 401 | - | ssl_certificate_key /etc/letsencrypt/live/pterodactyl.entitybtw.ru/privkey.pem; | |
| 402 | - | include /etc/letsencrypt/options-ssl-nginx.conf; | |
| 403 | - | ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; | |
| 404 | - | ||
| 405 | - | client_max_body_size 10G; | |
| 406 | - | ||
| 407 | - | location = /api/system { | |
| 408 | - | proxy_pass http://pterodactyl_ws; | |
| 409 | - | proxy_http_version 1.1; | |
| 410 | - | proxy_set_header Upgrade $http_upgrade; | |
| 411 | - | proxy_set_header Connection "upgrade"; | |
| 412 | - | proxy_set_header Host $host; | |
| 413 | - | proxy_set_header X-Real-IP $remote_addr; | |
| 414 | - | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 415 | - | proxy_set_header X-Forwarded-Proto https; | |
| 416 | - | proxy_set_header Origin https://pterodactyl.entitybtw.ru; | |
| 417 | - | proxy_buffering off; | |
| 418 | - | } | |
| 419 | - | ||
| 420 | - | location /upload/ { | |
| 421 | - | proxy_pass http://pterodactyl_ws; | |
| 422 | - | proxy_http_version 1.1; | |
| 423 | - | proxy_set_header Host $host; | |
| 424 | - | proxy_set_header X-Real-IP $remote_addr; | |
| 425 | - | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 426 | - | proxy_set_header X-Forwarded-Proto https; | |
| 427 | - | proxy_set_header Origin https://pterodactyl.entitybtw.ru; | |
| 428 | - | client_max_body_size 10G; | |
| 429 | - | } | |
| 430 | - | ||
| 431 | - | location /download/ { | |
| 432 | - | proxy_pass http://pterodactyl_ws; | |
| 433 | - | proxy_http_version 1.1; | |
| 434 | - | proxy_set_header Host $host; | |
| 435 | - | proxy_set_header X-Real-IP $remote_addr; | |
| 436 | - | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 437 | - | proxy_set_header X-Forwarded-Proto https; | |
| 438 | - | proxy_set_header Origin https://pterodactyl.entitybtw.ru; | |
| 439 | - | proxy_buffering off; | |
| 440 | - | } | |
| 441 | - | ||
| 442 | - | location ~ ^/api/servers { | |
| 443 | - | proxy_pass http://pterodactyl_ws; | |
| 444 | - | proxy_http_version 1.1; | |
| 445 | - | proxy_set_header Upgrade $http_upgrade; | |
| 446 | - | proxy_set_header Connection "upgrade"; | |
| 447 | - | proxy_set_header Host $host; | |
| 448 | - | proxy_set_header X-Real-IP $remote_addr; | |
| 449 | - | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 450 | - | proxy_set_header X-Forwarded-Proto https; | |
| 451 | - | proxy_set_header Origin https://pterodactyl.entitybtw.ru; | |
| 452 | - | proxy_read_timeout 3600s; | |
| 453 | - | proxy_send_timeout 3600s; | |
| 454 | - | proxy_buffering off; | |
| 455 | - | } | |
| 456 | - | ||
| 457 | - | location / { | |
| 458 | - | proxy_pass http://pterodactyl; | |
| 459 | - | proxy_set_header Host $host; | |
| 460 | - | proxy_set_header X-Real-IP $remote_addr; | |
| 461 | - | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 462 | - | proxy_set_header X-Forwarded-Proto https; | |
| 463 | - | } | |
| 464 | - | } | |
| 553 | + | [1] Change default admin password after first login | |
| 554 | + | [2] Enable 2FA for admin accounts | |
| 555 | + | [3] Use HTTPS with valid SSL certificates (Let's Encrypt) | |
| 556 | + | [4] Regular backups: .env, database, Wings config | |
| 557 | + | [5] Update regularly: apt update && apt upgrade | |
| 558 | + | [6] Monitor logs: /var/www/pterodactyl/storage/logs/ | |
| 559 | + | [7] Set up fail2ban to protect SSH and panel | |
| 560 | + | [8] Use strong passwords (min 12 chars, mix of chars) | |
| 561 | + | [9] Limit SSH access: edit /etc/ssh/sshd_config | |
| 562 | + | [10] Disable root login: PermitRootLogin no | |
| 563 | + | [11] Use firewall: ufw enable (if not already) | |
| 564 | + | [12] Change default MySQL port (3306) if exposed externally | |
| 465 | 565 | ||
| 466 | 566 | ||
| 467 | 567 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 468 | - | │ IMPORTANT NOTES │ | |
| 568 | + | │ IMPORTANT NOTES │ | |
| 469 | 569 | └─────────────────────────────────────────────────────────────────┘ | |
| 470 | 570 | ||
| 471 | - | ⚠️ SAVE ALL PASSWORDS: Panel DB, Admin user, Wings DB | |
| 571 | + | [*] SAVE ALL PASSWORDS: Panel DB, Admin user, Wings DB | |
| 572 | + | ||
| 573 | + | [*] Wait for migrations to complete (may take 2-5 minutes) | |
| 472 | 574 | ||
| 473 | - | ⚠️ Wait for migrations to complete (may take 2-5 minutes) | |
| 575 | + | [*] If using IP instead of domain, you'll see a security warning | |
| 576 | + | (This is normal, just proceed) | |
| 474 | 577 | ||
| 475 | - | ⚠️ If using IP instead of domain, you'll see a security warning | |
| 476 | - | (This is normal, just proceed) | |
| 578 | + | [*] For production, always use a domain with SSL certificates | |
| 477 | 579 | ||
| 478 | - | ⚠️ For production, use a domain with SSL certificates | |
| 580 | + | [*] Backup /var/www/pterodactyl/.env file after installation | |
| 479 | 581 | ||
| 480 | - | ⚠️ Backup /var/www/pterodactyl/.env file after installation | |
| 582 | + | [*] Keep your panel and Wings versions in sync | |
| 583 | + | ||
| 584 | + | [*] Monitor disk space - server files can grow quickly! | |
| 585 | + | ||
| 586 | + | [*] Use separate database for each server if hosting many nodes | |
| 481 | 587 | ||
| 482 | 588 | ||
| 483 | - | ╔══════════════════════════════════════════════════════════════════╗ | |
| 484 | - | ║ INSTALLATION SUCCESS! ║ | |
| 485 | - | ║ ║ | |
| 486 | - | ║ Your Pterodactyl Panel is now ready for use! ║ | |
| 487 | - | ║ ║ | |
| 488 | - | ╚══════════════════════════════════════════════════════════════════╝ | |
| 589 | + | +------------------------------------------------------------------+ | |
| 590 | + | | INSTALLATION SUCCESS! | | |
| 591 | + | | | | |
| 592 | + | | Your Pterodactyl Panel is now ready for use! | | |
| 593 | + | | | | |
| 594 | + | | Documentation: https://pterodactyl.io/docs | | |
| 595 | + | | | | |
| 596 | + | | Next steps: | | |
| 597 | + | | 1. Configure Wings (see post-installation) | | |
| 598 | + | | 2. Set up your first game server | | |
| 599 | + | | 3. Configure email notifications | | |
| 600 | + | | 4. Set up regular backups | | |
| 601 | + | | 5. Monitor performance | | |
| 602 | + | +------------------------------------------------------------------+ | |
entitybtw revised this gist 4 weeks ago. Go to revision
1 file changed, 190 insertions, 108 deletions
pterodactyl install guide.txt
| @@ -1,10 +1,10 @@ | |||
| 1 | 1 | ╔══════════════════════════════════════════════════════════════════╗ | |
| 2 | - | ║ PTERODACTYL PANEL & WINGS INSTALLATION GUIDE (ASCII) ║ | |
| 3 | - | ║ Complete Step-by-Step Walkthrough ║ | |
| 2 | + | ║ PTERODACTYL PANEL & WINGS INSTALLATION GUIDE (ASCII) ║ | |
| 3 | + | ║ Complete Step-by-Step Walkthrough ║ | |
| 4 | 4 | ╚══════════════════════════════════════════════════════════════════╝ | |
| 5 | 5 | ||
| 6 | 6 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 7 | - | │ STEP 1: START THE INSTALLATION │ | |
| 7 | + | │ STEP 1: START THE INSTALLATION │ | |
| 8 | 8 | └─────────────────────────────────────────────────────────────────┘ | |
| 9 | 9 | ||
| 10 | 10 | Run this command as root: | |
| @@ -13,14 +13,14 @@ | |||
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | 15 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 16 | - | │ STEP 2: SELECT INSTALLATION TYPE │ | |
| 16 | + | │ STEP 2: SELECT INSTALLATION TYPE │ | |
| 17 | 17 | └─────────────────────────────────────────────────────────────────┘ | |
| 18 | 18 | ||
| 19 | 19 | ┌─────────────────────────────────────────────────────────────┐ | |
| 20 | - | │ Which version of Pterodactyl do you want to install? │ | |
| 21 | - | │ 1) Panel │ | |
| 22 | - | │ 2) Wings │ | |
| 23 | - | │ 3) Both (Panel & Wings) │ | |
| 20 | + | │ Which version of Pterodactyl do you want to install? │ | |
| 21 | + | │ 1) Panel │ | |
| 22 | + | │ 2) Wings │ | |
| 23 | + | │ 3) Both (Panel & Wings) │ | |
| 24 | 24 | └─────────────────────────────────────────────────────────────┘ | |
| 25 | 25 | ||
| 26 | 26 | >>> SELECT: 3 (BOTH) | |
| @@ -29,11 +29,11 @@ | |||
| 29 | 29 | ||
| 30 | 30 | ||
| 31 | 31 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 32 | - | │ STEP 3: CONFIRM INSTALLATION │ | |
| 32 | + | │ STEP 3: CONFIRM INSTALLATION │ | |
| 33 | 33 | └─────────────────────────────────────────────────────────────────┘ | |
| 34 | 34 | ||
| 35 | 35 | ┌─────────────────────────────────────────────────────────────┐ | |
| 36 | - | │ * Are you sure you want to continue? (y/N): │ | |
| 36 | + | │ * Are you sure you want to continue? (y/N): │ | |
| 37 | 37 | └─────────────────────────────────────────────────────────────┘ | |
| 38 | 38 | ||
| 39 | 39 | >>> SELECT: y (YES) | |
| @@ -42,13 +42,13 @@ | |||
| 42 | 42 | ||
| 43 | 43 | ||
| 44 | 44 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 45 | - | │ STEP 4: DATABASE CONFIGURATION │ | |
| 45 | + | │ STEP 4: DATABASE CONFIGURATION │ | |
| 46 | 46 | └─────────────────────────────────────────────────────────────────┘ | |
| 47 | 47 | ||
| 48 | 48 | ┌─────────────────────────────────────────────────────────────┐ | |
| 49 | - | │ * Do you want to automatically configure the database? │ | |
| 50 | - | │ (y/N): │ | |
| 51 | - | └─────────────────────────────────────────────────────────────────┘ | |
| 49 | + | │ * Do you want to automatically configure the database? │ | |
| 50 | + | │ (y/N): │ | |
| 51 | + | └─────────────────────────────────────────────────────────────┘ | |
| 52 | 52 | ||
| 53 | 53 | >>> SELECT: y (YES) | |
| 54 | 54 | ||
| @@ -56,17 +56,17 @@ | |||
| 56 | 56 | ||
| 57 | 57 | ||
| 58 | 58 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 59 | - | │ STEP 5: DATABASE USERNAME & PASSWORD │ | |
| 59 | + | │ STEP 5: DATABASE USERNAME & PASSWORD │ | |
| 60 | 60 | └─────────────────────────────────────────────────────────────────┘ | |
| 61 | 61 | ||
| 62 | 62 | ┌─────────────────────────────────────────────────────────────┐ | |
| 63 | - | │ * Database host username (pterodactyluser): │ | |
| 63 | + | │ * Database host username (pterodactyluser): │ | |
| 64 | 64 | └─────────────────────────────────────────────────────────────┘ | |
| 65 | 65 | ||
| 66 | 66 | >>> LEAVE BLANK: Press ENTER (uses default) | |
| 67 | 67 | ||
| 68 | 68 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 69 | - | │ * Database host password: │ | |
| 69 | + | │ * Database host password: │ | |
| 70 | 70 | └─────────────────────────────────────────────────────────────────┘ | |
| 71 | 71 | ||
| 72 | 72 | >>> IMPORTANT! Type a strong password (write it down!) | |
| @@ -75,12 +75,12 @@ | |||
| 75 | 75 | ||
| 76 | 76 | ||
| 77 | 77 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 78 | - | │ STEP 6: MYSQL EXTERNAL ACCESS │ | |
| 78 | + | │ STEP 6: MYSQL EXTERNAL ACCESS │ | |
| 79 | 79 | └─────────────────────────────────────────────────────────────────┘ | |
| 80 | 80 | ||
| 81 | 81 | ┌─────────────────────────────────────────────────────────────┐ | |
| 82 | - | │ * Do you want to configure MySQL to be accessed │ | |
| 83 | - | │ externally? (y/N): │ | |
| 82 | + | │ * Do you want to configure MySQL to be accessed │ | |
| 83 | + | │ externally? (y/N): │ | |
| 84 | 84 | └─────────────────────────────────────────────────────────────┘ | |
| 85 | 85 | ||
| 86 | 86 | >>> SELECT: n (NO) | |
| @@ -89,18 +89,18 @@ | |||
| 89 | 89 | ||
| 90 | 90 | ||
| 91 | 91 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 92 | - | │ STEP 7: EMAIL CONFIGURATION │ | |
| 92 | + | │ STEP 7: EMAIL CONFIGURATION │ | |
| 93 | 93 | └─────────────────────────────────────────────────────────────────┘ | |
| 94 | 94 | ||
| 95 | 95 | ┌─────────────────────────────────────────────────────────────┐ | |
| 96 | - | │ * Enter your email address for the panel: │ | |
| 96 | + | │ * Enter your email address for the panel: │ | |
| 97 | 97 | └─────────────────────────────────────────────────────────────┘ | |
| 98 | 98 | ||
| 99 | 99 | >>> Type your email: admin@example.com | |
| 100 | 100 | > Press ENTER | |
| 101 | 101 | ||
| 102 | 102 | ┌─────────────────────────────────────────────────────────────┐ | |
| 103 | - | │ * Enter your company/panel name: │ | |
| 103 | + | │ * Enter your company/panel name: │ | |
| 104 | 104 | └─────────────────────────────────────────────────────────────┘ | |
| 105 | 105 | ||
| 106 | 106 | >>> Type a name: My Game Panel | |
| @@ -108,11 +108,11 @@ | |||
| 108 | 108 | ||
| 109 | 109 | ||
| 110 | 110 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 111 | - | │ STEP 8: CREATE ADMIN USER │ | |
| 111 | + | │ STEP 8: CREATE ADMIN USER │ | |
| 112 | 112 | └─────────────────────────────────────────────────────────────────┘ | |
| 113 | 113 | ||
| 114 | 114 | ┌─────────────────────────────────────────────────────────────┐ | |
| 115 | - | │ * Would you like to create an admin user? (y/N): │ | |
| 115 | + | │ * Would you like to create an admin user? (y/N): │ | |
| 116 | 116 | └─────────────────────────────────────────────────────────────┘ | |
| 117 | 117 | ||
| 118 | 118 | >>> SELECT: y (YES) | |
| @@ -120,31 +120,31 @@ | |||
| 120 | 120 | > Type "y" and press ENTER | |
| 121 | 121 | ||
| 122 | 122 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 123 | - | │ * Enter your email address: │ | |
| 123 | + | │ * Enter your email address: │ | |
| 124 | 124 | └─────────────────────────────────────────────────────────────────┘ | |
| 125 | 125 | ||
| 126 | 126 | >>> Type your admin email: admin@example.com | |
| 127 | 127 | ||
| 128 | 128 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 129 | - | │ * Enter your username: │ | |
| 129 | + | │ * Enter your username: │ | |
| 130 | 130 | └─────────────────────────────────────────────────────────────────┘ | |
| 131 | 131 | ||
| 132 | 132 | >>> Type your username: admin | |
| 133 | 133 | ||
| 134 | 134 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 135 | - | │ * Enter your first name: │ | |
| 135 | + | │ * Enter your first name: │ | |
| 136 | 136 | └─────────────────────────────────────────────────────────────────┘ | |
| 137 | 137 | ||
| 138 | 138 | >>> Type your first name: John | |
| 139 | 139 | ||
| 140 | 140 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 141 | - | │ * Enter your last name: │ | |
| 141 | + | │ * Enter your last name: │ | |
| 142 | 142 | └─────────────────────────────────────────────────────────────────┘ | |
| 143 | 143 | ||
| 144 | 144 | >>> Type your last name: Doe | |
| 145 | 145 | ||
| 146 | 146 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 147 | - | │ * Enter your password: │ | |
| 147 | + | │ * Enter your password: │ | |
| 148 | 148 | └─────────────────────────────────────────────────────────────────┘ | |
| 149 | 149 | ||
| 150 | 150 | >>> IMPORTANT! Type a strong password (write it down!) | |
| @@ -153,21 +153,21 @@ | |||
| 153 | 153 | ||
| 154 | 154 | ||
| 155 | 155 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 156 | - | │ STEP 9: SSL CONFIGURATION (PANEL) │ | |
| 156 | + | │ STEP 9: SSL CONFIGURATION (PANEL) │ | |
| 157 | 157 | └─────────────────────────────────────────────────────────────────┘ | |
| 158 | 158 | ||
| 159 | 159 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 160 | - | │ * Do you want to use Let's Encrypt SSL? (y/N): │ | |
| 160 | + | │ * Do you want to use Let's Encrypt SSL? (y/N): │ | |
| 161 | 161 | └─────────────────────────────────────────────────────────────────┘ | |
| 162 | 162 | ||
| 163 | 163 | ╔══════════════════════════════════════════════════════════════════╗ | |
| 164 | - | ║ IF YOU HAVE A DOMAIN NAME: ║ | |
| 165 | - | ║ SELECT: y (YES) ║ | |
| 166 | - | ║ Then enter your domain: panel.example.com ║ | |
| 167 | - | ║ ║ | |
| 168 | - | ║ IF YOU ONLY HAVE AN IP ADDRESS (NO DOMAIN): ║ | |
| 169 | - | ║ SELECT: n (NO) ║ | |
| 170 | - | ║ The panel will use HTTP (port 80) ║ | |
| 164 | + | ║ IF YOU HAVE A DOMAIN NAME: ║ | |
| 165 | + | ║ SELECT: y (YES) ║ | |
| 166 | + | ║ Then enter your domain: panel.example.com ║ | |
| 167 | + | ║ ║ | |
| 168 | + | ║ IF YOU ONLY HAVE AN IP ADDRESS (NO DOMAIN): ║ | |
| 169 | + | ║ SELECT: n (NO) ║ | |
| 170 | + | ║ The panel will use HTTP (port 80) ║ | |
| 171 | 171 | ╚══════════════════════════════════════════════════════════════════╝ | |
| 172 | 172 | ||
| 173 | 173 | >>> Choose based on your setup | |
| @@ -175,12 +175,12 @@ | |||
| 175 | 175 | ||
| 176 | 176 | ||
| 177 | 177 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 178 | - | │ STEP 10: WINGS CONFIGURATION (UFW FIREWALL) │ | |
| 178 | + | │ STEP 10: WINGS CONFIGURATION (UFW FIREWALL) │ | |
| 179 | 179 | └─────────────────────────────────────────────────────────────────┘ | |
| 180 | 180 | ||
| 181 | 181 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 182 | - | │ * Do you want to automatically configure UFW (firewall)? │ | |
| 183 | - | │ (y/N): │ | |
| 182 | + | │ * Do you want to automatically configure UFW (firewall)? │ | |
| 183 | + | │ (y/N): │ | |
| 184 | 184 | └─────────────────────────────────────────────────────────────────┘ | |
| 185 | 185 | ||
| 186 | 186 | >>> SELECT: y (YES) - Recommended! | |
| @@ -189,12 +189,12 @@ | |||
| 189 | 189 | ||
| 190 | 190 | ||
| 191 | 191 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 192 | - | │ STEP 11: DATABASE USER FOR WINGS │ | |
| 192 | + | │ STEP 11: DATABASE USER FOR WINGS │ | |
| 193 | 193 | └─────────────────────────────────────────────────────────────────┘ | |
| 194 | 194 | ||
| 195 | 195 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 196 | - | │ * Do you want to configure a user for database hosts? │ | |
| 197 | - | │ (y/N): │ | |
| 196 | + | │ * Do you want to configure a user for database hosts? │ | |
| 197 | + | │ (y/N): │ | |
| 198 | 198 | └─────────────────────────────────────────────────────────────────┘ | |
| 199 | 199 | ||
| 200 | 200 | >>> SELECT: y (YES) | |
| @@ -202,13 +202,13 @@ | |||
| 202 | 202 | > Type "y" and press ENTER | |
| 203 | 203 | ||
| 204 | 204 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 205 | - | │ * Database host username (pterodactyluser): │ | |
| 205 | + | │ * Database host username (pterodactyluser): │ | |
| 206 | 206 | └─────────────────────────────────────────────────────────────────┘ | |
| 207 | 207 | ||
| 208 | 208 | >>> LEAVE BLANK: Press ENTER | |
| 209 | 209 | ||
| 210 | 210 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 211 | - | │ * Database host password: │ | |
| 211 | + | │ * Database host password: │ | |
| 212 | 212 | └─────────────────────────────────────────────────────────────────┘ | |
| 213 | 213 | ||
| 214 | 214 | >>> Type a password (write it down!) | |
| @@ -216,8 +216,8 @@ | |||
| 216 | 216 | > Press ENTER | |
| 217 | 217 | ||
| 218 | 218 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 219 | - | │ * Do you want to configure MySQL to be accessed externally? │ | |
| 220 | - | │ (y/N): │ | |
| 219 | + | │ * Do you want to configure MySQL to be accessed externally? │ | |
| 220 | + | │ (y/N): │ | |
| 221 | 221 | └─────────────────────────────────────────────────────────────────┘ | |
| 222 | 222 | ||
| 223 | 223 | >>> SELECT: n (NO) | |
| @@ -226,34 +226,25 @@ | |||
| 226 | 226 | ||
| 227 | 227 | ||
| 228 | 228 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 229 | - | │ STEP 12: SSL FOR WINGS │ | |
| 229 | + | │ STEP 12: SSL FOR WINGS │ | |
| 230 | 230 | └─────────────────────────────────────────────────────────────────┘ | |
| 231 | 231 | ||
| 232 | 232 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 233 | - | │ * Do you want to automatically configure HTTPS using │ | |
| 234 | - | │ Let's Encrypt? (y/N): │ | |
| 233 | + | │ * Do you want to automatically configure HTTPS using │ | |
| 234 | + | │ Let's Encrypt? (y/N): │ | |
| 235 | 235 | └─────────────────────────────────────────────────────────────────┘ | |
| 236 | 236 | ||
| 237 | - | ╔══════════════════════════════════════════════════════════════════╗ | |
| 238 | - | ║ IF YOU HAVE A DOMAIN (FQDN): ║ | |
| 239 | - | ║ SELECT: y (YES) ║ | |
| 240 | - | ║ Then enter your domain for Wings: node.example.com ║ | |
| 241 | - | ║ ║ | |
| 242 | - | ║ IF YOU ONLY HAVE IP ADDRESS: ║ | |
| 243 | - | ║ SELECT: n (NO) ║ | |
| 244 | - | ║ Wings will use HTTP ║ | |
| 245 | - | ╚══════════════════════════════════════════════════════════════════╝ | |
| 237 | + | >>> SELECT: n (NO) | |
| 246 | 238 | ||
| 247 | - | >>> Choose based on your setup | |
| 248 | - | > Type "y" or "n" and press ENTER | |
| 239 | + | > Type "n" and press ENTER | |
| 249 | 240 | ||
| 250 | 241 | ||
| 251 | 242 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 252 | - | │ STEP 13: FINAL CONFIRMATION │ | |
| 243 | + | │ STEP 13: FINAL CONFIRMATION │ | |
| 253 | 244 | └─────────────────────────────────────────────────────────────────┘ | |
| 254 | 245 | ||
| 255 | 246 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 256 | - | │ * Proceed with installation? (y/N): │ | |
| 247 | + | │ * Proceed with installation? (y/N): │ | |
| 257 | 248 | └─────────────────────────────────────────────────────────────────┘ | |
| 258 | 249 | ||
| 259 | 250 | >>> SELECT: y (YES) | |
| @@ -263,30 +254,28 @@ | |||
| 263 | 254 | ||
| 264 | 255 | ||
| 265 | 256 | ╔══════════════════════════════════════════════════════════════════╗ | |
| 266 | - | ║ INSTALLATION COMPLETE! ║ | |
| 267 | - | ║ ║ | |
| 268 | - | ║ Your Pterodactyl Panel is now installed! ║ | |
| 269 | - | ║ ║ | |
| 270 | - | ║ Access your panel at: ║ | |
| 271 | - | ║ http://YOUR_SERVER_IP ║ | |
| 272 | - | ║ or ║ | |
| 273 | - | ║ https://YOUR_DOMAIN (if SSL enabled) ║ | |
| 274 | - | ║ ║ | |
| 275 | - | ║ Login with: ║ | |
| 276 | - | ║ Email: [your admin email] ║ | |
| 277 | - | ║ Password: [your admin password] ║ | |
| 278 | - | ║ ║ | |
| 279 | - | ║ ⚠️ IMPORTANT: Your Wings still needs to be configured! ║ | |
| 280 | - | ║ 1. Log into the panel ║ | |
| 281 | - | ║ 2. Go to Admin → Nodes → Create New ║ | |
| 282 | - | ║ 3. Generate the configuration file ║ | |
| 283 | - | ║ 4. Copy it to /etc/pterodactyl/config.yml ║ | |
| 284 | - | ║ 5. Run: systemctl start wings ║ | |
| 257 | + | ║ INSTALLATION COMPLETE! ║ | |
| 258 | + | ║ ║ | |
| 259 | + | ║ Your Pterodactyl Panel is now installed! ║ | |
| 260 | + | ║ ║ | |
| 261 | + | ║ Access your panel at: ║ | |
| 262 | + | ║ http://YOUR_SERVER_IP ║ ║ | |
| 263 | + | ║ ║ | |
| 264 | + | ║ Login with: ║ | |
| 265 | + | ║ Email: [your admin email] ║ | |
| 266 | + | ║ Password: [your admin password] ║ | |
| 267 | + | ║ ║ | |
| 268 | + | ║ ⚠️ IMPORTANT: Your Wings still needs to be configured! ║ | |
| 269 | + | ║ 1. Log into the panel ║ | |
| 270 | + | ║ 2. Go to Admin → Nodes → Create New ║ | |
| 271 | + | ║ 3. Generate the configuration file ║ | |
| 272 | + | ║ 4. Copy it to /etc/pterodactyl/config.yml ║ | |
| 273 | + | ║ 5. Run: systemctl start wings ║ | |
| 285 | 274 | ╚══════════════════════════════════════════════════════════════════╝ | |
| 286 | 275 | ||
| 287 | 276 | ||
| 288 | 277 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 289 | - | │ QUICK REFERENCE SHEET │ | |
| 278 | + | │ QUICK REFERENCE SHEET │ | |
| 290 | 279 | └─────────────────────────────────────────────────────────────────┘ | |
| 291 | 280 | ||
| 292 | 281 | ┌──────────────┬─────────────┬──────────────────────────────┐ | |
| @@ -299,7 +288,7 @@ | |||
| 299 | 288 | │ DB password │ [TYPE] │ Strong password (save it) │ | |
| 300 | 289 | │ MySQL ext │ n │ No external access needed │ | |
| 301 | 290 | │ Admin user? │ y │ Create admin account │ | |
| 302 | - | │ Let's Encrypt│ n or y │ n = IP only, y = domain │ | |
| 291 | + | │ Let's Encrypt│ n │ n = IP only, y = domain │ | |
| 303 | 292 | │ Configure │ y │ Auto open firewall ports │ | |
| 304 | 293 | │ UFW? │ │ │ | |
| 305 | 294 | │ Wings DB │ y │ Create DB user for Wings │ | |
| @@ -308,19 +297,19 @@ | |||
| 308 | 297 | ||
| 309 | 298 | ||
| 310 | 299 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 311 | - | │ FIREWALL PORTS TO OPEN │ | |
| 300 | + | │ FIREWALL PORTS TO OPEN │ | |
| 312 | 301 | └─────────────────────────────────────────────────────────────────┘ | |
| 313 | 302 | ||
| 314 | 303 | ┌─────────────────────────────────────────────────────────────┐ | |
| 315 | - | │ Port 80 - HTTP (Web Panel) │ | |
| 316 | - | │ Port 443 - HTTPS (Web Panel) - if SSL enabled │ | |
| 317 | - | │ Port 8080 - Wings WebSocket (Server communication) │ | |
| 318 | - | │ Port 2022 - SFTP (File transfer for servers) │ | |
| 304 | + | │ Port 80 - HTTP (Web Panel) │ | |
| 305 | + | │ Port 443 - HTTPS (Web Panel) - if SSL enabled │ | |
| 306 | + | │ Port 8080 - Wings WebSocket (Server communication) │ | |
| 307 | + | │ Port 2022 - SFTP (File transfer for servers) │ | |
| 319 | 308 | └─────────────────────────────────────────────────────────────┘ | |
| 320 | 309 | ||
| 321 | 310 | ||
| 322 | 311 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 323 | - | │ TROUBLESHOOTING COMMANDS │ | |
| 312 | + | │ TROUBLESHOOTING COMMANDS │ | |
| 324 | 313 | └─────────────────────────────────────────────────────────────────┘ | |
| 325 | 314 | ||
| 326 | 315 | # Check panel status | |
| @@ -351,7 +340,7 @@ | |||
| 351 | 340 | ||
| 352 | 341 | ||
| 353 | 342 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 354 | - | │ POST-INSTALLATION: WINGS SETUP │ | |
| 343 | + | │ POST-INSTALLATION: WINGS SETUP │ | |
| 355 | 344 | └─────────────────────────────────────────────────────────────────┘ | |
| 356 | 345 | ||
| 357 | 346 | 1. Login to panel: http://YOUR_SERVER_IP | |
| @@ -361,24 +350,122 @@ | |||
| 361 | 350 | 3. Fill in: | |
| 362 | 351 | • Name: Main Node | |
| 363 | 352 | • Description: (optional) | |
| 353 | + | • Location: (optional) | |
| 354 | + | • Allow Automatic Allocation: Yes | |
| 364 | 355 | • FQDN: YOUR_SERVER_IP or domain | |
| 365 | - | • Port: 8080 | |
| 366 | - | • Behind Proxy: No | |
| 356 | + | • Daemon Port: 443 | |
| 357 | + | • Communicate over SSL: Yes | |
| 358 | + | • Behind Proxy: Yes | |
| 367 | 359 | • Public: Yes | |
| 368 | 360 | ||
| 369 | 361 | 4. After creating, click on the node → Configuration | |
| 370 | 362 | ||
| 371 | - | 5. Copy the configuration code | |
| 363 | + | 5. Copy the configuration code and change port 443 in it to 8080 & add | |
| 364 | + | ||
| 365 | + | 6. Add allowed_origins after allowed_mounts like this | |
| 366 | + | ||
| 367 | + | allowed_mounts: [] | |
| 368 | + | allowed_origins: | |
| 369 | + | - https://pterodactyl.entitybtw.ru | |
| 372 | 370 | ||
| 373 | - | 6. Save to: /etc/pterodactyl/config.yml | |
| 371 | + | 7. Save to: /etc/pterodactyl/config.yml | |
| 374 | 372 | ||
| 375 | - | 7. Start Wings: | |
| 373 | + | 8. Start Wings: | |
| 376 | 374 | systemctl start wings | |
| 377 | 375 | systemctl enable wings | |
| 378 | 376 | ||
| 377 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 378 | + | │ NGINX REVERSE PROXY EXAMPLE CFG │ | |
| 379 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 380 | + | ||
| 381 | + | upstream pterodactyl { | |
| 382 | + | server 100.64.0.17:80; | |
| 383 | + | } | |
| 384 | + | ||
| 385 | + | upstream pterodactyl_ws { | |
| 386 | + | server 100.64.0.17:8080; | |
| 387 | + | } | |
| 388 | + | ||
| 389 | + | server { | |
| 390 | + | listen 80; | |
| 391 | + | server_name pterodactyl.entitybtw.ru; | |
| 392 | + | return 301 https://$server_name$request_uri; | |
| 393 | + | } | |
| 394 | + | ||
| 395 | + | server { | |
| 396 | + | listen 443 ssl; | |
| 397 | + | # http2 on; | |
| 398 | + | server_name pterodactyl.entitybtw.ru; | |
| 399 | + | ||
| 400 | + | ssl_certificate /etc/letsencrypt/live/pterodactyl.entitybtw.ru/fullchain.pem; | |
| 401 | + | ssl_certificate_key /etc/letsencrypt/live/pterodactyl.entitybtw.ru/privkey.pem; | |
| 402 | + | include /etc/letsencrypt/options-ssl-nginx.conf; | |
| 403 | + | ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; | |
| 404 | + | ||
| 405 | + | client_max_body_size 10G; | |
| 406 | + | ||
| 407 | + | location = /api/system { | |
| 408 | + | proxy_pass http://pterodactyl_ws; | |
| 409 | + | proxy_http_version 1.1; | |
| 410 | + | proxy_set_header Upgrade $http_upgrade; | |
| 411 | + | proxy_set_header Connection "upgrade"; | |
| 412 | + | proxy_set_header Host $host; | |
| 413 | + | proxy_set_header X-Real-IP $remote_addr; | |
| 414 | + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 415 | + | proxy_set_header X-Forwarded-Proto https; | |
| 416 | + | proxy_set_header Origin https://pterodactyl.entitybtw.ru; | |
| 417 | + | proxy_buffering off; | |
| 418 | + | } | |
| 419 | + | ||
| 420 | + | location /upload/ { | |
| 421 | + | proxy_pass http://pterodactyl_ws; | |
| 422 | + | proxy_http_version 1.1; | |
| 423 | + | proxy_set_header Host $host; | |
| 424 | + | proxy_set_header X-Real-IP $remote_addr; | |
| 425 | + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 426 | + | proxy_set_header X-Forwarded-Proto https; | |
| 427 | + | proxy_set_header Origin https://pterodactyl.entitybtw.ru; | |
| 428 | + | client_max_body_size 10G; | |
| 429 | + | } | |
| 430 | + | ||
| 431 | + | location /download/ { | |
| 432 | + | proxy_pass http://pterodactyl_ws; | |
| 433 | + | proxy_http_version 1.1; | |
| 434 | + | proxy_set_header Host $host; | |
| 435 | + | proxy_set_header X-Real-IP $remote_addr; | |
| 436 | + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 437 | + | proxy_set_header X-Forwarded-Proto https; | |
| 438 | + | proxy_set_header Origin https://pterodactyl.entitybtw.ru; | |
| 439 | + | proxy_buffering off; | |
| 440 | + | } | |
| 441 | + | ||
| 442 | + | location ~ ^/api/servers { | |
| 443 | + | proxy_pass http://pterodactyl_ws; | |
| 444 | + | proxy_http_version 1.1; | |
| 445 | + | proxy_set_header Upgrade $http_upgrade; | |
| 446 | + | proxy_set_header Connection "upgrade"; | |
| 447 | + | proxy_set_header Host $host; | |
| 448 | + | proxy_set_header X-Real-IP $remote_addr; | |
| 449 | + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 450 | + | proxy_set_header X-Forwarded-Proto https; | |
| 451 | + | proxy_set_header Origin https://pterodactyl.entitybtw.ru; | |
| 452 | + | proxy_read_timeout 3600s; | |
| 453 | + | proxy_send_timeout 3600s; | |
| 454 | + | proxy_buffering off; | |
| 455 | + | } | |
| 456 | + | ||
| 457 | + | location / { | |
| 458 | + | proxy_pass http://pterodactyl; | |
| 459 | + | proxy_set_header Host $host; | |
| 460 | + | proxy_set_header X-Real-IP $remote_addr; | |
| 461 | + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| 462 | + | proxy_set_header X-Forwarded-Proto https; | |
| 463 | + | } | |
| 464 | + | } | |
| 465 | + | ||
| 379 | 466 | ||
| 380 | 467 | ┌─────────────────────────────────────────────────────────────────┐ | |
| 381 | - | │ IMPORTANT NOTES │ | |
| 468 | + | │ IMPORTANT NOTES │ | |
| 382 | 469 | └─────────────────────────────────────────────────────────────────┘ | |
| 383 | 470 | ||
| 384 | 471 | ⚠️ SAVE ALL PASSWORDS: Panel DB, Admin user, Wings DB | |
| @@ -394,13 +481,8 @@ | |||
| 394 | 481 | ||
| 395 | 482 | ||
| 396 | 483 | ╔══════════════════════════════════════════════════════════════════╗ | |
| 397 | - | ║ INSTALLATION SUCCESS! ║ | |
| 398 | - | ║ ║ | |
| 399 | - | ║ Your Pterodactyl Panel is now ready for use! ║ | |
| 400 | - | ║ ║ | |
| 401 | - | ║ Documentation: https://pterodactyl.io/docs ║ | |
| 402 | - | ║ Discord: https://discord.gg/pterodactyl ║ | |
| 403 | - | ║ GitHub: https://github.com/pterodactyl/panel ║ | |
| 404 | - | ║ ║ | |
| 405 | - | ║ Need help? You can ask me anytime! ║ | |
| 484 | + | ║ INSTALLATION SUCCESS! ║ | |
| 485 | + | ║ ║ | |
| 486 | + | ║ Your Pterodactyl Panel is now ready for use! ║ | |
| 487 | + | ║ ║ | |
| 406 | 488 | ╚══════════════════════════════════════════════════════════════════╝ | |
entitybtw revised this gist 4 weeks ago. Go to revision
1 file changed, 0 insertions, 0 deletions
pterodactyl install script guide renamed to pterodactyl install guide.txt
File renamed without changes
entitybtw revised this gist 4 weeks ago. Go to revision
1 file changed, 406 insertions
pterodactyl install script guide (file created)
| @@ -0,0 +1,406 @@ | |||
| 1 | + | ╔══════════════════════════════════════════════════════════════════╗ | |
| 2 | + | ║ PTERODACTYL PANEL & WINGS INSTALLATION GUIDE (ASCII) ║ | |
| 3 | + | ║ Complete Step-by-Step Walkthrough ║ | |
| 4 | + | ╚══════════════════════════════════════════════════════════════════╝ | |
| 5 | + | ||
| 6 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 7 | + | │ STEP 1: START THE INSTALLATION │ | |
| 8 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 9 | + | ||
| 10 | + | Run this command as root: | |
| 11 | + | ||
| 12 | + | # bash <(curl -s https://pterodactyl-installer.se) | |
| 13 | + | ||
| 14 | + | ||
| 15 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 16 | + | │ STEP 2: SELECT INSTALLATION TYPE │ | |
| 17 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 18 | + | ||
| 19 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 20 | + | │ Which version of Pterodactyl do you want to install? │ | |
| 21 | + | │ 1) Panel │ | |
| 22 | + | │ 2) Wings │ | |
| 23 | + | │ 3) Both (Panel & Wings) │ | |
| 24 | + | └─────────────────────────────────────────────────────────────┘ | |
| 25 | + | ||
| 26 | + | >>> SELECT: 3 (BOTH) | |
| 27 | + | ||
| 28 | + | > Type "3" and press ENTER | |
| 29 | + | ||
| 30 | + | ||
| 31 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 32 | + | │ STEP 3: CONFIRM INSTALLATION │ | |
| 33 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 34 | + | ||
| 35 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 36 | + | │ * Are you sure you want to continue? (y/N): │ | |
| 37 | + | └─────────────────────────────────────────────────────────────┘ | |
| 38 | + | ||
| 39 | + | >>> SELECT: y (YES) | |
| 40 | + | ||
| 41 | + | > Type "y" and press ENTER | |
| 42 | + | ||
| 43 | + | ||
| 44 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 45 | + | │ STEP 4: DATABASE CONFIGURATION │ | |
| 46 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 47 | + | ||
| 48 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 49 | + | │ * Do you want to automatically configure the database? │ | |
| 50 | + | │ (y/N): │ | |
| 51 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 52 | + | ||
| 53 | + | >>> SELECT: y (YES) | |
| 54 | + | ||
| 55 | + | > Type "y" and press ENTER | |
| 56 | + | ||
| 57 | + | ||
| 58 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 59 | + | │ STEP 5: DATABASE USERNAME & PASSWORD │ | |
| 60 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 61 | + | ||
| 62 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 63 | + | │ * Database host username (pterodactyluser): │ | |
| 64 | + | └─────────────────────────────────────────────────────────────┘ | |
| 65 | + | ||
| 66 | + | >>> LEAVE BLANK: Press ENTER (uses default) | |
| 67 | + | ||
| 68 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 69 | + | │ * Database host password: │ | |
| 70 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 71 | + | ||
| 72 | + | >>> IMPORTANT! Type a strong password (write it down!) | |
| 73 | + | > Example: MyStr0ngP@ssw0rd!2026 | |
| 74 | + | > Press ENTER after typing | |
| 75 | + | ||
| 76 | + | ||
| 77 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 78 | + | │ STEP 6: MYSQL EXTERNAL ACCESS │ | |
| 79 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 80 | + | ||
| 81 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 82 | + | │ * Do you want to configure MySQL to be accessed │ | |
| 83 | + | │ externally? (y/N): │ | |
| 84 | + | └─────────────────────────────────────────────────────────────┘ | |
| 85 | + | ||
| 86 | + | >>> SELECT: n (NO) | |
| 87 | + | ||
| 88 | + | > Type "n" and press ENTER | |
| 89 | + | ||
| 90 | + | ||
| 91 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 92 | + | │ STEP 7: EMAIL CONFIGURATION │ | |
| 93 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 94 | + | ||
| 95 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 96 | + | │ * Enter your email address for the panel: │ | |
| 97 | + | └─────────────────────────────────────────────────────────────┘ | |
| 98 | + | ||
| 99 | + | >>> Type your email: admin@example.com | |
| 100 | + | > Press ENTER | |
| 101 | + | ||
| 102 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 103 | + | │ * Enter your company/panel name: │ | |
| 104 | + | └─────────────────────────────────────────────────────────────┘ | |
| 105 | + | ||
| 106 | + | >>> Type a name: My Game Panel | |
| 107 | + | > Or leave blank: Press ENTER | |
| 108 | + | ||
| 109 | + | ||
| 110 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 111 | + | │ STEP 8: CREATE ADMIN USER │ | |
| 112 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 113 | + | ||
| 114 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 115 | + | │ * Would you like to create an admin user? (y/N): │ | |
| 116 | + | └─────────────────────────────────────────────────────────────┘ | |
| 117 | + | ||
| 118 | + | >>> SELECT: y (YES) | |
| 119 | + | ||
| 120 | + | > Type "y" and press ENTER | |
| 121 | + | ||
| 122 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 123 | + | │ * Enter your email address: │ | |
| 124 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 125 | + | ||
| 126 | + | >>> Type your admin email: admin@example.com | |
| 127 | + | ||
| 128 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 129 | + | │ * Enter your username: │ | |
| 130 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 131 | + | ||
| 132 | + | >>> Type your username: admin | |
| 133 | + | ||
| 134 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 135 | + | │ * Enter your first name: │ | |
| 136 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 137 | + | ||
| 138 | + | >>> Type your first name: John | |
| 139 | + | ||
| 140 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 141 | + | │ * Enter your last name: │ | |
| 142 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 143 | + | ||
| 144 | + | >>> Type your last name: Doe | |
| 145 | + | ||
| 146 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 147 | + | │ * Enter your password: │ | |
| 148 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 149 | + | ||
| 150 | + | >>> IMPORTANT! Type a strong password (write it down!) | |
| 151 | + | > Example: Admin@2026#Secure! | |
| 152 | + | > Press ENTER | |
| 153 | + | ||
| 154 | + | ||
| 155 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 156 | + | │ STEP 9: SSL CONFIGURATION (PANEL) │ | |
| 157 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 158 | + | ||
| 159 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 160 | + | │ * Do you want to use Let's Encrypt SSL? (y/N): │ | |
| 161 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 162 | + | ||
| 163 | + | ╔══════════════════════════════════════════════════════════════════╗ | |
| 164 | + | ║ IF YOU HAVE A DOMAIN NAME: ║ | |
| 165 | + | ║ SELECT: y (YES) ║ | |
| 166 | + | ║ Then enter your domain: panel.example.com ║ | |
| 167 | + | ║ ║ | |
| 168 | + | ║ IF YOU ONLY HAVE AN IP ADDRESS (NO DOMAIN): ║ | |
| 169 | + | ║ SELECT: n (NO) ║ | |
| 170 | + | ║ The panel will use HTTP (port 80) ║ | |
| 171 | + | ╚══════════════════════════════════════════════════════════════════╝ | |
| 172 | + | ||
| 173 | + | >>> Choose based on your setup | |
| 174 | + | > Type "y" or "n" and press ENTER | |
| 175 | + | ||
| 176 | + | ||
| 177 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 178 | + | │ STEP 10: WINGS CONFIGURATION (UFW FIREWALL) │ | |
| 179 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 180 | + | ||
| 181 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 182 | + | │ * Do you want to automatically configure UFW (firewall)? │ | |
| 183 | + | │ (y/N): │ | |
| 184 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 185 | + | ||
| 186 | + | >>> SELECT: y (YES) - Recommended! | |
| 187 | + | ||
| 188 | + | > Type "y" and press ENTER | |
| 189 | + | ||
| 190 | + | ||
| 191 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 192 | + | │ STEP 11: DATABASE USER FOR WINGS │ | |
| 193 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 194 | + | ||
| 195 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 196 | + | │ * Do you want to configure a user for database hosts? │ | |
| 197 | + | │ (y/N): │ | |
| 198 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 199 | + | ||
| 200 | + | >>> SELECT: y (YES) | |
| 201 | + | ||
| 202 | + | > Type "y" and press ENTER | |
| 203 | + | ||
| 204 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 205 | + | │ * Database host username (pterodactyluser): │ | |
| 206 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 207 | + | ||
| 208 | + | >>> LEAVE BLANK: Press ENTER | |
| 209 | + | ||
| 210 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 211 | + | │ * Database host password: │ | |
| 212 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 213 | + | ||
| 214 | + | >>> Type a password (write it down!) | |
| 215 | + | > Example: WingsDB@2026#Strong! | |
| 216 | + | > Press ENTER | |
| 217 | + | ||
| 218 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 219 | + | │ * Do you want to configure MySQL to be accessed externally? │ | |
| 220 | + | │ (y/N): │ | |
| 221 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 222 | + | ||
| 223 | + | >>> SELECT: n (NO) | |
| 224 | + | ||
| 225 | + | > Type "n" and press ENTER | |
| 226 | + | ||
| 227 | + | ||
| 228 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 229 | + | │ STEP 12: SSL FOR WINGS │ | |
| 230 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 231 | + | ||
| 232 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 233 | + | │ * Do you want to automatically configure HTTPS using │ | |
| 234 | + | │ Let's Encrypt? (y/N): │ | |
| 235 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 236 | + | ||
| 237 | + | ╔══════════════════════════════════════════════════════════════════╗ | |
| 238 | + | ║ IF YOU HAVE A DOMAIN (FQDN): ║ | |
| 239 | + | ║ SELECT: y (YES) ║ | |
| 240 | + | ║ Then enter your domain for Wings: node.example.com ║ | |
| 241 | + | ║ ║ | |
| 242 | + | ║ IF YOU ONLY HAVE IP ADDRESS: ║ | |
| 243 | + | ║ SELECT: n (NO) ║ | |
| 244 | + | ║ Wings will use HTTP ║ | |
| 245 | + | ╚══════════════════════════════════════════════════════════════════╝ | |
| 246 | + | ||
| 247 | + | >>> Choose based on your setup | |
| 248 | + | > Type "y" or "n" and press ENTER | |
| 249 | + | ||
| 250 | + | ||
| 251 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 252 | + | │ STEP 13: FINAL CONFIRMATION │ | |
| 253 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 254 | + | ||
| 255 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 256 | + | │ * Proceed with installation? (y/N): │ | |
| 257 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 258 | + | ||
| 259 | + | >>> SELECT: y (YES) | |
| 260 | + | ||
| 261 | + | > Type "y" and press ENTER | |
| 262 | + | > Wait for installation to complete... | |
| 263 | + | ||
| 264 | + | ||
| 265 | + | ╔══════════════════════════════════════════════════════════════════╗ | |
| 266 | + | ║ INSTALLATION COMPLETE! ║ | |
| 267 | + | ║ ║ | |
| 268 | + | ║ Your Pterodactyl Panel is now installed! ║ | |
| 269 | + | ║ ║ | |
| 270 | + | ║ Access your panel at: ║ | |
| 271 | + | ║ http://YOUR_SERVER_IP ║ | |
| 272 | + | ║ or ║ | |
| 273 | + | ║ https://YOUR_DOMAIN (if SSL enabled) ║ | |
| 274 | + | ║ ║ | |
| 275 | + | ║ Login with: ║ | |
| 276 | + | ║ Email: [your admin email] ║ | |
| 277 | + | ║ Password: [your admin password] ║ | |
| 278 | + | ║ ║ | |
| 279 | + | ║ ⚠️ IMPORTANT: Your Wings still needs to be configured! ║ | |
| 280 | + | ║ 1. Log into the panel ║ | |
| 281 | + | ║ 2. Go to Admin → Nodes → Create New ║ | |
| 282 | + | ║ 3. Generate the configuration file ║ | |
| 283 | + | ║ 4. Copy it to /etc/pterodactyl/config.yml ║ | |
| 284 | + | ║ 5. Run: systemctl start wings ║ | |
| 285 | + | ╚══════════════════════════════════════════════════════════════════╝ | |
| 286 | + | ||
| 287 | + | ||
| 288 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 289 | + | │ QUICK REFERENCE SHEET │ | |
| 290 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 291 | + | ||
| 292 | + | ┌──────────────┬─────────────┬──────────────────────────────┐ | |
| 293 | + | │ QUESTION │ ANSWER │ REASON │ | |
| 294 | + | ├──────────────┼─────────────┼──────────────────────────────┤ | |
| 295 | + | │ Panel/Wings │ 3 (Both) │ Install everything at once │ | |
| 296 | + | │ Continue? │ y │ Start installation │ | |
| 297 | + | │ Auto DB? │ y │ Let script handle DB │ | |
| 298 | + | │ DB username │ [ENTER] │ Use default │ | |
| 299 | + | │ DB password │ [TYPE] │ Strong password (save it) │ | |
| 300 | + | │ MySQL ext │ n │ No external access needed │ | |
| 301 | + | │ Admin user? │ y │ Create admin account │ | |
| 302 | + | │ Let's Encrypt│ n or y │ n = IP only, y = domain │ | |
| 303 | + | │ Configure │ y │ Auto open firewall ports │ | |
| 304 | + | │ UFW? │ │ │ | |
| 305 | + | │ Wings DB │ y │ Create DB user for Wings │ | |
| 306 | + | │ Wings SSL │ n or y │ Same as panel SSL choice │ | |
| 307 | + | └──────────────┴─────────────┴──────────────────────────────┘ | |
| 308 | + | ||
| 309 | + | ||
| 310 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 311 | + | │ FIREWALL PORTS TO OPEN │ | |
| 312 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 313 | + | ||
| 314 | + | ┌─────────────────────────────────────────────────────────────┐ | |
| 315 | + | │ Port 80 - HTTP (Web Panel) │ | |
| 316 | + | │ Port 443 - HTTPS (Web Panel) - if SSL enabled │ | |
| 317 | + | │ Port 8080 - Wings WebSocket (Server communication) │ | |
| 318 | + | │ Port 2022 - SFTP (File transfer for servers) │ | |
| 319 | + | └─────────────────────────────────────────────────────────────┘ | |
| 320 | + | ||
| 321 | + | ||
| 322 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 323 | + | │ TROUBLESHOOTING COMMANDS │ | |
| 324 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 325 | + | ||
| 326 | + | # Check panel status | |
| 327 | + | systemctl status nginx | |
| 328 | + | systemctl status php8.2-fpm | |
| 329 | + | ||
| 330 | + | # Check wings status | |
| 331 | + | systemctl status wings | |
| 332 | + | ||
| 333 | + | # View panel logs | |
| 334 | + | tail -f /var/www/pterodactyl/storage/logs/laravel-*.log | |
| 335 | + | ||
| 336 | + | # View wings logs | |
| 337 | + | journalctl -u wings -f | |
| 338 | + | ||
| 339 | + | # Restart panel services | |
| 340 | + | systemctl restart nginx php8.2-fpm | |
| 341 | + | ||
| 342 | + | # Restart wings | |
| 343 | + | systemctl restart wings | |
| 344 | + | ||
| 345 | + | # Generate application key (if needed) | |
| 346 | + | php /var/www/pterodactyl/artisan key:generate --force | |
| 347 | + | ||
| 348 | + | # Clear cache | |
| 349 | + | php /var/www/pterodactyl/artisan config:clear | |
| 350 | + | php /var/www/pterodactyl/artisan cache:clear | |
| 351 | + | ||
| 352 | + | ||
| 353 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 354 | + | │ POST-INSTALLATION: WINGS SETUP │ | |
| 355 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 356 | + | ||
| 357 | + | 1. Login to panel: http://YOUR_SERVER_IP | |
| 358 | + | ||
| 359 | + | 2. Go to: Admin → Nodes → Create New | |
| 360 | + | ||
| 361 | + | 3. Fill in: | |
| 362 | + | • Name: Main Node | |
| 363 | + | • Description: (optional) | |
| 364 | + | • FQDN: YOUR_SERVER_IP or domain | |
| 365 | + | • Port: 8080 | |
| 366 | + | • Behind Proxy: No | |
| 367 | + | • Public: Yes | |
| 368 | + | ||
| 369 | + | 4. After creating, click on the node → Configuration | |
| 370 | + | ||
| 371 | + | 5. Copy the configuration code | |
| 372 | + | ||
| 373 | + | 6. Save to: /etc/pterodactyl/config.yml | |
| 374 | + | ||
| 375 | + | 7. Start Wings: | |
| 376 | + | systemctl start wings | |
| 377 | + | systemctl enable wings | |
| 378 | + | ||
| 379 | + | ||
| 380 | + | ┌─────────────────────────────────────────────────────────────────┐ | |
| 381 | + | │ IMPORTANT NOTES │ | |
| 382 | + | └─────────────────────────────────────────────────────────────────┘ | |
| 383 | + | ||
| 384 | + | ⚠️ SAVE ALL PASSWORDS: Panel DB, Admin user, Wings DB | |
| 385 | + | ||
| 386 | + | ⚠️ Wait for migrations to complete (may take 2-5 minutes) | |
| 387 | + | ||
| 388 | + | ⚠️ If using IP instead of domain, you'll see a security warning | |
| 389 | + | (This is normal, just proceed) | |
| 390 | + | ||
| 391 | + | ⚠️ For production, use a domain with SSL certificates | |
| 392 | + | ||
| 393 | + | ⚠️ Backup /var/www/pterodactyl/.env file after installation | |
| 394 | + | ||
| 395 | + | ||
| 396 | + | ╔══════════════════════════════════════════════════════════════════╗ | |
| 397 | + | ║ INSTALLATION SUCCESS! ║ | |
| 398 | + | ║ ║ | |
| 399 | + | ║ Your Pterodactyl Panel is now ready for use! ║ | |
| 400 | + | ║ ║ | |
| 401 | + | ║ Documentation: https://pterodactyl.io/docs ║ | |
| 402 | + | ║ Discord: https://discord.gg/pterodactyl ║ | |
| 403 | + | ║ GitHub: https://github.com/pterodactyl/panel ║ | |
| 404 | + | ║ ║ | |
| 405 | + | ║ Need help? You can ask me anytime! ║ | |
| 406 | + | ╚══════════════════════════════════════════════════════════════════╝ | |