自宅クラウドサーバーNextcloud HubをWSL2とDockerを使って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 dockermkdir githubcd githubgit 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を編集して
と表示されます。少なくともNextcloudが応答するようになりました。ports: - 127.0.0.1:8080:80
を
ports: - 8080:80
となおします。これで
"PCのIPアドレス:8080"
を開くと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内から見れるでしょう。
コメント
コメントを投稿