[{"data":1,"prerenderedAt":152},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-son-pds-bluesky-at-protocol-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":91,"ctaBody":92,"ctaButton":93,"ctaUrl":94,"relatedPosts":95},305,"heberger-son-pds-bluesky-at-protocol-vps",{"fr":8,"en":10,"ar":11},"host-your-bluesky-pds-on-a-vps-with-the-at-protocol","استضافة-pds-bluesky-على-vps-بواسطة-بروتوكول-at","Héberger son PDS Bluesky sur un VPS avec le protocole AT","Déployez votre Personal Data Server Bluesky sur un VPS : DID portable, wildcard DNS, Caddy TLS automatique et Watchtower. 512 Mo de RAM suffisent.",9,0,false,"2026-08-26T00: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-son-pds-bluesky-at-protocol-vps-poster.svg",{"categorySlug":30,"appSlug":31},"developpement","docker-starter","Le protocole AT (atproto) dissocie votre identité Bluesky du serveur qui l'héberge. Tant que votre compte réside sur bsky.social, c'est Bluesky Inc. qui contrôle votre DID. Héberger son propre Personal Data Server sur un VPS transfère ce contrôle : vos publications, follows et handle vous suivent quel que soit l'avenir de la plateforme. Le dépôt officiel github.com\u002Fbluesky-social\u002Fpds fournit un Compose prêt à l'emploi avec Caddy (TLS automatique) et Watchtower (mises à jour automatiques), pour une charge de maintenance comparable à tout autre service Docker.",[34,38,50,53,78,81,85,88],{"type":35,"title":36,"body":37},"h2","Posséder son identité Bluesky","La portabilité du protocole AT repose sur une séparation stricte entre le DID (Decentralized Identifier), le PDS qui stocke vos données, et le relayeur de réseau. Votre DID doc, signé cryptographiquement par votre serveur, énumère les clés de signature et le point d'entrée du service qui héberge votre dépôt. Changer de PDS met à jour ce document sans modifier le DID lui-même : vos abonnés ne voient rien, vos liens de profil restent valides, et votre handle reste le même.\n\nTant que vous déléguez cet hébergement à bsky.social, la portabilité reste théorique. La migrer vers un VPS que vous administrez la rend effective : vous contrôlez les clés, vous décidez des règles d'inscription, et aucune décision de politique externe ne peut vous priver de votre dépôt de publications.",{"type":39,"title":40,"items":41},"ul","Avantages d'un PDS auto-hébergé",[42,43,44,45,46,47,48,49],"Votre handle Bluesky devient un sous-domaine de votre propre domaine, par exemple `vous.votre-domaine.com`.","Vos publications, likes et follows sont stockés dans un dépôt signé cryptographiquement sur votre serveur — vous en êtes l'unique propriétaire.","En cas de changement de politique de bsky.social, une migration ne coûte ni abonné ni publication : le protocole AT transfère l'intégralité du dépôt.","Vous gérez la liste des comptes admis via un système de codes d'invitation : une instance strictement personnelle reste possible.","Watchtower surveille l'image du PDS et déclenche les mises à jour automatiquement, sans intervention manuelle.","Caddy gère le TLS et le renouvellement des certificats, y compris pour le wildcard DNS requis par les handles en sous-domaine.","La consommation mémoire au repos avoisine 512 Mo : compatible avec la plupart des VPS d'entrée de gamme.","Le code est publié sous licence MIT sur github.com\u002Fbluesky-social\u002Fpds ; aucune édition entreprise payante n'existe.",{"type":35,"title":51,"body":52},"Prérequis chiffrés","Un VPS avec au moins 512 Mo de RAM et 1 vCPU suffit pour un usage personnel (un à cinq comptes). Prévoyez 20 Go de stockage SSD minimum pour les médias et l'historique des publications. Pour un usage associatif à une dizaine de comptes, 1 Go de RAM et 40 Go de stockage offrent davantage de marge.\n\nCôté réseau, les ports 80 et 443 doivent être joignables depuis l'extérieur. Le PDS maintient une connexion WebSocket persistante vers le réseau Bluesky : assurez-vous que votre pare-feu ne coupe pas les connexions longues inactives.\n\nDNS : un enregistrement A wildcard `*.votre-domaine.com` pointant vers l'IP de votre VPS est indispensable. Il permet à chaque handle en sous-domaine d'être résolu sans qu'une entrée DNS distincte soit nécessaire par compte. Si votre registrar ne supporte pas les wildcards, la configuration manuelle d'un handle via un enregistrement TXT `_atproto.votre-domaine.com` reste possible, mais plus contraignante.\n\nLogiciels requis : Docker et Docker Compose v2. Aucune autre dépendance n'est nécessaire ; le Compose officiel embarque Caddy, Watchtower et le PDS dans un réseau interne isolé.",{"type":54,"title":55,"steps":56},"steps","Installation pas à pas",[57,60,63,66,69,72,75],{"title":58,"body":59},"Cloner le dépôt officiel","Connectez-vous en SSH sur votre VPS et clonez le dépôt de référence. La branche `main` est la branche stable recommandée par les mainteneurs : `git clone https:\u002F\u002Fgithub.com\u002Fbluesky-social\u002Fpds \u002Fopt\u002Fpds`. Entrez ensuite dans le répertoire avec `cd \u002Fopt\u002Fpds`.",{"title":61,"body":62},"Créer le fichier d'environnement","Copiez l'exemple fourni dans le dépôt : `cp .env.example .env`.\n\nRenseignez au minimum `PDS_HOSTNAME` (votre domaine racine, sans le wildcard, ex. `votre-domaine.com`), `PDS_JWT_SECRET` et `PDS_ADMIN_PASSWORD`. Générez des valeurs aléatoires fortes : `openssl rand -hex 32` produit une chaîne de 64 caractères suffisante pour chacun des deux secrets.",{"title":64,"body":65},"Configurer le DNS wildcard","Dans l'interface de votre registrar ou de Cloudflare, créez un enregistrement A `*.votre-domaine.com` pointant vers l'adresse IP de votre VPS.\n\nLa propagation prend en général quelques minutes, parfois jusqu'à 24 h. Vérifiez avec `dig +short test.votre-domaine.com @1.1.1.1` avant de passer à l'étape suivante : si la réponse est vide, attendez.",{"title":67,"body":68},"Démarrer les services","Le Compose officiel démarre le PDS, Caddy et Watchtower en une commande : `docker compose up -d`.\n\nCaddy obtient automatiquement le certificat TLS pour `votre-domaine.com` et `*.votre-domaine.com`. Suivez les logs avec `docker compose logs -f caddy` pour confirmer que le challenge a abouti avant de créer le premier compte.",{"title":70,"body":71},"Créer le premier compte","L'image PDS expose une commande d'administration en ligne. Créez votre compte : `docker compose exec pds \u002Fpds\u002Fbin\u002Fcreate-account --handle vous.votre-domaine.com --email vous@votre-domaine.com --password \u003Cmotdepasse>`.\n\nOuvrez l'application Bluesky, choisissez « Serveur personnalisé » (adresse : `https:\u002F\u002Fvotre-domaine.com`), entrez le code d'invitation retourné et finalisez la création de compte.",{"title":73,"body":74},"Migrer depuis bsky.social (si applicable)","Si vous avez déjà un compte sur bsky.social, le protocole AT permet une migration sans perte de followers ni de publications. Dans l'application Bluesky : Paramètres → Gérer mon compte → Migrer le compte. Entrez l'adresse de votre PDS (`https:\u002F\u002Fvotre-domaine.com`) et suivez les étapes. Votre DID est mis à jour pour pointer vers votre serveur ; vos abonnés n'ont aucune action à effectuer — ils vous voient toujours dans leur flux.",{"title":76,"body":77},"Vérifier l'installation","Ouvrez `https:\u002F\u002Fvotre-domaine.com\u002Fxrpc\u002Fcom.atproto.server.describeServer` dans un navigateur.\n\nLa réponse JSON confirme que votre PDS est accessible et que le TLS est valide. Cherchez ensuite `@vous.votre-domaine.com` dans l'application Bluesky pour vérifier que le handle se résout correctement.",{"type":35,"title":79,"body":80},"Configuration post-installation","Codes d'invitation. Par défaut, les inscriptions sont fermées : seuls les comptes créés avec un code d'invitation peuvent rejoindre votre PDS. Générez des codes supplémentaires avec `docker compose exec pds \u002Fpds\u002Fbin\u002Fcreate-invite-code`. Pour un usage strictement personnel, cette restriction est la configuration recommandée.\n\nSurveillance avec Watchtower. Watchtower est déjà dans le Compose officiel et surveille l'image du PDS. Dès qu'une nouvelle version est publiée sur le registre d'images, il tire l'image et redémarre le service, sans intervention de votre part. Pour recevoir une notification à chaque mise à jour, ajoutez `WATCHTOWER_NOTIFICATION_EMAIL=vous@votre-domaine.com` dans le fichier `.env`.\n\nSauvegardes. Le répertoire `data\u002F` (configurable via `PDS_DATA_DIRECTORY`) contient la base SQLite et les médias. Planifiez une sauvegarde régulière : le répertoire est cohérent à froid si vous arrêtez les services avec `docker compose stop` avant de le copier.",{"type":82,"title":83,"body":84},"tip","Durcissement recommandé","Ajoutez `PDS_REGISTRATION_DISABLED=true` dans `.env` pour exiger un code d'invitation à toute inscription. Relancez le PDS avec `docker compose restart pds` après modification.\n\nTestez régulièrement la restauration de vos sauvegardes en démarrant un PDS éphémère sur un second répertoire : une sauvegarde non testée n'est pas une sauvegarde. Une base SQLite corrompue sans restauration valide signifie la perte de l'ensemble des publications.",{"type":35,"title":86,"body":87},"Dépannage courant","DNS non propagé. Si Caddy ne parvient pas à obtenir le certificat, `docker compose logs caddy` affiche `failed to obtain certificate`. Vérifiez la résolution du wildcard avec `dig *.votre-domaine.com @1.1.1.1` : une réponse vide indique que l'entrée DNS n'existe pas encore ou n'est pas encore propagée.\n\nErreur de certificat (ports bloqués). Si l'enregistrement DNS existe mais que le challenge TLS-ALPN échoue, un pare-feu bloque probablement le port 80 ou 443. Sur un VPS avec `ufw`, vérifiez `ufw status` et autorisez les deux ports : `ufw allow 80\u002Ftcp && ufw allow 443\u002Ftcp`.\n\nMigration DID échouée. Si l'application Bluesky retourne une erreur lors de la migration, confirmez que votre PDS répond depuis l'extérieur (endpoint `describeServer` ci-dessus). La migration contacte votre serveur depuis les serveurs de bsky.social : un timeout signifie un problème réseau ou un certificat non valide.\n\nHandle non résolu. Si `@vous.votre-domaine.com` ne se résout pas dans l'application Bluesky, vérifiez que le wildcard DNS est bien propagé et que l'endpoint `\u002F.well-known\u002Fatproto-did` de votre handle répond avec le bon DID (`curl https:\u002F\u002Fvous.votre-domaine.com\u002F.well-known\u002Fatproto-did`).",{"type":35,"title":89,"body":90},"Pour aller plus loin","Un PDS auto-hébergé s'intègre naturellement à une infrastructure Docker déjà en place. Le guide sur \u003Ca href=\"\u002Fblog\u002Fdeployer-avec-caddy\">le déploiement avec Caddy\u003C\u002Fa> couvre les cas plus avancés de reverse proxy multi-services sur le même VPS. Si vous souhaitez également héberger votre forge Git, le guide \u003Ca href=\"\u002Fblog\u002Fheberger-forgejo\">Forgejo sur VPS\u003C\u002Fa> suit le même modèle Compose. Pour sécuriser l'accès administrateur à vos services auto-hébergés sans les exposer directement à internet, le guide \u003Ca href=\"\u002Fblog\u002Fself-host-headscale-tailscale-vps\">Headscale\u002FTailscale sur VPS\u003C\u002Fa> propose une alternative à un bastion SSH.","Un VPS prêt pour votre PDS Bluesky","Déployez votre Personal Data Server sur un VPS performant, configurable en quelques minutes. Vos données, votre infrastructure.","Découvrir les solutions développeurs","\u002Fsolutions\u002Fdeveloppeurs",[96,115,130],{"id":97,"slug":98,"slugs":99,"title":102,"excerpt":103,"readTime":104,"views":15,"isPinned":16,"publishedAt":105,"category":106,"categories":110,"featuredImage":26,"bgImage":27,"posterImage":112,"relatedSolution":113},39,"deployer-avec-caddy",{"fr":98,"en":100,"ar":101},"deploy-your-applications-with-caddy-on-a-vps","انشر-تطبيقاتك-باستخدام-caddy-على-خادم-vps","Déployer vos applications avec Caddy sur un VPS","Déployez Caddy sur votre VPS : serveur web et reverse proxy avec HTTPS automatique. Un Caddyfile de quelques lignes suffit pour passer en production.",3,"2026-05-12T00:00:00+00:00",{"id":104,"name":107,"slug":108,"color":109,"icon":108},"Déploiement","deploiement","bg-success\u002F10 text-success",[111],{"id":104,"name":107,"slug":108,"color":109,"icon":108},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caddy-poster.svg",{"categorySlug":108,"appSlug":114},"caddy",{"id":116,"slug":117,"slugs":118,"title":121,"excerpt":122,"readTime":123,"views":124,"isPinned":16,"publishedAt":125,"category":126,"categories":127,"featuredImage":26,"bgImage":27,"posterImage":129,"relatedSolution":26},75,"heberger-forgejo",{"fr":117,"en":119,"ar":120},"host-forgejo-on-your-own-vps","استضافة-forgejo-على-خادم-vps-الخاص-بك","Héberger Forgejo sur votre VPS : guide complet 2025","Installez Forgejo sur votre VPS avec Docker, SSL, runners Actions et sécurité renforcée. Guide pas-à-pas de 1900 mots pour une forge Git souveraine.",10,1,"2026-04-06T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[128],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fheberger-forgejo-poster.svg",{"id":131,"slug":132,"slugs":133,"title":136,"excerpt":137,"readTime":138,"views":15,"isPinned":16,"publishedAt":139,"category":140,"categories":146,"featuredImage":26,"bgImage":27,"posterImage":148,"relatedSolution":149},164,"self-host-headscale-tailscale-vps",{"fr":132,"en":134,"ar":135},"self-host-headscale-on-a-vps-your-own-tailscale-control-server","استضافة-headscale-على-vps-خادم-تحكم-tailscale-خاص-بك","Héberger Headscale sur un VPS : serveur de contrôle Tailscale","Remplacez le serveur de contrôle cloud de Tailscale par Headscale sur votre VPS : utilisateurs illimités, maillage WireGuard complet, magic DNS et ACL, sans SaaS.",5,"2026-07-05T00:00:00+00:00",{"id":141,"name":142,"slug":143,"color":144,"icon":145},8,"Sécurité & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[147],{"id":141,"name":142,"slug":143,"color":144,"icon":145},"\u002Fblog\u002Fcovers\u002Fself-host-headscale-tailscale-vps-poster.svg",{"categorySlug":150,"appSlug":151},"reseau","headscale",1787744266979]