version: '3.8' # Nextcloud - Cloud Storage with Database and Redis # Backlog: Application Deployment # Ports: 8082 # GPU: No # Storage: SSD (config/database), HDD (user data) services: nextcloud-db: image: mariadb:10.11 container_name: nextcloud-db command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW restart: unless-stopped volumes: # Database on SSD for performance - /home/jpmschweitzer/docker-data/nextcloud/db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=xDgobrmzXOl+GgvBdXC9+z5v0OrWb29t - MYSQL_PASSWORD=maF91Sw9is6Zb57JVxU/gPGP8O/DsxFq - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - TZ=Europe/Amsterdam networks: - nextcloud-network nextcloud-redis: image: redis:alpine container_name: nextcloud-redis restart: unless-stopped environment: - TZ=Europe/Amsterdam networks: - nextcloud-network nextcloud: image: nextcloud:stable container_name: nextcloud restart: unless-stopped ports: - "8082:80" volumes: # App config on SSD - /home/jpmschweitzer/docker-data/nextcloud/config:/var/www/html # User data on HDD (large files) - /mnt/media/nextcloud/data:/var/www/html/data environment: - MYSQL_HOST=nextcloud-db - MYSQL_PASSWORD=maF91Sw9is6Zb57JVxU/gPGP8O/DsxFq - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - REDIS_HOST=nextcloud-redis - TZ=Europe/Amsterdam depends_on: - nextcloud-db - nextcloud-redis networks: - nextcloud-network networks: nextcloud-network: driver: bridge # ⚠️ SECURITY WARNING: # Change MYSQL_ROOT_PASSWORD and MYSQL_PASSWORD before deploying! # Use strong, unique passwords. # # After Deployment: # 1. Access http://localhost:8082 # 2. First-time setup: # - Create admin account (strong password!) # - Data folder: /var/www/html/data (default) # - Database: MySQL/MariaDB # - Database user: nextcloud # - Database password: (the one you set above) # - Database name: nextcloud # - Database host: nextcloud-db # 3. Wait for installation (may take a few minutes) # 4. Configure trusted domains: # docker exec -u www-data nextcloud php occ config:system:set trusted_domains 1 --value=tower-of-joy # docker exec -u www-data nextcloud php occ config:system:set trusted_domains 2 --value=192.168.x.x # # Optimization (recommended): # docker exec -u www-data nextcloud php occ db:add-missing-indices # docker exec -u www-data nextcloud php occ db:convert-filecache-bigint # docker exec -u www-data nextcloud php occ background:cron # # Add cron job for background tasks: # echo "*/5 * * * * docker exec -u www-data nextcloud php cron.php" | sudo tee -a /etc/crontab # # Features: # - File sync and share # - Calendar and contacts # - Collaborative editing # - Photo gallery # - Mobile apps (iOS/Android) # - Desktop sync client # - External storage support