<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://noctkj.net/index.php?action=history&amp;feed=atom&amp;title=Mikrotik_%3A_Hotspot_Lanjutan_%28User_Profile_dan_Voucher%29</id>
	<title>Mikrotik : Hotspot Lanjutan (User Profile dan Voucher) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://noctkj.net/index.php?action=history&amp;feed=atom&amp;title=Mikrotik_%3A_Hotspot_Lanjutan_%28User_Profile_dan_Voucher%29"/>
	<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Mikrotik_:_Hotspot_Lanjutan_(User_Profile_dan_Voucher)&amp;action=history"/>
	<updated>2026-10-22T05:02:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://noctkj.net/index.php?title=Mikrotik_:_Hotspot_Lanjutan_(User_Profile_dan_Voucher)&amp;diff=1452&amp;oldid=prev</id>
		<title>Maintenance script: Protected &quot;Mikrotik : Hotspot Lanjutan (User Profile dan Voucher)&quot;: Proteksi editorial: edit/move sysop ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))</title>
		<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Mikrotik_:_Hotspot_Lanjutan_(User_Profile_dan_Voucher)&amp;diff=1452&amp;oldid=prev"/>
		<updated>2026-10-21T00:01:52Z</updated>

		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/index.php/Mikrotik_:_Hotspot_Lanjutan_(User_Profile_dan_Voucher)&quot; title=&quot;Mikrotik : Hotspot Lanjutan (User Profile dan Voucher)&quot;&gt;Mikrotik : Hotspot Lanjutan (User Profile dan Voucher)&lt;/a&gt;&amp;quot;: Proteksi editorial: edit/move sysop ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:01, 21 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://noctkj.net/index.php?title=Mikrotik_:_Hotspot_Lanjutan_(User_Profile_dan_Voucher)&amp;diff=1451&amp;oldid=prev</id>
		<title>Maintenance script: Artikel baru: Hotspot Lanjutan (user profile dan voucher)</title>
		<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Mikrotik_:_Hotspot_Lanjutan_(User_Profile_dan_Voucher)&amp;diff=1451&amp;oldid=prev"/>
		<updated>2026-10-21T00:01:45Z</updated>

		<summary type="html">&lt;p&gt;Artikel baru: Hotspot Lanjutan (user profile dan voucher)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Hotspot dasar biasanya berhenti di &amp;quot;bisa login dan dapat internet&amp;quot;. Begitu hotspot dipakai untuk acara sekolah atau dijual per kode, pertanyaannya berubah: bagaimana membatasi waktu, kecepatan, dan jumlah perangkat untuk tiap orang? Di titik itu &amp;#039;&amp;#039;user profile&amp;#039;&amp;#039; dan voucher mulai bekerja.&lt;br /&gt;
&lt;br /&gt;
== 🎯 Tujuan ==&lt;br /&gt;
Setelah membaca dan mempraktikkan artikel ini, kamu bisa:&lt;br /&gt;
&lt;br /&gt;
* Membedakan &amp;#039;&amp;#039;&amp;#039;server profile&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;user profile&amp;#039;&amp;#039;&amp;#039;, dan &amp;#039;&amp;#039;&amp;#039;user&amp;#039;&amp;#039;&amp;#039; hotspot tanpa tertukar.&lt;br /&gt;
* Merancang paket voucher (1 jam, 1 hari, guru) memakai &amp;lt;code&amp;gt;rate-limit&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;session-timeout&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;limit-uptime&amp;lt;/code&amp;gt;, dan &amp;lt;code&amp;gt;shared-users&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Membuat banyak voucher sekaligus dengan script, lalu mencetaknya ke file untuk dibagikan atau dijual.&lt;br /&gt;
* Membuktikan bahwa satu kode hanya bisa dipakai satu perangkat dan benar-benar mati saat waktunya habis.&lt;br /&gt;
&lt;br /&gt;
== 📍 Konteks nyata ==&lt;br /&gt;
Bayangkan hotspot dasar sebagai pintu kelas dengan satu kunci. Semua siswa memegang salinan kunci yang sama, jadi tidak ada yang tahu siapa masuk dan kapan harus pulang.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;User profile&amp;#039;&amp;#039; itu &amp;#039;&amp;#039;&amp;#039;jenis tiketnya&amp;#039;&amp;#039;&amp;#039; (reguler, VIP, guru), sedangkan voucher itu &amp;#039;&amp;#039;&amp;#039;karcis bernomor&amp;#039;&amp;#039;&amp;#039; yang hanya berlaku untuk satu orang dan satu durasi. Karcis boleh dicetak banyak, tapi nomornya tidak boleh kembar.&lt;br /&gt;
&lt;br /&gt;
🔥 &amp;#039;&amp;#039;&amp;#039;Kasus nyata:&amp;#039;&amp;#039;&amp;#039; Sebuah SMK mengadakan workshop tiga hari untuk 80 tamu. Panitia membuat satu akun bersama &amp;lt;code&amp;gt;tamu&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;smk2026&amp;lt;/code&amp;gt; dengan &amp;lt;code&amp;gt;shared-users=80&amp;lt;/code&amp;gt; supaya semua bisa masuk.&lt;br /&gt;
&lt;br /&gt;
Hari kedua kode itu sudah beredar di grup WhatsApp alumni. Tiga hari setelah acara, masih ada 20 perangkat online, kuota modem habis, dan panitia tidak bisa menunjuk siapa pemakainya karena semua orang memakai nama yang sama.&lt;br /&gt;
&lt;br /&gt;
Perbaikannya bukan menambah bandwidth, tapi mengganti model: satu orang satu voucher, &amp;lt;code&amp;gt;shared-users=1&amp;lt;/code&amp;gt;, plus batas waktu yang tidak bisa diakali dengan logout-login.&lt;br /&gt;
&lt;br /&gt;
== 🧠 Konsep singkat ==&lt;br /&gt;
Hotspot punya tiga lapis pengaturan. Banyak siswa gagal karena menaruh pengaturan di lapis yang salah, lalu menyimpulkan &amp;quot;MikroTik-nya rusak&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Lapis !! Menu !! Mengatur apa !! Analogi&lt;br /&gt;
|-&lt;br /&gt;
| Server profile || &amp;lt;code&amp;gt;/ip hotspot profile&amp;lt;/code&amp;gt; || Cara login, halaman login, DNS name, sertifikat, RADIUS || Jenis gedung dan pintu masuknya&lt;br /&gt;
|-&lt;br /&gt;
| User profile || &amp;lt;code&amp;gt;/ip hotspot user profile&amp;lt;/code&amp;gt; || Kecepatan, batas sesi, jumlah perangkat, address list, script login || Jenis tiket dan fasilitasnya&lt;br /&gt;
|-&lt;br /&gt;
| User || &amp;lt;code&amp;gt;/ip hotspot user&amp;lt;/code&amp;gt; || Nama, password, paket yang dipakai, sisa waktu, sisa kuota || Nama pemegang karcis&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Urutan berpikirnya selalu: &amp;#039;&amp;#039;&amp;#039;buat jenis tiket dulu, baru cetak karcisnya&amp;#039;&amp;#039;&amp;#039;. Kalau kamu membuat user sebelum profile-nya ada, kode itu akan menempel ke profile &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; dan semua batas yang kamu rencanakan hilang.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Tiga lapis yang sering tertukar ===&lt;br /&gt;
&amp;lt;code&amp;gt;/ip hotspot profile&amp;lt;/code&amp;gt; mengatur &amp;#039;&amp;#039;&amp;#039;bagaimana orang login&amp;#039;&amp;#039;&amp;#039;. Di sini ada &amp;lt;code&amp;gt;login-by&amp;lt;/code&amp;gt; (default &amp;lt;code&amp;gt;http-chap,cookie&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;dns-name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;html-directory&amp;lt;/code&amp;gt;, dan &amp;lt;code&amp;gt;ssl-certificate&amp;lt;/code&amp;gt;. Ini bukan tempat mengatur kecepatan.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/ip hotspot user profile&amp;lt;/code&amp;gt; mengatur &amp;#039;&amp;#039;&amp;#039;apa yang didapat setelah login&amp;#039;&amp;#039;&amp;#039;. Di sini ada &amp;lt;code&amp;gt;rate-limit&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;session-timeout&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shared-users&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;idle-timeout&amp;lt;/code&amp;gt;, dan &amp;lt;code&amp;gt;address-list&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/ip hotspot user&amp;lt;/code&amp;gt; mengatur &amp;#039;&amp;#039;&amp;#039;identitas dan jatah pribadi&amp;#039;&amp;#039;&amp;#039;. Di sini ada &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;password&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;limit-uptime&amp;lt;/code&amp;gt;, serta &amp;lt;code&amp;gt;limit-bytes-in&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;out&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;total&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Kalau kamu mencari &amp;quot;batas kuota&amp;quot; di menu profile, kamu tidak akan menemukannya. Kuota byte memang properti per user, bukan per profile. Ini fakta yang paling sering bikin bingung.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Batas waktu: session-timeout vs limit-uptime ===&lt;br /&gt;
Keduanya terlihat sama, padahal berbeda cara hitung.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;session-timeout&amp;lt;/code&amp;gt; ada di user profile dan membatasi &amp;#039;&amp;#039;&amp;#039;satu sesi login&amp;#039;&amp;#039;&amp;#039;. Habis waktunya, user diputus. Kalau user login lagi, timer mulai dari nol.&lt;br /&gt;
* &amp;lt;code&amp;gt;limit-uptime&amp;lt;/code&amp;gt; ada di user dan menghitung &amp;#039;&amp;#039;&amp;#039;akumulasi pemakaian&amp;#039;&amp;#039;&amp;#039; milik kode itu. Habis, kode tidak bisa dipakai lagi walau user logout berkali-kali.&lt;br /&gt;
&lt;br /&gt;
Untuk voucher yang dijual, pakai &amp;lt;code&amp;gt;limit-uptime&amp;lt;/code&amp;gt; sebagai pengaman utama, dan &amp;lt;code&amp;gt;session-timeout&amp;lt;/code&amp;gt; sebagai pengaman tambahan supaya satu sesi tidak menggantung berhari-hari.&lt;br /&gt;
&lt;br /&gt;
📊 &amp;#039;&amp;#039;&amp;#039;Angka penting:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;shared-users&amp;lt;/code&amp;gt; default &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; (satu kode satu sesi), &amp;lt;code&amp;gt;session-timeout&amp;lt;/code&amp;gt; default &amp;#039;&amp;#039;&amp;#039;0s&amp;#039;&amp;#039;&amp;#039; (tanpa batas), &amp;lt;code&amp;gt;http-cookie-lifetime&amp;lt;/code&amp;gt; default &amp;#039;&amp;#039;&amp;#039;3d&amp;#039;&amp;#039;&amp;#039;, &amp;lt;code&amp;gt;mac-cookie-timeout&amp;lt;/code&amp;gt; default &amp;#039;&amp;#039;&amp;#039;3d&amp;#039;&amp;#039;&amp;#039;, dan &amp;lt;code&amp;gt;addresses-per-mac&amp;lt;/code&amp;gt; default &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; alamat IP per MAC.&lt;br /&gt;
&lt;br /&gt;
== 🧩 Istilah penting ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Istilah !! Arti singkat&lt;br /&gt;
|-&lt;br /&gt;
| Voucher || Kode sekali pakai berisi username dan password, biasanya dicetak di kertas kecil.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rate-limit&amp;lt;/code&amp;gt; || Batas kecepatan dalam format &amp;lt;code&amp;gt;rx/tx&amp;lt;/code&amp;gt;. Dibaca dari sudut router: &amp;#039;&amp;#039;&amp;#039;rx = upload client&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;tx = download client&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;shared-users&amp;lt;/code&amp;gt; || Berapa sesi yang boleh memakai satu username pada saat bersamaan.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;session-timeout&amp;lt;/code&amp;gt; || Batas umur satu sesi login, dihitung ulang setiap kali login.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;limit-uptime&amp;lt;/code&amp;gt; || Batas total waktu pemakaian sebuah akun, tidak direset oleh logout.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;limit-bytes-total&amp;lt;/code&amp;gt; || Batas total byte (unggah + unduh) untuk satu akun.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;address-list&amp;lt;/code&amp;gt; || Daftar alamat yang otomatis diisi IP user saat login, berguna untuk Queue Tree per paket.&lt;br /&gt;
|-&lt;br /&gt;
| MAC cookie || Fitur login otomatis berdasarkan MAC address, nyaman untuk HP tapi bisa membuat voucher terasa &amp;quot;bocor&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| Walled garden || Daftar situs yang boleh dibuka &amp;#039;&amp;#039;&amp;#039;tanpa&amp;#039;&amp;#039;&amp;#039; login, misalnya halaman pembayaran atau situs sekolah.&lt;br /&gt;
|-&lt;br /&gt;
| User Manager || Paket RADIUS bawaan RouterOS untuk mengelola voucher dalam jumlah besar dan banyak router.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 🔧 Praktik: Menyiapkan Paket Voucher ==&lt;br /&gt;
Praktik ini memakai satu router lab dengan hotspot dasar yang sudah jalan (lihat materi terkait). Alamat contoh memakai rentang dokumentasi RFC 5737: gateway hotspot &amp;lt;code&amp;gt;192.0.2.1/24&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
⚠️ &amp;#039;&amp;#039;&amp;#039;Hati-hati:&amp;#039;&amp;#039;&amp;#039; Hotspot bisa diblokir oleh &amp;lt;code&amp;gt;device-mode&amp;lt;/code&amp;gt;, dan hanya berjalan baik di IPv4. Cek &amp;lt;code&amp;gt;/system/device-mode print&amp;lt;/code&amp;gt; sebelum menyalahkan konfigurasi.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 1: Cek pondasi hotspot ===&lt;br /&gt;
Pastikan server hotspot, pool, dan DHCP sudah ada. Jangan membuat profile di atas hotspot yang belum pernah diuji login.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
/ip hotspot print&lt;br /&gt;
/ip hotspot profile print&lt;br /&gt;
/ip hotspot user profile print&lt;br /&gt;
/ip hotspot user print&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yang perlu dilihat: kolom &amp;lt;code&amp;gt;PROFILE&amp;lt;/code&amp;gt; di server hotspot menunjuk ke server profile yang benar, dan &amp;lt;code&amp;gt;login-by&amp;lt;/code&amp;gt; masih default &amp;lt;code&amp;gt;http-chap,cookie&amp;lt;/code&amp;gt;. Mode &amp;lt;code&amp;gt;http-chap&amp;lt;/code&amp;gt; tidak mengirim password dalam teks biasa, jadi aman untuk lab sekolah.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 2: Buat tiga user profile ===&lt;br /&gt;
Kita buat tiga &amp;quot;jenis tiket&amp;quot;: 1 jam, 1 hari, dan guru. Semua memakai &amp;lt;code&amp;gt;shared-users=1&amp;lt;/code&amp;gt; kecuali guru.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
/ip hotspot user profile&lt;br /&gt;
add name=&amp;quot;vcr-1jam&amp;quot; shared-users=1 session-timeout=1h \&lt;br /&gt;
    rate-limit=&amp;quot;1M/2M&amp;quot; address-list=&amp;quot;hs-vcr-1jam&amp;quot; \&lt;br /&gt;
    comment=&amp;quot;voucher 1 jam - workshop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
add name=&amp;quot;vcr-1hari&amp;quot; shared-users=1 session-timeout=1d \&lt;br /&gt;
    rate-limit=&amp;quot;2M/5M&amp;quot; address-list=&amp;quot;hs-vcr-1hari&amp;quot; \&lt;br /&gt;
    comment=&amp;quot;voucher 1 hari - tamu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
add name=&amp;quot;guru&amp;quot; shared-users=2 session-timeout=0s \&lt;br /&gt;
    rate-limit=&amp;quot;5M/20M&amp;quot; address-list=&amp;quot;hs-guru&amp;quot; \&lt;br /&gt;
    comment=&amp;quot;akun guru, tanpa batas waktu&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Penjelasan singkat tiap parameter:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;rate-limit=&amp;quot;2M/5M&amp;quot;&amp;lt;/code&amp;gt; artinya upload maksimal 2 Mbps dan download maksimal 5 Mbps untuk pemakai paket itu.&lt;br /&gt;
* &amp;lt;code&amp;gt;session-timeout=1d&amp;lt;/code&amp;gt; memutus sesi setelah 24 jam, walaupun perangkatnya masih menyala.&lt;br /&gt;
* &amp;lt;code&amp;gt;address-list=&amp;quot;hs-vcr-1hari&amp;quot;&amp;lt;/code&amp;gt; membuat IP user otomatis masuk daftar saat login, sehingga Queue Tree bisa menargetkan per paket tanpa mangle tambahan.&lt;br /&gt;
* &amp;lt;code&amp;gt;comment&amp;lt;/code&amp;gt; dipakai agar kamu bisa menghapus semua voucher satu acara dengan satu perintah &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
⚠️ &amp;#039;&amp;#039;&amp;#039;Hati-hati:&amp;#039;&amp;#039;&amp;#039; Urutan &amp;lt;code&amp;gt;rate-limit&amp;lt;/code&amp;gt; mudah terbalik. &amp;lt;code&amp;gt;2M/5M&amp;lt;/code&amp;gt; berarti download 5M, bukan upload 5M. Kalau tertukar, siswa mengeluh &amp;quot;download lambat&amp;quot; padahal kamu memberi 5M untuk upload dan 2M untuk download.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 3: Buat voucher otomatis dengan script ===&lt;br /&gt;
Membuat 20 voucher satu per satu lewat Winbox itu menyiksa. Pakai script supaya kode dibuat acak, dicek duplikatnya, lalu disimpan sebagai user hotspot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
:local jumlah 20&lt;br /&gt;
:local prefix &amp;quot;vcr-&amp;quot;&lt;br /&gt;
:local dibuat 0&lt;br /&gt;
&lt;br /&gt;
:while ($dibuat &amp;lt; $jumlah) do={&lt;br /&gt;
  :local kode [:tostr [:rndnum from=100000 to=999999]]&lt;br /&gt;
  :local nama ($prefix . $kode)&lt;br /&gt;
  :if ([/ip hotspot user print count-only where name=$nama] = 0) do={&lt;br /&gt;
    /ip hotspot user add name=$nama password=$kode \&lt;br /&gt;
        profile=&amp;quot;vcr-1hari&amp;quot; limit-uptime=1d \&lt;br /&gt;
        comment=&amp;quot;voucher workshop okt 2026&amp;quot;&lt;br /&gt;
    :set dibuat ($dibuat + 1)&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
:log info (&amp;quot;voucher dibuat: &amp;quot; . $dibuat)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cara kerjanya: &amp;lt;code&amp;gt;:rndnum&amp;lt;/code&amp;gt; menghasilkan angka acak, lalu &amp;lt;code&amp;gt;print count-only where name=$nama&amp;lt;/code&amp;gt; memastikan kode itu belum ada. Kalau sudah ada, loop mengulang tanpa menambah hitungan, jadi jumlah akhir selalu tepat 20.&lt;br /&gt;
&lt;br /&gt;
📊 &amp;#039;&amp;#039;&amp;#039;Angka penting:&amp;#039;&amp;#039;&amp;#039; kode 6 digit numerik hanya punya &amp;#039;&amp;#039;&amp;#039;900.000&amp;#039;&amp;#039;&amp;#039; kombinasi dan mudah ditebak script orang lain. Untuk voucher yang dijual ke publik, pakai 8 karakter campuran huruf dan angka, plus &amp;lt;code&amp;gt;shared-users=1&amp;lt;/code&amp;gt; dan pembatasan percobaan login.&lt;br /&gt;
&lt;br /&gt;
💡 &amp;#039;&amp;#039;&amp;#039;Tips:&amp;#039;&amp;#039;&amp;#039; jalankan script yang sama dua kali dengan &amp;lt;code&amp;gt;comment&amp;lt;/code&amp;gt; berbeda untuk acara berbeda. Saat acara selesai, hapus sekaligus dengan &amp;lt;code&amp;gt;/ip hotspot user remove [find comment~&amp;quot;workshop okt 2026&amp;quot;]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 4: Cetak voucher ke file ===&lt;br /&gt;
Setelah semua kode dibuat, ekspor daftarnya ke file teks supaya bisa dicetak dan digunting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
/ip hotspot user print where profile=&amp;quot;vcr-1hari&amp;quot; file=&amp;quot;voucher-1hari&amp;quot;&lt;br /&gt;
/file print&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File akan muncul di menu Files dengan nama &amp;lt;code&amp;gt;voucher-1hari.txt&amp;lt;/code&amp;gt;. Unduh lewat Winbox (menu Files, tombol Download) atau FTP, lalu cetak. Kolom password ikut tercetak, jadi perlakukan file ini seperti daftar uang tunai.&lt;br /&gt;
&lt;br /&gt;
💡 &amp;#039;&amp;#039;&amp;#039;Tips:&amp;#039;&amp;#039;&amp;#039; cetak dua rangkap: satu digunting untuk dijual, satu disimpan panitia untuk mencocokkan kalau ada kode yang tidak bisa login.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 5: Uji satu voucher ===&lt;br /&gt;
Ambil satu kode dari file, login dari HP, lalu periksa dari router.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
/ip hotspot active print&lt;br /&gt;
/ip hotspot active print detail where user~&amp;quot;vcr-&amp;quot;&lt;br /&gt;
/ip hotspot user print detail where name=&amp;quot;vcr-123456&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Di &amp;lt;code&amp;gt;active&amp;lt;/code&amp;gt; kamu akan melihat &amp;lt;code&amp;gt;session-time-left&amp;lt;/code&amp;gt;, yaitu sisa waktu sesi berjalan. Di &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt; kamu bisa membaca &amp;lt;code&amp;gt;uptime&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bytes-in&amp;lt;/code&amp;gt;, dan &amp;lt;code&amp;gt;bytes-out&amp;lt;/code&amp;gt; untuk memastikan trafik benar-benar tercatat.&lt;br /&gt;
&lt;br /&gt;
🧪 &amp;#039;&amp;#039;&amp;#039;Uji cepat:&amp;#039;&amp;#039;&amp;#039; login kode yang sama dari perangkat kedua. Dengan &amp;lt;code&amp;gt;shared-users=1&amp;lt;/code&amp;gt;, sesi kedua tidak boleh berjalan bersamaan. Cek &amp;lt;code&amp;gt;/ip hotspot active print count-only where user=&amp;quot;vcr-123456&amp;quot;&amp;lt;/code&amp;gt; — hasilnya harus &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 6: Uji batas paket ===&lt;br /&gt;
Jangan percaya batas yang belum diuji. Tiga uji ini cukup untuk membuktikan paket bekerja.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Uji kecepatan:&amp;#039;&amp;#039;&amp;#039; pakai &amp;lt;code&amp;gt;/tool speed-test&amp;lt;/code&amp;gt; atau unduh file besar dari perangkat yang login dengan voucher 1 jam. Hasilnya harus mendekati 2 Mbps upload dan 5 Mbps download.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Uji waktu:&amp;#039;&amp;#039;&amp;#039; buat profile uji &amp;lt;code&amp;gt;vcr-uji&amp;lt;/code&amp;gt; dengan &amp;lt;code&amp;gt;session-timeout=2m&amp;lt;/code&amp;gt;, login, lalu tunggu. User harus terlempar dari &amp;lt;code&amp;gt;active&amp;lt;/code&amp;gt; setelah ±2 menit.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Uji kuota:&amp;#039;&amp;#039;&amp;#039; buat user uji dengan &amp;lt;code&amp;gt;limit-bytes-total=20M&amp;lt;/code&amp;gt;, lalu unduh file 50 MB. Setelah 20 MB terpakai, sesi harus berhenti walaupun waktunya masih sisa.&lt;br /&gt;
&lt;br /&gt;
Setelah selesai, bersihkan: hapus profile &amp;lt;code&amp;gt;vcr-uji&amp;lt;/code&amp;gt; dan user uji, lalu pastikan tidak ada sesi menggantung di &amp;lt;code&amp;gt;active&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Versi Winbox ===&lt;br /&gt;
* Menu &amp;#039;&amp;#039;&amp;#039;IP → Hotspot → User Profiles&amp;#039;&amp;#039;&amp;#039; untuk membuat paket. Isi &amp;lt;code&amp;gt;Rate Limit&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Shared Users&amp;lt;/code&amp;gt;, dan &amp;lt;code&amp;gt;Session Timeout&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Menu &amp;#039;&amp;#039;&amp;#039;IP → Hotspot → Users&amp;#039;&amp;#039;&amp;#039; untuk melihat kode, paket, dan sisa pemakaian.&lt;br /&gt;
* Menu &amp;#039;&amp;#039;&amp;#039;IP → Hotspot → Active&amp;#039;&amp;#039;&amp;#039; untuk memantau siapa yang sedang online. Tombol Remove di sini memutus sesi, bukan menghapus akun.&lt;br /&gt;
* Menu &amp;#039;&amp;#039;&amp;#039;Files&amp;#039;&amp;#039;&amp;#039; untuk mengunduh hasil &amp;lt;code&amp;gt;print file=&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Kalau acaranya besar: User Manager ===&lt;br /&gt;
Untuk satu router sekolah, cara di atas sudah cukup. Kalau kamu mengelola beberapa router atau butuh voucher dengan masa aktif yang dihitung rapi, RouterOS menyediakan paket &amp;#039;&amp;#039;&amp;#039;User Manager&amp;#039;&amp;#039;&amp;#039; sebagai server RADIUS lokal.&lt;br /&gt;
&lt;br /&gt;
Fakta pentingnya: User Manager adalah paket terpisah, &amp;lt;code&amp;gt;enabled=no&amp;lt;/code&amp;gt; secara default, memakai port &amp;lt;code&amp;gt;1812&amp;lt;/code&amp;gt; (authentication) dan &amp;lt;code&amp;gt;1813&amp;lt;/code&amp;gt; (accounting), serta jumlah sesi aktifnya dibatasi lisensi RouterOS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
/user-manager user&lt;br /&gt;
add-batch-users number-of-users=20 username-length=6 \&lt;br /&gt;
    username-characters=lowercase password-length=6 \&lt;br /&gt;
    password-characters=lowercase,uppercase,numbers&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setelah user dibuat, voucher dicetak dengan template bawaan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
/user-manager user&lt;br /&gt;
generate-voucher voucher-template=printable_vouchers.html [find]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hasilnya bisa dibuka lewat browser di &amp;lt;code&amp;gt;/um/PRIVATE/GENERATED/vouchers/gen_printable_vouchers.html&amp;lt;/code&amp;gt;. Folder &amp;lt;code&amp;gt;PRIVATE&amp;lt;/code&amp;gt; hanya bisa diakses setelah &amp;lt;code&amp;gt;web-private-username&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;web-private-password&amp;lt;/code&amp;gt; diisi.&lt;br /&gt;
&lt;br /&gt;
Template voucher mendukung variabel &amp;lt;code&amp;gt;$(username)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$(password)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$(userprofname)&amp;lt;/code&amp;gt;, dan &amp;lt;code&amp;gt;$(userprofendtime)&amp;lt;/code&amp;gt;. Untuk daftar massal, gunakan template &amp;lt;code&amp;gt;export.csv&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;export.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 🏭 Dipakai di dunia kerja ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Sekolah:*** workshop, pelatihan guru, atau ujian berbasis komputer dengan tamu. Voucher per orang membuat panitia tahu siapa masih online saat acara selesai, dan bandwidth tidak dipakai perangkat yang lupa logout.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Warnet dan kios Wi-Fi:*** paket 1 jam, 3 jam, dan 1 hari dijual terpisah. &amp;lt;code&amp;gt;limit-uptime&amp;lt;/code&amp;gt; melindungi pemilik dari kode yang dipakai bergiliran seharian.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Kafe dan hotel:*** voucher per meja atau per kamar dengan masa aktif 1 hari. Resepsionis cukup menyerahkan kertas, tanpa membuat akun baru setiap tamu datang.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Event organizer:*** 200 peserta, satu SSID, dan tiga profil berbeda untuk peserta, panitia, dan pembicara. Pembicara butuh jaminan kecepatan, peserta cukup untuk media sosial.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ISP RT/RW net:*** paket bulanan dengan masa aktif dan kuota. Di sinilah User Manager lebih masuk akal karena pelanggan perlu diperpanjang otomatis.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Kantor:*** akun tamu untuk vendor dengan masa aktif pendek, terpisah dari SSID karyawan yang memakai VLAN dan firewall sendiri.&lt;br /&gt;
&lt;br /&gt;
== ✅ Verifikasi ==&lt;br /&gt;
Jalankan berurutan dan cocokkan hasilnya. Kalau satu langkah gagal, jangan lanjut mencetak voucher.&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;/ip hotspot user profile print detail&amp;lt;/code&amp;gt; — ketiga profile ada, &amp;lt;code&amp;gt;shared-users=1&amp;lt;/code&amp;gt;, dan &amp;lt;code&amp;gt;rate-limit&amp;lt;/code&amp;gt; tidak kosong.&lt;br /&gt;
# &amp;lt;code&amp;gt;/ip hotspot user print count-only where profile=&amp;quot;vcr-1hari&amp;quot;&amp;lt;/code&amp;gt; — jumlahnya sama dengan &amp;lt;code&amp;gt;jumlah&amp;lt;/code&amp;gt; di script (20).&lt;br /&gt;
# &amp;lt;code&amp;gt;/ip hotspot user print where profile=&amp;quot;vcr-1hari&amp;quot;&amp;lt;/code&amp;gt; — tidak ada nama kode yang kembar.&lt;br /&gt;
# &amp;lt;code&amp;gt;/ip hotspot active print&amp;lt;/code&amp;gt; — hanya perangkat uji yang muncul, dengan &amp;lt;code&amp;gt;session-time-left&amp;lt;/code&amp;gt; berjalan mundur.&lt;br /&gt;
# &amp;lt;code&amp;gt;/ip hotspot active print count-only where user=&amp;quot;vcr-123456&amp;quot;&amp;lt;/code&amp;gt; — hasil &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; setelah login dari dua perangkat.&lt;br /&gt;
# &amp;lt;code&amp;gt;/ip hotspot cookie print&amp;lt;/code&amp;gt; — cookie lama ikut terhapus saat akun dihapus, jadi tidak ada login otomatis yang tertinggal.&lt;br /&gt;
&lt;br /&gt;
🧪 &amp;#039;&amp;#039;&amp;#039;Uji cepat:&amp;#039;&amp;#039;&amp;#039; hapus satu user uji, lalu coba login dengan kode itu. Harus gagal. Kalau masih bisa masuk, kemungkinan besar perangkat memakai MAC cookie dari sesi sebelumnya.&lt;br /&gt;
&lt;br /&gt;
== ⚠️ Kesalahan umum &amp;amp; troubleshooting ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Gejala !! Penyebab !! Perbaikan&lt;br /&gt;
|-&lt;br /&gt;
| Kode benar tapi login ditolak || Profile yang dirujuk user tidak ada, atau user menempel ke profile &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; || Cek &amp;lt;code&amp;gt;/ip hotspot user print detail&amp;lt;/code&amp;gt;, lalu &amp;lt;code&amp;gt;set [find name=&amp;quot;...&amp;quot;] profile=&amp;quot;vcr-1hari&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Login berhasil, internet tidak jalan || Rule NAT atau DNS hotspot belum ada, atau &amp;lt;code&amp;gt;walled-garden&amp;lt;/code&amp;gt; salah || Cek &amp;lt;code&amp;gt;/ip firewall nat print&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;/ip dns print&amp;lt;/code&amp;gt;, uji ping gateway&lt;br /&gt;
|-&lt;br /&gt;
| Satu kode dipakai banyak perangkat || &amp;lt;code&amp;gt;shared-users&amp;lt;/code&amp;gt; lebih dari 1 di profile || Set &amp;lt;code&amp;gt;shared-users=1&amp;lt;/code&amp;gt; di user profile&lt;br /&gt;
|-&lt;br /&gt;
| Kuota tidak berhenti walau habis || Batas byte dipasang di profile, padahal properti itu milik user || Pasang &amp;lt;code&amp;gt;limit-bytes-total&amp;lt;/code&amp;gt; di &amp;lt;code&amp;gt;/ip hotspot user&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Kode mati lalu hidup lagi setelah logout || Hanya memakai &amp;lt;code&amp;gt;session-timeout&amp;lt;/code&amp;gt; || Tambahkan &amp;lt;code&amp;gt;limit-uptime&amp;lt;/code&amp;gt; di user sebagai batas akumulasi&lt;br /&gt;
|-&lt;br /&gt;
| Voucher dobel || Script dijalankan dua kali tanpa cek duplikat || Pertahankan &amp;lt;code&amp;gt;print count-only where name=$nama&amp;lt;/code&amp;gt; sebelum &amp;lt;code&amp;gt;add&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| File voucher tidak muncul || Nama file bentrok atau folder penyimpanan penuh || Cek &amp;lt;code&amp;gt;/file print&amp;lt;/code&amp;gt;, hapus file lama, ulangi &amp;lt;code&amp;gt;print file=&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Semua sesi berhenti di jam yang sama || Jam router salah setelah listrik padam || Aktifkan NTP &amp;lt;code&amp;gt;/system ntp client&amp;lt;/code&amp;gt;, lalu cek &amp;lt;code&amp;gt;/system clock print&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| HP langsung login tanpa diminta kode || MAC cookie aktif dari login sebelumnya || Hapus di &amp;lt;code&amp;gt;/ip hotspot cookie print&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;/ip hotspot client print&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Halaman login error di HTTPS || &amp;lt;code&amp;gt;https-redirect=yes&amp;lt;/code&amp;gt; tapi sertifikat tidak cocok dengan &amp;lt;code&amp;gt;dns-name&amp;lt;/code&amp;gt; || Set &amp;lt;code&amp;gt;https-redirect=no&amp;lt;/code&amp;gt; atau pasang sertifikat yang sesuai&lt;br /&gt;
|-&lt;br /&gt;
| Hotspot tidak jalan sama sekali || &amp;lt;code&amp;gt;device-mode&amp;lt;/code&amp;gt; memblokir, atau ada tabel routing tambahan || Cek device-mode; hotspot hanya memakai tabel routing default sehingga PCC tidak cocok&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 🔐 Catatan keamanan &amp;amp; etika ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Voucher adalah kredensial.*** File &amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt; hasil cetak berisi semua password. Simpan di folder terkunci, jangan pernah ditaruh di folder publik atau dikirim ke grup chat.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Satu kode satu orang.*** &amp;lt;code&amp;gt;shared-users=1&amp;lt;/code&amp;gt; bukan sekadar rapi, tapi membatasi penyebaran kode dan memudahkan penelusuran saat ada penyalahgunaan.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hindari &amp;lt;code&amp;gt;http-pap&amp;lt;/code&amp;gt;.*** Mode itu mengirim password dalam teks biasa. Pakai &amp;lt;code&amp;gt;http-chap&amp;lt;/code&amp;gt; (default) atau &amp;lt;code&amp;gt;https&amp;lt;/code&amp;gt; dengan sertifikat yang valid.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hapus akun kedaluwarsa.*** Akun lama yang dibiarkan hidup adalah pintu masuk gratis. Jadwalkan pembersihan berdasarkan &amp;lt;code&amp;gt;comment&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pisahkan jaringan tamu.*** Hotspot tamu sebaiknya berada di VLAN atau bridge sendiri, dengan firewall yang melarang akses ke subnet guru dan server nilai.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Etika memantau.*** Menu &amp;lt;code&amp;gt;active&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;host&amp;lt;/code&amp;gt; boleh dipakai untuk operasional, bukan untuk mengintip isi trafik pribadi pengguna.&lt;br /&gt;
&lt;br /&gt;
== 📌 Kesimpulan ==&lt;br /&gt;
&amp;#039;&amp;#039;User profile&amp;#039;&amp;#039; menentukan apa yang didapat pengguna, voucher menentukan siapa yang berhak memakainya. Kalau keduanya dipisah dengan benar, satu router bisa melayani beberapa paket sekaligus tanpa saling mengganggu.&lt;br /&gt;
&lt;br /&gt;
Langkah berikutnya: kerjakan praktikum pendamping artikel ini untuk menguji batas paket dan kegagalan voucher satu per satu, lalu lanjut ke materi firewall RAW untuk melihat trafik sebelum connection tracking.&lt;br /&gt;
&lt;br /&gt;
== 🔗 Materi terkait ==&lt;br /&gt;
* [[Mikrotik : Hotspot Dasar]] — pondasi captive portal, DHCP, dan NAT yang dipakai artikel ini.&lt;br /&gt;
* [[Mikrotik : DHCP Server untuk LAN]] — pool alamat yang membagi IP ke client hotspot.&lt;br /&gt;
* [[Mikrotik : Firewall Filter Dasar]] — melindungi router dan memisahkan trafik tamu.&lt;br /&gt;
* [[Mikrotik : Queue Sederhana untuk Bandwidth Management]] — dasar pembatasan kecepatan sebelum memakai &amp;lt;code&amp;gt;rate-limit&amp;lt;/code&amp;gt; hotspot.&lt;br /&gt;
* [[Mikrotik : VLAN Dasar]] — memisahkan jaringan tamu dari jaringan internal.&lt;br /&gt;
* [[Mikrotik : Praktikum Membuat User dan Group di RouterOS]] — kebiasaan membuat akun dan group yang rapi.&lt;br /&gt;
* [[Mikrotik : Bandwidth Test dan Pengukuran Throughput]] — mengukur apakah &amp;lt;code&amp;gt;rate-limit&amp;lt;/code&amp;gt; benar-benar bekerja.&lt;br /&gt;
* [[Mikrotik : Scripting Dasar RouterOS]] — dasar &amp;lt;code&amp;gt;:while&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:if&amp;lt;/code&amp;gt;, dan &amp;lt;code&amp;gt;:rndnum&amp;lt;/code&amp;gt; yang dipakai script voucher.&lt;br /&gt;
&lt;br /&gt;
== 📚 Referensi ==&lt;br /&gt;
* MikroTik Documentation — HotSpot Captive portal: https://help.mikrotik.com/docs/spaces/ROS/pages/56459266/HotSpot+-+Captive+portal&lt;br /&gt;
* MikroTik Documentation — User Manager: https://help.mikrotik.com/docs/spaces/ROS/pages/2555940/User+Manager&lt;br /&gt;
* MikroTik CLI Reference — /ip/hotspot/user: https://manual.mikrotik.com/docs/cli-reference/ip/hotspot/user/&lt;br /&gt;
* MikroTik Documentation — Device-mode: https://help.mikrotik.com/docs/spaces/ROS/pages/93749258/Device-mode&lt;br /&gt;
* IETF RFC 7710 — Captive-Portal Identification Using DHCP or RA: https://www.rfc-editor.org/rfc/rfc7710&lt;br /&gt;
&lt;br /&gt;
[[Category:TKJ]]&lt;br /&gt;
[[Category:Jaringan]]&lt;br /&gt;
[[Category:Mikrotik]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>