クラウドストレージOSSのnextcloudをdockerでローカルに構築して外部ストレージにGCSを設定する
はじめに
クラウドストレージOSSのnextcloudをdockerでローカル環境に構築してみます。
その後、保存先としてGCPのクラウドストレージのGCSをS3互換エンドポイントで設定します。
nextcloudとは
個人や組織向けにセルフホスティング型のオンラインストレージとコラボレーションソフトウェアを提供するOSSです。DropboxやGoogle Driveのようなクラウドストレージサービスと同様に、ファイルを保存、共有、同期することができます。
また、Nextcloudはご自身のサーバーでホストするため、
データの機密性とセキュリティをより高めることができます。
Nextcloudの主な機能
- ファイル保存と共有
- ファイルを安全に保存し、他のユーザーと共有することができます。
- 同期
- 複数のデバイス間でファイルを同期することができます。
- カレンダーと連絡先
- カレンダーと連絡先を管理することができます。
- グループウェア
- グループで作業するためのツールを提供します。
- アプリ
- ファイル管理、コミュニケーション、セキュリティなど、様々な機能を拡張するためのアプリをインストールすることができます。
構築
docker conposeファイル
docker compose用のファイルを作成します。
services:
nextcloud-db:
container_name: nextcloud-db
image: mariadb
restart: always
volumes:
- ./nextcloud-db:/var/lib/mysql
environment:
- MARIADB_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} # .envファイルに環境変数を設定
- MARIADB_PASSWORD=${MYSQL_PASSWORD} # .envファイルに環境変数を設定
- MARIADB_DATABASE=nextcloud
- MARIADB_USER=nextcloud
nextcloud:
container_name: nextcloud
image: nextcloud
ports:
- 8080:80
volumes:
- ./nextcloud:/var/www/html
restart: always
environment:
- MYSQL_HOST=nextcloud-db
- MYSQL_PASSWORD=${MYSQL_PASSWORD} # .envファイルに環境変数を設定
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
envファイル
環境変数ファイルを作成します。
MYSQL_ROOT_PASSWORD=nextcloud
MYSQL_PASSWORD=nextcloud
起動
docker compose up
or
docker compose up -d
※バックグラウンド起動するなら
終了するときは
docker compose down
※バックグラウンド起動していない場合は、別windowで叩けばOKです
アクセス
起動したら以下のURLにアクセスします
http:localhost:8080
管理者アカウントの作成を促されるのでアカウントとパスワードを入力してインストールボタンを押すと
以下のように表示されれば無事完了です。
外部ストレージの設定
管理者アカウントで操作してください。
プラグインの有効化
まず、「External storage suppot」プラグインが有効になっているか確認します。
「+アプリ」からアクティブなアプリを確認します。
もしアクティブになっていない場合は「無効なアプリ」から有効化してください。
GCP側の設定
バケットの作成とHMACの作成を行います。
以前の記事にも書いていますのでご参考にしてください。
※今回では上記記事の「CORSの設定」は不要だと思います。
nextcloudのGCS設定
「管理者設定」画面にアクセスしてください。
プラグインが有効になっていればサイドメニューに「外部ストレージ」が追加されています。
「外部ストレージ」設定画面から外部ストレージを追加することが可能になります。
GCSのS3互換エンドポイントを利用するので、「Amazon S3」を選択します。
以下のようにアクセスするGCSの情報を設定します。
ホスト名には「https://」の入力は不要なので注意してください。
外部ストレージの利用
ここまで設定が完了したら、利用可能になっているはずです。
上記で作成したフォルダ名「GCP」で外部ストレージができています。
※フォルダ名称は任意です
アップロードできれば無事完了です。
chameleonmeme.com/ きっかけは、偶然同じ現場で働いていたエンジニア3人の 「もっと仕事にのめり込んだり、熱中したいよね」という雑談でした。 営業から開発、サービスの提供まですべての工程を自分たちの手で行い、 気の合う仲間と楽しく仕事をすることで熱中するためにチームをスタートしました。
Discussion