
Docker IPsec VPN Server — Updated!
IPsec/L2TP、Cisco IPsec、IKEv2をサポートするDockerベースのIPsec VPNサーバー。自動認証情報生成とマルチプラットフォーム対応のクライアント設定を備えています。
English | 简体中文 | 繁體中文 | Русский
Docker 上の IPsec VPN サーバー
IPsec/L2TP、Cisco IPsec、IKEv2 に対応した IPsec VPN サーバーを実行するための Docker イメージです。
Alpine 3.23 または Debian 12 をベースに、Libreswan(IPsec VPN ソフトウェア)と xl2tpd(L2TP デーモン)を搭載しています。
IPsec VPN はネットワークトラフィックを暗号化するため、あなたと VPN サーバーの間の誰も、インターネット経由で移動するデータを盗聴することができません。これは、カフェ、空港、ホテルの部屋など、安全でないネットワークを使用する場合に特に役立ちます。
機能:
- 初回起動時に VPN 認証情報と IKEv2 設定を自動生成
- 強力で高速な暗号(例: AES-GCM)を使用した IKEv2 をサポート
- iOS、macOS、Android デバイスを自動設定する VPN プロファイルを生成
- Windows、macOS、iOS、Android、Chrome OS、Linux を VPN クライアントとしてサポート
- IKEv2 ユーザーと証明書を管理するヘルパースクリプトを同梱
- GitHub Actions による自動ビルドと公開
- Docker ボリュームによるデータの永続化
- マルチアーキテクチャ:
linux/amd64、linux/arm64、linux/arm/v7
その他にも利用可能:
- VPN: Docker なしの IPsec、WireGuard、OpenVPN、Headscale
- AI: ローカル LLM、チャット、RAG、音声、AI ツール向けのセルフホスト AI スタック
📘 セルフホスト AI に興味がありますか? The Self-Hosted AI Builder’s Guide は、独自のプライベート AI スタックを構築、保護、運用するための実践的なガイドです。
クイックスタート
このコマンドを使用して、Docker 上に IPsec VPN サーバーをセットアップします:
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 ログイン情報の取得を参照してください。
または、Docker を使わずに IPsec VPN をセットアップすることもできます。このイメージの使用方法の詳細については、以下のセクションをお読みください。
コミュニティ
- 📬 プロジェクトの更新情報と無料のデプロイガイドを入手(月1〜2通のメール)
- 💬 ディスカッション用の r/selfhostedstack コミュニティに参加
- ⭐ 役に立ったらリポジトリにスターを付けてください — 他の人が見つけやすくなります
要件
- パブリック IP アドレスまたは DNS 名を持つ Linux サーバー
- Docker がインストールされていること
- ファイアウォールで VPN ポートが開放されていること(UDP 500 および 4500)
dockerのエイリアスを作成した上で、Podman を使用してこのイメージを実行することもできます
注意: 上級ユーザーは、Docker for Mac を使用して macOS 上でこのイメージを利用できます。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 上でソースコードからビルドできます。
イメージの比較
2つのビルド済みイメージが利用可能です。デフォルトの 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.1 | 5.4.1 |
| IPsec/L2TP | ✅ | ✅ |
| Cisco IPsec | ✅ | ✅ |
| IKEv2 | ✅ | ✅ |
注: Debian ベースのイメージを使用するには、この README 内のすべての hwdsl2/ipsec-vpn-server を hwdsl2/ipsec-vpn-server:debian に置き換えてください。これらのイメージは現在、Synology NAS システムとは互換性がありません。
古い Libreswan バージョン 4 を使用したい。
一般的には、このプロジェクトのデフォルトバージョンである最新の Libreswan バージョン 5 の使用を推奨します。ただし、古い Libreswan バージョン 4 を使用したい場合は、ソースコードから Docker イメージをビルドできます:
git clone https://github.com/hwdsl2/docker-ipsec-vpn-server
cd docker-ipsec-vpn-server
# Specify Libreswan version 4
sed -i 's/SWAN_VER=5\..*/SWAN_VER=4.15/' Dockerfile Dockerfile.debian
# To build Alpine-based image
docker build -t hwdsl2/ipsec-vpn-server .
# To build Debian-based image
docker build -f Dockerfile.debian -t hwdsl2/ipsec-vpn-server:debian .
このイメージの使用方法
環境変数
注: このイメージのすべての変数はオプションです。つまり、変数を何も入力する必要はなく、すぐに使える IPsec VPN サーバーを構築できます!そのためには、touch vpn.env で空の env ファイルを作成し、次のセクションに進んでください。
この Docker イメージは以下の変数を使用しており、env ファイルで宣言できます(例を参照):
VPN_IPSEC_PSK=your_ipsec_pre_shared_key
VPN_USER=your_vpn_username
VPN_PASSWORD=your_vpn_password
これにより、VPN ログイン用のユーザーアカウントが作成され、複数のデバイスで使用できます*。IPsec PSK(事前共有キー)は VPN_IPSEC_PSK 環境変数で指定します。VPN ユーザー名は VPN_USER で定義され、VPN パスワードは VPN_PASSWORD で指定します。
追加の VPN ユーザーもサポートされており、次のように env ファイルで任意に宣言できます。ユーザー名とパスワードはスペースで区切る必要があり、ユーザー名に重複を含めることはできません。すべての VPN ユーザーは同じ IPsec PSK を共有します。
VPN_ADDL_USERS=additional_username_1 additional_username_2
VPN_ADDL_PASSWORDS=additional_password_1 additional_password_2
上記の変数は、IPsec/L2TP および IPsec/XAuth(「Cisco IPsec」)モード専用です。IKEv2 については、IKEv2 VPN の設定と使用を参照してください。
[!IMPORTANT]
envファイルでは、値を引用符や=の前後のスペースなしで記述してください。値には\、"、'を含めることはできません。安全な IPsec PSK は、少なくとも 20 文字のランダムな文字で構成する必要があります。
注: Docker コンテナがすでに作成された後に env ファイルを変更した場合、変更を反映するにはコンテナを削除して再作成する必要があります。Docker イメージの更新を参照してください。
追加の環境変数
上級ユーザーは、オプションで DNS 名、クライアント名、および/またはカスタム DNS サーバーを指定できます。
DNS 名、クライアント名、および/またはカスタム DNS サーバーを指定する方法を学ぶ。
上級ユーザーは、オプションで IKEv2 サーバーアドレスの DNS 名を指定できます。DNS 名は完全修飾ドメイン名(FQDN)である必要があります。例:
VPN_DNS_NAME=vpn.example.com
最初のIKEv2クライアントの名前を指定できます。1単語のみを使用し、- と _ 以外の特殊文字は使用しないでください。指定しない場合のデフォルトは vpnclient です。
VPN_CLIENT_NAME=your_client_name
デフォルトでは、VPN が有効な場合、クライアントは Google Public DNS を使用するように設定されています。すべての VPN モードに対してカスタム DNS サーバーを指定できます。例:
VPN_DNS_SRV1=1.1.1.1
VPN_DNS_SRV2=1.0.0.1
詳細と、いくつかの一般的なパブリック DNS プロバイダーのリストについては、代替 DNS サーバーの使用を参照してください。
デフォルトでは、IKEv2 クライアント構成をインポートするときにパスワードは必要ありません。ランダムなパスワードを使用してクライアント構成ファイルを保護することを選択できます。
VPN_PROTECT_CONFIG=yes