Favicon of Kutt

Kutt

Shorten URLs, set custom domains, and track link performance with a self-hosted platform. Manage users, customize themes, and integrate via a RESTful API.

Take control of your link management with a modern, self-hosted URL shortener designed for flexibility. Whether you need simple redirects or a comprehensive link-sharing system, this platform provides the necessary tools without complex configurations. Easily set up custom domains, track private statistics, and manage user access through a dedicated admin interface.

Key Features:

  • Custom Link Management: Set custom URLs, assign passwords, add descriptions, and define expiration times for your links.
  • Self-Hosted Flexibility: Deploy easily using Docker with support for databases like SQLite, Postgres, and MySQL.
  • Advanced Authentication: Secure your instance with OpenID Connect (OIDC) login and control public registration.
  • Extensive Customization: Personalize the interface with custom themes, CSS, and HTML templates to match your brand.
  • Developer-Friendly: Integrate seamlessly into workflows using the comprehensive RESTful API and browser extensions.

Directory Structure

kutt
postgres-data
redis-data
.env
docker-compose.yml

docker-compose.yml

services:
  kutt:
    image: kutt/kutt
    container_name: kutt
    restart: always
    ports:
      - "3000:3000"
    environment:
      - SITE_NAME=Kutt
      - DEFAULT_DOMAIN=${DEFAULT_DOMAIN}
      - DB_HOST=postgres
      - DB_PORT=5432
      - DB_NAME=kutt
      - DB_USER=${DB_USER}
      - DB_PASSWORD=${DB_PASSWORD}
      - DB_SSL=false
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - REDIS_PASSWORD=${REDIS_PASSWORD}
      - JWT_SECRET=${JWT_SECRET}
      - ADMIN_EMAILS=${ADMIN_EMAILS}
      - MAIL_HOST=${MAIL_HOST}
      - MAIL_PORT=${MAIL_PORT}
      - MAIL_SECURE=${MAIL_SECURE}
      - MAIL_USER=${MAIL_USER}
      - MAIL_FROM=${MAIL_FROM}
      - MAIL_PASSWORD=${MAIL_PASSWORD}
      - REPORT_EMAIL=${REPORT_EMAIL}
    depends_on:
      - postgres
      - redis

  postgres:
    image: postgres:12-alpine
    container_name: kutt_postgres
    restart: always
    environment:
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASSWORD}
      - POSTGRES_DB=kutt
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

  redis:
    image: redis:alpine
    container_name: kutt_redis
    restart: always
    command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}"]
    volumes:
      - ./redis-data:/data

.env

DEFAULT_DOMAIN=localhost:3000
DB_USER=user
DB_PASSWORD=secure_database_password
REDIS_PASSWORD=secure_redis_password
JWT_SECRET=change_this_to_a_random_secure_string
ADMIN_EMAILS=admin@example.com
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_SECURE=false
MAIL_USER=user
MAIL_FROM=no-reply@example.com
MAIL_PASSWORD=mail_password
REPORT_EMAIL=report@example.com
Categories:

Share:

Ad
Favicon

 

  
 

Similar to Kutt

Favicon

 

  
  
Favicon

 

  
  
Favicon