Источники

Установка средствами Docker-compose

Создание отдельного файла под пароли:

1
nano wgeasy_pass.env

В этот файл прописываем всю приватную информацию:

1
2
3
WG_HOST=<your_host>
PASSWORD="<your_password>"
WG_ALLOWED_IPS="0.0.0.0/0, ::/0"

Имя файла указываем в параметре env_file:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
---
version: "3"
services:

  wg-easy:
    image: weejewel/wg-easy:latest
    container_name: wg-easy
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - TZ=Europe/Moscow
      - WG_PORT=51829
      - WG_DEFAULT_ADDRESS=10.0.3.x
      - WG_DEFAULT_DNS=10.5.0.2, 8.8.8.8
    env_file:
      - wgeasy_pass.env
    volumes:
      - /dconf/wireguard/admin/.wg-easy:/etc/wireguard
    ports:
      - 51829:51820/udp
      - 51510:51821/tcp
    networks:
      network:
        ipv4_address: 10.5.0.3
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv4.ip_forward=1
    restart: unless-stopped

networks:
  network:
    driver: bridge
    ipam:
      config:
        - subnet: 10.5.0.0/16
          gateway: 10.5.0.1

В этом конфиге прописана отдельная сеть для этого контейнера, и указан фиксированный ip для него. Это удобно когда нужно связать 2 или более сервисов. В моем случае в этом же docker compose прописан и AdGuardHome.

1
2
docker compose pull
docker compose up -d

CLI Установка

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
docker run -d \
  --name="wg-easy" \
  -p 51823:51820/udp \
  -p 51515:51821/tcp \
  -v /dconf/wireguard/.wg-easy:/etc/wireguard \
  -e WG_HOST=dotgs.ru \
  -e WG_PORT="51823" \
  -e PASSWORD="<your_password>" \
  -e WG_DEFAULT_ADDRESS="10.0.10.x" \
  -e WG_DEFAULT_DNS="8.8.8.8" \
  -e WG_ALLOWED_IPS="0.0.0.0/0, ::/0" \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --sysctl="net.ipv4.ip_forward=1" \
  -e TZ=Europe/Moscow \
  --restart unless-stopped \
weejewel/wg-easy:latest

Удаление

1
2
3
docker stop wg-easy ;\
docker rm wg-easy ;\
docker rmi weejewel/wg-easy

Настройка

Закрываем веб морду WireGuard Easy для внешней сети. Если это сделать, то зайти на нее можно будет только подключившись к VPN или с самого сервера.

1
iptables -I DOCKER-USER -i eth0 -p tcp --dport 51821 -j DROP

eth0 – внешний интерфейс по умолчанию. Но он может быть иным.