aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--index.html105
1 files changed, 105 insertions, 0 deletions
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..832fb1b
--- /dev/null
+++ b/index.html
@@ -0,0 +1,105 @@
+---
+title: Main page
+layout: plain
+navbar:
+ link: Main
+ icon: home
+
+params:
+ - id: server
+ desc: Server
+ items:
+ - id: public_key
+ name: Public key
+ placeholder: "Server's public key"
+ help: |
+ Query using <code>wg show wg0 public-key</code>.
+ - id: endpoint
+ name: Endpoint
+ placeholder: "Server's endpoint in the HOST:PORT format"
+ help: |
+ Server's public IP address or a hostname, accessible from the client.
+ Query the current port using <code>wg show wg0 listen-port</code>.
+ - id: preshared_key
+ name: Preshared key
+ placeholder: Preshared key (shared between server and client)
+ help: |
+ Generate using <code>wg genpsk</code>.
+ - id: client
+ desc: Client
+ items:
+ - id: public_key
+ name: Public key
+ placeholder: "Client's public key"
+ help: |
+ Generate both the private and the public keys using <code>wg genkey | tee private.key | wg pubkey > public.key</code>.
+ - id: private_key
+ name: Private key
+ placeholder: "Client's private key"
+ help: |
+ Unless generated in one go with the public key, generate one using <code>wg genkey</code>.
+ - id: ipv4
+ name: IPv4
+ placeholder: IPv4 address and netmask, like 192.168.123.5/24
+ help: |
+ IPv4 address to assign to the client and its netmask in the CIDR format.
+ - id: ipv6
+ name: IPv6
+ placeholder: IPv6 address and netmask, like fd01:2345:6789::5/48
+ help: |
+ IPv6 address to assign to the client and its netmask in the CIDR format.
+---
+<h1>WireGuard configuration</h1>
+
+<div class="row">
+ <div class="col-md-8">
+ <p class="text-muted">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 page tries to make this task easier.</p>
+ <p class="text-muted">This page assumes that you have a WireGuard server
+configured on interface <code>wg0</code>.
+You can then generate the new client's keys, feed them to this page and it will
+show the configuration that can be easily consumed by the new client.</p>
+ </div>
+</div>
+
+<form class="form-horizontal">
+ <div class="row">
+{% for grp in page.params %}
+ <div class="col-md-6">
+ <div class="form-group">
+ <div class="row">
+ <div class="col-sm-offset-3 col-sm-9">
+ <h2 class="text-center h3" style="margin-bottom: 0;">{{ grp.desc }}</h2>
+ </div>
+ </div>
+ </div>
+ {% for param in grp.items %}
+ <div class="form-group">
+ <div class="row">
+ <label for="param_{{ grp.id }}_{{ param.id }}" class="col-sm-3 control-label">{{ param.name }}</label>
+ <div class="col-sm-9">
+ <input type="text" class="form-control" id="param_{{ grp.id }}_{{ param.id }}" placeholder="{{ param.placeholder }}" aria-describedby="param_{{ grp.id }}_{{ param.id }}_help">
+ <span id="param_{{ grp.id }}_{{ param.id }}_help" class="help-block" style="margin-bottom: 0;">{{ param.help }}</span>
+ </div>
+ </div>
+ </div>
+ {% endfor %}
+ </div>
+{% endfor %}
+ <div class="col-md-offset-6 col-md-6">
+ <div class="form-group">
+ <div class="row">
+ <div class="col-sm-offset-3 col-sm-9 text-center">
+ <button type="submit" class="btn btn-primary">Generate</button>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</form>