====== 2022.10.01 Nextcloud ====== 公式の docker-compose.yml で環境を作成 [[https://github.com/nextcloud/docker/tree/master/.examples/docker-compose/with-nginx-proxy/mariadb/fpm]] nginx (proxy) + nginx (web) + Nextcloud (php-fpm) + mariaDB + redis の全部入り ===== git で持ってくる ===== git clone https://github.com/nextcloud/docker.git rsync -av docker/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/ /app/ cd /app ===== db.env ===== Nextcloudのdb部分と同じパスワードを設定する。 MYSQL_PASSWORD=[PASSWORD] MYSQL_DATABASE=nextcloud MYSQL_USER=nextcloud ===== docker-compose.yml ===== root@nextcloud:/app# cat docker-compose.yml version: '3' services: db: image: mariadb:10.5 command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW restart: always volumes: - ./db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=[PASSWORD] - MARIADB_AUTO_UPGRADE=1 - MARIADB_DISABLE_UPGRADE_BACKUP=1 env_file: - db.env redis: image: redis:alpine restart: always app: image: nextcloud:fpm-alpine restart: always volumes: - ./nextcloud:/var/www/html environment: - MYSQL_HOST=db - REDIS_HOST=redis - PHP_MEMORY_LIMIT=1G - PHP_UPLOAD_LIMIT=5G - OVERWRITEPROTOCOL=https env_file: - db.env depends_on: - db - redis web: build: ./web restart: always volumes: - ./nextcloud:/var/www/html:ro environment: - VIRTUAL_HOST=nextcloud.hogehoge.com - LETSENCRYPT_HOST=nextcloud.hogehoge.com - LETSENCRYPT_EMAIL=matsui@nextcloud.hogehoge.com depends_on: - app networks: - proxy-tier - default cron: image: nextcloud:fpm-alpine restart: always volumes: - ./nextcloud:/var/www/html entrypoint: /cron.sh depends_on: - db - redis proxy: build: ./proxy restart: always ports: - 80:80 - 443:443 labels: com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true" volumes: - certs:/etc/nginx/certs:ro - vhost.d:/etc/nginx/vhost.d - html:/usr/share/nginx/html - /var/run/docker.sock:/tmp/docker.sock:ro networks: - proxy-tier letsencrypt-companion: image: nginxproxy/acme-companion restart: always volumes: - certs:/etc/nginx/certs - acme:/etc/acme.sh - vhost.d:/etc/nginx/vhost.d - html:/usr/share/nginx/html - /var/run/docker.sock:/var/run/docker.sock:ro networks: - proxy-tier depends_on: - proxy # self signed # omgwtfssl: # image: paulczar/omgwtfssl # restart: "no" # volumes: # - certs:/certs # environment: # - SSL_SUBJECT=nc.kumolabo.com # - CA_SUBJECT=shinya.matsui@gmogshd.com # - SSL_KEY=/certs/servhostname.local.key # - SSL_CSR=/certs/servhostname.local.csr # - SSL_CERT=/certs/servhostname.local.crt # networks: # - proxy-tier volumes: db: nextcloud: certs: acme: vhost.d: html: networks: proxy-tier: ===== Preview Generator ===== Preview Generatorを入れとくと、自動でサムネイルを作成してくれる。 ==== 1.UIからアプリを入れる ==== アプリからPreview Generatorを有効にする。 あとはcronコンテナがcron.phpで実行してくれる。 ==== 2.docker-compose.yml修正 ==== こうすると、Preview Generatorに必要なffmpegがインストールされる。 app: image: nextcloud:fpm-alpine restart: always volumes: - ./nextcloud:/var/www/html environment: - MYSQL_HOST=db - REDIS_HOST=redis - PHP_MEMORY_LIMIT=1G - PHP_UPLOAD_LIMIT=5G - OVERWRITEPROTOCOL=https entrypoint: sh command: - -c - apk add sudo && apk add ffmpeg && /entrypoint.sh php-fpm env_file: - db.env depends_on: - db - redis ==== 3.反映 ==== docker-compose stop docker-compose up -d ==== 4.手動で実行する場合 ==== # docker-compose exec -u www-data cron php occ preview:generate-all -vvv もしくは # docker exec app-cron-1 sudo -u www-data PHP_MEMORY_LIMIT=512M php occ preview:generate-all -vvv ==== 5.Cronを設定しておく ==== preview:pre-generate で実行すると、まだサムネイルができてないものだけ実行 # crontab -l */10 * * * * docker-compose exec -u www-data cron php occ preview:pre-generate -vvv ===== Maps ===== 地図上に写真の場所をマッピングしてくれる。 https://apps.nextcloud.com/apps/maps ==== 1.Mapsを有効化 ==== アプリからMapsを有効にする。 あとはcronコンテキストが有効であれば自動でマッピングしてくれます。 ※位置情報がない写真は先に位置情報を登録して上げる必要があります。 [[https://join.biglobe.ne.jp/mobile/sim/gurashi/ios_0060/]] ==== 2.手動で実行する場合 ==== # docker-compose exec -u www-data app php occ maps:scan-photos もしくは # docker exec app-cron-1 sudo -u www-data PHP_MEMORY_LIMIT=512M php occ maps:scan-photos ===== Let's Encrypt ===== Let's Encrypt は、nginxproxy/acme-companionで動いててて \\ 下記のような感じで、1時間おきに動作している Creating/renewal nextcloud.hogehoge.com certificates... (nextcloud.hogehoge.com) [Wed Dec 21 21:46:22 UTC 2022] Domains not changed. [Wed Dec 21 21:46:22 UTC 2022] Skip, Next renewal time is: Fri Jan 27 07:34:32 UTC 2023 [Wed Dec 21 21:46:22 UTC 2022] Add '--force' to force to renew. Sleep for 3600s Creating/renewal nextcloud.hogehoge.com certificates... (nextcloud.hogehoge.com) [Wed Dec 21 22:46:23 UTC 2022] Domains not changed. [Wed Dec 21 22:46:23 UTC 2022] Skip, Next renewal time is: Fri Jan 27 07:34:32 UTC 2023 [Wed Dec 21 22:46:23 UTC 2022] Add '--force' to force to renew. Sleep for 3600s ===== NextCloudでオブジェクトストレージ利用 ===== # cat nextcloud/config/config.php 'objectstore' => array ( 'class' => 'OC\\Files\\ObjectStore\\S3', 'arguments' => array ( 'bucket' => 'testbuckets', //オブジェクトストレージのバケット名 'autocreate' => true, 'key' => 'XXXXXXXXXXXXXXXXXXXXX', // Access key 'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // Secret access key: 'hostname' => 's3.hoghoge.com', //オブジェクトストレージのホスト名 'port' => 443, // 'use_ssl' => true, //ssl 'use_path_style' => true, // ), ), ===== upgrade ===== ==== 1 停止 ==== docker-compose stop ==== 2 Dockerイメージ変更 ==== バージョンは1つずつアップデートする必要があります。 vi docker-compose.yml app: image: nextcloud:24-fpm-alpine cron: image: nextcloud:24-fpm-alpine ↓に変更 app: image: nextcloud:25-fpm-alpine cron: image: nextcloud:25-fpm-alpine ==== 3 起動 ==== docker-compose up -d ==== 4 アップグレード作業 ==== docker-compose exec -u www-data cron php occ upgrade {{tag>日記 Nextcloud}}