自宅クラウドサーバーNextcloud HubをWSL2とDockerを使ってWindowsで動かす

タイトル

自宅クラウドサーバーをWindowsパソコンで動かしてみます。自宅にファイルは置いておきたい!でも、ブラウザやスマホアプリで使いたい!という方におすすめです。

Nextcloud Hub

Nextcloud Hubはクラウドストレージサーバーのオープンソースソフトウエアです。
nextcloud/server | GitHub
Google DriveやiCloudのようなクラウドサービスを自宅で動かせます。メッセージ、スケジュール、メールやグループ管理などもあり小規模なグループウエアとしても使えます。最近はコラボレーションツールとして機能を拡張していて名前に"Hub"が付きました。

Linux用プログラムです。

WindowsでNextcloud Hubを動かす

Linux用プログラムでも最近はWindows PCで動かす事ができます。WSL2(Windows Subsystem for Linux 2)という機能を使います。ほぼLinuxがWindowsで動きます。
WSL2が動くようにする手順は以前に紹介しました。

NextcloudはDockerで動かすことができます。Dockerを使ったほうが一番はじめのトライ&エラーが簡単にできます。

Dockerで動かすファイル

NextcloudのDockerイメージは公開されています。しかし、自宅のネットワーク環境に合った設定をするには使い勝手が少し悪いです。少し手を加えられるようにしておきます。
NextcloudのDockerイメージを作るためのリポジトリがあります。
nextcloud/docker | GitHub
このリポジトリの".examples"ディレクトリにDockerで動かすサンプルコードがあります。
これをコピーして使います。

WSL2でファイルを取得

WSL2を動かしてGitHubのファイルを取ってきます。ファイルを置くディレクトリを作ります。ここでは"github"ディレクトリにします。またdockerを動かすディレクトリを作ります。ここでは"docker"ディレクトリにします。
cd ~
mkdir docker
mkdir github
cd github
git clone --depth 1 https://github.com/nextcloud/docker.git
githubディレクトリにdockerというディレクトリができます。その中にファイルが入りました。

Dockerで使うファイルをコピーします。
cp -r docker/.examples/dockerfiles/full/apache/ ~/docker/BuildNextcloudFull/ cp -r docker/.examples/docker-compose/insecure/mariadb/apache/ ~/docker/nextcloud-insecure/ cd ~/docker
今回はWindowsで使うのでネットワーク共有フォルダが使えるようにSAMBAを追加インストールします。
インターネットへの公開はネット環境により千差万別で説明できないので、今回はLAN内で動かします。データベースにはMariaDBを使い、WebサービスにはApacheを使います。
これでファイルが揃いました。

イメージのビルド

SAMBAが使えるようにしたNextcloudのDockerイメージをビルドします。イメージの名前は"nextcloudfull"としました。
cd BuildNextcloudFull/
docker build . -t nextcloudfull:apache
大きなイメージファイルをダウンロードするので少し時間がかかるでしょう。
docker images

REPOSITORY      TAG       IMAGE ID       CREATED          SIZE
nextcloudfull   apache    d757afd21020   25 seconds ago   1.36GB
こんなイメージができます。

docker-compose.ymlの編集

データベースのパスワードを設定

作ったイメージを使うように修正します。また、データベースのパスワードを設定します。パスワードは2つあります。ルートのパスワードと通常アクセス用のパスワードです。
アクセス用パスワードはdb.envというファイルに書きます。
cd ../nextcloud-insecure/
nano db.env
パスワードを追記します。
ルートパスワードはdocker-compose.ymlに書きます。
nano docker-compose.yml
"MYSQL_ROOT_PASSWORD"に追記してください。

データディレクトリの変更

Nextcloudの実際の設定ファルやサーバーへ上げたファイルなどをローカルディレクトリに保存する変更をします。Dockerに慣れていないとファイルがどこにあるのかわからなくなります。目の前に置いておきます。
volumes:
      - nextcloud:/var/www/html
とある場所を探します。2箇所あります。
次のように変えます。
volumes:
      - ./nextcloud:/var/www/html
"nextcloud"というDockerボリュームをやめて"nextcloud"というローカルディレクトリに割り当てます。
使わなくなったボリュームをコメントアウトします。一番下の"volumes"を探して
volumes:
  db:
#  nextcloud:
#を先頭に加えます。

Nextcloudイメージの変更

Nextcloudの使うイメージを先程作った自前のイメージにします。
"image: nextcloud:apache"とある行をて
image: nextcloudfull:apache
とします。2箇所あります。

Nextcloudの実行

Dockerを実行します。
docker-compose up
最初は不足イメージをダウンロードするので少し時間がかかります。
ブラウザで"localhost:8080"を開いて見ます。
うまく動いていれば管理者を登録する画面が開きます。
管理者の名前とパスワードを入れると初期設定がされます。

LAN内で見る

ブラウザにNextcloudを動かしているパソコンのIPアドレスを入れて開いて見ましょう。
URLに
"PCのIPアドレス:8080"
と入れます。
しかし、開かないでしょう。
到達できません
先程のdocker-compose.ymlファイルでルートを制限しているからです。Dockerコンテナは仮想の独立したネットワークで動きます。パソコンの外とつながるようブリッジを設定します。
docker-compose.ymlを編集して
    ports:
      - 127.0.0.1:8080:80
    ports:
      - 8080:80
となおします。これで
"PCのIPアドレス:8080"
を開くと
信頼できないドメイン
と表示されます。少なくともNextcloudが応答するようになりました。
Nextcloudは自分のホスト名を記憶して、異なるホスト名で呼び出されたら接続しないようになっています。一番最初に管理者を登録した時のドメイン"localhost:8080"以外では接続できません。
信頼するドメインを追加することで接続できるようになります。

Dockerを停止します。Ctrl+Cを押すと止められます。
一度Nextcloudを動かすとDocker-compose.ymlファイルがあるディレクトリに"nextcloud"というディレクトリができているでしょう。そのように先程修正しました。
Nextcloudの諸々の設定ファイルはこのディレクトリの中にあります。
Nextcloudの基本となる設定ファイルは"config.php"です。configディレクトリ内にあります。編集します。
sudo nano ./nextcloud/config/config.php
この中に"Trusted Domains"という項目が有ります。ここにローカルIPアドレスを追加します。
'trusted_domains' =>
[
  0 => 'localhost:8080',
  1 => '192.168.xxx.xxx:8080',
],
Dockerを立ち上げ直します。コンソールを表示する必要がなければ"-d"を付けてupします。
docker-compose down
docker-compose up -d
これでLAN内から見れるでしょう。

ビデオ




コメント

最近のコメント

Threaded Recent Comments will be here.