Aller au contenu principal

Client CLI pour l'administration

Le client CLI (« Command Line Interface » = Interface de lignes de commandes) permet d'effectuer des tâches d'administration de la plateforme BlueMind en ligne de commande, sans avoir à créer de scripts pour cela.

Couplé au système de monitoring bm-tick, il permet notamment des tâches d'administration de celui-ci. Pour plus d'informations, voir Découvrir et installer bm-tick.

Installation

Le client bm-cli est installé par défaut lors de l'installation de BlueMind.

Des composants additionnels peuvent être installés pour étendre les capacités de l'outil :

  • bm-plugin-cli-mapi : ajoute des commandes de gestion de MAPI pour Outlook
    NB : ce paquet est installé automatiquement lors de l'installation des paquets mapi.
  • bm-plugin-cli-setup : ajoute des commandes pour l'installation et la mise à jour de BlueMind

Usage

Lancer une commande

Pour utiliser l'outil en ligne de commande, se connecter au serveur en ssh et utiliser la commande bm-cli suivi de la commande et ses options.
Par exemple, pour lister les utilisateurs du domaine :

bm-cli user get bluemind.loc
astuce

Les commandes peuvent être couplées, entre elles ou avec d'autres commandes habituelles. Elle peuvent aussi être incluses dans des scripts afin d'effectuer plusieurs opérations en une seule fois.

Lister les commandes existantes

La commande bm-cli -h permet de lister l'intégralité des commandes disponibles :

Extrait
bm-cli -h
auditlog
auditlog create create audit log datastream
auditlog acl get access control entries
auditlog get get auditlog data
auditlog calendar get calendar data
auditlog dir get directory data
auditlog global get global auditlog data
auditlog login get login data
auditlog mail get mail data
auditlog mailfilter get mail filter rule data
auditlog get-retention Get retention duration (days) for datastream
auditlog sysconf get system configuration and global setting data
auditlog set-retention set retention duration (days) for datastream
auth
auth reconfigure Delete & recreate keycloak realms for existing domains
auth get-conf Get domain authentication configurations
auth set-conf Set domain authentication configuration
auth-provider
auth-provider openid-list-provider List registered OpenId provider systems
auth-provider openid-register-provider Register an OpenID provider system
calendar
calendar log Pretty-Print an auditlog file
calendar delete-events-by-organizer Delete all events having a specific organizer
calendar export Export a calendar to an ICS file
calendar import import an ICS File
calendar list List user or whole domain calendars
calendar list-event-details-by-organizer List event details
calendar reset Reset a calendar
calendar resync Resync an event
calendar touch Increment the version of a calendar event
...
info

Les commandes sont enrichies au fur et à mesure des versions de BlueMind. Il se peut donc que plus (ou moins) de commandes et options soient disponibles selon la version de BlueMind installée.

Il est donc important de se référer à la commande bm-cli -h du serveur.

Le paramètre supplémentaire v permet d'ajouter au listing l'aide complète de chaque commande :

Extraits de la commande
bm-cli -hv
auditlog -h, --help
Affiche l'arbre complet des commandes.
-v, --verbose
Affiche aussi les arguments pour chaque commande de l'arbre.

[...]

calendar -h, --help
Affiche l'arbre complet des commandes.
-v, --verbose
Affiche aussi les arguments pour chaque commande de l'arbre.

calendar log Pretty-Print an auditlog file
--dataShow data
--show-ro
Show read-only data
--data-by-date
Show data only on a specific date (yyyy-MM-ddThh:mm:ss).
Matching also works with substrings of this pattern
--event-query
Event query string (Columns Action and Event)
--event-uid
Event UID query string
--calendar-query
Calendar query string (Column Calendar)
--filtered-actions
Comma-separated list of actions which should not appear
in the output
<file>Path to the auditlog file

calendar delete-events-by-organizer Delete all events having a specific organizer
--domain
domain
--dry
list events without deleting them
<email>
Organizer email

calendar export Export a calendar to an ICS file
--direntry-uid
Directory entry UID
--all-domains
All domains except global.virt
--workers
run with X workers (default: 1)
--match
regex that entity must match, for example : [a-c].*
--progress
display progress messages
--output-directory
The output directory path, files will be save in an email
named subdirectory
--dry Dry-run (do nothing)
--calendarUid
calendar uid, export all calendars if not specified
<target>
email address or domain name

[...]

setup -h, --help
Affiche l'arbre complet des commandes.
-v, --verbose
Affiche aussi les arguments pour chaque commande de l'arbre.

setup enable-mailapp Activate MailApp
--direntry-uid
Directory entry UID
--all-domains
All domains except global.virt
--workers
run with X workers (default: 1)
--match
regex that entity must match, for example : [a-c].*
--progress
display progress messages
--group
Adds the necessary role to this group (defaults to 'user')
<target>
email address or domain name

setup check-subscription Check subscription
setup install Install BlueMind
--domain
Set the default domain name.
--external-url
Set the External Url. Ex: bluemind.domain.tld
--sw-pass
Set setup wizard password.
--domain-admin-pass
Set domain administrator password.
--admin0-pass
Set admin0 password.
--reinstall
Force installation even if installed.
--set-contact
Set a subscription contact
--shard-ip
Provided shard server IP (deprecated, please use the
servers-map feature)
--server-map
Assign tags on the selected servers, can be
specified multiple times.
(List of tags in TagDescriptor from net.bluemind.server.
api)
Exemple:
* elasticsearch on 192.168.1.2
* storage servers on 192.168.1.3, 192.168.1.4

--server-map 192.168.1.2=bm/es \
--server-map 192.168.1.3=bm/pgsql-data,mail/imap \
--server-map 192.168.1.4=bm/pgsql-data,mail/imap

--lang Set admin0 language. (default 'fr')

setup upgrade_history Shows the Bluemind upgrade history
setup upgrade Upgrade BlueMind
-f, --force
force update, even if core reports the correct version
--backup
Backup Bluemind databases (pg-dump), may be very long.
--lang
Set admin0 language (en, fr...).

Aide sur une commande

À tout moment, il est possible d'obtenir de l'aide sur une commande particulière au moyen de --help ou -h.

Par exemple, maintenance -h présente la commande maintenance et ses diverses actions possibles :

bm-cli maintenance -h
consolidateIndex Consolidate a mailbox index
dump-cache Dump core caches to a json file
flush-cache Flush bm-core caches
list List directory entries
orphan-body-repair delete orphan mail bodies
orphan-check check and delete orphan mailbox records
read-cyrus-index Read a cyrus index file
repair Run repair maintenance operation
ops List available maintenance operations
schema check database schema
sentry sentry setup
update-fw Update firewall rules

Pour obtenir plus de détails sur une sous-commande, il suffit de taper la sous-commande à son tour, ici pour obtenir l'aide concernant l'opération de consolidation d'index :

bm-cli maintenance consolidateIndex -h
Usage: bm-cli maintenance consolidateIndex [--progress] [--reset]
[--match=<match>] [--workers=<workers>] (<target> |
--direntry-uid=<dirEntryUid> | --all-domains)
Consolidate a mailbox index
<target> email address or domain name
--all-domains All domains except global.virt
--direntry-uid=<dirEntryUid>
Directory entry UID
--match=<match> regex that entity must match, for example : [a-c].*
--progress display progress messages
--reset Reset the index (only the data belonging to the
target)
--workers=<workers> run with X workers (default: 1)

Gestion des entités

Obtenir l'UID d'une entité

Les différentes commandes concernant les entités (user, contact, calendar)

Trouver l'UID d'un utilisateur

Pour obtenir l'UID d'un utilisateur, utiliser la commande bm-cli user get en précisant comme caractère de recherche son adresse email par défaut ou en couplant avec grep pour filtrer sur un autre champ :

bm-cli user get bluemind.loc --match=jdoe@bluemind.loc --display uid
{"uid":"9236AE27-9C2D-4BA7-84D3-C2067D515195"}

bm-cli user get bluemind.loc --display "uid familyNames"|grep "Doe"
{"uid":"9236AE27-9C2D-4BA7-84D3-C2067D515195","familyNames":"Doe"}

Trouver l'UID d'un groupe

Pour obtenir l'UID d'un groupe, utiliser la commande bm-cli group get en précisant le nom du groupe et le domaine de recherche :

bm-cli group get Direction@bluemind.loc
{"value":{"orgUnitUid":null,"emails":[{"address":"direction@bluemind.loc","allAliases":true,"isDefault":true}],"hidden":false,"archived":false,"system":false,"dataLocation":"bm-master","name":"Direction","description":null,"properties":{},"hiddenMembers":false,"mailArchived":true,"memberCount":2},"uid":"A48CF63E-C39F-46A9-9F85-3DF1459E8BDC","internalId":24,"version":53,"displayName":"Direction","externalId":null,"createdBy":"admin0_global.virt","updatedBy":"system","created":1758880480523,"updated":1758880493135,"flags":[]}

NB : contrairement à la commande pour les utilisateurs, il n'est ici pas possible de filtrer la sortie pour n'obtenir que l'UID.

Trouver l'UID d'un carnet d'adresse

L'UID d'un carnet peut être trouvé grâce à la commande bm-cli contact list permettant de lister l'ensemble des carnets d'un utilisateur, d'un domaine ou de l'ensemble des domaines.

Pour le carnet d'un utilisateur on pourra récupérer la liste complète de ses carnets et éventuellement la filtrer grâce à d'autres commandes (grep par exemple) :

bm-cli contact list jdoe@bluemind.loc

Pour un carnet de domaine, le paramètre --match permet de filtrer facilement sur le nom :

bm-cli contact list --match=Clients --all-domains
{"owner":"FDF64CCE-E957-423E-BB93-25990B2B13C9","uid":"FDF64CCE-E957-423E-BB93-25990B2B13C9","name":"Clients"}

Trouver l'UID d'un calendrier

L'UID d'un calendrier peut être trouvé grâce à la commande bm-cli calendar list permettant de lister l'ensemble des calendriers d'un utilisateur, d'un domaine ou de l'ensemble des domaines.

Pour le calendrier d'un utilisateur on pourra récupérer la liste complète de ses calendrier et éventuellement la filtrer grâce à d'autres commandes (grep par exemple) :

bm-cli calendar list jdoe@bluemind.loc
{"owner":"9236AE27-9C2D-4BA7-84D3-C2067D515195","uid":"calendar:Default:9236AE27-9C2D-4BA7-84D3-C2067D515195","name":"John Doe"}

Pour un calendrier de domaine, le paramètre --match permet de filtrer facilement sur le nom :

bm-cli calendar list --all-domains --match=Evenementiel
{"owner":"B835E391-FB8E-4879-A763-883C5489C0CA","uid":"B835E391-FB8E-4879-A763-883C5489C0CA","name":"Evenementiel"}

Trouver l'UID d'une entité, quelle qu'elle soit

La commande maintenance list permet de lister l'ensemble des entités d'une domaine ou d'une installation, quelle que soit leur type. Cela permet de trouver les informations, dont l'UID, sans connaitre son type ou si son type n'a pas de commande propre :

# rechercher l'UID d'une entité de l'installation, sans connaître son type ou son domaine, grâce à grep
bm-cli maintenance list --all-domains | grep contact
{"displayName":"contact","entryUid":"8D2FCA19-798A-4ACE-A88F-9E5693172FD9","accountType":null,"kind":"MAILSHARE","path":"7bbaaa6d.internal/mailshares/8D2FCA19-798A-4ACE-A88F-9E5693172FD9","email":"contact@bluemind.loc","hidden":false,"system":false,"archived":false,"emails":null,"orgUnitUid":null,"orgUnitPath":null,"dataLocation":"bm-master","minId":13}

# rechercher l'UID de la boîte partagée "contact" du domaine bluemind.loc
bm-cli maintenance list contact@bluemind.loc
{"displayName":"contact","entryUid":"8D2FCA19-798A-4ACE-A88F-9E5693172FD9","accountType":null,"kind":"MAILSHARE","path":"7bbaaa6d.internal/mailshares/8D2FCA19-798A-4ACE-A88F-9E5693172FD9","email":"contact@bluemind.loc","hidden":false,"system":false,"archived":false,"emails":null,"orgUnitUid":null,"orgUnitPath":null,"dataLocation":"bm-master","minId":13}

NB : l'UID est ici retourné dans le champ entryUid.

Gestion des utilisateurs

Abonner tous les utilisateurs à un carnet ou un calendrier

Cas d'usage : on souhaite que tous les utilisateurs soient abonnés à un carnet d'adresse de domaine. Pour éviter les erreurs/oublis et simplifier la procédure, il est possible pour un administrateur de faire cela facilement grâce au CLI.

Dans un premier temps, il faut récupérer l'UID du carnet ou du calendrier souhaité (voir ci-dessus).
Ensuite, il suffit d'utiliser la commande user subscribe avec le paramètre --users-all pour abonner l'ensemble des utilisateurs à l'entité voulue :

# abonnement des utilisateurs au carnet "Clients"
bm-cli user subscribe --subscribe-to "FDF64CCE-E957-423E-BB93-25990B2B13C9" --users-all --domain "bluemind.loc"
1/3:SUCCESS:user UID 9236AE27-9C2D-4BA7-84D3-C2067D515195 subscribed
2/3:SUCCESS:user UID D44D1825-E4DF-44FB-99CD-3E8AF564AED1 subscribed
3/3:SUCCESS:user UID 678D2A6D-D573-41A2-B73D-C32DEA1C4BC1 subscribed
---
Subscribe to 'FDF64CCE-E957-423E-BB93-25990B2B13C9' ending
0 subscriber(s) not found
0/3 subscription(s) in error
3/3 subscription(s) success

# abonnement des utilisateurs au calendrier "Evenementiel"
bm-cli user subscribe --subscribe-to "B835E391-FB8E-4879-A763-883C5489C0CA" --users-all --domain "bluemind.loc"
1/3:SUCCESS:user UID 9236AE27-9C2D-4BA7-84D3-C2067D515195 subscribed
2/3:SUCCESS:user UID D44D1825-E4DF-44FB-99CD-3E8AF564AED1 subscribed
3/3:SUCCESS:user UID 678D2A6D-D573-41A2-B73D-C32DEA1C4BC1 subscribed
---
Subscribe to 'B835E391-FB8E-4879-A763-883C5489C0CA' ending
0 subscriber(s) not found
0/3 subscription(s) in error
3/3 subscription(s) success

Supprimer les utilisateurs archivés (suspendus) du domaine

La commande ci-dessous recherche les adresses de messagerie des utilisateurs suspendus :

bm-cli user get bluemind.loc --archived --display "email"

Il est alors possible de coupler le retour avec une boucle et une commande delete afin de supprimer les utilisateurs retournés :

bm-cli user get bluemind.loc --display "email" | jq -r '.[].email' > /tmp/archived.txt
while read account ; do
bm-cli user delete --dry "$account"
done < /tmp/archived.txt

Appliquer un quota à tous les utilisateurs qui n'en ont pas

Cette opération se fait à l'aide de plusieurs commandes bm-cli et jq qui sont regroupées en une seule :

  1. Récupérer la liste des utilisateurs avec leur quota :

    bm-cli user get bluemind.loc --display 'email quota'
  2. Filtrer cette même commande sur les utilisateurs ayant un quota null :

    bm-cli user get bluemind.loc --display 'email quota' | grep null
  3. L'outil jq permet ensuite d'extraire l'email de chaque ligne retournée :

    jq -r '.email'
  4. Enfin, la commande de mise à jour du quota (ici un quota de 80 Mo) :

    bm-cli user update --quota "81920" username@bluemind.loc

Ainsi, la commande finale pour réaliser cela en une seule ligne :

bm-cli user get bluemind.loc --display 'email quota' | grep null | jq -r '.email' | xargs -n1 bm-cli user update --quota "81920"

Opérations sur les calendriers

Exporter/importer l'ensemble des calendriers d'un utilisateur

Cas d'usage : Dans le cadre d'un départ, en vue de pouvoir les réimporter chez d'autres utilisateurs, on veut exporter l'ensemble des calendriers d'un utilisateur.

  1. Exporter l'ensemble des calendriers de l'utilisateur John Doe (identifiant jdoe@bluemind.loc) dans le dossier /home/user/export/cals :

    bm-cli calendar export --output-directory /home/user/export/cals jdoe@bluemind.loc
  2. Importer le calendrier souhaité chez un autre utilisateur :

    bm-cli calendar import --calendarUid calendar:Default:A1B2C3D4E5F6Z --ics-file-path /home/user/export/cals/jdoe_default.ics hannibal@bluemind.loc

    💡 Pour importer l'ensemble des calendriers (exportés comme ci-dessus, ou provenant d'une autre source) on peut inclure cette commande dans une boucle parcourant le dossier d'export et les calendriers de l'utilisateur cible.

Exporter les calendriers de tous les utilisateurs

Cas d'usage : Dans une optique de migration ou de sauvegarde, on souhaite exporter et sauvegarder tous les calendriers de tous les utilisateurs au format ICS.

Pour cela, on réalise une boucle parcourant l'ensemble des utilisateurs et réalisant un export tel que ci-dessus :

bm-cli user get bluemind.loc --display 'email' | grep -v null | jq -r '.email' > /tmp/allUser.bluemind.loc
while read account ; do
bm-cli calendar export --output-directory /tmp/export/cals "$account"
done < /tmp/allUser.bluemind.loc

Cette boucle exporte l'ensemble des calendriers en créant un dossier par utilisateur :

/tmp/export/cals/
./admin@bluemind.loc
- admin.ics
./hannibal@bluemind.loc
- John+Smith.ics
./jdoe@bluemind.loc
- John+Doe.ics
- Reunions.ics
./patreides@bluemind.loc
- children.ics
- on-call+duty.ics
- Paul+Atreides.ics

Opérations sur les contacts

Importer les contacts d'un carnet d'adresse dans un autre

Cas d'usage : un utilisateur souhaite récupérer ses contacts collectés dans son carnet d'adresses personnel.

Pour cela, on va dans un premier temps éliminer les éventuels doublons du carnet des collectés de l'utilisateur, puis on transfèrera les contacts vers son carnet personnel (en testant au préalable l'import) :

# recherche de l'uid des carnets de l'utilisateur
bm-cli contact list jdoe@bluemind.loc
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"book:Contacts_05E25C2C-3643-4ED2-997C-4A4F39933D18","name":"My contacts"}
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18","name":"Collected contacts"}
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"408C741B-3FDC-44B6-B1FD-19E79404BFCF","name":"Perso"}
# nettoyage du carnet "Collected contacts"
bm-cli contact deduplicate jdoe@bluemind.loc --addressbook-uid book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18
2 were removed out of 35
# export au format VCF
bm-cli contact export jdoe@bluemind.loc --vcf-file-path /tmp/jdoe-collected.vcf --addressbook-uid book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18
addressbook book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18 of jdoe@bluemind.loc was exported
# import du carnet au format VCF dans le carnet personnel
## test grâce à l'option "dry"
bm-cli contact import jdoe@bluemind.loc --vcf-file-path /tmp/jdoe-collected.vcf --addressbook-uid 408C741B-3FDC-44B6-B1FD-19E79404BFCF --dry
DRY : AddressBook 408C741B-3FDC-44B6-B1FD-19E79404BFCF of jdoe@bluemind.loc was imported
## réalisation de l'import
bm-cli contact import jdoe@bluemind.loc --vcf-file-path /tmp/jdoe-collected.vcf --addressbook-uid 408C741B-3FDC-44B6-B1FD-19E79404BFCF
AddressBook 408C741B-3FDC-44B6-B1FD-19E79404BFCF of jdoe@bluemind.loc was imported
# réinitialisation du carnet "Collected contacts"
bm-cli contact reset jdoe@bluemind.loc --addressbook-uid book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18
Addressbook book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18 of jdoe@bluemind.loc was reset

Administration & Maintenance

État de l'instance BlueMind

La commande suivante permet de détecter les erreurs sur les nœuds core d'une instance BlueMind :

bm-cli node status
Exemple d'erreurs remontées par cette commande :
bm-cli node status
Alerts for 3 days (some might be resolved)
* [192.168.121.109] ES / elasticsearch-cluster-health: cluster is red @ Fri May 19 08:32:10 GMT 2023
* [192.168.121.109] heartbeat: bm-ysnp heartbeats are slow @ Wed May 17 11:43:51 GMT 2023
* [192.168.121.109] heartbeat: bm-ysnp heartbeats are slow @ Wed May 17 07:35:24 GMT 2023
* [192.168.121.109] ES / elasticsearch-cluster-health: cluster is red @ Wed May 17 07:35:08 GMT 2023
* [192.168.121.109] heartbeat: bm-ysnp heartbeats are slow @ Tue May 16 15:08:50 GMT 2023
* [192.168.121.109] heartbeat: bm-ysnp heartbeats are slow @ Tue May 16 10:50:49 GMT 2023
Server 192.168.121.109 (bm-master 192.168.121.109 [mail/smtp, mail/imap, bm/es, bm/core, bm/ac, bm/cal, bm/webmail, bm/contact, bm/settings, bm/redirector, bm/nginx, bm/pgsql, bm/pgsql-data, metrics/influxdb]) OK
DMESG Fri May 19 08:31:19 GMT 2023: systemd-journald[266]: File /var/log/journal/1bda33e3d75246aaaa6d2b8bfafcbad6/system.journal corrupted or uncleanly shut down, renaming and replacing.
DMESG Fri May 19 08:31:19 GMT 2023: FAT-fs (vda15): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
Installation multi-nœuds

En cas d'installation multi-nœuds, cette commande ne doit être exécutée que sur un nœud core afin d'éviter l'apparition d'erreurs ou avertissements inutiles.

Effectuer un check&repair global

La commande suivante permet d'effectuer l'opération "valider et réparer" sur l'ensemble des utilisateurs du domaine bluemind.loc en utilisant 4 threads :

bm-cli maintenance repair bluemind.loc --workers 4

Modifier le mot de passe admin0

Pour diverses raisons, techniques ou pratiques (en cas de perte, par exemple), il peut être utile de modifier le mot de passe de l'utilisateur admin0 sans avoir à se loguer dans BlueMind.

La commande suivante permet de le faire sans connaître l'ancien mot de passe :

bm-cli user update admin0@global.virt --password "NewPassword"

Mettre à jour la configuration tick

Lorsque l'outil de monitoring Bm-Tick est installé (voir Découvrir et installer bm-tick), il est possible d'effectuer des tâches d'administration sur celui-ci. Par exemple, il est possible de redéployer la configuration sur l'ensemble des serveurs du domaine avec la commande suivante :

bm-cli tick reconfigure
astuce

L'option --dry permet de tester la commande : l'opération est juste simulée.

bm-cli tick reconfigure --dry

Maintenance des utilisateurs et index

L'outil bm-cli permet d'effectuer diverses opérations de maintenance sur les utilisateurs, par exemple :

# réparer l'utilisateur user@bluemind.loc
bm-cli maintenance repair user@bluemind.loc
# réparer l'ensemble des utilisateurs du domaine en utilisant 4 threads
bm-cli maintenance repair bluemind.loc --numworkers 4
# consolider l'index de l'utilisateur user@bluemind.loc
bm-cli maintenance consolidateIndex user@bluemind.loc
# traite les 100 premiers utilisateurs retournés
bm-cli maintenance consolidateIndex bluemind.loc --from 0 --size 100
# traite les 50 utilisateurs suivants
bm-cli maintenance consolidateIndex bluemind.loc --from 101 --size 50
# traite les entités commencant par a, b ou c
bm-cli maintenance consolidateIndex bluemind.loc --match '[a-c].\*'

Analyse des logs

L'outil Auditlog permet de connaitre les actions et modifications réalisées sur les entités BlueMind.

Pour plus d'informations, voir Logs - Configuration et analyse

Activation des logs EAS

bm-cli permet également d'activer ou désactiver les logs EAS afin de faciliter la gestion des problèmes de connexion ou de synchronisation sur mobile. Consulter la page Problèmes de synchronisation mobile pour voir les commandes.

Installation et mise à jour de BlueMind

La souscription donnant accès aux mises à jour automatisées de BlueMind, elle donne aussi accès à des opérations supplémentaires du client bm-cli pour celles-ci.

Ces opérations étant sensibles et risquées, ce sont des commandes à réserver à une utilisation par des administrateurs avancés.

Pour disposer de ces commandes, il est nécessaire d'installer le plugin dédié :

apt install bm-plugin-cli-setup

La commande supplémentaire setup est alors disponible dès l'installation du plugin, sans redémarrage.

Installation

Pour installer BlueMind, utiliser la sous-commande install :

# obtenir de l'aide sur les arguments disponibles et leur utilisation
bm-cli setup -h
# installer BlueMind en passant en argument les paramètres de configuration souhaités
bm-cli setup install --external-url bluemind.bluemind.loc --domain bluemind.loc --sw-pass Passw0rd
bm-cli setup install --external-url bluemind.bluemind.loc --domain bluemind.loc --sw-pass Passw0rd --set-contact admin@bluemind.loc --reinstall

ℹ️ Paramètres utilisés ici :

  • --external-url : url externe du BlueMind
  • --domain : domaine
  • --set-contact : permet de positionner l'adresse de messagerie par défaut pour les notifications de l'expiration de la souscription
  • --sw-pass : permet de positionner le mot de passe de l'admin pour le setupwizard
astuce

Le paramètre --server-map permet d'assigner des serveurs et installer toute une instance en une seule commande.
Par exemple :

--server-map 192.168.1.2=bm/es --server-map 192.168.1.3=bm/pgsql-data,mail/imap --server-map 192.168.1.4=bm/nginx-edge,mail/smtp-edge

Pour une information plus complète sur les paramètres disponibles, consulter l'aide en ligne de la commande :

bm-cli setup install -h

Mise à jour

Pour des informations sur la mise à jour de BlueMind en ligne de commande, consulter la page dédiée Mise à jour de BlueMind.

Gestion des certificats SSL

L'ajout et le renouvellement des certificats SSL, pour un domaine donné ou pour le système global, peut se faire de deux façons :

  • en les générant via Let's Encrypt
  • en important directement les fichiers

Commandes utiles

bm-cli certificate file-cert --ca=certificate_authority.pem --cert=cert.pem --key=private_key.pem --domain=<domain>
bm-cli certificate manage-lets-encrypt --contact=no-reply@<default-domain> --domain=<domain>

Utilisation de Let's Encrypt

Il est possible d'utiliser Let's Encrypt pour générer le certificat pour un domaine donné ou pour le système global.

Activation

Afin de lancer une première génération de certificat avec Let's Encrypt, il faut jouer la commande suivante :

bm-cli certificate manage-lets-encrypt --contact=no-reply@"default-domain" --domain="bluemind.loc"
  • --contact : permet d'ajouter une adresse email qui permettra d'être informé lorsque l'expiration du certificat approchera.
    Si aucune adresse n'est renseignée l'adresse no-reply@"default-domain" sera utilisée (Pré-requis: le default domain devra être renseigné au préalable).
  • --domain : par défaut global.virt si aucun domaine n'est spécifié

Renouvellement

Si le domaine possède déjà un certificat généré par Let's Encrypt, celui-ci pourra être mis à jour en jouant la commande suivante :

bm-cli certificate manage-lets-encrypt --contact=no-reply@"default-domain" --domain="bluemind.loc"
  • --contact : permet de modifier l'adresse email, si besoin, sinon l'adresse précédemment renseignée sera conservée.
  • --domain : par défaut global.virt si aucun domaine n'est spécifié

Import manuel

Il est possible d'importer manuellement un certificat SSL en ajoutant les trois fichiers obligatoires, grâce à la commande suivante :

bm-cli certificate file-cert --ca=certificate_authority.pem --cert=cert.pem --key=private_key.pem --domain="bluemind.loc"
  • --domain : par défaut global.virt si aucun domaine n'est spécifié