文档

快速开始 + 每部分每设备的功能说明(持续更新中)

安装与卸载

本文详细说明如何安装、升级与卸载 SSH Everywhere 面板,重点讲清「改了安装目录后怎么卸载」以及命令里的格式细节(空格、引号)。

1. 安装(一行命令)

在一台有公网 IP 的 Linux 服务器上运行:

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

脚本会自动完成:检测系统 → 安装依赖(Python3 / venv / pip / git / curl)→ 下载代码 → 建虚拟环境 → 安装 Python 依赖 → 注册并启动 systemd 服务。

支持 Debian / Ubuntu / CentOS / Rocky / AlmaLinux / Fedora / WSL(无 systemd 时自动改用后台运行)。

安装参数

参数说明示例
--lang <代码>提示语言 + 面板默认语言(默认按系统 locale 自动判断;也接受 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 时按系统 locale 自动判断(例如 LANG=ja_JP.UTF-8 → 日文提示)。当服务器或终端的 locale 不是 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

> 大厂云(腾讯云 / 阿里云)默认禁用 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 不受影响(面板删除后它们会显示离线)。