
Docker IPsec VPN Server — Updated!
VPN-сервер IPsec на основе Docker, поддерживающий IPsec/L2TP, Cisco IPsec и IKEv2, с автоматической генерацией учётных данных и настройкой клиентов для нескольких платформ.
English | 简体中文 | 繁體中文 | Русский
IPsec VPN сервер на Docker
Docker-образ для запуска сервера IPsec VPN с поддержкой IPsec/L2TP, Cisco IPsec и IKEv2.
Основан на Alpine 3.23 или Debian 12 с использованием Libreswan (программное обеспечение IPsec VPN) и xl2tpd (демон L2TP).
IPsec VPN шифрует сетевой трафик, поэтому никто между вами и VPN-сервером не сможет перехватывать ваши данные во время их передачи через Интернет. Это особенно полезно при использовании незащищённых сетей, например в кофейнях, аэропортах или гостиничных номерах.
Возможности:
- Автоматическая генерация учётных данных VPN и конфигурации IKEv2 при первом запуске
- Поддержка IKEv2 с мощными и быстрыми шифрами (например, AES-GCM)
- Генерация VPN-профилей для автоматической настройки устройств iOS, macOS и Android
- Поддержка Windows, macOS, iOS, Android, Chrome OS и Linux в качестве VPN-клиентов
- Включает вспомогательный скрипт для управления пользователями и сертификатами IKEv2
- Автоматически собирается и публикуется через GitHub Actions
- Постоянное хранение данных через Docker volume
- Поддержка нескольких архитектур:
linux/amd64,linux/arm64,linux/arm/v7
Также доступно:
- VPN: IPsec без Docker, WireGuard, OpenVPN, Headscale
- AI: Стек ИИ на своём сервере для локальных LLM, чата, RAG, голосовых функций и инструментов ИИ
📘 Хотите развернуть ИИ на собственном сервере? The Self-Hosted AI Builder’s Guide: практическое руководство по созданию, защите и эксплуатации собственного приватного ИИ-стека.
Быстрый старт
Используйте эту команду для настройки сервера IPsec VPN в Docker:
docker run \
--name ipsec-vpn-server \
--restart=always \
-v ikev2-vpn-data:/etc/ipsec.d \
-v /lib/modules:/lib/modules:ro \
-p 500:500/udp \
-p 4500:4500/udp \
-d --privileged \
hwdsl2/ipsec-vpn-server
Данные для входа в VPN будут сгенерированы случайным образом. См. раздел Получение данных для входа в VPN.
В качестве альтернативы вы можете настроить IPsec VPN без Docker. Чтобы узнать больше о том, как использовать этот образ, прочитайте разделы ниже.
Сообщество
- 📬 Получайте новости проектов и бесплатные руководства по развёртыванию (1–2 письма в месяц; руководства в формате PDF на английском языке)
- 💬 Присоединяйтесь к сообществу r/selfhostedstack для обсуждений и демонстрации проектов
- ⭐ Поставьте звезду репозиторию, если он оказался вам полезен — это поможет другим пользователям его найти.
Требования
- Linux-сервер с публичным IP-адресом или DNS-именем
- Установленный Docker
- Открытые VPN-порты в брандмауэре (UDP 500 и 4500)
- Вы также можете использовать Podman для запуска этого образа после создания псевдонима для
docker
Примечание: Продвинутые пользователи могут использовать этот образ на macOS с помощью Docker for Mac. Перед использованием режима IPsec/L2TP может потребоваться один раз перезапустить контейнер с помощью docker restart ipsec-vpn-server. Этот образ не поддерживает Docker for Windows.
Загрузка
Получите доверенную сборку из реестра Docker Hub:
docker pull hwdsl2/ipsec-vpn-server
В качестве альтернативы можно скачать из Quay.io:
docker pull quay.io/hwdsl2/ipsec-vpn-server
docker image tag quay.io/hwdsl2/ipsec-vpn-server hwdsl2/ipsec-vpn-server
Поддерживаемые платформы: linux/amd64, linux/arm64 и linux/arm/v7.
Продвинутые пользователи могут собрать образ из исходного кода на GitHub.
Сравнение образов
Доступны два предварительно собранных образа. Образ на базе Alpine используется по умолчанию и имеет размер всего около ~19 MB.
| На базе Alpine | На базе Debian | |
|---|---|---|
| Имя образа | hwdsl2/ipsec-vpn-server | hwdsl2/ipsec-vpn-server:debian |
| Сжатый размер | ~ 19 MB | ~ 62 MB |
| Базовый образ | Alpine Linux 3.23 | Debian Linux 12 |
| Платформы | amd64, arm64, arm/v7 | amd64, arm64, arm/v7 |
| Версия Libreswan | 5.4 | 5.4 |
| IPsec/L2TP | ✅ | ✅ |
| Cisco IPsec | ✅ | ✅ |
| IKEv2 | ✅ | ✅ |
Примечание: Чтобы использовать образ на базе Debian, замените каждое hwdsl2/ipsec-vpn-server на hwdsl2/ipsec-vpn-server:debian в этом README. В настоящее время эти образы несовместимы с системами Synology NAS.
Я хочу использовать более старую версию Libreswan 4.
Обычно рекомендуется использовать последнюю версию Libreswan 5, которая является версией по умолчанию в этом проекте. Однако если вы хотите использовать более старую версию Libreswan 4, вы можете собрать Docker-образ из исходного кода:
git clone https://github.com/hwdsl2/docker-ipsec-vpn-server
cd docker-ipsec-vpn-server
# Указать версию Libreswan 4
sed -i 's/SWAN_VER=5\..*/SWAN_VER=4.15/' Dockerfile Dockerfile.debian
# Сборка образа на базе Alpine
docker build -t hwdsl2/ipsec-vpn-server .
# Сборка образа на базе Debian
docker build -f Dockerfile.debian -t hwdsl2/ipsec-vpn-server:debian .
Как использовать этот образ
Переменные окружения
Примечание: Все переменные для этого образа являются необязательными, что означает, что вам не нужно указывать ни одну переменную — и вы сможете получить работающий сервер IPsec VPN «из коробки»! Для этого создайте пустой файл env с помощью touch vpn.env, а затем перейдите к следующему разделу.
Этот Docker-образ использует следующие переменные, которые можно объявить в файле env (см. пример):