Dockeriration Nine
Go to file
2024-07-31 09:10:42 +02:00
env svg keycloak 2024-07-31 09:09:48 +02:00
misc svg 2024-07-27 10:19:39 +02:00
services svg keycloak 2024-07-31 09:09:48 +02:00
.gitignore svg keycloak 2024-07-31 09:10:42 +02:00
nine.sh svg 2024-07-28 16:57:55 +02:00
readme.md wordpress 2024-07-05 23:01:17 +02:00

Installation de nine

Cloner le dépot

git clone --branch master https://forge.cadoles.com/afornerot/ninedocker.git

## Nine sur localhost

Vous devez ajouter un domaine dans votre host qui pointe sur 127.0.0.0

Sans personnalisation nine est configuré pour travailler avec nine.local et il écoute le port 7080

127.0.0.0 nine.local

Comment personnaliser

Pour personnaliser la configuration de base

  • créer un fichier /env/.env.local
  • et faite varier les variables d'environnement WEB_URL et PROTOCOLE

Host

De base ninedocker est configuré pour fonctionner sur nine.local en https

Exemple de faire fonctionner le docker en local et en http

WEB_URL=mondomaine
PROTOCOLE=https

Ports & Services associés

Les services suivants sont à l'écoute des ports

  • 3306 = mariadb
  • 9000 = ninegate
  • 1389/1636 = openldap
  • 8999/8443 = keycloak
  • 9001 = nextcloud
  • 9002 = nineboard
  • 9003 = wordpress
  • 9100 = adminer
  • 9101 = phpldapadmin
  • 9102 = nineapache

Si vous souhaitez ne pas attaquer vos services via leurs ports, vous devrez mettre en place un reverse proxy apache ou ngnix

exemple apache

ProxyPass /auth http://0.0.0.0:8080/auth retry=0 keepalive=On
ProxyPassReverse /auth http://0.0.0.0:8080/auth retry=0

ProxyPass /ninegate http://0.0.0.0:9000/ninegate retry=0 keepalive=On
ProxyPassReverse /ninegate http://0.0.0.0:9000/ninegate retry=0
ProxyPass /wssninegate ws://0.0.0.0:9000/wssninegate retry=0 keepalive=On
ProxyPassReverse /wssninegate ws://0.0.0.0:9000/wssninegate retry=0

ProxyPass /nextcloud http://0.0.0.0:9001 retry=0 keepalive=On
ProxyPassReverse /nextcloud http://0.0.0.0:9001 retry=0

ProxyPass /nineboard http://0.0.0.0:9002/nineboard retry=0 keepalive=On
ProxyPassReverse /nineboard http://0.0.0.0:9002/nineboard retry=0
ProxyPass /wssnineboard ws://0.0.0.0:9002/wssnineboard retry=0 keepalive=On
ProxyPassReverse /wssnineboard ws://0.0.0.0:9002/wssnineboard retry=0

ProxyPass /wordpress http://0.0.0.0:9003/wordpress retry=0 keepalive=On
ProxyPassReverse /wordpress http://0.0.0.0:9003/wordpress retry=0

ProxyPass /adminer http://0.0.0.0:9100 retry=0 keepalive=On
ProxyPassReverse /adminer http://0.0.0.0:9100 retry=0

ProxyPass /phpldapadmin http://0.0.0.0:9101/phpldapadmin retry=0 keepalive=On
ProxyPassReverse /phpldapadmin http://0.0.0.0:9101/phpldapadmin retry=0

ProxyPass /nineapache http://0.0.0.0:9102 retry=0 keepalive=On
ProxyPassReverse /nineapache http://0.0.0.0:9102 retry=0

Activer / Désactiver les services

Dans votre ./env/.env.local vous pouvez activer / désactiver des services via les variables suivante

MARIADB_ACTIVATE=
LDAP_ACTIVATE=
CAS_ACTIVATE=
NINEGATE_ACTIVATE=
NEXTCLOUD_ACTIVATE=
NINEBOARD_ACTIVATE=
WORDPRESS_ACTIVATE=
ADMINER_ACTIVATE=
PHPLDAPADMIN_ACTIVATE=
NINEAPACHE_ACTIVATE=

Déporter des services

Certains services peuvent t'être distant et non géré par le docker nine. Pour cela garder le service actif mais indiquer lui qu'il n'est pas local via les variables suivantes

LDAP_LOCAL
CAS_LOCAL
NINEGATE_LOCAL
NEXTCLOUD_LOCAL
NINEBOARD_LOCAL
WORDPRESS_LOCAL
ADMINER_LOCAL
PHPLDAPADMIN_LOCAL
NINEAPACHE_LOCAL

S'il ne sont pas local en fonction du service vous devrez ajouter les variables nécessaire dans votre .env.local pour indiquer où se situe le service.

LDAP

LDAP_HOST                       # Host de votre annuaire
LDAP_PORT                       # Port de votre annuaire
LDAP_TLS                        # Use TLS 1/0
LDAP_BASEDN                     # Basedn de votre annuaire
LDAP_ADMIN_USERNAME             # UID du compte writer ou reader de votre annuaire. Writer obligatoire si vous synchroniser ninegate dans votre openldap
LDAP_USER                       # DN du compte writer ou reader de votre annuaire. Writer obligatoire si vous synchroniser ninegate dans votre openldap
LDAP_PASSWORD                   # Password du compte writer ou reader de votre annuaire. Writer obligatoire si vous synchroniser ninegate dans votre openldap
LDAP_USERNAME=uid               # Attribut de l'uid d'un utilisateur
LDAP_FIRSTNAME=givenname        # Attribut prénom d'un utilisateur
LDAP_LASTNAME=sn                # Attribut nom d'un utilisateur
LDAP_DISPLAYNAME=displayName    # Attribut displayname d'un utilisateur
LDAP_EMAIL=mail                 # Attribut mail d'un utilisateur
LDAP_MEMBER=memberUid           # Liste des uid utilisateur dans un groupe

Personnaliser Ninegate

MASTERIDENTITY

Ce variable va vous permettre de déterminer qui est le maître de l'identité

SQL

  • C'est ninegate le maître vous pouvez via l'interface de gestion de ninagate créer/modifier/supprimer des niveaux/groups/utilisateurs
  • Vous pourrez activer l'auto inscription des utilisateurs
  • Les utilisateurs pourront bénéficier d'un "Mot de passe oublié"
  • Si vous avez activer le service LDAP, les utilisateurs pourront alors être synchroniser

LDAP

  • C'est l'annuaire le maître vous ne plus créer/modifier/supprimer des utilisateurs dans l'interface de ninegate, ni bénéficier de l'auto inscription des utilisateurs ni de la fonctionnalité "Mot de passe oublié"
  • Cela sera à vous de créer directement dans l'annuaire vos utilisateurs
  • Vous pourrez créer des niveaux et des groupes
  • Les niveau01s et les groupes pourront etre associé à une requete LDAP indiquant à Ninegate comment les récupérer et les synchroniser dans sa base

### MODE_AUTH

Quel protocole d'authentification sera utilisé par les différents service

  • SQL = sa propre mire d'authentification
  • CAS = CAS le serveur CAS local ou externe
  • LDAP = l'annuaire local ou externe dans ce cas la variable LDAP_LOGIN_FILTER est nécessaire

Synchronisation

Pour activer la synchronisation des comptes il est nessaire d'activer cette variable

LDAP_SYNC

En fonction de votre MASTERIDENTITY vous pouvez synchroniser les utilisateurs

Si masteridentity est à SQL = où sont synchronisées les datas dans l'annuaire

Attention dans ce cas ninegate attend une structure d'annuaire bien précise. Vous pouvez retrouver cette structure si vous souhaitez déporter votre annuaire à ces emplacements :

  • schema = ./volume/openldap/nine/schema/cadoles.ldif
  • ldif = ./volume/openldap/nine/ldif/cadoles.ldif

Voici les variables qui indiquera à ninegate où aller synchroniser son organisation

LDAP_BASEUSER="ou=users,ou=ninegate,o=gouv,c=fr"
LDAP_BASENIVEAU01="ou=niveau01,ou=ninegate,o=gouv,c=fr"
LDAP_BASENIVEAU02="ou=niveau02,ou=ninegate,o=gouv,c=fr"
LDAP_BASEGROUP="ou=groups,ou=ninegate,o=gouv,c=fr"

Si masteridentity est à LDAP

Dans l'interface de ninegate sur les niveaux vous devrait lui indiquer comment créer les utilisateurs de ce niveau via un filtre LDAP

Exemple

(&(uid=*)(objectclass=inetOrgPerson)(!(description=Computer)))

Dans ce cas à l'initialisation de ninegate un premier niveau sera généré est lié à la requete annuaire déclarée via

OPENLDAPREQNIVEAU01

Vous pouvez aussi synchroniser vos groupes annuaires dans ninegate en activant et en précisant la requête LDAP permettrant de les récupérer

OPENLDAPSYNCHROGROUP
OPENLDAPREQGROUP

Si masteridentity est à SSO

Il n'y a pas de synchronisation, la création / modification des utilisateurs se fait à la connexion de ce dernier.