@akaanakbaik/pterodactyl-gateway 1.0.0 → 1.0.2
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.
- package/README.md +288 -220
- package/add-promt.md +278 -135
- package/dist/gateway.js +12 -8
- package/dist/gateway.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations.d.ts +56 -0
- package/dist/integrations.d.ts.map +1 -0
- package/dist/integrations.js +112 -0
- package/dist/integrations.js.map +1 -0
- package/package.json +36 -3
package/README.md
CHANGED
|
@@ -1,23 +1,79 @@
|
|
|
1
1
|
# Akadev Pterodactyl Gateway
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<p align="center">
|
|
4
|
+
<b>SDK TypeScript + CLI modern untuk mengelola Pterodactyl Panel dari bot, dashboard, backend, website, dan terminal.</b>
|
|
5
|
+
</p>
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
<p align="center">
|
|
8
|
+
<code>@akaanakbaik/pterodactyl-gateway</code> · <code>v1.0.2</code> · <code>Node.js >=18</code> · <code>MIT</code>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://web-docs-pterodacty-gateway.vercel.app"><b>Web Docs</b></a>
|
|
13
|
+
·
|
|
14
|
+
<a href="https://www.npmjs.com/package/@akaanakbaik/pterodactyl-gateway"><b>npm</b></a>
|
|
15
|
+
·
|
|
16
|
+
<a href="https://github.com/akaanakbaik/pterodactyl-gateway"><b>GitHub</b></a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
Akadev Pterodactyl Gateway membantu kamu menghubungkan aplikasi Node.js ke Pterodactyl Panel dengan flow yang lebih aman, cepat, dan mudah diuji: cek koneksi, membuat user, membuat server, dry-run payload, mengelola file, startup variables, backups, schedules, power action, sampai helper integrasi bot/website.
|
|
6
20
|
|
|
7
21
|
> Package ini bukan package resmi dari Pterodactyl dan tidak berafiliasi dengan Pterodactyl Software.
|
|
8
22
|
|
|
9
|
-
##
|
|
23
|
+
## Web Docs
|
|
10
24
|
|
|
11
|
-
|
|
25
|
+
Dokumentasi lengkap versi web tersedia di:
|
|
12
26
|
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
27
|
+
```txt
|
|
28
|
+
https://web-docs-pterodacty-gateway.vercel.app
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Web docs berisi tutorial per halaman/path agar mudah dipahami pemula:
|
|
32
|
+
|
|
33
|
+
```txt
|
|
34
|
+
/docs/overview
|
|
35
|
+
/docs/install
|
|
36
|
+
/docs/config
|
|
37
|
+
/docs/cli-create-server
|
|
38
|
+
/docs/sdk
|
|
39
|
+
/docs/integrations/telegram-bot
|
|
40
|
+
/docs/integrations/whatsapp-bot
|
|
41
|
+
/docs/integrations/discord-bot
|
|
42
|
+
/docs/integrations/website-api
|
|
43
|
+
/docs/security
|
|
44
|
+
/docs/troubleshooting
|
|
45
|
+
/privacy
|
|
46
|
+
/terms
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Fitur web docs:
|
|
50
|
+
|
|
51
|
+
- Search lokal cepat.
|
|
52
|
+
- Floating AI assistant untuk pertanyaan seputar gateway.
|
|
53
|
+
- Tutorial step-by-step.
|
|
54
|
+
- Simulasi animasi penggunaan.
|
|
55
|
+
- Contoh integrasi Telegram bot, WhatsApp bot, Discord bot, website/API, SDK, CLI, dan troubleshooting.
|
|
56
|
+
- Privacy Policy dan Terms.
|
|
57
|
+
- SEO lengkap: sitemap, robots, canonical, OpenGraph, Twitter card, JSON-LD, manifest, dan SVG icon.
|
|
58
|
+
|
|
59
|
+
## Navigasi
|
|
60
|
+
|
|
61
|
+
- [Install](#install)
|
|
62
|
+
- [Quick start CLI](#quick-start-cli)
|
|
63
|
+
- [SDK usage](#sdk-usage)
|
|
64
|
+
- [Environment](#environment)
|
|
65
|
+
- [CLI reference](#cli-reference)
|
|
66
|
+
- [Preset dan template](#preset-dan-template)
|
|
67
|
+
- [Integration helpers](#integration-helpers)
|
|
68
|
+
- [Contoh integrasi](#contoh-integrasi)
|
|
69
|
+
- [Keamanan](#keamanan)
|
|
70
|
+
- [Troubleshooting](#troubleshooting)
|
|
71
|
+
- [Release dan testing](#release-dan-testing)
|
|
18
72
|
|
|
19
73
|
## Install
|
|
20
74
|
|
|
75
|
+
Install sebagai dependency project:
|
|
76
|
+
|
|
21
77
|
```bash
|
|
22
78
|
npm i @akaanakbaik/pterodactyl-gateway
|
|
23
79
|
```
|
|
@@ -28,7 +84,7 @@ Install global CLI:
|
|
|
28
84
|
npm i -g @akaanakbaik/pterodactyl-gateway
|
|
29
85
|
```
|
|
30
86
|
|
|
31
|
-
Cek
|
|
87
|
+
Cek instalasi:
|
|
32
88
|
|
|
33
89
|
```bash
|
|
34
90
|
ptero-gateway version
|
|
@@ -36,25 +92,7 @@ ptero-gateway self-check
|
|
|
36
92
|
ptero-gateway release-check
|
|
37
93
|
```
|
|
38
94
|
|
|
39
|
-
##
|
|
40
|
-
|
|
41
|
-
Gunakan dua jenis key sesuai kebutuhan:
|
|
42
|
-
|
|
43
|
-
```env
|
|
44
|
-
PTERO_DOMAIN=https://panel.example.com
|
|
45
|
-
PTERO_PTLA=ptla_xxxxxxxxxxxxxxxxx
|
|
46
|
-
PTERO_PTLC=ptlc_xxxxxxxxxxxxxxxxx
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
- `PTERO_DOMAIN`: domain panel Pterodactyl.
|
|
50
|
-
- `PTERO_PTLA`: Application API Key untuk aksi admin seperti list user, create user, create server, update limits, suspend, unsuspend, dan reinstall.
|
|
51
|
-
- `PTERO_PTLC`: Client API Key untuk kontrol server seperti resources, file manager, startup variables, ports, backups, schedules, dan power action.
|
|
52
|
-
|
|
53
|
-
Jangan hardcode API key ke source code.
|
|
54
|
-
|
|
55
|
-
## Config profile
|
|
56
|
-
|
|
57
|
-
Sejak `0.8.0`, CLI bisa menyimpan profile lokal agar tidak perlu export env berulang-ulang.
|
|
95
|
+
## Quick start CLI
|
|
58
96
|
|
|
59
97
|
```bash
|
|
60
98
|
ptero-gateway config init \
|
|
@@ -63,106 +101,20 @@ ptero-gateway config init \
|
|
|
63
101
|
--ptla ptla_xxx \
|
|
64
102
|
--ptlc ptlc_xxx
|
|
65
103
|
|
|
66
|
-
ptero-gateway config doctor
|
|
67
|
-
ptero-gateway config list
|
|
68
|
-
ptero-gateway doctor
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
File config disimpan di:
|
|
72
|
-
|
|
73
|
-
```txt
|
|
74
|
-
~/.pterodactyl-gateway/config.json
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
File tersebut berisi API key dan otomatis diberi permission `600`.
|
|
78
|
-
|
|
79
|
-
Command config:
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
ptero-gateway config path
|
|
83
|
-
ptero-gateway config init --profile main --domain https://panel.example.com --ptla ptla_xxx --ptlc ptlc_xxx
|
|
84
|
-
ptero-gateway config list
|
|
85
|
-
ptero-gateway config show main
|
|
86
|
-
ptero-gateway config use main
|
|
87
|
-
ptero-gateway config rename main production
|
|
88
|
-
ptero-gateway config delete production --yes
|
|
89
|
-
ptero-gateway config env main
|
|
90
|
-
ptero-gateway config doctor
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## CLI cepat
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
ptero-gateway help
|
|
97
104
|
ptero-gateway doctor
|
|
98
|
-
ptero-gateway connect
|
|
99
|
-
ptero-gateway ids
|
|
100
105
|
ptero-gateway ids --nest 5
|
|
101
|
-
ptero-gateway servers
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
List admin:
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
106
|
ptero-gateway admin users
|
|
108
107
|
ptero-gateway admin servers
|
|
108
|
+
ptero-gateway servers
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
ptero-gateway presets
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Preset bawaan:
|
|
118
|
-
|
|
119
|
-
| Preset | Memory | Disk | CPU | Database | Allocation | Backup |
|
|
120
|
-
|---|---:|---:|---:|---:|---:|---:|
|
|
121
|
-
| mini | 512MB | 1GB | 50% | 0 | 1 | 0 |
|
|
122
|
-
| basic | 1GB | 2GB | 100% | 0 | 1 | 0 |
|
|
123
|
-
| standard | 2GB | 5GB | 200% | 1 | 1 | 1 |
|
|
124
|
-
| premium | 4GB | 10GB | 300% | 2 | 2 | 2 |
|
|
125
|
-
| unlimited | 0 | 0 | 0 | 5 | 3 | 3 |
|
|
126
|
-
|
|
127
|
-
Nilai preset tetap bisa dioverride dengan `--memory`, `--disk`, `--cpu`, `--databases`, `--allocations`, dan `--backups`.
|
|
128
|
-
|
|
129
|
-
## Templates
|
|
130
|
-
|
|
131
|
-
Template hanya membuat rekomendasi command create-server. Template tidak membuat node, location, atau allocation.
|
|
132
|
-
|
|
133
|
-
```bash
|
|
134
|
-
ptero-gateway templates list
|
|
135
|
-
ptero-gateway templates show nodejs-bot
|
|
136
|
-
ptero-gateway templates command nodejs-bot --name "bot saya" --email user@example.com --node 1 --nest 5 --egg 18
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
Template bawaan:
|
|
140
|
-
|
|
141
|
-
- `nodejs-bot`
|
|
142
|
-
- `nodejs-api`
|
|
143
|
-
- `wa-bot`
|
|
144
|
-
- `python-bot`
|
|
145
|
-
- `blank`
|
|
146
|
-
|
|
147
|
-
## Create user
|
|
148
|
-
|
|
149
|
-
```bash
|
|
150
|
-
ptero-gateway admin create-user \
|
|
151
|
-
--username aka_test \
|
|
152
|
-
--email user@example.com \
|
|
153
|
-
--password "password aman" \
|
|
154
|
-
--yes
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
## Create server
|
|
158
|
-
|
|
159
|
-
Selalu mulai dengan dry-run:
|
|
111
|
+
Create server dengan dry-run:
|
|
160
112
|
|
|
161
113
|
```bash
|
|
162
114
|
ptero-gateway admin create-server \
|
|
163
115
|
--name "aka test" \
|
|
164
|
-
--email
|
|
165
|
-
--username
|
|
116
|
+
--email user@example.com \
|
|
117
|
+
--username aka_test \
|
|
166
118
|
--password "password aman" \
|
|
167
119
|
--node 1 \
|
|
168
120
|
--nest 5 \
|
|
@@ -171,13 +123,13 @@ ptero-gateway admin create-server \
|
|
|
171
123
|
--dry-run
|
|
172
124
|
```
|
|
173
125
|
|
|
174
|
-
|
|
126
|
+
Create server asli:
|
|
175
127
|
|
|
176
128
|
```bash
|
|
177
129
|
ptero-gateway admin create-server \
|
|
178
130
|
--name "aka test" \
|
|
179
|
-
--email
|
|
180
|
-
--username
|
|
131
|
+
--email user@example.com \
|
|
132
|
+
--username aka_test \
|
|
181
133
|
--password "password aman" \
|
|
182
134
|
--node 1 \
|
|
183
135
|
--nest 5 \
|
|
@@ -186,22 +138,95 @@ ptero-gateway admin create-server \
|
|
|
186
138
|
--yes
|
|
187
139
|
```
|
|
188
140
|
|
|
189
|
-
##
|
|
141
|
+
## SDK usage
|
|
190
142
|
|
|
191
|
-
|
|
143
|
+
```ts
|
|
144
|
+
import { createPtero } from "@akaanakbaik/pterodactyl-gateway";
|
|
192
145
|
|
|
193
|
-
|
|
194
|
-
ptero
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
146
|
+
const ptero = createPtero.fromEnv();
|
|
147
|
+
const doctor = await ptero.doctor();
|
|
148
|
+
console.log(doctor);
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Create server dari SDK:
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
const server = await ptero.servers.createSmart({
|
|
155
|
+
name: "Bot User",
|
|
156
|
+
email: "user@example.com",
|
|
157
|
+
username: "user_bot",
|
|
158
|
+
password: "auto",
|
|
159
|
+
autoCreateUser: true,
|
|
160
|
+
description: "Server bot user",
|
|
161
|
+
nodeId: 1,
|
|
162
|
+
nestId: 5,
|
|
163
|
+
eggId: 18,
|
|
164
|
+
specs: {
|
|
165
|
+
memory: "1GB",
|
|
166
|
+
disk: "2GB",
|
|
167
|
+
cpu: "100%",
|
|
168
|
+
databases: 0,
|
|
169
|
+
allocations: 1,
|
|
170
|
+
backups: 0
|
|
171
|
+
}
|
|
172
|
+
});
|
|
198
173
|
```
|
|
199
174
|
|
|
200
|
-
|
|
175
|
+
Client server handle:
|
|
176
|
+
|
|
177
|
+
```ts
|
|
178
|
+
const serverHandle = ptero.server("311d56b7");
|
|
179
|
+
|
|
180
|
+
await serverHandle.resources();
|
|
181
|
+
await serverHandle.files.list("/");
|
|
182
|
+
await serverHandle.files.write("/tmp/hello.txt", "halo");
|
|
183
|
+
await serverHandle.startup.set("CMD_RUN", "node index.js");
|
|
184
|
+
await serverHandle.start();
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Environment
|
|
188
|
+
|
|
189
|
+
Gunakan environment variable untuk deployment:
|
|
190
|
+
|
|
191
|
+
```env
|
|
192
|
+
PTERO_DOMAIN=https://panel.example.com
|
|
193
|
+
PTERO_PTLA=ptla_xxxxxxxxxxxxxxxxx
|
|
194
|
+
PTERO_PTLC=ptlc_xxxxxxxxxxxxxxxxx
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
| Env | Fungsi |
|
|
198
|
+
|---|---|
|
|
199
|
+
| `PTERO_DOMAIN` | Domain panel Pterodactyl. |
|
|
200
|
+
| `PTERO_PTLA` | Application API Key untuk aksi admin seperti user, server, suspend, limits. |
|
|
201
|
+
| `PTERO_PTLC` | Client API Key untuk kontrol server, file manager, backups, schedules, resources. |
|
|
202
|
+
|
|
203
|
+
Tips:
|
|
204
|
+
|
|
205
|
+
- PTLA hanya untuk backend/admin service.
|
|
206
|
+
- PTLC hanya untuk fitur client server yang diperlukan.
|
|
207
|
+
- Jangan hardcode key ke source code, repo, frontend, pesan bot, atau log publik.
|
|
208
|
+
- Pisahkan key development dan production.
|
|
209
|
+
|
|
210
|
+
## CLI reference
|
|
211
|
+
|
|
212
|
+
Health dan info:
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
ptero-gateway help
|
|
216
|
+
ptero-gateway version
|
|
217
|
+
ptero-gateway self-check
|
|
218
|
+
ptero-gateway release-check
|
|
219
|
+
ptero-gateway doctor
|
|
220
|
+
ptero-gateway connect
|
|
221
|
+
ptero-gateway ids
|
|
222
|
+
ptero-gateway ids --nest 5
|
|
223
|
+
```
|
|
201
224
|
|
|
202
|
-
|
|
225
|
+
Admin:
|
|
203
226
|
|
|
204
227
|
```bash
|
|
228
|
+
ptero-gateway admin users
|
|
229
|
+
ptero-gateway admin servers
|
|
205
230
|
ptero-gateway admin server 5 detail
|
|
206
231
|
ptero-gateway admin server 5 limits
|
|
207
232
|
ptero-gateway admin server 5 update-limits --backups 1 --yes
|
|
@@ -210,7 +235,7 @@ ptero-gateway admin server 5 unsuspend --yes
|
|
|
210
235
|
ptero-gateway admin server 5 reinstall --yes
|
|
211
236
|
```
|
|
212
237
|
|
|
213
|
-
|
|
238
|
+
Client server:
|
|
214
239
|
|
|
215
240
|
```bash
|
|
216
241
|
ptero-gateway probe 311d56b7
|
|
@@ -225,14 +250,7 @@ ptero-gateway server 311d56b7 backups
|
|
|
225
250
|
ptero-gateway server 311d56b7 schedules
|
|
226
251
|
```
|
|
227
252
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
ptero-gateway server 311d56b7 write /tmp/test.txt "halo" --yes
|
|
232
|
-
ptero-gateway server 311d56b7 write /index.js "console.log('halo')" --yes --allow-any-path
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
Power action:
|
|
253
|
+
Power dan command:
|
|
236
254
|
|
|
237
255
|
```bash
|
|
238
256
|
ptero-gateway server 311d56b7 start --yes
|
|
@@ -242,122 +260,167 @@ ptero-gateway server 311d56b7 kill --yes
|
|
|
242
260
|
ptero-gateway server 311d56b7 command "npm start" --yes
|
|
243
261
|
```
|
|
244
262
|
|
|
245
|
-
|
|
263
|
+
## Preset dan template
|
|
246
264
|
|
|
247
265
|
```bash
|
|
248
|
-
ptero-gateway
|
|
249
|
-
ptero-gateway
|
|
250
|
-
ptero-gateway
|
|
266
|
+
ptero-gateway presets
|
|
267
|
+
ptero-gateway templates list
|
|
268
|
+
ptero-gateway templates show nodejs-bot
|
|
269
|
+
ptero-gateway templates command nodejs-bot --name "bot saya" --email user@example.com --node 1 --nest 5 --egg 18
|
|
251
270
|
```
|
|
252
271
|
|
|
253
|
-
|
|
272
|
+
Preset bawaan:
|
|
273
|
+
|
|
274
|
+
| Preset | Cocok untuk |
|
|
275
|
+
|---|---|
|
|
276
|
+
| `mini` | Testing dan bot kecil. |
|
|
277
|
+
| `basic` | Bot Telegram/Discord sederhana. |
|
|
278
|
+
| `standard` | Bot WhatsApp, API, website kecil. |
|
|
279
|
+
| `premium` | Project lebih aktif. |
|
|
280
|
+
| `unlimited` | Resource unlimited sesuai aturan panel. |
|
|
254
281
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
282
|
+
Template bawaan:
|
|
283
|
+
|
|
284
|
+
```txt
|
|
285
|
+
nodejs-bot
|
|
286
|
+
nodejs-api
|
|
287
|
+
wa-bot
|
|
288
|
+
python-bot
|
|
289
|
+
blank
|
|
260
290
|
```
|
|
261
291
|
|
|
262
|
-
##
|
|
292
|
+
## Integration helpers
|
|
293
|
+
|
|
294
|
+
Helper integrasi membuat input server lebih konsisten untuk bot dan website.
|
|
263
295
|
|
|
264
296
|
```ts
|
|
265
|
-
import {
|
|
297
|
+
import { createIntegrationService } from "@akaanakbaik/pterodactyl-gateway";
|
|
266
298
|
|
|
267
|
-
const
|
|
268
|
-
domain:
|
|
299
|
+
const service = createIntegrationService({
|
|
300
|
+
domain: process.env.PTERO_DOMAIN,
|
|
269
301
|
ptla: process.env.PTERO_PTLA,
|
|
270
302
|
ptlc: process.env.PTERO_PTLC
|
|
303
|
+
}, {
|
|
304
|
+
nodeId: 1,
|
|
305
|
+
nestId: 5,
|
|
306
|
+
eggId: 18,
|
|
307
|
+
preset: "standard",
|
|
308
|
+
autoCreateUser: true
|
|
271
309
|
});
|
|
272
310
|
|
|
273
|
-
await
|
|
311
|
+
const dryRun = await service.dryRun({
|
|
312
|
+
kind: "telegram-bot",
|
|
313
|
+
name: "Telegram Bot User",
|
|
314
|
+
email: "user@example.com",
|
|
315
|
+
username: "user_tg",
|
|
316
|
+
password: "auto"
|
|
317
|
+
});
|
|
274
318
|
```
|
|
275
319
|
|
|
276
|
-
|
|
320
|
+
Kind yang tersedia:
|
|
277
321
|
|
|
278
322
|
```ts
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
const ptero = createPtero.fromEnv();
|
|
282
|
-
const doctor = await ptero.doctor();
|
|
283
|
-
console.log(doctor);
|
|
323
|
+
"whatsapp-bot" | "telegram-bot" | "discord-bot" | "nodejs-api" | "website" | "python-bot" | "blank"
|
|
284
324
|
```
|
|
285
325
|
|
|
286
|
-
|
|
326
|
+
## Contoh integrasi
|
|
327
|
+
|
|
328
|
+
Telegram bot:
|
|
287
329
|
|
|
288
330
|
```ts
|
|
289
|
-
const
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
331
|
+
const result = await service.create({
|
|
332
|
+
kind: "telegram-bot",
|
|
333
|
+
name: `tg-${ctx.from.id}`,
|
|
334
|
+
email: `${ctx.from.id}@telegram.local`,
|
|
335
|
+
username: `tg_${ctx.from.id}`,
|
|
336
|
+
password: "auto"
|
|
294
337
|
});
|
|
295
338
|
```
|
|
296
339
|
|
|
297
|
-
|
|
340
|
+
WhatsApp bot:
|
|
298
341
|
|
|
299
342
|
```ts
|
|
300
|
-
const
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
eggId: 18,
|
|
310
|
-
specs: {
|
|
311
|
-
memory: "1GB",
|
|
312
|
-
disk: "2GB",
|
|
313
|
-
cpu: "100%",
|
|
314
|
-
databases: 0,
|
|
315
|
-
allocations: 1,
|
|
316
|
-
backups: 0
|
|
343
|
+
const result = await service.create({
|
|
344
|
+
kind: "whatsapp-bot",
|
|
345
|
+
name: `wa-${order.username}`,
|
|
346
|
+
email: order.email,
|
|
347
|
+
username: order.username,
|
|
348
|
+
password: "auto",
|
|
349
|
+
environment: {
|
|
350
|
+
OWNER_NUMBER: order.phone,
|
|
351
|
+
BOT_NAME: order.botName
|
|
317
352
|
}
|
|
318
353
|
});
|
|
319
354
|
```
|
|
320
355
|
|
|
321
|
-
|
|
356
|
+
Website/API:
|
|
322
357
|
|
|
323
358
|
```ts
|
|
324
|
-
|
|
325
|
-
|
|
359
|
+
app.post("/api/panel/create", async (req, res) => {
|
|
360
|
+
const paid = await checkPayment(req.body.orderId);
|
|
361
|
+
if (!paid) return res.status(403).json({ ok: false, error: "Belum dibayar" });
|
|
362
|
+
|
|
363
|
+
const result = await service.create({
|
|
364
|
+
kind: "website",
|
|
365
|
+
name: req.body.name,
|
|
366
|
+
email: req.body.email,
|
|
367
|
+
username: req.body.username,
|
|
368
|
+
password: "auto"
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
res.json({ ok: true, result });
|
|
372
|
+
});
|
|
326
373
|
```
|
|
327
374
|
|
|
328
|
-
|
|
375
|
+
Dokumentasi contoh lengkap ada di web docs:
|
|
329
376
|
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
await server.files.read("/package.json");
|
|
336
|
-
await server.files.write("/tmp/test.txt", "halo");
|
|
337
|
-
await server.startup.variables();
|
|
338
|
-
await server.startup.set("CMD_RUN", "node index.js");
|
|
339
|
-
await server.backups.list();
|
|
377
|
+
```txt
|
|
378
|
+
https://web-docs-pterodacty-gateway.vercel.app/docs/integrations/telegram-bot
|
|
379
|
+
https://web-docs-pterodacty-gateway.vercel.app/docs/integrations/whatsapp-bot
|
|
380
|
+
https://web-docs-pterodacty-gateway.vercel.app/docs/integrations/discord-bot
|
|
381
|
+
https://web-docs-pterodacty-gateway.vercel.app/docs/integrations/website-api
|
|
340
382
|
```
|
|
341
383
|
|
|
342
|
-
|
|
384
|
+
## Keamanan
|
|
343
385
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
386
|
+
- Jangan hardcode PTLA/PTLC.
|
|
387
|
+
- Jangan kirim API key atau config profile ke user.
|
|
388
|
+
- Jangan log password generated ke public log.
|
|
389
|
+
- Semua aksi tulis/ubah via CLI wajib `--yes`.
|
|
390
|
+
- Write file CLI default hanya boleh ke `/tmp`; path lain wajib `--allow-any-path`.
|
|
391
|
+
- Command berbahaya diblokir oleh guard command.
|
|
392
|
+
- Delete user/server permanen tidak dibuka di CLI stabil.
|
|
393
|
+
- Command node/location/allocation management tidak dibuka di CLI stabil.
|
|
394
|
+
- Frontend tidak boleh memegang API key panel. Gunakan backend untuk semua aksi create server.
|
|
395
|
+
|
|
396
|
+
## Troubleshooting
|
|
397
|
+
|
|
398
|
+
```bash
|
|
399
|
+
ptero-gateway explain DOMAIN_REQUIRED
|
|
400
|
+
ptero-gateway explain DOCKER_IMAGE_NOT_FOUND
|
|
401
|
+
ptero-gateway explain STARTUP_VARIABLE_NOT_FOUND
|
|
402
|
+
ptero-gateway explain EEXIST
|
|
347
403
|
```
|
|
348
404
|
|
|
349
|
-
|
|
405
|
+
Masalah umum:
|
|
350
406
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
407
|
+
| Masalah | Solusi |
|
|
408
|
+
|---|---|
|
|
409
|
+
| `DOMAIN_REQUIRED` | Isi `PTERO_DOMAIN` atau jalankan `ptero-gateway config init`. |
|
|
410
|
+
| PTLA tidak valid | Buat ulang Application API Key dan pastikan permission cukup. |
|
|
411
|
+
| PTLC tidak valid | Buat ulang Client API Key dari account panel. |
|
|
412
|
+
| Docker image tidak ditemukan | Cek egg Docker Images atau isi `--docker-image`. |
|
|
413
|
+
| Tidak ada allocation kosong | Tambahkan allocation dari panel admin node. |
|
|
414
|
+
| Backup gagal limit 0 | Naikkan limit backup server dulu. |
|
|
415
|
+
| Binary global konflik | Hapus `/usr/bin/ptero-gateway`, `/usr/bin/ptg`, lalu install ulang. |
|
|
416
|
+
|
|
417
|
+
Tutorial lengkap troubleshooting:
|
|
418
|
+
|
|
419
|
+
```txt
|
|
420
|
+
https://web-docs-pterodacty-gateway.vercel.app/docs/troubleshooting
|
|
421
|
+
```
|
|
359
422
|
|
|
360
|
-
##
|
|
423
|
+
## Release dan testing
|
|
361
424
|
|
|
362
425
|
```bash
|
|
363
426
|
git clone https://github.com/akaanakbaik/pterodactyl-gateway.git
|
|
@@ -366,22 +429,27 @@ npm install
|
|
|
366
429
|
npm run verify
|
|
367
430
|
```
|
|
368
431
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
## Release checklist
|
|
432
|
+
Checklist publish:
|
|
372
433
|
|
|
373
434
|
```bash
|
|
374
435
|
npm run verify
|
|
375
436
|
npm publish --access public
|
|
376
|
-
npm view @akaanakbaik/pterodactyl-gateway@1.0.
|
|
377
|
-
npm i -g @akaanakbaik/pterodactyl-gateway@1.0.
|
|
437
|
+
npm view @akaanakbaik/pterodactyl-gateway@1.0.2 version --prefer-online --registry=https://registry.npmjs.org/
|
|
438
|
+
npm i -g @akaanakbaik/pterodactyl-gateway@1.0.2 --force --prefer-online --registry=https://registry.npmjs.org/
|
|
378
439
|
ptero-gateway self-check
|
|
379
440
|
ptero-gateway release-check
|
|
441
|
+
ptero-gateway doctor
|
|
380
442
|
```
|
|
381
443
|
|
|
382
|
-
##
|
|
444
|
+
## Versi npm lama
|
|
445
|
+
|
|
446
|
+
Rilis utama yang direkomendasikan adalah `1.0.2` atau `latest`. Versi lama tidak dipromosikan lagi di dokumentasi.
|
|
383
447
|
|
|
384
|
-
|
|
448
|
+
Contoh deprecate versi lama:
|
|
449
|
+
|
|
450
|
+
```bash
|
|
451
|
+
npm deprecate @akaanakbaik/pterodactyl-gateway@"<1.0.0" "Versi lama tidak direkomendasikan. Gunakan @akaanakbaik/pterodactyl-gateway@latest."
|
|
452
|
+
```
|
|
385
453
|
|
|
386
454
|
## Lisensi
|
|
387
455
|
|