2.2 KiB
2.2 KiB
us4.wsvc.info
| Item | Value |
|---|---|
| Role | WireGuard VPN server (LinuxServer Docker image) |
| SSH | ssh -4 windy@us4.wsvc.info (prefer IPv4 from WSL) |
| IPv4 | 185.201.226.122 |
| Compose project | /opt/wireguard |
| Compose file | /opt/wireguard/compose.yml |
| Container | wireguard |
| Image policy | Immutable digest, updated only in an approved maintenance window |
| Public port | UDP 51820 on IPv4 and IPv6 |
| Tunnel subnet | 10.13.13.0/24 |
| Routing policy | IPv4-only full tunnel (ALLOWEDIPS=0.0.0.0/0); IPv6 traffic is not guaranteed to use the VPN |
Safety
- Private keys, preshared keys, peer configuration files, and QR codes remain
only in
/opt/wireguard/config; do not copy them to this repository or Linear. - Local rollback archives are stored in
/opt/wireguard/backups(directory mode0700, archives mode0600). They contain private keys, are not an off-host disaster-recovery backup, and must never leave the server. - Do not delete, move, or regenerate
/opt/wireguard/configduring maintenance. - Before a container recreation, validate
docker compose configand retain a verified SSH session for rollback. Do not rundocker compose down -v.
Routine operations
Run read-only checks through Ansible:
cd ansible
ansible-playbook playbooks/health-report.yml --limit wireguard
The image update and recreate procedure is deliberately separate and requires an immutable image digest in the server-side Compose file plus an explicit maintenance-window confirmation:
cd ansible
ansible-playbook playbooks/wireguard-maintenance.yml --limit wireguard \
-e '{"wireguard_maintenance_confirm": true}'
Before that recreate, apply the reviewed Compose hardening from the repository:
ansible-playbook playbooks/wireguard-harden.yml --limit wireguard \
-e '{"wireguard_harden_confirm": true}'
Verification
- Container
wireguardis running and interfacewg0exists. - UDP
51820is listening on the host. - Validate a known client can handshake and sends IPv4 traffic through the VPN.
- Do not treat inactive mobile peers as a failure solely because their latest handshake is old.