Skip to main content

Mettre en place Nextcloud Docker

Prérequis :
  • Avoir une base de donnée Postgres déployé en local 
  • Avoir un nom de domaine
    • Dans notre cas le nom de domaine utilisé est : miraceti.net


Il existe plusieurs manière de mettre en place Nextcloud Docker. Dans notre cas nous allons utiliser une base de données Postgres déjà déployé avec Docker  

Configuration nom de domaine

Grâce à notre nom de domaine, nous allons pouvoir créer des sous domaine (en CNAME A).

Sur le site de nom de domaine respectif, dans la section DNS, ajouter l'entrée suivante : 

  • cloud.miraceti.net      A       ip.adress.server


Configuration Docker Compose

Pour accéder à notre base de données externe, nous devons importer le network  lié à la base de donnée (dans notre cas le network est "bddnetwork").  
De plus dans la variable d'environnement POSTGRES_HOST du conteneur de nextcloud on doit renseigner le nom du conteneur BDD externe (Dans notre cas "postgres")

Fichier docker-compose.yaml

services:

  nextcloud:
    image: ${NEXTCLOUD_IMAGE_TAG}
    container_name: nextcloud
    networks:
      - bddnetwork
    ports: 
      - 8082:80
    volumes:
      - /path/to/data/nextcloud:/var/www/html    
      - /path/to/conf/nextcloud/config:/var/www/html/config
    restart: unless-stopped
    environment:
      TZ: ${NEXTCLOUD_TIMEZONE}
      POSTGRES_HOST: postgres
      DB_PORT: 5432
      POSTGRES_DB: ${NEXTCLOUD_DB_NAME}
      POSTGRES_USER: ${NEXTCLOUD_DB_USER}
      POSTGRES_PASSWORD: ${NEXTCLOUD_DB_PASSWORD}
      REDIS_HOST: redis-nextcloud
      REDIS_HOST_PORT: 6379
      REDIS_HOST_PASSWORD: ${NEXTCLOUD_REDIS_PASSWORD}      
#      TRUSTED_PROXIES: ${NEXTCLOUD_HOSTNAME}
      OVERWRITECLIURL: ${NEXTCLOUD_URL}
      OVERWRITEPROTOCOL: https
      OVERWRITEHOST: ${NEXTCLOUD_HOSTNAME}
#      PHP_MEMORY_LIMIT: 2048M			# If you want to overwritte Php Memory Limit 
#      PHP_UPLOAD_LIMIT: 2048M			# If you want to overwritte Php Upload Limit

  redis-nextcloud:
    image: ${NEXTCLOUD_REDIS_IMAGE_TAG}
    container_name: redis-nextcloud
    command: ["redis-server", "--requirepass", "$NEXTCLOUD_REDIS_PASSWORD"]
    volumes:
      - /path/to/data/redis-nextcloud:/data
    networks:
      - bddnetwork
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 60s
    restart: unless-stopped

volumes:
 nextcloud:
 redis-nextcloud:

networks:
  bddnetwork:
    external: true


Fichier .env :

# Nextcloud Variables
NEXTCLOUD_REDIS_IMAGE_TAG=redis:7.2
NEXTCLOUD_IMAGE_TAG=nextcloud:29.0
NEXTCLOUD_REDIS_PASSWORD=5454fdsLJDSqd45
NEXTCLOUD_DB_NAME=nextclouddb
NEXTCLOUD_DB_USER=nextclouddbuser
NEXTCLOUD_DB_PASSWORD=q5s4dazelqksdjfga
NEXTCLOUD_URL=https://cloud.miraceti.net
NEXTCLOUD_HOSTNAME=cloud.miraceti.net
# Timezone inside container
# A list of these tz database names can be looked up at Wikipedia
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
NEXTCLOUD_TIMEZONE=Europe/Paris


Configuration Apache2