{"id":14008221,"url":"https://github.com/dan-v/dosxvpn","last_synced_at":"2026-01-14T12:02:43.884Z","repository":{"id":67297386,"uuid":"87657732","full_name":"dan-v/dosxvpn","owner":"dan-v","description":"Easily deploy your own personal VPN server with DNS adblocking running on DigitalOcean","archived":true,"fork":false,"pushed_at":"2021-01-30T22:10:49.000Z","size":5917,"stargazers_count":307,"open_issues_count":9,"forks_count":39,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-07-24T04:52:13.227Z","etag":null,"topics":["adblock","adblocking-dns","android","cli","digitalocean","go","golang","iphone","ipsec","osx","personal","strongswan","vpn","webapp"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dan-v.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2017-04-08T19:09:10.000Z","updated_at":"2025-06-23T19:51:37.000Z","dependencies_parsed_at":"2023-03-13T20:28:55.293Z","dependency_job_id":null,"html_url":"https://github.com/dan-v/dosxvpn","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/dan-v/dosxvpn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan-v%2Fdosxvpn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan-v%2Fdosxvpn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan-v%2Fdosxvpn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan-v%2Fdosxvpn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dan-v","download_url":"https://codeload.github.com/dan-v/dosxvpn/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan-v%2Fdosxvpn/sbom","scorecard":{"id":318358,"data":{"date":"2025-08-11","repo":{"name":"github.com/dan-v/dosxvpn","commit":"cdc63f6cdc8679938b9cbd0960c41ebd8c4fec72"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: The Unlicense: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: platypus/platypus:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.0.16 not signed: https://api.github.com/repos/dan-v/dosxvpn/releases/12281873","Warn: release artifact v0.0.15 not signed: https://api.github.com/repos/dan-v/dosxvpn/releases/10441460","Warn: release artifact 0.0.14 not signed: https://api.github.com/repos/dan-v/dosxvpn/releases/9500936","Warn: release artifact 0.0.12 not signed: https://api.github.com/repos/dan-v/dosxvpn/releases/9311303","Warn: release artifact 0.0.11 not signed: https://api.github.com/repos/dan-v/dosxvpn/releases/9138972","Warn: release artifact v0.0.16 does not have provenance: https://api.github.com/repos/dan-v/dosxvpn/releases/12281873","Warn: release artifact v0.0.15 does not have provenance: https://api.github.com/repos/dan-v/dosxvpn/releases/10441460","Warn: release artifact 0.0.14 does not have provenance: https://api.github.com/repos/dan-v/dosxvpn/releases/9500936","Warn: release artifact 0.0.12 does not have provenance: https://api.github.com/repos/dan-v/dosxvpn/releases/9311303","Warn: release artifact 0.0.11 does not have provenance: https://api.github.com/repos/dan-v/dosxvpn/releases/9138972"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T00:48:04.990Z","repository_id":67297386,"created_at":"2025-08-18T00:48:04.990Z","updated_at":"2025-08-18T00:48:04.990Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28419274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:47:48.104Z","status":"ssl_error","status_checked_at":"2026-01-14T10:46:19.031Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["adblock","adblocking-dns","android","cli","digitalocean","go","golang","iphone","ipsec","osx","personal","strongswan","vpn","webapp"],"created_at":"2024-08-10T11:01:26.071Z","updated_at":"2026-01-14T12:02:43.869Z","avatar_url":"https://github.com/dan-v.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\u003cb\u003eThis repository is no longer maintained.\u003c/b\u003e\n\n\u003ch1 align=\"center\"\u003edosxvpn\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eEasily deploy your own personal VPN server with DNS adblocking running on \u003ca href=\"https://digitalocean.com\" target=\"_blank\"\u003eDigitalOcean\u003c/a\u003e.\u003c/h4\u003e\n\n---\n\n![](/static/images/overview.gif?raw=true)\n\n## Key Features\n* Personal IPsec-based VPN ([strongSwan](https://strongswan.org/)).\n* Ad blocking DNS setup by default ([Pi-hole](https://pi-hole.net/)).\n* Generates profiles for sharing VPN with OSX/iPhone and Android.\n* No additional software required for OSX/iPhone - uses native VPN client.\n* Simple Web or CLI installation methods.\n* Automated OS and VPN software updates.\n* Dual stack IPv4/IPv6 enabled.\n\n## Web Installer (OSX) \n1. Download the latest pre-built app from the [GitHub Releases](https://github.com/dan-v/dosxvpn/releases) page. \u003cb\u003eNote: only OSX 10.12+ is supported.\u003c/b\u003e\n2. Open the app and run through the web based installation wizard to setup a new VPN.\n\n## CLI Usage (OSX)\n1. Download the latest pre-built cli from the [GitHub Releases](https://github.com/dan-v/dosxvpn/releases) page. \u003cb\u003eNote: only OSX 10.12+ is supported.\u003c/b\u003e\n2. Make the binary executable\n  ```sh\n  chmod +x dosxvpn\n  ```\n3. Create an API token (https://cloud.digitalocean.com/settings/api/tokens) and export it\n  ```sh\n  export DIGITALOCEAN_ACCESS_TOKEN=\u003ctoken\u003e\n  ```\n4. See help for all options\n  ```sh\n  ./dosxvpn -h\n  ```\n\n### CLI Examples\n* Deploy a new VPN droplet and configure OSX VPN\n  ```sh\n  ./dosxvpn deploy --region sfo2 --auto-configure\n  ```\n* List dosxvpn VPN droplets\n  ```sh\n  ./dosxvpn ls\n  ```\n* Remove dosxvpn VPN droplet and OSX VPN profile\n  ```sh\n  ./dosxvpn rm --name \u003cname\u003e --remove-profile\n  ```\n\n## FAQ\n1. \u003cb\u003eShould I use dosxvpn?\u003c/b\u003e That's up to you. Use at your own risk.\n2. \u003cb\u003eWhy is this better than using public VPN provider XYZ?\u003c/b\u003e While most VPN providers will provide a secure connection to their endpoints, you may not be interested in putting blind faith in their claims that they will not log or track your activity online.\n3. \u003cb\u003eHow is this different than [algo](https://github.com/trailofbits/algo)?\u003c/b\u003e  \n   1) Installation - is simple and has no additional system dependencies.  \n   2) Updates: dosxvpn handles updates of both the OS and VPN. This means any critical security updates or bug fixes will automatically be applied for you.\n4. \u003cb\u003eHow much does this cost?\u003c/b\u003e This launches a 512MB DigitalOcean droplet that costs $5/month currently.\n5. \u003cb\u003eWhat is the bandwidth limit?\u003c/b\u003e The 512MB DigitalOcean droplet has a 1TB bandwidth limit. This does not appear to be strictly enforced.\n6. \u003cb\u003eWhere does dosxvpn store VPN configuration files?\u003c/b\u003e You can find all deployed VPN configuration files in your ~/.dosxvpn directory.\n7. \u003cb\u003eHow do I SSH into the deployed droplet?\u003c/b\u003e Assuming you had public SSH keys uploaded to your DigitalOcean account when the VPN was deployed, all of those keys should be authorized for access. You can SSH using any of those keys: `ssh -i \u003cssh-private-key\u003e core@\u003cvpn-ip\u003e`. If you had no SSH keys uploaded to your DigitalOcean account, then a temporary key was autogenerated for you and you will need to redeploy if you want SSH access. \n8. \u003cb\u003eWhat is the password to login to Pi-hole?\u003c/b\u003e The password is `dosxvpn`.\n9. \u003cb\u003eAre you going to support other VPS providers?\u003c/b\u003e Not right now.\n10. \u003cb\u003eWill this make me completely anonymous?\u003c/b\u003e No, absolutely not. All of your traffic is going through a VPS which could be traced back to your account. You can also be tracked still with [browser fingerprinting](https://panopticlick.eff.org/), etc. Your [IP address may still leak](https://ipleak.net/) due to WebRTC, Flash, etc.\n11. \u003cb\u003eHow do I uninstall this thing on OSX?\u003c/b\u003e You can uninstall through the Web interface, which will also remove the running droplet in your DigitalOcean account. Alternatively go to System Preferences-\u003eNetwork, click on dosxvpn-* and click the '-' button in the bottom left to delete the VPN. Don't forget to also remove the droplet that is deployed in your DigitalOcean account.\n\n# Powered By\n* [strongSwan](https://strongswan.org/) - IPsec-based VPN software\n* [CoreOS](https://coreos.com/) - used for running containers and automatic OS updates capabilities\n* [Pi-hole](https://pi-hole.net/) - used for DNS adblocking\n* [Platypus](http://www.sveinbjorn.org/platypus) - used to build the native OSX app \n* [godo](https://github.com/digitalocean/godo) - DigitalOcean Go API client\n\n# Acknowledgements\n* [trailofbits/algo](https://github.com/trailofbits/algo) - strongSwan configuration is borrowed from this project\n* [jbowens/dochaincore](https://github.com/jbowens/dochaincore) - web deployment code is borrowed from this project\n* [vimagick/strongswan](https://github.com/vimagick/dockerfiles/tree/master/strongswan) - using a forked version of this docker image for VPN server\n\n# Building Source\n1. Install dependency [platypus cli](http://www.sveinbjorn.org/platypus)\n  ```sh\n  brew install platypus\n  ```\n  \n2. Fetch the project with `go get`:\n  ```sh\n  go get github.com/dan-v/dosxvpn\n  cd $GOPATH/src/github.com/dan-v/dosxvpn\n  ```\n  \n2. Run make to build\n  ```sh\n  make\n  ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdan-v%2Fdosxvpn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdan-v%2Fdosxvpn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdan-v%2Fdosxvpn/lists"}