Files
2026-06-09 18:40:21 +02:00

144 lines
5.4 KiB
Markdown

---
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é)
```yaml
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
- Site officiel : https://kutt.it
- Code source : https://github.com/thedevs-network/kutt
- Documentation : https://github.com/thedevs-network/kutt#readme
- API reference : https://github.com/thedevs-network/kutt#api
- Extension Chrome : https://chrome.google.com/webstore/detail/kutt
- Communauté : https://github.com/thedevs-network/kutt/discussions
## Pages Liées
- [[cat-url-shortener|URL Shortener]] — Catégorie complète
- [[app-shlink]] — Alternative PHP
- [[app-dub]] — Alternative plus complète côté marketing
- [[recettes-docker-compose]] — Templates Docker