SOGo est une solution groupware open-source qui offre des fonctionnalités telles que la gestion des courriels, des calendriers et des contacts. Dans cet article, nous allons voir comment déployer SOGo à l’aide de Docker Compose en utilisant MySQL ou PostgreSQL comme base de données backend.
Nous fournirons deux exemples de fichiers docker-compose.yml
: un pour MySQL et un pour PostgreSQL. Vous pourrez choisir celui qui correspond le mieux à votre environnement.
Table of Contents
Déploiement de SOGo avec MySQL
Le fichier docker-compose.yml
suivant configure SOGo pour qu’il fonctionne avec une base de données MySQL. Nous utilisons l’image Docker personnalisée pmietlicki/sogo-from-sources
pour exécuter SOGo, et une image MySQL officielle pour la base de données.
services:
sogo:
image: pmietlicki/sogo-from-sources
container_name: sogo
ports:
- "80:80" # HTTP
- "443:443" # HTTPS
- "8800:8800" # Port pour Apple devices
volumes:
- sogo-conf:/srv/etc
- sogo-data:/srv/lib/sogo
environment:
- MEMCACHED=64 # 64 MiB pour memcached, ajustez selon vos besoins
- SOGoMailingMechanism=smtp
- SOGoSMTPServer=smtp-server.localdomain.local
- SOGoIMAPServer=imaps://imap-server.localdomain.local:143
- WOWorkersCount=8
- MYSQL_HOST=db
- MYSQL_PORT=3306
- MYSQL_DATABASE=sogo
- MYSQL_USER=sogo
- MYSQL_PASSWORD=sogo_password
depends_on:
- db
db:
image: mysql:8.0
container_name: sogo-mysql
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_DATABASE=sogo
- MYSQL_USER=sogo
- MYSQL_PASSWORD=sogo_password
volumes:
- mysql-data:/var/lib/mysql
volumes:
sogo-conf:
driver: local
sogo-data:
driver: local
mysql-data:
driver: local
Explications :
- Volumes :
sogo-conf
: Stocke la configuration de SOGo pour persistance.sogo-data
: Stocke les données de SOGo telles que les profils utilisateurs.mysql-data
: Stocke les données MySQL pour persistance.- Variables d’environnement :
MYSQL_HOST
,MYSQL_PORT
,MYSQL_DATABASE
,MYSQL_USER
,MYSQL_PASSWORD
: Configurent les paramètres de connexion à la base de données MySQL.- Ports :
80
,443
,8800
: Ports exposés pour SOGo, couvrant HTTP, HTTPS et les appareils Apple.
Déploiement de SOGo avec PostgreSQL
Le fichier docker-compose.yml
suivant configure SOGo pour qu’il fonctionne avec une base de données PostgreSQL.
services:
sogo:
image: pmietlicki/sogo-from-sources
container_name: sogo
ports:
- "80:80" # HTTP
- "443:443" # HTTPS
- "8800:8800" # Port pour Apple devices
volumes:
- sogo-conf:/srv/etc
- sogo-data:/srv/lib/sogo
environment:
- MEMCACHED=64 # 64 MiB pour memcached, ajustez selon vos besoins
- SOGoMailingMechanism=smtp
- SOGoSMTPServer=smtp-server.localdomain.local
- SOGoIMAPServer=imaps://imap-server.localdomain.local:143
- WOWorkersCount=8
- POSTGRESQL_HOST=db
- POSTGRESQL_PORT=5432
- POSTGRESQL_DATABASE=sogo
- POSTGRESQL_USER=sogo
- POSTGRESQL_PASSWORD=sogo_password
depends_on:
- db
db:
image: postgres:13
container_name: sogo-postgres
environment:
- POSTGRES_PASSWORD=root_password
- POSTGRES_DB=sogo
- POSTGRES_USER=sogo
volumes:
- postgres-data:/var/lib/postgresql/data
volumes:
sogo-conf:
driver: local
sogo-data:
driver: local
postgres-data:
driver: local
Explications :
- Volumes :
sogo-conf
: Stocke la configuration de SOGo pour persistance.sogo-data
: Stocke les données de SOGo telles que les profils utilisateurs.postgres-data
: Stocke les données PostgreSQL pour persistance.- Variables d’environnement :
POSTGRESQL_HOST
,POSTGRESQL_PORT
,POSTGRESQL_DATABASE
,POSTGRESQL_USER
,POSTGRESQL_PASSWORD
: Configurent les paramètres de connexion à la base de données PostgreSQL.- Ports :
80
,443
,8800
: Ports exposés pour SOGo, couvrant HTTP, HTTPS et les appareils Apple.
Usage
- Créez lefichier
docker-compose.yml
avec le contenu correspondant à votre choix de base de données (MySQL ou PostgreSQL). - Placez-le dans le répertoire de votre projet où vous souhaitez déployer SOGo.
- Lancez le déploiement avec la commande suivante :
docker-compose up -d
- Vérifiez les logs pour vous assurer que SOGo et la base de données démarrent correctement :
docker-compose logs -f
Bonus : Création de la Table sogo_users
et d’un Compte Utilisateur
Pour permettre à SOGo de gérer les utilisateurs, il est nécessaire de créer une table appropriée dans la base de données choisie (MySQL ou PostgreSQL). Cette table contiendra les informations des utilisateurs, y compris les identifiants et les mots de passe. Voici comment procéder pour créer cette table et ajouter un compte utilisateur.
1. Création de la Table sogo_users
dans MySQL
Une fois que votre service MySQL est en cours d’exécution, connectez-vous à la base de données pour créer la table sogo_users
:
docker exec -it sogo-mysql mysql -u root -p
Ensuite, créez la table en exécutant les commandes suivantes :
USE sogo;
CREATE TABLE sogo_users (
c_uid VARCHAR(255) NOT NULL PRIMARY KEY, -- Identifiant unique (nom d'utilisateur)
c_name VARCHAR(255) NOT NULL, -- Nom unique ou adresse email
c_password VARCHAR(255) NOT NULL, -- Mot de passe haché
mail VARCHAR(255) NOT NULL, -- Adresse email principale
aliases TEXT, -- Autres adresses email ou alias
c_cn VARCHAR(255), -- Nom complet (Common Name)
last_login TIMESTAMP -- Dernière date de connexion (facultatif)
);
2. Création de la Table sogo_users
dans PostgreSQL
Pour PostgreSQL, connectez-vous à la base de données avec la commande suivante :
docker exec -it sogo-postgres psql -U sogo -d sogo
Ensuite, créez la table en exécutant les commandes suivantes :
CREATE TABLE sogo_users (
c_uid VARCHAR(255) PRIMARY KEY, -- Identifiant unique (nom d'utilisateur)
c_name VARCHAR(255) NOT NULL, -- Nom unique ou adresse email
c_password VARCHAR(255) NOT NULL, -- Mot de passe haché
mail VARCHAR(255) NOT NULL, -- Adresse email principale
aliases TEXT, -- Autres adresses email ou alias
c_cn VARCHAR(255), -- Nom complet (Common Name)
last_login TIMESTAMP -- Dernière date de connexion (facultatif)
);
3. Ajout d’un Compte Utilisateur
Après avoir créé la table, vous pouvez ajouter un utilisateur avec les informations suivantes :
- Nom d’utilisateur :
john.doe
- Email :
[email protected]
- Mot de passe :
password123
(haché en MD5)
INSERT INTO sogo_users (c_uid, c_name, c_password, mail, aliases, c_cn)
VALUES ('john.doe', '[email protected]', MD5('password123'), '[email protected]', '[email protected]', 'John Doe');
Cette commande crée un utilisateur john.doe
avec l’adresse email [email protected]
et un mot de passe haché password123
.
4. Test de Connexion
Avec la table et le compte utilisateur configurés, vous pouvez maintenant vous connecter à SOGo avec les identifiants que vous avez créés :
- Nom d’utilisateur ou Email :
john.doe
ou[email protected]
- Mot de passe :
password123
Si vous rencontrez des problèmes lors de la connexion, vérifiez les logs des conteneurs SOGo pour toute erreur liée à l’authentification.
Vérification des Logs
Si vous rencontrez des problèmes lors de la connexion, vérifiez les logs de SOGo pour identifier toute erreur liée à l’authentification ou à la configuration. Les logs de SOGo se trouvent dans le fichier suivant à l’intérieur du conteneur :
/var/log/sogo/sogo.log
Vous pouvez accéder aux logs avec la commande suivante :
docker exec -it sogo tail -f /var/log/sogo/sogo.log
Cela vous permettra de suivre les événements et les erreurs en temps réel.
Conclusion
Ces configurations docker-compose.yml
vous permettent de déployer SOGo avec MySQL ou PostgreSQL selon vos besoins. Les volumes persistent les données et les configurations, assurant que votre instance SOGo est maintenue même après un redémarrage des conteneurs. Les variables d’environnement facilitent la personnalisation sans modifier l’image Docker elle-même.
Pour plus d’informations ou de personnalisation, consultez la documentation officielle de SOGo.