[{"data":1,"prerenderedAt":178},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-linkwarden-vps-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":126,"ctaBody":127,"ctaButton":128,"ctaUrl":129,"relatedPosts":130},251,"heberger-linkwarden-vps",{"fr":8,"en":10,"ar":11},"self-host-linkwarden-on-a-vps-team-bookmark-management","استضافة-linkwarden-على-vps-إدارة-الإشارات-المرجعية-للفريق","Héberger Linkwarden sur VPS : gestion de favoris d'équipe","Déployez Linkwarden sur votre VPS : centralisez la veille de l'agence avec des collections partagées, des droits par équipe et une extension multi-utilisateurs.",10,0,false,"2026-08-13T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-linkwarden-vps-poster.svg",{"categorySlug":30,"appSlug":31},"collaboration","linkwarden","Linkwarden est un gestionnaire de favoris collaboratif open source sous licence AGPL-3.0, conçu pour les équipes qui partagent une veille active. Il organise les liens en collections, autorise des droits fins par membre et propose une extension navigateur utilisable par chacun. Ce guide explique comment le déployer sur un VPS avec accès root, configurer le reverse proxy et remettre à votre agence un environnement prêt à l'emploi.",[34,38,49,52,80,84,87,120,123],{"type":35,"title":36,"body":37},"h2","Pourquoi héberger Linkwarden soi-même","L'objection la plus courante est celle de la charge opérationnelle : un service de plus à mettre à jour, à sauvegarder, à sécuriser — autant rester sur un SaaS. Elle est légitime, mais elle part d'une prémisse inexacte : un outil bien conteneurisé comme Linkwarden ne demande pas plus d'entretien qu'une image Docker standard. La mise à jour se résume à tirer la nouvelle image et à relancer le service. La sauvegarde porte sur un seul volume de base de données. Le TLS est géré par un reverse proxy déjà en place sur le VPS.\n\nCe que l'auto-hébergement règle, en revanche, c'est la dépendance à un SaaS dont les conditions d'accès peuvent changer du jour au lendemain. Plusieurs équipes ont perdu l'accès à une veille partagée après la fermeture ou le rachat d'un outil tiers. Sur votre VPS, les données appartiennent à votre organisation, les collections restent accessibles quel que soit le contexte commercial du fournisseur, et vous maîtrisez la politique de rétention.",{"type":39,"title":40,"items":41},"ul","Ce que Linkwarden apporte à une agence",[42,43,44,45,46,47,48],"**Collections partagées** — chaque projet ou client dispose de sa propre collection, accessible à l'équipe concernée sans exposer les autres dossiers.","**Droits par membre** — les permissions se gèrent au niveau de la collection : lecteur, contributeur ou gestionnaire, selon le rôle de chacun.","**Annotations communes** — les membres d'une collection peuvent laisser des notes sur chaque lien, ce qui évite les doublons de recherche et capitalise la veille.","**Extension navigateur multi-utilisateurs** — chaque collaborateur installe l'extension dans son navigateur et enregistre directement dans la collection cible, sans ouvrir l'interface web.","**Archivage des pages** — Linkwarden conserve une copie locale des pages enregistrées, ce qui évite de perdre une ressource disparue du web.","**API REST** — les liens s'intègrent dans d'autres outils internes via l'API, sans dépendance à une interface graphique.","**Contrôle total des données** — aucune analyse comportementale, aucune syndication externe des favoris vers des tiers.",{"type":35,"title":50,"body":51},"Prérequis avant l'installation","Un VPS avec **2 vCPU et 2 Go de RAM** suffit pour une agence de 5 à 15 personnes à usage normal : les collections chargent rapidement, l'archivage des pages tourne en arrière-plan sans impacter la navigation. En dessous de 1 Go de RAM, le processus Node.js de Next.js peut être tué par l'OOM killer sous charge.\n\nPlanifiez **10 à 20 Go de stockage** selon le volume de pages archivées : chaque capture d'écran et chaque copie de page pèse entre 100 Ko et 2 Mo. Un VPS `{{vps.power.name}}` avec SSD NVMe convient à cette charge.\n\nCôté réseau, le port **443 doit être ouvert** et un nom de domaine doit pointer sur l'IP du VPS avant de générer le certificat TLS. Linkwarden requiert **Docker et Docker Compose**, disponibles sur toutes les distributions Linux majeures. Une base PostgreSQL est nécessaire — elle est incluse dans le fichier Compose officiel.",{"type":53,"title":54,"steps":55},"steps","Déploiement pas à pas",[56,59,62,65,68,71,74,77],{"title":57,"body":58},"Préparer le répertoire de travail","Connectez-vous en SSH à votre VPS en tant que root ou via un utilisateur sudoïsé, puis créez le dossier qui accueillera les fichiers de configuration :\n\n```bash\nmkdir -p \u002Fopt\u002Flinkwarden && cd \u002Fopt\u002Flinkwarden\n```",{"title":60,"body":61},"Créer le fichier Compose","Créez un fichier `docker-compose.yml` avec le contenu suivant. Les valeurs entre chevrons sont à remplacer avant de démarrer :\n\n```yaml\nservices:\n  postgres:\n    image: postgres:16-alpine\n    restart: unless-stopped\n    environment:\n      POSTGRES_DB: linkwarden\n      POSTGRES_USER: linkwarden\n      POSTGRES_PASSWORD: \u003Cmot-de-passe-db>\n    volumes:\n      - postgres_data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n\n  linkwarden:\n    image: ghcr.io\u002Flinkwarden\u002Flinkwarden:latest\n    restart: unless-stopped\n    depends_on:\n      - postgres\n    environment:\n      DATABASE_URL: postgresql:\u002F\u002Flinkwarden:\u003Cmot-de-passe-db>@postgres:5432\u002Flinkwarden\n      NEXTAUTH_SECRET: \u003Cchaine-aleatoire-32-caracteres>\n      NEXTAUTH_URL: https:\u002F\u002Fvotre-domaine.com\n    volumes:\n      - linkwarden_data:\u002Fdata\u002Fdata\n    ports:\n      - \"127.0.0.1:3000:3000\"\n\nvolumes:\n  postgres_data:\n  linkwarden_data:\n```\n\nPour générer la valeur de `NEXTAUTH_SECRET`, exécutez sur le serveur : `openssl rand -base64 32`.",{"title":63,"body":64},"Configurer la variable NEXTAUTH_URL avec soin","La variable `NEXTAUTH_URL` doit correspondre exactement à l'URL publique de votre instance, protocole inclus. Si votre instance est derrière un reverse proxy TLS, la valeur doit commencer par `https:\u002F\u002F` et non par `http:\u002F\u002F`.\n\nUn `NEXTAUTH_URL` malformé produit l'erreur suivante au premier chargement de l'interface : `Error: NEXTAUTH_URL is not configured. Please set NEXTAUTH_URL in your .env`. Si la valeur est en `http:\u002F\u002F` alors que le proxy renvoie du HTTPS, la session ne se crée pas et la page de connexion se recharge en boucle sans message d'erreur visible.",{"title":66,"body":67},"Démarrer les conteneurs","Depuis `\u002Fopt\u002Flinkwarden`, lancez :\n\n```bash\ndocker compose up -d\n```\n\nLes images sont téléchargées, puis PostgreSQL démarre en premier. Linkwarden attend que la base soit prête avant d'initialiser le schéma. Vérifiez que les deux conteneurs sont en état `running` avec `docker compose ps`.",{"title":69,"body":70},"Configurer le reverse proxy (nginx)","Linkwarden écoute sur `127.0.0.1:3000`. Ajoutez un bloc serveur nginx pour proxifier le trafic HTTPS :\n\n```nginx\nserver {\n    listen 443 ssl;\n    server_name votre-domaine.com;\n\n    ssl_certificate     \u002Fetc\u002Fletsencrypt\u002Flive\u002Fvotre-domaine.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fvotre-domaine.com\u002Fprivkey.pem;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:3000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n```\n\nRechargez nginx avec `nginx -t && systemctl reload nginx`.",{"title":72,"body":73},"Générer le certificat TLS","Si ce n'est pas déjà fait, générez un certificat Let's Encrypt avec Certbot :\n\n```bash\ncertbot --nginx -d votre-domaine.com\n```\n\nCertbot modifie automatiquement le bloc nginx pour ajouter les chemins de certificat et la redirection HTTP vers HTTPS. Le renouvellement est automatique via le timer systemd installé par le paquet.",{"title":75,"body":76},"Créer le premier compte administrateur","Ouvrez `https:\u002F\u002Fvotre-domaine.com` dans un navigateur. Linkwarden propose de créer le premier compte au premier accès. Ce compte devient l'administrateur de l'instance. Ensuite, invitez chaque collaborateur depuis le panneau **Paramètres → Membres** en renseignant son adresse e-mail.",{"title":78,"body":79},"Distribuer l'extension navigateur","L'extension Linkwarden est disponible sur le Chrome Web Store et sur Firefox Add-ons. Lors de la première configuration, chaque membre renseigne l'URL de l'instance (`https:\u002F\u002Fvotre-domaine.com`) et génère un token d'API depuis **Paramètres → Tokens d'accès**. Les favoris enregistrés via l'extension arrivent directement dans la collection choisie par l'utilisateur.",{"type":81,"title":82,"body":83},"tip","Durcissement après installation","Restreignez l'accès direct au port 3000 depuis l'extérieur — il ne doit répondre que sur l'interface locale : vérifiez que la ligne `ports` de votre Compose bind sur `127.0.0.1:3000:3000` et non sur `0.0.0.0:3000:3000`.\n\nActivez les mises à jour automatiques de l'image avec Watchtower ou planifiez un `docker compose pull && docker compose up -d` hebdomadaire dans une cron.\n\nSauvegardez le volume `postgres_data` avec un dump quotidien : `docker compose exec postgres pg_dump -U linkwarden linkwarden > \u002Fopt\u002Fbackups\u002Flinkwarden-$(date +%F).sql`. Conservez les dumps hors du serveur (S3, stockage distant) pour résister à une défaillance disque.",{"type":35,"title":85,"body":86},"Linkwarden ou Karakeep : deux usages distincts","Karakeep (anciennement Hoarder) et Linkwarden sont souvent cités ensemble dans les comparatifs de gestionnaires de favoris self-hosted, mais ils ne répondent pas au même besoin.\n\nKarakeep est centré sur la capture intelligente : il extrait et résume automatiquement le contenu des pages grâce à un modèle de langage local ou distant. C'est un outil pensé pour un usage individuel, où la valeur vient de l'IA qui trie et classe. Il n'expose pas de notion de collection partagée ni de gestion de droits par membre.\n\nLinkwarden est pensé pour la collaboration : la notion centrale est la **collection partagée**, accessible à plusieurs membres avec des droits différenciés. Les annotations y sont communes, pas personnelles. L'extension navigateur se connecte à l'instance de l'organisation, pas à un compte personnel. Pour une agence qui veut centraliser la veille de ses équipes-projets, Linkwarden est l'outil adapté. Pour un profil qui veut une bibliothèque personnelle enrichie par l'IA, Karakeep répond mieux.",{"type":88,"title":89,"headers":90,"rows":94},"comparison","Linkwarden vs Karakeep — tableau récapitulatif",[91,92,93],"Critère","Linkwarden","Karakeep",[95,99,103,107,110,113,117],[96,97,98],"Usage principal","Veille collaborative d'équipe","Capture personnelle assistée par IA",[100,101,102],"Collections partagées","Oui, avec droits par membre","Non (usage solo)",[104,105,106],"Annotations communes","Oui","Non",[108,105,109],"Extension navigateur multi-utilisateurs","Oui (compte unique)",[111,106,112],"Résumé IA du contenu","Oui (modèle local ou API)",[114,115,116],"Ressources minimales","2 vCPU \u002F 2 Go RAM","2 vCPU \u002F 4 Go RAM (modèle local)",[118,119,119],"Licence","AGPL-3.0",{"type":35,"title":121,"body":122},"Dépannage : erreurs courantes à l'installation","**La page de connexion se recharge en boucle sans message d'erreur.**\nCause probable : `NEXTAUTH_URL` est défini en `http:\u002F\u002F` alors que le reverse proxy sert du HTTPS. NextAuth génère un cookie sécurisé que le navigateur refuse de renvoyer sur une connexion non chiffrée. Corrigez la valeur dans le Compose, puis relancez avec `docker compose up -d --force-recreate`.\n\n**L'interface s'affiche mais les images des collections ne chargent pas.**\nLe chemin du volume `linkwarden_data` n'est pas monté correctement. Vérifiez que le volume est bien déclaré dans la section `volumes` du fichier Compose et qu'aucun montage bind précédent n'a laissé le dossier vide.\n\n**Erreur `ECONNREFUSED` dans les logs de Linkwarden au démarrage.**\nLinkwarden démarre avant que PostgreSQL soit prêt à accepter des connexions. Ajoutez un `healthcheck` sur le service `postgres` et une condition `depends_on: postgres: condition: service_healthy` sur le service `linkwarden` pour imposer l'ordre.\n\n**L'extension navigateur affiche « Impossible de joindre le serveur ».**\nVérifiez que l'URL saisie dans les paramètres de l'extension ne comporte pas de barre oblique finale (`https:\u002F\u002Fvotre-domaine.com` et non `https:\u002F\u002Fvotre-domaine.com\u002F`). Certaines versions de l'extension sont sensibles à ce détail.\n\n**L'archivage des pages ne fonctionne pas.**\nLe processus d'archivage appelle Chromium en headless depuis le conteneur. Sur les VPS avec moins de 1,5 Go de RAM, le processus est terminé avant la capture. Augmentez les ressources du VPS ou désactivez l'archivage automatique dans **Paramètres → Archivage** si la RAM est contrainte.",{"type":35,"title":124,"body":125},"L'étape suivante : centraliser l'ensemble des services de l'agence","Une agence qui auto-héberge sa veille avec Linkwarden a déjà franchi la ligne : elle gère ses propres données, ses propres mises à jour, ses propres sauvegardes. C'est la posture d'une équipe qui sait ce qu'elle fait tourner.\n\nLa prochaine étape logique est de centraliser aussi les domaines, hébergements et VPS de vos clients dans un espace revendeur sous votre propre marque — sans multiplier les interfaces ni perdre la visibilité sur les renouvellements. C'est exactement ce que l'offre agence de ServOrbit permet.\n\nSi vous souhaitez aller plus loin sur l'auto-hébergement d'outils d'équipe, les articles sur **Outline** (wiki collaboratif) et l'automatisation des serveurs avec **Ansible** complètent ce guide.","Centralisez aussi vos services clients","L'agence qui auto-héberge ses outils internes maîtrise déjà son infrastructure. La prochaine étape est de gérer les domaines, hébergements et VPS de vos clients sous votre propre marque, dans un seul espace revendeur.","Installer Linkwarden sur VPS","\u002Fmarketplace\u002Fcollaboration\u002Flinkwarden",[131,145,164],{"id":132,"slug":133,"slugs":134,"title":137,"excerpt":138,"readTime":139,"views":15,"isPinned":16,"publishedAt":140,"category":141,"categories":142,"featuredImage":26,"bgImage":27,"posterImage":144,"relatedSolution":26},80,"heberger-outline",{"fr":133,"en":135,"ar":136},"host-outline-on-your-own-vps","استضافة-outline-على-خادم-vps-الخاص-بك","Héberger Outline sur votre propre VPS","Déployez Outline sur votre VPS Cloud : base de connaissances collaborative auto-hébergée avec Docker, PostgreSQL, Redis et SSL. Guide complet.",3,"2026-04-01T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[143],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fheberger-outline-poster.svg",{"id":146,"slug":147,"slugs":148,"title":151,"excerpt":152,"readTime":153,"views":154,"isPinned":16,"publishedAt":155,"category":156,"categories":161,"featuredImage":26,"bgImage":27,"posterImage":163,"relatedSolution":26},212,"woodpecker-ci-pipeline-vps-forgejo",{"fr":147,"en":149,"ar":150},"woodpecker-ci-and-forgejo-cicd-pipeline-on-a-vps","woodpecker-ci-وforgejo-خط-أنابيب-cicd-على-خادم-vps","Woodpecker CI et Forgejo : pipeline CI\u002FCD sur VPS","Déployez Woodpecker CI avec Forgejo sur votre VPS pour un pipeline CI\u002FCD open source auto-hébergé, léger et souverain. Guide Docker pas à pas.",4,1,"2026-08-02T00:00:00+00:00",{"id":157,"name":158,"slug":159,"color":160,"icon":159},2,"Automatisation","automatisation","bg-brand-action\u002F10 text-brand-action",[162],{"id":157,"name":158,"slug":159,"color":160,"icon":159},"\u002Fblog\u002Fcovers\u002Fwoodpecker-ci-pipeline-vps-forgejo-poster.svg",{"id":165,"slug":166,"slugs":167,"title":170,"excerpt":171,"readTime":172,"views":154,"isPinned":16,"publishedAt":173,"category":174,"categories":175,"featuredImage":26,"bgImage":27,"posterImage":177,"relatedSolution":26},236,"ansible-automatiser-serveurs-vps",{"fr":166,"en":168,"ar":169},"automating-vps-server-management-with-ansible","أتمتة-إدارة-خوادم-vps-باستخدام-ansible","Automatiser la gestion de ses serveurs VPS avec Ansible","Automatisez la gestion d'une flotte de serveurs VPS avec Ansible : inventaire, playbooks, rôles et Vault pour une infrastructure reproductible.",11,"2026-08-08T00:00:00+00:00",{"id":157,"name":158,"slug":159,"color":160,"icon":159},[176],{"id":157,"name":158,"slug":159,"color":160,"icon":159},"\u002Fblog\u002Fcovers\u002Fansible-automatiser-serveurs-vps-poster.svg",1787580975353]