By Bobby Iliev
Subspace is a simple opensource WireGuard VPN server graphical user interface(GUI). You can install subspace directly on your server which would allow you to track and create client configurations.
Subspace is an open-source, self-hosted front end GUI (graphical user interface) for the Wireguard VPN system on the server-side. Once set up it provides a browser-accessible system to track clients and create client configurations for connecting to the server.
Some of the features of Subspace are:
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Accepted Answer
In order to complete this guide, you will first need to perform the following tasks on your Ubuntu 18.04 Droplet:
Ubuntu 18.04 Droplet
Create a sudo user and enable ufw. To set this up, you can follow our Initial Server Setup with Ubuntu 18.04 guide.
Docker installed and up and running, you can follow the steps on how that here: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-18-04
First, update your existing list of packages:
- sudo apt update
Add the WireGuard PPA to the system to configure access to the project’s packages:
- sudo add-apt-repository -y ppa:wireguard/wireguard
Once the PPA has been added, update the local package index to pull down information about the newly available packages and then install the WireGuard kernel module and userland components:
- sudo apt update
- sudo apt install wireguard-dkms wireguard-tools
Remove dnsmasq
because it will run inside the container:
- sudo apt remove -y dnsmasq
Disable systemd-resolved if it blocks port 53.
- sudo systemctl disable systemd-resolved
- sudo systemctl stop systemd-resolved
After that setup CloudFlare as your DNS server:
echo nameserver 1.1.1.1 | sudo tee /etc/resolv.conf
In order to load the required WireGuard modules you need to run the following commands:
- sudo modprobe wireguard
- sudo modprobe iptable_nat
- sudo modprobe ip6table_nat
Once the modules have been enabled you need to run the following commands in order to enable the modules when the server gets rebooted:
- echo "wireguard" | sudo tee /etc/modules-load.d/wireguard.conf
- echo "iptable_nat" | sudo tee /etc/modules-load.d/iptable_nat.conf
- echo "ip6table_nat" | sudo tee /etc/modules-load.d/ip6table_nat.conf
Finally check if systemd-modules-load service is active:
sudo systemctl status systemd-modules-load.service
In order to get WireGuired to work as expected, we need to make sure that package forwarding is enabled. Packet forwarding means allowing packets to go from one network to another.
To do that you need to run the following commands:
- sudo sysctl -w net.ipv4.ip_forward=1
- sudo sysctl -w net.ipv6.conf.all.forwarding=1
In order to use Let’s Encrypt and secure our Subspace instance, we need to make sure that we have a domain name that points to our Droplet’s IP address.
To do that make sure to create a DNS A record for your domain or subdomain name and point it to your server’s IP address.
Example:
subspace.your_domain.com A 172.16.1.1
As subspace runs a TLS (“SSL”) https server on port 443/tcp and a standard web server on port 80/tcp, we need to make sure that the two ports are open for incoming TCP traffic via our firewall. To do that run the following commands
- sudo ufw allow 80
- sudo ufw allow 443
Also, as port 51820/udp is the default WireGurad port, we need to make sure that it is open as well:
- sudo ufw allow 51820/udp
Next, we need to start the subspace Docker container.
Your data directory should be bind-mounted as /data
inside the container using the --volume
flag.
- sudo mkdir /data
After that, we need to create our container. Make sure to change the --env SUBSPACE_HTTP_HOST
to your domain name which is pointing to your Droplet.
docker create \
--name subspace \
--restart always \
--network host \
--cap-add NET_ADMIN \
--volume /usr/bin/wg:/usr/bin/wg \
--volume /data:/data \
--volume /lib/x86_64-linux-gnu/libc.so.6:/lib/x86_64-linux-gnu/libc.so.6:ro \
--volume /lib64/ld-linux-x86-64.so.2:/lib64/ld-linux-x86-64.so.2:ro \
--env SUBSPACE_HTTP_HOST="subspace.example.com" \
--env SUBSPACE_NAMESERVER="1.1.1.1" \
subspacecommunity/subspace:latest
Then start your container:
- sudo docker start subspace
You can also check the logs of your container to make sure that it starts as expected:
- sudo docker logs subspace
Then visit your domain name via your browser and you will be able to see your subspace installation!
The subspacecommunity/subspace
project is community maintained and is a fork of the simple WireGuard VPN server GUI. If you notice any problems feel free to submit an issue or a pull request!
Hope that this helps! Regards, Bobby
403 urn:acme:error:unauthorized: Account creation on ACMEv1 is disabled. Please upgrade your ACME client to a version that supports ACMEv2 / RFC 8555. See https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1/88430 for details.
someone forgot to update subspace ACME client…
That’s what I used but I keep getting a “ERR_SSL_PROTOCOL_ERROR” or
"*Secure Connection Failed
An error occurred during a connection to subdomain.example.com. Peer reports it experienced an internal error.
Error code: SSL_ERROR_INTERNAL_ERROR_ALERT
The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
Please contact the website owners to inform them of this problem.*"
Depending on browser used.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.