Docker-composeによるNextCloudのインストール
NextCloudをDockse-composeでインストールした。
NextCloudのインストール
NextCloudのバージョンは、24.0.5を使った。NextCloudはバージョンによって異なるバグがあるようなので注意(経験上)。
version: '3'
services:
nextcloud:
image: nextcloud:24.0.5
container_name: nextcloud
volumes:
- ./data:/var/www/html
environment:
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=***
- MYSQL_PASSWORD=***
- MYSQL_HOST=mariadb
- PHP_UPLOAD_LIMIT=16G
# port 3000
restart: always
networks:
default:
external:
name: common-network
common-network上にmariadbがあり、そちらでnextcloudというDBを作成済。注意点としてPHP_UPLOAD_LIMITを入れておかないと、デフォルトでは512Mまでしかアップロードできない。
https-portalの設定
※2023/3/23追記:現座はhttps-portalは使用していない。全面的にtraefikに移行している。
httpsの処理をさせるには、https-portalを使用している。
version: '3'
services:
https-portal:
image: steveltn/https-portal:1
container_name: https-portal
ports:
- '80:80'
- '443:443'
restart: always
volumes:
- ./ssl_certs:/var/lib/https-portal
networks:
- default
environment:
CLIENT_MAX_BODY_SIZE: 16G
DOMAINS: >-
example.com -> http://wordpress:80
,nodebb.example.com -> http://nodebb:4567
,nc.example.com -> http://nextcloud:80
STAGE: 'production' # Don't use production until staging works
networks:
default:
external:
name: common-network
注意点として、CLIENT_MAX_BODY_SIZE: 16Gを入れておかないと、デフォルトでは1Mまでしかアップロードできない。ただし、ここにこの設定をしてしまうと、他のすべてのウェブ画面でのユーザ入力に効いてしまうため、不特定多数が不特定の長さの入力ができる場合には注意する。
Windowsデスクトップクライアントからの接続
NextCloudは常にトラブルを起こす。ウェブ上でのログインに問題があるバージョンもあったが、今回は、Windows用クライアントからの接続に難があった。
「ログインURLがHTTPSで始まっているにもかかわらず、ポーリングURLがHTTPSで始まっていません。セキュリティ上の問題がある可能性があるため、ログインできません。管理者に連絡してください」
これは以下で解決されていた。
The polling url does not start with https despite the login url started with https
データ領域のconfig/config.phpに一行書き込めばよい。
'trusted_domains' =>
array (
0 => 'domain.ltd',
),
'overwrite.cli.url' => 'https://domain.ltd',
'overwriteprotocol' => 'https',
※ブラウザ画面によるインストール操作後にconfig.phpが作成されるので、それ以前には編集できない。あるいは、そもそもconfig.sample.phpをもとにしてあらかじめconfig.phpを書いておいても良いのかもしれない。
※2023/3/23追記:そもそもNextcloudはhttpでのアクセスを前提としているようで、httpsでアクセスさせるには、docker-compose.ymlの環境変数を設定しておかなければいけなかった。
environment:
- OVERWRITEPROTOCOL=https
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=***
- MYSQL_PASSWORD=***
- MYSQL_HOST=mariadb
- PHP_UPLOAD_LIMIT=16G