Dokumentasi

Mulai cepat + penjelasan fitur tiap bagian dan tiap perangkat (terus diperbarui)

Pemasangan & penghapusan

Artikel ini menjelaskan secara rinci cara memasang, meningkatkan, dan menghapus panel SSH Everywhere, dengan penekanan pada "bagaimana menghapus jika direktori instalasi diubah" serta detail format dalam perintah (spasi, tanda kutip).

1. Pemasangan (satu baris perintah)

Jalankan di server Linux yang punya IP publik:

curl -fsSL https://ssheverywhere.com/install.sh | bash

Skrip akan otomatis: mendeteksi sistem → memasang dependensi (Python3 / venv / pip / git / curl) → mengunduh kode → membuat virtual environment → memasang dependensi Python → mendaftarkan dan menjalankan layanan systemd.

Mendukung Debian / Ubuntu / CentOS / Rocky / AlmaLinux / Fedora / WSL (otomatis beralih ke mode latar belakang jika tidak ada systemd).

Parameter Instalasi

ParameterKeteranganContoh
--lang <kode>Bahasa pesan + bahasa bawaan panel (secara bawaan dideteksi otomatis dari locale sistem; nomor 1-16 juga diterima)--lang ja
--dir <direktori>Direktori instalasi (bawaan /opt/ssh-everywhere; bila tidak bisa ditulis, otomatis mundur ke ~/ssh-everywhere dan dijelaskan di output)--dir /opt/my-panel
--port <port>Port panel (bawaan 5501)--port 8080
--asciiMemaksa keluaran simbol ASCII murni ([ok] / [..] / [!] / [x]), tidak akan berantakan di terminal mana pun--ascii
--unicodeMemaksa keluaran simbol Unicode (✓ ⟳ ⚠️ ❌); di lingkungan UTF-8 ini sudah menjadi bawaannya--unicode
--yes / -yKonfirmasi otomatis saat upgrade, tanpa interaksi--yes

Kode bahasa yang didukung (16 bahasa)

KodeBahasaKodeBahasaKodeBahasaKodeBahasa
zh中文enEnglishja日本語ko한국어
esEspañolfrFrançaisdeDeutschruРусский
ptPortuguêsitItalianoarالعربيةtrTürkçe
viTiếng ViệtthไทยidBahasa Indonesiahiहिन्दी

Bila --lang tidak diberikan, bahasa dideteksi otomatis dari locale sistem (misalnya LANG=ja_JP.UTF-8 → pesan bahasa Jepang). Bila locale server atau terminal bukan UTF-8 (image ringkas dari penyedia cloud besar sering memakai LANG=C), skrip otomatis beralih ke simbol ASCII murni [ok], dan bila bahasa tidak ditentukan secara eksplisit teks pesannya juga mundur ke bahasa Inggris, dengan penjelasan alasannya di awal — semua ini untuk mencegah teks berantakan. Untuk memaksa bahasa Anda, gunakan: --lang xx --unicode.

Saat meneruskan parameter lewat pipe, tambahkan bash -s --:

# Pesan bahasa Jepang + panel bahasa Jepang
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ja

# Pesan bahasa Rusia + direktori dan port khusus
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ru --dir /opt/my-panel --port 8080

# Terminal lama / terminal GBK yang takut berantakan: keluaran ASCII murni (pesan bahasa Mandarin + simbol [ok])
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang zh --ascii

# Bahasa Arab (antarmuka RTL)
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ar

Anda juga bisa mengunduhnya dulu lalu menjalankannya (interaktif — akan menanyakan bahasa, direktori, dan konfirmasi upgrade satu per satu):

curl -fsSL https://ssheverywhere.com/install.sh -o install.sh && bash install.sh

> Penyedia cloud besar (Tencent Cloud / Alibaba Cloud) menonaktifkan login root secara bawaan. --dir yang diberikan secara eksplisit selalu diutamakan; hanya bila pengguna saat ini tidak punya izin tulis pada direktori tersebut, skrip akan beralih otomatis ke direktori HOME Anda (~/ssh-everywhere) dan menyatakan dengan jelas di output direktori mana yang Anda berikan, mengapa diganti, dan bahwa Anda harus menjalankannya sebagai root bila ingin memasang di sana.

2. Peningkatan

Cukup jalankan perintah pemasangan sekali lagi; skrip punya deteksi versi bawaan dan akan menawarkan peningkatan jika menemukan versi baru (data dipertahankan, sepenuhnya otomatis):

curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --yes

--yes berarti konfirmasi otomatis saat peningkatan, tanpa interaksi.

3. Penghapusan

Penghapusan direktori default (interaktif, direkomendasikan)

curl -fsSL https://ssheverywhere.com/uninstall.sh -o uninstall.sh && bash uninstall.sh

Skrip akan menampilkan daftar yang akan dihapus terlebih dahulu lalu meminta konfirmasi; perintah baru dijalankan setelah Anda mengetik yes.

Penghapusan non-interaktif / ter-skrip

Tambahkan --yes untuk melewati konfirmasi (validasi keamanan tetap dijalankan):

curl -fsSL https://ssheverywhere.com/uninstall.sh | bash -s -- --yes

Parameter penghapusan

ParameterKeterangan
--dir <direktori>direktori instalasi (default /opt/ssh-everywhere, wajib ditentukan jika direktorinya diubah)
--keep-datamencadangkan data (konfigurasi server / basis data) menjadi paket tar sebelum penghapusan
--yeskonfirmasi penghapusan dalam mode non-interaktif

4. Bagaimana menghapus jika direktori instalasi diubah? (penting)

Jika saat pemasangan Anda memakai --dir untuk mengubah direktori, saat penghapusan wajib menentukan --dir yang sama; jika tidak, skrip tidak akan menemukan direktori instalasi dan berhenti otomatis (ini perlindungan keamanan untuk mencegah penghapusan yang keliru).

Path direktori tanpa spasi

curl -fsSL https://ssheverywhere.com/uninstall.sh -o uninstall.sh && bash uninstall.sh --dir /opt/my-panel

Cara pipe (--dir diletakkan setelah bash -s --):

curl -fsSL https://ssheverywhere.com/uninstall.sh | bash -s -- --dir /opt/my-panel --yes

Path direktori mengandung spasi

Jika nama direktori mengandung spasi, path lengkapnya wajib dibungkus dengan tanda kutip ganda; jika tidak, shell akan memecah path menjadi dua bagian dan skrip tidak menemukan direktorinya:

bash uninstall.sh --dir "/opt/my panel"

Cara pipe juga sama (kutip membungkus seluruh path, jangan hanya sebagian):

curl -fsSL https://ssheverywhere.com/uninstall.sh | bash -s -- --dir "/opt/my panel" --yes

Ingin mempertahankan data sebelum menghapus

bash uninstall.sh --dir /opt/my-panel --keep-data

data (konfigurasi server / basis data) akan dicadangkan ke <direktori-instalasi>-data-backup-<timestamp>.tar.gz, dan bisa ditemukan kembali setelah penghapusan.

> 💡 Saran: sejak saat pemasangan, hindari memakai spasi pada nama direktori; gunakan tanda hubung atau garis bawah (mis. my-panel, my_panel) untuk menghindari repotnya tanda kutip.

5. Penjelasan keamanan

Skrip penghapusan punya tiga lapis perlindungan bawaan untuk mencegah penghapusan yang keliru:

1. Validasi path absolut —— menolak path relatif.

2. Daftar hitam direktori penting sistem —— menolak /, /root, /etc, /usr, /var dan sejenisnya.

3. Validasi sidik jari direktori instalasi —— hanya akan dihapus jika VERSION dan app.py sama-sama ada; jika tidak, proses dibatalkan.

> Penghapusan hanya menghapus panel itu sendiri; Agent di server/perangkat target tidak terpengaruh (setelah panel dihapus, mereka akan menampilkan offline).