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