Как его установить на чистый сервер, может ознакомиться в этой статье.
В этом руководстве мы рассмотрим, как установить WireGuard в Docker контейнере, используя Docker Compose.
Установим Docker.
Но для начала, нужно обновить пакеты ОС. apt update
Установим необходимые пакеты, и добавим новый репозиторий:
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Обновим пакеты с новым репозиторием:
apt update
Теперь установим сам Docker.
apt-get install docker-ce docker-ce-cli containerd.io
Проверим версию:
docker --version
Проверим статус:
systemctl status docker
Если он не запустился, то запускаем:
systemctl start docker
И добавляем в автозапуск.
systemctl enable docker
Установим Docker-Compose
curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Устанавливаем права на запуск.
chmod +x /usr/local/bin/docker-compose
Проверяем как установился Docker-Compose:
docker-compose --version
Добавляем пользователя Linux в группу docker:
usermod -aG docker $USER
Создадим файл *.yaml для Docker-Compose.
Что бы ориентироваться в будущем в том что у нас установлено, создадим отдельную папку для данного проекта в каталоге /opt и перейдем в него.
mkdir /opt/wireguard-server && cd /opt/wireguard-serve
Вы так же можете использовать свою домашнюю директорию /home для размещения этого и других проектов.
Воспользуемся репозиторием linuxserver для создания файла docker-compose.yaml по ссылке https://hub.docker.com/r/linuxserver/wireguard
Создаем файл docker-compose.yaml или docker-compose.yml,
vim docker-compose.yaml
И добавляем в него следующий код:
version: "2.1" services: wireguard: image: lscr.io/linuxserver/wireguard:latest container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE environment: - PUID=0 - PGID=0 - TZ=Europe/Amsterdam - SERVERURL=auto - SERVERPORT=32334 - PEERS=1 - PEERDNS=1.1.1.1 - INTERNAL_SUBNET=10.10.10.0 - ALLOWEDIPS=0.0.0.0/0 - LOG_CONFS=true volumes: - /opt/wireguard-server/config:/config - /lib/modules:/lib/modules ports: - 32334:32334/udp - 51280:51280/udp sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: always
Где:
container_name: название Вашего контейнера;
TZ=: часовой пояс, можете изменить на нужный, но для анонимности лучше оставить Europe/Amsterdam;
SERVERPORT=: рандомный порт на котором будет работать Ваш VPN. Его также нужно будет прописать в ports.
PEERS=: количество пользователей. Их можно будет увеличивать до нужного количества;
32334:32334/udp 51280:51280/udp - пробрасываемые порты.
Запускаем наш скрипт (для этого нужно находиться в директории где создан наш файл. В данном случае это /opt/wireguard-server/):
docker-compose up -d
Дожидаемся скачивания образов, и развертывания.
Проверяем:
docker-compose ps
или
docker ps
Так же это можно сделать одной командой в docker:
docker run -d \\
--name=wireguard \\
--cap-add=NET_ADMIN \\
--cap-add=SYS_MODULE \\
-e PUID=0 \\
-e PGID=0 \\
-e TZ=Europe/Amsterdam \\
-e SERVERURL=auto \\
-e SERVERPORT=32334 \\
-e PEERS=1 \\
-e PEERDNS=1.1.1.1 \\
-e INTERNAL_SUBNET=10.10.10.0 \\
-e ALLOWEDIPS=0.0.0.0/0 \\
-e LOG_CONFS=true \\
-p 32334:32334/udp \\
-p 51280:51280/udp \\
-v /opt/wireguard-server/config:/config \\
-v /lib/modules:/lib/modules \\
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \\
--restart always \\
lscr.io/linuxserver/wireguard:latest
Что бы сгенерировать QR код для смартфона:
docker exec -it wireguard /app/show-peer 1
Где:
1 - это первый конфиг/пользователь.
Результат:
Все конфигурационные файлы и QR коды, размещены в /opt/wireguard-server/config/peer*
Как создать дополнительных пользователей.
Для этого просто нужно изменить директиву PEERS в файле docker-compose.yaml, добавить нужное количество пользователей.
Для того что бы изменения применились, пересоздаем наш контейнер:
docker-compose up -d --force-recreate
Так же для анонимности, отключаем ping на хостовом сервере:
echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf
И применяем изменения:
sysctl -p
Приятного серфинга.