Files
wiki/Catalogue-Self-Hosted/apps/app-kutt.md
T
2026-06-09 18:40:21 +02:00

5.4 KiB


title: Kutt created: 2026-06-08 updated: 2026-06-08 type: app tags: [catalogue, url-shortener, self-hosted] confidence: high contested: false sources: [https://selfh.st/apps/?tag=42, https://github.com/thedevs-network/kutt]

🔗 Kutt

Kutt est un raccourcisseur d'URL moderne en TypeScript, avec support natif des domaines personnalisés, API REST complète, extension navigateur et interface soignée.

📋 Informations Générales

Métadonnée Valeur
Site web https://github.com/thedevs-network/kutt
GitHub https://github.com/thedevs-network/kutt
License MIT
Langage principal TypeScript
Étoiles GitHub 10 893
Dernière MAJ 2026-05-17
Catégorie cat-url-shortener

📝 Description

Kutt est un raccourcisseur d'URL moderne développé par l'équipe thedevs-network. Il combine une interface web élégante avec un backend Node.js/Express solide, ce qui le place à mi-chemin entre la simplicité de YOURLS et la richesse fonctionnelle de Dub. Il supporte nativement les domaines personnalisés (plusieurs possibles sur une même instance) et expose une API REST complète.

L'application gère les slugs personnalisés, les liens protégés par mot de passe, l'expiration programmée, les codes QR, le suivi analytique (clics, référents, géolocalisation via base de villes), et permet de gérer plusieurs utilisateurs avec authentification email/password ou OAuth (Google, GitHub). Une extension navigateur officielle (Chrome/Firefox) permet de raccourcir l'URL courante en un clic.

L'UI est multilingue (i18n) et propose un dashboard clair avec statistiques temps quasi-réel. Le projet est activement maintenu et constitue un excellent choix pour un usage personnel ou en petite équipe qui veut une UI moderne sans la lourdeur d'une plateforme marketing.

🚀 Installation

Docker Compose (recommandé)

services:
  kutt:
    image: ghcr.io/thedevs-network/kutt:latest
    container_name: kutt
    restart: unless-stopped
    networks:
      - web
      - internal
    environment:
      - PORT=3000
      - SITE_NAME=Kutt
      - SITE_URL=https://go.example.com
      - DEFAULT_DOMAIN=go.example.com
      - LINK_LENGTH=6
      - DISALLOW_REGISTRATION=false
      - TRUST_PROXY=true
      - DATABASE_URL=postgres://kutt:kuttpass@db:5432/kutt
      - JWT_SECRET=${JWT_SECRET}
      - ADMIN_EMAILS=admin@example.com
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.kutt.rule=Host(`go.example.com`)"
      - "traefik.http.routers.kutt.tls.certresolver=letsencrypt"
      - "traefik.http.services.kutt.loadbalancer.server.port=3000"
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    networks:
      - internal
    environment:
      - POSTGRES_USER=kutt
      - POSTGRES_PASSWORD=kuttpass
      - POSTGRES_DB=kutt
    volumes:
      - kutt-db:/var/lib/postgresql/data

networks:
  web:
    external: true
  internal:

volumes:
  kutt-db:

Installation manuelle

  1. Cloner le repo : git clone https://github.com/thedevs-network/kutt.git
  2. Prérequis : Node.js 20+, PostgreSQL 13+.
  3. Copier .env.example vers .env et configurer.
  4. Lancer les migrations : npm run migrate.
  5. Démarrer : npm run dev (développement) ou npm run build && npm start (prod).

⚙️ Configuration

  • DEFAULT_DOMAIN : le domaine par défaut servant les liens courts.
  • JWT_SECRET : chaîne aléatoire pour signer les tokens d'authentification.
  • DISALLOW_REGISTRATION : à true pour un usage single-admin.
  • Ajouter un MAX_VISITS_PER_LINK pour limiter l'abus.
  • Brancher un service de mail (SMTP) pour la récupération de mot de passe.
  • RECAPTCHA_* : à activer pour bloquer les inscriptions automatisées.

🔄 Alternatives

Open Source

  • app-shlink — équivalent mature PHP avec REST API et géoloc GeoLite2.
  • app-dub — plateforme marketing complète, plus riche mais plus lourde.
  • app-yourls — pionnier PHP, écosystème de plugins étendu.
  • app-sink — Rust, single binary, analytics no-tracking.

Propriétaires (ce que cette app remplace)

  • bit.ly — leader freemium.
  • cutt.ly — custom domain et analytics, freemium.
  • short.io — orienté marque blanche.
  • rebrand.ly — link management avec retargeting.

🔐 Sécurité

  • JWT secret : long, aléatoire, jamais exposé publiquement.
  • HTTPS strict : service exposé, ne jamais servir en HTTP.
  • reCAPTCHA : activer sur l'inscription et la création de liens pour bloquer les bots.
  • Rate limit : Kutt expose un middleware Express à configurer.
  • Backups Postgres : la base de liens doit être sauvegardée quotidiennement.
  • Disable registration : en environnement fermé, passer DISALLOW_REGISTRATION=true.

📚 Ressources

Pages Liées