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 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.

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:latest
   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 :

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 :

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 :

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

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é !