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
Startup flow now offers:
- [1] Deploy locally — config wizard, deploys on this server
- [2] Remote assistance — prompts for jumphost URL, user, password
(or SSH key path), opens reverse TLS:443 tunnel so a remote admin
can connect and run deployment through their terminal.
Tunnel now supports password auth in addition to key auth.
Gitea server has strict HTTP body limits (~1MB) preventing binary
uploads. deploy.sh now clones the repo and builds from source using
Go (auto-installed if missing).
Build takes ~30 seconds. Binary is ~7MB stripped, ~2MB with UPX.
Binary is now distributed via Gitea releases (not committed to repo).
deploy.sh queries API for latest release tag and downloads the correct
architecture binary.
Removed:
- docker/ (scripts, binaries, images) - no longer needed
- native/, common/ bash scripts - replaced by Go binary
- setup.sh - replaced by deploy.sh
- internal/docker/ Go package - no longer needed
Added:
- deploy.sh - one-command bootstrap
- --version flag
Result: one binary, one TUI, one deployment type. Zero Docker.
Binary distributed via Gitea releases (not in repo).
- Wizard: type pick → cloud region → token → node config → deploys via native.InstallNode / docker.DeployContainer
- State saved after successful deployment with API token
- Dashboard reflects real node state from ~/.wallarm/state.json
- Removed old unused HuhForm stub
- Wizard: type pick → cloud region → token → node config (huh forms)
- Dashboard: node list with status, action shortcuts
- Auto-routes based on ~/.wallarm/state.json existence
- Replaces text stubs with proper interactive TUI
- Replaces per-file curl downloads with single archive download
(tar.gz from Gitea), extracts only common/ + selected type folder.
- Interactive prompt uses /dev/tty when stdin is piped (curl|bash).
- Falls back to both only when fully headless.
- Post-extract sed patch fixes library sourcing path for flat deploy/
until source scripts are updated in the repo.
- setup.sh: ask user which deployment type (docker/native/both) instead
of silently downloading everything; uses env var for piped mode
- All scripts now download to single flat deploy/ directory instead of
separate common/docker/native dirs
- Post-download sed patch fixes library sourcing path until repo is
synced
- wallarm-native.sh: fix set -u crash when declare -a used without =()
(user hitting blank node name triggered unbound variable crash)
- All deployment scripts: library source path changed from
../common/wallarm-lib.sh to same-directory wallarm-lib.sh
Docker inside LXC containers is problematic, so the Docker deployment is
intended for full VMs; the native deployment is ideal for any container
environment (LXC, Proxmox containers, etc.).
Remove the native/wallarm-ct-*.sh scripts (NGINX-module based native
deployment) so the wallarm-ct-* family is Docker-only and the native
deployment is represented by the unified wallarm-native.sh manager.
Update setup.sh (native downloads only wallarm-native.sh), README and
changelog.
The interactive deployment-type prompt read from stdin, which is the script
pipe (not the terminal) when piped to bash, so it was silently skipped and
only Docker scripts were downloaded. setup.sh is now non-interactive by
default and downloads BOTH deployment types (docker/ + native/) so the native
option is always available; DEPLOYMENT_TYPE=docker|native restricts to one.
Also guard clear and drop the broken overwrite confirmation.
- Revert GIT_RAW_URL from /src/branch/main to /raw/branch/main in deployment scripts
- Remove Forgejo references that were inadvertently re-added to README.md
- Update changelog to document URL correction
- Remove all Forgejo branding from codebase for neutrality
- Update setup.sh header comments and banner
- Fix download URL in README from /raw/branch/main/ to /src/branch/main/
- Update changelog to document additional changes