Files
yourchat2/install-systemd.sh
Torsten Schulz (local) b2752b3fae Update service management in install-systemd.sh to include service restart
Modified the service management commands to ensure the service is restarted after enabling it. This change enhances the deployment process by ensuring the latest configuration is applied immediately. Updated the echo statement for clarity on the actions being performed.
2026-03-27 13:51:04 +01:00

78 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SERVICE_NAME="yourchat2"
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SERVICE_SRC="${PROJECT_DIR}/yourchat2.service"
SERVICE_DST="/etc/systemd/system/${SERVICE_NAME}.service"
ENV_DIR="/etc/yourchat2"
ENV_FILE="${ENV_DIR}/yourchat2.env"
ENV_TEMPLATE="${PROJECT_DIR}/config/yourchat2.env.example"
BIN_PATH="${PROJECT_DIR}/target/release/yourchat2"
INSTALL_BIN="/usr/local/bin/yourchat2"
WORK_DIR="/var/lib/yourchat2"
BUILD_USER="tsschulz"
if [[ "${EUID}" -ne 0 ]]; then
echo "Dieses Skript muss als root ausgefuehrt werden (z. B. via sudo)." >&2
exit 1
fi
if [[ ! -f "${SERVICE_SRC}" ]]; then
echo "Service-Datei nicht gefunden: ${SERVICE_SRC}" >&2
exit 1
fi
echo "[1/7] Build release binary ..."
sudo -u "${BUILD_USER}" bash -lc "cd '${PROJECT_DIR}' && cargo build --release --manifest-path '${PROJECT_DIR}/Cargo.toml'"
if [[ ! -x "${BIN_PATH}" ]]; then
echo "Binary wurde nicht erzeugt: ${BIN_PATH}" >&2
exit 1
fi
echo "[2/7] Install binary ..."
install -m 0755 "${BIN_PATH}" "${INSTALL_BIN}"
echo "[3/7] Install service file ..."
install -m 0644 "${SERVICE_SRC}" "${SERVICE_DST}"
echo "[4/7] Ensure environment directory ..."
install -d -m 0755 "${ENV_DIR}"
echo "[5/7] Ensure work directory ..."
install -d -m 0750 "${WORK_DIR}"
chown "${BUILD_USER}:${BUILD_USER}" "${WORK_DIR}"
echo "[6/7] Ensure environment file ..."
if [[ ! -f "${ENV_FILE}" ]]; then
if [[ -f "${ENV_TEMPLATE}" ]]; then
install -m 0640 "${ENV_TEMPLATE}" "${ENV_FILE}"
else
cat > "${ENV_FILE}" <<'EOF'
# yourchat2 environment
CHAT_WS_ADDR=0.0.0.0:1235
CHAT_TCP_ADDR=127.0.0.1:1236
# CHAT_UNIX_SOCKET=/run/yourchat2/yourchat2.sock
# CHAT_ALLOWED_USERS=alice,bob
# CHAT_DB_URL=postgres://user:pass@host:5432/dbname
# SECRET_KEY=replace-with-real-secret
EOF
chmod 0640 "${ENV_FILE}"
fi
chmod 0640 "${ENV_FILE}"
chown root:root "${ENV_FILE}"
fi
echo "[7/7] Reload, enable and restart service ..."
systemctl daemon-reload
systemctl enable "${SERVICE_NAME}.service"
systemctl restart "${SERVICE_NAME}.service"
echo "[status] Service status ..."
systemctl --no-pager --full status "${SERVICE_NAME}.service" || true
echo
echo "Fertig. Konfiguration bei Bedarf in ${ENV_FILE} anpassen."
echo "Danach neu laden mit: systemctl restart ${SERVICE_NAME}.service"