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:
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:/dataDEFAULT_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.comAuto-fetched about 22 hours ago
Auto-fetched about 22 hours ago