diff --git a/README.md b/README.md index db67ebe..0cb8b5e 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,57 @@ It will install WireGuard (kernel module and tools) on the server, configure it, Run the script again to add or remove clients! +## Headless install + +It's also possible to run the script headless, e.g. without waiting for user input, in an automated manner. + +Example usage: + +```bash +AUTO_INSTALL=y ./wireguard-install.sh + +# or + +export AUTO_INSTALL=y +./wireguard-install.sh +``` + +A default set of variables will then be set, by passing the need for user input. + +If you want to customise your installation, you can export them or specify them on the same line, as shown above. + +- `APPROVE_INSTALL=y` +- `APPROVE_IP=y` +- `APPROVE_NIC=y` +- `SERVER_WG_NIC=wg0` +- `SERVER_WG_IPV4=10.66.66.1` +- `SERVER_WG_IPV6=fd42:42:42::1` +- `SERVER_PORT=51820` +- `CLIENT_DNS_1=176.103.130.130` +- `CLIENT_DNS_2=176.103.130.131` +- `CLIENT_NAME=client` +- `CLIENT_DOT_IPV4=2` +- `CLIENT_DOT_IPV6=2` + +If the server is behind NAT, you can specify its endpoint with the `SERVER_PUB_IP` variable. If the endpoint is the public IP address which it is behind, you can use `SERVER_PUB_IP=$(curl ifconfig.co)` (the script will default to this). The endpoint can be an IP or a domain. + +Other variables can be set depending on your choice (`SERVER_NIC`). You can search for them in the `installQuestions()` function of the script. + +## Headless User Addition + +It's also possible to automate the addition of a new user. Here, the key is to provide the (string) value of the `MENU_OPTION` variable along with the remaining mandatory variables before invoking the script. + +The following Bash script adds a new user `foo` to an existing WireGuard configuration + +```bash +#!/bin/bash +export MENU_OPTION="1" +export CLIENT_NAME="foo" +export CLIENT_DOT_IPV4="3" +export CLIENT_DOT_IPV6="3" +./wireguard-install.sh +``` + ## Providers I recommend these cheap cloud providers for your VPN server: