Skip to content

akaanakbaik/pterodactyl-gateway

Repository files navigation

Akadev Pterodactyl Gateway

NPM Version License Node Version NPM Downloads

SDK TypeScript & JavaScript Modern untuk Pterodactyl Panel dengan fitur Auto-Deployment, WebSocket Auto-Reconnect, Ekspor Backup Otomatis ke Email, dan Fluent Schedule Builder.

npm · GitHub


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: "customer@akadev.me",
  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: "baru@akadev.me",
  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("baru@akadev.me");
console.log(foundUser);

Update Data User

const updated = await ptero.application.users.update(1, {
  username: "user_diupdate",
  email: "update@akadev.me",
  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: "customer@akadev.me",
  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: "customer@akadev.me",
  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

Releases

Packages

Contributors

Languages