Installer Synapse-Admin avec Docker
Au sommaire :
- 1-Qu'est-ce que Synapse-Admin ?
- 2-Prérequis
- 3-Déploiement
- 4-Configuration
- 5-Exposer son instance avec Traefik et Authelia
1-Qu'est-ce que Synapse-Admin ?
synapse-admin est une application qui va vous permettre d'administrer votre serveur Synapse via une interface web.
Donc si vous êtes pas encore à l'aise avec l'administration SQLite/PostGreSQL, cette interface va vous rendre de grands services.
2-Prérequis
Pour déployer Synapse-Admin, vous devez disposer d'une machine virtuelle fonctionnant sous Ubuntu Server.
Création de la machine virtuelle :
Virtualisation avec Proxmox VE : Si vous partez de zéro, suivez mon guide détaillé pour virtualiser Ubuntu sur Proxmox VE avec des réglages optimisés.
Automatisation avec Cloud-Init : Pour gagner du temps lors de la configuration, utilisez un template Cloud-Init. Cela permet d'automatiser et de simplifier l'initialisation de vos machines virtuelles. Retrouvez les instructions dans ce guide.
Installation des outils nécessaires :
Docker et Docker Compose : Une fois la machine virtuelle prête, installez Docker et Docker Compose, indispensables pour gérer et orchestrer vos conteneurs. Ce guide vous accompagnera dans l'installation.
Sécurisation et exposition de l'application :
Proxy inverse avec Traefik : Pour exposer vos applications sur Internet de manière sécurisée, configurez un proxy inverse. Traefik est une solution recommandée. Suivez ce guide pour l'installation.
Gestion des accès avec Authelia : Pour renforcer la sécurité, implémentez une solution de gestion des accès telle qu'Authelia. Ce guide vous fournira les étapes nécessaires :
3-Déploiement
Commencez par créer un dossier "docker" à la racine du dossier utilisateur"
mkdir -p ~/docker
Créez un fichier nommé "compose.yml"
touch ~/docker/compose.yml
Ouvrez le fichier "compose.yml" et copiez cette configuration.
networks:
# défault network
default:
driver: bridge
services:
synapseadm:
container_name: synapseadm
image : awesometechnologies/synapse-admin
hostname: synapseadm
ports:
- 80:80
restart: unless-stopped
- services : c'est là qu'il faudra ajouter les configuration de vos conteneurs
- container_name : le nom du conteneur, sinon Docker en choisira un de manière aléatoire
- hostname : le nom d'hôte du conteneur
- build et context : cette fonctionnalité permet de créer l'image Docker au moment du déploiement en allant chercher le code du dépôt git.
- ports : le port d'écoute pour accéder à l'interface web (mettez tout sauf 80 par exemple 9000:80)
- restart : unless-stopped par défaut. Le daemon de Docker redémarrera automatiquement le conteneur sauf si vous l’arrêtez, il faudra le démarrer manuellement
Enregistrez le fichier "compose.yml" et déployez le conteneur.
docker compose up -d
4-Configuration
Accédez à l'interface web en tapant l'adresse IP suivi de son numéro de port ou bien l'adresse web.
Choisissez la langue, indiquez vos identifiants (administrateur seulement), le nom de domaine de votre instance puis cliquez sur "Connexion".
Et c'est tout!!!! C'est un outil qui me facilite la tâche au quotidien car je suis pas encore à l'aise avec les bases de données. C'est un équivalent de PHPMyAdmin pour ceux qui connaissent déjà.
Vous allez pouvoir :
- Voir la liste des utilisateurs et des salons
- Voir les appareils sur lesquels sont connectés les utilisateurs
- Les logs de connexion
- Les médias partagés (invisible si chiffrement activé)
- Changer le statut d'un utilisateur
- Changer les mots de passe
- Activer ou désactiver les utilisateurs
5-Exposer son instance avec Traefik et Authelia
5-Exposer son instance avec Traefik et Authelia
Voici la configuration avec Traefik et Authelia.
Cochez la section ports si vous ne souhaitez pas accéder à l'application en local.
Ensuite, si vous avez suivi les guides de Traefik et Authelia, il vous faudra ajouter les labels adéquat pour pouvoir exposer l'application sur internet et activer l'authentification SFA ou MFA.
Comme d'habitude, suivez les parties 6 et 7 du guide de Traefik pour ouvrir les ports de votre box internet et ajouter les entrées DNS pour pouvoir accéder à l'application.
Et n'oubliez JAMAIS :
- D'éditer le fichier "configuration.yml" de Authelia.
- D'ajouter le nom de domaine de l'application
- De redémarrer l'application avec "docker compose restart authelia" pour que la modification soit prise en compte.
networks:
# default network
default:
driver: bridge
# Traefik network
web:
name: web
driver: bridge
services:
traefik:
container_name: traefik
image: traefik:v2
restart: always
networks:
- web
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${APPDATA}/traefik/traefik.yml:/traefik.yml
- ${APPDATA}/traefik/dynamic.yml:/dynamic.yml
- ${APPDATA}/traefik/letsencrypt/acme.json:/acme.json
- ${APPDATA}/traefik/shared:/shared
labels:
- traefik.enable=true
- traefik.http.routers.traefik.entrypoints=websecure
- traefik.http.routers.traefik.rule=Host(`traefik.<domain_name>`)
- traefik.http.routers.traefik.service=api@internal
- "traefik.http.routers.traefik.middlewares=middlewares-basic-auth@file"
authelia:
image: authelia/authelia
container_name: authelia
volumes:
- ${APPDATA}/authelia:/config
networks:
- web
labels:
- traefik.enable=true
- traefik.http.routers.authelia.entrypoints=websecure
- traefik.http.routers.authelia.rule=Host(`authelia.<domain_name>`)
- traefik.http.routers.authelia.tls.certresolver=letsencrypt
ports:
- 9091:9091
restart: unless-stopped
healthcheck:
disable: true
environment:
- TZ=${TZ}
synapseadm:
container_name: synapseadm
image : awesometechnologies/synapse-admin
hostname: synapseadm
# ports:
# - 80:80
restart: unless-stopped
labels:
- traefik.enable=true
- traefik.http.routers.synapseadm.entrypoints=websecure
- traefik.http.routers.synapseadm.tls.certresolver=letsencrypt
- traefik.http.routers.synapseadm.rule=Host(`synapseadm.<domain_name>`)
- traefik.http.routers.synapseadm.service=synapseadm-svc
- traefik.http.services.synapseadm-svc.loadbalancer.server.port=80
- 'traefik.http.routers.synapseadm.middlewares=chain-authelia@file'