# 26-03-06: Kwutty, my public instance of kutty to shorten links

## kwutty - URL, free public URL shortener

Someone on discord spoke about targeting a qr-code to as linktree so that we are sure we can always make sure the target is available and we don't need to reprint some cards.

<span style="white-space: pre-wrap;">So it got me thinking, i'm currently doing annoying HTTP only redirect that ppl often open as HTTPS and gets a warning for, plus it's not very readable (and it's publicly available on site like </span>[https://crt.sh/?q=frezlotte.ch](https://crt.sh/?q=frezlotte.ch)<span style="white-space: pre-wrap;">) so i digged a little using my trusty </span>[https://alternativeto.net](https://alternativeto.net)<span style="white-space: pre-wrap;"> to find a self hosted link shortener service, with telemetry, moderation, and the possibility to make link password protected.</span>

<span style="white-space: pre-wrap;">came across </span>[https://kutt.to/](https://kutt.to/), very well build and easy to setup, the compose.yml is as follow :

```yaml
services:
  kutt:
    build:
      context: .
    volumes:
       - ./db_data_sqlite:/var/lib/kutt
       - ./custom:/kutt/custom
    environment:
      DB_FILENAME: "/var/lib/kutt/data.sqlite"
    networks:
      - ${T_NETWORK:-tproxy}
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=tproxy"
      - "traefik.http.routers.${T_SERVICE_NAME}.rule=Host(`${T_SERVICE_SUBDOMAIN}.frezlotte.ch`) || Host(`${T_SERVICE_SUBDOMAIN}.zpy.ch`)"
      - "traefik.http.routers.${T_SERVICE_NAME}.entrypoints=${T_ENTRYPOINT:-websecure}"
      - "traefik.http.routers.${T_SERVICE_NAME}.tls.certresolver=myresolver"
      - "traefik.http.routers.${T_SERVICE_NAME}.service=kwutty"
      - "traefik.http.routers.${T_SERVICE_NAME}.middlewares=${T_MIDDLEWARES:- bouncer, umami, umami-feeder, anubis}"
      - "traefik.http.services.${T_SERVICE_NAME}.loadbalancer.server.port=${T_SERVICE_PORT}"

networks:
  tproxy:
    external: true
```

<span style="white-space: pre-wrap;">Like the usual, i'm using </span>[traefik](https://traefik.io/traefik), with all my usual middlewares

I'm probably add a ipallowlist middleware on JUST the admin path but i'm not sure how doable it is yet

There's a umami option in kutt but i decided to not use it since i have a umami-feeder (automatically register websites in umami) so the work was already working.

The admin page listing link looks like that :

[![image.png](https://wiki.frezlotte.ch/uploads/images/gallery/2026-03/scaled-1680-/oDdzrZSNiIzQ5GKo-image.png)](https://wiki.frezlotte.ch/uploads/images/gallery/2026-03/oDdzrZSNiIzQ5GKo-image.png)

Simple view count, and if you click on the purple button, you get there :

[![image.png](https://wiki.frezlotte.ch/uploads/images/gallery/2026-03/scaled-1680-/aUMFZ1VDccOnhbic-image.png)](https://wiki.frezlotte.ch/uploads/images/gallery/2026-03/aUMFZ1VDccOnhbic-image.png)

I'll do a umami blog post separately, but this was kutty, as Kwutty

Take care of yourself ! 🩵🩷🤍🩷🩵