Sinon voir ce repo
1- Home assistant installé et fonctionnel depuis votre réseau interne
2- Serveur distant avec docker , docker-compose et traefik
builder une image docker à partir de ce Dockerfile
from linuxserver/openssh-server:latest
RUN sed -i 's/#AllowAgentForwarding yes/AllowAgentForwarding yes/g' /etc/ssh/sshd_config && \
sed -i 's/AllowTcpForwarding no/AllowTcpForwarding yes/g' /etc/ssh/sshd_config && \
sed -i 's/GatewayPorts no/GatewayPorts yes/g' /etc/ssh/sshd_config && \
sed -i 's/X11Forwarding no/X11Forwarding yes/g' /etc/ssh/sshd_config
expose 2222 8080Builder l'image
docker build . -t hatunnel:latest
Ajouter dans votre docker-compose.yml (adaptez le chemin /path/data/hatunnel )
version: '3.7'
services:
# ..... Traefik et autres applications
hatunnel:
image: hatunnel:latest
container_name: hatunnel
networks:
- traefik
ports:
- 6222:2222
restart: always
volumes:
- "/path/data/hatunnel:/config"
environment:
- PUID=1000 # se référer à la doc de l'image de base
- PGID=1000 # se référer à la doc de l'image de base
- TZ=Europe/Paris # se référer à la doc de l'image de base
- USER_PASSWORD=achanger # se référer à la doc de l'image de base
- USER_NAME=myUser # se référer à la doc de l'image de base
- PASSWORD_ACCESS=true # se référer à la doc de l'image de base
labels:
- "traefik.http.routers.hatunnel.rule=Host(`home-assistant.domain.tld`)"
- "traefik.http.routers.hatunnel.tls=true"
- "traefik.http.routers.hatunnel.tls.certresolver=letsencrypt"
- "traefik.http.routers.hatunnel.entrypoints=websecure"
- "traefik.http.routers.hatunnel.middlewares=security@file" #, compression@file"
- "traefik.http.services.hatunnel.loadbalancer.server.port=8080"
- "traefik.http.routers.hatunnel.service=hatunnel"
- "traefik.docker.network=traefik"
- "traefik.http.routers.hatunnel-http.rule=Host(`home-assistant.domain.tld`)"
- "traefik.http.routers.hatunnel-http.middlewares=https-redirect@file"sed -i 's/#AllowAgentForwarding yes/AllowAgentForwarding yes/g' /path/data/hatunnel/ssh_host_keys/sshd_config
sed -i 's/AllowTcpForwarding no/AllowTcpForwarding yes/g' /path/data/hatunnel/ssh_host_keys/sshd_config
sed -i 's/GatewayPorts no/GatewayPorts yes/g' /path/data/hatunnel/ssh_host_keys/sshd_config
sed -i 's/X11Forwarding no/X11Forwarding yes/g' /path/data/hatunnel/ssh_host_keys/sshd_configrelancer le service
docker restart hatunnelse placer en root sur votre serveur interne, c'est le compte utilisé pour le service systemd
ssh-keygen -b 4096tout valider par défaut (pas de passphrase)
Installer votre clé sur le serveur distant
ssh-copy-id -p 6222 myUser@home-assistant.domain.tldSaisir le mot de passe injecté en variable d'environnement dans le docker-compose (ici achanger)
Test de la connexion
ssh -p 6222 myUser@home-assistant.domain.tldLa connexion doit se faire sans le mot de passe
ssh -N -T -R 8080:127.0.0.1:8123 -p 6222 myUser@home-assistant.domain.tld
puis tester la connexion http depuis votre serveur distant ici https://home-assistant.domain.tld
On peut ensuite créer un service
/etc/systemd/system/run-tunnel-ha.service
[Unit]
Description=Start HA tunnel
After=network.target
[Service]
ExecStart=/usr/bin/ssh -N -T -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -R 8080:127.0.0.1:8123 -p 6222 myUser@home-assistant.domain.tld
# Restart every >2 seconds to avoid StartLimitInterval failure
RestartSec=5
Restart=always
[Install]
WantedBy=multi-user.targetactiver la prise en compte de ce nouveau service et le redémarrer
systemctl daemon-reload
systemctl enable run-tunnel-ha.serviceNota: Un redémarrage du service côté serveur interne me signale que le port 8080 est utilisé sur le serveur distant. J'ai du redémarrer le traefik....
Ajoutez dans configuration.yaml
http:
use_x_forwarded_for: true
trusted_proxies:
- 127.0.0.1