<!-- https://slash.tik.unej.ac.id/id/start · 2026-10-29 -->

# Dari nol hingga HTTPS.

> Kebutuhan sistem, mulai cepat dengan Slashfile, panel SPMPlus dengan Docker, dan port firewall yang dibutuhkan Slash.

Slash berjalan sendiri dengan Slashfile, atau bersama dengan panel SPMPlus. Kedua cara tersebut menggunakan proxy yang sama, dan Anda dapat berpindah dari satu cara ke cara lainnya nanti.

## Persyaratan sistem

|  |  |
| --- | --- |
| OS | Linux 64-bit, kernel 4.18 atau lebih baru (disarankan 5.10 atau lebih baru) |
| Arsitektur | `x86_64`, `aarch64` |
| x86_64 CPU | Baseline x86-64. AVX, AVX2, dan AVX-512 tidak diperlukan; AES-NI dideteksi saat runtime dan sangat disarankan |
| CPU aarch64 | ARMv8-A. Crypto Extensions disarankan (Raspberry Pi 5, Graviton, dan Ampere memilikinya) |
| libc | Tidak diperlukan: Slash adalah biner musl statis |
| Docker | Docker Engine 20.10 atau lebih baru dengan Compose v2 |
| Native | systemd 247 atau lebih baru: Debian 11/12, Ubuntu 22.04/24.04, RHEL/Rocky/Alma 9, Fedora 34+ |

### Ukuran VM

|  | Minimum | Direkomendasikan | Lalu lintas tinggi |
| --- | --- | --- | --- |
| vCPU | 1 | 2 | 4+ |
| RAM | 512 MB | 2 GB | 4 GB+ |
| Disk | 1 GB | SSD 10 GB | SSD 20 GB dengan log rotation |
| Kapasitas | Sekitar 1.000 pengguna secara bersamaan | Sekitar 10.000 pengguna secara bersamaan | Puluhan ribu permintaan per detik |

Idle: Slash sekitar 28 MB, panel sekitar 24 MB. Setiap koneksi terbuka sekitar 45–60 KB.

## Mulai cepat: Slash dengan Slashfile

Tidak ada panel. Tulis `Slashfile`, jalankan container, selesai. Kunci master dan token admin dibuat secara otomatis di direktori data.

```
email admin@example.com

example.com, www.example.com    proxy localhost:3000
blog.example.com                wordpress /var/www/blog
api.example.com                 laravel /var/www/api
docs.example.com                files /srv/docs
```

```sh
docker build -f docker/Dockerfile.proxy --target final -t slash .
docker run -d --name slash --network host --restart unless-stopped \
  -v "$PWD/Slashfile:/etc/slash/Slashfile:ro" \
  -v /var/www:/var/www:ro \
  -v slash-data:/data/proxy \
  slash
docker exec slash /slash reload     # after editing the Slashfile
```

Sebelum memuat ulang, periksa dan rapikan file:

```sh
slash check     # validate, with line numbers and suggestions for typos
slash fmt       # align the columns
```

PHP dengan php-fpm di container lain, yang path aplikasinya berbeda:

```
library.example.com    php /srv/library via library-php:9000
    fpm-root /var/www/html
```

## Mulai cepat: SPMPlus dengan Docker

Semua perintah dijalankan di server, di direktori `docker` repositori.

### 1. Clone

```sh
git clone https://kubeman.unej.ac.id/geohot/slash.git
cd slash/docker
```

### 2. Buat secret

`sudo` diperlukan untuk menyerahkan file ke UID 10001, user di dalam container. Backup `secrets/master.key`: tanpanya, private key dan token DNS yang tersimpan tidak bisa didekripsi.

```sh
sudo ./gen-secrets.sh      # secrets/master.key and secrets/admin.token
```

### 3. Jalankan

Kemudian baca token pengaturan satu kali dari log panel.

```sh
docker compose up -d --build
docker compose logs panel | grep -i "setup token" | tail -1
```

### 4. Buka panelnya

Panel hanya mendengarkan pada `127.0.0.1:8443`. Jangkau melalui SSH tunnel dari komputer Anda, masukkan token pengaturan dan buat akun admin.

```sh
ssh -L 8443:127.0.0.1:8443 user@server
# then open http://localhost:8443
```

### 5. Tambah host

**Hosts → Tambah host**: domain, upstream (misalnya `http://127.0.0.1:3000`), preset, SSL, pratinjau, lalu simpan dan terapkan. Sertifikat terbit dalam hitungan detik setelah DNS mengarah ke server.

Disarankan untuk HTTP/3, buffer UDP yang lebih besar:

```sh
printf 'net.core.rmem_max = 7500000\nnet.core.wmem_max = 7500000\n' | sudo tee /etc/sysctl.d/90-spmplus.conf
sudo sysctl --system
```

## Firewall

Buka tepat tiga port: `80/tcp`, `443/tcp`, dan `443/udp`. Tanpa `443/udp` browser kembali ke HTTP/2; tanpa `80/tcp` challenge HTTP-01 Let’s Encrypt gagal. Biarkan `9180` (metrik) dan `8443` (panel) tetap tertutup.

Ubuntu, Debian (ufw):

```sh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
```

Rocky, AlmaLinux, RHEL, Fedora (firewalld):

```sh
sudo firewall-cmd --permanent --add-service=http --add-service=https --add-port=443/udp
sudo firewall-cmd --reload
```

Di server cloud, izinkan juga tiga port yang sama di firewall penyedia.

## Dokumentasi

Referensi lengkap ada di repositori. Dokumennya ditulis dalam bahasa Indonesia.

- [Referensi Slashfile](https://kubeman.unej.ac.id/geohot/slash/-/blob/main/docs/slashfile.md): Situs, jalur, HTTPS, PHP, WAF, TCP/UDP dan perintah
- [Kubernetes Ingress controller](https://kubeman.unej.ac.id/geohot/slash/-/blob/main/docs/kubernetes.md): Instal, anotasi, TLS
- [AssaultCuirass WAF](https://kubeman.unej.ac.id/geohot/slash/-/blob/main/docs/waf.md): Cara kerja, akurasi, false positive
- [Instalasi native](https://kubeman.unej.ac.id/geohot/slash/-/blob/main/docs/install-native.md): systemd, tanpa Docker
- [Operasi](https://kubeman.unej.ac.id/geohot/slash/-/blob/main/docs/operations.md): Upgrade, backup, restore, monitoring
- [Benchmark](https://kubeman.unej.ac.id/geohot/slash/-/blob/main/docs/benchmarks.md): Metode dan cara menjalankannya kembali
