UniFi Network Application sur NAS Synology avec Docker

Le fabricant Ubiquiti aime bien le changement, y compris avec son logiciel UniFi. Après le très simple UniFi, nous avons eu le droit au UniFi Controller, récemment renommé UniFi Network Application. Dans cet article, nous installerons cette nouvelle version et détaillerons la procédure de migration depuis une installation UniFi Controller existante. Pour ce tuto, nous utiliserons un NAS Synology avec Container Manager (Docker).

UniFi Network Application 2024 - UniFi Network Application sur NAS Synology avec Docker

UniFi Network Application et NAS Synology

Les produits réseau UniFi présentent de nombreux atouts : qualité de fabrication, performance, fiabilité… La partie logiciel n’est pas en reste ! Elle offre une vue d’ensemble de son réseau et permet de le gérer et de le configurer aux petits oignons. UniFi Network Application peut être installé sur un ordinateur (Windows, macOS, Linux) ou tout autre appareil prenant en charge Docker (NAS, Raspberry Pi…). De plus, il existe une gamme de produits UniFi conçus pour faire fonctionner UniFi Network Application de manière autonome.

Note : Désormais, le logiciel UniFi nécessite d’avoir un conteneur MongoDB pour fonctionner.

Je dois avouer que je n’avais pas encore pris le temps de faire changement de logiciel. La dernière fois que j’ai procédé à une mise à jour remonte au début de l’année… Tout fonctionnait parfaitement avec l’application mobile et les mises à jour des produits étaient régulières. Si vous êtes dans la même situation que moi, je vous recommande de faire une sauvegarde de votre installation et de récupérer le fichier (extension unf) correspondant. De plus, assurez-vous d’arrêter votre conteneur UniFi Controller avant de lancer l’installation 😉

UniFi Network Application avec Docker

Comme vous allez le constater, l’installation ne prend pas beaucoup de temps. La procédure décrite ci-dessous est également valable pour les NAS d’autres fabricants ou encore avec Portainer.

Installer Container Manager

Tout d’abord, vous devez avoir le paquet Container Manager (docker) installé sur votre NAS Synology. Pour cela, il faut passer par le Centre de Paquets. Ensuite, depuis File Station, déplacez vous dans le dossier docker et créez un nouveau dossier UniFi. Puis, allez dans ce nouveau dossier et créez 2 dossiers : db et data.

unifi mongo - UniFi Network Application sur NAS Synology avec Docker

Aujourd’hui, ce n’est pas un fichier que vous allez déposer, mais 2. Le premier, c’est le classique compose.yaml que vous déposerez à la racine docker/UniFi. Le second fichier se nomme init-mongo.js que vous déposerez dans le dossier db fraichement créé docker/UniFi/db. Ce dernier a pour but d’initialiser MongoDB pour fonctionner avec UniFi.

Commençons par explorer ensemble le fichier compose.yaml :

services:
  unifi-network-application:
    image: linuxserver/unifi-network-application:latest
    container_name: unifi-network-application
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - MONGO_USER=unifi
      - MONGO_PASS=UniFi123$
      - MONGO_HOST=unifi-db
      - MONGO_PORT=27017
      - MONGO_DBNAME=unifi
      - MEM_LIMIT=1024 #optional
      - MEM_STARTUP=1024 #optional
      - MONGO_TLS= #optional
      - MONGO_AUTHSOURCE= #optional
    volumes:
      - ./data:/config
    ports:
      - 8443:8443
      - 3478:3478/udp
      - 10001:10001/udp
      - 8080:8080
      #optional - 1900:1900/udp
      #optional - 8843:8843
      #optional - 8880:8880
      #optional - 6789:6789
      # optional - 5514:5514/udp
    restart: unless-stopped

  mongodb:
   image: docker.io/mongo:4.4.19
   container_name: unifi-db
   restart: always
   ports:
      - "27017:27017"
   volumes:
       - ./db:/data/db
       - ./db/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro

Je me suis appuyé sur les options proposées LinuxServer, qui fournit l’image, avec quelques adaptations. Si votre quantité de RAM est limitée, vous pourrez ajuster les valeurs en face de MEM_LIMIT et MEM_STARTUP. De plus, vous pouvez toujours régler les paramètres Activer la limitation des ressources au niveau du conteneur.

Regardons init-mongo.js. Comme mentionné précédemment, ce script a pour objectif (au premier démarrage) d’initialiser MongoDB pour fonctionner avec UniFi : nom de la base de données, compte utilisateur et mot de passe. Voici son contenu :

db.getSiblingDB("unifi").createUser({user: "unifi", pwd: "UniFi123$", roles: [{role: "dbOwner", db: "unifi"}]});
db.getSiblingDB("unifi_stat").createUser({user: "unifi", pwd: "UniFi123$", roles: [{role: "dbOwner", db: "unifi_stat"}]});

Installation d’UniFi Network Application

Ouvrez Container Manager et allez sur le menu de gauche Projet, puis appuyez sur le bouton Créer. Donnez un nom à votre projet (par exemple : unifi-network-application) et sélectionnez le répertoire UniFi contenant le fichier compose.yaml téléchargé précédemment. Le système détectera automatiquement la présence du fichier, cliquez sur le bouton OK. Vous devriez avoir quelque chose de similaire à ceci :

unifi network application - UniFi Network Application sur NAS Synology avec Docker

On clique sur le bouton Suivant, puis encore Suivant et enfin le bouton Effectué. Maintenant, il ne reste plus qu’à patienter… Lorsque c’est terminé, vous pouvez appuyer le bouton Fermer.

Accéder à UniFi Network Application

Ouvrez un nouvel onglet dans votre navigateur et tapez dans la barre d’adresse de votre navigateur :

  • http://AdresseIPduNAS:8443
  • http://NomduNAS:8443

La mire de connexion ci-dessous devrait apparaitre :

mire connexion unifi network - UniFi Network Application sur NAS Synology avec Docker

Si vous disposez d’un fichier de sauvegarde, de restauration… vous cliquerez sur le lien en bas Restore Server from a Backup. Sélectionnez votre fichier précédemment sauvegardé, vous devriez ensuite avoir ce message à l’écran :

fichier sauvegarde unifi - UniFi Network Application sur NAS Synology avec Docker

Une fois que vous aurez appuyé sur le bouton Confirm, patienter environ 5 minutes…

restauration en cours unifi - UniFi Network Application sur NAS Synology avec Docker

Si la restauration des données est rapide, l’adoption de certains appareils a longue : jusqu’à 25 minutes.

Pour les autres, donnez un nom à leur installation, sélectionnez votre pays, cochez la case I agree to End User License Agreement and Terms of Service et vous cliquerez sur le bouton Next.

Voilà, c’est terminé !

  1. Bonjour,
    Merci pour ce tuto.
    Petite information, sur un NAS d’anciènne génération dont le processeur ne supporte pas les instructions AVX (ex. DS918+) il faut fixer MongoDB à la version 4.4.19
    Cela donne :
    mongodb:
    image: docker.io/mongo:4.4.19

    1. Bonjour,

      Merci pour ce tuto Cachem.

      Sur un DS1520+, j’ai également ce message d’erreur : WARNING: MongoDB 5.0+ requires a CPU with AVX support, and your current system does not appear to have that!

      1. Je n’ai pas ce warning, mais vous êtes nombreux à l’avoir.
        Je vais modifier le tuto en conséquence pour plus de compatibilités avec les NAS Synology.

  2. Bonjour,
    Merci pour ce tuto 🙂

    Pour être sûr de bien comprendre (je manipule pas bcp Docker), cette phrase:
    Note : Désormais, le logiciel UniFi nécessite d’avoir un conteneur MongoDB pour fonctionner.

    cela signifie qu’il faut installer un conteneur MongoDB en plus de Unifi Network Application?

    Merci

    1. Bonjour Steph,
      Le tuto proposé par FX va créer pour toi les deux conteneurs « unifi-network-application » et « unifi-db ». Donc tu n’as pas d’installation séparée à gérer 🙂
      Cordialement,
      Alain

      1. OK, merci Alain pour ton aide 🙂
        Le compose.yaml fait tout et je comprends que ta remarque sur la version MongoDB s’applique dans ce ficher.

        Merci

  3. Bonjour
    Merci pour ce tuto (et tous les autres)
    L’installation s’est déroulée sans message d’erreur
    Lorsque, sous chrome, je lance http://addipnas:8443... j’ai le message suivant :
    « Bad Request
    This combination of host and port requires TLS. »
    Merci pour votre aide
    Jean

  4. Juste une précision, le user et password peuvent être changés sans problème avec ce que l’on veut du moment que ce sont les mêmes dans le compose.yaml et le fichier de config de mongodb, c’est bien cela ? C’est pour éviter que tout le monde mette la même chose 😉
    Sinon, comme d’hab, toujours excellent.

    1. Oui, ce n’est pas obligé, tu n’as pas besoin d’un UDM PRO, SE ou autre pour gérer tes périphériques Ubiquiti.
      Soit tu utilises Unifi Network(Réseau) sous Windows ou Docker, soit un UDM Pro qui contient déjà ce software et d’autre.

  5. Concernant le problème AVX pour les barbus il est possible de faire passer une base de données PostgresSQL pour du MongoDB en passant par FerretDB. Cela permettrait d’avoir un MongoDB à jour et d’éviter de se retrouver coincer le jour ou Ubiquiti arrête le support de MongoDB < 5.0.

  6. En attentant pour ceux qui ont un NAS incompatible AVX comme indiqué précédent l’une des solutions est d’utiliser une version de MongoDB < 5 (sachant que celles-ci sont EOL). La configuration docker compose adaptée pour la BDD est la suivante:

    unifi-db:
    image: docker.io/mongo:4
    container_name: unifi-db
    volumes:
    – /volume2/docker/unifi-db/data:/data/db
    – /volume2/docker/unifi-db/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
    restart: unless-stopped

    Il suffit de remplacer latest par la bonne version. La 4 en l’occurrence.

    Ne pas oublier de supprimer toutes les données du répertoire unifi-db/data ainsi que le conteneur précédemment crée dans une version supérieure avant de redémarrer le container de la base de données.

  7. Pour ceux qui comme moi n’arriveraient pas à adopter leurs AP, (tourne en rond entre adopting puis offline) il faut aller dans settings/system/advanced et sous « inform host », cliquer sur enable puis indiquer l’adresse IP du contrôleur (192.168.x.x et non pas l’adresse ip du container docker 172.23.x.x dans mon cas). Une fois cela fait, l’adoption a été quasi instantanée.

    Je pense que ce problème est du au fait que j’ai activé le management à distance via le site ui.com et dans la console ui.com, il vois mon contrôleur avec l’ip 172.23.x.x

    1. Un grand merci, parce que j’ai cherché un moment… comme quoi il faut toujours lire tous les commentaires.

  8. Bonjour,

    MongoDB ne démarre pas…
    J’ai un NAS Synology DS220+ sur lequel je viens de fraichement installer en suivant le tuto.

    1. Je me répond à moi-même…
      -> Souci de version CPU… -> Modif fichier YML -> OK !

      Tout fonctionne maintenant !

  9. j’ai tenté de reprendre l’opération avec succès sur mon serveur docker sous ubuntu server, merci bcp pour le docker-compose.

    De mon côté j’étais embêté pour créer le fichier init-mongo.js en console, bash me retournant qu’il s’agit d’un répertoire. La solution a été de rentrer directement les commandes dans mongo :
    -> dans le conteneur unifi-db et depuis bash : taper « mongo » et valider, puis saisir les deux lignes en validant une par une, mongo confirme que l’opération a réussie puis on peut sortir de mongo avec « exit ».
    Ensuite tout fonctionne comme attendu, pas besoin du fichier 🙂

  10. Bonjour, j’ai tenté l’installation. Tout s’est bien passé mais quand je mets :

    https://ipdunas:8483...
    Échec de la connexion sécurisée
    Une erreur est survenue pendant une connexion à 192.168.1.82:8443. PR_END_OF_FILE_ERROR
    Code d’erreur : PR_END_OF_FILE_ERROR

    et

    http://ipdunas:8483
    La connexion a été réinitialisée
    La connexion avec le serveur a été réinitialisée pendant le chargement de la page.

    Une idée ? Merci

  11. Bonjour et merci pour ce tutoriel qui permet de passer le Controler Unifi en V8.6.9
    Pour ma part mon DS918+ était en 7.1.1. Il m’a fallu passer et 7.2.2 pour avoir accès à Container manager (avant c’était Docker)
    Une fois la MàJ faite, j’ai eu le problème d’anciènne génération dont le processeur ne supporte pas les instructions AVX. J’ai donc modifié init-mongo.js.
    Une fois ceci fait les 2 container sont notés et sont verts
    Toutefois, malgré une attente de 30mns, je n’ai pas accès à https://NomduNAS:8443.... La page n’est pas disponible et le navigateur claque en tempo sans connexion avec la page. Je sais qu’il faut attendre pour que la page devienne disponible (5 à 6 mes). Mais 30mns ca me semble trop, il y a surement un autre problème…
    Pour info, je n’ai pas configuré le port 8443 dans Web Station

    Auriez-vous une idée d’ou vient mon problème de connexion à la page web du contrôler?
    Merci et bonne soirée

    1. Bonjour. J’ai continué à chercher sur la raison pour laquelle je n’ai pas accès à la page web du Controler Unifi en V8.6.9 après la création du centenaire avec Container Management.

      Les versions précédentes du controller ont été créées avec le package Docker sous DSM 7.1.1 qui propose le mode Bridge ou Host à la création du container. J’avais choisi le mode Host et me rappelle que le mode Bridge ne me permettait pas d’accéder à la page web.

      Après le passage en DSM 7.2.2, Docker n’ai plus supporté et c’est Container Manager qui fait le travail grâce à un fichier compose.yaml. Le compose.yaml, tel qu’écrit plus haut, créé le container en mode Bridge…

      Pourriez vous me renseigner sur la commande à mettre dans compose.yaml pour créer le projet en mode Host? Merci et bonne journée

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.