NextCloud とは
Nextcloudは、オンラインストレージの作成と使用のためのクライアント・サーバ型のソフトウェアである。機能的にはDropboxに似ているが、オフプレミスのオンラインストレージサービスは提供しない。Nextcloudはフリーかつオープンソースなので、誰でも自分のプライベートサーバ(英語版)にインストールして利用することができる。from wiki
構築方法
- ubuntu server 18.04 LTS - Gen 2 (Azure Marketplace)
- snap を使って構築する:独自で各コンポーネントをインストールして構築も可能ですが、今回のポイントではないので snap を利用する
以下のコマンドを実行します
# snap で nextcloud をインストールする
sudo snap install nextcloud # config ファイル場所:/var/snap/nextcloud/current/nextcloud/config/config.php
# インストール結果の確認
snap changes nextcloud
# バージョン履歴の確認
snap info nextcloud
Azure Blob Storage を利用 (BlobFuse)
NextCloud サーバーにAzure ストレージをマウントするのに、BlobFuse を利用します。
BlobFuse は以下の認証方法をサポートしているらしい
- ストレージ アカウント アクセス キー:※ 今回はこちらを利用する
- Shared Access Signature (SAS)
- マネージド ID
- サービス プリンシパル
Linux サーバーにログインして、以下のコマンドを実行します。
# Microsoft ソースをダウンロードします
wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
# Microsoft ソースをインストールします
sudo dpkg -i packages-microsoft-prod.deb
# システムを更新およびアップグレードします
sudo apt update && apt upgrade
# 必要なパッケージをインストール
sudo apt-get install vim
sudo apt-get install libcurl3-gnutls
sudo apt-get install fuse
# BlobFuse v1 のインストール(v2 もリリースしていますので、必要であればそちらをご参考ください)
sudo apt-get install blobfuse
# ローカル キャッシュ用フォルダ作成
# BlobFuse では、すべての開かれたファイルをバッファリングしてキャッシュするために、ファイル システム内で一時パスを要求することでネイティブのようなパフォーマンスを提供します。
sudo mkdir /mnt/resource/blobfusetmp -p # Azure VM の一時ディスクを使う(速度が速い)
# 構成ファイルを作成し、権限を設定する
sudo mkdir /path/to/ -p
sudo touch /path/to/fuse_connection.cfg
sudo chmod 600 /path/to/fuse_connection.cfg
# 構成ファイルにストレージ アカウントの情報を記載
# 形式:https://learn.microsoft.com/ja-jp/azure/storage/blobs/storage-how-to-mount-container-linux#authorize-access-to-your-storage-account
echo accountName <storageAccountName> >> /path/to/fuse_connection.cfg
echo accountKey <accessKey> >> /path/to/fuse_connection.cfg
echo containerName <containerName> >> /path/to/fuse_connection.cfg
# マウント先を用意
sudo mkdir /var/snap/nextcloud/common/nextcloud/data # ディレクトリがない場合、作成します。
sudo rm -rf /var/snap/nextcloud/common/nextcloud/data/* # ファイル削除
sudo rm -rf /var/snap/nextcloud/common/nextcloud/data/.* # 隠しファイルをすべて削除
# マウント
sudo blobfuse /var/snap/nextcloud/common/nextcloud/data/ --tmp-path=/mnt/resource/blobfusetmp --config-file=/path/to/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120 # Blob ストレージをマウントする
sudo ls -l /var/snap/nextcloud/common/nextcloud/data/ # マウント確認
マウント永続化設定
オプション 1:start up スクリプトで自動マウント
# スタートアップ スクリプト作成
sudo touch /etc/rc.local
# 実行可能ファイルに設定する
sudo chmod +x /etc/rc.local
# 中身を追加
sudo vi /etc/rc.local
追加内容
#!/bin/sh -e
sudo blobfuse /var/snap/nextcloud/common/nextcloud/data/ --tmp-path=/mnt/resource/blobfusetmp -o uid=33 -o gid=33 -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120 --config-file=/path/to/fuse_connection.cfg --log-level=LOG_DEBUG --file-cache-timeout-in-seconds=120
スクリプト実行
# スクリプトを実行する
/etc/rc.local
# マウント結果確認
ls -l /var/snap/nextcloud/common/nextcloud/data/
# 再起動して確認する
sudo shutdown -r now
オプション 2:fstab で自動マウント(動かなかった)
試してみたが、上手くいかなかったので、参考リンクを貼ります、、、
https://github.com/Azure/azure-storage-fuse/wiki/2.-Configuring-and-Running#persisting
NextCloud 構成
- サーバーの IP で、Web ページをアクセスする
- 管理者アカウントを作成
- 「インストール」実行
- 「推奨アプリをインストール」
構築は以上で完了です。
インストールが完了したら、Azure ストレージのコンテナにユーザーデータが作成されるので、確認してみてください。
永続化設定をした場合、サーバー再起動しても継続利用可能です。
コメント