@akaanakbaik/pterodactyl-gateway 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +239 -293
  2. package/add-promt.md +119 -52
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,97 +1,74 @@
1
1
  # Akadev Pterodactyl Gateway
2
2
 
3
- SDK TypeScript dan CLI sederhana untuk membantu project Node.js terhubung ke Pterodactyl Panel dengan lebih mudah.
3
+ SDK TypeScript dan CLI untuk menghubungkan project Node.js ke Pterodactyl Panel dengan lebih mudah, aman, dan cepat.
4
4
 
5
- Package ini dibuat untuk kebutuhan bot reseller panel, dashboard custom, automation server, dan admin tools. Fokus v0.2.x adalah memperluas kontrol server dengan file manager, startup variables, network allocations, database manager, backup manager, schedules, dan probe read-only, sambil tetap menjaga smart create user/server, preview, dry run, error tutorial, raw request, test, dan pack check.
5
+ Package ini cocok untuk bot reseller panel, dashboard custom, automation server, admin tools, dan project yang perlu membuat user/server Pterodactyl secara otomatis.
6
6
 
7
7
  Package ini bukan package resmi dari Pterodactyl dan tidak berafiliasi dengan Pterodactyl Software.
8
8
 
9
9
  ## Status
10
10
 
11
- Versi saat ini: `0.2.3`
12
-
13
- Fitur utama:
14
-
15
- - `createPtero()`
16
- - `createPtero.fromEnv()`
17
- - `connect()`
18
- - `health()`
19
- - `doctor()` dasar
20
- - `compatibility()` dasar
21
- - `raw.application` dan `raw.client`
22
- - `users.createSmart()`
23
- - `users.getOrCreate()`
24
- - `servers.previewCreate()`
25
- - `servers.createSmart()`
26
- - `servers.createFromPreset()`
27
- - `servers.createRaw()`
28
- - `server(identifier).start()`
29
- - `server(identifier).stop()`
30
- - `server(identifier).restart()`
31
- - `server(identifier).kill()`
32
- - `server(identifier).command()`
33
- - `server(identifier).resources()`
34
- - `server(identifier).probe()`
35
- - `server(identifier).files.list()`
36
- - `server(identifier).files.read()`
37
- - `server(identifier).files.write()`
38
- - `server(identifier).files.delete()`
39
- - `server(identifier).files.mkdir()`
40
- - `server(identifier).files.rename()`
41
- - `server(identifier).files.compress()`
42
- - `server(identifier).files.decompress()`
43
- - `server(identifier).files.json.read()`
44
- - `server(identifier).files.json.write()`
45
- - `server(identifier).startup.variables()`
46
- - `server(identifier).startup.set()`
47
- - `server(identifier).startup.setMany()`
48
- - `server(identifier).network.list()`
49
- - `server(identifier).network.assign()`
50
- - `server(identifier).network.setNote()`
51
- - `server(identifier).network.setPrimary()`
52
- - `server(identifier).network.delete()`
53
- - `server(identifier).databases.list()`
54
- - `server(identifier).databases.create()`
55
- - `server(identifier).databases.rotatePassword()`
56
- - `server(identifier).databases.delete()`
57
- - `server(identifier).backups.list()`
58
- - `server(identifier).backups.create()`
59
- - `server(identifier).backups.details()`
60
- - `server(identifier).backups.download()`
61
- - `server(identifier).backups.delete()`
62
- - `server(identifier).schedules.list()`
63
- - `server(identifier).schedules.create()`
64
- - `server(identifier).schedules.details()`
65
- - `server(identifier).schedules.update()`
66
- - `server(identifier).schedules.run()`
67
- - `server(identifier).schedules.delete()`
68
- - `server(identifier).schedules.tasks.create()`
69
- - `server(identifier).schedules.tasks.update()`
70
- - `server(identifier).schedules.tasks.delete()`
71
- - parser RAM, disk, CPU
72
- - error tutorial
73
- - CLI dasar `ptero-gateway`
74
- - `npm run verify`
75
- - `npm pack --dry-run`
76
-
77
- ## Install lokal
11
+ Versi saat ini: `0.3.0`
12
+
13
+ Package npm publik:
78
14
 
79
15
  ```bash
80
- npm install @akadev/pterodactyl-gateway
16
+ npm i @akaanakbaik/pterodactyl-gateway
81
17
  ```
82
18
 
83
- Untuk development dari GitHub:
19
+ Install global CLI:
84
20
 
85
21
  ```bash
86
- git clone https://github.com/akaanakbaik/pterodactyl-gateway.git
87
- cd pterodactyl-gateway
88
- npm install
89
- npm run verify
22
+ npm i -g @akaanakbaik/pterodactyl-gateway
90
23
  ```
91
24
 
25
+ CLI tersedia sebagai:
26
+
27
+ ```bash
28
+ ptero-gateway help
29
+ ptg help
30
+ ```
31
+
32
+ ## Yang sudah terbukti di panel asli
33
+
34
+ Fitur berikut sudah dites langsung pada panel Pterodactyl asli:
35
+
36
+ - koneksi PTLA dan PTLC
37
+ - `doctor`
38
+ - `ids`
39
+ - list admin users
40
+ - list admin servers
41
+ - create user
42
+ - create server dengan dry-run
43
+ - create server asli
44
+ - auto docker image dari egg
45
+ - auto startup dari egg
46
+ - auto allocation
47
+ - detail server admin
48
+ - limits server admin
49
+ - update limits server admin
50
+ - suspend server
51
+ - unsuspend server
52
+ - probe read-only client server
53
+ - summary server
54
+ - resources realtime/polling
55
+ - files list
56
+ - files read
57
+ - files write
58
+ - startup/env read
59
+ - startup/env set
60
+ - network/ports read
61
+ - backup list
62
+ - backup detail
63
+ - backup delete
64
+ - schedules list
65
+ - template `init-node-alive`
66
+ - start/stop/restart/kill server
67
+ - publish ke npm public registry
68
+
92
69
  ## Env
93
70
 
94
- Buat file `.env` di project kamu:
71
+ Gunakan env berikut:
95
72
 
96
73
  ```env
97
74
  PTERO_DOMAIN=https://panel.example.com
@@ -101,14 +78,16 @@ PTERO_PTLC=ptlc_xxxxxxxxxxxxxxxxx
101
78
 
102
79
  Penjelasan:
103
80
 
104
- - `PTERO_DOMAIN` adalah domain panel Pterodactyl.
105
- - `PTERO_PTLA` adalah Application API Key untuk aksi admin seperti create user dan create server.
106
- - `PTERO_PTLC` adalah Client API Key untuk kontrol server seperti start, stop, command, resources, file manager, startup variables, network allocations, database manager, backups, schedules, dan realtime pada versi berikutnya.
81
+ - `PTERO_DOMAIN`: domain panel Pterodactyl.
82
+ - `PTERO_PTLA`: Application API Key untuk aksi admin seperti list user, create user, create server, update limits, suspend, unsuspend, dan reinstall.
83
+ - `PTERO_PTLC`: Client API Key untuk kontrol server seperti resources, file manager, startup variables, ports, backups, schedules, dan power action.
107
84
 
108
- ## Koneksi cepat
85
+ Jangan hardcode API key ke source code.
86
+
87
+ ## Koneksi SDK
109
88
 
110
89
  ```ts
111
- import { createPtero } from "@akadev/pterodactyl-gateway";
90
+ import { createPtero } from "@akaanakbaik/pterodactyl-gateway";
112
91
 
113
92
  const ptero = createPtero({
114
93
  domain: "https://panel.example.com",
@@ -120,30 +99,158 @@ const result = await ptero.connect();
120
99
  console.log(result);
121
100
  ```
122
101
 
123
- Atau dari env:
102
+ Atau langsung dari env:
124
103
 
125
104
  ```ts
126
- import { createPtero } from "@akadev/pterodactyl-gateway";
105
+ import { createPtero } from "@akaanakbaik/pterodactyl-gateway";
127
106
 
128
107
  const ptero = createPtero.fromEnv();
129
108
  await ptero.connect();
130
109
  ```
131
110
 
132
- ## Create user smart
111
+ ## CLI cepat
112
+
113
+ Cek koneksi:
114
+
115
+ ```bash
116
+ ptero-gateway doctor
117
+ ptero-gateway connect
118
+ ```
119
+
120
+ Ambil ID node, nest, dan egg:
121
+
122
+ ```bash
123
+ ptero-gateway ids
124
+ ptero-gateway ids --nest 5
125
+ ```
126
+
127
+ List server client:
128
+
129
+ ```bash
130
+ ptero-gateway servers
131
+ ```
132
+
133
+ List admin:
134
+
135
+ ```bash
136
+ ptero-gateway admin users
137
+ ptero-gateway admin servers
138
+ ```
139
+
140
+ Create server dry-run:
141
+
142
+ ```bash
143
+ ptero-gateway admin create-server \
144
+ --name "aka test" \
145
+ --email "user@example.com" \
146
+ --username "aka_test" \
147
+ --password "password aman" \
148
+ --node 1 \
149
+ --nest 5 \
150
+ --egg 18 \
151
+ --memory 1GB \
152
+ --disk 2GB \
153
+ --cpu 100% \
154
+ --databases 0 \
155
+ --allocations 1 \
156
+ --backups 0 \
157
+ --dry-run
158
+ ```
159
+
160
+ Create server asli:
161
+
162
+ ```bash
163
+ ptero-gateway admin create-server \
164
+ --name "aka test" \
165
+ --email "user@example.com" \
166
+ --username "aka_test" \
167
+ --password "password aman" \
168
+ --node 1 \
169
+ --nest 5 \
170
+ --egg 18 \
171
+ --memory 1GB \
172
+ --disk 2GB \
173
+ --cpu 100% \
174
+ --databases 0 \
175
+ --allocations 1 \
176
+ --backups 0 \
177
+ --yes
178
+ ```
179
+
180
+ Detail dan limit server admin:
181
+
182
+ ```bash
183
+ ptero-gateway admin server 5 detail
184
+ ptero-gateway admin server 5 limits
185
+ ptero-gateway admin server 5 update-limits --backups 1 --yes
186
+ ```
187
+
188
+ Lifecycle admin:
133
189
 
134
- Field wajib:
190
+ ```bash
191
+ ptero-gateway admin server 5 suspend --yes
192
+ ptero-gateway admin server 5 unsuspend --yes
193
+ ptero-gateway admin server 5 reinstall --yes
194
+ ```
135
195
 
136
- - `username`
137
- - `email`
138
- - `password`
139
- - `administrator`
196
+ Probe dan summary server client:
140
197
 
141
- Jika `firstName` dan `lastName` kosong, nilainya otomatis memakai username.
198
+ ```bash
199
+ ptero-gateway probe 311d56b7
200
+ ptero-gateway server 311d56b7 summary
201
+ ptero-gateway server 311d56b7 resources
202
+ ```
203
+
204
+ File manager:
205
+
206
+ ```bash
207
+ ptero-gateway server 311d56b7 files /
208
+ ptero-gateway server 311d56b7 read /package.json
209
+ ptero-gateway server 311d56b7 write /tmp/test.txt "halo" --yes
210
+ ptero-gateway server 311d56b7 write /index.js "console.log('halo')" --yes --allow-any-path
211
+ ```
212
+
213
+ Startup variables:
214
+
215
+ ```bash
216
+ ptero-gateway server 311d56b7 env
217
+ ptero-gateway server 311d56b7 set-env CMD_RUN "node index.js" --yes
218
+ ```
219
+
220
+ Template server Node yang tetap hidup:
221
+
222
+ ```bash
223
+ ptero-gateway server 311d56b7 stop --yes
224
+ ptero-gateway server 311d56b7 init-node-alive --yes
225
+ ptero-gateway server 311d56b7 start --yes
226
+ ptero-gateway server 311d56b7 resources
227
+ ```
228
+
229
+ Backup:
230
+
231
+ ```bash
232
+ ptero-gateway server 311d56b7 backups
233
+ ptero-gateway server 311d56b7 create-backup --name "before-update" --yes
234
+ ptero-gateway server 311d56b7 backup <uuid>
235
+ ptero-gateway server 311d56b7 delete-backup <uuid> --yes
236
+ ```
237
+
238
+ Power control:
239
+
240
+ ```bash
241
+ ptero-gateway server 311d56b7 start --yes
242
+ ptero-gateway server 311d56b7 stop --yes
243
+ ptero-gateway server 311d56b7 restart --yes
244
+ ptero-gateway server 311d56b7 kill --yes
245
+ ptero-gateway server 311d56b7 command "npm start" --yes
246
+ ```
247
+
248
+ ## Create user SDK
142
249
 
143
250
  ```ts
144
251
  const user = await ptero.users.createSmart({
145
- username: "aka",
146
- email: "aka@example.com",
252
+ username: "aka_test",
253
+ email: "user@example.com",
147
254
  password: "auto",
148
255
  administrator: "no"
149
256
  });
@@ -153,164 +260,87 @@ console.log(user);
153
260
 
154
261
  Jika `password: "auto"`, package membuat password aman dan mengembalikannya sekali pada response.
155
262
 
156
- ## Create server smart
157
-
158
- Field wajib:
159
-
160
- - `name`
161
- - `email` atau `userId`
162
- - `description`
163
- - `nodeId`
164
- - `nestId`
165
- - `eggId`
166
- - `memory`
167
- - `disk`
168
- - `cpu`
169
- - `databases`
170
- - `allocations`
171
- - `backups`
172
-
173
- Yang otomatis:
174
-
175
- - docker image dari egg
176
- - startup command dari egg
177
- - environment variables dari egg
178
- - default allocation dari node
179
- - additional allocations sesuai allocation limit
180
- - swap default `0`
181
- - block IO default `500`
182
- - CPU pinning default kosong
183
- - OOM disabled default `false`
184
- - start on completion default `true`
263
+ ## Create server SDK
185
264
 
186
265
  ```ts
187
266
  const server = await ptero.servers.createSmart({
188
267
  name: "Bot WhatsApp Aka",
189
- email: "aka@example.com",
268
+ email: "user@example.com",
269
+ username: "aka_test",
270
+ password: "password aman",
271
+ autoCreateUser: true,
190
272
  description: "Server bot WhatsApp untuk Aka",
191
273
  nodeId: 1,
192
274
  nestId: 5,
193
- eggId: 15,
275
+ eggId: 18,
194
276
  specs: {
195
- memory: "2GB",
196
- disk: "5GB",
277
+ memory: "1GB",
278
+ disk: "2GB",
197
279
  cpu: "100%",
198
- databases: 1,
280
+ databases: 0,
199
281
  allocations: 1,
200
- backups: 1
282
+ backups: 0
201
283
  }
202
284
  });
203
285
 
204
286
  console.log(server);
205
287
  ```
206
288
 
207
- ## Preview sebelum create
208
-
209
- Gunakan ini untuk melihat hasil auto-sync sebelum server benar-benar dibuat.
289
+ ## Preview dan dry-run SDK
210
290
 
211
291
  ```ts
212
- const preview = await ptero.servers.previewCreate({
213
- name: "Bot WhatsApp Aka",
214
- email: "aka@example.com",
215
- description: "Server bot WhatsApp untuk Aka",
216
- nodeId: 1,
217
- nestId: 5,
218
- eggId: 15,
219
- specs: {
220
- memory: "2GB",
221
- disk: "5GB",
222
- cpu: "100%",
223
- databases: 1,
224
- allocations: 1,
225
- backups: 1
226
- }
292
+ const result = await ptero.servers.createSmart(input, {
293
+ dryRun: true
227
294
  });
228
295
 
229
- console.log(preview.payload);
230
- ```
231
-
232
- ## Probe read-only
233
-
234
- Probe dipakai untuk mengecek endpoint client server yang tersedia di panel tanpa membuat, mengedit, atau menghapus data.
235
-
236
- ```ts
237
- const report = await ptero.server("abc12345").probe();
238
- console.log(report);
239
- ```
240
-
241
- CLI:
242
-
243
- ```bash
244
- ptero-gateway probe abc12345
296
+ console.log(result.payload);
245
297
  ```
246
298
 
247
- ## File manager
299
+ ## File manager SDK
248
300
 
249
301
  ```ts
250
- const server = ptero.server("abc12345");
302
+ const server = ptero.server("311d56b7");
251
303
 
252
304
  const files = await server.files.list("/");
253
305
  const text = await server.files.read("/package.json");
254
- await server.files.write("/index.js", "console.log('halo')");
255
- await server.files.mkdir("/", "logs");
256
- await server.files.rename("/", [{ from: "old.js", to: "new.js" }]);
257
- await server.files.delete("/", ["old.js"]);
258
- await server.files.compress("/", ["src", "package.json"]);
259
- await server.files.decompress("/", "archive.tar.gz");
306
+ await server.files.write("/index.js", "console.log('running')");
260
307
 
261
308
  const config = await server.files.json.read("/config.json");
262
309
  await server.files.json.write("/config.json", { ok: true });
263
310
  ```
264
311
 
265
- ## Startup variables
312
+ ## Startup variables SDK
266
313
 
267
314
  ```ts
268
315
  const variables = await server.startup.variables();
269
- await server.startup.set("BOT_TOKEN", "token-baru");
316
+ await server.startup.set("CMD_RUN", "node index.js");
270
317
  await server.startup.setMany({
271
318
  NODE_ENV: "production",
272
319
  STARTUP_FILE: "index.js"
273
320
  });
274
321
  ```
275
322
 
276
- ## Network allocations
323
+ ## Network, database, backup, schedule SDK
277
324
 
278
325
  ```ts
279
- const allocations = await server.network.list();
326
+ await server.network.list();
280
327
  await server.network.assign();
281
328
  await server.network.setNote(123, "API port");
282
329
  await server.network.setPrimary(123);
283
330
  await server.network.delete(123);
284
- ```
285
331
 
286
- ## Database manager
287
-
288
- ```ts
289
- const databases = await server.databases.list();
332
+ await server.databases.list();
290
333
  await server.databases.create({ database: "botdb" });
291
- await server.databases.create({ database: "botdb", remote: "%" });
292
334
  await server.databases.rotatePassword("database-id");
293
335
  await server.databases.delete("database-id");
294
- ```
295
-
296
- ## Backup manager
297
336
 
298
- ```ts
299
- const backups = await server.backups.list();
300
- await server.backups.create({
301
- name: "before-update",
302
- ignored: ["node_modules"],
303
- isLocked: false
304
- });
337
+ await server.backups.list();
338
+ await server.backups.create({ name: "before-update" });
305
339
  await server.backups.details("backup-id");
306
340
  await server.backups.download("backup-id");
307
341
  await server.backups.delete("backup-id");
308
- ```
309
342
 
310
- ## Schedules
311
-
312
- ```ts
313
- const schedules = await server.schedules.list();
343
+ await server.schedules.list();
314
344
  await server.schedules.create({
315
345
  name: "Daily restart",
316
346
  minute: "0",
@@ -319,74 +349,6 @@ await server.schedules.create({
319
349
  month: "*",
320
350
  dayOfWeek: "*"
321
351
  });
322
- await server.schedules.run(1);
323
- await server.schedules.tasks.create(1, {
324
- action: "power",
325
- payload: "restart",
326
- timeOffset: 0
327
- });
328
- ```
329
-
330
- ## Dry run
331
-
332
- `dryRun` membuat payload final tanpa mengirim request create server.
333
-
334
- ```ts
335
- const result = await ptero.servers.createSmart(input, {
336
- dryRun: true
337
- });
338
-
339
- console.log(result.payload);
340
- ```
341
-
342
- ## Preset paket
343
-
344
- ```ts
345
- const ptero = createPtero({
346
- domain: "https://panel.example.com",
347
- ptla: process.env.PTERO_PTLA,
348
- ptlc: process.env.PTERO_PTLC,
349
- presets: {
350
- basic: {
351
- memory: "2GB",
352
- disk: "5GB",
353
- cpu: "100%",
354
- databases: 1,
355
- allocations: 1,
356
- backups: 1
357
- }
358
- }
359
- });
360
-
361
- await ptero.servers.createFromPreset("basic", {
362
- name: "Bot Aka",
363
- email: "aka@example.com",
364
- description: "Paket Basic",
365
- nodeId: 1,
366
- nestId: 5,
367
- eggId: 15
368
- });
369
- ```
370
-
371
- ## Kontrol server
372
-
373
- ```ts
374
- const server = ptero.server("abc12345");
375
-
376
- await server.start();
377
- await server.stop();
378
- await server.restart();
379
- await server.kill();
380
- await server.command("npm start");
381
- const resources = await server.resources();
382
- ```
383
-
384
- Command berbahaya seperti `rm -rf /` diblokir secara default.
385
-
386
- ```ts
387
- await server.command("rm -rf /tmp/cache", {
388
- allowDangerous: true
389
- });
390
352
  ```
391
353
 
392
354
  ## Raw request
@@ -396,27 +358,12 @@ Raw mode disediakan agar fitur baru atau panel fork tetap bisa dipakai.
396
358
  ```ts
397
359
  await ptero.raw.application.get("/users");
398
360
  await ptero.raw.application.post("/servers", payload);
399
- await ptero.raw.client.get("/servers/abc123/resources");
400
- await ptero.raw.client.post("/servers/abc123/command", {
361
+ await ptero.raw.client.get("/servers/311d56b7/resources");
362
+ await ptero.raw.client.post("/servers/311d56b7/command", {
401
363
  command: "npm start"
402
364
  });
403
365
  ```
404
366
 
405
- ## CLI dasar
406
-
407
- Setelah build atau install global:
408
-
409
- ```bash
410
- ptero-gateway doctor
411
- ptero-gateway connect
412
- ptero-gateway ids
413
- ptero-gateway ids --nest 5
414
- ptero-gateway probe abc12345
415
- ptero-gateway server abc123 resources
416
- ptero-gateway server abc123 restart
417
- ptero-gateway server abc123 command "npm start"
418
- ```
419
-
420
367
  ## Testing di VPS Ubuntu
421
368
 
422
369
  ```bash
@@ -437,33 +384,32 @@ npm run verify
437
384
  - `npm run test:cli`
438
385
  - `npm run test:pack`
439
386
 
440
- Jika semua berhasil, package siap dilanjutkan ke fitur versi berikutnya.
387
+ ## Catatan keamanan
441
388
 
442
- ## Roadmap ringkas
389
+ - Jangan hardcode PTLA/PTLC di source code.
390
+ - Semua aksi tulis/ubah via CLI wajib `--yes`.
391
+ - Write file CLI default hanya boleh ke `/tmp`; untuk path lain wajib `--allow-any-path`.
392
+ - Command berbahaya seperti `rm -rf /` diblokir oleh guard command.
393
+ - Gunakan `--dry-run` sebelum create server asli.
394
+ - Untuk delete server/user permanen, fitur sengaja belum dibuka di v0.3.0 dan akan dibuat dengan guard tambahan.
443
395
 
444
- ### v0.1.x
445
-
446
- Core SDK, smart create user, smart create server, preview, dryRun, doctor dasar, CLI dasar, raw request, test, CI, pack check.
447
-
448
- ### v0.2.x
449
-
450
- File manager, startup variables, database manager, backup manager, network allocations, schedules, cache, pagination, preset lebih matang.
396
+ ## Roadmap ringkas
451
397
 
452
- ### v0.3.0
398
+ ### v0.3.x
453
399
 
454
- WebSocket console, stats realtime, polling fallback, audit event, event emitter.
400
+ Perapihan docs, lifecycle aman, cleanup aman, validasi create server, dan command CLI yang lebih ramah pemula.
455
401
 
456
402
  ### v0.4.0
457
403
 
458
- CLI lebih lengkap: init, create-user wizard, create-server wizard, ids, server manager.
404
+ Wizard CLI interaktif untuk create user/server, allocation helper, dan template project siap jalan.
459
405
 
460
406
  ### v0.5.0
461
407
 
462
- TUI atau GUI CLI terminal: dashboard interaktif, preview, create server, kontrol server, console viewer.
408
+ TUI/GUI CLI terminal: dashboard interaktif, preview, create server, kontrol server, dan console viewer.
463
409
 
464
410
  ### v0.6.0
465
411
 
466
- Experimental nest/egg create/update/delete, import/export egg, compatibility adapter.
412
+ Experimental nest/egg create/update/delete, import/export egg, dan compatibility adapter.
467
413
 
468
414
  ## Lisensi
469
415
 
package/add-promt.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # Add Prompt Integrasi Akadev Pterodactyl Gateway
2
2
 
3
- Gunakan dokumen ini sebagai prompt tambahan saat meminta AI mengintegrasikan package `@akadev/pterodactyl-gateway` ke project Node.js, bot, dashboard, atau backend API.
3
+ Gunakan dokumen ini sebagai prompt tambahan saat meminta AI mengintegrasikan package `@akaanakbaik/pterodactyl-gateway` ke project Node.js, bot, dashboard, atau backend API.
4
4
 
5
5
  ## Prompt siap pakai
6
6
 
7
- Tolong integrasikan package `@akadev/pterodactyl-gateway` ke project saya dengan aman, rapi, dan mudah dipahami pemula.
7
+ Tolong integrasikan package `@akaanakbaik/pterodactyl-gateway` ke project saya dengan aman, rapi, dan mudah dipahami pemula.
8
8
 
9
- Package ini adalah SDK TypeScript untuk Pterodactyl Panel. Gunakan untuk koneksi panel, membuat user, membuat server, preview create server, dry run, kontrol server, dan raw request.
9
+ Package ini adalah SDK TypeScript dan CLI untuk Pterodactyl Panel. Gunakan untuk koneksi panel, membuat user, membuat server, preview create server, dry-run, kontrol server, file manager, startup variables, backup, schedule, network/ports, lifecycle server, dan raw request.
10
10
 
11
11
  Gunakan env berikut:
12
12
 
@@ -18,10 +18,24 @@ PTERO_PTLC=isi_client_api_key
18
18
 
19
19
  Jangan hardcode API key atau password di source code.
20
20
 
21
+ ## Install
22
+
23
+ ```bash
24
+ npm i @akaanakbaik/pterodactyl-gateway
25
+ ```
26
+
27
+ Untuk CLI global:
28
+
29
+ ```bash
30
+ npm i -g @akaanakbaik/pterodactyl-gateway
31
+ ptero-gateway help
32
+ ptg help
33
+ ```
34
+
21
35
  ## Cara koneksi
22
36
 
23
37
  ```ts
24
- import { createPtero } from "@akadev/pterodactyl-gateway";
38
+ import { createPtero } from "@akaanakbaik/pterodactyl-gateway";
25
39
 
26
40
  const ptero = createPtero.fromEnv();
27
41
  await ptero.connect();
@@ -37,7 +51,7 @@ const ptero = createPtero({
37
51
  });
38
52
  ```
39
53
 
40
- ## Fitur utama
54
+ ## Fitur utama SDK
41
55
 
42
56
  - `ptero.connect()` untuk cek koneksi.
43
57
  - `ptero.doctor()` untuk diagnosa konfigurasi.
@@ -46,20 +60,97 @@ const ptero = createPtero({
46
60
  - `ptero.servers.previewCreate()` untuk melihat payload final sebelum create server.
47
61
  - `ptero.servers.createSmart()` untuk create server dengan auto docker image, startup, environment, default allocation, dan additional allocation.
48
62
  - `ptero.servers.createFromPreset()` untuk create server dari preset spek.
49
- - `ptero.server(identifier).start()` untuk start server.
50
- - `ptero.server(identifier).stop()` untuk stop server.
51
- - `ptero.server(identifier).restart()` untuk restart server.
52
- - `ptero.server(identifier).kill()` untuk kill server.
63
+ - `ptero.server(identifier).probe()` untuk cek endpoint client secara read-only.
64
+ - `ptero.server(identifier).resources()` untuk resource server.
65
+ - `ptero.server(identifier).start()`, `stop()`, `restart()`, `kill()` untuk power control.
53
66
  - `ptero.server(identifier).command("npm start")` untuk kirim command.
54
- - `ptero.server(identifier).resources()` untuk mengambil resource server.
67
+ - `ptero.server(identifier).files.*` untuk file manager.
68
+ - `ptero.server(identifier).startup.*` untuk startup variables.
69
+ - `ptero.server(identifier).network.*` untuk allocation/ports.
70
+ - `ptero.server(identifier).databases.*` untuk database manager.
71
+ - `ptero.server(identifier).backups.*` untuk backup manager.
72
+ - `ptero.server(identifier).schedules.*` untuk schedule manager.
55
73
  - `ptero.raw.application` dan `ptero.raw.client` untuk endpoint yang belum tersedia wrapper.
56
74
 
75
+ ## Fitur CLI penting
76
+
77
+ ```bash
78
+ ptero-gateway doctor
79
+ ptero-gateway connect
80
+ ptero-gateway ids
81
+ ptero-gateway ids --nest 5
82
+ ptero-gateway admin users
83
+ ptero-gateway admin servers
84
+ ptero-gateway servers
85
+ ```
86
+
87
+ Create server dry-run:
88
+
89
+ ```bash
90
+ ptero-gateway admin create-server \
91
+ --name "aka test" \
92
+ --email "user@example.com" \
93
+ --username "aka_test" \
94
+ --password "password aman" \
95
+ --node 1 \
96
+ --nest 5 \
97
+ --egg 18 \
98
+ --memory 1GB \
99
+ --disk 2GB \
100
+ --cpu 100% \
101
+ --databases 0 \
102
+ --allocations 1 \
103
+ --backups 0 \
104
+ --dry-run
105
+ ```
106
+
107
+ Create server asli:
108
+
109
+ ```bash
110
+ ptero-gateway admin create-server \
111
+ --name "aka test" \
112
+ --email "user@example.com" \
113
+ --username "aka_test" \
114
+ --password "password aman" \
115
+ --node 1 \
116
+ --nest 5 \
117
+ --egg 18 \
118
+ --memory 1GB \
119
+ --disk 2GB \
120
+ --cpu 100% \
121
+ --databases 0 \
122
+ --allocations 1 \
123
+ --backups 0 \
124
+ --yes
125
+ ```
126
+
127
+ Kontrol server:
128
+
129
+ ```bash
130
+ ptero-gateway probe 311d56b7
131
+ ptero-gateway server 311d56b7 summary
132
+ ptero-gateway server 311d56b7 resources
133
+ ptero-gateway server 311d56b7 files /
134
+ ptero-gateway server 311d56b7 env
135
+ ptero-gateway server 311d56b7 ports
136
+ ptero-gateway server 311d56b7 start --yes
137
+ ptero-gateway server 311d56b7 stop --yes
138
+ ```
139
+
140
+ Template Node alive:
141
+
142
+ ```bash
143
+ ptero-gateway server 311d56b7 stop --yes
144
+ ptero-gateway server 311d56b7 init-node-alive --yes
145
+ ptero-gateway server 311d56b7 start --yes
146
+ ```
147
+
57
148
  ## Create user
58
149
 
59
150
  ```ts
60
151
  const user = await ptero.users.createSmart({
61
- username: "aka",
62
- email: "aka@example.com",
152
+ username: "aka_test",
153
+ email: "user@example.com",
63
154
  password: "auto",
64
155
  administrator: "no"
65
156
  });
@@ -72,18 +163,21 @@ Jika `password` diisi `auto`, package membuat password aman dan mengembalikannya
72
163
  ```ts
73
164
  const server = await ptero.servers.createSmart({
74
165
  name: "Bot WhatsApp Aka",
75
- email: "aka@example.com",
166
+ email: "user@example.com",
167
+ username: "aka_test",
168
+ password: "password aman",
169
+ autoCreateUser: true,
76
170
  description: "Server bot WhatsApp untuk Aka",
77
171
  nodeId: 1,
78
172
  nestId: 5,
79
- eggId: 15,
173
+ eggId: 18,
80
174
  specs: {
81
- memory: "2GB",
82
- disk: "5GB",
175
+ memory: "1GB",
176
+ disk: "2GB",
83
177
  cpu: "100%",
84
- databases: 1,
178
+ databases: 0,
85
179
  allocations: 1,
86
- backups: 1
180
+ backups: 0
87
181
  }
88
182
  });
89
183
  ```
@@ -114,9 +208,8 @@ const server = await ptero.servers.createSmart({
114
208
  - block IO default `500`
115
209
  - CPU pinning default kosong
116
210
  - OOM disabled default `false`
117
- - start on completion default `true`
118
211
 
119
- ## Preview dan dry run
212
+ ## Preview dan dry-run
120
213
 
121
214
  ```ts
122
215
  const preview = await ptero.servers.previewCreate(input);
@@ -128,39 +221,10 @@ const result = await ptero.servers.createSmart(input, { dryRun: true });
128
221
  console.log(result.payload);
129
222
  ```
130
223
 
131
- ## Preset paket
132
-
133
- ```ts
134
- const ptero = createPtero({
135
- domain: process.env.PTERO_DOMAIN,
136
- ptla: process.env.PTERO_PTLA,
137
- ptlc: process.env.PTERO_PTLC,
138
- presets: {
139
- basic: {
140
- memory: "2GB",
141
- disk: "5GB",
142
- cpu: "100%",
143
- databases: 1,
144
- allocations: 1,
145
- backups: 1
146
- }
147
- }
148
- });
149
-
150
- await ptero.servers.createFromPreset("basic", {
151
- name: "Bot Aka",
152
- email: "aka@example.com",
153
- description: "Paket Basic",
154
- nodeId: 1,
155
- nestId: 5,
156
- eggId: 15
157
- });
158
- ```
159
-
160
224
  ## Error handling
161
225
 
162
226
  ```ts
163
- import { explainError } from "@akadev/pterodactyl-gateway";
227
+ import { explainError } from "@akaanakbaik/pterodactyl-gateway";
164
228
 
165
229
  try {
166
230
  await ptero.servers.createSmart(input);
@@ -187,6 +251,9 @@ await ptero.raw.client.post("/servers/abc123/command", {
187
251
  - Gunakan `previewCreate()` atau `dryRun` sebelum create server final.
188
252
  - Gunakan `explainError()` untuk pesan error yang mudah dipahami.
189
253
  - Create server wajib memakai `nodeId`, `nestId`, dan `eggId` berupa angka.
190
- - Jika ID node, nest, atau egg salah, arahkan user untuk cek di Admin Panel Pterodactyl.
254
+ - Jika ID node, nest, atau egg salah, arahkan user untuk cek `ptero-gateway ids` atau Admin Panel Pterodactyl.
191
255
  - Jika allocation kosong, arahkan user menambah allocation di Admin Panel > Nodes > Allocations.
192
- - Jangan jalankan command berisiko tanpa izin jelas dari user.
256
+ - Semua aksi yang mengubah server via CLI wajib memakai `--yes`.
257
+ - Write file via CLI default hanya boleh ke `/tmp`; untuk path lain wajib `--allow-any-path`.
258
+ - Jangan menjalankan command berisiko tanpa izin jelas dari user.
259
+ - Delete server/user permanen belum dibuka di v0.3.0 dan perlu guard tambahan.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akaanakbaik/pterodactyl-gateway",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "SDK, CLI, dan smart gateway TypeScript untuk Pterodactyl Panel.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",