Shlink

Tableau de bord du client web : compteurs de visites, d'URL courtes et de tags, formulaire de création et derniers liens créés.

Un raccourcisseur PHP piloté par API, sans interface intégrée

Shlink sert des liens courts sous son propre domaine et compte chaque visite. Le serveur PHP se pilote uniquement par son API REST ou en ligne de commande. L'interface graphique est une application à part, le client web officiel, utilisable sur app.shlink.io ou à héberger.

Règles de redirection et clés d'API restreintes

  • Redirections à règles : un lien court porte des règles classées par priorité, et la première dont toutes les conditions sont remplies impose sa destination. Les conditions portent sur la langue, l'appareil, le navigateur, l'IP ou un bloc CIDR, le pays ou la ville, un paramètre de requête, ou une date avant ou après un seuil.
  • Plusieurs domaines sur une instance : un même slug peut exister sur plusieurs domaines, chaque lien gardant ses tags et ses visites.
  • Clés d'API à rôles : une clé peut être limitée aux liens créés avec elle, à un seul domaine, ou privée des visites orphelines. Les rôles se fixent à la génération, en ligne de commande, et ne changent plus.
  • Visites comptées sans IP en clair : l'adresse IP est stockée anonymisée par défaut, les bots probables sont signalés d'après le User-Agent, et les visites sur des URL inconnues (404, racine du domaine) sont comptées à part. Le suffixe /track donne un pixel transparent qui compte les ouvertures d'un e-mail.
  • Liens temporaires : date de début, date de fin et plafond de visites par lien. La commande short-url:delete-expired supprime les liens expirés, à planifier soi-même.
  • Reprise de l'existant : import depuis Bitly, YOURLS, Kutt, un fichier CSV ou une autre instance Shlink, visites comprises depuis YOURLS, Kutt et Shlink. Côté YOURLS, un plugin est à installer d'abord.

Interface séparée, SQLite réservé aux essais et branche 5.x

Le serveur ne connaît aucun compte utilisateur. Shlink ne gère que des clés d'API, et sa page d'architecture renvoie les permissions des utilisateurs finaux à une application qui a son propre back-end. Pour des comptes avec rôles, l'équipe publie Shlink Dashboard, en version 0.3.3 du 24 octobre 2026 : une application Node.js 22 ou plus, sans version hébergée, avec sa propre base (MySQL, MariaDB, PostgreSQL ou SQL Server).

Shlink est conçu pour les conteneurs. La même page le présente comme un service API-first pensé pour les environnements cloud-native, explique ces choix aux habitués de Bit.ly ou de YOURLS et précise que l'hébergement mutualisé n'a jamais été la cible du projet. Le runtime recommandé, RoadRunner, est celui de l'image Docker, et c'est le seul qui publie les événements en temps réel vers Mercure, RabbitMQ ou Redis. Hors Docker, il faut PHP 8.4 ou 8.5.

SQLite ne sert qu'à l'essai. La documentation le déclare non pris en charge en production. Restent MySQL, MariaDB, PostgreSQL et SQL Server, ce dernier absent de l'image Docker pour ARM. La géolocalisation des visites, et donc les règles par pays ou par ville, exige une clé de licence GeoLite2, gratuite mais liée à un compte MaxMind.

L'adresse IP brute part vers Matomo. Avec l'intégration Matomo activée, chaque visite lui parvient avec l'IP complète, et l'anonymiser relève alors des réglages de Matomo.

La version 5.1.8 date du 21 octobre 2026. Douzième publication de la branche 5.x, ouverte le 9 janvier 2026, elle passe les images Docker sur Alpine 3.24 pour rétablir les correctifs de sécurité de PHP. La 5.0 a retiré du serveur la génération de QR codes (reprise par le client web et Shlink Dashboard), abandonné PHP 8.3 et cessé de détecter seule les proxys de confiance : avec plus d'un proxy devant Shlink, il faut renseigner TRUSTED_PROXIES.