Seguridad

Cree su propia VPN con WireGuard en Docker

Monte su propio servidor VPN con WireGuard en un contenedor Docker: instalación de Docker, archivo docker-compose, arranque y reparto de los archivos de cliente.

· 3 min de lectura · nivel intermedio · en docker-compose 1.29.1

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.

Illustration 1 — Créez votre propre VPN avec WireGuard sur Docker

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
Illustration 2 — Créez votre propre VPN avec WireGuard sur Docker

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.