8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NextcloudをDockerでお手軽に構築してみる

Posted at

概要

OSSのオンラインストレージサービス「Nextcloud」をDockerで構築してどのように使えるのか確認してみます

$ docker -v
Docker version 18.09.2, build 6247962
$ docker-compose -v
docker-compose version 1.23.2, build 1110ad01

Nextcloud立ち上げ

まずNextcloudのコンテナを立ち上げて、ブラウザからアクセスをしてみます

イメージはOfficial Imageが用意されているのでこちらを使います
https://hub.docker.com/_/nextcloud

また、Apacheとfpmのイメージがありますが、今回は起動してすぐに使えるApacheのイメージを使います

docker-compose.yml
version: '2'
services:
  web:
    image: nextcloud:16.0.5-apache
    ports:
      - "8080:80"

docker-compose.ymlを作成し、コンテナを起動します

$ docker-compose build
$ docker-compose up -d

これでNextcloudが立ち上がったので、ブラウザでアクセスしてみます

スクリーンショット 2019-09-28 18.14.12.png

初回アクセス時には管理者アカウントの作成とDBの初期設定を行う画面が表示されるので、
一旦DBはこのままで管理者アカウントを入力してセットアップを完了します

スクリーンショット 2019-09-28 18.19.37.png

セットアップ完了後、作成した管理者でログインした状態でトップページが表示されます

デフォルトでサンプルファイルがいくつか用意されています

スクリーンショット 2019-09-28 18.23.37.png

PDFファイルを選択すると、内蔵されたビュワーで表示されます

スクリーンショット 2019-09-28 18.25.35.png

テキストファイルを選択すると、エディターが表示されてそのまま編集することができます

その他にもNextcloudにはアプリというものが用意されており、
プラグインのような形で機能の追加や画面のカスタマイズを行うことができます

DBとの連携

NextcloudではDBにSQLite, MySQL, MariaDB, PostgreSQLを使用することができ、
先ほどは別途環境を用意しなくても良いSQLiteでセットアップを行いましたが、
本番環境でも使用できるようにPostgreSQLのコンテナを立ち上げて接続を行います

まず先ほどのコンテナを一度落としておきます

$ docker-compose down

docker-compose.ymlを以下のように変更します

docker-compose.yml
version: '2'
services:
  web:
    image: nextcloud:16.0.5-apache
    volumes:
      - webdata:/var/www/html
    ports:
      - "8080:80"

  db:
    image: postgres:11.5-alpine
    ports:
      - "5432:5432"
    volumes:
      - dbdata:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=secret

volumes:
  webdata:
  dbdata:

コンテナを落としてもデータを永続化できるようにデータボリュームを追加しています

この状態で再度コンテナの立ち上げを行います

$ docker-compose up -d

コンテナが起動したらブラウザでアクセスします

先ほどと同じように管理者アカウントを入力し、ストレージとデータベースをクリックして以下のように入力します

  • データベース:PostgreSQL
  • ユーザー名:postgres
  • パスワード:secret
  • データベース名:nextcloud
  • ホスト名:db:5432

※データベース名はここで入力したものをセットアップ時に自動作成してくれるため、
事前に作成しておく必要はありません

セットアップが完了すると先ほどと同じようにトップページが表示されます

DBのコンテナに入って見てみるとテーブルなどが作成されていることが確認できます

bash-5.0# psql -U postgres nextcloud
psql (11.5)
Type "help" for help.

nextcloud=# \d
                          List of relations
 Schema |                 Name                 |   Type   |  Owner   
--------+--------------------------------------+----------+----------
 public | oc_accounts                          | table    | oc_admin
 public | oc_activity                          | table    | oc_admin
 public | oc_activity_activity_id_seq          | sequence | oc_admin
 public | oc_activity_mq                       | table    | oc_admin
 public | oc_activity_mq_mail_id_seq           | sequence | oc_admin
 public | oc_addressbookchanges                | table    | oc_admin
 public | oc_addressbookchanges_id_seq         | sequence | oc_admin
 public | oc_addressbooks                      | table    | oc_admin
 public | oc_addressbooks_id_seq               | sequence | oc_admin
 public | oc_appconfig                         | table    | oc_admin
 public | oc_authtoken                         | table    | oc_admin
 public | oc_authtoken_id_seq                  | sequence | oc_admin
 public | oc_bruteforce_attempts               | table    | oc_admin
 public | oc_bruteforce_attempts_id_seq        | sequence | oc_admin
 public | oc_calendar_invitations              | table    | oc_admin
 public | oc_calendar_invitations_id_seq       | sequence | oc_admin
 public | oc_calendar_resources                | table    | oc_admin
 public | oc_calendar_resources_id_seq         | sequence | oc_admin
 public | oc_calendar_rooms                    | table    | oc_admin
 public | oc_calendar_rooms_id_seq             | sequence | oc_admin
 public | oc_calendarchanges                   | table    | oc_admin
 public | oc_calendarchanges_id_seq            | sequence | oc_admin
 public | oc_calendarobjects                   | table    | oc_admin
 public | oc_calendarobjects_id_seq            | sequence | oc_admin
 public | oc_calendarobjects_props             | table    | oc_admin
 public | oc_calendarobjects_props_id_seq      | sequence | oc_admin
 public | oc_calendars                         | table    | oc_admin
 public | oc_calendars_id_seq                  | sequence | oc_admin
 public | oc_calendarsubscriptions             | table    | oc_admin
 public | oc_calendarsubscriptions_id_seq      | sequence | oc_admin
 public | oc_cards                             | table    | oc_admin
 public | oc_cards_id_seq                      | sequence | oc_admin
 public | oc_cards_properties                  | table    | oc_admin
 public | oc_cards_properties_id_seq           | sequence | oc_admin
 public | oc_collres_accesscache               | table    | oc_admin
 public | oc_collres_collections               | table    | oc_admin
 public | oc_collres_collections_id_seq        | sequence | oc_admin
 public | oc_collres_resources                 | table    | oc_admin
 public | oc_comments                          | table    | oc_admin
 public | oc_comments_id_seq                   | sequence | oc_admin
 public | oc_comments_read_markers             | table    | oc_admin
 public | oc_credentials                       | table    | oc_admin
 public | oc_dav_shares                        | table    | oc_admin
 public | oc_dav_shares_id_seq                 | sequence | oc_admin
 public | oc_directlink                        | table    | oc_admin
 public | oc_directlink_id_seq                 | sequence | oc_admin
 public | oc_federated_reshares                | table    | oc_admin
 public | oc_file_locks                        | table    | oc_admin
--More-- 
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?