Installation d'un home-server Docker

Fermé
_erreip_ Messages postés 190 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 10 février 2020 - 6 mai 2018 à 17:37
_erreip_ Messages postés 190 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 10 février 2020 - 23 mai 2018 à 09:41
Bonjour à tous,
Je ne sais pas trop ou poser ma question alors je tente ici...

J'essaie d'installer chez moi un serveur multifonctions basé sur docker.
Le problème, c'est que je ne parviens pas à le faire fonctionner. Lorsque j'essaie de me connecter dessus avec un navigateur (sur l'interface phpMyAdmin par exemple, j'obtiens l'erreur :
Ce site est inaccessible
phpmyadmin.##########.fr n’autorise pas la connexion.
ERR_CONNECTION_REFUSED


Je ne parviens pas à trouver ce qui génère l'erreur (si c'est ma config docker (nginx), ma config Freebox (ports), ou ma config DNS).

Mon docker-compose.yml est le suivant :
version: '2'
services:
# Serveur Web : NGINX
nginx:
container_name: nginx
image: nginx
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "10"
ports:
- "80:80"
- "443:443"
restart: always
volumes:
- /data/Config/nginx/certs:/etc/nginx/certs
- /data/Config/nginx/vhost.d:/etc/nginx/vhost.d
- /data/Config/nginx/conf.d:/etc/nginx/conf.d
- /data/Config/nginx/html:/usr/share/nginx/html

# Génère les fichiers de config à NGINX
docker-gen:
container_name: nginx-generator
image: jwilder/docker-gen
restart: unless-stopped
command: -notify-sighup nginx -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "10"
volumes_from:
- nginx
volumes:
- /var/run/docker.sock:/tmp/docker.sock
- /data/Config/nginx/nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl

# Gère Let's Encrypt avec NGYNX
nginx-letsencrypt:
container_name: nginx-letsencrypt
image: alastaircoote/docker-letsencrypt-nginx-proxy-companion
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "10"
volumes_from:
- nginx
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro

# Bases de données : MySQL
mysql:
container_name: mysql
image: mysql:latest
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=##########
volumes:
- /data/mysql:/var/lib/mysql

# Bases de données : PHPMyAdmin
phpmyadmin:
container_name: phpmyadmin
image: phpmyadmin/phpmyadmin
restart: unless-stopped
environment:
- PMA_HOST=mysql
- VIRTUAL_HOST=phpmyadmin.##########.fr
- LETSENCRYPT_HOST=phpmyadmin.##########.fr
- LETSENCRYPT_EMAIL=contact@##########.fr

# OwnCloud : Cloud libre
owncloud:
container_name: owncloud
image: owncloud:latest
restart: unless-stopped
environment:
- VIRTUAL_HOST=cloud.##########.fr
- LETSENCRYPT_HOST=cloud.##########.fr
- LETSENCRYPT_EMAIL=contact@##########.fr
volumes:
- /data/Config/owncloud:/var/www/html/config
- /data/Config/owncloud:/var/www/html/data
- /data:/home

# Subsonic : Streaming audio
subsonic:
container_name: subsonic
image: hurricane/subsonic
restart: unless-stopped
environment:
- VIRTUAL_HOST=subsonic.##########.fr
- VIRTUAL_PORT=8080
- LETSENCRYPT_HOST=subsonic.##########.fr
- LETSENCRYPT_EMAIL=contact@##########.fr
- TZ=Europe/Paris
- MAX_MEM=1024
- HTTP_PORT=8080
volumes:
- /data/Config/subsonic:/subsonic
- /data/Musique:/music

# jDownloader : Gestionnaire de téléchargements directs (https://github.com/jlesage/docker-jdownloader-2#docker-compose-file)
jdownloader-2:
container_name: jdownloader-2
image: jlesage/jdownloader-2
restart: unless-stopped
ports:
- "5800:5800"
environment:
- VIRTUAL_HOST=jdownloader.##########.fr
- VIRTUAL_PORT=5800
- LETSENCRYPT_HOST=jdownloader.##########.fr
- LETSENCRYPT_EMAIL=contact@##########.fr
volumes:
- /data/Config/jdownloader-2:/config:rw
- /data/Telechargements:/output:rw

networks:
default:
external:
name: dockerlan


Pour la configuration Freebox, j'ai ajouté les redirections des ports 22, 80, et 443 (protocole tcp pour les trois).
La connexion ssh (port 22) fonctionne très bien depuis l'extérieur (ssh user@home.##########.fr).

Enfin, pour la config DNS, je suis allé sur le cPanel o2switch (hébergeur ou j'ai acheté mon ndd), dans Zone Editor, et j'ai ajouté une ligne :
- Nom : *.##########.fr
- TTL : 14400
- Classe : IN
- Type : A
- Enregistrement : Adresse IPv4 de la Freebox (trouvée dans Freebox OS > Etat de la Freebox > Etat internet)

Pour la plupart de ces configurations, je ne suis pas du tout sûr de moi étant donné que c'est la première fois que j'installe un serveur et que je ne connais pas du tout Docker.

Je pense avoir donné toutes les infos nécessaires, n'hésitez pas si il manque quelque chose.
J'espère que l'on pourra m'aider.
Cordialement,
A voir également:

3 réponses

mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
Modifié le 12 mai 2018 à 12:41
Bonjour,

Quelques questions pour y voir plus clair :
  • Que donne
    ping -c2 phpmyadmin.##########.fr
    ?
  • Arrives-tu afficher la page par défaut de ton serveur web ? Si ce n'est pas le cas, est-ce que nginx est bien lancé ? Tu peux vérifier avec
    sudo service nginx status
    .
  • Est-ce que selon nmap, le port 80 est ouvert ? Tu peux vérifier avec
    nmap  -p 80 phpmyadmin.##########.fr
    .


Bonne chance
1
_erreip_ Messages postés 190 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 10 février 2020 125
12 mai 2018 à 14:16
Bonjour et merci,

- Le ping fonctionne bien, 0% de perte
- Le service n'est apparement pas lancé :
nginx.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)

- Le port semble fermé :
PORT   STATE  SERVICE
80/tcp closed http


Du coup, je dois lancer le service avec
sudo service nginx start
? Je devrai alors faire ce qu'il faut pour que le service se lance au démarrage ?

Pour le port, c'est le service nginx qui l'ouvrira ou je dois le faire aussi ?

Encore merci.

Cordialement,
0
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
14 mai 2018 à 08:48
Du coup, je dois lancer le service avec sudo service nginx start ?

Oui.

Je devrai alors faire ce qu'il faut pour que le service se lance au démarrage ?

Normalement il est sensé se lancer tout seul au démarrage.

Pour le port, c'est le service nginx qui l'ouvrira ou je dois le faire aussi ?

nginx écoutera sur le port 80, ce qui devrait le rendre visible depuis le client, à moins qu'un pare-feu bloque quelque chose (auquel cas, il faudra ouvrir le port 80 sur ce pare-feu).

Bonne chance
0
_erreip_ Messages postés 190 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 10 février 2020 125
14 mai 2018 à 10:20
Merci pour ces précisions. Malheureusement, j'ai tenté de lancer le service mais j'obtient une erreur "No such file or directory". N'est-ce pas lié au fait que nginx est dans un container docker ?

Cordialement,
0
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
Modifié le 14 mai 2018 à 21:08
Quelle commande lances-tu ? Si le paquet nginx-common est bien installé, il devrait y avoir un script
/etc/init.d/nginx
sur ta machine :

(mando@aldur) (~) $ apt-file search nginx | grep init.d
nginx-common: /etc/init.d/nginx


Du coup pour le lancer il suffit de passer par la commande service, comme expliqué ici :

service nginx start


Si c'est comme apache, il devrait alors y avoir un vhost pré-configuré et ta machine devrait alors écouter sur le port 80 :

netstat -ntlp


Depuis le client ou le serveur tu devrais alors pouvoir afficher la page http://ip_du_serveur. Une fois ces étapes validées, on peut commencer à voir si le module php est installé, configuré, et chargé, et donc vérifier si phpldapadmin a une chance de marcher.

Sinon, et bien... utilise apache2 :-)

Bonne chance
1
_erreip_ Messages postés 190 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 10 février 2020 125
15 mai 2018 à 09:49
J'avais essayé de lancer le service avec
sudo service nginx start
.
Je confirme que
/etc/init.d/nginx
n'existe pas.
J'insiste peut-être mais je rappelle que nginx est un container docker, c'est un environnement particulier de virtualisation. Je ne suis donc pas sur que les procédures habituelles fonctionneront...

Cordialement,
0
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
Modifié le 15 mai 2018 à 10:07
Je ne pense pas que docker change quoi que ce soit dans le cas présent. Je pense plutôt qles paquets
nginx
et/ou
nginx-common
ne sont pas installés. Copie colle moi le résultat des commandes suivantes :

cat/etc/apt/sources.list
dpkg -l | grep nginx


Bonne chance
0
_erreip_ Messages postés 190 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 10 février 2020 125
15 mai 2018 à 10:08
dpkg -l | grep nginx
ne renvoie rien.

Pour
/etc/apt/sources.list
, il contient :
# 

# deb cdrom:[Debian GNU/Linux 8.7.1 _Jessie_ - Official amd64 NETINST Binary-1 $

#deb cdrom:[Debian GNU/Linux 8.7.1 _Jessie_ - Official amd64 NETINST Binary-1 2$

deb http://ftp.fr.debian.org/debian/ jessie main
deb-src http://ftp.fr.debian.org/debian/ jessie main

deb https://www.debian.org/security/ jessie/updates main
deb-src https://www.debian.org/security/ jessie/updates main

# jessie-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ jessie-updates main
deb-src http://ftp.fr.debian.org/debian/ jessie-updates main
0
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
15 mai 2018 à 10:15
Donc comme prévu les paquets
nginx
et
nginx-common
ne sont pas installés ce qui explique tout. Ils semblent pourtant exister :
https://packages.debian.org/hu/jessie/nginx
https://packages.debian.org/hu/jessie/nginx-common

Du coup, en root :

apt-get update
apt-get upgrade
apt-get install nginx nginx-common


Bonne chance
0
_erreip_ Messages postés 190 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 10 février 2020 125
Modifié le 15 mai 2018 à 10:19
En regardant la doc (https://hub.docker.com/_/nginx/ j'ai trouvé quelque chose qui semble interessant :

"Exposing external port
$ docker run --name some-nginx -d -p 8080:80 some-content-nginx

Then you can hit http://localhost:8080 or http://host-ip:8080 in your browser."

Je pense que c'est seulement ça qu'il me manque. J'ai juste à comprendre cette ligne...

Edit : En fait non, cette ligne correspond à ce que fait mon docker-compose
0
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 7 802
22 mai 2018 à 23:52
Then you can hit http://localhost:8080 or http://host-ip:8080 in your browser."

Ceci signifie qu'au niveau de la machine hôte (celle depuis laquelle tu as lancé la commande
docker
), le port 8080 peut être redirigé vers le port 80 (le port par défaut pour http) d'une machine docker de ton choix.

Ce message t'indique la syntaxe à utiliser.

Tu peux te référer à ce tutoriel qui reprend comment installer docker et nginx, puis comment faire la redirection de port.

Bonne chance
1
_erreip_ Messages postés 190 Date d'inscription lundi 2 janvier 2017 Statut Membre Dernière intervention 10 février 2020 125
23 mai 2018 à 09:41
Ah super merci beaucoup pour le tuto. Je regarde ça dés ce soir :)
0