MoaV v1.6.1
What's New
GeoIP Country Distribution
All four protocol dashboards (sing-box, Xray, WireGuard, AmneziaWG) now show user connections by country. Uses DB-IP Lite for fully offline lookups — no external API calls at runtime. Database downloads automatically during bootstrap.
Non-Root Containers (PR #68)
All service containers now run as unprivileged moav user. Privileged port binding via setcap. Docker socket replaced with tecnativa/docker-socket-proxy for the admin container. .dockerignore prevents secrets from leaking into build context.
Telemt Anti-DPI Tuning
17 new configurable settings for MTProxy in aggressive censorship environments: keepalive payload randomization, timing jitter, pool hardswap, fast reconnect backoff, STUN TCP fallback. All configurable from .env with documentation. New Grafana panels for ME pool health, DC availability, upstream quality, and NAT type detection.
Admin Dashboard
- Prometheus-backed stats bar: active users, total users, connections, and traffic across all protocols
- Collapsible MahsaNet and Users sections with one-liner summaries
- Toast notifications replacing browser alert dialogs
- Live uptime counter, server IP (masked), domain, version, and documentation links in footer
- Inline confirm-to-delete for MahsaNet configs (two-click pattern, no more browser popups)
Donate Command Refactor
Generalized donation framework ready for multiple services:
moav donate # Interactive wizard (auto-selects configured service)
moav donate setup # Configure API keys
moav donate list # Numbered list of donated configs
moav donate delete # Select and delete specific configs
moav donate status # Donation statistics
moav donate remove # Remove all configs
MahsaNet Integration (https://github.com/mahsanet)
- Fixed health display ({}% in CLI, [object Object] in dashboard)
- Numbered config listing with selective deletion
- Better error messages for API failures
- MahsaNet API reference documented in troubleshooting
Bootstrap Optimization
- sing-box binary downloaded directly instead of pulling full container image — fixes hang in censored networks where ghcr.io is blocked (#75)
- Scripts volume-mounted at runtime instead of COPY'd into image — subsequent bootstraps start in <2 seconds
- GeoIP database auto-downloaded during bootstrap
- Fixed local outside function crash in domainless mode (#77)
Bug Fixes
- Xray IPv6 "network unreachable" — blackhole outbound silently drops IPv6 traffic
- Xray per-user traffic stats — fixed JSON parsing (was using protobuf regex on JSON output) and removed -reset flag that returned empty values
- Xray user-add targeting wrong inbound (api-in instead of vless-xhttp-reality)
- sing-box GeoIP Clash API auth — fixed secret loading and Bearer header authentication
- Grafana geo panels not rendering — fixed panel nesting for uncollapsed rows
- Grafana geo tables empty — switched to cumulative counters for reliable data
- Bootstrap invalidating existing user bundles — file existence guards per protocol
- Bootstrap failing for all users on single failure — non-fatal error handling
- Non-root cert permissions for sing-box, TrustTunnel, admin, Conduit
- TrustTunnel exec failed: operation not permitted — added cap_add: NET_ADMIN
- Cross-profile depends_on breaking moav start dnstunnel
- DNS port 53 prompt on moav start all when DNS tunnels are disabled
- Double monitoring prompt on moav start all
Upgrade
moav update
Upgrading from 1.5.x: Run
docker compose --profile setup run --rm geoip-updaterto download the GeoIP database, then restart exporters:docker compose restart singbox-exporter xray-exporter wireguard-exporter amneziawg-exporter. New installs get this automatically during bootstrap.
Note: The moav donate command syntax changed. Use moav donate instead of moav donate mahsanet.
Full Changelog
Full Changelog: v1.5.1...v1.6.1
New Contributors
Quick Install
curl -fsSL moav.sh/install.sh | bashThis will install MoaV to /opt/moav and guide you through setup.
Documentation
- Setup Guide - Complete installation instructions
- Client Setup - How to connect from devices
- DNS Configuration - DNS records setup
- Troubleshooting - Common issues and solutions