{"id":48596242,"url":"https://github.com/codedpro/dotachi","last_synced_at":"2026-04-08T21:02:14.310Z","repository":{"id":348693620,"uuid":"1199406823","full_name":"codedpro/dotachi","owner":"codedpro","description":"Self-hosted LAN Gaming Network Platform - Create virtual LAN rooms for multiplayer gaming over the internet","archived":false,"fork":false,"pushed_at":"2026-04-02T19:25:54.000Z","size":158,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T00:54:16.564Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codedpro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-02T10:15:22.000Z","updated_at":"2026-04-02T19:25:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/codedpro/dotachi","commit_stats":null,"previous_names":["codedpro/dotachi"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/codedpro/dotachi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codedpro%2Fdotachi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codedpro%2Fdotachi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codedpro%2Fdotachi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codedpro%2Fdotachi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codedpro","download_url":"https://codeload.github.com/codedpro/dotachi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codedpro%2Fdotachi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31573788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-08T21:01:21.910Z","updated_at":"2026-04-08T21:02:14.268Z","avatar_url":"https://github.com/codedpro.png","language":"Go","readme":"# Dotachi - LAN Gaming Network Platform\n\nA self-hosted platform that lets players create and join virtual LAN rooms for multiplayer gaming. Built for regions with restrictive or unstable networks, Dotachi uses SoftEther VPN to create rock-solid L2 bridges that make LAN games work seamlessly over the internet.\n\n## Architecture\n\n```\n                    +------------------+\n                    |   Control Plane  |\n                    |   (REST API)     |\n                    +--------+---------+\n                             |\n              +--------------+--------------+\n              |              |              |\n        +-----+-----+  +----+----+   +-----+-----+\n        | Node Agent |  |  Node   |   |   Node    |\n        | (VPS #1)   |  | (VPS #2)|   |  (VPS #3) |\n        | SoftEther  |  | SoftEther|   | SoftEther |\n        +-----+------+  +----+----+   +-----+-----+\n              |              |              |\n         Players         Players        Players\n         connect         connect        connect\n```\n\n### Components\n\n| Component | Description | Tech |\n|---|---|---|\n| [Control Plane](control-plane/) | Central API server - manages users, rooms, nodes, billing | Go + PostgreSQL + Chi |\n| [Node Agent](node-agent/) | Runs on each VPN server alongside SoftEther | Go (single binary, ~9 MB) |\n| [Client](client/) | Windows desktop app for players | Go (Wails) + React |\n| [Admin Panel](admin-panel/) | Web dashboard for platform operators | Vanilla HTML/CSS/JS |\n| [CLI](cli/) | Command-line admin tool | Go + Cobra |\n| [Deploy](deploy/) | One-command node setup script | Bash + systemd |\n\n## Key Features\n\n- **Virtual LAN rooms** with isolated L2 networks per room\n- **Multi-TCP VPN tunneling** (8 simultaneous TCP streams on port 443) for connection resilience\n- **Auto-reconnect** with exponential backoff - players never notice brief network hiccups\n- **Shard-based billing** - users purchase shards to buy private rooms or join shared LAN\n- **Room management** - owners can kick, ban, set admins, transfer ownership\n- **Node heartbeat** - control plane monitors all VPN nodes, auto-recovers after reboots\n- **Split tunneling** - only game traffic routes through VPN, internet stays on normal connection\n- **Device fingerprinting** - one account per device enforcement\n\n## Quick Start\n\n### Development (Docker)\n\n```bash\ndocker compose up -d\n```\n\nThis starts PostgreSQL + Control Plane + Node Agent + Admin Panel.\n\n- Control Plane API: http://localhost:8080\n- Admin Panel: http://localhost:8081\n- Default admin: phone `09000000000`, password `admin123`\n\n### Production Node Deployment\n\n```bash\n# On a fresh Ubuntu VPS:\nexport API_SECRET=\"your-secret-here\"\nexport CONTROL_PLANE_URL=\"http://your-control-plane:8080\"\nbash deploy/setup-node.sh\n```\n\n## Business Model\n\n- **Private Rooms**: Users purchase rooms with shards (virtual currency). Price = slots x 1,000 shards/day. Discounts for longer durations.\n- **Shared LAN**: Public rooms charged at 2,000 shards/hour while connected.\n- **Shard Purchase**: Admin manages shard balances via API or admin panel.\n\n| Duration | Discount |\n|---|---|\n| 7 days (minimum) | No discount |\n| 1 month | 10% off |\n| 3 months | 25% off |\n| 1 year | 40% off |\n\n## Supported Games\n\nDotachi works with any game that supports LAN multiplayer:\n\n- Dota 2\n- Counter-Strike 2\n- Warcraft III\n- Age of Empires II\n- Minecraft\n- Valorant (Custom Games)\n- Any game with LAN/local network support\n\n## Tech Stack\n\n- **Language**: Go (all backend + client backend)\n- **Frontend**: React (client UI), Vanilla JS (admin panel)\n- **Database**: PostgreSQL\n- **VPN**: SoftEther VPN Server\n- **Desktop**: Wails v2 (Go + Web frontend)\n- **Deployment**: Docker, systemd\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodedpro%2Fdotachi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodedpro%2Fdotachi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodedpro%2Fdotachi/lists"}