Документация

Быстрый старт + описание функций по разделам и устройствам (постоянно дополняется)

Установка и удаление

В этой статье подробно описано, как установить, обновить и удалить панель SSH Everywhere; особое внимание уделено тому, «как удалить панель, если каталог установки был изменён», и деталям формата команд (пробелы, кавычки).

1. Установка (одной командой)

Выполните на Linux-сервере с публичным IP:

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

Скрипт автоматически выполнит: определение системы → установку зависимостей (Python3 / venv / pip / git / curl) → скачивание кода → создание виртуального окружения → установку зависимостей Python → регистрацию и запуск сервиса systemd.

Поддерживаются Debian / Ubuntu / CentOS / Rocky / AlmaLinux / Fedora / WSL (без systemd автоматически используется фоновый запуск).

Параметры установки

ПараметрОписаниеПример
--lang <код>Язык подсказок + язык панели по умолчанию (по умолчанию определяется автоматически по системной локали; также принимается номер 1-16)--lang ja
--dir <каталог>Каталог установки (по умолчанию /opt/ssh-everywhere; если запись невозможна, автоматически используется ~/ssh-everywhere с пояснением в выводе)--dir /opt/my-panel
--port <порт>Порт панели (по умолчанию 5501)--port 8080
--asciiПринудительный вывод только ASCII-символов ([ok] / [..] / [!] / [x]), никаких искажений в любом терминале--ascii
--unicodeПринудительный вывод символов Unicode (✓ ⟳ ⚠️ ❌); в среде UTF-8 это режим по умолчанию--unicode
--yes / -yАвтоматическое подтверждение при обновлении, без интерактива--yes

Поддерживаемые языковые коды (16)

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

Если --lang не передан, язык определяется автоматически по системной локали (например, LANG=ja_JP.UTF-8 → японские подсказки). Если локаль сервера или терминала не UTF-8 (в облегчённых облачных образах часто LANG=C), скрипт автоматически переключается на чистые ASCII-символы [ok], а при не указанном явно языке ещё и возвращает текст подсказок на английский, объясняя причину в начале — это делается, чтобы избежать любых искажений. Чтобы принудительно включить свой язык, используйте: --lang xx --unicode.

При передаче параметров через конвейер нужно добавить bash -s --:

# Японские подсказки + японская панель
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ja

# Русские подсказки + свой каталог и порт
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ru --dir /opt/my-panel --port 8080

# Старый терминал / терминал GBK боится искажений: чисто ASCII-вывод (китайские подсказки + символы [ok])
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang zh --ascii

# Арабский (интерфейс RTL)
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ar

Можно также сначала скачать, а затем запустить (интерактивно, по шагам спросит язык, каталог и подтверждение обновления):

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

> В крупных облаках (Tencent Cloud / Alibaba Cloud) вход root по умолчанию отключён. Явно переданный --dir имеет приоритет; только если у текущего пользователя нет прав на запись в этот каталог, скрипт автоматически переключится на вашу директорию HOME (~/ssh-everywhere) и явно сообщит в выводе, «какой каталог вы передали, почему он был заменён и что для установки туда нужно запускать от root».

2. Обновление

Достаточно снова выполнить команду установки: в скрипт встроена проверка версии, и при появлении новой версии он предложит обновление (данные сохраняются, всё автоматически):

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

--yes означает автоматическое подтверждение при обновлении, без интерактива.

3. Удаление

Удаление с каталогом по умолчанию (интерактивно, рекомендуется)

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

Скрипт сначала покажет, что будет удалено, и спросит подтверждение — удаление начнётся только после ввода yes.

Неинтерактивное / скриптовое удаление

Добавьте --yes, чтобы пропустить подтверждение (проверки безопасности сохраняются):

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

Параметры удаления

ПараметрОписание
--dir <каталог>Каталог установки (по умолчанию /opt/ssh-everywhere, при изменённом каталоге указывать обязательно)
--keep-dataПеред удалением сохранить data (конфигурация серверов / база данных) в tar-архив
--yesПодтвердить удаление в неинтерактивном режиме

4. Как удалить панель, если каталог установки был изменён? (важно)

Если при установке каталог был изменён через --dir, при удалении нужно указать тот же --dir, иначе скрипт не найдёт каталог установки и автоматически прервётся (это защита от случайного удаления).

Путь к каталогу без пробелов

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

Через конвейер (--dir ставится после bash -s --):

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

Путь к каталогу с пробелами

Если в имени каталога есть пробелы, нужно взять весь путь в двойные кавычки, иначе shell разобьёт путь на две части и скрипт не найдёт каталог:

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

Через конвейер так же (кавычки охватывают весь путь, а не половину):

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

Удалить, сохранив данные

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

data (конфигурация серверов / база данных) будет сохранена в <каталог-установки>-data-backup-<метка-времени>.tar.gz, и после удаления её можно будет восстановить.

> 💡 Рекомендация: изначально избегайте пробелов в имени каталога, используйте дефис или подчёркивание (например, my-panel, my_panel) — так не придётся возиться с кавычками.

5. Безопасность

В скрипт удаления встроены три уровня защиты от случайного удаления:

1. Проверка абсолютного пути — относительные пути отклоняются.

2. Чёрный список критических системных каталогов — отклоняются /, /root, /etc, /usr, /var и др.

3. Проверка «отпечатка» каталога установки — удаление выполняется, только если одновременно существуют VERSION и app.py, иначе скрипт прерывается.

> Удаляется только сама панель; Agent на целевых серверах и устройствах не затрагивается (после удаления панели они будут отображаться как офлайн).