[INDEX // #1] -- PUBLISHED:

بِسْــــــــــــــــــمِ-اﷲِالرَّحْمَنِ-اارَّحِيم | الحمدُ لله


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:

  1. Buka Notepad di Windows, lalu buat atau edit file di direktori home user Anda: C:\Users\NAMA_USER\.wslconfig
  2. Tambahkan baris konfigurasi berikut:
    [wsl2]
    networkingMode=mirrored
    dnsTunneling=true
  3. 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.

  1. Buka terminal WSL Ubuntu dan edit file konfigurasi /etc/wsl.conf:
    sudo nano /etc/wsl.conf
  2. Tambahkan konfigurasi boot systemd berikut:
    [boot]
    systemd=true
  3. 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 &amp; 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> &rarr; tempel alamat .onion di atas &rarr; tekan Enter. Selamat menjelajah! 🎉
    </p>

    <div class="footer">
        <p>&copy; 2026 Hello World Onion Service &middot; 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:

  1. Kunjungi halaman resmi pendistribusian: https://download.torproject.org/
  2. Unduh installer Tor Browser untuk Windows (TorBrowser-Install-x86_64-...exe).
  3. Instal aplikasi di komputer Windows Anda.
  4. 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.
[INDEX // #1] -- PUBLISHED:

بِسْــــــــــــــــــمِ-اﷲِالرَّحْمَنِ-اارَّحِيم | الحمدُ لله

vecteezy.com


Menyiapkan (setup) laptop atau PC Windows untuk kebutuhan harian, pengembangan aplikasi (software development), hingga pengujian keamanan (security research) sering kali membuat bingung jika tidak ada panduan yang terstruktur.

Artikel ini adalah panduan langkah demi langkah (step-by-step) terlengkap. Semua instruksi ditulis secara runtut mulai dari tahap sebelum instalasi Windows hingga sistem siap digunakan untuk bekerja secara aman, cepat, dan terorganisir.

📌 Daftar Isi Ringkas

Tahap 1: Persiapan Partisi Disk Saat Install Ulang Windows

A. Penjelasan Konsep

Sebelum menginstal Windows, disk penyimpanan perlu diset ke skema GPT (GUID Partition Table).

  • MBR (Master Boot Record): Teknologi lama, maksimal ukuran disk hanya 2 TB, dan hanya bisa membuat 4 partisi utama.
  • GPT (GUID Partition Table): Teknologi modern, mendukung disk di atas 2 TB, mendukung hingga 128 partisi, serta wajib digunakan agar fitur UEFI dan Secure Boot pada Windows 11 aktif.

B. Langkah Eksekusi (Diskpart)

  1. Buka Command Prompt saat di layar awal instalasi Windows:
    Di layar pilihan bahasa instalasi, tekan kombinasi tombol: Shift + F10
    (Atau tekan Shift + Fn + F10 pada beberapa jenis laptop).
  2. Masuk ke utilitas Diskpart:
    diskpart
  3. Cek daftar disk terpasang:
    list disk
    (Perhatikan nomor disk utama Anda, biasanya berlabel Disk 0).
  4. Skenario A: Clean Install Total (Konversi Disk ke GPT):
    Gunakan opsi ini jika ingin menghapus seluruh isi disk/SSD dan mengonversinya ke skema GPT:
    select disk 0
    rem clean
    convert gpt
    exit
    ⚠️ Peringatan Data Hilang: Perintah clean akan menghapus SELURUH data dan partisi di Disk 0 tanpa sisa.
  5. Skenario B: Memotong Drive C (Shrink) untuk Membuat Drive D:
    Jika Windows sudah terpasang dan Anda ingin membagi Drive C: untuk membuat Drive D: baru:
    list volume
    select volume C
    shrink desired=102400
    create partition primary
    format fs=ntfs quick
    assign letter=D
    exit
    (Penjelasan: Perintah shrink desired=102400 memotong sisa kapasitas sebesar 100 GB / 102.400 MB dari Drive C: lalu mengalokasikannya ke Drive D:).

Setelah selesai, tutup jendela Command Prompt lalu lanjutkan proses instalasi Windows via grafik seperti biasa.

Tahap 2: Pengaturan Akun Sistem & Profil Khusus

A. Penjelasan Konsep

Memisahkan akun kerja harian dengan akun untuk eksperimen pengujian keamanan (security research / malware testing) membantu mencegah dampak infeksi virus pada data pribadi Anda.

B. Langkah Eksekusi

  1. Buka Command Prompt sebagai Administrator:
    Klik Start -> ketik cmd -> klik kanan pada Command Prompt -> pilih Run as administrator.
  2. Aktifkan Akun Administrator Bawaan (Opsional):
    net user administrator /active:yes
  3. Buat Akun Khusus Pentesting / Security Research:
    :: 1. Buat user baru bernama 'Pentest'
    net user Pentest "P@ssw0rdAman123!" /add /comment:"Akun Khusus Security Research"
    
    :: 2. Masukkan ke dalam grup Administrators
    net localgroup Administrators Pentest /add
    
    :: 3. Atur agar kata sandi tidak pernah kedaluwarsa
    powershell -Command "Set-LocalUser -Name 'Pentest' -PasswordNeverExpires $true"

Tahap 3: Keamanan Penyimpanan Data dengan BitLocker

A. Penjelasan Konsep

BitLocker Drive Encryption adalah fitur pengunci/pengenkripsi penyimpanan bawaan Windows. Jika laptop hilang atau dicuri, orang lain tidak akan bisa mengambil file di dalam harddisk/SSD Anda tanpa Kunci Pemulihan (Recovery Key).

B. Langkah Eksekusi

  1. Buka File Explorer (Win + E) -> klik This PC.
  2. Klik kanan pada Drive yang ingin diamankan (misalnya Drive D: atau C:) -> pilih Turn on BitLocker.
  3. Pilih Use a password to unlock the drive, lalu masukkan kata sandi yang kuat.
  4. SANGAT PENTING: Simpan Recovery Key (Kunci Pemulihan) ke file eksternal atau akun Microsoft Anda.
  5. Pilih Encrypt used disk space only -> pilih mode New encryption mode (XTS-AES) -> klik Start Encrypting.

Tahap 4: Pemindahan Folder Profil & Navigasi Cepat

A. Penjelasan Konsep

Secara bawaan, folder profil seperti Documents, Downloads, dan Desktop berada di Drive C:. Memindahkannya ke Drive D: memastikan berkas penting tidak hilang jika sistem operasi mengalami kegagalan dan harus diinstal ulang.

B. Langkah Eksekusi

1. Pindahkan Folder Profil Utama ke Drive D:

  1. Buka File Explorer (Win + E) -> klik This PC.
  2. Klik kanan pada folder Documents -> pilih Properties -> buka tab Location.
  3. Klik tombol Move... -> arahkan ke lokasi baru di Drive D: (contoh: D:\DataPengguna\Documents).
  4. Klik Apply -> klik Yes saat ada konfirmasi. Ulangi langkah yang sama untuk folder Downloads, Desktop, dan Pictures.

2. Kombinasi Tombol Pintas Windows (Win Key):

Kombinasi Tombol Fungsi Navigasi Utama
Win + EMembuka File Explorer
Win + RMembuka dialog Run (eksekusi cepat perintah sistem)
Win + XMembuka Power User Menu (Akses Device Manager, Disk Management, dll)
Win + LMengunci layar komputer (Lock Screen) secara instan
Win + Shift + SMembuka alat screenshot (Snipping Tool)
Win + VMembuka riwayat papan klip (Clipboard History)
Win + TabMembuka Task View (Tampilan Desktop Virtual)
Win + Panah (← / →)Menempelkan (Snap) jendela ke sebelah kiri atau kanan layar

3. Membuat Custom Shortcut di Desktop:

  1. Klik kanan pada area kosong Desktop -> pilih New -> Shortcut.
  2. Masukkan lokasi/perintah target (contoh perintah cepat matikan PC):
    shutdown /s /t 0
  3. Beri nama shortcut (misal: "Matikan PC") -> klik Finish.
  4. Menambah Tombol Pintas: Klik kanan shortcut -> pilih Properties -> klik kolom Shortcut key -> tekan tombol kombinasi di keyboard (misal: Ctrl + Alt + K) -> Apply.

Tahap 5: Pembersihan Sampah, Debloat & Optimasi Performa Sistem

A. Penjelasan Konsep

  • Windows Debloat: Proses menghapus aplikasi bawaan, fitur pelacakan telemetri, dan layanan latar belakang yang tidak esensial untuk menghemat RAM dan CPU.
  • Skrip Otomatisasi (.bat vs .ps1): Berkas .bat (Batch File) digunakan untuk mengeksekusi perintah CMD dasar, sedangkan berkas .ps1 (PowerShell Script) berbasis .NET yang lebih canggih untuk memanipulasi objek dan aturan sistem.

B. Langkah Eksekusi

1. Kompresi & Ekstraksi Berkas (Zip / Unzip) via Terminal:

  • Command Prompt (tar.exe):
    :: Kompresi folder/file menjadi .zip
    tar -caf D:\HasilKompresi.zip "D:\DataPengguna\Documents"
    
    :: Ekstraksi (Unzip) file .zip ke folder tujuan
    tar -xf D:\HasilKompresi.zip -C D:\FolderHasilEkstrak
  • PowerShell:
    # Kompresi
    Compress-Archive -Path "D:\DataPengguna\Documents" -DestinationPath "D:\HasilKompresi.zip"
    
    # Ekstraksi
    Expand-Archive -LiteralPath "D:\HasilKompresi.zip" -DestinationPath "D:\FolderHasilEkstrak" -Force

2. Pembersihan Berkas Sampah Rutin (CMD Admin):

:: Hapus isi folder Temp
del /q /f /s "%TEMP%\*"
del /q /f /s "C:\Windows\Temp\*"

:: Hapus cache Prefetch
del /q /f /s "C:\Windows\Prefetch\*"

:: Jalankan Disk Cleanup otomatis
cleanmgr /sagerun:1

:: Optimasi Penyimpanan (TRIM untuk SSD / Defrag untuk HDD)
defrag C: /O
defrag D: /O

3. Optimasi Windows Defender untuk Folder Development (Exclusions):

Windows Defender memindai (*scan*) setiap file secara real-time. Untuk folder proyek dengan ribuan file kecil — seperti node_modules, cache pip/npm, image WSL, atau folder build — pemindaian ini bisa membuat proses npm install, pip install, atau compile menjadi sangat lambat. Tambahkan pengecualian (*exclusion*) khusus folder tepercaya lewat PowerShell (Admin):

Add-MpPreference -ExclusionPath "D:\DataPengguna\Projects"
Add-MpPreference -ExclusionPath "$env:LOCALAPPDATA\Docker"
Add-MpPreference -ExclusionPath "\\wsl$\Debian"
Add-MpPreference -ExclusionProcess "node.exe"
Add-MpPreference -ExclusionProcess "docker.exe"

:: Cek daftar exclusion yang sudah aktif
Get-MpPreference | Select-Object -ExpandProperty ExclusionPath
⚠️ Peringatan: Jangan menambahkan exclusion pada folder unduhan umum (Downloads) atau folder yang sering diisi berkas dari sumber tidak dikenal. File berbahaya di folder tersebut tidak akan terdeteksi sama sekali oleh Defender.

Tahap 6: Environment Variables (PATH), Package Manager & Windows Terminal

A. Penjelasan Konsep

  • PATH Variable: Variabel sistem yang memberi tahu Windows lokasi file eksekusi (.exe) agar program dapat dijalankan dari terminal/direktori mana saja.
  • Package Manager: Alat otomatisasi untuk menginstal, memperbarui, dan mengelola aplikasi atau pustaka (*library*) langsung melalui baris perintah.

B. Langkah Eksekusi

1. Menambah Folder ke PATH System:

  1. Tekan Win + R -> ketik sysdm.cpl -> tekan Enter.
  2. Buka tab Advanced -> klik tombol Environment Variables....
  3. Di bagian System variables, pilih Path -> klik Edit....
  4. Klik New -> masukkan lokasi folder executable Anda (contoh: D:\Tools\PortableApps) -> klik OK.

2. Penggunaan Package Manager & WinGet Self-Update:

Nama Manager Digunakan Untuk Contoh Penggunaan
WinGetWindows OS App Managerwinget install -e --id Git.Git
aptDebian/Ubuntu Linuxsudo apt install net-tools
CargoRust Packagescargo install ripgrep
pipPython Packagespip install requests
NPMNode.js Web Modulesnpm install -g typescript

Memperbarui Seluruh Aplikasi & WinGet via CMD Admin:

:: Update indeks repositori dan WinGet
winget update

:: Tampilkan daftar aplikasi terinstal yang memiliki versi baru
winget upgrade

:: Perbarui SELURUH aplikasi terinstal di komputer secara otomatis
winget upgrade --all --include-unknown

3. Pasang & Atur Windows Terminal:

winget install -e --id Microsoft.WindowsTerminal

Pengaturan Utama: Buka Windows Terminal -> tekan Ctrl + , (Settings) -> di menu Startup, ubah Default terminal application menjadi Windows Terminal.

4. Personalisasi Prompt Terminal (Oh My Posh & Nerd Font):

Oh My Posh adalah engine prompt kustom lintas-shell yang menampilkan info berguna secara visual di command line — seperti nama branch Git aktif, status folder, durasi eksekusi perintah, hingga level baterai. Agar ikon-ikonnya tampil dengan benar (bukan kotak kosong), font terminal wajib diganti ke jenis Nerd Font (font biasa yang sudah disisipi glyph tambahan).

:: Pasang Oh My Posh (CMD/PowerShell Admin)
winget install -e --id JanDeDobbeleer.OhMyPosh

:: Pasang salah satu Nerd Font, contoh Cascadia Code
oh-my-posh font install CascadiaCode
  1. Buka profil PowerShell untuk diedit:
    notepad $PROFILE
    (Jika file belum ada, PowerShell akan menawarkan untuk membuatnya otomatis).
  2. Tambahkan baris berikut di paling bawah file, lalu simpan:
    oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression
    (Ganti nama tema sesuai selera; daftar tema tersedia di folder $env:POSH_THEMES_PATH).
  3. Buka Windows Terminal -> Settings (Ctrl + ,) -> pilih profil PowerShell -> buka tab Appearance -> ubah Font face menjadi CaskaydiaCove Nerd Font (atau font Nerd Font lain yang dipasang).
  4. Tutup dan buka ulang Windows Terminal untuk melihat prompt baru.

Tahap 7: Pemeliharaan Sistem (Windows Update & System Restore)

A. Penjelasan Konsep

Fitur System Restore berfungsi mengambil dokumentasi keadaan sistem (*snapshot*). Jika terjadi masalah akibat kesalahan instalasi driver atau pembaruan software, Anda dapat mengembalikan kondisi Windows ke titik waktu yang aman tanpa kehilangan berkas pribadi.

B. Langkah Eksekusi

1. Mengelola Windows Update via PowerShell (Admin):

:: Pasang modul update Windows
Install-Module PSWindowsUpdate -Force

:: Periksa ketersediaan update
Get-WindowsUpdate

:: Unduh dan install seluruh update secara otomatis
Install-WindowsUpdate -AcceptAll -AutoReboot

2. Mengaktifkan & Membuat System Restore Point:

  1. Tekan Win + R -> ketik sysdm.cpl -> tekan Enter.
  2. Buka tab System Protection.
  3. Pilih Drive C: -> klik tombol Configure... -> pilih Turn on system protection -> atur penggunaan ruang disk (5-10%) -> klik OK.
  4. Membuat Restore Point Manual: Klik tombol Create... -> beri nama (misal: "Sebelum Install WSL") -> klik Create.

Tahap 8: Keamanan Windows, Manajemen Proses, & Analisis Jaringan

A. Penjelasan Konsep

  • Registry Editor (regedit): Basis data hierarkis terpusat yang menyimpan seluruh konfigurasi sistem operasi dan aplikasi. (Buka via Win + R -> regedit).
  • Services (services.msc): Panel pengelola program latar belakang (*background processes*) tanpa antarmuka visual. (Buka via Win + R -> services.msc).
  • Windows Defender & Firewall: Solusi keamanan bawaan untuk pemindaian file secara *real-time* dan penyaringan lalu lintas port jaringan.

B. Langkah Eksekusi

1. Mematikan Aplikasi Membeku via taskkill (CMD Admin):

  • Mematikan Berdasarkan Nama Proses (/IM):
    taskkill /F /IM chrome.exe
    taskkill /F /IM msedge.exe /T
  • Mematikan Berdasarkan Process ID (/PID):
    :: Lihat daftar proses berjalan
    tasklist
    
    :: Cari PID proses spesifik (contoh: python)
    tasklist | findstr "python"
    
    :: Hentikan proses secara paksa berdasarkan nomor PID
    taskkill /F /PID 4532

2. Aturan Firewall & Startup Apps:

:: Membuka blokir port jaringan tertentu (contoh Port 8080)
netsh advfirewall firewall add rule name="Allow_Port_8080" dir=in action=allow protocol=TCP localport=8080

Atur Startup Apps: Tekan Ctrl + Shift + Esc (Task Manager) -> buka tab Startup apps -> matikan (Disable) aplikasi yang tidak diperlukan saat booting.

3. Analisis Koneksi Jaringan & Tes Konektivitas:

:: Tampilkan seluruh koneksi aktif lengkap dengan IP, Port, dan PID
netstat -ano

:: Uji latensi dan konektivitas jaringan ke IP target
ping 8.8.8.8

:: Melacak rute perjalanan paket data jaringan (Hop Count)
tracert google.com

Tahap 9: Instalasi dan Konfigurasi WSL 2 (Debian Linux & USBIPD)

A. Penjelasan Konsep

WSL 2 (Windows Subsystem for Linux) memungkinkan Anda menjalankan sistem operasi Linux langsung di dalam Windows tanpa beban berat Virtual Machine. Dengan alat USBIPD, perangkat keras USB (seperti Flashdisk, Mikrokontroler, atau Wi-Fi Adapter) yang terpasang di laptop dapat dihubungkan langsung ke dalam lingkungan Linux WSL.

B. Langkah Eksekusi

1. Pasang WSL & Distro Debian Linux (CMD Admin):

:: Aktifkan komponen WSL
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

:: Update engine WSL dan install Debian
wsl.exe --update
wsl.exe --install -d Debian

Setelah masuk ke terminal Debian, perbarui paket dasarnya:

sudo apt update -y && sudo apt upgrade -y

2. Konfigurasi WSL Mode Mirrored & Systemd:

  • Atur Mode Jaringan di Windows Host: Tekan Win + R -> ketik notepad %UserProfile%\.wslconfig -> masukkan teks berikut lalu simpan:
    [wsl2]
    networkingMode = mirrored
  • Aktifkan Systemd di Debian WSL: Di terminal Debian, buka file konfigurasi:
    sudo nano /etc/wsl.conf
    Isi dengan:
    [boot]
    systemd = true
    [network]
    hostname = X
  • Restart WSL dari CMD Windows:
    wsl.exe --shutdown
    wsl.exe

3. Pasang Fitur Pencari Kode Cepat (tgrep / ripgrep):

  • Opsi A: Microsoft tgrep (Berbasis Index Trigram)
    sudo apt install dbus net-tools build-essential cargo git -y
    git clone https://github.com/microsoft/tgrep.git
    cd tgrep
    cargo install --path tgrep-cli --locked
    tgrep serve . &
    tgrep "kata_yang_dicari" .
  • Opsi B: ripgrep (Tanpa Background Server)
    sudo apt install ripgrep -y
    rg "kata_yang_dicari" .

4. Hubungkan Perangkat USB ke Linux WSL (USBIPD):

  1. Di Windows (CMD Admin): Pasang USBIPD dan atur aturan Firewall:
    winget install --interactive --exact dorssel.usbipd-win
    netsh advfirewall firewall add rule name="USBIPD" dir=in action=allow program="%ProgramFiles%\usbipd-win\usbipd.exe" protocol=TCP localport=3240 enable=yes
    netsh advfirewall firewall add rule name="USBIPD" dir=out action=allow program="%ProgramFiles%\usbipd-win\usbipd.exe" protocol=TCP localport=3240 enable=yes
    (Lakukan restart komputer setelahnya).
  2. Di Linux Debian WSL: Pasang pustaka pembaca USB:
    sudo apt install usbip hwdata usbutils -y
  3. Di Windows CMD: Cek daftar USB dan hubungkan ke WSL berdasarkan BUSID:
    :: Lihat daftar USB
    usbipd wsl list
    
    :: Hubungkan perangkat USB (contoh BUSID: 4-4)
    usbipd wsl attach --busid 4-4
  4. Cek ketersediaan perangkat di terminal Linux Debian dengan mengetik lsusb.

Tahap 10: Cadangkan (Backup) Seluruh Driver Komputer

A. Penjelasan Konsep

Mencadangkan (*backup*) seluruh driver komponen komputer (seperti driver Wi-Fi, VGA, Audio) ke Drive D: memudahkan proses pemulihan instan jika di kemudian hari Anda memasang ulang Windows tanpa perlu mengunduh driver satu per satu dari internet.

B. Langkah Eksekusi

1. Ekspor Seluruh Driver Terpasang ke Drive D:

  1. Buat folder baru bernama D:\Drivers.
  2. Buka Command Prompt (Admin), lalu jalankan perintah berikut:
    dism /online /export-driver /destination:D:\Drivers

2. Instalasi Manual Driver Berformat .cab:

Jika Anda memiliki berkas driver mentah dari situs resmi Microsoft Update Catalog berformat .cab:

dism /Online /Add-Package /PackagePath:"D:\Drivers\nama_file_driver.cab"

Tahap 11: Isolasi Aman untuk Eksperimen Berisiko (Windows Sandbox & Sysinternals Suite)

A. Penjelasan Konsep

Akun Pentest yang dibuat di Tahap 2 memisahkan data dan profil dari akun kerja harian, tapi akun tersebut tetap berjalan di atas kernel Windows yang sama. Artinya, jika sampel mencurigakan yang dijalankan berhasil melakukan eskalasi privilese atau merusak berkas sistem, seluruh instalasi Windows — bukan cuma akun Pentest — tetap bisa terdampak. Untuk benar-benar mengisolasi eksekusi berkas atau installer yang belum tepercaya, dibutuhkan lingkungan terpisah:

  • Windows Sandbox: Fitur bawaan Windows 10/11 Pro/Enterprise berupa lingkungan mini sekali pakai (*disposable*). Setiap ditutup, seluruh perubahan di dalamnya otomatis terhapus bersih — cocok untuk menguji cepat installer atau executable yang belum dikenal.
  • Virtual Machine (VirtualBox/VMware) + Snapshot: Cocok untuk analisis lebih dalam, karena mendukung jaringan offline dan kemampuan membekukan (*snapshot*) kondisi sebelum sampel dijalankan, lalu mengembalikannya kapan saja.

Sebagai pelengkap perintah tasklist dan netstat di Tahap 8, Sysinternals Suite — kumpulan utilitas resmi buatan Microsoft — memberi visibilitas jauh lebih dalam terhadap apa yang sedang dilakukan sebuah proses di sistem.

B. Langkah Eksekusi

1. Aktifkan Windows Sandbox:

Prasyarat: Windows 10/11 edisi Pro/Enterprise, dan virtualisasi CPU (Intel VT-x / AMD-V) sudah aktif di BIOS/UEFI.

:: Aktifkan via PowerShell (Admin), lalu restart komputer
Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -All -Online

(Alternatif GUI: buka Turn Windows features on or off -> centang Windows Sandbox -> OK -> restart). Setelah aktif, cari "Windows Sandbox" di Start Menu untuk membukanya.

⚠️ Tips Keamanan: Jangan pernah menyalin kredensial, token, atau data pribadi asli ke dalam Sandbox saat menguji berkas mencurigakan. Perlakukan Sandbox sebagai lingkungan yang bisa "tercemar" kapan saja.

2. Pasang Sysinternals Suite:

winget install sysinternals
Tool Fungsi Utama
Process ExplorerPengganti Task Manager dengan detail lebih dalam: relasi parent-child proses, DLL yang dimuat, hingga handle yang digunakan.
AutorunsMelihat & menonaktifkan SEMUA titik auto-start di Windows (jauh lebih lengkap dari tab Startup di Task Manager).
TCPViewVersi visual dan real-time dari netstat -ano, memudahkan memantau koneksi jaringan mencurigakan.
Process Monitor (ProcMon)Merekam setiap aktivitas file, registry, dan jaringan per proses secara detail — krusial untuk analisis perilaku sebuah program.

Prinsip lapisan keamanan (defense in depth): gunakan kombinasi akun Pentest terpisah (Tahap 2) DAN Sandbox/VM untuk eksekusi berkas yang belum tepercaya — jangan hanya mengandalkan salah satunya.

Tahap 12: Backup & Migrasi Daftar Aplikasi via WinGet Export/Import

A. Penjelasan Konsep

Tahap 10 mencadangkan driver, tapi menginstal ulang puluhan aplikasi satu per satu setelah install ulang Windows tetap memakan waktu. WinGet mendukung ekspor daftar aplikasi terpasang ke satu berkas JSON, lalu mengimpornya kembali dengan satu perintah — melengkapi backup driver menjadi paket "cadangan setup" yang utuh.

B. Langkah Eksekusi

1. Ekspor Seluruh Aplikasi Terpasang (CMD/PowerShell Admin):

:: Simpan daftar aplikasi ke Drive D agar aman dari install ulang
winget export -o D:\Backup\winget-apps.json

2. Impor Ulang di Komputer Baru / Setelah Install Ulang Windows:

winget import -i D:\Backup\winget-apps.json --accept-package-agreements --accept-source-agreements

(WinGet akan otomatis memasang seluruh aplikasi pada daftar tersebut sesuai urutan, tanpa perlu konfirmasi manual satu per satu).

💡 Tips: Simpan berkas winget-apps.json ini berdampingan dengan folder D:\Drivers dari Tahap 10, atau unggah salinannya ke penyimpanan cloud, sesuai prinsip pemisahan data di Tahap 4 — sehingga tetap aman meski Drive C: harus diinstal ulang total.

Penutup

Dengan menyelesaikan seluruh 12 tahap di atas, laptop atau PC Windows Anda kini siap digunakan untuk kebutuhan harian, pengembangan software, maupun riset keamanan secara lebih aman, rapi, dan optimal. Simpan artikel ini sebagai referensi setiap kali melakukan instalasi ulang Windows di masa depan, dan sesuaikan setiap langkah dengan kebutuhan spesifik Anda — tidak semua tahap wajib dilakukan sekaligus, pilih sesuai prioritas.

[INDEX // #1] -- PUBLISHED:

بِسْــــــــــــــــــمِ-اﷲِالرَّحْمَنِ-اارَّحِيم | الحمدُ لله
vecteezy.com

Menguasai lebih dari satu sistem operasi adalah keterampilan wajib bagi praktisi IT, developer, maupun system administrator. Namun, berpindah dari Windows ke Linux atau macOS sering kali membingungkan karena perbedaan istilah, direktori, dan perintah terminal.

Berikut adalah cheat sheet komprehensif yang memetakan konsep inti, arsitektur, serta perintah dasar dari Windows, Linux, dan macOS secara berdampingan.

1. Pemetaan Konsep Inti Sistem

Secara arsitektur dasar, Linux dan macOS sama-sama berbasis Unix/POSIX (macOS menggunakan kernel Darwin), sehingga perilaku antarmuka baris perintah (CLI) keduanya sangat mirip. Sebaliknya, Windows berdiri di atas arsitektur NT yang berbeda secara mendasar.

Konsep Utama Windows Linux macOS
Konfigurasi Terpusat regedit (Registry) /etc (Berkas teks) /Library
~/Library (Plists)
Layanan Sistem (Services) services.msc systemd
systemctl
launchd
launchctl
Manajer Paket Utama winget
Chocolatey
apt
dnf
pacman
Homebrew (brew)
MacPorts
Variabel Lingkungan set
setx
export
~/.bashrc
export
~/.zshrc
Manajer Berkas (GUI) File Explorer Nautilus
Dolphin
Thunar
Finder
Terminal Shell Default PowerShell
CMD
Bash
Zsh
Zsh
Manajer Proses Task Manager top
htop
ps
Activity Monitor
top
Manajer Perangkat Device Manager lsusb
lspci
ioreg
system_profiler
Firewall Windows Defender Firewall ufw
nftables
iptables
pf (Packet Filter)
Log Sistem Event Viewer journalctl
/var/log
Console app
log show
Manajemen Pengguna Computer Management useradd
/etc/sudoers
System Settings
dscl
Hak Akses Berkas ACLs POSIX
chmod
chown
POSIX
macOS ACLs
Bahasa Skrip Bawaan PowerShell
Batch
Bash
Python
Zsh
AppleScript
Python

2. Perbedaan Arsitektur & Sistem

A. Perbandingan Pengelolaan Konfigurasi

Platform Pendekatan Konfigurasi Alat Pengelolaan
Windows Database biner terpusat (Registry) regedit (GUI)
Get-ItemProperty / Set-ItemProperty (PowerShell)
Linux Berkas teks polos ("Everything is a file") Direktori /etc (nano / vim)
macOS Pendekatan hibrida (Property List) .plist
defaults (CLI Tool)

B. Perbandingan Layanan Sistem (Services)

Platform Sistem Pengelola Contoh Perintah / Alat
Windows Service Control Manager services.msc (GUI)
Get-Service / Start-Service (PowerShell)
Linux systemd sudo systemctl status nginx
sudo systemctl start nginx
macOS launchd launchctl list
launchctl bootout system/org.nginx.daemon

C. Perbandingan Sistem Berkas & Jalur (Paths)

Fitur Windows Linux macOS
Akar Direktori (Root) C:\ / /
Direktori Pengguna C:\Users\Nama /home/nama /Users/nama
Pemisah Jalur (Path) Backslash (\) Forward slash (/) Forward slash (/)
Ekstensi Eksekusi .exe
.bat
.ps1
Tanpa ekstensi
(Izin +x)
Tanpa ekstensi
Bundel .app
Peka Huruf (Case Sensitivity) Tidak (Case-Insensitive) Ya (Case-Sensitive) Tidak (Default APFS)

3. Cheat Sheet Perintah Cepat (CLI)

Berikut perbandingan perintah baris antarmuka sehari-hari yang paling sering digunakan:

Aksi Windows (PowerShell/CMD) Linux (Bash) macOS (Zsh)
Melihat Daftar Berkas dir
Get-ChildItem
ls -la ls -la
Pindah Direktori cd cd cd
Melihat Jalur Saat Ini pwd
Get-Location
pwd pwd
Akses Administrator sudo (Win 11+)
Run as Admin
sudo sudo
Instal Aplikasi winget install <nama> sudo apt install <nama> brew install <nama>
Mencari Teks dalam Berkas tgrep
Select-String
findstr
grep grep
Cek Koneksi Jaringan Test-NetConnection
ping
ping ping
Cek Port Aktif Get-NetTCPConnection
netstat
ss -tuln lsof -i
Cek Alamat IP ipconfig
Get-NetIPAddress
ip a ifconfig
Melihat Log Sistem Get-EventLog
Get-WinEvent
journalctl -xf log show
Menghentikan Proses Stop-Process -Name <nama> killall <nama> killall <nama>

Kesimpulan Ringkas: Windows kini makin memanjakan developer dengan hadirnya fitur native seperti sudo dan dukungan utilitas CLI modern seperti tgrep serta winget. Meski begitu, struktur dasar Registry dan penamaan jalur C:\ tetap membedakannya dari ekosistem Unix (Linux & macOS).

[INDEX // #1] -- PUBLISHED:

بِسْــــــــــــــــــمِ-اﷲِالرَّحْمَنِ-اارَّحِيم | الحمدُ لله


Bukan senyum mu yang kurindukan atau binar indah dari matamu, tetapi semua tentang kenangan hangatnya saat kita bersama.

Aku tak pernah bosan menatap wajahmu, nyaliku memang besar untuk mengatakan, aku suka kepadamu wahai cintaku, dan hanya sekedar mimpi untuk menemani senja mu. ya, itu aku

Bukan luapan amarah didalam jiwa atau tautan hati yang sedang gelisah, tetapi hanya kesungguhan rindu yang teramat dalam, sampai air mata ini bergenang dipelupuk mataku.

Aku menahan nafas sejenak ketika menelusuri ingatan tentangmu yang perlahan menghilang, semoga senjamu itu seindah doamu, inilah penutup sebuah puisi untuk gadis yang pernah singgah lalu pergi. ya, itu kamu