diff --git a/config/docker/nextcloud/docker-compose.yml b/config/docker/nextcloud/docker-compose.yml new file mode 100644 index 0000000..edb32be --- /dev/null +++ b/config/docker/nextcloud/docker-compose.yml @@ -0,0 +1,83 @@ +# DEPLOYMENT LOCATION: /opt/docker/nextcloud/docker-compose.yml +# Deploy with: +# sudo mkdir -p /opt/docker/nextcloud +# sudo cp config/docker/nextcloud/docker-compose.yml /opt/docker/nextcloud/ +# sudo cp config/docker/nextcloud/.env /opt/docker/nextcloud/ +# cd /opt/docker/nextcloud && sudo docker-compose up -d + +services: + nextcloud-db: + image: mariadb:10.11 + restart: unless-stopped + container_name: nextcloud-db + environment: + - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password + - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + volumes: + - nextcloud_db:/var/lib/mysql + networks: + - nextcloud + secrets: + - mysql_root_password + - mysql_password + + nextcloud-redis: + image: redis:7-alpine + restart: unless-stopped + container_name: nextcloud-redis + networks: + - nextcloud + + nextcloud-app: + image: nextcloud:29 + restart: unless-stopped + container_name: nextcloud-app + ports: + - "8083:80" + environment: + - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_HOST=nextcloud-db + - REDIS_HOST=nextcloud-redis + - NEXTCLOUD_TRUSTED_DOMAINS=ak-homelab.duckdns.org 192.168.0.100 localhost + - NEXTCLOUD_ADMIN_USER=hoborg + - NEXTCLOUD_ADMIN_PASSWORD_FILE=/run/secrets/nextcloud_admin_password + - OVERWRITEPROTOCOL=https + - OVERWRITEHOST=ak-homelab.duckdns.org + - OVERWRITEWEBROOT=/cloud + volumes: + - nextcloud_data:/var/www/html + # External storage mounts for existing folders + - /home/hoborg/shared:/external_storage/shared:rw + - /home/hoborg/Documents:/external_storage/documents:rw + - /home/hoborg/Music:/external_storage/music:rw + - /home/hoborg/Videos:/external_storage/videos:rw + - /home/hoborg/Pictures:/external_storage/pictures:rw + - /home/hoborg/private:/external_storage/private:rw + depends_on: + - nextcloud-db + - nextcloud-redis + networks: + - nextcloud + secrets: + - mysql_password + - nextcloud_admin_password + +secrets: + mysql_root_password: + file: /home/hoborg/creds/nextcloud_mysql_root_password.txt + mysql_password: + file: /home/hoborg/creds/nextcloud_mysql_password.txt + nextcloud_admin_password: + file: /home/hoborg/creds/nextcloud_admin_password.txt + +volumes: + nextcloud_db: + nextcloud_data: + +networks: + nextcloud: + driver: bridge