How to Install Headscale on Ubuntu Server Latest
Headscale is a self-hosted implementation of the Tailscale distributed private network. It helps you create a secure and private VPN network that allows you to connect to your devices, services, and applications securely. In this tutorial, we will show you how to install Headscale on Ubuntu Server Latest.
Prerequisites
Before you start, make sure you have the following prerequisites:
- A server running Ubuntu Server Latest
- A user account with sudo privileges
- A domain name pointed to your server's IP address
Step 1: Update the Server
The first step is to update your server to make sure you have the latest security patches and software updates.
sudo apt update
sudo apt upgrade
Step 2: Install Dependencies
Headscale requires several dependencies to build and run correctly. Use the following command to install them:
sudo apt-get install build-essential iproute2 wireguard-tools wireguard-dkms sqlite libsqlite3-dev iptables go git
Step 3: Install Headscale
To install Headscale, you need to clone the source code from the GitHub repository and build it with the following commands:
cd ~
git clone https://github.com/juanfont/headscale.git
cd headscale
make
The above commands will clone the repository, move to the cloned directory, and build the application using the make command.
Step 4: Configure Headscale
To configure Headscale, you need to create a configuration file. Copy the sample configuration file with the following command:
cd ~
cp headscale/cmd/headscale/headscale.conf.example headscale.conf
Next, open the configuration file using any text editor:
nano headscale.conf
Update the values in the [headscale] section with your own domain name, API key, and the email address associated with your Tailscale account.
[headscale]
dirserverurl = https://dir.tailscale.com
hostname = mydomain.com
apikey = myapikey
adminauthkey = ABCDEF123456
email_domain = mydomain.com
In the [web] section, change the listen line to the IP address and port 0.0.0.0:443:
[web]
listen = 0.0.0.0:443
templatesdir = /go/src/headscale/cmd/headscale/templates/
Save the configuration file using Ctrl+X and Y.
Step 5: Create a Systemd Service
To run Headscale as a background service, create a Systemd service file by running the following command:
sudo nano /etc/systemd/system/headscale.service
Paste the following contents into the file:
[Unit]
Description=headscale
After=network.target
[Service]
User=<username>
Group=<username>
ExecStart=/root/headscale/bin/headscale -config /root/headscale.conf
Restart=always
[Install]
WantedBy=multi-user.target
Replace <username> with your actual username. Save the changes and exit the editor.
Now reload the Systemd daemon and start the Headscale service:
sudo systemctl daemon-reload
sudo systemctl start headscale
sudo systemctl enable headscale
Step 6: Configure Firewall
You need to open the ports that Headscale uses in your firewall. Add the following firewall rules:
sudo ufw allow 443/tcp
sudo ufw allow 41641/udp
sudo ufw reload
Step 7: Verify Installation
You can now verify that Headscale is running correctly by accessing its web interface using your domain name:
https://mydomain.com
You should see the Headscale login page. Use your Tailscale account credentials to log in, and you’ll have access to your private network.
Conclusion
That's it. You’ve successfully installed and configured Headscale on Ubuntu Server Latest. You can now create a private network and access your devices, services, and applications securely from anywhere.