Episode ini membahas cara menyebarkan server PPTP secara otomatis: script shell untuk setup sekali jalan, pembuatan user secara massal, role Ansible untuk konfigurasi berulang, dan pertimbangan menjalankan PPTP di dalam container Docker beserta keterbatasannya.

Mengkonfigurasi satu server PPTP secara manual itu mudah. Menyebarkannya ke lima puluh server sekaligus adalah cerita lain. Episode 12 membahas cara mengotomatiskan setup, membuat user secara massal, dan men-deploy konfigurasi secara konsisten.
Automation adalah keterampilan yang membuat pekerjaan kalian berulang kali lebih cepat. Meskipun kita sedang membahas teknologi legacy, prinsip-prinsip di episode ini tetap berlaku untuk layanan apa pun.
Script shell paling sederhana mengotomatiskan langkah-langkah yang kita lakukan manual di episode 3:
#!/usr/bin/env bash
set -euo pipefail
apt-get update
apt-get install -y pptpd ppp
sysctl -w net.ipv4.ip_forward=1
sed -i 's/#localip 192.168.0.1/localip 192.168.1.10/' /etc/pptpd.conf
sed -i 's/#remoteip 192.168.0.234-238/remoteip 192.168.1.100-110/' /etc/pptpd.conf
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
systemctl enable pptpd
systemctl restart pptpdScript di atas memakai set -euo pipefail agar berhenti saat ada kesalahan. Perhatikan bahwa perintah sed memodifikasi file konfigurasi yang sudah ada di paket — pendekatan yang umum, tapi pastikan format file paket tidak berubah antar versi.
Saat ada puluhan user baru sekaligus, jangan edit chap-secrets satu per satu. Gunakan loop:
for user in ali budi citra dewi; do
echo "$user pptpd \"P@ssw0rd-$user\" *" >> /etc/ppp/chap-secrets
doneLoop di atas menambahkan empat user dengan password yang berbeda-beda. Untuk environment nyata, jangan simpan password statis di script — ambil dari source yang aman atau generate secara acak.
Jalankan script sekali saja, atau tambahkan pengecekan agar user yang sudah ada tidak ditulis ulang:
for user in ali budi citra dewi; do
if ! grep -q "^$user " /etc/ppp/chap-secrets; then
echo "$user pptpd \"P@ssw0rd-$user\" *" >> /etc/ppp/chap-secrets
fi
donePola grep -q "^$user " /etc/ppp/chap-secrets memastikan script idempoten: menjalankan ulang tidak akan membuat duplikat.
Untuk infrastruktur besar, Ansible adalah pilihan yang lebih terstruktur daripada script shell. Sebuah role PPTP berisi template file konfigurasi dan task instalasi:
- name: Install paket PPTP
ansible.builtin.apt:
name: [pptpd, ppp]
state: present
- name: Tulis konfigurasi pptpd.conf
ansible.builtin.template:
src: pptpd.conf.j2
dest: /etc/pptpd.conf
notify: Restart pptpd
- name: Aktifkan IP forwarding
ansible.builtin.sysctl:
name: net.ipv4.ip_forward
value: "1"
sysctl_file: /etc/sysctl.d/99-pptp.confPlaybook Ansible bersifat idempoten dan terdokumentasi, sehingga kondisi server bisa selalu kembali ke state yang diharapkan. Ini jauh lebih mudah dipelihara daripada kumpulan script.
Menjalankan pptpd di dalam container menarik secara estetika, tapi ada catatan teknis yang penting. GRE adalah protokol IP (bukan TCP/UDP), sehingga container harus memakai network host — port publishing biasa tidak bisa meneruskan GRE.
docker run -d --name pptp --network host \
--privileged \
-v /etc/pptpd.conf:/etc/pptpd.conf:ro \
-v /etc/ppp/chap-secrets:/etc/ppp/chap-secrets:ro \
ghcr.io/example/pptp-serverOpsi --network host diperlukan karena GRE membutuhkan akses langsung ke stack IP host, dan --privileged biasanya dibutuhkan karena container perlu mengelola modul kernel dan interface. Keduanya membuat isolasi container menjadi longgar.
Kombinasi PPTP plus Docker menambah kompleksitas tanpa menambah keamanan — justru sebaliknya. Untuk workload legacy, menjalankan pptpd langsung di VM atau host lebih sederhana dan lebih mudah di-troubleshoot.
Episode 12 membekali kalian pola-pola automation: script shell setup, pembuatan user massal yang idempoten, role Ansible, dan wacana container dengan seluruh keterbatasannya.
Inti yang harus dibawa pulang:
set -euo pipefail agar aman dijalankan berulang.--network host karena GRE bukan TCP/UDP.Di episode 13 selanjutnya kita akan membahas analisis keamanan dan kerentanan PPTP — brute-force MS-CHAPv2 tahun 2012, kelemahan RC4 di MPPE, GRE tanpa enkripsi, risk assessment, dan daftar CVE serta advisory yang relevan.