👓

クラウドストレージOSSのnextcloudをdockerでローカルに構築して外部ストレージにGCSを設定する

2024/05/28に公開

はじめに

クラウドストレージOSSのnextcloudをdockerでローカル環境に構築してみます。
その後、保存先としてGCPのクラウドストレージのGCSをS3互換エンドポイントで設定します。

nextcloudとは

個人や組織向けにセルフホスティング型のオンラインストレージとコラボレーションソフトウェアを提供するOSSです。DropboxやGoogle Driveのようなクラウドストレージサービスと同様に、ファイルを保存、共有、同期することができます。
また、Nextcloudはご自身のサーバーでホストするため、
データの機密性とセキュリティをより高めることができます。
https://nextcloud.com/
https://github.com/nextcloud

Nextcloudの主な機能

  • ファイル保存と共有
    • ファイルを安全に保存し、他のユーザーと共有することができます。
  • 同期
    • 複数のデバイス間でファイルを同期することができます。
  • カレンダーと連絡先
    • カレンダーと連絡先を管理することができます。
  • グループウェア
    • グループで作業するためのツールを提供します。
  • アプリ
    • ファイル管理、コミュニケーション、セキュリティなど、様々な機能を拡張するためのアプリをインストールすることができます。

構築

docker conposeファイル

docker compose用のファイルを作成します。

docker-compose.yaml
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ファイル

環境変数ファイルを作成します。

.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の作成を行います。
以前の記事にも書いていますのでご参考にしてください。
https://zenn.dev/persona/articles/5d64d8c22b5b45
※今回では上記記事の「CORSの設定」は不要だと思います。

nextcloudのGCS設定

「管理者設定」画面にアクセスしてください。


プラグインが有効になっていればサイドメニューに「外部ストレージ」が追加されています。
「外部ストレージ」設定画面から外部ストレージを追加することが可能になります。
GCSのS3互換エンドポイントを利用するので、「Amazon S3」を選択します。


以下のようにアクセスするGCSの情報を設定します。
ホスト名には「https://」の入力は不要なので注意してください。

外部ストレージの利用

ここまで設定が完了したら、利用可能になっているはずです。
上記で作成したフォルダ名「GCP」で外部ストレージができています。
※フォルダ名称は任意です

アップロードできれば無事完了です。

合同会社カメレオンミーム Tech Blog

Discussion