Vamos a ver juntos cómo crear fácilmente su propio servidor VPN privado con WireGuard funcionando en un contenedor Docker. Le guiaré paso a paso a través de la instalación, la configuración y la incorporación de los clientes a su servidor VPN.

Antes de poder crear e iniciar contenedores, debemos instalar Docker y Docker-compose. Si ya ha instalado docker y docker-compose en su servidor, puede omitir estos pasos.
Instalación de Docker
curl -fsSL https://get.docker.com/ | sh
Adición de un usuario al grupo de docker para ejecutar el comando docker
sudo usermod -aG docker username
Instalación de docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
Adición de los permisos de ejecución sobre docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Crear un archivo docker-compose
A continuación, debemos crear un archivo docker-compose para gestionar fácilmente nuestro contenedor WireGuard. Para ello utilizo una imagen y una plantilla de docker del sitio web https://linuxserver.io. La gente de linuxserver.io son entusiastas y mantienen muchas imágenes para la comunidad de docker.
Ante todo, vamos a crear una nueva carpeta en el directorio /opt llamada /opt/wireguard-server y a crear un nuevo archivo docker-compose.yaml en ese directorio. También debe cambiar la propiedad de esa carpeta a su usuario de Linux.
sudo mkdir /opt/wireguard-server
nano /opt/wireguard-server/docker-compose.yaml
En ese archivo vamos a utilizar la plantilla siguiente; consulte la documentación de linuxserver/wireguard: https://hub.docker.com/r/linuxserver/wireguard
version: "2.1"
services:
wireguard:
image: linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
- SERVEURURL=wireguard.domain.com #optional
- SERVERPORT=51820 #optional
- PEERS=1 #optional
- PEERDNS=auto #optional
- INTERNAL_SUBNET=10.10.10.0 #optional
volumes:
- /opt/wireguard-server/config:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
Sustituya SERVEURURL por un nombre de dominio o por la dirección IP pública de su servidor WireGuard, ya que sus clientes tendrán que conectarse desde fuera de su red local. También puede definirlo como auto: el contenedor docker determinará automáticamente su dirección IP pública y la utilizará en la configuración del cliente.
Inicie su servidor WireGuard
Ya puede iniciar su contenedor WireGuard con el comando siguiente, y los clientes deberían poder conectarse.
cd /opt/wireguard-server
docker-compose up -d
Distribuya los archivos de configuración a los clientes
Lo más práctico para sus equipos cliente es instalar la aplicación WireGuard directamente en el sistema. Si desea saber cómo hacerlo, también puede consultar nuestro artículo.
Podrá encontrar los archivos .cnf necesarios para la conexión desde un cliente WireGuard en la carpeta /opt/wireguard-server/config. Cada peer.cnf se guarda según su número en una carpeta llamada peer1, peer2, peer3, etc.
cd /opt/wireguard-server/config/peer1
Añadir clientes adicionales
Si desea añadir clientes adicionales, basta con aumentar el parámetro PEERS en el archivo docker-compose.yaml. Tras modificar ese valor, debe reiniciar su contenedor Docker con el parámetro –force-recreate.
docker-compose up -d --force-recreate
Esperamos que le haya gustado. Hasta muy pronto en Awoui.
