- Modifié
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.
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
EDIT 1:
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é.
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