133 lines
4.8 KiB
Markdown
133 lines
4.8 KiB
Markdown
---
|
|
title: Chhoto URL
|
|
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/SinTan1729/chhoto-url]
|
|
---
|
|
|
|
# 🔗 Chhoto URL
|
|
|
|
> **Chhoto URL** est un raccourcisseur d'URL ultra-léger écrit en Rust, conçu pour être "blazingly fast" et tourner sur des configurations très modestes (RPi, NanoPi, vieux laptop).
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | https://github.com/SinTan1729/chhoto-url |
|
|
| **GitHub** | https://github.com/SinTan1729/chhoto-url |
|
|
| **License** | MIT |
|
|
| **Langage principal** | Rust |
|
|
| **Étoiles GitHub** | 856 |
|
|
| **Dernière MAJ** | 2026-06-07 |
|
|
| **Catégorie** | [[cat-url-shortener]] |
|
|
|
|
## 📝 Description
|
|
|
|
Chhoto URL (chhoto signifie "petit" en bengali) est un raccourcisseur d'URL minimaliste écrit en Rust, dont la philosophie est la **simplicité radicale** et la **performance**. Le binaire compilé pèse quelques mégaoctets, consomme peu de RAM et démarre en quelques millisecondes, ce qui en fait un choix idéal pour les utilisateurs qui veulent auto-héberger un shortener sur du matériel modeste.
|
|
|
|
L'application couvre l'essentiel : raccourcissement avec slugs personnalisés, gestion de liens, support multi-domaine, protection par mot de passe, expiration, et un mode "API" simple. Elle inclut également une **page de statistiques par lien** affichant les visites de manière anonyme. L'UI est volontairement simple (HTML/CSS statique) et n'embarque pas de framework JS lourd.
|
|
|
|
Le projet est activement maintenu par SinTan1729. C'est le choix de la sobriété logicielle : pour ceux qui trouvent Kutt ou Dub trop lourds, Chhoto URL fait le job en consommant 1/10e des ressources. Idéal en RPi, en NAS, ou comme service de bord sur un serveur déjà chargé.
|
|
|
|
## 🚀 Installation
|
|
|
|
### Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
services:
|
|
chhoto-url:
|
|
image: ghcr.io/sintan1729/chhoto-url:latest
|
|
container_name: chhoto-url
|
|
restart: unless-stopped
|
|
networks:
|
|
- web
|
|
- internal
|
|
environment:
|
|
- DATABASE_URL=postgresql://chhoto:***@db:5432/chhoto
|
|
- BIND_ADDRESS=0.0.0.0:4567
|
|
- SLUG_LENGTH=6
|
|
- SITE_URL=https:...om
|
|
- SECRET=*** labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.chhoto.rule=Host(`go.example.com`)"
|
|
- "traefik.http.routers.chhoto.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.chhoto.loadbalancer.server.port=4567"
|
|
depends_on:
|
|
- db
|
|
|
|
db:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
networks:
|
|
- internal
|
|
environment:
|
|
- POSTGRES_USER=chhoto
|
|
- POSTGRES_PASSWORD=*** - POSTGRES_DB=chhoto
|
|
volumes:
|
|
- chhoto-db:/var/lib/postgresql/data
|
|
|
|
networks:
|
|
web:
|
|
external: true
|
|
internal:
|
|
|
|
volumes:
|
|
chhoto-db:
|
|
```
|
|
|
|
### Installation manuelle
|
|
|
|
1. `git clone https://github.com/SinTan1729/chhoto-url.git`
|
|
2. Prérequis : Rust 1.74+, PostgreSQL 13+ (ou SQLite).
|
|
3. Compiler : `cargo build --release`
|
|
4. Lancer : `./target/release/chhoto-url`
|
|
|
|
## ⚙️ Configuration
|
|
|
|
- `BIND_ADDRESS` : interface d'écoute (par défaut `0.0.0.0:4567`).
|
|
- `SLUG_LENGTH` : longueur des slugs générés (5-8 recommandé).
|
|
- `SITE_URL` : URL publique pour les liens et l'UI.
|
|
- `SECRET` : chaîne aléatoire pour signer les sessions.
|
|
- Activer le rate-limiting côté reverse proxy (Traefik, Caddy).
|
|
|
|
## 🔄 Alternatives
|
|
|
|
### Open Source
|
|
- [[app-sink]] — autre Rust, plus riche (analytics, multi-domaine).
|
|
- [[app-shlink]] — PHP mature, REST API, géoloc GeoLite2.
|
|
- [[app-kutt]] — TypeScript, UI plus moderne, plus lourd.
|
|
- [[app-slash]] — Go, single binary, simple.
|
|
|
|
### Propriétaires (ce que cette app remplace)
|
|
- **bit.ly** — leader freemium.
|
|
- **tinyurl.com** — historique, UI vieillissante.
|
|
- **is.gd** — minimaliste, sans analytics.
|
|
- **t.co** (Twitter) — intégré mais opaque.
|
|
|
|
## 🔐 Sécurité
|
|
|
|
- **SECRET** : chaîne aléatoire longue, à protéger.
|
|
- **HTTPS strict** : service exposé, ne jamais servir en HTTP.
|
|
- **Rate limit** : Traefik/Caddy middleware pour bloquer les abus de création.
|
|
- **Backups DB** : la table des liens est petite mais critique.
|
|
- **Mises à jour Rust** : l'image upstream est régulièrement rebuildée, suivre les releases.
|
|
|
|
## 📚 Ressources
|
|
|
|
- Site officiel : https://github.com/SinTan1729/chhoto-url
|
|
- Code source : https://github.com/SinTan1729/chhoto-url
|
|
- Documentation : https://github.com/SinTan1729/chhoto-url#readme
|
|
- Releases : https://github.com/SinTan1729/chhoto-url/releases
|
|
- Communauté : https://github.com/SinTan1729/chhoto-url/discussions
|
|
|
|
## Pages Liées
|
|
|
|
- [[cat-url-shortener|URL Shortener]] — Catégorie complète
|
|
- [[app-sink]] — Voisin Rust plus complet
|
|
- [[app-slash]] — Voisin Go minimaliste
|
|
- [[recettes-docker-compose]] — Templates Docker
|