Introduction
linkding est un gestionnaire de bookmarks auto hébergé ; minimal, rapide et face à gérer. Chaque lien enregistré peut être retrouvés facilement avec un système de ‘tags’. Un lien peut être lié à un tag ou à plusieurs tags. De cette façon, nous pouvons retrouver un lien facilement, surtout si celui ci est lié à plusieurs tags.
Cette application est vraiment utile quand vous avez plusieurs centaines de liens que vous souhaitez pouvoir utiliser de n’importe quel périphérique : téléphone, tablette ou ordinateurs.
L’installation ne peut se faire qu’avec Docker ; il n’y a pas d’autres procédures d’installation existante.
Pour cette installation, j’utilise l’image officielle qui est présente ici : github.com/sissbruecker/linkding.
Nous utiliserons ‘swag’ (voir article installation de swag) pour accéder à notre serveur depuis l’extérieur.
J’utiliserais l’interface ‘Portainer’ pour déployer le service.
Remarque : J’ai créé au préalable un utilisateur omdocker (voir l’article création d’un utilisateur). J’ai créé aussi un répertoire qui contiendra toutes mes installations docker. Dans ce blog, j’utiliserais pour exemple le chemin /volume/docker.
Le fichier de configuration
Si vous souhaitez sécuriser le lancement de ‘linkding‘, je vous engage à parcourir l’article sécuriser Docker.
Il est important de bien respecter l’indentation des fichiers de configurations : pas de tabulation. Attention aussi à la version du fichier, il y a des légères évolutions de syntaxe d’une version à l’autre.
Le fichier docker-compose est minimaliste ; nous utiliserons un fichier ‘.env’ pour le personnalisé.
Le fichier docker-compose :
Le fichier yml en détails avec les valeurs par défaut dans le cas ou les variables ne sont pas trouvées dans le fichier ‘.env’ :
-
./repertory_on_the_host/linkding : le chemin vers le répertoire de votre application.
version: "3" services: linkding: container_name: ${LD_CONTAINER_NAME:-linkding} image: sissbruecker/linkding:latest ports: - ${LD_HOST_PORT:-9090}:9090 volumes: - ${LD_HOST_DATA_DIR:-./repertory_on_the_host/linkding}:/etc/linkding/data restart: unless-stopped
Vous copiez le contenu de ce fichier dans votre interface de gestion Portainer en allant dans ‘Stacks‘ et ‘Add stack‘.
Le fichier contenant les variables d’environnements :
Le fichier contient les variables globales permettant de personnaliser votre containeur :
Remarque : nous pouvons aussi par sécurité ne pas utiliser les variables ‘LD_SUPERUSER_NAME’ et ‘LD_SUPERUSER_PASSWORD’ dans ce fichier et les créer directement en ligne de commande (voir paragraphe suivant).
Remarque : Vous avez aussi la possibilité de renseigner un utilisateur dans les variables d’environnements, puis d’en créer un nouveau par la suite via l’interface de l’application et de supprimer celui-ci.
LD_CONTAINER_NAME="linkding"
LD_HOST_PORT="9090"
LD_HOST_DATA_DIR="/repertory_on_the_host"
LD_SUPERUSER_NAME="user"
LD_SUPERUSER_PASSWORD="password"
LD_DISABLE_BACKGROUND_TASKS="False"
LD_DISABLE_URL_VALIDATION="False"
LD_ENABLE_AUTH_PROXY="False"
LD_CSRF_TRUSTED_ORIGINS="https://linkding.subdomain.domain.tld"
Cliquez sur ‘Load variables from .env file’:
Donnez un nom à votre pile, par exemple ‘linkding‘, puis déployer cotre containeur en cliquant en bas sur ‘Deploy the stack’.
Après une phase de téléchargement de l’image, puis d’installation de l’application, vous devriez arriver sur cet écran si tout s’est bien passé :
Option : création de l’utilisateur en ligne de commande
Si vous ne souhaitez pas faire apparaitre l’utilisateur dans les variables d’environnements, vous pouvez le créér directement via la commande :
Puis de resignez le mot de passe.
Configuration reverse-proxy
Nous allons voir deux configuration possible : swag ou Nginx.
Configuration avec swag
La configuration d’un containeur avec ‘swag’ est la plupart du temps très simple. ‘swag’ propose par défaut des fichiers de configurations prédéfinis pour de nombreux services.
Ces fichiers se trouvent dans le répertoire d’installation de swag : /volume/docker/swag/nginx/proxy-confs/. Il n’y a pas de fichier pré-configurer pour ’lingding’; il faut donc en créer un. On tape la commande suivante :
sudo nano linkding.subdomain.conf
Puis on colle le code ci dessous dans le fichier :
# linkding config
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name linkding.*;
include /config/nginx/ssl.conf;
client_max_body_size 0;
location / {
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app linkding;
set $upstream_port 9090;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
proxy_max_temp_file_size 2048m;
}
}
ous relançons le containeur swag soit via ‘Portainer’, soit en ligne de commande sudo docker restart swag pour qu’il prenne en charge la redirection du containeur ’linkding’.
Configuration avec Nginx
Je pars du principe que vous avez déja un serveur Nginx configuré et opérationnel.
Le fichier de configuration se trouve dans /etc/nginx/sites-available/linkding.conf. Adaptez le à votre configuration en remplacant l’IP local et l’URL de votre domaine.
server {
listen 80;
server_name linkding.subdomain.domain.tld;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
server_name linkding.subdomain.domain.tld;
client_max_body_size 4M;
include /etc/nginx/ssl/ciphers-subdomain.domain.conf;
error_log /var/log/nginx/error.log notice;
access_log /var/log/nginx/access.log;
proxy_intercept_errors on;
location / {
include /etc/nginx/conf.d/proxy.conf;
proxy_pass http://IP_LOCAL:9090;
}
}
Puis, nous créons le lien symbolique :
Nous vérifions la configuration Nginx : sudo nginx -t et si tout vas bien, vous pouvez relancer le serveur : sudo systemctl restart nginx.service
Utilisation de l’interface
Première connexion
Nous pouvons maintenant nous connecter à ’linkding’ depuis l’extérieur avec l’URL https://linkding.subdomain.domain.tld (Le domaine et le sous domaine est à adapter suivant le vôtre).
Vous devrez vous identifier avec l’utilisateur que vous avez créer en ligne de commande ou soit via le fichier d’environnements :
Une fois connectez, vous aurez accès à l’interface principale du serveur. Voici un exemple de la mienne :
L’interface est constituée de 4 parties :
- Au centre : vous voyez les derniers liens enregistrés,
- A droite : les ‘tags’ pour retrouver vos liens,
- En haut à droite : le menu de l’application,
- En haut au centre : un champ de recherche.
Rechercher un lien
J’ai plusieurs centaines de liens et de tags dans mon Bookmark. Nous pouvons faire la recherche de deux façons :
- Utilisation des tags : en cliquant directement sur un des tags à droite,
- Champ recherche : En entrant un mot de recherche ; il vous proposera des suggestions en fonction de vos tags enregistrés.
Je souhaite par exemple voir tous les liens qui ont un lien avec le tag ‘Android’. Je tape les premières lettres et il me propose la complétion du tag :
Je valide et il vas m’afficher tous les liens enregistrés avec le tag ‘Android’. Il m’indique aussi à droite, tous les autres tags lié au tag ‘Android’ dans mes liens enregistrés :
Je peux affiner ma recherche maintenant, en sélectionnant un autre tag à droite. Par exemple je click sur ‘LineageOS’ :
Administration : gestion des utilisateurs
L’application possède une interface d’administration complète. Pour y accédez, vous devez cliquez sur ‘settings’-> ‘Admin’.
Je vous laisse découvrir toutes les options de l’interface. Nous allons voir seulement la gestion des utilisateurs :
On accède à l’interface des utilisateurs. On peut ajouter un utilisateur ou modifier un utilisateur existant :