本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
この記事では、Debian 13(Trixie)に SoftEther VPN Server をインストールし、systemd で自動起動させるまでの完全な手順を解説します。
旧来の SysVinit スクリプトや Debian 11 向けの手順はそのまま使えず、OpenSSL 3.x との互換性エラーでビルドが失敗するケースが多発しています。本記事ではそのエラーを回避し、コミュニティ版ソースコード + cmake ビルド + systemd 自動起動という Debian 13 に最適な構成で解説します。
1. なぜ従来の手順ではエラーが出るのか
Debian 13 では OpenSSL 3.x が標準ライブラリとして採用されています。SoftEther VPN の Stable 版(SoftEtherVPN_Stable)は OpenSSL 1.x を前提としたコードが残っており、以下のようなコンパイルエラーが発生します。
error: passing argument 4 of 'sec->Api->C_CreateObject'
from incompatible pointer type [-Wincompatible-pointer-types]
note: expected 'CK_OBJECT_HANDLE_PTR' {aka 'long unsigned int *'}
but argument is of type 'UINT *' {aka 'unsigned int *'}
原因は PKCS#11 の型定義の不一致(32bit UINT vs 64bit CK_ULONG)と、OpenSSL 3.0 で deprecated になった RSA 関数の使用です。
この問題を解決するには、OpenSSL 3.x 対応が進んでいる コミュニティ版(SoftEtherVPN/SoftEtherVPN) を使い、cmake でビルドするのが最も確実な方法です。
2. 動作環境・前提条件
| 項目 | 内容 |
|---|---|
| OS | Debian 13(Trixie) |
| 権限 | root または sudo 権限 |
| ソース | SoftEtherVPN コミュニティ版(GitHub) |
| ビルドツール | cmake(configure/make ではない) |
| 自動起動 | systemd(init.d スクリプト不使用) |
⚠️ Debian 11 向けの init.d スクリプト(vpnserver)はそのまま使えません。 Debian 13 では systemd ユニットファイルを使用してください。
3. 必要パッケージのインストール
まずパッケージリストを更新し、ビルドに必要なライブラリをインストールします。
# パッケージリストを更新
apt-get update
# ビルドに必要なパッケージを一括インストール
apt-get install -y \
git cmake ninja-build pkg-config \
build-essential libssl-dev libreadline-dev \
libncurses5-dev libsodium-dev zlib1g-dev
各パッケージの役割は以下の通りです。
| パッケージ | 用途 |
|---|---|
cmake / ninja-build |
ビルドシステム(configure の代替) |
libssl-dev |
OpenSSL 開発ライブラリ(暗号化処理) |
libsodium-dev |
現代的な暗号ライブラリ(コミュニティ版で必要) |
build-essential |
gcc / g++ / make などのコンパイラ群 |
4. SoftEther VPN のビルド・インストール
コミュニティ版のリポジトリをクローンし、cmake でビルドします。Stable 版(SoftEtherVPN_Stable)ではなく、コミュニティ版(SoftEtherVPN)を使うのがポイントです。
# コミュニティ版をクローン(Stable 版ではない点に注意)
git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git
cd SoftEtherVPN
# サブモジュールを初期化(これを忘れるとビルドエラーになる)
git submodule init
git submodule update
# cmake でビルド準備
mkdir build
cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DSKIP_CPU_FEATURES=YES
# ビルド実行(nproc でコア数を自動取得して並列ビルド)
make -j$(nproc)
# インストール
make install
💡 -DSKIP_CPU_FEATURES=YES は環境依存のビルドエラーを防ぐオプションです。VPS や仮想環境では特に有効です。
インストールが完了したら、vpnserver のパスを確認しておきます。次の手順で使います。
# インストール先のパスを確認
which vpnserver
# 例: /usr/local/bin/vpnserver
5. systemd で自動起動を設定する
Debian 13 は systemd を使っています。旧来の /etc/init.d/vpnserver スクリプトは非推奨であり、systemd ユニットファイルを作成するのが正しい方法です。
① ユニットファイルを作成する
# ユニットファイルを作成
nano /etc/systemd/system/vpnserver.service
以下の内容を貼り付けます。ExecStart / ExecStop のパスは which vpnserver で確認したパスに合わせてください。
[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target
Wants=network-online.target
[Service]
Type=forking
ExecStart=/usr/local/bin/vpnserver start
ExecStop=/usr/local/bin/vpnserver stop
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
各設定の意味は以下の通りです。
| 設定項目 | 説明 |
|---|---|
After=network-online.target |
ネットワーク起動後に VPN サーバーを起動 |
Type=forking |
vpnserver はデーモンとしてバックグラウンド起動するため |
Restart=on-failure |
異常終了時に自動再起動 |
RestartSec=5s |
再起動まで 5 秒待機 |
② 自動起動を有効化して起動する
# systemd にユニットファイルを読み込ませる
systemctl daemon-reload
# OS 起動時に自動起動するよう設定
systemctl enable vpnserver
# 今すぐ起動
systemctl start vpnserver
6. 動作確認
以下のコマンドで正常に動いているか確認します。
# サービスの状態を確認
systemctl status vpnserver
# 正常な場合の出力例:
# ● vpnserver.service - SoftEther VPN Server
# Loaded: loaded (/etc/systemd/system/vpnserver.service; enabled)
# Active: active (running)
# VPN サーバーのステータスを vpncmd で確認
vpncmd localhost /SERVER /CMD ServerStatusGet
Active: active (running) と表示されていれば成功です。
✅ enabled になっていれば OS 再起動後も自動的に VPN サーバーが立ち上がります。
7. よくあるトラブルと対処法
❌ cmake: command not found
apt-get install -y cmake
❌ git submodule update で失敗する
ネットワーク環境や GitHub の一時的な不具合が原因の場合があります。しばらく待ってから再実行してください。
git submodule update --init --recursive
❌ vpnserver のパスが /usr/bin/ にない
cmake ビルドでは /usr/local/bin/ にインストールされることが多いです。
which vpnserver
# → /usr/local/bin/vpnserver の場合は systemd ユニットのパスをそちらに変更
❌ Unit vpnserver.service not found
ユニットファイル作成後に daemon-reload を忘れていないか確認してください。
systemctl daemon-reload
systemctl enable vpnserver
systemctl start vpnserver
まとめ
| 手順 | コマンド / 作業 |
|---|---|
| ① 依存パッケージ | apt-get install cmake ninja-build libssl-dev ... |
| ② ソース取得 | git clone + git submodule update |
| ③ ビルド | cmake .. && make -j$(nproc) && make install |
| ④ 自動起動設定 | systemd ユニットファイル作成 + systemctl enable |
| ⑤ 動作確認 | systemctl status vpnserver |
Debian 13 では Stable 版 → コミュニティ版、configure/make → cmake、init.d → systemd の3つが重要な変更点です。この手順通りに進めれば、エラーなくインストールから自動起動まで完了できます。

