WireGuard configuration ======================= [![Jekyll](https://github.com/egor-tensin/wireguard-config/actions/workflows/jekyll.yml/badge.svg)](https://github.com/egor-tensin/wireguard-config/actions/workflows/jekyll.yml) Generate WireGuard configuration files. Hosted at https://egort.name/wireguard-config/. Easily generate WireGuard client & server configuration for the following connection managers: * [wg-quick], * [systemd-networkd], * [NetworkManager], * `ip` and [wg]. [wg-quick]: https://man7.org/linux/man-pages/man8/wg-quick.8.html [systemd-networkd]: https://www.freedesktop.org/software/systemd/man/systemd.network.html [NetworkManager]: https://wiki.gnome.org/Projects/NetworkManager [wg]: https://man7.org/linux/man-pages/man8/wg.8.html Take a look at an [example configuration] to learn more. [example configuration]: https://egort.name/wireguard-config/?server_public=iNqGDQ2tltbSN4s3Fpb%2F7PRc2OSwR3%2FbPjOrf8V%2FSmA%3D&server_endpoint=123.123.123.123%3A123&preshared=Moshdr8RNfYUWG%2F0MVOlglzlze3beATD6YumDwCZf5E%3D&client_public=hvfo%2FMgizTRbrktfx3k2Q0Ib0mx0P2N6LRZEYWqkpXc%3D&client_private=qKgmDq8HWaU432qJhEa2Q6pE52P55xBHNOgzB0roP3A%3D&client_ipv4=192.168.123.123%2F24&client_ipv6=fd01%3A2345%3A6789%3A%3A192.168.123.123%2F48 Description ----------- WireGuard is incredibly flexible. For one thing, there's no built-in notion of a "server" and its "clients". However, I believe that there being a central server and a number of clients connected to it is a common use-case. Adding a client might not be easy, since their configuration is typically distributed in a file adhering to a WireGuard-specific format; these files can be tedious to write by hand. This project tries to make this task easier. Security -------- This is a static website, so no server-side processing is happening. You can easily verify that your browser doesn't make any requests to any servers using your browser's debugging tools. Development ----------- This is a static website, generated using [Jekyll]. Make sure you have Ruby and [Bundler] set up. [GNU Make] is used for shortcuts. * Install dependencies by running `make deps`. * Build the website by running `make build`. * Launch a local web server by running `make serve`. Access the website at http://localhost:4000/wireguard-config/. [jekyll-theme] is used as a remote Jekyll theme. [Jekyll]: https://jekyllrb.com/ [Bundler]: https://bundler.io/ [GNU Make]: https://www.gnu.org/software/make/ [jekyll-theme]: https://github.com/egor-tensin/jekyll-theme ### Access via file:// Jekyll doesn't provide native support for generating a static website which can be browsed without running a web server. One workaround is to `wget` the website (use `make wget`). The truly static version will be downloaded to the .wget/ directory. ### Node.js dependencies For IP address parsing and validation, [ipaddr.js] was used originally. It is pre-built for browser use, which is nice; however, it's [buggy]. It was replaced by [ip-address], which is not browser-ready; instead, [Browserify] is used to turn it into a suitable .js file (`make npm && make bundle`). This whole situation sucks, but I really want to keep this website static. TODO: find other options or wait until ipaddr.js fixes the bug. [ipaddr.js]: https://github.com/whitequark/ipaddr.js [buggy]: https://github.com/whitequark/ipaddr.js/issues/160 [ip-address]: https://github.com/beaugunderson/ip-address [Browserify]: https://browserify.org/ License ------- Distributed under the MIT License. See [LICENSE.txt] for details. [LICENSE.txt]: LICENSE.txt