公式の docker-compose.yml で環境を作成
nginx (proxy) + nginx (web) + Nextcloud (php-fpm) + mariaDB + redis の全部入り
git clone https://github.com/nextcloud/docker.git rsync -av docker/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/ /app/ cd /app
Nextcloudのdb部分と同じパスワードを設定する。
MYSQL_PASSWORD=[PASSWORD] MYSQL_DATABASE=nextcloud MYSQL_USER=nextcloud
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を有効にする。
あとはcronコンテナがcron.phpで実行してくれる。
こうすると、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
docker-compose stop docker-compose up -d
# 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
preview:pre-generate で実行すると、まだサムネイルができてないものだけ実行
# crontab -l */10 * * * * docker-compose exec -u www-data cron php occ preview:pre-generate -vvv
地図上に写真の場所をマッピングしてくれる。
アプリからMapsを有効にする。
あとはcronコンテキストが有効であれば自動でマッピングしてくれます。
※位置情報がない写真は先に位置情報を登録して上げる必要があります。
https://join.biglobe.ne.jp/mobile/sim/gurashi/ios_0060/
# 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 は、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
# 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, // ), ),
docker-compose stop
バージョンは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
docker-compose up -d
docker-compose exec -u www-data cron php occ upgrade