Share

Rabu, 01 November 2000

Langkah-langkah meng-online kan mikrotik keygen

Untuk membuat License Generator Mikrotik bisa diakses secara online lewat halaman web (HTML) menggunakan MobaXterm, kita perlu menjembatani antara halaman web HTML dengan script Python (license.py) yang ada di server Debian Anda.

Karena script ini membutuhkan argumen input (Software ID dan Public Key) dan menghasilkan output teks, arsitektur terbaik adalah menggunakan Web Framework Python (Flask) sebagai backend dan HTML sebagai frontend.

Berikut adalah langkah-langkah lengkap untuk mengonlinekannya beserta cara modifikasi port-nya.


Langkah 1: Install Flask di Server Debian

Buka terminal Debian Anda lewat MobaXterm, lalu install Flask (pastikan Debian Anda memiliki akses internet saat instalasi ini):

sudo apt update
sudo apt install python3-pip python3-flask -y

Langkah 2: Buat Script Backend Web (app.py)

Masuk ke dalam folder mikrotik Anda, lalu buat file baru bernama app.py menggunakan editor nano:

nano app.py

Copas (bisa gunakan klik kanan di MobaXterm) kode Python di bawah ini:

from flask import Flask, request, render_template_string
import subprocess

app = Flask(__name__)

# Template HTML Lengkap dengan Tombol Salin Otomatis
HTML_TEMPLATE = """
<!DOCTYPE html>
<html lang="id">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>MikroTik License Generator</title>
   <style>
       body { font-family: Arial, sans-serif; margin: 40px; background-color: #f4f4f9; }
       .container { max-width: 600px; background: white; padding: 20px; border-radius: 8px; box-shadow: 0px 0px 10px rgba(0,0,0,0.1); margin: 0 auto; }
       h2 { text-align: center; color: #333; }
       label { font-weight: bold; display: block; margin-top: 15px; color: #555; }
       input[type="text"], textarea { width: 100%; padding: 10px; margin: 5px 0 15px 0; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; }
       input[type="submit"] { background-color: #4CAF50; color: white; padding: 12px 15px; border: none; border-radius: 4px; cursor: pointer; width: 100%; font-size: 16px; font-weight: bold; }
       input[type="submit"]:hover { background-color: #45a049; }
       .result { background: #e7f3fe; border-left: 6px solid #2196F3; padding: 15px; margin-top: 20px; border-radius: 4px; }
       .result h3 { margin-top: 0; color: #1976D2; }
       textarea { background-color: #fff; font-family: monospace; }
       .btn-copy { background-color: #008CBA; color: white; padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; width: 100%; font-size: 14px; font-weight: bold; margin-top: 5px; transition: 0.2s; }
       .btn-copy:hover { background-color: #007B9E; }
   </style>
</head>
<body>
<div class="container">
   <h2>MikroTik License Generator</h2>
   <form method="POST">
       <label>Software ID (SWID):</label>
       <input type="text" name="swid" placeholder="Contoh: JFJ7-HHEL" required>
       
       <label>Public Key / Key (Kunci Otomatis):</label>
       <input type="text" name="key" value="9DBC845E9018537810FDAE62824322EEE1B12BAD81FCA28EC295FB397C61CE0B" readonly style="background-color: #e9e9e9; cursor: not-allowed; color: #666;">
       
       <input type="submit" value="Generate License">
   </form>

   {% if result %}
   <div class="result">
       <h3>Hasil Lisensi:</h3>
       <textarea id="licenseBox" rows="10" readonly>{{ result }}</textarea>
       <button class="btn-copy" id="copyBtn" onclick="copyLicense()"> Salin Kunci Software</button>
   </div>
   {% endif %}
</div>

<script>
function copyLicense() {
   var copyText = document.getElementById("licenseBox");
   var btn = document.getElementById("copyBtn");
   copyText.select();
   copyText.setSelectionRange(0, 99999);
   navigator.clipboard.writeText(copyText.value).then(function() {
       btn.innerHTML = "✓ Berhasil Disalin!";
       btn.style.backgroundColor = "#4CAF50";
       setTimeout(function(){
           btn.innerHTML = " Salin Kunci Software";
           btn.style.backgroundColor = "#008CBA";
       }, 2500);
   }).catch(function(err) {
       alert("Gagal menyalin teks: " + err);
   });
}
</script>
</body>
</html>
"""

@app.route('/', methods=['GET', 'POST'])
def index():
   result = None
   if request.method == 'POST':
       swid = request.form['swid'].strip()
       key = request.form['key'].strip()
       
       try:
           cmd = ['python3', 'license.py', 'licgenros', swid, key]
           process = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, timeout=10)
           
           if process.returncode == 0:
               result = process.stdout
           else:
               result = f"Error dari script:\n{process.stderr}"
       except Exception as e:
           result = f"Gagal menjalankan script: {str(e)}"
           
   return render_template_string(HTML_TEMPLATE, result=result)

if __name__ == '__main__':
   app.run(host='0.0.0.0', port=5000)
  

Simpan file dengan menekan CTRL + O, lalu Enter, dan keluar dengan CTRL + X.

Langkah 3: Jalankan Web Servernya

Sekarang jalankan script web tersebut dengan perintah:

python3 app.py

Terminal akan menampilkan informasi bahwa server sedang berjalan di http://0.0.0.0:5000.

Langkah 4: Cara Mengaksesnya secara Online

Bagaimana Anda membukanya di browser laptop Anda? Tergantung di mana server Debian Anda berada:

  1. Jika Debian berada di Cloud/VPS (Punya IP Publik):
    Buka browser di laptop Anda, lalu ketik:
    http://IP_PUBLIK_DEBIAN_ANDA:5000
  2. Jika Debian berada di Jaringan Lokal (Satu Wi-Fi/LAN):
    Cek IP lokal Debian Anda dengan perintah ip a. Lalu buka di browser:
    http://IP_LOKAL_DEBIAN_ANDA:5000
  3. Jika Debian di PC lokal dan memanfaatkan MobaXterm (SSH Tunneling):
    Jika port 5000 diblokir oleh firewall server, gunakan fitur Tunneling di MobaXterm:
    • Klik tombol Tunneling (ikon terowongan di bagian atas MobaXterm).
    • Buat tunnel baru: Local port 5000 -> Remote server localhost -> Remote port 5000.
    • Setelah aktif, buka browser di laptop sendiri dan ketik: http://localhost:5000.
Info Hasil: Halaman HTML akan muncul dengan dua kolom input. Begitu Anda masukkan SWID dan Key lalu klik "Generate License", web tersebut akan mengeksekusi script Python di Debian dan langsung memunculkan kode lisensinya!

Masalah: Setelah Exit MobaXterm, Web Tidak Bisa Diakses?

Itu terjadi karena saat Anda menutup MobaXterm, sesi SSH Anda terputus dan otomatis mematikan proses python3 app.py yang sedang berjalan. Di Linux, aplikasi yang dijalankan langsung di terminal akan mati jika terminalnya ditutup.

Supaya web server Anda tetap menyala terus (online 24/7) meskipun MobaXterm Anda exit atau laptop Anda dimatikan, gunakan salah satu metode di bawah ini:

Cara 1: Menggunakan nohup (Paling Cepat & Praktis)

nohup (No Hang Up) menjalankan script tanpa mempedulikan status terminal.

  1. Buka kembali MobaXterm dan masuk ke folder mikrotik.
  2. Jalankan perintah ini:
nohup python3 app.py > output.log 2>&1 &

Sekarang Anda bisa ketik exit atau langsung tutup MobaXterm Anda. Untuk mematikannya di lain waktu, masuk kembali via SSH dan ketik: pkill -f app.py.

Cara 2: Menggunakan Systemd (Sangat Direkomendasikan/Permanen)

Cara ini membuat script Flask Anda menjadi service resmi di Debian. Jika server Debian restart (misal mati lampu), web akan otomatis menyala sendiri saat server hidup kembali.

  1. Buat file konfigurasi service baru:
  2. sudo nano /etc/systemd/system/mikrotik-web.service
  3. Copas konfigurasi di bawah ini (Sesuaikan bagian /path/to/mikrotik dengan lokasi folder mikrotik Anda yang sebenarnya, misal /home/user/mikrotik):
  4. [Unit]
    Description=Mikrotik License Generator Web Service
    After=network.target
    
    [Service]
    User=root
    WorkingDirectory=/path/to/mikrotik
    ExecStart=/usr/bin/python3 app.py
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
  5. Simpan dengan CTRL + O, Enter, lalu CTRL + X.
  6. Jalankan perintah berikut untuk mengaktifkan servicenya:
  7. # Membaca ulang konfigurasi systemd
    sudo systemctl daemon-reload
    
    # Menyalakan service web mikrotik
    sudo systemctl start mikrotik-web
    
    # Membuat service otomatis menyala saat boot
    sudo systemctl enable mikrotik-web

Untuk memastikan service berjalan dengan benar, cek statusnya:

sudo systemctl status mikrotik-web

Jika muncul tulisan hijau active (running), Anda sudah bisa menutup MobaXterm dengan aman!

Jika Anda melakukan perubahan script dan ingin melakukan restart service, gunakan perintah:

sudo systemctl restart mikrotik-web.service

Cara Mengganti Port (Misal dari Port 5000 ke 8080)

Jika Anda ingin mengakses aplikasi via http://192.168.45.68:8080, ikuti 3 langkah berikut:

Langkah 1: Ubah Port di File app.py

Buka kembali file app.py via MobaXterm:

nano app.py

Scroll ke paling bawah dan cari baris berikut:

if __name__ == '__main__':
   app.run(host='0.0.0.0', port=5000)

Ganti angka 5000 dengan port baru Anda, misalnya 8080:

if __name__ == '__main__':
   app.run(host='0.0.0.0', port=8080)

Simpan dengan CTRL + O, Enter, lalu CTRL + X.

Langkah 2: Sesuaikan Konfigurasi Pendukung (Jika Ada)

  • Kasus A: Jika Menggunakan Cloudflare Tunnel
    Buka konfigurasi Cloudflare:
    nano ~/.cloudflared/config.yml
    Ubah bagian service ke port baru:
    service: http://localhost:8080
  • Kasus B: Jika Menggunakan Systemd
    Anda tidak perlu mengubah isi file service karena systemd langsung mengeksekusi file app.py yang sudah diperbarui. Cukup lakukan restart nanti.

Langkah 3: Bersihkan Port Lama & Jalankan Ulang

Agar sistem Debian menutup port lama dan membuka port baru secara bersih, jalankan perintah ini berurutan:

# 1. Matikan paksa sisa proses di port 5000 lama
sudo fuser -k 5000/tcp

# 2. Restart service web generator Anda
sudo systemctl restart mikrotik-web.service

Selesai! Sekarang aplikasi Anda sudah sukses berpindah jalur dan bisa diakses via IP jaringan lokal di alamat baru: http://192.168.45.68:8080

© 2026 Mediatama Computer Hinai. All rights reserved.

Tidak ada komentar:

Posting Komentar