version: '3.8' services: # Database (PostgreSQL) next-db: image: docker.io/postgres:18 container_name: next-db environment: - POSTGRES_DB=${DB_DATABASE_NAME} - POSTGRES_USER=${DB_USERNAME} - POSTGRES_PASSWORD=${DB_PASSWORD} volumes: - /mnt/flash1/podman/nextcloud/config/db:/var/lib/postgresql restart: unless-stopped networks: - nextcloud_network # # Redis Cache # next_redis: # image: docker.io/redis:latest # container_name: next-redis # command: redis-server --save 60 1 --loglevel warning # volumes: # - ./data/redis:/data # restart: unless-stopped # networks: # - nextcloud_network # Nextcloud Main Application next: image: docker.io/nextcloud:latest container_name: next depends_on: - next-db ports: - "8808:80" environment: - POSTGRES_DB=${DB_DATABASE_NAME} - POSTGRES_USER=${DB_USERNAME} - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_HOST=${DB_HOST} - NEXTCLOUD_TRUSTED_DOMAINS=next.liphlink.xyz - NEXTCLOUD_ADMIN_USER=liph - NEXTCLOUD_ADMIN_PASSWORD=1ChagenexT volumes: - /mnt/flash1/podman/nextcloud/config/nextcloud/data:/var/www/html - /mnt/flash1/podman/nextcloud/config/nextcloud/config:/var/www/html/config:Z - /mnt/flash1/podman/nextcloud/config/nextcloud/apps:/var/www/html/custom_apps - /mnt/tank/ebooks_phil:/ebooks_phil:z - /mnt/tank/cloud_phil:/cloud_phil:z - /mnt/tank/ebooks_miri:/ebooks_miri:z - /mnt/tank/cloud_miri:/cloud_miri:z restart: unless-stopped networks: - nextcloud_network # # Collabora Online Office # collabora: # image: collabora/code:latest # container_name: collabora # ports: # - 9980:9980 # environment: # - domain=liphlink.xyz # - username=liph # - password=1ChagecolL # - extra_params=--o:ssl.enable=false # restart: unless-stopped # networks: # - nextcloud_network # OnlyOffice (alternative to Collabora) onlyoffice: image: docker.io/onlyoffice/documentserver:latest container_name: onlyoffice ports: - 8000:80 environment: - JWT_SECRET= 'joJVOvGpHYCahLnEeAShgm78r58VJl4C' volumes: - /mnt/flash1/podman/nextcloud/config/onlyoffice:/var/www/onlyoffice/Data restart: unless-stopped networks: - nextcloud_network obsidian: image: lscr.io/linuxserver/obsidian:latest container_name: obsidian security_opt: - seccomp:unconfined #optional environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /mnt/flash1/podman/nextcloud/config/obsidian:/config:z - /mnt/flash1/podman/nextcloud/config/vaults:/vault:z ports: - 3004:3000 - 3003:3001 shm_size: "1gb" restart: unless-stopped # # Talk (Video Conferencing) # talk: # image: jvillafa/turn:latest # container_name: nextcloud_talk # ports: # - 3478:3478/udp # - 3478:3478/tcp # - 65000-65535:65000-65535/udp # environment: # - TURN_SECRET=yourturnsecret # - NEXTCLOUD_TALK_IP=your_server_ip # restart: unless-stopped # networks: # - nextcloud_network # # Full-Text Search (optional) # fulltextsearch: # image: nextcloud/fulltextsearch:latest # container_name: nextcloud_fulltext # depends_on: # - nextcloud # environment: # - NEXTCLOUD_URL=http://nextcloud # volumes: # - nextcloud_data:/var/www/html # restart: unless-stopped # networks: # - nextcloud_network # # Cron for background jobs # cron: # image: nextcloud:latest # container_name: nextcloud_cron # depends_on: # - nextcloud # volumes: # - nextcloud_data:/var/www/html # - nextcloud_config:/var/www/html/config # - nextcloud_apps:/var/www/html/custom_apps # entrypoint: /cron.sh # restart: unless-stopped # networks: # - nextcloud_network volumes: pg_data: redis_data: nextcloud_data: nextcloud_config: nextcloud_apps: onlyoffice_data: networks: nextcloud_network: name: nextcloud_network