• Archive
  • [Discussion] Nextcloud version docker

Bonjour,

J'ai bien suivi ce superbe tutoriel (c'est sincère), mais je suis confronté à un problème...
En admettant que je souhaite faire tourner deux containers nextcloud (avec leur bdd respective) gérés par un unique container nginx,
le code suivant devrait être correct
nginx:
    image: wonderfall/nginx
    container_name: nginx
    links:
      - nextcloud:nextcloud
      - test:test
    ports:
      - "80:8000"
      - "443:4430"
    volumes:
      - /mnt/docker/nginx/sites-enabled:/sites-enabled
      - /mnt/docker/nginx/conf:/conf.d
      - /mnt/docker/nginx/log:/var/log/nginx
      - /mnt/docker/nginx/certs:/certs
      - /mnt/docker/nginx/passwd:/passwds
      - /mnt/docker/nginx/www:/www
nextcloud:
    image: wonderfall/nextcloud
    container_name: nextcloud
    links:
      - db_nextcloud:db_nextcloud
    environment:
      - UID=1000
      - GID=1000
    volumes:
      - /mnt/docker/nextcloud/data:/data
      - /mnt/docker/nextcloud/config:/config
      - /mnt/docker/nextcloud/apps:/apps2
db_nextcloud:
    image: mariadb:10
    container_name: db_nextcloud
    volumes:
      - /mnt/docker/nextcloud/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=supersecretpassword
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=supersecretpassword
test:
    image: wonderfall/nextcloud
    container_name: test
    links:
      - db_test:db_test
    environment:
      - UID=1000
      - GID=1000
    volumes:
      - /mnt/docker/test/data:/data
      - /mnt/docker/test/config:/config
      - /mnt/docker/test/apps:/apps2
db_test:
    image: mariadb:10
    container_name: db_test
    volumes:
      - /mnt/docker/test/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=supersecretpasswordtest
      - MYSQL_DATABASE=test
      - MYSQL_USER=test
      - MYSQL_PASSWORD=supersecretpasswordtest
Je suis parti du principe qu'il me fallait deux configurations pour nginx:
cd /mnt/docker/nginx/sites-enabled
nano nextcloud.conf
server {

  listen 8000;
  server_name nextcloud.domain.tld;
  return 301 https://$host$request_uri;

}

server {

  listen 4430 ssl http2;
  server_name nextcloud.domain.tld;

  ssl_certificate /certs/domain.tld.crt;
  ssl_certificate_key /certs/domain.tld.key;

  location / {
    proxy_pass http://nextcloud:80;
    include /conf.d/proxy-params.conf;
  }

}
cd /mnt/docker/nginx/sites-enabled
nano test.conf
server {

  listen 8000;
  server_name test.domain.tld;
  return 301 https://$host$request_uri;

}

server {

  listen 4430 ssl http2;
  server_name test.domain.tld;

  ssl_certificate /certs/domain.tld.crt;
  ssl_certificate_key /certs/domain.tld.key;

  location / {
    proxy_pass http://test:80;
    include /conf.d/proxy-params.conf;
  }

}

Et pour les assigner à des sous-domaines j'ai configuré bind
nano /etc/bind/names.conf.local
(Le fichier named.conf est décomposé dans Deban 8.4)
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "nemesis.gdn" {
    type master;
    file "/etc/bind/zones/db.nemesis.gdn";

    allow-transfer {213.251.188.141;}; // Serveur DNS secondaire de l'hébergeur
    allow-query { any; };
    notify yes;
};

zone "205.207.23.94.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/205.207.23.94.in-addr.arpa";

    allow-transfer {213.251.188.141;}; // Serveur DNS secondaire de l'hébergeur
    //allow-query { any; };
    notify yes;
};
nano /etc/bind/zones/db.nemesis.gdn
;
; BIND data file for local loopback interface
;

$TTL 12H
$ORIGIN nemesis.gdn.
@          IN              SOA             ns303724.ip-94-23-207.eu. webmaster.nemesis.gdn. (
           2016082901      ; Serial
           8H              ; Refresh
           30M             ; Retry
           4W              ; Expire
           8H              ; Minimum TTL
)
              IN              NS              ns378144.ip-5-196-67.eu.
              IN              NS              sdns2.ovh.net.
              IN              MX      10      mail.nemesis.gdn.
nemesis.gdn.  IN              A               94.23.207.205
ns            IN              A               94.23.207.205
mail          IN              A               94.23.207.205
www           IN              CNAME           nemesis.gdn.
ftp           IN              CNAME           nemesis.gdn.
ownercheck    IN              TXT             "XXXXXXXX"
nextcloud     IN              A               94.23.207.205
test          IN              A               94.23.207.205
/etc/bind/zones/205.207.23.94.in-addr.arpa
;
; BIND reverse data file for local loopback interface
;

$TTL 12H
@          IN              SOA             ns303724.ip-94-23-207.eu. webmaster.nemesis.gdn. (
           2016082901      ; Serial
           8H              ; Refresh
           30M             ; Retry
           4W              ; Expire
           8H              ; Minimum TTL
)
           IN NS   ns303724.ip-94-23-207.eu.
           IN NS   sdns2.ovh.net.
           IN PTR  nemesis.gdn.
Je réussi à accéder à mon container nextcloud via le sous-domaine nextcloud.nemesis.gdn,
Parcontre le sous-domaine test, nada: DNS_PROBE_FINISHED_NXDOMAIN
D'ailleurs sur ce dernier (test) je ne réussis pas à mettre de certificat avec la commande suivante:
./certbot-auto certonly -a standalone -d nemesis.gdn -d www.nemesis.gdn -d nextcloud.nemesis.gdn -d test.nemesis.gdn --keep --renew-by-default
Et tout aussi surprenant, le domaine nemesis me permet d'accéder à mon container (le premier a priori) alors que je ne l'ai configuré que pour le sous-domaine.

EDIT 1:

Problème de second container (test) résolu, le sous-domaine (test.nemesis.gdn) lui est bien assigné.
Par contre pour le nemesis.gdn, c'est une tout autre affaire:
www.nemesis.gdn renvoit au premier container, et si j'étais connecté ma session est déjà ouverte
nemesis.gdn (sans www) semble aussi renvoyer au premier container, mais avec la session fermé.


Ne devrait-il pas renvoyer une erreur pour dire que le domaine ne mène à rien (contrairement aux sous-domaines) ?

EDIT 2: Ce serait lié au reverse peut-être ?

EDIT 3:

J'ai stoppé mes containers, créé le fichier suivant:
/mnt/docker/nginx/sites-enabled/index.conf
Dans lequel j'ai mis ça dedans:
server {

  listen 8000;
  server_name nemesis.gdn;
  return 301 https://$host$request_uri;

}

server {

  listen 4430 ssl http2;
  server_name nemesis.gdn;

  ssl_certificate /certs/fullchain.pem;
  ssl_certificate_key /certs/privkey.pem;

  location / {
    proxy_pass http://localhost:80;
    include /conf.d/proxy-params.conf;
  }

}

server {

  listen 8000;
  server_name www.nemesis.gdn;
  return 301 https://$host$request_uri;

}

server {

  listen 4430 ssl http2;
  server_name www.nemesis.gdn;

  ssl_certificate /certs/fullchain.pem;
  ssl_certificate_key /certs/privkey.pem;

  location / {
    proxy_pass http://localhost:80;
    include /conf.d/proxy-params.conf;
  }

}
Et le problème semble avoir été résolu, le domaine principal envoi un magnifique 502 Bad Getaway !
Bon maintenant faudrait que j'y fixe une page qui soit utile, mais bon, je verrais plus tard.

Si quelqu'un a une suggestion pour optimiser tout ça aux petits oignons, je suis preneur

EDIT4:
J'ai toujours un souci pour la commande de lookup sur le dns secondaire de mon serveur:
root@ns303724:/mnt/docker# nslookup nemesis.gdn sdns2.ovh.net
Server:         sdns2.ovh.net
Address:        2001:41d0:1:4a8d::1#53

** server can't find nemesis.gdn: REFUSED
et
root@ns303724:/mnt/docker# nslookup 94.23.207.205 sdns2.ovh.net
Server:         sdns2.ovh.net
Address:        2001:41d0:1:4a8d::1#53

** server can't find 205.207.23.94.in-addr.arpa: REFUSED
Ah ben un autre souci tiens, l'interface admin de nextcloud me dit qu'elle détecte pas internet...
DarkJohn wrote:Ah ben un autre souci tiens, l'interface admin de nextcloud me dit qu'elle détecte pas internet...
Ils ont pas changer encore l'adresse qui check la connection réseau. Ca check encore sur owncloud.org
Et vu que owncloud.org a vu son certificat ssl terminé hier soir, ca doit jouer
aktarus69 wrote:
DarkJohn wrote:Ah ben un autre souci tiens, l'interface admin de nextcloud me dit qu'elle détecte pas internet...
Ils ont pas changer encore l'adresse qui check la connection réseau. Ca check encore sur owncloud.org
Et vu que owncloud.org a vu son certificat ssl terminé hier soir, ca doit jouer 😀
Oh bien, au moins je sais que cela ne vient pas de moi, c'est cool

Edit: Je viens de check sur mon container, c'est bien détecté maintenant

Edit 2:
J'ai toujours un souci pour la commande de lookup sur le dns secondaire de mon serveur:
root@ns303724:/mnt/docker# nslookup nemesis.gdn sdns2.ovh.net
Server:         sdns2.ovh.net
Address:        2001:41d0:1:4a8d::1#53

** server can't find nemesis.gdn: REFUSED
et
root@ns303724:/mnt/docker# nslookup 94.23.207.205 sdns2.ovh.net
Server:         sdns2.ovh.net
Address:        2001:41d0:1:4a8d::1#53

** server can't find 205.207.23.94.in-addr.arpa: REFUSED
Et je répète que si quelqu'un a une suggestion pour optimiser tout ça aux petits oignons, je suis preneur


Edit 3:
Autre question...
Actuellement, mes containers sont créés et lancés depuis le répertoire mnt/docker avec le user "test" (j'ai suivi le tuto de xataz pour enlever le root donc)
docker-compose up -d
Si je décide de créer un nouvel utilisateur "docker" appartenant au groupe du même nom pour remplacer "test", comment dois-je procéder ?
N'y a t-il pas un souci pour lancer les containers de "test" ? Je précise qu'ils ne sont pas dans le home mais dans mnt comme dans ce tutoriel-ci.
j'ai aussi un container perso que j'avais créé quand j'étais encore sous root (situé aussi dans mnt), y a t-il une manipulation à faire ?
Une erreur de plus qui vient de s'afficher dans mes logs de nextcloud sans raison apparente:
Fatal	webdav	Exception: {"Message":"HTTP\/1.1 400 expected filesize 1638671 got 184320","Exception":"Sabre\\DAV\\Exception\\BadRequest","Code":0,"Trace":"#0 \/nextcloud\/apps\/dav\/lib\/Connector\/Sabre\/Directory.php(137): OCA\\DAV\\Connector\\Sabre\\File->put(Resource id #102)\n#1 \/nextcloud\/3rdparty\/sabre\/dav\/lib\/DAV\/Server.php(1036): OCA\\DAV\\Connector\\Sabre\\Directory->createFile('2013-03-11 11.1...', Resource id #102)\n#2 \/nextcloud\/3rdparty\/sabre\/dav\/lib\/DAV\/CorePlugin.php(523): Sabre\\DAV\\Server->createFile('HYGIFORM 2016\/E...', Resource id #102, NULL)\n#3 [internal function]: Sabre\\DAV\\CorePlugin->httpPut(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\n#4 \/nextcloud\/3rdparty\/sabre\/event\/lib\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\n#5 \/nextcloud\/3rdparty\/sabre\/dav\/lib\/DAV\/Server.php(459): Sabre\\Event\\EventEmitter->emit('method:PUT', Array)\n#6 \/nextcloud\/3rdparty\/sabre\/dav\/lib\/DAV\/Server.php(248): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\n#7 \/nextcloud\/apps\/dav\/appinfo\/v1\/webdav.php(60): Sabre\\DAV\\Server->exec()\n#8 \/nextcloud\/remote.php(165): require_once('\/nextcloud\/apps...')\n#9 {main}","File":"\/nextcloud\/apps\/dav\/lib\/Connector\/Sabre\/File.php","Line":150,"User":"TEST"}
Edit:

Dans mes questions précédentes (dont j'attend encore les réponses ), j'utilise un seul Docker-compose, une mauvaise pratique puisque je lance deux applications (nextcloud et test) qui sont bien distinctes.
Mais il me vient une question: Comment lancer deux aplications de type compose en une seule ligne.
Genre est-il possible de créer un fichier qui lance les deux applications via leur docker-compose.xml respectifs ?
Cela serait pratique en cas de reboot pour que les deux apps se lancent.
Par la même occasion, cela m'oblige t-il à avoir deux containers nginx différents (un pour chaque apps) ?
Ok bon un autre problème, on change comment les paramètres apache de ce truc ?
J'ai besoin d'activer le keepalive histoire de permettre la sync de ceux qui ont de gros fichiers et une connexion en mousse.
J'ai essayé "docker attach nextcloud", mais ça fait que freezer le container...
14 jours plus tard
Salut DarkJohn, j'ai regardé ton docker-compose et je ne vois pas ce qui peut clocher pour les 2 nextcloud différents. Concernant apache, je ne peux pas trop t'aider, je n'utilise que nginx.
Bonjour tout le monde !

je rencontre des petits problèmes avec Nextcloud voici ma configuration :

Serveur dedie avec debian 8
Serveur Web : nginx & php 7 avec mysql et mariadb

Sur mon serveur je possède rutorrent et seedbox-manager.

Pour installer nextcloud j'ai suivi le tuto pour owncloud tout ce passe bien jusqu'à la première connexion une fois l'utilisateur crée et la base de données j'ai une page blanche qui apparait avec erreur! qui s'affiche.

j'ai bien donné les permissions au répertoire /var/www/nextcloud

merci d'avance pour votre aide
22 jours plus tard
Bonjour,

J'aimerais savoir s'il est possible et envisageable d'installer Collaboraonline ou une autre solution pour lire/ouvrir directement depuis nextcloud les fichiers type excel/word/powerpoint ? Je précise que je n'ai pas docker, donc le tuto indiqué ci-dessous n'est peut être pas utilisable ? A vous de me dire

https://nextcloud.com/collaboraonline/

Merci d'avance
    22 jours plus tard

    NOnoS

    Bonjour,

    regarde sur le site officielle de nextcloud, cette discussion qui parle effectivement d'utiliser collabora sans docker...

    Pour faire la manip, il faut quand même utiliser docker pour extraire l'application et les fichiers de conf.

    https://help.nextcloud.com/t/tutorial-collabora-without-using-docker/2546

    A voir si cela peut t'aider... Mais l'utilisation de docker pour cette application est vraiment simple surtout pour les mises à jours..

    a+

    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 ?