@akaanakbaik/pterodactyl-gateway
v1.0.3
Published
Full-featured TypeScript SDK untuk Pterodactyl Panel. Fokus pada kemudahan integrasi untuk developer membangun dashboard, bot, dan sistem otomasi panel yang kompleks.
Downloads
111
Maintainers
Keywords
Readme
Akadev Pterodactyl Gateway
SDK TypeScript & JavaScript Modern untuk Pterodactyl Panel dengan fitur Auto-Deployment, WebSocket Auto-Reconnect, Ekspor Backup Otomatis ke Email, dan Fluent Schedule Builder.
1. Inisialisasi & Diagnostik
Memulai koneksi ke Pterodactyl Panel menggunakan domain, Application API Key (PTLA) untuk tindakan admin, dan Client API Key (PTLC) untuk tindakan pengguna.
import { createPtero } from "@akaanakbaik/pterodactyl-gateway";
const ptero = createPtero({
domain: "panel.example.com",
ptla: "ptla_your_application_key",
ptlc: "ptlc_your_client_key",
debug: true
});Cek Koneksi (Laten & Mode)
const conn = await ptero.connect();
console.log(conn.ok, conn.mode, conn.latency);Analisis Doctor (Pengecekan Izin API)
const report = await ptero.doctor();
console.log(report.ok, report.checks);2. Manajemen Pengguna (User Management)
Melakukan operasi CRUD penuh pada akun admin/pengguna panel.
Buat User Baru (Smart Get or Create)
const user = await ptero.smart.users.getOrCreate({
username: "customer_akadev",
email: "[email protected]",
password: "auto",
administrator: false
});
console.log(user.id, user.username, user.email);Buat User Baru (Raw)
const newUser = await ptero.application.users.create({
username: "user_baru",
email: "[email protected]",
password: "PasswordRahasia123!",
root_admin: false,
first_name: "User",
last_name: "Baru"
});
console.log(newUser);Ambil Daftar User (Pagination)
const list = await ptero.application.users.list(1);
console.log(list.data);Detail User Spesifik
const userDetail = await ptero.application.users.get(1);
console.log(userDetail.attributes.username);Cari User Berdasarkan Email
const foundUser = await ptero.application.users.find("[email protected]");
console.log(foundUser);Update Data User
const updated = await ptero.application.users.update(1, {
username: "user_diupdate",
email: "[email protected]",
first_name: "Nama",
last_name: "Baru"
});
console.log(updated);Hapus User
await ptero.application.users.delete(1);3. Manajemen Lokasi & Node
Melihat lokasi wilayah dan mengelola node/alokasi port server Pterodactyl.
List & Detail Lokasi
const locations = await ptero.application.locations.list();
console.log(locations.data);
const location = await ptero.application.locations.get(1);
console.log(location);List & Detail Node
const nodes = await ptero.application.nodes.list();
console.log(nodes.data);
const node = await ptero.application.nodes.get(1);
console.log(node.attributes.name);
const nodeConfig = await ptero.application.nodes.config(1);
console.log(nodeConfig);Manajemen Alokasi Port Node
const allocations = await ptero.application.nodes.allocations.list(1);
console.log(allocations.data);
await ptero.application.nodes.allocations.create(1, {
ip: "192.168.1.100",
ports: ["25565", "25566"]
});
await ptero.application.nodes.allocations.delete(1, 100);4. Manajemen Nest & Egg
Membaca struktur Nest (kategori) dan Egg (konfigurasi startup server).
List & Detail Nest
const nests = await ptero.application.nests.list();
console.log(nests.data);
const nest = await ptero.application.nests.get(5);
console.log(nest.attributes.name);
const nestByName = await ptero.application.nests.find("nodejs");
console.log(nestByName.id);List & Detail Egg
const eggs = await ptero.application.nests.eggs.list(5);
console.log(eggs.data);
const egg = await ptero.application.nests.eggs.get(5, 15);
console.log(egg.attributes.name);
const eggByName = await ptero.application.nests.eggs.find(5, "Egg Bot Wa");
console.log(eggByName.id);5. Manajemen Server (Administrasi & Deployment)
Mendeploy server baru secara otomatis, mengubah spesifikasi, pemilik, dan nest/egg.
Smart Server Preview (Uji Payload Sebelum Deploy)
const preview = await ptero.smart.servers.preview({
name: "Server Uji Coba",
description: "Server test deploy",
email: "[email protected]",
autoCreateUser: true,
nodeId: 1,
nestId: 5,
eggId: 15,
preset: "mini"
});
console.log(preview.payload, preview.allocation);Deploy Server Baru
const server = await ptero.smart.servers.create({
name: "Server Game Akadev",
description: "Dibuat otomatis oleh SDK",
email: "[email protected]",
autoCreateUser: true,
nodeId: 1,
nestId: 5,
eggId: 15,
preset: "standard",
startOnCompletion: true
});
console.log(server.id, server.identifier);Ambil Detail Lengkap Server Admin
const details = await ptero.getServerDetails(18);
console.log(details.name, details.nodeName, details.userEmail);Update Spesifikasi / Limits Server
await ptero.smart.servers.updateSpecs(18, {
memory: "4GB",
disk: "10GB",
cpu: "200%",
databases: 2,
backups: 2,
allocations: 1
});Pindahkan Kepemilikan Server
await ptero.smart.servers.changeOwnership(18, {
userId: 2
});Ubah Nest & Egg Server
await ptero.smart.servers.changeNestEgg(18, {
nestId: 5,
eggId: 15,
dockerImage: "ghcr.io/parkervcp/yolks:nodejs_22",
startup: "npm start"
});Kontrol Status Server (Admin)
await ptero.application.servers.suspend(18);
await ptero.application.servers.unsuspend(18);
await ptero.application.servers.reinstall(18);Hapus Server (Permanen & Paksa)
await ptero.application.servers.delete(18, true);Operasi Batch (Multi Server)
await ptero.batchServerOperation([18, 19, 20], "suspend");
await ptero.batchServerOperation([18, 19, 20], "unsuspend");
await ptero.batchServerOperation([18, 19, 20], "delete", { force: true });6. Kontrol Client Server
Interaksi pengguna akhir dengan server (Client API).
const server = ptero.server("ca7b58fd");Sinyal Power Server
await server.power("start");
await server.power("stop");
await server.power("restart");
await server.power("kill");Kirim Perintah ke Konsol
await server.command("say Halo Dunia!");Ambil Penggunaan Resource Live
const res = await server.resources();
console.log(res.attributes.state, res.attributes.resources.cpu_absolute);7. Pengelola File Server (Client File Manager)
Mengelola file dan direktori di dalam kontainer server game/bot.
Tulis & Baca File
await server.files.write("/index.js", "console.log('Akadev Gateway');");
const data = await server.files.read("/index.js");
console.log(data);List File & Folder
const list = await server.files.list("/");
console.log(list.data);Buat Folder Baru
await server.files.mkdir("/", "dist");Ganti Nama / Pindahkan File
await server.files.rename("/", [
{ from: "index.js", to: "main.js" }
]);Kompres & Dekompres
await server.files.compress("/", ["main.js", "dist"]);
await server.files.decompress("/", "main.js.tar.gz");Hapus File / Folder
await server.files.delete("/", ["main.js", "dist", "main.js.tar.gz"]);Operasi File JSON Praktis
await server.files.json.write("/config.json", { port: 3000, debug: false });
const config = await server.files.json.read("/config.json");
console.log(config);8. Pengelola Port & Jaringan Server
Mengelola alokasi alamat port pada server.
List Port Terpilih
const net = await server.network.list();
console.log(net.data);Alokasikan Port Tambahan
await server.network.assign();Set Note / Catatan Port
await server.network.setNote(21, "Port untuk bot whatsapp");Set Port Utama (Primary Allocation)
await server.network.setPrimary(21);Hapus Alokasi Port Tambahan
await server.network.delete(21);9. Pengelola Database Server
Mengelola database MySQL server.
List Database Server
const dbs = await server.databases.list();
console.log(dbs.data);Buat Database Baru
const db = await server.databases.create("game_db");
console.log(db.attributes.id, db.attributes.relationships.password);Ganti Password Database
await server.databases.rotatePassword("db_id_xxx");Hapus Database
await server.databases.delete("db_id_xxx");10. Pengelola Backup Server
Membuat dan memulihkan file pencadangan.
List Backup Server
const backups = await server.backups.list();
console.log(backups.data);Buat Backup Baru (Dengan Auto-Filter Opsional)
const backup = await server.backups.create("backup_clean", "node_modules\nvendor\ntmp");
console.log(backup.attributes.uuid);Detail Backup
const backupDetail = await server.backups.get("backup_uuid_xxx");
console.log(backupDetail.attributes.bytes);Dapatkan Link Download Backup
const downloadLink = await server.backups.download("backup_uuid_xxx");
console.log(downloadLink.attributes.url);Hapus Backup
await server.backups.delete("backup_uuid_xxx");11. WebSocket Real-time Stream
Mendengarkan event status server, log konsol, dan penggunaan memori/CPU secara real-time. Dilengkapi mekanisme auto-reconnect dan auto token-refresh jika sambungan terputus.
const ws = server.websocket.create();
ws.onConsole((log) => {
console.log("Console:", log);
});
ws.onStats((stats) => {
console.log("RAM:", stats.memory_bytes, "CPU:", stats.cpu_absolute);
});
ws.onStatus((status) => {
console.log("Status:", status);
});
await ws.connect();12. Fluent Schedule Builder
Membuat jadwal tugas terjadwal (Cron Job) bawaan panel menggunakan struktur builder terantai.
const schedule = server.createScheduleBuilder()
.setName("Pembersihan Mingguan")
.setCron("0 0 * * 0")
.setOnlyWhenOnline(true)
.addTask("command", "say Server membersihkan data cache...", 0, true)
.addTask("command", "npm run clean", 10, false)
.addTask("backup", "", 30, false);
await schedule.save();13. SMTP Email & Auto Backup Exporter (.zip)
Mengirim email pemberitahuan ke pelanggan dan melakukan pencadangan zip otomatis secara eksternal. Secara otomatis membaca konfigurasi SMTP Host, Port, Username, Password, dan Pengirim dari file /var/www/pterodactyl/.env di server panel Anda.
Kirim Email Tertarget ke Pengguna
await ptero.email.sendToUser(1, {
subject: "Pengumuman Pembayaran Server",
html: "<h2>Halo</h2><p>Server Anda akan segera jatuh tempo dalam 3 hari.</p>",
attachments: [
{
filename: "invoice.pdf",
path: "/tmp/invoice.pdf"
}
]
});Kirim Email Broadcast Massal ke Seluruh Pengguna
await ptero.email.broadcast({
subject: "Pemeliharaan Node Server Indonesia",
html: "<h3>Pemberitahuan Sistem</h3><p>Node ID 1 akan dimatikan sementara untuk pemeliharaan RAM.</p>"
});Auto Backup Exporter via Email (.zip)
Secara otomatis membuat backup di panel dengan menyaring folder-folder berat (node_modules, vendor, cache, tmp, temp, .git), mengunduh file hasil backup, mengompres ulangnya ke ekstensi .zip, mengirimkannya langsung ke email pemilik server, dan menghapus sisa file backup di panel.
await ptero.exportAndEmailBackup(18);Backup Massal Pengguna
await ptero.backupAndEmailUserServers(1);Keamanan & Penggunaan Terbuka
- Simpan kredensial Anda di environment variables (
PTERO_DOMAIN,PTERO_PTLA,PTERO_PTLC). - Gunakan
PteroGateway.fromEnv()untuk pemanggilan otomatis dari konfigurasi environment variables. - SDK ini dipastikan bebas dari baris komentar di seluruh source kodenya.
Dibuat dengan ❤️ oleh akaanakbaik
