100 lines
2.9 KiB
YAML
100 lines
2.9 KiB
YAML
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
|