This repository has been archived on 2022-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
docker_systems/nextcloud/docker-compose.yml

137 lines
5.4 KiB
YAML

version: "2"
services:
traefik:
image: "traefik:v2.2"
ports:
- "443:443"
volumes:
- "./traefik.yaml:/etc/traefik/traefik.yaml:ro"
- "./letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
restart: unless-stopped
db:
image: mariadb:10.5-focal
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: unless-stopped
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=yes
- MYSQL_PASSWORD
- MYSQL_DATABASE
- MYSQL_USER
redis:
image: redis:alpine
restart: unless-stopped
app:
build: ./nextcloud
environment:
- MYSQL_PASSWORD
- MYSQL_DATABASE
- MYSQL_USER
- MYSQL_HOST=db
- NEXTCLOUD_ADMIN_USER
- NEXTCLOUD_ADMIN_PASSWORD
- "NEXTCLOUD_TRUSTED_DOMAINS=${APP_DOMAIN} ${NEXTCLOUD_TRUSTED_DOMAINS}"
- REDIS_HOST=redis
- SMTP_HOST
- SMTP_SECURE
- SMTP_PORT
- SMTP_NAME
- SMTP_PASSWORD
- MAIL_FORM_ADDRESS
depends_on:
- db
- redis
volumes:
- ./data:/var/www/html
- ./custom-php.ini:/usr/local/etc/php/conf.d/zzz-custom.ini
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.rule=Host(`${APP_DOMAIN}`)"
- "traefik.http.routers.nextcloud.entrypoints=websecure"
- "traefik.http.routers.nextcloud.tls.certresolver=myresolver"
- "traefik.http.routers.nextcloud.middlewares=default-headers@file"
restart: unless-stopped
cron:
image: nextcloud:22.1-apache
restart: unless-stopped
volumes:
- ./data:/var/www/html
entrypoint: /cron.sh
depends_on:
- db
- redis
photoprism:
## Use photoprism/photoprism:preview for testing preview builds:
image: photoprism/photoprism:latest
depends_on:
- mariadb
restart: unless-stopped
security_opt:
- seccomp:unconfined
- apparmor:unconfined
environment:
- PHOTOPRISM_ADMIN_PASSWORD
- PHOTOPRISM_SITE_URL=https://photos.zweili.org/ # public server URL incl http:// or https:// and /path, :port is optional
- PHOTOPRISM_ORIGINALS_LIMIT=5000 # file size limit for originals in MB (increase for high-res video)
- PHOTOPRISM_HTTP_COMPRESSION=gzip # improves transfer speed and bandwidth utilization (none or gzip)
- PHOTOPRISM_DEBUG=false # run in debug mode (shows additional log messages)
- PHOTOPRISM_PUBLIC=false # no authentication required (disables password protection)
- PHOTOPRISM_READONLY=true # don't modify originals directory (reduced functionality)
- PHOTOPRISM_EXPERIMENTAL=false # enables experimental features
- PHOTOPRISM_DISABLE_CHOWN=false # disables storage permission updates on startup
- PHOTOPRISM_DISABLE_WEBDAV=true # disables built-in WebDAV server
- PHOTOPRISM_DISABLE_SETTINGS=false # disables Settings in Web UI
- PHOTOPRISM_DISABLE_TENSORFLOW=false # disables all features depending on TensorFlow
- PHOTOPRISM_DISABLE_FACES=false # disables facial recognition
- PHOTOPRISM_DISABLE_CLASSIFICATION=false # disables image classification
- PHOTOPRISM_DARKTABLE_PRESETS=false # enables Darktable presets and disables concurrent RAW conversion
- PHOTOPRISM_DETECT_NSFW=false # flag photos as private that MAY be offensive (requires TensorFlow)
- PHOTOPRISM_UPLOAD_NSFW=true # allows uploads that MAY be offensive
- PHOTOPRISM_DATABASE_DRIVER=mysql # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance
- PHOTOPRISM_DATABASE_SERVER=photoprism-db:3306 # MariaDB or MySQL database server (hostname:port)
- PHOTOPRISM_DATABASE_NAME=photoprism # MariaDB or MySQL database schema name
- PHOTOPRISM_DATABASE_USER=photoprism # MariaDB or MySQL database user name
- PHOTOPRISM_DATABASE_PASSWORD
- PHOTOPRISM_SITE_TITLE=PhotoPrism
- PHOTOPRISM_SITE_CAPTION=AI-Powered Photos App
- PHOTOPRISM_SITE_DESCRIPTION=""
- PHOTOPRISM_SITE_AUTHOR=""
- PHOTOPRISM_UID=33
- PHOTOPRISM_GID=33
# PHOTOPRISM_UMASK: 0000
## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user)
#user: "1000:100"
working_dir: "/photoprism"
volumes:
- "./data/data/andreas/files/20_pictures:/photoprism/originals:ro" # original media files (photos and videos)
- "./storage:/photoprism/storage" # *writable* storage folder for cache, database, and sidecar files (never remove)
labels:
- "traefik.enable=true"
- "traefik.http.routers.photoprism.rule=Host(`photos.zweili.org`)"
- "traefik.http.routers.photoprism.entrypoints=websecure"
- "traefik.http.routers.photoprism.tls.certresolver=myresolver"
- "traefik.http.routers.photoprism.middlewares=default-headers@file"
photoprism-db:
restart: unless-stopped
image: mariadb:10.6
security_opt:
- seccomp:unconfined
- apparmor:unconfined
command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
volumes:
- "./database:/var/lib/mysql" # important, don't remove
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=yes
- MYSQL_DATABASE=photoprism
- MYSQL_USER=photoprism
- MYSQL_PASSWORD=${PHOTOPRISM_DATABASE_PASSWORD}