{"id":20703131,"url":"https://github.com/sfttech/wirespider","last_synced_at":"2025-04-23T00:16:43.313Z","repository":{"id":39301456,"uuid":"440331567","full_name":"SFTtech/wirespider","owner":"SFTtech","description":"Wireguard Mesh VPN - automatic tunnel and authorization management 🕸","archived":false,"fork":false,"pushed_at":"2025-04-21T10:46:58.000Z","size":10606,"stargazers_count":37,"open_issues_count":5,"forks_count":4,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-23T00:16:34.807Z","etag":null,"topics":["mesh","vpn","wireguard"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SFTtech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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},"funding":{"liberapay":"SFTtech"}},"created_at":"2021-12-20T23:16:01.000Z","updated_at":"2025-04-21T10:45:56.000Z","dependencies_parsed_at":"2023-02-17T03:01:07.127Z","dependency_job_id":"e9bbca6a-682e-4cd9-ad73-66308ec9be58","html_url":"https://github.com/SFTtech/wirespider","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fwirespider","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fwirespider/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fwirespider/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fwirespider/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SFTtech","download_url":"https://codeload.github.com/SFTtech/wirespider/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250343960,"owners_count":21415042,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["mesh","vpn","wireguard"],"created_at":"2024-11-17T01:06:24.544Z","updated_at":"2025-04-23T00:16:43.294Z","avatar_url":"https://github.com/SFTtech.png","language":"Rust","funding_links":["https://liberapay.com/SFTtech"],"categories":[],"sub_categories":[],"readme":"# Wirespider\n\nWirespider consists of a server and a client. The server is responsible of pushing the wireguard configuration and routes to the clients and helping with NAT hole punching. The client listens for configuration changes, and modifies the wireguard configuration and routes accordingly.\n\n## Features\n* Distribute Wireguard tunnel configuration\n* Distribute routes to all clients\n* Create VXLAN overlay network for layer 2 networking\n* RFC 5780 NAT detection\n* NAT hole punching or relay over other nodes when not possible\n* detect other nodes in the same network\n\n## Installation\n\nAn APT repository for wirespider is avaiable, to add it run the following commands:\n```\nwget -O- https://sfttech.github.io/wirespider/public.key | gpg --dearmor | sudo dd of=/usr/share/keyrings/wirespider-archive-keyring.gpg\necho \"deb [arch=amd64 signed-by=/usr/share/keyrings/wirespider-archive-keyring.gpg] https://sfttech.github.io/wirespider/repo/ stable main\" | sudo tee /etc/apt/sources.list.d/wirespider.list\n```\n\nThere is an official wirespider AUR package as well (wirespider), and an ebuild for gentoo in the sft overlay.\n\nOtherwise the deb and rpm can be downloaded from the releases page.\n\n\n### Manual installation\n```\ncargo build --release\nsudo cp target/release/wirespider /usr/bin\nsudo mkdir -p /etc/wirespider/keys\nsudo cp systemd/system/wirespider-client@.service /etc/systemd/system\n# rename file to any other device name here\nsudo cp systemd/wirespider/wg0 /etc/wirespider/wg0-example\n# create a wirespider system user for the server\nsudo adduser --system --group --home /var/lib/wirespider wirespider\n```\n\n## How to run the wirespider server\nThis must be run as root or just prefix all commands (even those starting with sudo) with sudo\n```\n# create runtime directory\nmkdir -p /var/lib/wirespider/\nchown -R wirespider:wirespider /var/lib/wirespider/\nsudo -u wirespider wirespider database migrate -d sqlite:/var/lib/wirespider/config.sqlite\n# create a ip network for the clients\nsudo -u wirespider wirespider database create-network -d sqlite:/var/lib/wirespider/config.sqlite 10.1.2.0/24\n# add admin with ip in this new network\n# the command will return a token you can use with wirespider start-client and wirespider send-command\nsudo -u wirespider wirespider database create-admin -d sqlite:/var/lib/wirespider/config.sqlite admin 10.1.2.1/24\n\n\n# enable auto start and start the server\nsystemctl enable --now wirespider-server.service\n```\n\nThe admin can now use the `wirespider send-command` commands to create other peers and routes\n\n\n## Running wirespider client\n\nTo run the client:\n```\nsudo cp /etc/wirespider/wg0-example /etc/wirespider/wg0\n# edit the file to fit your setup (use correct device name)\nsudo nano /etc/wirespider/wg0\n# enable auto start and start the tunnel\n# use the same device name\nsudo systemctl enable --now wirespider-client@wg0.service\n```\n\n### Contact\n\nIf you have questions, suggestions, encounter any problem,\nplease join our Matrix channel and ask!\n\n```\n#sfttech:matrix.org\n```\n\nOf course, create [issues](https://github.com/SFTtech/wirespider/issues)\nand [pull requests](https://github.com/SFTtech/wirespider/pulls).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsfttech%2Fwirespider","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsfttech%2Fwirespider","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsfttech%2Fwirespider/lists"}