ベースのLinuxはUbuntu 20.04
####1. DockerとDocker-composeをインストールします
####2.必要に応じて任意の名前(例:nextcloud_on_docker)で新規ディレクトリを作成し、その中に以下の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ファイルを新規作成して、以下内容を書き込みます
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の環境が手に入ったことが確認できます