Documentación

Inicio rápido + descripción de cada función y de cada dispositivo (en constante actualización)

Instalación y desinstalación

Este documento detalla cómo instalar, actualizar y desinstalar el panel SSH Everywhere, con especial atención a «cómo desinstalar tras cambiar el directorio de instalación» y a los detalles de formato de los comandos (espacios, comillas).

1. Instalación (un solo comando)

Ejecútalo en un servidor Linux con IP pública:

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

El script hace automáticamente: detectar el sistema → instalar dependencias (Python3 / venv / pip / git / curl) → descargar el código → crear el entorno virtual → instalar las dependencias de Python → registrar y arrancar el servicio systemd.

Compatible con Debian / Ubuntu / CentOS / Rocky / AlmaLinux / Fedora / WSL (si no hay systemd, pasa automáticamente a ejecutarse en segundo plano).

Parámetros de instalación

ParámetroDescripciónEjemplo
--lang <código>Idioma de los mensajes + idioma predeterminado del panel (por defecto se detecta automáticamente según el locale del sistema; también acepta el número 1-16)--lang ja
--dir <directorio>Directorio de instalación (por defecto /opt/ssh-everywhere; si no se puede escribir, se recurre automáticamente a ~/ssh-everywhere y se explica en la salida)--dir /opt/my-panel
--port <puerto>Puerto del panel (por defecto 5501)--port 8080
--asciiFuerza la salida con símbolos ASCII puros ([ok] / [..] / [!] / [x]); no se corrompe en ningún terminal--ascii
--unicodeFuerza la salida con símbolos Unicode (✓ ⟳ ⚠️ ❌); en entornos UTF-8 es la opción predeterminada--unicode
--yes / -yConfirma automáticamente al actualizar, sin interacción--yes

Códigos de idioma admitidos (16)

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

Si no se pasa --lang, se detecta automáticamente según el locale del sistema (por ejemplo, LANG=ja_JP.UTF-8 → mensajes en japonés). Cuando el locale del servidor o del terminal no es UTF-8 (en las imágenes reducidas de los grandes proveedores de nube es habitual LANG=C), el script cambia automáticamente a símbolos ASCII puros [ok]; si no se especificó el idioma, también devuelve los mensajes al inglés y explica el motivo al principio — todo ello para evitar cualquier carácter ilegible. Para forzar la visualización de tu idioma puedes usar: --lang xx --unicode.

Al pasar parámetros por tubería hay que añadir bash -s --:

# Mensajes en japonés + panel en japonés
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ja

# Mensajes en ruso + directorio y puerto personalizados
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ru --dir /opt/my-panel --port 8080

# Terminales antiguos / GBK con riesgo de caracteres ilegibles: salida ASCII pura (mensajes en chino + símbolos [ok])
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang zh --ascii

# Árabe (interfaz RTL)
curl -fsSL https://ssheverywhere.com/install.sh | bash -s -- --lang ar

También puedes descargarlo primero y ejecutarlo después (modo interactivo: pregunta paso a paso el idioma, el directorio y la confirmación de actualización):

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

> Los grandes proveedores de nube (Tencent Cloud / Alibaba Cloud) desactivan el inicio de sesión como root de forma predeterminada. El --dir indicado explícitamente se respeta con prioridad; solo si el usuario actual no tiene permiso de escritura en ese directorio, el script cambia automáticamente a tu directorio HOME (~/ssh-everywhere) y avisa claramente en la salida de "qué directorio indicaste, por qué se cambió y que debes ejecutarlo como root si quieres instalarlo allí".

2. Actualización

Basta con volver a ejecutar el comando de instalación; el script incorpora detección de versiones y, si encuentra una nueva, avisará para actualizar (los datos se conservan y todo es automático):

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

--yes indica que se confirme automáticamente al actualizar, sin interacción.

3. Desinstalación

Desinstalación desde el directorio predeterminado (interactiva, recomendada)

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

El script primero lista lo que se va a desinstalar y pide confirmación; solo se ejecuta si escribes yes.

Desinstalación no interactiva / por script

Añade --yes para omitir la confirmación (las comprobaciones de seguridad se mantienen):

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

Parámetros de desinstalación

ParámetroDescripción
--dir <directorio>directorio de instalación (por defecto /opt/ssh-everywhere; si lo cambiaste, es obligatorio indicarlo)
--keep-dataantes de desinstalar, guarda data (configuración de servidores / base de datos) en una copia de seguridad tar
--yesconfirma la desinstalación en modo no interactivo

4. ¿Cómo desinstalar si cambié el directorio de instalación? (importante)

Si durante la instalación usaste --dir para cambiar el directorio, al desinstalar es obligatorio indicar el mismo --dir; de lo contrario, el script no encuentra el directorio de instalación y se detiene automáticamente (es una protección de seguridad para evitar borrados accidentales).

Ruta del directorio sin espacios

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

Por tubería (--dir va después de bash -s --):

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

Ruta del directorio con espacios

Si el nombre del directorio lleva espacios, es obligatorio encerrar toda la ruta entre comillas dobles; de lo contrario, la shell partirá la ruta en dos y el script no encontrará el directorio:

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

Por tubería lo mismo (las comillas deben encerrar toda la ruta, no solo una parte):

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

Quiero conservar los datos antes de desinstalar

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

data (configuración de servidores / base de datos) se guardará en <directorio-de-instalación>-data-backup-<marca-de-tiempo>.tar.gz, recuperable tras la desinstalación.

> 💡 Recomendación: evita usar espacios en el nombre del directorio desde el momento de la instalación y usa guiones o guiones bajos (como my-panel, my_panel); así te ahorras los problemas de las comillas.

5. Notas de seguridad

El script de desinstalación incorpora tres capas de protección para evitar borrados accidentales:

1. Validación de ruta absoluta —— rechaza las rutas relativas.

2. Lista negra de directorios críticos del sistema —— rechaza /, /root, /etc, /usr, /var, etc.

3. Validación de la huella del directorio de instalación —— solo se elimina si existen a la vez VERSION y app.py; de lo contrario, se detiene.

> La desinstalación solo elimina el panel en sí; el Agent del servidor / dispositivo de destino no se ve afectado (cuando se elimina el panel, pasan a mostrarse sin conexión).