CentOS8 + Rootless Podman + NextcloudでVJ素材管理環境作りたい
QNAP か Synology の NAS 買えよって話なんですけど、最近フットレストと化している足下にある富士通のサーバーがキラキラした瞳で見上げてくるので・・・。
注意
全然詳しくない領域において試行錯誤した作業の備忘録となので、問題解決の方法が雑であるなど、あまり綺麗ではありません。あと今回VJはそこまで関係ないです。
前提
- 家庭の閉じたネットワーク内での運用
- CentOS が Docker 捨てたならその流れに乗る (Docker わざわざ導入するのが面倒)
podman-compose
は使わない- Podman は Rootless で動かす
作業環境
下ごしらえ
必要なソフトウェアをインストールします。
sudo yum install -y podman
Nextcloud を9000番ポートで公開するために、ファイアウォールの設定をします。
sudo firewall-cmd --add-port=9000/tcp --zone=public sudo firewall-cmd --permanent --add-port=9000/tcp --zone=public sudo firewall-cmd --reload sudo systemctl restart firewalld
/etc/fstab
を編集し、OS起動時に内蔵HDDが /mnt/storage
にマウントされるようにします。
エディタは何でも良いですが、emacs の場合 /sudo::/etc/fstab
とすることで良い感じに開けます。
ls -l /dev/disk/by-uuid # 下記のような結果が出力されるので、/dev/sd?? と UUID との対応を見て fstab に書き込む UUID を探します # lrwxrwxrwx. 1 root root 10 Mar 22 10:48 ********-****-****-****-************ -> ../../sda2 # lrwxrwxrwx. 1 root root 10 Mar 22 10:48 ****-**** -> ../../sda1 # lrwxrwxrwx. 1 root root 10 Mar 22 10:48 ********-****-****-****-************ -> ../../sdb1 emacs /sudo::/etc/fstab
一旦再起動してマウントされているか確認します。
そして Nextcloud の保存先となる /mnt/storage/nextclouddata
の用意をします。
sudo mkdir /mnt/storage/nextclouddata chown 1000:1000 /mnt/storage/nextclouddata chcon -R -t svirt_sandbox_file_t /mnt/storage/nextclouddata
chron
のところは https://github.com/containers/libpod/issues/3683#issuecomment-517237050 を参考にしました。
Nextcloud を起動する
podman-compose
使わない縛りをするのと、podman play kube
が調子悪いので、コマンド手入力でポチポチ進めます。
なお Redis は必須ではないので、適宜 Redis に関する記述やオプションなどは消しても動きます。
まずは pod を用意します。pod 内で稼働する rootless コンテナ同士は localhost
を介して相互に通信できます。
podman pod create --name nextcloud --publish 9000:80
次にコンテナを起動していきます。データベースのパスワードなど、必要に応じて適宜変更してください。
MariaDB 起動時のオプションについては https://hub.docker.com/_/nextcloud/ に記載されていたものをそのまま書いています。
podman run -d --name db --pod nextcloud \ -v mariadb-data:/var/lib/mysql \ -e MYSQL_RANDOM_ROOT_PASSWORD=yes \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=nextcloud \ -e MYSQL_PASSWORD=nextcloud \ mariadb --transaction-isolation=READ-COMMITTED --binlog-format=ROW
podman run -d --name redis --pod nextcloud -v redis-data:/data redis
Nextcloud の保存先が /mnt/storage
に作成したディレクトリに向くようオプションを設定します。
podman run -d --name app --pod nextcloud \ -e MYSQL_HOST=127.0.0.1 \ -e MYSQL_DATABASE=nextcloud \ -e MYSQL_USER=nextcloud \ -e MYSQL_PASSWORD=nextcloud \ -e REDIS_HOST=127.0.0.1 \ -v nextcloud-html:/var/www/html \ -v /mnt/storage/nextclouddata:/var/www/html/data \ nextcloud
今回できなかったこと
- 最新の podman (1.8.x) を試すこと
podman play kube
を使うこと- Kubernetes に詳しくないので・・・
- ボリューム周りの機能がまだ貧弱そうに見えた
- MariaDB のソケットをボリューム経由で Nextcloud に渡すこと
- ソケット自体は見えているのになぜかうまくいかなかった
- systemd と連携させること
終わりに
RedHat 先生が意気揚々と Docker を置き換えた割には Podman の使い勝手が微妙じゃない?と思うものの、Rootless で動かせたりと面白さもあります。
参考文献
docker-compose
で構築した例を探していて見つけたページ- SELinux で詰んだ時に調べていて見つけたページ