cwwk KVM Alpine (vm-alpine04) - Immich (photos et vidéos)
immich - Gestionnaire web photos et vidéos installé sur une machine virtuelle Alpine Linux
Alpine Linux est une distribution Linux ultra-légère
Alpine Linux
Création machine virtuelle Alpine de type KVM avec 4 Go de RAM, 2 cœur de processeur et 5 Go de disque dur.
Créer vm-alpine sur un serveur
Les dernières images Alpine Linux
Création d’une image virtuelle vm-alpine04 sous le serveur Lenovo rnmkcy.eu
On se connecte sur le serveur Lenovo en SSH, puis on exécute la commande suivante pour créer une machine virtuelle Alpine avec 2 Go de RAM, 1 cœur de processeur et 5 Go de disque dur
1
2
3
4
5
6
7
8
9
10
11
sudo virt-install \
--osinfo alpinelinux3.17 \
--name vm-alpine04 \
--memory 4096 \
--vcpus 2 \
--cpu host \
--hvm \
--disk path=/srv/kvm/libvirt/images/vm-alpine04.qcow2,format=qcow2,size=5 \
--cdrom /home/yick/FreeUSB2To/iso/alpine-standard-3.22.0-x86_64.iso \
--network bridge=br0 \
--graphics vnc
Note:KVM ne connait que alpinelinux3.17 (sudo virt-install --osinfo list |grep alpine
)
Après exécution dans un terminal de la commande ci dessus, on arrive sur En attente de fin d’installation
Configurer vm-alpine
ATTENTION: Désactiver "Affichage VNC" des autres machines
VNC, configuration xml
1
2
3
<graphics type="vnc" port="5900" autoport="yes" listen="127.0.0.1">
<listen type="address" address="127.0.0.1"/>
</graphics>
Le serveur Lenovo n’a pas d’affichage, il faut créer un tunnel ssh depuis un terminal d’un poste client
1
ssh -L 5900:127.0.0.1:5900 yick@192.168.0.205 -p 55205 -i /home/yann/.ssh/yick-ed25519
Puis lancer de ce même poste un client VNC
la console s’affiche
Une fois l’image ISO lancée, on arrive à un invite de connexion.
Indiquez root
comme nom d’utilisateur, aucun mot de passe ne vous sera demandé à cette étape.
Le système est utilisable, mais on veut l’installer, ce qui passe par la commande suivante (clavier qwerty)
1
setup-alpine # saisir setup)qlpine
Une suite de questions :
mot de passe root (rtyuiop)
APK mirror…
Utilisateur alpi/alpi49 et suite…
alp04/alprtyu
Relever l’adresse ip allouée : ip a
–> 192.168.10.129
Puis redémarrer : reboot
La fenêtre vnc se ferme
On n’a plus besoin de VNC, en mode graphique
Eteindre puis redémarrer la machine virtuelle
Explications sur la procédure
Normalement, vous n’avez rien à faire, les paramètres par défaut doivent convenir. Mais si vous le désirez, vous pouvez les modifier pour utiliser une interface particulière, une IP fixe, un serveur proxy, etc.
Une soixantaine de serveurs mirroir vous seront proposés pour télécharger les paquets. Choisissez un numéro dans la liste ou demandez au système de les tester et de sélectionner le plus rapide. Vous pouvez aussi modifier le fichier des sources. Il vous faudra ensuite choisir votre serveur SSH : OpenSSH, Dropbear ou aucun.
On termine par la méthode d’installation. Il en existe quatre :
- none : le système et ses données sont placés en RAM et seront perdus après le redémarrage
- sys : le système et ses données sont placés sur un HDD/SSD
- data : le système est placé en RAM, les données sur un HDD/SSD
- lvm : utilisation de Logical Volume Manager, les deux choix précédents seront proposés (lvmsys, lvmdata)
Si vous stockez le système en mémoire, il faudra trouver un moyen de sauvegarder la configuration. Vous pourrez le faire uniquement depuis un lecteur de disquettes (!) ou une clé USB. Une fois le système installé, vous pourrez l’utiliser directement s’il est placé en mémoire ou redémarrer si vous avez opté pour un stockage classique.
Il n’est pas conseillé d’utiliser directement le compte root pour les actions du quotidien.
Si utilisateur non créé dans la procédure d’installation, le créer avec son propre espace dans /home/
1
adduser alpi
Vous pouvez utiliser l’utilisateur pour vous connecter via SSH (impossible avec le compte root)
Connexion vm-alpine via SSH
Sur un poste linux du réseau
1
ssh alp04@192.168.10.129
Une fois connecté ,vous pouvez accéder au “root” de manière classique avec la commande :
1
su -
Mise à jour
1
2
3
4
apk update
apk upgrade
# Vous pouvez fusionner les deux lignes avec
apk -U upgrade
Editeur nano (Vous pouvez aussi opter pour vi qui est nativement présent sur le système)
1
apk add nano
Réseau - IP statique
How to configure static IP address on Alpine Linux
Le fichier de configuration /etc/network/interfaces
1
/etc/network/interfaces
1
2
3
4
5
6
7
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.10.214
gateway 192.168.10.1
Fichier de résolution dns
1
/etc/resolv.conf
1
2
nameserver 192.168.0.205
nameserver 192.168.10.1
Les modifications apportées à /etc/network/interfaces peuvent être activées en exécutant
1
service networking restart
ATTENTION: Déconnexion SSH car changement adresse IP
Connexion SSH avec IP 192.168.10.214
1
ssh alp04@192.168.10.214
Message à la connexion SSH, /etc/motd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
_ _ _ _ _
/ \ | | _ __ (_) _ __ ___ | | (_) _ __ _ _ __ __
/ _ \ | || '_ \ | || '_ \ / _ \ | | | || '_ \ | | | |\ \/ /
/ ___ \ | || |_) || || | | || __/ | |___ | || | | || |_| | > <
/_/ \_\|_|| .__/ |_||_| |_| \___| |_____||_||_| |_| \__,_|/_/\_\
|_| _ _ ___ _ _
__ __ _ __ ___ __ _ | | _ __ (_) _ __ ___ / _ \ | || |
\ \ / /| '_ ` _ \ _____ / _` || || '_ \ | || '_ \ / _ \| | | || || |_
\ V / | | | | | ||_____|| (_| || || |_) || || | | || __/| |_| ||__ _|
\_/ |_| |_| |_| \__,_||_|| .__/ |_||_| |_| \___| \___/ |_|
_ ___ ____ _ __ ___ |_| _ ___ ____ _ _ _
/ | / _ \|___ \ / | / /_ ( _ ) / | / _ \ |___ \ / || || |
| || (_) | __) | | || '_ \ / _ \ | || | | | __) || || || |_
| | \__, |/ __/ _ | || (_) || (_) |_ | || |_| |_ / __/ | ||__ _|
|_| /_/|_____|(_)|_| \___/ \___/(_)|_| \___/(_)|_____||_| |_|
OpenSSH avec clés
Connexion ssh sur un autre port avec un jeu de clés
Générer une paire de clé sur l’ordinateur de bureau PC1
Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) pour une liaison SSH avec la machine virtuelle vm-alpine04
1
2
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/vm-alpine04
chmod 600 ~/.ssh/vm-alpine04
Copier la clé publique cat ~/.ssh/vm-alpine04.pub
dans le presse-papier
1
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGVKrZfQL2t0304ELYtXGlFv5jHv7tSxcBOcyxGBfgTE yann@PC1
On se connecte sur la machine virtuelle alpine linux “vm-alpine04”
1
ssh alp04@192.168.10.214
Créer le répertoire et ouvrir nouveau fichier
1
2
mkdir -p $HOME/.ssh/
nano $HOME/.ssh/authorized_keys
Coller le contenu du presse-papier , sauver le fichier et sortir
Modifier les droits
1
chmod 600 $HOME/.ssh/authorized_keys
Passer en mode su
1
su -
Modifier la configuration serveur SSH
1
nano /etc/ssh/sshd_config
Modifier
1
2
Port = 55214
PasswordAuthentication no
Relancer le serveur
1
service sshd restart
Test connexion
1
ssh alp04@192.168.10.214 -p 55214 -i /home/yann/.ssh/vm-alpine04
sudo
Passer en root
1
su -
Ajout dépôt communauté
Editer la configuration des dépôts
1
nano /etc/apk/repositories
Trouvez maintenant la ligne qui se termine dans /community
Ensuite, retirez le #
au début de la ligne.
Le fichier résultant devrait ressembler à ceci
1
2
3
#/media/cdrom/apks
http://dl-cdn.alpinelinux.org/alpine/v3.22/main
http://dl-cdn.alpinelinux.org/alpine/v3.22/community
Installer sudo
1
2
apk update
apk add sudo
Ajouter un utilisateur avec les privlèges root
1
echo "alp04 ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/20-alpi
Démarrage automatique VM
NFS
Cette page documente la configuration du système de fichiers réseau (NFS) du côté du serveur et du client, y compris les autofs et l’authentification Kerberos. Installation
Installez le paquet suivant pour le service client et serveur NFS.
1
apk add nfs-utils
Client NFS
Pour monter automatiquement les actions NFS, une entrée doit être faite à /etc/fstab
comme suit:
Contenu de /etc/fstab
1
192.168.0.205:/sharenfs /home/alp04/sharenfs nfs4 rw,_netdev 0 0
Pour monter nfs share depuis le fichier /etc/fstab au démarrage du système :
1
rc-update add nfsmount
Pour monter les actions de nfs depuis le fichier /etc/fstab :
1
rc-service nfsmount start
Vous pouvez vérifier vos services de démarrage :
1
rc-status
Conseil : netmount est un service général pour tous les systèmes de fichiers basés sur le réseau, tandis que nfsmount est spécialement conçu pour NFS.
Pour utiliser netmount, voici les commandes équivalentes :
1
2
# rc-service netmount démarrage
# rc-update add netmount
Maintenance
Alpine Linux - Mises à jour automatique
Installer curl
1
sudo apk add curl
Pour chaque nouveau serveur Alpine Linux, créer un script shell nommé apk-autoupgrade dans le dossier /etc/periodic/daily/ avecles permissions suivantes : 700
1
2
echo -e "#!/bin/sh\napk upgrade --update | sed \"s/^/[\`date\`] /\" >> /var/log/apk-autoupgrade.log" > /etc/periodic/daily/apk-autoupgrade && \
chmod 700 /etc/periodic/daily/apk-autoupgrade
Si les tâches cron ne sont pas activées
1
2
rc-service crond start
rc-update add crond
Le script exécute la commande apk upgrade --update
une fois par jour, apk par défaut ne demande jamais l’intervention de l’utilisateur.
Additif pour notification ntfy
1
2
3
4
5
6
7
8
9
10
echo "#
curl \
-H "X-Email: ntfy@cinay.eu" \
-H "Title: 💻 Alpine Linux vm-alpine04 : Fin exécution script 'apk-autoupgrade'" \
-H "Authorization: Bearer tk_fjh5bfo3zu2cpibgi2jyfkif49xws" \
-H prio:low \
-d "vm-alpine04 192.168.10.214
✔️ Fin exécution script /etc/periodic/daily/apk-autoupgrade" \
https://noti.rnmkcy.eu/yan_infos
" >> /etc/periodic/daily/apk-autoupgrade
Augmenter taille disque
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
yick@cwwk:~$ sudo virsh shutdown vm-alpine04
yick@cwwk:~$ sudo virsh list
ID Nom État
-------------------------------------------
1 vm-ntfy en cours d’exécution
2 vm-alpine01 en cours d’exécution
3 vm-debian12 en cours d’exécution
4 alpine-vm en cours d’exécution
5 vm-alpine03 en cours d’exécution
6 alpine-searx en cours d’exécution
yick@cwwk:~$ sudo virsh domblklist vm-alpine04
Target Source
-----------------------------------------------------
vda /srv/kvm/libvirt/images/vm-alpine04.qcow2
sda -
yick@cwwk:~$ sudo qemu-img resize /home/yann/virtuel/KVM/vm-alpine04.qcow2 +15G
qemu-img: Could not open '/home/yann/virtuel/KVM/vm-alpine04.qcow2': Could not open '/home/yann/virtuel/KVM/vm-alpine04.qcow2': No such file or directory
yick@cwwk:~$ sudo qemu-img resize /srv/kvm/libvirt/images/vm-alpine04.qcow2 +15G
Image resized.
yick@cwwk:~$ sudo qemu-img info /srv/kvm/libvirt/images/vm-alpine04.qcow2
image: /srv/kvm/libvirt/images/vm-alpine04.qcow2
file format: qcow2
virtual size: 20 GiB (21474836480 bytes)
disk size: 3.41 GiB
cluster_size: 65536
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: true
refcount bits: 16
corrupt: false
extended l2: false
yick@cwwk:~$ sudo virsh start vm-alpine04
Domain 'vm-alpine04' started
# Connexion à la machine vm-alpine04
# Outils
sudo apk add --no-cache cfdisk e2fsprogs-extra
# cfdisk pour redimensionner la partition vda3
localhost:~$ sudo cfdisk
sélectionner la partition à étendre puis resize write quit
Syncing disks.
localhost:~$ sudo resize2fs /dev/vda3
resize2fs 1.47.2 (1-Jan-2025)
Filesystem at /dev/vda3 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/vda3 is now 4838144 (4k) blocks long.
localhost:~$ sudo df -H |grep vda3
/dev/vda3 18.1G 1.3G 16.0G 8% /
/dev/vda3 18.1G 1.3G 16.0G 8% /var/lib/docker
Docker
Installation
Passer en root
1
su -
Dépôt communauté actif
Installation docker
Installer docker et docker-compose
1
2
apk update
apk add docker docker-compose
Activer autostart sur boot en utilisant
1
2
3
4
rc-update add docker default
# suppression
# rc-service docker stop
# rc-update del docker default
puis vous pouvez lancer le service docker en utilisant la commande
1
2
3
/etc/init.d/docker start
# ou
service docker start
Immich
Immich est une application qui permet de télécharger et d’afficher des actifs (photos et vidéos) sur un serveur Immich auto-hébergé. L’application offre des fonctionnalités de sauvegarde automatique, de marquage, de recherche, de géocodage et de détection d’objet.
Exigences
Un système avec au moins 4 Go de RAM et 2 cœurs CPU.
Voici quelques-unes des fonctionnalités clés qui en font une solution intéressante :
- Lecteur photo et vidéo : Prise en charge les formats de fichiers courants, y compris les fichiers RAW pour les photos
- Données Exif : Les informations Exif (Exchangeable Image File Format) sont utilisées pour fournir des détails supplémentaires aux photos, comme la date de prise de vue, le modèle de l’appareil photo…
- Vue carte : Permet de visualiser où les photos ont été prises sur une carte, cela ajoute une dimension géographique intéressante
- Détection des visages : Immich utilise des algorithmes de reconnaissance faciale pour organiser et retrouver plus facilement des photos de personnes
- Gestion par Dossier et Favoris : Organisez vos photos comme vous le souhaitez et marquez les photos préférées pour un accès plus rapide
- Portail d’administration : Gestion des paramètres de l’application et des utilisateurs
- Partage via des liens : Partagez vos photos et vidéos facilement avec des liens
- Moteur de recherche : Facilite la recherche des photos grâce à des options avancées
- Vue 360° : Profitez d’une vue immersive de vos photos panoramiques
- Accélération matérielle (GPU) : Optimisez la performance de traitement des images et vidéos grâce à l’accélération matérielle
- Édition rapide, mode sombre, authentification viaOAuth2 et OIDC, etc.
Particularités
- son ergonomie, sobre et efficace, agréable à utiliser
- les options de tri « intelligentes » pour classer automatiquement les photos/vidéos qui permettent de les retrouver très facilement ( lieu,détection des visages, tags personnalisés etc)
- les vidéos super fluides, avec un aperçu au survol de la souris digne des perfs d’un Netflix
- la possibilité de synchroniser les photos de son smartphone
- autohébergeable, tu peux l’installer sur ton serveur ou sur ton pc en local avec docker
- une appli conçue et orientée « respect de la vie privée »
Télécharger les fichiers requis
Créez un répertoire de votre choix (par exemple ./immich-app) pour tenir les fichiers docker-compose.yml
et .env
.
Déplacer vers le répertoire que vous avez créé
1
2
mkdir ./immich-app
cd ./immich-app
Télécharger docker-compose.yml
et example.env
en exécutant les commandes suivantes:
1
2
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
Personnaliser le fichier .env
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=./library
# The location where your database files are stored. Network shares are not supported for the database
DB_DATA_LOCATION=./postgres
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
TZ=Europe/Paris
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=postgres
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
- UPLOAD_LOCATION avec votre emplacement préféré pour stocker des actifs de sauvegarde. Ce devrait être un nouveau répertoire sur le serveur avec suffisamment d’espace libre.
- Envisagez de changer DB_PASSWORD en une valeur personnalisée. Postgres n’est pas publiquement exposé, donc ce mot de passe n’est utilisé que pour l’authentification locale. Pour éviter les problèmes avec l’analyse de cette valeur par Docker, il est préférable d’utiliser uniquement les caractères A-Za-z0-9.
pwgen
est un utilitaire pratique pour cela. - Définir le fuseau horaire en décommentant la ligne TZ=.
Démarrer les conteneurs
À partir du répertoire que vous avez créé à l’étape 1 (qui devrait maintenant contenir vos fichiers docker-compose.yml
et .env
personnalisés), exécutez la commande suivante pour démarrer Immich comme un service de fond :
1
2
cd ~/immich-app
sudo docker compose up -d
Résultat commande
1
2
3
4
5
6
7
8
[...]
[+] Running 6/6
✔ Network immich_default Created 0.0s
✔ Volume "immich_model-cache" Created 0.0s
✔ Container immich_machine_learning Started 0.8s
✔ Container immich_redis Started 0.8s
✔ Container immich_postgres Started 0.8s
✔ Container immich_server Started 0.7s
Essayez l’application web
Le premier utilisateur à s’enregistrer sera l’utilisateur administrateur.
L’utilisateur administrateur pourra ajouter d’autres utilisateurs à l’application.
Pour s’inscrire à l’utilisateur administrateur, accéder à l’application Web à http://192.168.10.214:2283 et cliquez sur le bouton Démarrer.
Proxy nginx immich.rnmkcy.eu
Configurer le fichier /etc/nginx/conf.d/immich.rnmkcy.eu.conf
sur serveur debian cwwk rnmkcy.eu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
server {
listen 80;
listen [::]:80;
server_name immich.rnmkcy.eu;
# redirect all plain HTTP requests to HTTPS
return 301 https://immich.rnmkcy.eu$request_uri;
}
server {
# ipv4 listening port/protocol
listen 443 ssl http2;
# ipv6 listening port/protocol
listen [::]:443 ssl http2;
server_name immich.rnmkcy.eu;
include /etc/nginx/conf.d/security.conf.inc;
# enable websockets: http://nginx.org/en/docs/http/websocket.html
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
# set timeout
proxy_read_timeout 600s;
proxy_send_timeout 600s;
send_timeout 600s;
location / {
proxy_pass http://192.168.10.214:2283;
}
}
Bibliothèque externe
Ce guide vous accompagne dans l’ajout d’une bibliothèque externe. Ce guide suppose que vous exécutez Immich dans Docker et que les fichiers auxquels vous souhaitez accéder sont stockés dans un répertoire sur la même machine.(External Library)
Les dossier externes /home/alp04/sharenfs/rnmkcy/immich-yannick
et /home/alp04/sharenfs/rnmkcy/immich-claudine
Modifier le fichier docker-compose.yml
Ajout de la ligne - /home/alp04/sharenfs/rnmkcy/immich-yannick:/mnt/photos1:ro
Dossier local: /home/alp04/sharenfs/rnmkcy/immich
Dossier container: /mnt/photos1
Ajout de la ligne - /home/alp04/sharenfs/rnmkcy/immich-claudine:/mnt/photos2:ro
Dossier local: /home/alp04/sharenfs/rnmkcy/immich
Dossier container: /mnt/photos2
1
2
3
4
5
6
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /home/alp04/sharenfs/rnmkcy/immich-yannick:/mnt/photos1:ro
- /home/alp04/sharenfs/rnmkcy/immich-claudine:/mnt/photos2:ro
- /etc/localtime:/etc/localtime:ro
Mise à jour
1
docker compose up -d
Se connecter en administrateur
Cliquez sur le menu à trois points et sélectionnez “Analyser”
Après quelques minutes, vous devriez voir En cours 0 et En attente 0
pour GÉNÉRATION DES MINIATURES, EXTRACTION DES MÉTADONNÉES et BIBLIOTHÈQUES EXTERNES.
Configuration SSO pour Immich avec Authelia OIDC
Dans cet article de blog, nous allons configurer Authelia comme fournisseur OIDC et l’utiliser pour activer l’authentification unique (SSO) dans Immich ⭐
cwwk - Configuration Authelia
La configuration Authelia est définie dans un fichier de configuration.yml. Ce fichier permet de définir les paramètres de configuration OIDC nécessaires, tels qu’un fournisseur et un client.
En consultant la documentation publique OIDC d’Authelia , nous pouvons obtenir un exemple de configuration. Cet exemple de configuration contient plusieurs paramètres nécessitant soit une valeur secrète, soit un certificat.
Ces éléments doivent être générés de manière sécurisée avant d’ajuster la configuration. Par conséquent, générons-les !
Création d’un certificat RSA
Authelia vous oblige à définir un certificat (clé privée) via la directive key et une chaîne de certificats (clé publique) via la directive certificate_chain.
Vous pouvez générer les deux via la commande suivante :
1
authelia crypto certificate rsa generate --common-name auth.rnmkcy.eu && cat public.crt && cat private.pem
⚠️ Veuillez ajuster le nom commun du certificat à votre FQDN d’Authelia
Création d’un secret client
Authelia vous demande de définir un secret client sécurisé.
Vous pouvez en générer un via la commande suivante :
1
authelia crypto hash generate pbkdf2 --variant sha512 --random --random.length 72 --random.charset rfc3986
⚠️ Veuillez noter le mot de passe en clair ainsi que le hachage $pbkdf2 du mot de passe pour une utilisation ultérieure.
Création d’un fournisseur et d’un client OIDC
Une fois le certificat RSA et le secret client créés de manière sécurisée, nous pouvons commencer à ajuster le fichier de configuration d’Authelia. Nous ajouterons un fournisseur d’identité et un client en insérant nos secrets et informations de certificat auto-générés.
Mettez ce qui suit à la fin de votre configuration Authelia :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
identity_providers:
oidc:
hmac_secret: 'my-secure-hmac-secret-key-to-change'
jwks:
- key_id: 'authelia'
algorithm: 'RS256'
use: 'sig'
certificate_chain: |
-----BEGIN CERTIFICATE-----
<PASTE-HERE-YOUR-PUBLIC-KEY-DATA> sur une ligne
-----END CERTIFICATE-----
key: |
-----BEGIN PRIVATE KEY-----
<PASTE-HERE-YOUR-PRIVATE-KEY-DATA> sur une ligne
-----END PRIVATE KEY-----
enable_client_debug_messages: false
minimum_parameter_entropy: 8
enforce_pkce: 'public_clients_only'
enable_pkce_plain_challenge: false
enable_jwt_access_token_stateless_introspection: false
discovery_signed_response_alg: 'none'
discovery_signed_response_key_id: ''
require_pushed_authorization_requests: false
lifespans:
access_token: '1h'
authorize_code: '1m'
id_token: '1h'
refresh_token: '90m'
cors:
endpoints:
- 'authorization'
- 'token'
- 'revocation'
- 'introspection'
allowed_origins:
- 'https://immich.rnmkcy.eu'
allowed_origins_from_client_redirect_uris: false
clients:
- client_id: immich
client_name: Immich OIDC
client_secret: '$pbkdf2-<PASSWORD-HASH-DATA>'
public: false
authorization_policy: 'two_factor'
redirect_uris:
- 'https://immich.rnmkcy.eu/auth/login'
- 'https://immich.rnmkcy.eu/user-settings'
- 'app.immich:///oauth-callback'
scopes:
- 'openid'
- 'profile'
- 'email'
userinfo_signed_response_alg: 'none'
token_endpoint_auth_method: 'client_secret_post'
🛑 Assurez-vous de copier-coller correctement les informations du certificat. La clé publique doit être définie dans certificate_chain. La clé privée doit être définie dans key.
Remplacez toutes les entrées rnmkcy.eu par celles de vos domaines FQDN.
Assurez-vous d’ajuster correctement les paramètres clés suivants à votre environnement :
- hmac_secret
- certificate_chain
- key
- allowed_origins
- client_secret
- Veuillez définir le hachage
$pbkdf2
du mot de passe et non le mot de passe en clair
- Veuillez définir le hachage
- redirect_uris
Après avoir ajusté la configuration d’Authelia, vérifiez et redémarrez-le pour appliquer la nouvelle configuration. Inspectez activement les journaux des conteneurs pour détecter d’éventuels problèmes.
1
2
3
4
# vérification
authelia validate-config --config /etc/authelia/configuration.yml
# relancer
systemctl restart authelia
Immich - Configuration OAuth
La configuration OAuth Immich peut être ajustée en vous connectant à l’application web en tant qu’administrateur.
Accédez à votre instance web Immich et connectez-vous en tant qu’administrateur. Ensuite, parcourez l’URL /administration/Paramètres. Vous trouverez un paramètre nommé OAuth Authentication.
Voici une brève explication des paramètres clés :
- ISSUER URL: il s’agit du nom de domaine complet (FQDN) de votre instance Authelia
- CLIENT ID: Il s’agit du nom du client défini dans le fichier configuration.yml d’Authelia
- CLIENT SECRET: Il s’agit du secret client sous forme de mot de passe en clair. Défini dans le fichier configuration.yml d’Authelia comme $pbkdf2hachage du mot de passe.
- SCOPE: Peut être laissé inchangé
- SIGNING ALGORITHM: L’algorithme de signature à utiliser est RSA256 ou HS256. Pour Authelia, veuillez choisir RS256.
- STORAGE LABEL CLAIN: Peut être laissé inchangé
- STORAGE QUOTA CLAIM: La limite de quota
- BUTTON TEXT: Votre texte de bouton préféré affiché sur la page de connexion
- AUTO REGISTER: Votre choix : les utilisateurs Authelia sont-ils automatiquement enregistrés/créés dans Immich s’ils n’existent pas encore ? Je recommande de définir ce paramètre sur « False ». Créez les utilisateurs manuellement !
- AUTO LAUNCH: Démarrage automatique du flux d’authentification OAuth/OIDC. Si cette option est activée, l’option d’authentification locale avec nom d’utilisateur et mot de passe ne sera plus disponible.
- MOBILE REDIRECT URI OVERRIDE: doit être activé pour prendre en charge les redirections appropriées depuis la connexion du navigateur Authelia vers l’application mobile Immich.
- MOBILE REDIRECT URI: Il s’agit d’une URL spécifique fournie par Immich, qui ouvrira l’application mobile Immich si elle est ouverte. Il s’agit d’un schéma personnalisé ou d’un lien profond ; voir ici . Il se compose de votre nom de domaine complet Immich et du chemin d’accès
/api/oauth/mobile-redirect
.
Ensuite, vous pouvez cliquer sur le bouton Enregistrer et tester le SSO OIDC nouvellement configuré.
Les applications web et mobile d’Immich afficheront un nouveau bouton pour se connecter via OAuth/OIDC. Cliquez simplement sur ce bouton, authentifiez-vous sur Authelia et vous serez redirigé vers Immich en tant qu’utilisateur authentifié.
Docker Immich cli
Docker cli
Arrêter et supprimer tous les containers
1
2
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Suppression de toutes les images Docker
Si vous devez supprimer toutes les images de votre système, utilisez la commande suivante :
1
docker rmi $(docker images -q)
Volumes: docker volume ls
1
2
3
4
DRIVER VOLUME NAME
local 6759a084ed614d62f55591939193e70040dea6c63a9ff363e5ff71218f9d2e71
local 772714802d90e4f60d007649df17e40552a000308d2b26ba00156460648f95f6
local immich_model-cache
Supprimer les volumes
1
2
3
docker volume rm immich_model-cache
docker volume rm 6759a084ed614d62f55591939193e70040dea6c63a9ff363e5ff71218f9d2e71
docker volume rm 772714802d90e4f60d007649df17e40552a000308d2b26ba00156460648f95f6
Réseaux: docker network ls
1
2
3
4
5
NETWORK ID NAME DRIVER SCOPE
edfc6860b686 bridge bridge local
4704cd997213 host host local
4f59432079d3 immich_default bridge local
d57684d7dba7 none null local
Pour supprimer un réseau Docker spécifique, utilisez la commande docker network rm suivie de l’ID ou du nom du réseau.
1
docker network rm immich_default
Désinstaller Docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Remove unused data
docker system prune --all --volumes
# Remove all services
docker service rm $(docker service ls -q)
# Remove all containers
docker rm -f $(docker ps -aq)
# Remove all images
docker rmi -f $(docker images -aq)
# Remove all volumes
docker volume rm $(docker volume ls -q)
Immich Cli
Liste des containers: docker ps
1
2
3
4
5
6
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b859c6a470da ghcr.io/immich-app/immich-server:release "tini -- /bin/bash s…" 27 hours ago Up 27 hours (healthy) 0.0.0.0:2283->2283/tcp, [::]:2283->2283/tcp immich_server
851b32a59d0b ghcr.io/immich-app/immich-machine-learning:release "tini -- python -m i…" 3 days ago Up 2 days (healthy) immich_machine_learning
317aeaf6ce72 ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0 "/usr/local/bin/immi…" 3 days ago Up 2 days (healthy) 5432/tcp immich_postgres
9f4520f5586e valkey/valkey:8-bookworm "docker-entrypoint.s…" 3 days ago Up 2 days (healthy) 6379/tcp immich_redis
Lier un container
1
2
3
docker exec -it <id or name> <command> # attach to a container with a command
docker exec -it immich_server bash
docker exec -it immich_machine_learning bash
Se lier au serveur
1
docker exec -it immich_server bash
Liste des utilisateurs: immich-admin list-users
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Initializing Immich v1.134.0
Detected CPU Cores: 2
[
{
id: '9e4c8992-8987-4840-9197-219ec8be1f67',
email: 'yann@yanfi.net',
name: 'yann',
profileImagePath: '',
avatarColor: 'primary',
profileChangedAt: 2025-06-10T18:07:16.330Z,
storageLabel: 'admin',
shouldChangePassword: true,
isAdmin: false,
createdAt: 2025-06-10T18:07:16.330Z,
deletedAt: null,
updatedAt: 2025-06-10T18:47:44.121Z,
oauthId: '9aec801a-75f3-4452-a55d-1d3e94e045fe',
quotaSizeInBytes: null,
quotaUsageInBytes: 0,
status: 'active',
license: null
},
{
id: '45422d67-8352-4ab7-a190-5a65093bfab0',
email: 'claudine@home.arpa',
name: 'Claudine',
profileImagePath: '',
avatarColor: 'red',
profileChangedAt: 2025-06-09T15:34:59.700Z,
storageLabel: null,
shouldChangePassword: false,
isAdmin: false,
createdAt: 2025-06-09T15:34:59.700Z,
deletedAt: null,
updatedAt: 2025-06-09T22:00:00.260Z,
oauthId: '',
quotaSizeInBytes: null,
quotaUsageInBytes: 0,
status: 'active',
license: null
},
{
id: '341b4d34-516c-4c56-86bd-f9384062b841',
email: 'yan@home.arpa',
name: 'yan',
profileImagePath: '',
avatarColor: 'yellow',
profileChangedAt: 2025-06-07T16:59:38.817Z,
storageLabel: 'yan',
shouldChangePassword: true,
isAdmin: true,
createdAt: 2025-06-07T16:59:38.817Z,
deletedAt: null,
updatedAt: 2025-06-10T18:16:40.544Z,
oauthId: '',
quotaSizeInBytes: null,
quotaUsageInBytes: 14688,
status: 'active',
license: null
}
]
Désactiver oauth: immich-admin disable-oauth-login
1
2
3
Initializing Immich v1.134.0
Detected CPU Cores: 2
OAuth login has been disabled.