diff --git a/DOCS.md b/DOCS.md index 37dc718..2f4348f 100644 --- a/DOCS.md +++ b/DOCS.md @@ -73,7 +73,24 @@ Notes: - `telegram_allow_from`: comma-separated Telegram user IDs (locks DMs) - `brave_api_key`: exported as `BRAVE_API_KEY` (for web search) - `homeassistant_token`: written to `/config/secrets/homeassistant.token` inside the container -- MikroTik SSH fields: `mikrotik_host`, `mikrotik_ssh_user`, `mikrotik_ssh_key_path` + +### Router SSH (generic) +This add-on supports a **generic SSH configuration** for a router/firewall (or any LAN network device) +when you want the assistant to automate local network changes (e.g., port forwarding, DNS records, +firewall rules). + +Config fields: +- `router_ssh_host`: host/IP of the router (reachable from the HA host network) +- `router_ssh_user`: SSH username +- `router_ssh_key_path`: path to the private key file inside the add-on (default: `/data/keys/router_ssh`) + +How to provide the SSH key: +- Put the private key file under the add-on config directory so it appears in-container at `/data/keys/...`. +- Ensure permissions are restricted (recommended `chmod 600`). + +Back-compat: +- Older versions used MikroTik-branded names: `mikrotik_host`, `mikrotik_ssh_user`, `mikrotik_ssh_key_path`. + These are still accepted but **deprecated**. ## Troubleshooting @@ -87,5 +104,4 @@ Notes: ### Gateway button opens but cannot connect - Confirm the browser can reach `gateway_public_url`. -- Confirm your NAT/port-forward rules (if using DuckDNS/Nabu Casa is **not** involved here). -- If you want Nabu Casa support for the gateway UI, do **not** expose the gateway; use the assistant via Telegram and keep gateway loopback. +- Confirm your NAT/port-forward rules. diff --git a/moltbot_assistant/config.yaml b/moltbot_assistant/config.yaml index 35768d3..c80168d 100644 --- a/moltbot_assistant/config.yaml +++ b/moltbot_assistant/config.yaml @@ -1,5 +1,5 @@ name: Moltbot Assistant -version: "0.4.3" +version: "0.4.4" slug: moltbot_assistant description: Run Moltbot Assistant (Clawdbot-compatible) as a Home Assistant add-on. url: https://github.com/techartdev/ClawdHAAddOn @@ -46,7 +46,15 @@ options: run_doctor_on_start: false homeassistant_token: "" - # Optional: MikroTik SSH defaults (leave empty if you don't use MikroTik) + + # Optional: Router SSH defaults (leave empty if you don't need router automation) + # This is a generic SSH configuration intended for a router/firewall or any network device + # reachable from inside the HA host LAN. + router_ssh_host: "" + router_ssh_user: "" + router_ssh_key_path: "/data/keys/router_ssh" + + # Backward compatible (deprecated): older config names mikrotik_host: "" mikrotik_ssh_user: "" mikrotik_ssh_key_path: "/data/keys/mikrotik" @@ -72,9 +80,16 @@ schema: gateway_public_url: str? run_doctor_on_start: bool homeassistant_token: str? - mikrotik_host: str - mikrotik_ssh_user: str - mikrotik_ssh_key_path: str + + router_ssh_host: str + router_ssh_user: str + router_ssh_key_path: str + + # Backward compatible (deprecated) + mikrotik_host: str? + mikrotik_ssh_user: str? + mikrotik_ssh_key_path: str? + brave_api_key: str? enable_terminal: bool? clean_session_locks_on_start: bool? diff --git a/moltbot_assistant/run.sh b/moltbot_assistant/run.sh index ec468ab..1141bca 100644 --- a/moltbot_assistant/run.sh +++ b/moltbot_assistant/run.sh @@ -20,10 +20,21 @@ GW_PUBLIC_URL=$(jq -r '.gateway_public_url // empty' "$OPTIONS_FILE") HA_TOKEN=$(jq -r '.homeassistant_token // empty' "$OPTIONS_FILE") BRAVE_KEY=$(jq -r '.brave_api_key // empty' "$OPTIONS_FILE") ENABLE_TERMINAL=$(jq -r '.enable_terminal // false' "$OPTIONS_FILE") +# Generic router SSH settings (preferred) +ROUTER_HOST=$(jq -r '.router_ssh_host // empty' "$OPTIONS_FILE") +ROUTER_USER=$(jq -r '.router_ssh_user // empty' "$OPTIONS_FILE") +ROUTER_KEY=$(jq -r '.router_ssh_key_path // "/data/keys/router_ssh"' "$OPTIONS_FILE") + +# Backward compatible (deprecated) MikroTik-named settings MT_HOST=$(jq -r '.mikrotik_host // empty' "$OPTIONS_FILE") MT_USER=$(jq -r '.mikrotik_ssh_user // empty' "$OPTIONS_FILE") MT_KEY=$(jq -r '.mikrotik_ssh_key_path // "/data/keys/mikrotik"' "$OPTIONS_FILE") +# Prefer generic router_* values; fall back to mikrotik_* if router_* are empty +[ -z "$ROUTER_HOST" ] && ROUTER_HOST="$MT_HOST" +[ -z "$ROUTER_USER" ] && ROUTER_USER="$MT_USER" +[ "$ROUTER_KEY" = "/data/keys/router_ssh" ] && [ -n "$MT_KEY" ] && ROUTER_KEY="$MT_KEY" + # Optional: allow disabling lock cleanup if you ever need to debug CLEAN_LOCKS_ON_START=$(jq -r '.clean_session_locks_on_start // true' "$OPTIONS_FILE") CLEAN_LOCKS_ON_EXIT=$(jq -r '.clean_session_locks_on_exit // true' "$OPTIONS_FILE") @@ -205,13 +216,13 @@ else echo "WARN: Telegram token validation failed (getMe)" fi -# Convenience info for later (MikroTik access path & HA token file) +# Convenience info for later (router SSH access path & HA token file) cat > /config/CONNECTION_NOTES.txt <