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