Ce post est la mise à jour d’un ancien post du forum.
Bonjour à tous,
Ce post va vous permettre d’installer Jeedom V4 dans un conteneur Docker, et le faire tourner sur un Raspberry Pi 3 B+ derrière un proxy SSL. Il y a peu de documentation sur internet, et la procédure officielle a quelque peu vieilli. Ce tutoriel reste largement valable si vous souhaitez faire tourner Jeedom sur une autre configuration.
Un accent est mis sur la sécurité. Aucun port n’est accessible de l’extérieur, sauf le port 443 de nginx pour le SSL.
N’hésitez pas à me signaler les coquilles, ou même si vous avez des idées d’amélioration !
1. Sauvegardez votre configuration Jeedom et téléchargez-la
2. Obtenir une image Raspberry Pi
Passez cette section si vous n’êtes pas sur Raspberry Pi.
L’image Docker officielle n’est pas compatible aarch64. Ca va nous demander quelques étapes supplémentaires car il faut créer soi-même une image. Partons sur une Debian stretch.
- Cloner le dépôt jeedom grâce à
git clone https://github.com/jeedom/core.git -b V4-release; cd core
- Il faut modifier le
Dockerfile
pour prendre une image Debian stretch pour ARM64.
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM debian:latest
+FROM arm64v8/debian:stretch
3. Instancier Jeedom avec Docker compose
- Créer un fichier
docker-compose.yml
comme suit (en changeantPASSJEEDOM
,/dev/tty/ACM0
est ma clé ZWave) :
version: "3.7"
services:
mariadb:
image: "mariadb:latest"
environment:
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_DATABASE: jeedom
MYSQL_USER: jeedom
MYSQL_PASSWORD: PASSJEEDOM
jeedom:
build: "."
image: "jeedom:V4-release"
depends_on:
- mariadb
devices:
- "/dev/ttyACM0:/dev/ttyACM0"
nginx:
image: "nginx:latest"
ports:
- "443:443"
volumes:
- "./nginx:/etc/nginx/"
depends_on:
- jeedom
- Si vous n’êtes pas sur Raspberry Pi, remplacez les parties
build
etimage
du conteneurjeedom
parimage: jeedom/jeedom
. - Le dossier nginx contient chez moi les fichiers suivants :
jeedom.crt
,jeedom.key
,dhparam4096.pem
— je vous laisse chercher pour leur génération — etnginx.conf
dont voici le contenu :
events {
}
http {
server {
server_name jeedom;
listen 443 ssl http2;
listen [::]:443 ssl http2;
keepalive_timeout 75;
ssl_certificate /etc/nginx/jeedom.crt;
ssl_certificate_key /etc/nginx/jeedom.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_dhparam /etc/nginx/dhparam4096.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://jeedom_jeedom_1:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 100M;
}
}
}
-
jeedom_jeedom_1
peut varier selon votre installation, regardez le nom du conteneur dans Docker. - Lancer le tout avec
docker-compose up -d
. La partiebuild
du conteneur jeedom peut prendre du temps. - Ouvrir jeedom dans un navigateur. Pour la configuration de la base de donnée, l’adresse est le nom du conteneur mariadb (
jeedom_mariadb_1
pour moi), le port3306
, l’utilisateurjeedom
, le mot de passePASSJEEDOM
et le nom de la base de donnéejeedom
.
4. Restaurez votre configuration Jeedom
C’est fini !
La compilation du plugin OpenZWave a échoué pour des raison de RAM sur mon Raspberry Pi… J’ai dû couper le conteneur mariadb (docker-compose stop mariadb
) avant que la compilation de python-openzwave ne se lance puis le redémarrer (docker-compose start mariadb
).
J’espère que ça vous aura été utile. N’hésitez pas à commenter/rectifier.