Instalacion
Paso 1 - Actualizar el servidor
sudo apt update
sudo apt upgrade -y
Paso 2 - Instalar dependencias
sudo apt install -y curl wget gnupg unzip jq
Paso 3 - Crear un usuario para Headscale
No me gusta ejecutar servicios como root.
sudo useradd \
--system \
--create-home \
--home-dir /var/lib/headscale \
--shell /usr/sbin/nologin \
headscale
Paso 4 - Crear directorios
sudo mkdir -p /etc/headscale
sudo mkdir -p /var/lib/headscale
sudo mkdir -p /var/run/headscale
sudo chown -R headscale:headscale /etc/headscale
sudo chown -R headscale:headscale /var/lib/headscale
sudo chown -R headscale:headscale /var/run/headscale
Paso 5 - Crear usuario en PostgreSQL
Entramos a PostgreSQL:
sudo -u postgres psql
Creamos el usuario:
CREATE USER headscale WITH PASSWORD 'ElegiUnaPasswordSegura';
Paso 6 - Crear la base
CREATE DATABASE headscale
OWNER headscale
ENCODING 'UTF8'
TEMPLATE template0;
Paso 7 - Conectarse
\c headscale
Paso 8 - Probar el acceso
Desde el servidor:
psql \
-h 127.0.0.1 \
-p 7543 \
-U headscale \
-d headscale
Debería pedir la contraseña y entrar sin problemas.
Paso 9 - Descargar Headscale
Primero creemos un directorio temporal.
mkdir -p ~/downloads
cd ~/downloads
Descargar la última versión
En lugar de usar apt, descargaremos el binario oficial desde GitHub.
Primero obtenemos la última versión:
curl -s https://api.github.com/repos/juanfont/headscale/releases/latest | jq -r .tag_name
Debería devolver algo similar a:
v0.xx.x
Luego descargamos el binario correspondiente a Linux AMD64.
Por ejemplo (reemplazando la versión):
wget https://github.com/juanfont/headscale/releases/download/v0.xx.x/headscale_0.xx.x_linux_amd64
Verificar el binario
chmod +x headscale_*
./headscale_* version
Deberías ver algo como:
Headscale v0.xx.x
Paso 10 - Instalar HeadScale
sudo mv headscale_* /usr/local/bin/headscale
sudo chmod 755 /usr/local/bin/headscale
Comprobar:
headscale version
Paso 11. Descargar el archivo de ejemplo de la versión exacta
cd /etc/headscale
sudo wget -O config.yaml \
https://raw.githubusercontent.com/juanfont/headscale/v0.29.3/config-example.yaml
Así nos aseguramos de que todos los parámetros coincidan exactamente con la versión 0.29.3.
2. Hacer un backup
sudo cp config.yaml config.yaml.original
3. Editarlo
sudo nano /etc/headscale/config.yaml
Y solo modificaremos lo necesario.
Valores que vamos a cambiar
URL pública
server_url: https://main.zyronet.us
Escuchar solo en localhost
listen_addr: 127.0.0.1:8080
Métricas
metrics_listen_addr: 127.0.0.1:9090
gRPC
grpc_listen_addr: 127.0.0.1:50443
Socket Unix
unix_socket: /var/run/headscale/headscale.sock
PostgreSQL
Buscamos:
database:
y reemplazamos la sección por:
database:
type: postgres
postgres:
host: 127.0.0.1
port: 7543
name: headscale
user: headscale
pass: TU_PASSWORD
ssl: disable
DNS
Más adelante configuraremos MagicDNS correctamente.
Por ahora podemos dejar:
dns:
magic_dns: false