Windows 10のPodmanでNextcloudサーバ簡単構築 Ubuntu 20.04版

※22.10.26追記:

より新しくてシンプルな方法が御座います。

新しい記事は、Windowsでpodman.exeを直接動かす方法です。

以下の古い記事は、WindowsにUbuntuを入れて、その中でpodmanを動かす内容になります。

Windows 10のPCでNextcloudサーバを構築してみました。

以前、Hyper-V+Dockerを使用しましたが。

今は次の3通りの方法が存在するようです。

  1. Hyper-V+Docker
  2. WSL2+Docker
  3. WSL2+Podman

今回はデーモンが不要でDockerよりも軽量なPodmanを使用してみました。

構築手順を記録しておこうと思います。


Windows 10 + WSL2 + Podman動作環境

Podmanのインストール手順はこちらの記事を御覧ください。

Windows 10 Proのx64版で動作しました。

Windows 10 Homeの場合、新しいバージョン(1903や1909以降)でしたらWSL2が動くという話もあるようですが、試していませんのでここでは保証致しません。


Nextcloud起動用Kubernetes pod.yaml

データベースはmariadbを使用しました。

NextcloudはApache版とfpm版がありますが、Apache版を使用しています。

どちらもDocker Hubの公式イメージになります。


※21.1.31追記:

Podmanのバージョンアップの影響で、下記のYAMLファイルではポッドが正常に起動できない場合があります。

その場合、ポッドを手動で作成後、YAMLファイルを出力する必要が御座います。

手順は下記の記事を御覧ください。


起動用のnextcloud-pod.yamlファイルを作成しました。

mkdir nextcloud
cd nextcloud
mkdir html mysql
vi nextcloud-pod.yaml

htmlとmysqlディレクトリは永続化ボリュームとしてコンテナからマウントされ、データが格納されます。

yamlファイルは以下の内容になります。使用するTCPポート番号は8080にしました。何となく。

# Generation of Kubernetes YAML is still under development!
#
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-2.1.0
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2020-09-26T08:49:25Z"
  labels:
    app: nextcloud-pod
  name: nextcloud-pod
spec:
  containers:
  - name: nc-db
    env:
    - name: MYSQL_DATABASE
      value: nextcloud
    - name: MYSQL_ROOT_PASSWORD
      value: myrootpass
    - name: MYSQL_USER
      value: nextcloud
    - name: MYSQL_PASSWORD
      value: n3xtcl0ud
    image: docker.io/library/mariadb:latest
    ports:
    - containerPort: 80
      hostPort: 8080
      protocol: TCP
    resources: {}
    securityContext:
      allowPrivilegeEscalation: true
      capabilities: {}
      privileged: false
      readOnlyRootFilesystem: false
      seLinuxOptions: {}
    volumeMounts:
    - mountPath: /var/lib/mysql
      name: home-hide-nextcloud-mysql
    workingDir: /
  - name: nc-app
    env:
    - name: MYSQL_DATABASE
      value: nextcloud
    - name: MYSQL_USER
      value: nextcloud
    - name: MYSQL_PASSWORD
      value: n3xtcl0ud
    - name: MYSQL_HOST
      value: 127.0.0.1
    image: docker.io/library/nextcloud:latest
    resources: {}
    securityContext:
      allowPrivilegeEscalation: true
      capabilities: {}
      privileged: false
      readOnlyRootFilesystem: false
      seLinuxOptions: {}
    volumeMounts:
    - mountPath: /var/www/html
      name: home-hide-nextcloud-html
    workingDir: /var/www/html
  restartPolicy: Always
  volumes:
  - hostPath:
      path: /home/hide/nextcloud/mysql
      type: Directory
    name: home-hide-nextcloud-mysql
  - hostPath:
      path: /home/hide/nextcloud/html
      type: Directory
    name: home-hide-nextcloud-html
status: {}

/home/hide/nextcloudの部分はご利用になる環境に合わせて変更してください。それとTCPポート番号もWindowsを含めて重複しないように選択して下さい。


ポッドの起動

yamlファイルを使ってポッドを起動します。

sudo podman play kube ./nextcloud-pod.yaml
# コピペ用
sudo podman pod ls
sudo podman ps
sudo podman pod stop nextcloud-pod
sudo podman pod rm nextcloud-pod
sudo podman exec -it nc-db bash
sudo podman exec -it nc-web bash

このような感じで、ポッドが正常に起動しました。

しばらく?結構?Nextcloudの設定ページが表示されるまで待ちます。

http://localhost:8080

セットアップ画面が表示されましたでしょうか?


オペレーティングシステム欄を見ると、Linux 4.19.128-microsoft-standard x86_64という文字が見えます。純粋なLinuxではなく、Windowsで動いている感じが読み取れて面白いですね。


WSL2のバックアップについて

バックアップにつきましてはこちらの記事を御覧ください。

まあバックアップ以前に、データを格納するボリュームがどうかという問題があるのですが。


WSL2のパーティション拡張は様子見(2020年9月現在)

WSL2のルートパーティション(/)は既定で251Gの容量かと思います。

この容量はストレージサーバとしては不足する感じがします。よってルートパーティションにNextcloud運用ディレクトリを作成するのではなく、他のストレージをマウントして作成するほうが運用管理しやすいと思います。

しかし、2020年9月現在、WSL2で他のパーティションをマウントする機能はプレビューの状態で、正式リリースされていません。

そのようなわけで、正式リリースまでは、256GBの容量の中で使用するかたちになりますのでご注意下さい。


んー。記事にするのが早すぎた感じもしますが。

Hyper-V+DockerでNextcloudを運用したとき、やはりデータの置き場所が問題になりました。

WSL2+Dockerの場合と、WSL2+Podmanの場合は、同じWSL2ということで、パーティションの状況は同じかと思います。

それならば、Dockerよりもより軽量なPodmanに目を付けておいたほうが良いかなという感じです。

パーティションの問題が解決するタイミングで、そのあたりの記事を書き足させて頂こうと思います。

スポンサーリンク

フォローする

スポンサーリンク