• Archive
  • [Discussion] Nextcloud version docker

Okey merci pour ton retour. Je n'avais pas trouvé ce topic. Si c'est trop compliqué, je peux toujours installer docker et faire cohabiter avec Nextcloud/Seafile.
Seulement, je ne sais pas bien comment ça marche quand Collabora est en docker et pas le logiciel qui l'utilise..

    NOnoS

    je ne comprends pas ta question....

    si tu te veux savoir comment fonctionne nextcloud en "fixe" hors docker vers collabora docker, je pourrais t'aider car c'est ma configuration actuellement sur mon dédie perso...

      palouf34

      Oui je suis dans le même cas que toi. Et je ne sais pas comment faire la liaison.

        NOnoS

        le lien se fait lors du lancement du docker et dans la conf nginx....
        je suis pas chez moi actuellement... je vois cela se soir pour te transmettre ma conf...

        NOnoS

        Bonjour,

        Voici ma configuration pour faire fonctionné Nextcloud avec collabora.

        j’espére que cela t'aidera.

        pour le docker collabora

        docker run --name=collabora -t -d --restart=always -p 9980:9980 -e "domain=tld.domain.fr" --cap-add MKNOD collabora/code

        Fichier conf.d/proxy.conf

         proxy_redirect          off;
         proxy_set_header        Host            $host;
         proxy_set_header        X-Real-IP       $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
         client_max_body_size    10m;
         client_body_buffer_size 128k;
         client_header_buffer_size 64k;
         proxy_connect_timeout   90;
         proxy_send_timeout      90;
         proxy_read_timeout      90;
         proxy_buffer_size   128k;
         proxy_buffers       32   256k; `

        Fichier rutorrent.conf section nextcloud

        ## début config nextcloud ##
                location ^~ /nextcloud {
                    root /var/www;
                    include /etc/nginx/conf.d/php.conf;
                    include /etc/nginx/conf.d/cache.conf;
        
                    location ~ /\.svn {
                            deny all;
                    }
        
                    location ~ /\.ht {
                            deny all;
                    }
                }
        
                location ^~ /nextcloud/conf/ {
                        deny all;
                }
        
                location ^~ /nextcloud/share/ {
                        deny all;
                }
        
                ## fin config nextcloud ##

        Fichier nextcloud.conf

         server {
            listen 80;
            server_name tld.domain.fr;
            # enforce https
            return 301 https://$server_name$request_uri;
        }
        
        server {
            listen 443 ssl;
            server_name tld.domain.fr;
        
        
            ssl_certificate /etc/letsencrypt/live/tld.domain.fr/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/tld.domain.fr/privkey.pem;
        
            # Add headers to serve security related headers
            # Before enabling Strict-Transport-Security headers please read into this topic first.
            add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload;";
            add_header X-Content-Type-Options nosniff;
            add_header X-Frame-Options "SAMEORIGIN";
            add_header X-XSS-Protection "1; mode=block";
            add_header X-Robots-Tag none;
            add_header X-Download-Options noopen;
            add_header X-Permitted-Cross-Domain-Policies none;
        
            #LOGS
            access_log /var/log/nginx/nextcloud-access.log combined;
            error_log /var/log/nginx/nextcloud-error.log error;
        
            # Path to the root of your installation
            root /var/www/nextcloud/;
        
            location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
            }
            #rewrite url pour la synchronisation caldav/webdav.
        	rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
        	rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
        	rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
        
            #location /.well-known/acme-challenge { }
        
            # set max upload size
            client_max_body_size 3G;
            fastcgi_buffers 64 4K;
        
            # Disable gzip to avoid the removal of the ETag header
            gzip off;
        
            # Uncomment if your server is build with the ngx_pagespeed module
            # This module is currently not supported.
            # pagespeed off;
        
            error_page 403 /core/templates/403.php;
            error_page 404 /core/templates/404.php;
        
            location / {
                rewrite ^ /index.php$uri;
            }
        
            location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
                return 404;
            }
            location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
                return 404;
            }
        
            location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param HTTPS on;
                fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
                fastcgi_param front_controller_active true;
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                fastcgi_intercept_errors on;
                fastcgi_request_buffering off;
        	#fastcgi_cache phpcache;
        	#fastcgi_cache_valid 200 301 302 60m;
        	#add_header X-FastCGI-Cache $upstream_cache_status;
            }
        
            location ~ ^/(?:updater|ocs-provider)(?:$|/) {
                try_files $uri/ =404;
                index index.php;
            }
        
            # Adding the cache control header for js and css files
            # Make sure it is BELOW the PHP block
            location ~* \.(?:css|js)$ {
                try_files $uri /index.php$uri$is_args$args;
                add_header Cache-Control "public, max-age=7200";
                # Add headers to serve security related headers (It is intended to have those duplicated to the ones above)
                # Before enabling Strict-Transport-Security headers please read into this topic first.
                # add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
                add_header X-Content-Type-Options nosniff;
                add_header X-Frame-Options "SAMEORIGIN";
                add_header X-XSS-Protection "1; mode=block";
                add_header X-Robots-Tag none;
                add_header X-Download-Options noopen;
                add_header X-Permitted-Cross-Domain-Policies none;
                # Optional: Don't log access to assets
        #        access_log off;
            }
        
            location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
                try_files $uri /index.php$uri$is_args$args;
                # Optional: Don't log access to other assets
        #        access_log off;
            }
        
        #####pour libre office
        
        # static files
            location ^~ /loleaflet {
                proxy_pass https://localhost:9980;
                proxy_set_header Host $http_host;
            }
        
            # WOPI discovery URL
            location ^~ /hosting/discovery {
                proxy_pass https://localhost:9980;
                proxy_set_header Host $http_host;
            }
        
            # websockets, download, presentation and image upload
            location ^~ /lool {
                proxy_pass https://localhost:9980;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $http_host;
            } 
        } ```
        un mois plus tard

        Bonjour

        Suite a une réinstallation je rencontre quelques problème dans le fonctionnement de nextcloud.
        Je n'arrive pas a créer de nouveaux utilisateurs seul le profil créer lors de la création du conteneur docker existe .
        Quand je clique sur le bouton créer rien ne ce passe !!!

        J'ai aussi des difficulté pour configurer mon dossier torrents de rutorrents par External Storage de nextcloud.

        Bon j'ai réussis enfin a installer le tout, seul reste le problème du External Storage.

        2 mois plus tard

        Bonjour,

        j'ai suivi le tuto Nextcloud version docker avec attention et l'ai refait plusieurs fois. Je me confronte toujours au même problème ; une fois le docker-compose up -d lancé, je me rends sur l'url de ma machine (un serveur dans mon cas avec nom de domaine) et rien.

        J'ai cherché à savoir si cela venez de mon serveur mais j'y ai réinstallé debian Jessie plusieurs également, donc je pars bien d'un debian "propre".
        J'ai pu remarquer que tu utilises l'image wonderfall/nginx mais n'existant plus, l'image Nginx officiel convient-elle ?

        Merci d'avoir pris le temps de lire.
        La bise.

          Khykh Dans ce cas c'est simplement que le reverse proxy ne doit pas être configuré dans ton Docker/Nginx, si ?

            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