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

4.8 KiB


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é)

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

Pages Liées