Last active 4 weeks ago

Revision e726fe7ba36075ae2a258c154a2bc9997b56515e

pterodactyl install guide.txt Raw
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 >>> SELECT: n (NO)
238
239 > Type "n" and press ENTER
240
241
242┌─────────────────────────────────────────────────────────────────┐
243│ STEP 13: FINAL CONFIRMATION │
244└─────────────────────────────────────────────────────────────────┘
245
246 ┌─────────────────────────────────────────────────────────────────┐
247 │ * Proceed with installation? (y/N): │
248 └─────────────────────────────────────────────────────────────────┘
249
250 >>> SELECT: y (YES)
251
252 > 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╚══════════════════════════════════════════════════════════════════╝
275
276
277┌─────────────────────────────────────────────────────────────────┐
278│ QUICK REFERENCE SHEET │
279└─────────────────────────────────────────────────────────────────┘
280
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 └──────────────┴─────────────┴──────────────────────────────┘
297
298
299┌─────────────────────────────────────────────────────────────────┐
300│ FIREWALL PORTS TO OPEN │
301└─────────────────────────────────────────────────────────────────┘
302
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 └─────────────────────────────────────────────────────────────┘
309
310
311┌─────────────────────────────────────────────────────────────────┐
312│ TROUBLESHOOTING COMMANDS │
313└─────────────────────────────────────────────────────────────────┘
314
315 # Check panel status
316 systemctl status nginx
317 systemctl status php8.2-fpm
318
319 # Check wings status
320 systemctl status wings
321
322 # View panel logs
323 tail -f /var/www/pterodactyl/storage/logs/laravel-*.log
324
325 # View wings logs
326 journalctl -u wings -f
327
328 # Restart panel services
329 systemctl restart nginx php8.2-fpm
330
331 # Restart wings
332 systemctl restart wings
333
334 # Generate application key (if needed)
335 php /var/www/pterodactyl/artisan key:generate --force
336
337 # Clear cache
338 php /var/www/pterodactyl/artisan config:clear
339 php /var/www/pterodactyl/artisan cache:clear
340
341
342┌─────────────────────────────────────────────────────────────────┐
343│ POST-INSTALLATION: WINGS SETUP │
344└─────────────────────────────────────────────────────────────────┘
345
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
364
365 6. Add allowed_origins after allowed_mounts like this
366
367allowed_mounts: []
368allowed_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
377┌─────────────────────────────────────────────────────────────────┐
378│ NGINX REVERSE PROXY EXAMPLE CFG │
379└─────────────────────────────────────────────────────────────────┘
380
381upstream pterodactyl {
382 server 100.64.0.17:80;
383}
384
385upstream pterodactyl_ws {
386 server 100.64.0.17:8080;
387}
388
389server {
390 listen 80;
391 server_name pterodactyl.entitybtw.ru;
392 return 301 https://$server_name$request_uri;
393}
394
395server {
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
466
467┌─────────────────────────────────────────────────────────────────┐
468│ IMPORTANT NOTES │
469└─────────────────────────────────────────────────────────────────┘
470
471 ⚠️ SAVE ALL PASSWORDS: Panel DB, Admin user, Wings DB
472
473 ⚠️ Wait for migrations to complete (may take 2-5 minutes)
474
475 ⚠️ If using IP instead of domain, you'll see a security warning
476 (This is normal, just proceed)
477
478 ⚠️ For production, use a domain with SSL certificates
479
480 ⚠️ Backup /var/www/pterodactyl/.env file after installation
481
482
483╔══════════════════════════════════════════════════════════════════╗
484║ INSTALLATION SUCCESS! ║
485║ ║
486║ Your Pterodactyl Panel is now ready for use! ║
487║ ║
488╚══════════════════════════════════════════════════════════════════╝