Files
homelab/config/docker/nextcloud/docker-compose.yml
Arpad Krejczinger a1d7128a41 Add Nextcloud Docker configuration with secure password handling
- Complete Docker Compose setup with MariaDB and Redis
- External storage mounts for existing homelab folders
- Secure password handling using Docker secrets from ~/creds/
- Configured for /cloud path with proper reverse proxy settings

Note: Nextcloud was tested but disabled in favor of copyparty for
file server functionality due to performance and complexity concerns.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-19 19:40:25 +02:00

84 lines
2.5 KiB
YAML

# 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