以前、以下の記事でDockerhubで配布されているコンテナイメージを使ってArmadilloをSoftEtherVPNのサーバとする方法を案内しました。
Armadillo Base OS:SoftEtherVPNのサーバとして使用する
この記事では、ATDE上のVSCodeを使ってArmadilloへSoftEtherVPNのサーバを構築する方法を案内します。
概要
SoftEtherVPNのGithubでDockerfileが公開されているので、これを活用します。
https://github.com/SoftEtherVPN/SoftetherVPN-docker/tree/master
手順
構築のための手順を記載します。
プロジェクト作成
製品マニュアルを参考にATDE上のVSCodeで「shell new project」を実行してCUIアプリケーション用のプロジェクトを作成してください。
Armadillo-IoT A6Eの製品マニュアルのリンクを記載しておきます。
3.14. CUI アプリケーションの開発
Dockerfile
先述の通りSoftEtherVPNのGithubで公開されているDockerfileを活用します。
*2024/10/11時点では、DockerfileではなくDockerfile.stableを使用することを推奨します。
SoftEtherVPNの最新のソースコードは、仮想環境でビルドしようとしてもホスト側のCPUの情報を取ってしまうため、
ビルドに失敗してしまうことがあります。
そのため、最新のソースコードでは無く安定版を使用するDockerfile.stableを使用します。
Dockerfile.stableは以下からアクセスできます。
https://github.com/SoftEtherVPN/SoftetherVPN-docker/blob/master/Dockerfile.stable
これを活用しつつ、Armadillo向けにビルドできるようにコンテナイメージに対してアーキテクチャの指定を追加しています。
ARG ARCH FROM docker.io/${ARCH}/alpine as builder ARG GIT_TAG=v4.41-9782-beta RUN mkdir /usr/local/src && apk add binutils --no-cache\ build-base \ readline-dev \ openssl-dev \ ncurses-dev \ git \ cmake \ zlib-dev \ libsodium-dev \ gnu-libiconv ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so WORKDIR /usr/local/src RUN git clone -b ${GIT_TAG} https://github.com/SoftEtherVPN/SoftEtherVPN_Stable.git ENV USE_MUSL=YES RUN cd SoftEtherVPN_Stable &&\ git submodule init &&\ git submodule update &&\ ./configure &&\ make FROM docker.io/${ARCH}/alpine RUN apk add --no-cache readline \ openssl \ libsodium \ gnu-libiconv\ iptables ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so ENV LD_LIBRARY_PATH /root WORKDIR /usr/local/bin VOLUME /mnt RUN ln -s /mnt/vpn_server.config vpn_server.config && \ mkdir /mnt/backup.vpn_server.config &&\ ln -s /mnt/backup.vpn_server.config backup.vpn_server.config &&\ ln -s /mnt/lang.config lang.config COPY --from=builder /usr/local/src/SoftEtherVPN_Stable/bin/vpnserver/vpnserver /usr/local/src/SoftEtherVPN_Stable/bin/vpncmd/vpncmd /usr/local/src/SoftEtherVPN_Stable/bin/vpnserver/hamcore.se2 ./ EXPOSE 443/tcp 992/tcp 1194/tcp 1194/udp 5555/tcp 500/udp 4500/udp CMD ["/usr/local/bin/vpnserver", "execsvc"]
conf
プロジェクト内のapp.confを以下のように編集します。 Dockerfileで起動時コマンドを定義しているため、set_commandの部分をコメントアウトしていることに留意してください。
set_image localhost/{{PROJECT}}:latest # mount app sources and data: # - /var/app/rollback/volumes can be rolled back on failed # upgrades, suitable for application sources and assets. # - /var/app/volumes is not copied on updates and more suitable # for volatile data such as logs and databases. add_volumes /var/app/rollback/volumes/{{PROJECT}}:/vol_app add_volumes /var/app/volumes/{{PROJECT}}:/vol_data # Allow LED to be written. This is application specific # and should be changed depending on your needs. add_volumes /sys:/sys # Allow input to containers and see output from containers add_args -it # Add environment variables set by Atmark Techno. add_armadillo_env # launch app #set_command bash /vol_app/src/main.sh add_ports 443:443/tcp 992:992/tcp 1194:1194/udp 5555:5555/tcp 500:500/udp 4500:4500/udp 1701:1701/udp #サーバの設定ファイル等を格納するディレクトリをコンテナ上にマウント add_volumes /var/app/volumes/softether:/mnt #ホストOSのネットワークをそのまま使用する設定 set_network host #特権を設定 add_args --privileged
SWUのビルド・インストール
製品マニュアルを参考にコンテナイメージとconfファイルを書き込むためのswuファイルをビルドしてArmadilloへインストールしてください。
Armadillo-IoT A6Eの製品マニュアルのリンクを記載しておきます。
3.14.3.4. アプリケーション実行用コンテナイメージの作成
VPNサーバ設定・動作確認など
SWUによるインストールが完了してArmadilloが再起動すると、SoftEtherVPNサーバコンテナが自動起動した状態となります。
後は、下記記事と同様にSoftEther VPNサーバー管理マネージャーを使って設定を行って下さい。
Armadillo Base OS:SoftEtherVPNのサーバとして使用する