• Archive
  • [Discussion] Nextcloud version docker

Effectivement l'image wonderfall/nginx ne fonctionne plus et a été remplacé par wonderfall/boring-nginx, d'aileurs utilisée par Hardware dans le docker-compose pour son serveur de messagerie mais mieux que le tuto qui date un peu, sers toi de ce docker-compose qui fait tout pour toi, même le reverse. tu lances le docker compose et c'est tout, tu n'as plus qu'a aller sur le sous domaine et tu rentres direct dans nextcloud

> version: '2'
   
 volumes:
  nextcloud-db-data:
  nextcloud-data:
  nextcloud-config:
  nextcloud-apps:
   
services:
   
   nginx-proxy:
      restart: always
      image: jwilder/nginx-proxy
      ports:
        - "80:80"
        - "443:443"
      volumes:
        - /srv/docker/nginx/certs:/etc/nginx/certs:ro
        - /etc/nginx/vhost.d
        - /usr/share/nginx/html
        - /var/run/docker.sock:/tmp/docker.sock:ro
  
    nginx-proxy-companion:
      image: jrcs/letsencrypt-nginx-proxy-companion
      volumes:
         - /srv/docker/nginx/certs:/etc/nginx/certs:rw
         - /var/run/docker.sock:/var/run/docker.sock
      volumes_from:
         - nginx-proxy
  
  nextcloud-db:
      image: mariadb
      volumes:
         - nextcloud-db-data:/var/lib/mysql
      environment:
         - MYSQL_ROOT_PASSWORD=motdepasse
         - MYSQL_DATABASE=nextcloud
         - MYSQL_USER=nextcloud
         - MYSQL_PASSWORD=motdepasse
  
 nextcloud:
     image: wonderfall/nextcloud
     environment:
       - VIRTUAL_HOST=sous.domaine.com
       - LETSENCRYPT_HOST=sous.domaine.com
       - LETSENCRYPT_EMAIL=adressemail
       - UID=1000
       - GID=1000
       - UPLOAD_MAX_SIZE=10G
       - APC_SHM_SIZE=128M
       - OPCACHE_MEM_SIZE=128
       - REDIS_MAX_MEMORY=64mb
       - CRON_PERIOD=15m
       - TZ=Europe/Berlin
       - ADMIN_USER=admin
       - ADMIN_PASSWORD=admin
       - DB_TYPE=mysql
       - DB_NAME=nextcloud
       - DB_USER=nextcloud
       - DB_PASSWORD=motdepasse
       - DB_HOST=nextcloud-db
    depends_on:
       - nextcloud-db
    volumes:
       - nextcloud-data:/data
       - nextcloud-config:/config
       - nextcloud-apps:/apps2

Modifie les mots de passe, le sous domaine et l'adresse mail et remet en forme le docker-compose en respectant les retraits

    Waouw ! Merci Aerya et laster13 !

    Je vais aller tester tout ça.
    Pour le reverse proxy, je me demandais si l'image de Wonderfall avait des specs spécifiques pour fonctionner avec son image nextcloud alors je me suis retrouvé un peu perdu avec l'image officiel Nginx.
    Avec la tête froide aujourd'hui, je vais tout reprendre à zéro et bien comprendre la totalité des manips.

    Merci encore !

    EDIT : J'ai bien tout rempli (sous-domaine, mail, etc...) tout démarre bien cependant sur mon sous-domain.domain.com , je n'ai toujours rien.
    Je vois avec docker ps que wonderfall/nextcloud tape sur 8888/tcp. Le nginx-proxy map le port 80. J'ai une conf à y faire là, non ? laster13
    Je remarque également en faisant docker ps j'ai 3 containers de lancés. Il manque le container nextcloud lui-même.

    En faisant 'docker ps -a' tu vois ton 4eme container qui doit etre en "exited". Essaie de le redemarrer en faisant

    docker start id_container

    Pour info ce docker compose te créer tes certificats let's encrypt et ton vhost, du coup tu n'as rien à faire

    ps : Si ca ne fonctionne pas, pense à nettoyer ton docker en supprimant tous les volumes inutiles avec la commande

    docker volume rm $(docker volume ls -qf "dangling=true")

    Puis recommence

      laster13 merci à toi !

      Effectivement j'ai supprimé les containers et volumes, tout relancer et bien starter mon container nextcloud et tout fonctionne.

      2 mois plus tard

      Bonjour,

      J'ai suivi le tuto à la lettre mais j'arrive pas à accéder à nextcloud. Je ne souhaite pas utiliser de https pour l'instant. Donc je n'ai pas indiqué de certificat.

      Dans mon vhost, j'ai indiqué ça

      server {
        listen 8000;
        server_name monipserveur;
        index index.html index.htm index.php;
      
        client_max_body_size 150M;
        large_client_header_buffers 4 16k;
      
        #auth_basic "Who's this?";
        #auth_basic_user_file /passwds/<NAME>.htpasswd;
      
         location / {
                      try_files $uri $uri/ /index.html /index.php?$args =404;
              }
      
      }

      Et pour mon docker-compose.yml, j'ai indiqué ça
      J'ai indiqué le port 82 car le port 80 est déja utilisé par une autre application. J'ai pas de message d'erreur de nginx ou des autres apps. Je tombe simplement sur la page nginx de base quand j'accède au port 82. Et mon conteneur nextcloud se ferme tout seul. Peut être aurais-je oublié un élément ? Merci pour votre aide.

      #############
      # Nginx #
      #############
      
         nginx:
          image: wonderfall/boring-nginx
          container_name: nginx
          links:
            - nextcloud:nextcloud
          ports:
            - "82:8000"
            - "443:4430"
          volumes:
            - /home/seedbox/files/apps/nginx/sites-enabled:/sites-enabled
            - /home/seedbox/files/apps/nginx/conf:/conf.d
            - /home/seedbox/files/apps/nginx/log:/var/log/nginx
            - /home/seedbox/files/apps/nginx/certs:/certs
            - /home/seedbox/files/apps/nginx/passwd:/passwds
            - /home/seedbox/files/apps/nginx/www:/www
      
      #############
      # nextcloud #
      #############
      
         nextcloud:
          image: wonderfall/nextcloud
          container_name: nextcloud
          links:
            - db_nextcloud:db_nextcloud
          environment:
            - UID=1000
            - GID=1000
            - UPLOAD_MAX_SIZE=10G
            - APC_SHM_SIZE=128M
            - OPCACHE_MEM_SIZE=128
            - CRON_PERIOD=15m
            - TZ=Etc/UTC
          volumes:
            - /home/seedbox/files/apps/nextcloud/data:/data
            - /home/seedbox/files/apps/nextcloud/config:/config
            - /home/seedbox/files/apps/nextcloud/apps:/apps2
            - /home/seedbox/files/apps/nextcloud/themes:/nextcloud/themes
      
      #############
      # db_nextcloud #
      #############
      
         db_nextcloud:
          image: mariadb:10
          container_name: db_nextcloud
          volumes:
            - /home/seedbox/files/apps/nextcloud/db:/var/lib/mysql
          environment:
            - MYSQL_ROOT_PASSWORD=mdp
            - MYSQL_DATABASE=nextcloud
            - MYSQL_USER=nextcloud
            - MYSQL_PASSWORD=mdp
      

      Tu as essayé avec le docker-compose posté plus haut?

      19 jours plus tard

      Je reviens sur nextcloud mais sur la version mobile. Je n'arrive pas à faire le téléversement automatique de mes fichiers avec l'appareil. Il ne se passe rien. Certains topics évoquent le problème mais sans vraiment donner de solution.
      Avez-vous rencontré ce problème vous aussi ?

      App mobile : 1.4.2
      Android : 6.0
      Nextcloud server 11.0.3

      19 jours plus tard

      j'ai le même problème que NOnoS
      -> impossible d'accéder à https://nextcloud.domaine.tld

      j'ai suivi le tuto à la lettre, tout fonctionnait dans la mesure ou j'avais stoppé nginx, comme il y a un conflit entre le port 443 utilisé par nginx et le daemon de docker, ça ne fonctionnait pas

      j'ai donc utilisé le docker compose proposé un peu plus haut et j'ai une magnifique erreur :

      ~docker-compose up -d
      addgroup: gid '0' in use
      ERROR: yaml.scanner.ScannerError: while scanning a block scalar
      in "./docker-compose.yml", line 1, column 1
      expected a comment or a line break, but found 'v'
      in "./docker-compose.yml", line 1, column 3

      j'ai également essayé en supprimant tout les container mais ça ne fonctionne pas
      d'ailleurs la commande de nettoyage ne fonctionne pas, j'ai pourtant la version 17 de docker ...
      j'ai trouvé cette commande sur le net du coup :

      "docker rm docker ps -a -q"

      voilà, là je suis vraiment dans l'impasse, je ne vois plus quoi faire ...

      J'ai finalement réussi à installer correctement. Je ne sais plus trop comment à vrai dire mais le tuto est correct.

      Tu as problème d'interprétation des éléments dans ton docker compose. Un chemin de montage incorrect, une indentation incorrect, un caractère en trop peut être.
      Il te l'indique : "expected a comment or a line break, but found 'v'"

      oui, j'ai vu, du coup, j'ai essayé plein de truc :
      j'ai supprimé le < qui est en début de code parceque je pense que ça n'a rien a faire la, mais ça me ramène d'autres erreurs,
      j'ai supprimé la ligne entiere version: '2'
      mais ça me ramène une autre erreur
      et j'ai essayé de reprendre tous les espaces devant chaque phrases pour que la hiérarchie soit bien respectée mais c'est pareil, j'ai toujours des erreurs ...
      [EDIT] C'est n'importe quoi, à chaque fois que je bouge un espace, il y a une erreur différente, en fait, le fichier prend en compte les arborescences...

      [EDIT] voilà, le fichier composer s'exécute mais j'ai tout de même cette erreur :

      listen tcp 0.0.0.0:443: bind: address already in use

      -> forcément, c'est le même problème qu'avec le script du tuto, puisque nginx utilise le port 443
      j'ai dessus le seedbox manager + rutorrent + sickrage + couchpotato

      [Edit] Est ce que vous savez si c'est possible de faire cohabiter docker avec un serveur classique nginx ou est ce qu'il faut obligatoirement tout refaire sur docker ?

      un an plus tard

      @Wonderfall ayant arrêté de maintenir ces Dockerfiles, ce tuto n'est plus vraiment d'actualité !

      Si ça peut t'aider, voici le docker-compose.yml que j'utilise:

      #####################################################
      #                        Cloud                      #
      #                      ---------                    #
      #                                                   #
      # - Nextcloud  : Cloud                              #
      #      - nextcloud  : App                           #
      #      - db         : Database                      #
      #      - redis      : Cache                         #
      #                                                   #
      #####################################################
      
      version: '2.4'
      
      services:
      #############
      # Nextcloud #
      #############
      # Nextcloud instance
        nextcloud:
          restart: always
          image: hoellen/nextcloud
          container_name: cloud-nextcloud
          hostname: cloud
          labels:
            - traefik.enable=true
            - traefik.frontend.rule=Host:${DOMAIN}
            - traefik.backend.port=8888
            - traefik.docker.network=traefik_proxy
          links:
            - db:db
            - solr:solr
            - redis:redis
          depends_on: [db]
          volumes:
            - ${PATH_CLOUD_FILES}/cloud:/data:rw
            - ${PATH_APP}/nextcloud/conf:/config:rw
            - ${PATH_APP}/nextcloud/apps:/apps2:rw
            - ${PATH_APP}/nextcloud/themes:/nextcloud/themes
            - /etc/localtime:/etc/localtime:ro
          environment:
            - UID=1069
            - GID=1069
            - DB_TYPE=mysql
            - DB_NAME=nextcloud
            - DB_USER=nextcloud
            - DB_PASSWORD=xxxxxxxxx
            - DB_HOST=db
            - UPLOAD_MAX_SIZE=30G
            - APC_SHM_SIZE=128M
            - OPCACHE_MEM_SIZE=128
            - REDIS_MAX_MEMORY=64mb
            - CRON_PERIOD=15m
            - TZ=Europe/Paris
          networks:
            - traefik_proxy
            - cloud_back
      
      #Nextcloud database (mariadb)
        db:
          restart: always
          image: mariadb:latest
          container_name: cloud-nextcloud_db
          volumes:
            - ${PATH_APP}/nextcloud/db:/var/lib/mysql:rw
            - ${PATH_APP}/nextcloud/db/import:/docker-entrypoint-initdb.d:ro
            - /etc/localtime:/etc/localtime:ro
          environment:
            - MYSQL_ROOT_PASSWORD=xxxxxxxxx
            - MYSQL_DATABASE=nextcloud
            - MYSQL_USER=nextcloud
            - MYSQL_PASSWORD=xxxxxxxxx
          networks:
            - cloud_back
      
      #Nextcloud cache (Redis)
        redis:
          restart: always
          image: redis:alpine
          container_name: cloud-nextcloud_cache
          hostname: redis
          domainname: gardelle.net
          volumes:
            - ${PATH_APP}/redis:/data:rw
          networks:
            - cloud_back
      
      networks:
        traefik_proxy:
          external:
            name: traefik_proxy
        cloud_back:

      A utiliser avec le proxy traefik:

      #####################################################
      #                       Proxy                       #
      #                     ---------                     #
      #                                                   #
      # - Traefik  : Containers proxy with LE certs       #
      #                                                   #
      #####################################################
      
      version: '2.4'
      
      services:
      ###########
      # Traefik #
      ###########
        traefik:
          restart: unless-stopped
          image: traefik
          container_name: proxy_traefik
          hostname: traefik
          command: 
            --defaultEntryPoints='http,https'
            --logLevel=DEBUG
            --web
            --web.address=:8080
            --entryPoints='Name:http Address::80  Redirect.EntryPoint:https' 
            --entryPoints='Name:https Address::443 TLS' 
            --acme
            --acme.email=${MAIL_ADRESS}
            --acme.storage=/certs/acme.json 
            --acme.entryPoint=https 
            --acme.ondemand=false
            --acme.onhostrule=true
            --acme.httpChallenge.entryPoint=http
            --acme.domains="${DOMAIN}" 
            --docker
            --docker.domain=traefik
            --docker.watch
            --docker.exposedbydefault=false
          volumes:
            - /var/run/docker.sock:/var/run/docker.sock:ro  
            - ./certs:/certs
          ports:
            - "80:80"
            - "443:443"
      #      - "8080:8080" # Statut page
          networks:
            - traefik_proxy
      
      networks:
        traefik_proxy:
          external:
            name: traefik_proxy

      Evidemment, penses à mettre les variables à jour 😉
      Il te faudra aussi créer le réseau "traefik_proxy" avant de lancer le docker-compose :
      docker network create traefik_proxy

      @zer Tient j'ai remarqué un problème dans la configuration de tes labels Traefik. Quand tu avais fait une pull request sur hardware/mailserver, j'avais eu un bug au niveau des entêtes de sécurité qui ne voulaient pas s'appliquer. Après avoir ouvert un ticket sur le dépôt de Traefik, l'un des devs m'a dit qu'il ne fallait pas utiliser traefik.backend.port mais traefik.port pour indiquer le port exposé par le conteneur.

      https://github.com/hardware/mailserver/commit/a0910e556379ae3e066acd3851e87cebc16b5f7b
      https://github.com/containous/traefik/issues/2993#issuecomment-372658641

      En plus tu verras que la webui de Traefik sera plus propre en utilisant cette directive 😛

      • zer a répondu à ça.
      • zer aime ça.
        un an plus tard

        Bonjour,

        j'ai utilisé le fichier YAML posté par laster13, j'accède bien à Nextcloud par contre impossible d'upload quelque chose que ce soit via web ou l'appli Android.

        Quelqu'un aurait une idée ?

        8 jours plus tard

        Aerya Salut, ce n'est pas un problème de droits, je peux créer des dossiers, j'ai quand même dans le doute essayé un chmod en 777 mais ça ne change rien.
        Pour l'espace disque je ne pense pas que ce soit ça 😁 :

        xxxxx@HomeServer:~$ df -h
        Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
        /dev/md0            15T    610G   14T   5% /mnt/data
        

        Enfaite quand je veux upload un fichier le transfère reste bloqué sur "quelques secondes" puis plus rien.

        Edit du 26/04/2019 :
        J'ai trouvé la solution à mon problème, je post ça là au cas ou si ça peut aider d'autres personnes dans la même galère.
        Il m'a fallut créer un fichier de conf dans /etc/nginx/conf.d/nginx.conf avec dedans ceci :

        client_max_body_size 10G;
        

        puis le déclarer dans mon docker-compose.yml

        Voilà voilà tout fonctionne parfaitement maintenant.

        10 mois plus tard

        Bonjour les gens

        depuis peu lorsque j'essaie d'aller sur mon cloud j'ai invariablement ceci qui s'affiche et rien d'autre ... du coup je n'ai plus accès au cloud!!

        Internal Server Error

        The server encountered an internal error and was unable to complete your request.
        Please contact the server administrator if this error reappears multiple times, please include the technical details below in >your report.
        More details can be found in the server log.

        a savoir que le reste du serveur fonctionne pil poil .... c'est agaçant !! d'autant que je n'ai pas la moindre idée de comment régler ça !!!!

          Le docker tourne ? Le reverse aussi ?

          rha je sais pas comment on fait ça ... c'est pas moi qui ai installé le truc et j'y comprends rien avec docker

          mais a priori oui le docker tourne car le restant du serveur (rutorrent / medusa) fonctionne ...