
项目概述
Kutt是一个基于Web技术的开源URL缩短服务平台,具备自定义域名绑定、点击数据统计、链接有效期管理和访问密码保护等实用功能。
项目源码地址:https://github.com/thedevs-network/kutt

Docker Compose配置示例:
services:
kutt:
image: docker.1ms.run/kutt/kutt
volumes:
- ./data/db:/var/lib/kutt
- ./data/kutt:/kutt/custom
environment:
DB_FILENAME: /var/lib/kutt/data.sqlite
JWT_SECRET: 1d8fb2fa-12f6-11f0-a715-a759b5128751 # 加密令牌,可自定义设置,配置完成后不建议修改
DEFAULT_DOMAIN: nasbump.cn # 指定生成短链接时使用的域名
# DEFAULT_DOMAIN: 192.168.31.30:3000 # 若无域名,可使用NAS IP地址配合端口号(注意:此配置可能存在兼容性问题)
ports:
- 3000:3000
考虑到用户经常反馈镜像拉取困难和加速问题,此compose文件已集成docker镜像加速地址:docker.1ms.run,用户可直接使用该地址,但需注意此加速源来自网络收集,稳定性无法长期保证。
Kutt核心功能
当前公共短链服务平台普遍存在三个主要问题:
1️⃣ 数据安全风险:用户访问行为数据可能被第三方平台追踪收集
2️⃣ 品牌形象缺失:无法使用自定义域名,影响专业形象建立
3️⃣ 功能限制较多:高级统计功能和API调用通常需要付费解锁
这正是Kutt项目开发的初衷——由The Devs Network团队打造的开源短链工具,让用户能在极短时间内搭建个人专属的短链服务系统。
核心功能详细解析:
📌 基础功能(媲美商业付费服务)
- 智能链接压缩:支持批量生成和API接口调用(集成代码仅需三行)
- 多域名管理:可同时配置和管理多个自定义域名
- 数据统计面板:实时展示设备类型、地理分布等二十多个维度的访问数据
🚀 特色功能(开源社区共同开发成果)
- 自销毁链接:设置24小时有效期或单次点击后自动失效,有效保护敏感信息
- 密码保护机制:可为特定链接添加访问密码,实现权限控制
安装与使用步骤
通过上述docker-compose配置文件启动服务后,在浏览器中访问:http://<nas-ip>:3000即可进入系统。首次访问时需要创建管理员账户:

完成注册信息填写后即可登录系统。如果遇到点击登录按钮后返回登录界面的情况,这是由于浏览器安全机制认为登录地址不安全而自动清除登录信息所致。
解决此问题的方法较为简单,需要配置前置nginx代理并强制使用HTTPS协议。nginx配置示例如下:
server {
listen 8820 ssl;
server_name _;
ssl_certificate /etc/nginx/ssl/kutt.pem; # 自签名证书
ssl_certificate_key /etc/nginx/ssl/kutt.key;
ssl_session_cache shared:SSL:100m;
ssl_session_timeout 5h;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:3000;
}
}
配置完成后重启nginx服务,同时修改docker-compose文件中的对应行:DEFAULT_DOMAIN: <nas-ip>:8820(若拥有域名则使用域名)。然后在浏览器中访问:https://<nas-ip>:8820。
现在可以尝试将长链接转换为短链接:

此时生成的短链接地址为:nasip:8820,可读性仍然较差。如果拥有域名,建议在compose配置文件中直接设置域名。也可以在系统启动后,通过设置页面添加自定义域名:

配置自定义域名后,新生成的短链接将使用设置的域名:

总结与建议
- Kutt支持自定义域名功能非常实用,能有效提升品牌专业性
- 如果不需要自建服务,直接使用官方提供的在线服务:
https://kutt.it/也是不错的选择