Panduan teknis enterprise-grade: mulai dari konfigurasi jaringan WSL mirror, otomatisasi setup Nginx & Tor, hingga instalasi Tor Browser resmi.
1. Arsitektur & Tinjauan Sistem
Dalam lanskap keamanan modern, meng-host layanan tersembunyi (*hidden service*) memerlukan isolasi yang ketat dan kepatuhan terhadap prinsip zero-trust networking. Dengan memanfaatkan Windows Subsystem for Linux (WSL 2), kita dapat menjalankan lingkungan Ubuntu native di atas sistem operasi Windows tanpa overhead virtual machine konvensional.
Arsitektur deployment ini menggunakan tiga komponen inti:
- Nginx Web Server: Dikonfigurasi secara ketat untuk mendengarkan lalu lintas lokal saja (127.0.0.1:80), menghilangkan risiko paparan IP publik (clearnet).
- Tor Daemon (v3): Bertindak sebagai lapisan enkripsi end-to-end onion routing yang meneruskan permintaan dari jaringan Tor ke Nginx lokal.
- Automated Shell Script (`setup.sh`): Memangkas waktu provisioning dan mengotomatisasi pembuatan file aset blog modern di direktori /var/www/html/onion.
2. Konfigurasi Jaringan WSL ke Mirror Mode (Opsional)
Sebelum memulai, terkadang WSL mengalami kendala koneksi DNS atau repository saat melakukan apt update. Untuk mengatasinya secara optimal di Windows 11 / Windows 10 terbaru, kita dapat mengaktifkan mode jaringan Mirrored pada konfigurasi global WSL.
Cara Mengaktifkan WSL Mirror Networking:
- Buka Notepad di Windows, lalu buat atau edit file di direktori home user Anda: C:\Users\NAMA_USER\.wslconfig
- Tambahkan baris konfigurasi berikut:
[wsl2] networkingMode=mirrored dnsTunneling=true
- Simpan file tersebut, lalu restart WSL dari PowerShell Windows:
wsl --shutdown
3. Mengaktifkan Systemd di WSL Ubuntu
Service manager systemd esensial untuk mengelola daemon Nginx dan Tor secara stabil.
- Buka terminal WSL Ubuntu dan edit file konfigurasi /etc/wsl.conf:
sudo nano /etc/wsl.conf
- Tambahkan konfigurasi boot systemd berikut:
[boot] systemd=true
- Lakukan wsl --shutdown sekali lagi dari PowerShell Windows, lalu buka kembali WSL.
4. Skrip Automasi Deployment (`setup.sh` v2 - Robust)
Versi 2.0 dari skrip otomatisasi ini telah di-hardening agar robust, idempotent, dan stable untuk operasional nyata dan dapat dijalankan ulang berkali-kali. Fitur penting yang ditambahkan:
- Retry otomatis `apt-get` (mengatasi dpkg lock & koneksi transient) dan opsi `Dpkg::Lock::Timeout`.
- Idempotent: penulisan file via heredoc + install (tanpa mutlak menghapus), konfigurasi torrc dicek sebelum ditambahkan (guard ! grep -qs ...).
- Auto-elevasi: aman dijalankan sebagai user biasa `./setup.sh` maupun `sudo ./setup.sh` tanpa mengubah skrip.
- Service fallback: mendeteksi systemd vs init (`service`), dan unit Tor tor@default vs tor.
- Wait loop hostname hingga 120 detik: memastikan domain .onion benar-benar ter-generate sebelum dicetak.
- Stabilisasi auto-start: membuat drop-in override dan symlink Wants agar nginx & Tor tetap hidup setelah `wsl --shutdown` / restart.
- Verifikasi akhir: nginx -t sebelum restart + cek HTTP 200 OK melalui loopback 127.0.0.1.
Buat file skrip di WSL:
nano setup.sh
Salin dan tempel kode lengkap skrip di bawah ini:
#!/bin/bash
# ==============================================================================
# Otomatisasi Tor Onion Blog (Tema Modern) di WSL (Ubuntu/Debian)
# Versi 2.0 - Robust / Idempotent / Stable (bisa dijalankan ulang berulang kali)
# ==============================================================================
set -euo pipefail
# --- Warna output --------------------------------------------------------------
C_RST=$'\033[0m'; C_CYN=$'\033[1;36m'; C_GRN=$'\033[1;32m'; C_YEL=$'\033[1;33m'; C_RED=$'\033[1;31m'
info() { echo "${C_CYN}[*]${C_RST} $*"; }
ok() { echo "${C_GRN}[+]${C_RST} $*"; }
warn() { echo "${C_YEL}[!]${C_RST} $*"; }
die() { echo "${C_RED}[-]${C_RST} $*" >&2; exit 1; }
# Sentinel untuk selalu membersihkan temp dir meski skrip gagal
TMPDIR_CLEANUP=$(mktemp -d)
trap 'rm -rf "$TMPDIR_CLEANUP"' EXIT
# --- Variabel utama -------------------------------------------------------------
WEB_ROOT="/var/www/html/onion"
SITE_FILE="/etc/nginx/sites-available/onion-site"
TORRC="/etc/tor/torrc"
HS_DIR="/var/lib/tor/hidden_service"
HS_HOSTNAME="$HS_DIR/hostname"
TOR_UNIT="tor"
INDEX_HTML="$TMPDIR_CLEANUP/index.html"
NGINX_CONF="$TMPDIR_CLEANUP/onion-site"
# Toleransi timeout (detik) untuk menunggu hostname .onion muncul
HS_TIMEOUT=${HS_TIMEOUT:-120}
# -------------------------------------------------------------------------------
# Fungsi bantu: jalankan dengan sudo (aman bila dijalankan sebagai root langsung)
# -------------------------------------------------------------------------------
run() {
if [ "$(id -u)" -eq 0 ]; then
"$@"
else
sudo "$@"
fi
}
# -------------------------------------------------------------------------------
# Fungsi bantu: apt-get dengan retry otomatis (mengatasi lock dpkg / transient)
# -------------------------------------------------------------------------------
apt_retry() {
local attempt=1 max=5
while true; do
if DEBIAN_FRONTEND=noninteractive run apt-get -o Dpkg::Lock::Timeout=300 "$@"; then
return 0
fi
if [ "$attempt" -ge "$max" ]; then
warn "apt-get $* masih gagal setelah $attempt percobaan."
return 1
fi
warn "apt-get $* gagal (percobaan $attempt/$max). Menunggu 5 detik..."
attempt=$((attempt + 1))
sleep 5
done
}
# -------------------------------------------------------------------------------
# Fungsi bantu: restart service (support systemd dan non-systemd / init service)
# -------------------------------------------------------------------------------
restart_service() {
local unit="$1"
if [ -d /run/systemd/system ]; then
run systemctl enable "$unit" >/dev/null 2>&1 || true
run systemctl restart "$unit"
else
run service "$unit" restart
fi
}
# -------------------------------------------------------------------------------
# Fungsi bantu: menunggu sampai hostname .onion ter-generate
# -------------------------------------------------------------------------------
wait_for_hostname() {
local elapsed=0 step=5
while [ "$elapsed" -lt "$HS_TIMEOUT" ]; do
if run test -s "$HS_HOSTNAME"; then
return 0
fi
sleep "$step"
elapsed=$((elapsed + step))
done
return 1
}
# -------------------------------------------------------------------------------
# STEP 0: Cek prasyarat dasar
# -------------------------------------------------------------------------------
info "0/9 Cek lingkungan..."
command -v apt-get >/dev/null 2>&1 || die "apt-get tidak ditemukan; skrip ini untuk WSL (Ubuntu/Debian)."
if [ -d /run/systemd/system ]; then
info " systemd terdeteksi -> memakai systemctl."
else
warn " systemd tidak aktif; memakai init 'service' command (stabilitas lebih rendah)."
fi
# -------------------------------------------------------------------------------
# STEP 1: Update repositori
# -------------------------------------------------------------------------------
info "1/9 Memperbarui daftar paket sistem..."
apt_retry update -qq || warn "apt update bermasalah; tetap melanjutkan (package mungkin sudah ada)."
# -------------------------------------------------------------------------------
# STEP 2: Instal Nginx dan Tor
# -------------------------------------------------------------------------------
info "2/9 Menginstal web server Nginx, Tor Daemon, dan curl (untuk verifikasi)..."
apt_retry install -y -qq tor nginx curl \
|| apt_retry install -y -qq tor nginx curl
# Deteksi unit Tor yang tersedia (Debian modern memakai tor@default)
if [ -d /run/systemd/system ]; then
if run systemctl list-unit-files 'tor@default.service' >/dev/null 2>&1; then
TOR_UNIT="tor@default"
else
TOR_UNIT="tor"
fi
fi
ok "Unit Tor terdeteksi: $TOR_UNIT"
# -------------------------------------------------------------------------------
# STEP 3: Siapkan direktori web
# -------------------------------------------------------------------------------
info "3/9 Menyiapkan direktori web di $WEB_ROOT..."
run mkdir -p "$WEB_ROOT"
# -------------------------------------------------------------------------------
# STEP 4: Tulis index.html (Hello World & Info Jaringan Tor/Onion) ke direktori web
# -------------------------------------------------------------------------------
info "4/9 Menulis index.html (sumber index-tor.html bila ada; fallback: halaman Info)..."
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
INDEX_SRC="$SCRIPT_DIR/index-tor.html"
if [ ! -f "$INDEX_SRC" ]; then
cat > "$INDEX_HTML" <<'EOF'
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello World - Tor Onion Service v3</title>
<style>
:root {
--bg: #0f172a; --card: #1e293b; --border: #334155;
--txt: #f1f5f9; --muted: #94a3b8; --accent: #38bdf8;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background: var(--bg); color: var(--txt); line-height: 1.7; padding: 24px;
}
.wrap { max-width: 860px; margin: 0 auto; }
header { text-align: center; padding: 30px 0; border-bottom: 1px solid var(--border); margin-bottom: 30px; }
h1 { font-size: 2rem; } .hello { font-size: 3.2rem; }
.sub { color: var(--muted); margin-top: 6px; }
.onion-box {
background: #065f46; color: #a7f3d0; border: 1px solid #10b981;
border-radius: 8px; padding: 14px 18px; margin: 20px 0;
text-align: center; font-family: monospace; font-size: 1.05rem; word-break: break-all;
}
.cards { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 24px 0; }
@media (max-width: 640px) { .cards { grid-template-columns: 1fr; } }
.card { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 18px; }
.card h3 { color: var(--accent); margin-bottom: 8px; font-size: 1.05rem; }
.card p, .card ul { color: var(--muted); font-size: .95rem; }
.card ul { margin: 6px 0 0 18px; }
code { background: #0b1120; padding: 2px 6px; border-radius: 4px; color: #7dd3fc; }
.footer { margin-top: 30px; padding-top: 16px; border-top: 1px solid var(--border); color: var(--muted); text-align: center; font-size: .85rem; }
</style>
</head>
<body>
<div class="wrap">
<header>
<div class="hello">🧅 Hello World</div>
<h1>Tor Onion Service v3</h1>
<p class="sub">Halaman ini dilayani dari WSL + Nginx dan hanya dapat diakses melalui jaringan Tor.</p>
</header>
<div class="onion-box">
Alamat .onion Anda:<br>
<strong>__ONION_ADDRESS__</strong>
</div>
<p style="color: #64748b;">
Situs ini berhasil di-deploy dan dipublikasikan sebagai <strong>hidden service v3</strong>.
Berikut informasi singkat mengenai jaringan yang mendukungnya:
</p>
<div class="cards">
<div class="card">
<h3>🌐 Jaringan Tor</h3>
<p>Tor (The Onion Router) adalah jaringan anonimitas berbasis <em>onion routing</em>. Lalu lintas dibungkus dalam beberapa lapisan enkripsi dan diteruskan melalui 3 relay (Guard → Middle → Exit), sehingga asal dan tujuan tidak terhubung langsung.</p>
</div>
<div class="card">
<h3>🧅 Alamat .onion / Hidden Service</h3>
<ul>
<li>Alamat v3 sepanjang 56 karakter berakhiran .onion.</li>
<li>Enkripsi end-to-end langsung ke server - <em>tanpa exit node</em>.</li>
<li>Identitas dijamin oleh private_key (Ed25519).</li>
<li>Server tetap anonim - tidak memerlukan IP publik / port terbuka.</li>
</ul>
</div>
<div class="card">
<h3>🛠️ Stack</h3>
<ul>
<li>Web Server: Nginx (bind 127.0.0.1:80).</li>
<li>Daemon Tor: tor@default (v0.4.9+).</li>
<li>OS: Debian / Ubuntu di WSL 2 + systemd.</li>
<li>Deploy: setup.sh (otomatis, idempotent, stable).</li>
</ul>
</div>
<div class="card">
<h3>🔐 Keamanan</h3>
<ul>
<li>Nginx hanya mendengarkan di loopback - tidak ada paparan clearnet.</li>
<li>Tanpa aset eksternal / CDN (mencegah fingerprinting & IP leak).</li>
<li>Kunci privat hidden service wajib di-backup agar domain tidak berubah.</li>
</ul>
</div>
</div>
<p style="color: #64748b;">
Cara mengakses: buka <strong>Tor Browser</strong> → tempel alamat .onion di atas → tekan Enter. Selamat menjelajah! 🎉
</p>
<div class="footer">
<p>© 2026 Hello World Onion Service · Didukung oleh Tor + Nginx di WSL</p>
</div>
</div>
</body>
</html>
EOF
else
run install -m 0644 "$INDEX_SRC" "$INDEX_HTML"
fi
run install -m 0644 "$INDEX_HTML" "$WEB_ROOT/index.html"
ok "index.html ditulis ke $WEB_ROOT/index.html"
# -------------------------------------------------------------------------------
# STEP 5: Atur hak akses untuk Nginx
# -------------------------------------------------------------------------------
info "5/9 Mengatur kepemilikan dan izin file untuk Nginx..."
run chown -R www-data:www-data "$WEB_ROOT"
run chmod -R 0755 "$WEB_ROOT"
# -------------------------------------------------------------------------------
# STEP 6: Konfigurasi Nginx (bind lokal 127.0.0.1:80) - idempotent via install
# -------------------------------------------------------------------------------
info "6/9 Menulis konfigurasi Nginx (onion-site)..."
cat > "$NGINX_CONF" <<'EOF'
server {
listen 127.0.0.1:80;
server_name localhost;
root /var/www/html/onion;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
EOF
run install -m 0644 "$NGINX_CONF" "$SITE_FILE"
run ln -sf "$SITE_FILE" /etc/nginx/sites-enabled/onion-site
run rm -f /etc/nginx/sites-enabled/default
if run nginx -t; then
ok "Konfigurasi Nginx valid."
else
die "Konfigurasi Nginx tidak valid. Cek: nginx -t"
fi
restart_service nginx
ok "Nginx restart OK."
# -------------------------------------------------------------------------------
# STEP 7: Konfigurasi Tor Hidden Service v3 (idempotent)
# -------------------------------------------------------------------------------
info "7/9 Menyiapkan konfigurasi Tor Hidden Service v3..."
if run grep -qsE "^[[:space:]]*HiddenServiceDir[[:space:]]+${HS_DIR%/}/" "$TORRC"; then
ok "HiddenServiceDir sudah ada di $TORRC; dilewati."
else
cat >> "$TMPDIR_CLEANUP/torrc.append" <<EOF
# Konfigurasi Tor Hidden Service v3 (ditambahkan otomatis oleh setup.sh)
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
EOF
run bash -c "cat '$TMPDIR_CLEANUP/torrc.append' >> '$TORRC'"
ok "Konfigurasi HiddenService ditambahkan ke $TORRC."
fi
# Pastikan direktori hidden service dimiliki oleh user Tor (untuk keamanan & start cepat)
if run test -d "$HS_DIR"; then
run chown -R debian-tor:debian-tor "$HS_DIR" 2>/dev/null || true
fi
# -------------------------------------------------------------------------------
# STEP 8: Restart layanan & tunggu hostname v3
# -------------------------------------------------------------------------------
info "8/9 Restart layanan Nginx dan Tor, lalu menunggu hostname .onion..."
restart_service nginx
restart_service "$TOR_UNIT"
if wait_for_hostname; then
HS="$(run cat "$HS_HOSTNAME" | tr -d '[:space:]')"
ok "Hidden Service aktif!"
echo "=============================================================================="
echo " Alamat Domain .onion (v3) Anda:"
echo
echo " $HS"
echo
echo "=============================================================================="
# Injeksi alamat .onion ke dalam index.html (menggantikan placeholder)
if command -v sed >/dev/null 2>&1 && [ -n "$HS" ] && [[ "$HS" == *.onion ]]; then
run sed -i "s|__ONION_ADDRESS__|$HS|g" "$WEB_ROOT/index.html"
ok "Alamat .onion aktif disuntikkan ke $WEB_ROOT/index.html."
fi
# Cache Nginx di-reload agar versi HTML terbaru langsung dilayani
restart_service nginx
else
warn "Hostname .onion belum muncul dalam ${HS_TIMEOUT}s."
warn "Periksa status: systemctl status $TOR_UNIT (atau: sudo journalctl -u $TOR_UNIT -n 50)"
run cat "$HS_HOSTNAME" 2>/dev/null || true
fi
# -------------------------------------------------------------------------------
# STEP 9: Stabilisasi boot - pastikan layanan auto-start saat WSL direstart
# (mengatasi masalah tor@default mati setelah wsl --shutdown)
# -------------------------------------------------------------------------------
if [ -d /run/systemd/system ]; then
info "9/9 Stabilisasi auto-start systemd (berlaku untuk WSL restart)..."
DROPIN_DIR="/etc/systemd/system/tor@default.service.d"
run mkdir -p "$DROPIN_DIR"
cat > "$TMPDIR_CLEANUP/override.conf" <<'EOF'
[Service]
TimeoutStartSec=300
[Unit]
StopWhenUnneeded=false
EOF
if ! run test -f "$DROPIN_DIR/override.conf"; then
run install -m 0644 "$TMPDIR_CLEANUP/override.conf" "$DROPIN_DIR/override.conf"
ok "Drop-in override.conf untuk $TOR_UNIT dibuat."
fi
# Persisten-enable: unit template tidak bisa `systemctl enable`,
# jadi buat symlink WantedBy ke template agar auto-start di boot.
TOR_TEMPLATE="/usr/lib/systemd/system/tor@.service"
WANTS_DIR="/etc/systemd/system/multi-user.target.wants"
run mkdir -p "$WANTS_DIR"
if run test -f "$TOR_TEMPLATE" && ! run test -e "$WANTS_DIR/tor@default.service"; then
run ln -s "$TOR_TEMPLATE" "$WANTS_DIR/tor@default.service"
ok "Symlink boot tor@default.service dibuat ($(printf '%s' "$WANTS_DIR/tor@default.service"))."
fi
run systemctl enable tor.service >/dev/null 2>&1 || true
run systemctl enable nginx >/dev/null 2>&1 || true
run systemctl daemon-reload
ok "Layanan akan auto-start ketika WSL dibuka kembali: nginx, tor (instans default)."
else
info "9/9 (dilewati - systemd tidak aktif, gunakan 'service' / init script)."
fi
# -------------------------------------------------------------------------------
# Verifikasi akhir: pastikan Nginx merespons 200 OK via loopback saja
# -------------------------------------------------------------------------------
HTTP_CODE="$(curl -s -o /dev/null -w '%{http_code}' --max-time 5 http://127.0.0.1/ || true)"
if [ "$HTTP_CODE" = "200" ]; then
ok "Verifikasi HTTP: nginx melayani http://127.0.0.1/ -> 200 OK"
else
warn "Verifikasi HTTP: http://127.0.0.1/ mengembalikan HTTP $HTTP_CODE (bukan 200)."
fi
echo "=============================================================================="
echo " SETUP BERHASIL "
echo "=============================================================================="
5.1 Verifikasi Stabilitas (WSL Restart)
Skrip v2 juga memastikan layanan tidak mati setelah WSL ditutup. Verifikasi dilakukan dengan wsl --shutdown dari PowerShell Windows, lalu membuka kembali WSL:
$ wsl --shutdown $ wsl -d Debian # Setelah ±20 detik: check 1: tor=activating nginx=active curl=200 check 2: tor=active nginx=active curl=200
Kunci stabilitasnya berada pada langkah "Stabilisasi auto-start" di akhir skrip: unit template tor@default tidak bisa di-enable secara langsung, sehingga skrip membuat symlink multi-user.target.wants/tor@default.service ke template unit dan menyediakan drop-in override (TimeoutStartSec=300, StopWhenUnneeded=false) untuk boot WSL yang lambat.
Apabila ingin mengecek kapan saja setelah reboot:
systemctl is-active nginx # active systemctl is-active tor@default # active sudo cat /var/lib/tor/hidden_service/hostname
5.2 Verifikasi Akses (Tor Browser & Tor Terminal)
Setelah layanan stabil, verifikasi akses nyata dilakukan dari dua sisi: browser resmi Tor Browser (Windows) dan terminal yang memakai SOCKS proxy lokal 127.0.0.1:9050:
$ curl -sS --max-time 60 --socks5-hostname 127.0.0.1:9050 \
http://4tgm5y5shjfyaollmudnpmuccrgytsj4tfnyvehdhwrq7nuuak5je4yd.onion/ \
-o /dev/null -w 'HTTP=%{http_code} time=%{time_total}s\n'
HTTP=200 time=4.341355s
Tor Browser: buka, tunggu status koneksi 100% (indikator bawaan), lalu tempel alamat .onion — halaman tampil normal. Kesimpulan: endpoint hidden service, sirkuit routing, dan render halaman semuanya bekerja.
Satu fenomena yang patut diketahui: sesaat setelah WSL di-boot (mis. setelah wsl --shutdown), koneksi bisa menolak dengan pesan berikut selama ±1-3 menit:
$ curl -sS --socks5-hostname 127.0.0.1:9050 http://<onion>.onion/ curl: (97) cannot complete SOCKS5 connection to <onion>.onion. (6)
Ini bukan kerusakan layanan. Hidden service baru memublikasikan ulang deskriptornya ke jaringan Tor 1-3 menit setelah restart (jejak di log unit Tor: Tried for 120 seconds ... (waiting for rendezvous desc)). Solusinya cukup menunggu. Agar tidak "buta", gunakan loop tunggu-siap berikut:
until curl -s -o /dev/null --max-time 30 --socks5-hostname 127.0.0.1:9050 \ "http://$(sudo cat /var/lib/tor/hidden_service/hostname)/"; do sleep 10; done \ && echo "Onion OK"
Catatan diagnostik: direktori /var/lib/tor ber-mode 2700 (pemilik debian-tor:debian-tor), sehingga ls/cat sebagai user biasa menampilkan Permission denied atau terkesan "kosong". Selalu gunakan sudo untuk memeriksa isi direktori & kunci:
$ sudo ls -la /var/lib/tor/hidden_service/ total 24 drwx--S--- 3 debian-tor debian-tor ... . drwx--S--- 4 debian-tor debian-tor ... .. -rw------- 1 debian-tor debian-tor ... hostname -rw------- 1 debian-tor debian-tor ... hs_ed25519_public_key -rw------- 1 debian-tor debian-tor ... hs_ed25519_secret_key
6. Cara Install Tor Browser dari Situs Resmi
Untuk mengakses website .onion yang telah Anda buat, gunakan browser resmi yang mendukung Tor network:
- Kunjungi halaman resmi pendistribusian: https://download.torproject.org/
- Unduh installer Tor Browser untuk Windows (TorBrowser-Install-x86_64-...exe).
- Instal aplikasi di komputer Windows Anda.
- Buka Tor Browser, masukkan domain .onion Anda, dan website Anda siap diakses secara anonim!
7. Hardening & Manajemen Kunci Kriptografi
Dalam operasional jaringan Tor, keamanan domain bergantung pada kerahasiaan kunci privat. Perhatikan poin-poin mitigasi risiko berikut:
- Private Key Backup: Kunci domain v3 Anda tersimpan di /var/lib/tor/hidden_service/hs_ed25519_secret_key (dengan padanan hs_ed25519_public_key dan hostname). Backup ketiga file ini jika Anda ingin memigrasikan node tanpa kehilangan alamat domain.
- Network Isolation: Direktif listen 127.0.0.1:80; pada Nginx menjamin bahwa tidak ada port terbuka yang dapat diakses dari internet publik tanpa melalui sirkuit enkripsi Tor.
- No External Assets: Hindari pemuatan skrip eksternal atau CDN pihak ketiga untuk mencegah potensi de-anonymization atau fingerprinting pada klien.