Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
+144
View File
@@ -0,0 +1,144 @@
---
title: Dub
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/dubinc/dub]
---
# 🔗 Dub
> **Dub** est une plateforme open source de gestion de liens courts pensée pour les équipes marketing, avec UTM builder, QR codes dynamiques, analytique détaillé et API performante.
## 📋 Informations Générales
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://dub.co |
| **GitHub** | https://github.com/dubinc/dub |
| **License** | AGPL-3.0 |
| **Langage principal** | TypeScript |
| **Étoiles GitHub** | 23 658 |
| **Dernière MAJ** | 2026-06-07 |
| **Catégorie** | [[cat-url-shortener]] |
## 📝 Description
Dub est bien plus qu'un simple raccourcisseur d'URL : c'est une **plateforme de link management** orientée équipes marketing, conçue pour suivre, attribuer et optimiser les liens courts utilisés dans les campagnes. Le projet a démarré comme alternative open source à bit.ly et s'est étoffé pour devenir une suite complète d'attribution (UTM builder, deep links, QR codes dynamiques) avec une API publique.
L'interface est moderne (Next.js, Tailwind) et propose un dashboard temps réel avec géolocalisation, référents, devices, browsers. Le moteur de redirection est optimisé (cache en mémoire, edge-ready) et gère plusieurs domaines personnalisés, slugs personnalisés, expiration programmée, mots de passe, et link previews désactivables.
La version auto-hébergée (Dub OSS) garde 80% des fonctionnalités du SaaS et supporte l'authentification par email, OAuth GitHub/Google, l'API REST, les webhooks et l'export CSV. L'image Docker officielle embarque Postgres, Redis, Tinybird (optionnel) et le worker d'agrégation.
## 🚀 Installation
### Docker Compose (recommandé)
```yaml
services:
dub:
image: dubinc/dub:latest
container_name: dub
restart: unless-stopped
networks:
- web
- internal
environment:
- NEXT_PUBLIC_APP_DOMAIN=go.example.com
- DATABASE_URL=postgresql://dub:pass@db:5432/dub
- REDIS_URL=redis://redis:6379
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
- NEXTAUTH_URL=https://go.example.com
- GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}
- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}
labels:
- "traefik.enable=true"
- "traefik.http.routers.dub.rule=Host(`go.example.com`)"
- "traefik.http.routers.dub.tls.certresolver=letsencrypt"
- "traefik.http.services.dub.loadbalancer.server.port=3000"
depends_on:
- db
- redis
db:
image: postgres:16-alpine
restart: unless-stopped
networks:
- internal
environment:
- POSTGRES_USER=dub
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=dub
volumes:
- dub-db:/var/lib/postgresql/data
redis:
image: redis:7-alpine
restart: unless-stopped
networks:
- internal
volumes:
- dub-redis:/data
networks:
web:
external: true
internal:
volumes:
dub-db:
dub-redis:
```
### Installation manuelle
> Dub OSS fournit un guide pas à pas : cloner le repo, installer pnpm, configurer `.env`, exécuter Prisma migrate puis `pnpm build && pnpm start`. Réservé au développement ou à un environnement custom.
## ⚙️ Configuration
- Définir `NEXT_PUBLIC_APP_DOMAIN` sur le domaine personnalisé servant les liens courts.
- Configurer OAuth GitHub/Google dans `.env` (variables `GITHUB_CLIENT_ID`).
- Exécuter les migrations Prisma au premier démarrage.
- Brancher Tinybird (optionnel) pour l'analytique temps réel et la géolocalisation IP.
- Activer la protection du `/api` par rate limit (middleware Next.js intégré).
## 🔄 Alternatives
### Open Source
- [[app-shlink]] — l'institution PHP, conteneur natif, REST API, géolocalisation via GeoLite2.
- [[app-kutt]] — moderne TypeScript, custom domain, UI soignée, plus simple que Dub.
- [[app-yourls]] — pionnier PHP/MySQL, écosystème de plugins riche.
- [[app-sink]] — Rust, single binary, déploiement Cloudflare ou serveur léger.
### Propriétaires (ce que cette app remplace)
- **bit.ly** — leader historique, freemium agressif, analytics fermés.
- **short.io** — custom domain et branded links, freemium.
- **rebrand.ly** — link management orienté marque blanche.
- **BL.INK** — plateforme analytics avancée, onéreuse.
## 🔐 Sécurité
- **OAuth obligatoire** : activer au moins GitHub/Google, ne pas laisser l'inscription ouverte en production.
- **Rate limiting** : la redirection d'URL est une cible classique de spam, activer CrowdSec ou le middleware intégré.
- **Backups Postgres** : la base de liens est précieuse, sauvegarder quotidiennement.
- **HTTPS strict** : service exposé publiquement, ne jamais servir en HTTP.
- **Secret rotation** : `NEXTAUTH_SECRET` doit être long et renouvelé annuellement.
## 📚 Ressources
- Site officiel : https://dub.co
- Code source : https://github.com/dubinc/dub
- Documentation : https://dub.co/docs
- Démo : https://app.dub.co
- Self-hosting guide : https://github.com/dubinc/dub/blob/main/self-host.md
- Communauté : https://github.com/dubinc/dub/discussions
## Pages Liées
- [[cat-url-shortener|URL Shortener]] — Catégorie complète
- [[app-shlink]] — Alternative mature PHP
- [[app-kutt]] — Alternative TypeScript plus simple
- [[recettes-docker-compose]] — Templates Docker