Unifi
Installation Unifi sous debian 12
Procédure pour installer un serveur Unifi sur debian 12. Elle fonctionne sur une machine vierge avec rien d'installé.
Installation Serveur MongoDB
Pour commencer, s'assurer que le système est bien à jour:
sudo apt update && sudo apt upgrade -y
Installation MongoDB
Unifi utilise une base MongoDB pour le stockage de ces données. La version utilisée est assez ancienne (V4.4), il faut donc au préalable installer libSSL1.1, qui n'est pas disponible dans les dépôts de base de debian 12.
Téléchargement package de libSSL
wget https://ftp.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb10u3_amd64.deb
Installation libSSL:
dpkg -i libssl1.1_1.1.1n-0+deb10u3_amd64.deb
Pour installer MongoDB server v4.4, on suit la procédure officielle:
On s'assure que les prérequis sont bien installés:
sudo apt-get install gnupg curl
On va ajouter le repository officiel de MongoDB pour l'installation de ce dernier. Il faut ajouter la clé publique de ce dépôt:
curl -fsSL https://pgp.mongodb.com/server-4.4.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-4.4.gpg --dearmor
Il reste à créer un nouveau fichier source, afin d'ajouter un nouveau dépôt dans la base du système:
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-4.4.gpg ] http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
Enfin, il reste à mettre à jour les caches d'Apt et à installer MongoDB:
sudo apt update
sudo apt install mongodb-org
Installation Unifi
Pour terminer l'installation d'Unifi, il reste plus qu'a installer les packages:
sudo apt install unifi
Si tout s'est bien passé, le serveur unifi doit être accessible à partir de l'URL suivante: http://localhost:8080 ou http://ip_serveur:8080
Script d'installation
Si cette procédure ne fonctionne pas, ou si l’installation concerne un autre système, ou une autre version de debian, un script à été développé pour ça: → Script Glenn R
Sources
Configuration Unifi avec certificat https let's encrypt
Il est possible de configurer l'interface web d'unifi pour qu'elle utilise un certificat let's encyrpt à la place d'un autosigné.
Pour cela on va utiliser cerbot pour la génération du certificat et l'ajouter dans JAVA.
il faut bien évidemment que la machine soit accessible publiquement et qu'un nom de domaine pointant dessus soit existant, afin de pouvoir générer le certificat.
Installation de certbot:
apt install certbot
Génération du certificat let'sencrypt, il faut utiliser l'option 1, accepter les conditions et mettre l'URL de l'Unifi:
certbot certonly
Conversion en format PKCS 12 du certificat let'sencrypt.
Remplacer nomDeDomaineUnifi.ltd par le vrai nom de domaine, changer le mot de passe à la fin de la commande
openssl pkcs12 -export -inkey /etc/letsencrypt/live/nomDeDomaineUnifi.ltd/privkey.pem -in /etc/letsencrypt/live/nomDeDomaineUnifi.ltd/fullchain.pem -out /tmp/cert.p12 -name unifi -password pass:myPassword
Importation du certificat dans le base de certificat de JAVA (unifi tourne sur du JAVA), bien penser à renseigner le mot de passe, celui qu'on vient de dédinir:
keytool -importkeystore -deststorepass aircontrolenterprise -destkeypass aircontrolenterprise -destkeystore /var/lib/unifi/keystore -srckeystore /tmp/cert.p12 -srcstoretype PKCS12 -srcstorepass myPassword -alias unifi noprompt
On supprime le fichier certificat pkcs12
rm /tmp/cert.p12
Restart des service unifi pour prise en compte:
systemctl restart unifi.service
Ensuite on va créer un script pour le renouvellement automatique du certificat:
vi /emplacement/scripts/renew_unifi_certSSL.sh:
#!/bin/bash
# Demande de certificat auprès de let'sencrypt
certbot renew --quiet --no-self-upgrade
# Convertir certificat au format PKCS #12 format
openssl pkcs12 -export -inkey /etc/letsencrypt/live/nomDeDomaineUnifi.ltd/privkey.pem -in /etc/letsencrypt/live/nomDeDomaineUnifi.ltd/fullchain.pem -out /tmp/cert.p12 -name unifi -password pass:myPassword
# Chargez-le dans le keystore java
keytool -importkeystore -deststorepass aircontrolenterprise -destkeypass aircontrolenterprise -destkeystore /var/lib/unifi/keystore -srckeystore /tmp/cert.p12 -srcstoretype PKCS12 -srcstorepass myPassword -alias unifi -noprompt
# Suppression du fichier certificat
rm /tmp/cert.p12
/etc/init.d/unifi restart
On rend le script executable:
chmod +x /emplacement/scripts/renew_unifi_certSSL.sh
ajout tache panifié au crontab, dans /etc/crontab:
00 23 5 * * root /emplacement/scripts/renew_unifi_certSSL.sh