diff --git a/tools/install.sh b/tools/install.sh new file mode 100755 index 0000000..466b984 --- /dev/null +++ b/tools/install.sh @@ -0,0 +1,108 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_USER="${APP_USER:-naue}" +APP_DIR="${APP_DIR:-/home/${APP_USER}/rtk}" +ENV_FILE="/etc/rtk.env" + +echo "== RTK Base Installer ==" + +if [[ $EUID -ne 0 ]]; then + echo "Bitte mit sudo ausführen:" + echo "sudo ./install.sh" + exit 1 +fi + +echo "Installiere Pakete..." +apt update +apt install -y python3 python3-serial python3-paho-mqtt mosquitto-clients jq git + +echo "Erstelle Verzeichnis ${APP_DIR}..." +mkdir -p "${APP_DIR}" +chown "${APP_USER}:${APP_USER}" "${APP_DIR}" + +echo "Kopiere Python-Skripte..." +install -m 0755 -o "${APP_USER}" -g "${APP_USER}" scripts/rtkbase_lora.py "${APP_DIR}/rtkbase_lora.py" +install -m 0755 -o "${APP_USER}" -g "${APP_USER}" scripts/status_mqtt.py "${APP_DIR}/status_mqtt.py" + +if [[ ! -f "${ENV_FILE}" ]]; then + echo "Erstelle ${ENV_FILE}..." + cat > "${ENV_FILE}" <<'EOF' +# RTK MQTT Settings +MQTT_HOST=192.168.2.36 +MQTT_PORT=1883 +MQTT_USER=wall-e +MQTT_PASS=BITTE_AENDERN +MQTT_TOPIC_PREFIX=rtk/base +EOF + chmod 600 "${ENV_FILE}" + echo "WICHTIG: Bitte ${ENV_FILE} prüfen und MQTT_PASS setzen." +else + echo "${ENV_FILE} existiert bereits, wird nicht überschrieben." +fi + +echo "Installiere systemd Units..." + +cat > /etc/systemd/system/rtk-base.service < /etc/systemd/system/rtk-status.service < MQTT (reads /run/rtk/state.json) +After=network-online.target rtk-base.service +Wants=network-online.target + +[Service] +Type=simple +User=${APP_USER} +Group=${APP_USER} +EnvironmentFile=${ENV_FILE} +WorkingDirectory=${APP_DIR} +ExecStart=/usr/bin/python3 ${APP_DIR}/status_mqtt.py \\ + --state-file /run/rtk/state.json \\ + --mqtt-host \${MQTT_HOST} \\ + --mqtt-port \${MQTT_PORT} \\ + --mqtt-user \${MQTT_USER} \\ + --mqtt-pass \${MQTT_PASS} \\ + --topic-prefix \${MQTT_TOPIC_PREFIX} \\ + --interval 5 \\ + --ha-discovery \\ + --device-name "RTK Base" \\ + --device-id rtk_base +Restart=always +RestartSec=2 + +[Install] +WantedBy=multi-user.target +EOF + +echo "Aktiviere Services..." +systemctl daemon-reload +systemctl enable rtk-base.service +systemctl enable rtk-status.service + +echo +echo "Installation abgeschlossen." +echo +echo "Nächste Schritte:" +echo "1) sudo nano ${ENV_FILE}" +echo "2) MQTT_PASS prüfen/anpassen" +echo "3) sudo systemctl restart rtk-base.service rtk-status.service" +echo "4) sudo journalctl -u rtk-base.service -f" +echo