
Docker IPsec VPN Server — Updated!
IPsec/L2TP、Cisco IPsec、IKEv2をサポートするDockerベースのIPsec VPNサーバー。自動認証情報生成とマルチプラットフォーム対応のクライアント設定を備えています。
English | 简体中文 | 繁體中文 | Русский
Docker上のIPsec VPNサーバー
IPsec VPNサーバーを実行するためのDockerイメージ。IPsec/L2TP、Cisco IPsec、IKEv2に対応しています。
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ツール向けのSelf-Hosted AI Stack
- 📚 書籍: The Self-Hosted AI Builder’s Guide、Privacy Tools in the Age of AI
クイックスタート
次のコマンドを使用して、Docker上にIPsec VPNサーバーをセットアップします:```bash
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ログイン情報の取得](#retrieve-vpn-login-details)を参照してください。
または、[Dockerを使わずにIPsec VPNをセットアップ](https://github.com/hwdsl2/setup-ipsec-vpn)することもできます。このイメージの使い方の詳細については、以下のセクションをお読みください。
## コミュニティ
- 📬 [プロジェクトの更新情報を購読](https://selfhostedstack.beehiiv.com/subscribe?utm_campaign=vpn)(月1〜2通のメール)— 無料のVPNおよびAIデプロイガイド(PDF)を入手
- 💬 ディスカッションのために[r/selfhostedstack](https://www.reddit.com/r/selfhostedstack/)コミュニティに参加
- ⭐ 役に立つと思ったらリポジトリにスターを付けてください — 他の人が見つけやすくなります
## 要件
- パブリックIPアドレスまたはDNS名を持つLinuxサーバー
- Dockerがインストールされていること
- ファイアウォールでVPNポート(UDP 500および4500)が開放されていること
- [Podman](https://docs.podman.io)を使用して、`docker`のエイリアスを作成した上でこのイメージを実行することもできます
**注:** 上級ユーザーは、[Docker for Mac](https://docs.docker.com/desktop/setup/install/mac-install/)を使用してmacOS上でこのイメージを利用できます。IPsec/L2TPモードを使用する前に、`docker restart ipsec-vpn-server`でコンテナを一度再起動する必要がある場合があります。このイメージはDocker for Windowsをサポートしていません。
## ダウンロード
[Docker Hubレジストリ](https://hub.docker.com/r/hwdsl2/ipsec-vpn-server/)から信頼できるビルドを取得してください。```bash
docker pull hwdsl2/ipsec-vpn-server
代替として、Quay.ioからダウンロードすることもできます。```bash 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 で[ソースコードからビルド](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md#build-from-source-code)できます。
### イメージの比較
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 | 5.4 |
| IPsec/L2TP | ✅ | ✅ |
| Cisco IPsec | ✅ | ✅ |
| IKEv2 | ✅ | ✅ |
**注:** Debian ベースのイメージを使用するには、この README 内のすべての `hwdsl2/ipsec-vpn-server` を `hwdsl2/ipsec-vpn-server:debian` に置き換えてください。これらのイメージは、現在 Synology NAS システムとは互換性がありません。
<details>
<summary>
古い Libreswan バージョン 4 を使用したい。
</summary>
一般的には、このプロジェクトのデフォルトバージョンである最新の [Libreswan](https://libreswan.org/) バージョン 5 を使用することをお勧めします。ただし、古い Libreswan バージョン 4 を使用したい場合は、ソースコードから Docker イメージをビルドできます。```bash
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ログイン用のユーザーアカウントが作成され、複数のデバイス[\*](#important-notes)で使用できます。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の設定と使用方法を参照してください。
注: 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サーバーの使用](https://gitlab.com/hwdsl2/docker-ipsec-vpn-server/-/blob/master/docs/advanced-usage.md)を参照してください。
デフォルトでは、IKEv2クライアント設定のインポート時にパスワードは不要です。クライアント設定ファイルをランダムなパスワードで保護することも選択できます。```
VPN_PROTECT_CONFIG=yes
注: 上記の変数は、Dockerコンテナ内でIKEv2が既に設定されている場合、IKEv2モードには影響しません。この場合、IKEv2を削除して、カスタムオプションを使用して再度設定することができます。IKEv2 VPNの設定と使用を参照してください。