[tuto] Docker jeedom/mariadb reseau macvlan

Tags: #<Tag:0x00007f282d8fd048> #<Tag:0x00007f282d8fce40>

Bonjour,

La version jeedom/jeedom:latest a disparu. P’tre la lastest?
Donc ce que j’ai écrit ne fonctionne plus. J’attends un retour de jeedom pour connaitre la version à utiliser pour une installation et une maj de jeedom.

  • le sudoers, c’était pour corriger une erreur de droit root que j’avais:
    Pb Droits sudo NOK

  • le adduser toto me permet me loguer via ssh à mon container jeedom, vu qu’il y a un serveur ssh d’installé. Mais je crois qu’il est prévu qu’il le retire dans leur code (il ne sert pas me semble t’il)

A la vue des travaux de @Didier3L, en ce qui me concerne, je vais attendre une version plus stable de docker (il y en a plus a ce jour) pour mettre à jour mes container jeedom.

Le tuto est terminé
Tu peux l’installer

Bonjour,

Suite au retour du tag latest, j’ai mis à jour mes container.

Les évolution de jeedom que j’ai remarqué:
Il n’y a plus de sshd, de supervisord, qu’il y a une activation du service mysql, que le fichier port.conf inclus la conf du 443 (en ssl et gnutls) et que le client mariadb est maintenant installé.

Du coup, j’ai du modifier mon script my-post-install.sh et le Dockerfile pour m’adapter à ces changements.

La seule action manuelle que j’ai du réaliser et la relance des dépendances zwave et la relance du démon.

Je publie mes changements, pour ceux que cela intéresse.

server/Dockerfile

FROM	jeedom/jeedom:latest

ENV VERSION=1.5
# 0.9 2019/11/11 initialisation
# 1.0 2020/02/09 improvment for image update
# 1.1 2020/02/22 update jeedom
# 1.2 2020/02/23 add module future for xiaomi plugin
#                update post-install.sh
# 1.3 2020/04/04 resolve error build
# 1.4 2020/04/08 rename my-post-install.sh
# 1.5 2020/06/14 add autoremove
#                remove create user (sshd is gone)
#       		 remove mariadb-client-10.3, tcpdump

# METADATA
LABEL	version=${VERSION}
LABEL	description="my own jeedom image"

RUN apt-get update -qy && \
    apt-get install -y net-tools certbot python-certbot-apache && \
    pip install future && \
    apt-get -y autoremove && \
    apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

COPY files/90-my-sudoers /etc/sudoers.d/
COPY files/jail.local /etc/fail2ban/jail.local
COPY files/my-post-install.sh /root/

RUN  chmod 755 /root/my-post-install.sh && \
    [ -f /etc/php/7.3/apache2/php.ini ] && sed -i.bak -e 's/^max_execution_time = [0-9a-zA-Z]*/max_execution_time = 600/' \
-e 's/^upload_max_filesize = [0-9a-zA-Z]*/upload_max_filesize = 1G/' \
-e 's/post_max_size = [0-9a-zA-Z]*/post_max_size = 1G/'  /etc/php/7.3/apache2/php.ini && \
    [ -f /etc/fail2ban/fail2ban.conf ] && sed -i.bak -e 's/logtarget\ =\ \/var\/log/logtarget\ =\ \/var\/www\/html\/log/' /etc/fail2ban/fail2ban.conf && \
    [ -f /root/init.sh ] && sed -i.bak -e '/^cron/i \/root\/my-post-install.sh' /root/init.sh

et le script my-post-install.sh

#!/bin/bash
# Post install and check after restart container
# 1.1 17/05/2020 Resolve restart fail2ban
# 1.2 14/06/2020 Stop service mysql
# 		 Improve apache mod ssl activation
ERROR=0

echo "### $0 execution:"

# Stop mysql  service on container jeedom
service mysql stop

if [ ! -f /etc/cron.d/jeedom ]; then
	echo "### Create Jeedom crontab"
	echo  "* * * * * www-data /usr/bin/php /var/www/html/core/php/jeeCron.php >> /dev/null" > /etc/cron.d/jeedom
fi

# Change APACHE_LOG_DIR
for f in '000-default-le-ssl.conf' '000-default.conf'
do
        grep '${APACHE_LOG_DIR}' /etc/apache2/sites-enabled/$f > /dev/null
        if [ $? -eq 0 ]; then
                echo "### Change APACHE_LOG_DIR to /var/www/html/log for $f"
                sed -i.bak 's/\${APACHE_LOG_DIR}/\/var\/www\/html\/log/g' /etc/apache2/sites-enabled/$f
            else    
                echo "### Apache log already in /var/wwwl/html/log for $f"
        fi
done

# Check certificat and ssl mod
CERTIF=$(certbot certificates | grep "Certificate Name: " | wc -l)
if [ $CERTIF -ne 1 ]; then
        echo "ERROR: Certificate not found. You need to generate a certificate or used it in /etc/letsencrypt/archive folder if exist"
	find /etc/letsencrypt/archive/ -type f -ls
        ERROR=1
    else
        echo "### Certificate exist. Check & Activate https if not done yet"
        apache2ctl -t -D DUMP_MODULES| grep ssl
        if [ $? -ne 0 ]; then
                echo "### Activation ssl mod"
                a2enmod ssl
                service apache2 restart
        fi                        
fi

# Check Apache port 443
netstat -an |grep "0.0.0.0:443" |grep "LISTEN"
[ $? -ne 0 ] && { echo "ERROR: fail to activate ssl mod for apache"; ERROR=1; }

# Check and restart fail2ban
if [ -f /etc/fail2ban/jail.local ]; then
        sed -i.bak -e 's/^[sshd]/#[sshd]/' -e 's/^enable/#enable/' /etc/fail2ban/jail.d/defaults-debian.conf
        service fail2ban stop
	sleep 5
	[ -S /var/run/fail2ban/fail2ban.sock ] && rm /var/run/fail2ban/fail2ban.sock
	[ -f /var/run/fail2ban/fail2ban.pid ] && rm /var/run/fail2ban/fail2ban.pid
        service fail2ban start
	sleep 5
	service fail2ban status
	[ $? -ne 0 ] && { echo "ERROR: fail to start fail2ban"; ERROR=1; }
   else
        echo "ERROR: /etc/fail2ban/jail.local not found!"
        ERROR=1
fi

if [ "$ERROR" -ne 0 ]; then
        echo "### ERROR on my-post-install!!"
else
	echo "### $0 done!"
fi

exit $ERROR

Merci pour cette maj :slight_smile: mais, du coup, quelle est la différence par rapport à l’image jeedom:latest seule ?
Cette image se suffit à elle même et elle marche plutot bien, pour info j’ai même réussi à la démarrer online sur le docker-labs: https://labs.play-with-docker.com/
il faut s’identifier avec le même compte que le docker hub, puis ouvrir une instance et lancer jeedom :
docker run -p 80:80 -d jeedom/jeedom
et voila! ça ouvre un port 80, tu clic sur le lien qui apparaît avec le numéro du port (80) et tu arrive sur la page d’accueil de ton jeedom virtuel installé.

Avant, tu avais un container séparé pour la db, maintenant tu l’a perdu c’est dommage. D’un autre côté il faut reconnaitre que la simplicité est au rendez-vous c’est bluffant :slight_smile:

Salut,
J’ai tjs 2 container. J’utilise la latest à laquelle j’ajoute, la conf fail2ban, la conf sudoers (que je pourrai peut être me passer, c’était pour corriger un pb de droit que voulais jeedom), l’activation https,et l’exécution de mon post install.
J’essaye tjs de toucher le moins possible à l’image jeedom. J’arrête donc que leur base de données que je n’utilise pas.

Est-ce possible s’installer Jeedom sur un autre port http que 80 avec docker et macvlan et de bénéficier aussi de l’accès dns?

Ça me permetterais d’intaller jeedom en docker sur mon serveur principal (port 80 déjà utilisé) et de pouvoir utiliser mon odroid xu4 pour autre chose en lien avec le reseau