Windows版のPodman.exeコマンドで。
Nextcloudサーバを構築してみました。
構築したサーバに、スマートフォンからアクセスして、撮影した写真や動画を自動アップロードできることも確認済みです。
まあ、まだ課題もありますが、十分に動作するレベルのようです。
基本的な構築手順を記録しておこうと思います。
Windows版 Podman.exeのインストール
Podman.exeのインストール手順はこちらになります。
こちらの記事に従い、Podman.exeをインストールして下さい。
インストールが完了しましたら、続きは以下になります。
Nextcloudポッドの起動
ポッドの起動方法は、以前作成したこちらの記事がベースになります。
今回は、この記事の中のNextcloudを起動する流れですが、ボリュームのマウント-vオプションは使わず、データはすべてコンテナの中に入れるようにしました。
またサービスを公開するポート番号は、8090にしてみました。
- ポッド作成後、mariadbとnextcloudコンテナを起動します。パスワードやポート番号は適宜変更して下さい。
rem Nextcloud用ポッド作成 "%ProgramFiles%\RedHat\Podman\podman.exe" pod create ^ --name nc-pod -p 8090:80 rem Mariadbコンテナ作成 "%ProgramFiles%\RedHat\Podman\podman.exe" run -d ^ --restart=always ^ --pod=nc-pod ^ --name=nc-db ^ -e MYSQL_ROOT_PASSWORD="myrootpass" ^ -e MYSQL_DATABASE="nextcloud" ^ -e MYSQL_USER="nextcloud" ^ -e MYSQL_PASSWORD="n3xtcl0ud" ^ docker.io/library/mariadb:latest rem Nextcloudコンテナ作成 "%ProgramFiles%\RedHat\Podman\podman.exe" run -d ^ --restart=always ^ --pod=nc-pod ^ --name=nc-web ^ -e MYSQL_DATABASE="nextcloud" ^ -e MYSQL_USER="nextcloud" ^ -e MYSQL_PASSWORD="n3xtcl0ud" ^ -e MYSQL_HOST="127.0.0.1" ^ docker.io/library/nextcloud:latest
特に警告もエラーもなく、実行されました。
以上でNextcloudサーバが起動しました!
ポート番号8090で、確かにNextcloudの初期設定画面が表示されました。
うーむ。本当に簡単でしたね。
あとはWebブラウザ上で、Nextcloudの初期設定を進めてみてください。
起動用バッチファイルを作成
作成したポッドとマシンですが。PCを再起動すると、マシンとポッドは停止した状態になります。
PC起動後、マシンとポッドを起動し、更にポートフォワードで他のPCからポッドのWebアプリにアクセスできるようにしてみました。
作成したバッチファイルはこのような感じです。
※22.11.25修正:IPアドレスを取り出す構文に不具合がありましたので修正しました。不具合の内容:IPアドレスが0で終わる場合、正しく取り出せませんでした。構文に\.を追加しました。
※22.12.8追記:ファイアウォールのルールが無限に追加されてしまうため、ルールが存在するか判定するIF文を追加しました。
rem podmanマシン起動
podman machine start
rem podmanマシンのIPアドレス取得
FOR /F %%i in ('podman.exe machine ssh "cat /proc/net/fib_trie | sed -e 's/^[ \-\|\+]*[ \-]*//' | grep '[\d]*\.' |grep -v -e '0.0.0.0' -e '^127\.[\d]*' -e '\/' -e '\.0$' -e '\.255$'"') DO set IPADR=%%i
rem ポッド起動
set pod=nc-pod
podman pod start %pod%
rem ポートフォワード
set PTNB=8090
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=%PTNB% connectaddress=%IPADR% connectport=%PTNB%
rem 受信ルール
netsh advfirewall firewall show rule name= "TCP %PTNB%" dir=in
IF %ERRORLEVEL% GEQ 1 (
netsh advfirewall firewall add rule name= "TCP %PTNB%" dir=in action=allow protocol=TCP localport=%PTNB%
)
rem 送信ルール
netsh advfirewall firewall show rule name= "TCP %PTNB%" dir=out
IF %ERRORLEVEL% GEQ 1 (
netsh advfirewall firewall add rule name= "TCP %PTNB%" dir=out action=allow protocol=TCP localport=%PTNB%
)
必要に応じて、次の3つを変更して下さい。
- 起動するポッド名:nc-pod
- ポート番号:8090
- 最終行のpauseで一時停止→不要なら削除して下さい
ファイル名は「start_wsl_portforward.bat」にしてみました。
実行は、ファイルを右クリックして「管理者として実行」を選択します。
PCの再起動後、ポッドを使いたい場合、バッチファイルを管理者として実行する、という使い方になります。
ポートフォワードを有効にして、ファイアウォールの該当ポート番号を開放したため、他のPCからアクセスが可能になりました。
Nextcloudの設定調整
他のPCからアクセスした場合、使用するURLによって「信頼できないドメインを介したアクセス」エラーが表示される場合があります。
この場合、管理画面に次のようなエラーが記録されます。
さらに、アクセスエラーを確認する別の手段とまして、podman logsコマンドでポッドやコンテナのエラーログを表示して、アクセス制限がかかっていないかどうか確認することが可能です。
上記podmanで構築したNextcloudの場合、ポッド名はnc-pod、Webコンテナ名はnc-web、DBコンテナ名はnc-dbになります。
Webコンテナのログを表示する場合、下記のコマンドになります。
podman logs -f nc-web
ポッドのログは、すべてのコンテナのログを混ぜた内容になると思います。
他のPCからアクセスできるようにするには、Webコンテナ内のconfig.phpを編集し、アクセスを許可するURLを追加する必要があります。
config.phpの編集は下記の流れになります。
# Webコンテナ内でbashを起動
podman exec -it nc-web bash
# テキストエディタをインストール
apt update
apt install vim -y
# config.phpを編集
vi config/config.php
config.php編集後、追加したURLを使用したアクセスが可能になります。
以上で、Windows 10にPodmanコマンドをインストールして、Nextcloudサーバを実際に起動することができました。
ホストであるPodmanマシンのストレージ容量は256GB確保されているようです。この範疇でしたら、実際にNextcloudサーバにデータを入れて稼働できると思います。
ストレージを拡張したい場合は、podman machineを初期化する際に調整できると思いますので、追々試そうと思います。
さて。次はポッドのバックアップ・リストアやマイグレーションを調べてみようかと思います。
ではまた!