LoginSignup
5
6

More than 1 year has passed since last update.

さくらのVPSでDoker-composeを利用してUbuntu 20.04にNextcloud環境を構築

Posted at

ベースのLinuxはUbuntu 20.04

1. DockerとDocker-composeをインストールします

2.必要に応じて任意の名前(例:nextcloud_on_docker)で新規ディレクトリを作成し、その中に以下のdocker-compose.ymlファイルを準備します

docker-compose.yml
version: '3'

services:

  proxy:
    image: jwilder/nginx-proxy:alpine
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
    container_name: nextcloud-proxy
    networks:
      - nextcloud
    ports:
      - 8080:80
    volumes:
      - ./proxy/conf.d:/etc/nginx/conf.d:rw
      - ./proxy/vhost.d:/etc/nginx/vhost.d:rw
      - ./proxy/html:/usr/share/nginx/html:rw
      - ./proxy/certs:/etc/nginx/certs:ro
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./server.conf:/etc/nginx/conf.d/server.conf #大きなファイルをアップロードするための設定
    restart: unless-stopped

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: nextcloud-letsencrypt
    depends_on:
      - proxy
    networks:
      - nextcloud
    volumes:
      - ./proxy/certs:/etc/nginx/certs:rw
      - ./proxy/vhost.d:/etc/nginx/vhost.d:rw
      - ./proxy/html:/usr/share/nginx/html:rw
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: unless-stopped

  db:
    image: mariadb
    container_name: nextcloud-mariadb
    networks:
      - nextcloud
    volumes:
      - db:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    environment:
      - MYSQL_ROOT_PASSWORD=<自分の好きなパスワードを設定>
      - MYSQL_PASSWORD=<自分の好きなパスワードを設定>
      - MYSQL_DATABASE=<自分の好きなデータベース名を設定>
      - MYSQL_USER=<自分の好きなユーザ名を設定>
    restart: unless-stopped

  app:
    image: nextcloud:latest
    container_name: nextcloud-app
    networks:
      - nextcloud
    depends_on:
      - letsencrypt
      - proxy
      - db
    volumes:
      - nextcloud:/var/www/html
      - ./app/config:/var/www/html/config
      - ./app/custom_apps:/var/www/html/custom_apps
      - ./app/data:/var/www/html/data
      - ./app/themes:/var/www/html/themes
      - /etc/localtime:/etc/localtime:ro
    environment:
      - VIRTUAL_HOST=<さくらのVPSから割り振られたIPアドレスを指定>
      - LETSENCRYPT_HOST=<上記のIPアドレスを利用しているホスト名を指定>
      - LETSENCRYPT_EMAIL=<自分が利用しているemailアドレスを指定>
    restart: unless-stopped

volumes:
  nextcloud:
  db:

networks:
  nextcloud:

※ymlファイルの中の以下7項目の設定を忘れないようにしてください。
- MYSQL_ROOT_PASSWORD=<自分の好きなパスワードを設定>
- MYSQL_PASSWORD=<自分の好きなパスワードを設定>
- MYSQL_DATABASE=<自分の好きなデータベース名を設定>
- MYSQL_USER=<自分の好きなユーザ名を設定>
-
- VIRTUAL_HOST=<さくらのVPSから割り振られたIPアドレスを指定>
- LETSENCRYPT_HOST=<上記のIPアドレスを利用しているホスト名を指定>
- LETSENCRYPT_EMAIL=<自分が利用しているemailアドレスを指定>

3.docker-compose.ymlファイルと同じ階層にserver.confファイルを新規作成して、以下内容を書き込みます

server.conf
client_max_body_size 0;

※この対応を行わないと、大きなサイズのファイルがnginxによって制限を受けてアップロードできません。
大きいファイルをアップロードしようとすると「不明なエラーが発生しました」「An unknown error has occurred」などが出てうまくいきません。

※client_max_body_sizeとして「0」を指定していますが、これは上限無しです。上限を設定したい場合には150Mなどの上限値を設定してください。

4. docker-compose.ymlに記載した「nextcloud」という名前のdockerのネットワークを以下コマンドで作成します

$ docker network create nextcloud

別に「nextcloud」というネットワーク名でなくてもいいですが、その場合にはdocker-compose.ymlの内容もそれに合わせて修正してください

5. 以下コマンドを実行すればあとはDockerが勝手に環境をつくってくれます

$ docker-compose up -d

6. さくらのVPSのホストの最後に:8080のポートを指定してWebブラウザでアクセスすればNextcloudの環境が手に入ったことが確認できます

5
6
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
5
6