Skip to content

feat: extract raven_subscribe, nginx_frontend, relay into separate Ansible roles#4

Merged
findias merged 1 commit intomainfrom
feature/singbox-role-refactor
Mar 24, 2026
Merged

feat: extract raven_subscribe, nginx_frontend, relay into separate Ansible roles#4
findias merged 1 commit intomainfrom
feature/singbox-role-refactor

Conversation

@findias
Copy link
Copy Markdown
Contributor

@findias findias commented Mar 24, 2026

Summary

  • New role raven_subscribe — standalone deployment of the subscription server, fully decoupled from xray/sing-box playbooks. Supports per-inbound inbound_hosts/inbound_ports overrides so all VLESS protocols route through media.zirgate.com.
  • New role nginx_frontend — TLS reverse proxy on EU server (media.zirgate.com). Listens on port 8443 (port 443 is reserved by Xray VLESS Reality). Adds nginx stream TCP passthrough on port 8445 → 127.0.0.1:443 for Reality clients.
  • New role relay — nginx reverse proxy on RU VPS (zirgate.com / my.zirgate.com). TCP stream relay on 8444 → EU:8445 routes VLESS Reality through the RU server.
  • xray role: removed raven_subscribe vars and tasks (moved to dedicated role); fixed DNS query strategy UseIP → UseIPv4 to prevent IPv6 network is unreachable errors.
  • sing-box: updated hysteria2 default port 8443 → 8444 (8443 now used by nginx_frontend).
  • raven-subscribe config.j2: added balancer_strategy, balancer_probe_url, balancer_probe_interval fields.
  • .gitignore: added **/*_secrets.yml pattern.

Architecture after this PR

Client → zirgate.com:8444 (RU relay TCP) → media.zirgate.com:8445 (EU nginx stream) → 127.0.0.1:443 (Xray Reality)
Client → media.zirgate.com:443 (direct HTTPS) → nginx_frontend:8443 → raven-subscribe:8080
Client → media.zirgate.com:2053 (XHTTP) → Xray XHTTP inbound

Test plan

  • Deploy role_nginx_frontend.yml to EU server — nginx listens on 8443, stream proxy on 8445
  • Deploy role_relay.yml to RU server — TCP relay 8444 → EU:8445
  • Deploy role_raven_subscribe.yml — subscription returns media.zirgate.com addresses
  • Verify subscription: curl https://my.zirgate.com/sub/<token> shows address: media.zirgate.com, ports 8445 (Reality) and 2053 (XHTTP)
  • Run ./tests/run.sh to validate Ansible render + xray config

- New role: raven_subscribe — standalone subscription server deployment,
  decoupled from xray/sing-box playbooks. Supports per-inbound host/port
  overrides (inbound_hosts, inbound_ports) for unified media.zirgate.com routing.
- New role: nginx_frontend — TLS proxy on EU server (media.zirgate.com),
  listens on 8443 (not 443, reserved by Xray Reality). Adds nginx stream
  TCP relay on port 8445 → 127.0.0.1:443 for VLESS Reality passthrough.
- New role: relay — nginx reverse proxy on RU VPS (zirgate.com/my.zirgate.com),
  TCP stream relay on 8444 → EU:8445 for VLESS Reality via RU server.
- xray role: remove raven_subscribe vars/tasks (moved to raven_subscribe role),
  fix DNS query strategy UseIP → UseIPv4 to avoid IPv6 unreachable errors.
- sing-box: update hysteria2 default port 8443 → 8444 (8443 now used by nginx_frontend).
- raven-subscribe config.j2: add balancer_strategy/probe_url/probe_interval fields.
- .gitignore: add **/*_secrets.yml pattern for raven_subscribe secrets files.
@findias findias force-pushed the feature/singbox-role-refactor branch from 3d4a484 to f9e0710 Compare March 24, 2026 08:22
@findias findias merged commit d2608f2 into main Mar 24, 2026
1 check passed
findias added a commit that referenced this pull request Apr 4, 2026
feat: extract raven_subscribe, nginx_frontend, relay into separate Ansible roles
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant