setup.sh uses /opt/wallarm/ for env.list and all paths.
Extract once to base dir, each node registers with --force.
Simplified InstallNode to 4 steps: nginx → download → extract → setup.
Wallarm node (native deployment) requires NGINX as a runtime
dependency. installNginx() runs apt-get install nginx if not
already present, before extracting/running the Wallarm installer.
Also fixed repo.wallarm.com → meganode.wallarm.com in preflight.
- Binary + source installed to /opt/wallarm/
- Clients can rebuild: cd /opt/wallarm/source && go build ./cmd/wallarm/
- Source stays at repo root, not in a subdirectory
- deploy.sh installs to /opt/wallarm/wallarm (not ~/deploy/)
- state.json at /opt/wallarm/state.json (not ~/.wallarm/)
- instances under /opt/wallarm/{name}/
- .env will live at /opt/wallarm/.env for global defaults
- Single tree, no home directory clutter
- Uses Makeself --noexec --target to extract without running
- Then runs the embedded setup.sh with WALLARM_API_TOKEN and
WALLARM_API_HOST env vars
- Interactive prompts handled via stdin pipe
- WALLARM_INSTALLER_URL env var overrides the native node installer URL
- Address simplified: default IP 0.0.0.0, only ask for port
- Added upstream IP/port prompts
- Per-instance .env file saved to /opt/wallarm/{name}/.env
(allows resuming/reinstalling from saved state)
- Confirmation summary before deploying
Bubbletea and huh cannot coexist in the same process. Fixed by:
- TUI handles only display: deploy choice + dashboard
- Deploy wizard runs as plain terminal prompts in main.go
- No more terminal conflicts, keys work correctly
- Same flow: wallarm → choice → form → deploy → state saved
tea.WithAltScreen() caused the alternate buffer to conflict with
huh form rendering. Using normal screen lets huh render inline.
Also reverted broken tea.Suspend/tea.Resume (not valid commands).
m.deploying is now set synchronously before the goroutine starts,
preventing bubbletea from re-capturing number keys meant for the
huh form. Removed duplicate '1' key handler from wizard view.
Step-by-step instructions for configuring a Linux VM as a jump server:
- SSH server config (AllowTcpForwarding, GatewayPorts, keepalive)
- Tunnel user creation (password or key auth, no shell)
- Zoraxy/Nginx reverse proxy for TLS:443
- Testing and troubleshooting
Bubbletea and huh were fighting over terminal input. Fixed by:
- TUI exits when user selects 'Remote Assistance'
- Plain terminal prompts in main.go collect jumphost URL, user, pass
- Starts tunnel directly, shows connection string for admin
- No more conflicting rendering between TUI and forms