feature/generador-instaladores-linux-windows
This commit is contained in:
103
install.sh
Executable file
103
install.sh
Executable file
@@ -0,0 +1,103 @@
|
||||
#!/usr/bin/env bash
|
||||
# Instalador Linux de CloudRestoreAS.
|
||||
#
|
||||
# NO instala ni descarga NADA del sistema: el binario es 100% autocontenido
|
||||
# (Qt/xcb, driver ODBC + Kerberos/OpenSSL, y 7-Zip van embebidos). Este script solo
|
||||
# coloca el binario, marca permisos, hace el bootstrap de config/, y opcionalmente
|
||||
# registra el arranque automático (servicio systemd headless o autostart de escritorio).
|
||||
#
|
||||
# Uso:
|
||||
# sudo ./install.sh --service # 24/7 headless vía systemd (recomendado en servidor)
|
||||
# ./install.sh --desktop # autostart de escritorio (requiere sesión gráfica)
|
||||
# ./install.sh # solo instala; sin arranque automático
|
||||
#
|
||||
# Variables:
|
||||
# PREFIX=/opt/cloudrestoreas # carpeta destino (default)
|
||||
# SERVICE_USER=<usuario> # usuario del servicio systemd (default: quien invoca)
|
||||
set -euo pipefail
|
||||
|
||||
MODE="none"
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--service) MODE="service" ;;
|
||||
--desktop) MODE="desktop" ;;
|
||||
-h|--help)
|
||||
grep '^#' "$0" | grep -v '^#!' | sed 's/^# \{0,1\}//'; exit 0 ;;
|
||||
*) echo "Opción desconocida: $arg" >&2; exit 2 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PREFIX="${PREFIX:-/opt/cloudrestoreas}"
|
||||
BIN_NAME="CloudRestoreAS"
|
||||
|
||||
# Localizar el binario: dist/CloudRestoreAS, dist/CloudRestoreAS-linux, o junto al script.
|
||||
SRC=""
|
||||
for cand in \
|
||||
"$SCRIPT_DIR/dist/$BIN_NAME" \
|
||||
"$SCRIPT_DIR/dist/${BIN_NAME}-linux" \
|
||||
"$SCRIPT_DIR/$BIN_NAME" \
|
||||
"$SCRIPT_DIR/${BIN_NAME}-linux"; do
|
||||
if [[ -f "$cand" ]]; then SRC="$cand"; break; fi
|
||||
done
|
||||
if [[ -z "$SRC" ]]; then
|
||||
echo "ERROR: no se encontró el binario ($BIN_NAME). Ejecuta ./build.sh primero" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==============================================="
|
||||
echo "CloudRestoreAS - Instalación Linux"
|
||||
echo " Binario : $SRC"
|
||||
echo " Destino : $PREFIX"
|
||||
echo " Modo : $MODE"
|
||||
echo "==============================================="
|
||||
|
||||
mkdir -p "$PREFIX"
|
||||
install -m 0755 "$SRC" "$PREFIX/$BIN_NAME"
|
||||
echo "Binario instalado en $PREFIX/$BIN_NAME"
|
||||
|
||||
# Bootstrap de config/: el propio binario crea config/, .env y carpetas de trabajo
|
||||
# al inicio de su arranque. Se corre una vez en modo offscreen (sin display) y se
|
||||
# corta con timeout; así el usuario ya puede editar config/.env antes de habilitar
|
||||
# el servicio.
|
||||
echo "Inicializando config/ (bootstrap)..."
|
||||
( cd "$PREFIX" && QT_QPA_PLATFORM=offscreen timeout 20 "$PREFIX/$BIN_NAME" --headless >/dev/null 2>&1 || true )
|
||||
if [[ -f "$PREFIX/config/.env" ]]; then
|
||||
echo "config/.env creado."
|
||||
else
|
||||
echo "NOTA: config/.env se creará en la primera ejecución."
|
||||
fi
|
||||
|
||||
case "$MODE" in
|
||||
service)
|
||||
SERVICE_USER="${SERVICE_USER:-${SUDO_USER:-$(id -un)}}"
|
||||
UNIT_SRC="$SCRIPT_DIR/packaging/linux/cloudrestoreas.service"
|
||||
UNIT_DST="/etc/systemd/system/cloudrestoreas.service"
|
||||
if [[ ! -w "$(dirname "$UNIT_DST")" ]]; then
|
||||
echo "ERROR: se requiere sudo para instalar el servicio systemd" >&2
|
||||
exit 1
|
||||
fi
|
||||
sed -e "s|__USER__|$SERVICE_USER|g" \
|
||||
-e "s|__WORKDIR__|$PREFIX|g" \
|
||||
-e "s|__EXEC__|$PREFIX/$BIN_NAME|g" \
|
||||
"$UNIT_SRC" > "$UNIT_DST"
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now cloudrestoreas.service
|
||||
echo "Servicio systemd instalado y arrancado (usuario: $SERVICE_USER)."
|
||||
echo " Estado : systemctl status cloudrestoreas"
|
||||
echo " Logs : journalctl -u cloudrestoreas -f"
|
||||
;;
|
||||
desktop)
|
||||
echo "Modo escritorio: la app registra su autostart .desktop al iniciarse."
|
||||
echo "Ejecuta '$PREFIX/$BIN_NAME' en tu sesión gráfica."
|
||||
;;
|
||||
none)
|
||||
echo "Instalación sin arranque automático."
|
||||
echo "Ejecuta: QT_QPA_PLATFORM=offscreen $PREFIX/$BIN_NAME --start-engine --headless"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo ""
|
||||
echo "Siguiente paso: edita $PREFIX/config/.env (CLOUDRESTORE_PANEL_*) y reinicia."
|
||||
[[ "$MODE" == "service" ]] && echo " Tras editar: sudo systemctl restart cloudrestoreas"
|
||||
echo "Listo."
|
||||
Reference in New Issue
Block a user