- 日本語 (ja)
- English (en)
最近の更新
最近の更新
公式の 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