news 2026/9/15 11:21:13

Kutt 自建 URL 短链服务完整指南:5 分钟跑通你的短链接系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kutt 自建 URL 短链服务完整指南:5 分钟跑通你的短链接系统

Kutt 自建 URL 短链服务完整指南:5 分钟跑通你的短链接系统

【免费下载链接】kuttFree Modern URL Shortener.项目地址: https://gitcode.com/GitHub_Trending/ku/kutt

Kutt 是一个免费开源的 URL 短链器,帮你把长链接变成短链接。它自托管、默认零配置,不用装数据库就能跑。你还能拿到完整功能:短链管理、点击统计、多用户、自定义域名和 REST API。

它凭什么值得试

一句话:Kutt 让你把短链服务握在自己手里,数据落在自己的服务器上。

它解决什么问题:

  • 第三方短链服务随时可能失效或封禁,链接说断就断
  • 想在官网、文档里放短链时,用自有域名更稳更专业
  • 想看点击数据,而公开服务往往不给细粒度统计

适合谁:

  • 想试水自托管的人:默认用 SQLite,一个数据库都不用装
  • 开发者:带完整 REST API,脚本和系统里都能调
  • 小团队:多用户、管理员面板、权限管理一应俱全

它从一开始就为自托管设计:开箱即零配置,支持 SQLite、Postgres、MySQL 多种数据库,注册、登录、匿名建链都能按需求开关。

5 分钟验证能不能跑通

先跑起来,再看功能。两条路,结果一样:浏览器打开 localhost:3000,能看到短链生成页面。

路线一:npm(已有 Node.js 20+ 的话推荐)

git clone https://gitcode.com/GitHub_Trending/ku/kutt cd kutt npm install npm run migrate npm run dev
  • npm install:安装依赖
  • npm run migrate:初始化数据库。默认 SQLite,不用任何配置
  • npm run dev:以开发模式启动,改动代码会自动重启

首次打开 http://localhost:3000,会提示你创建管理员账号。建好之后,贴一条长链接,就能拿到短链了。

路线二:Docker

装了 Docker 的话,一条命令起完整服务:

cd kutt docker compose up

默认配置用 SQLite,数据存进 db_data_sqlite 卷里,重启容器数据不丢。

核心用法拆解

跑通之后,有四个能力最实用。每个都配一个真实场景。

自定义短链、密码和有效期

场景:你有个很长的发布页链接要对外发,还想控制谁能打开。

怎么用:在首页贴长链接后,勾选两个选项:

  • Set custom URL:自己指定短链后缀,比如 s.example.com/report-2026
  • Set password:打开链接时要求输密码

还能设到期时间,到点自动失效。之后编辑、删除都在个人链接列表里操作。

私有统计

场景:链接发出去之后,想知道多少人点了、从哪来。

每条链接都有统计页,能看到点击量、来源页面和访客地区(基于 IP 地理位置,见 server/routes/link.routes.js 中的 stats 路由)。数据只属于你自己,不公开。

自定义域名

场景:短链现在显示的是部署服务器地址,又丑又不可信。

Kutt 支持绑自己的域名,比如 s.yoursite.com。配置完成之后,所有短链都走你的域名。注意两点:SSL 证书要自己签发,相关开关在 .example.env 的 CUSTOM_DOMAIN_USE_HTTPS。

REST API

场景:想在脚本或别的系统里自动创建短链。

Kutt 暴露了一组 RESTful API,用 API key 鉴权,覆盖创建、查询、删除链接和看统计。接口定义在 docs/api/,可以据此生成可交互文档。在个人设置页生成 API key,之后请求里带上它就能建链。

怎么让它更好用

以下建议都能直接落地,每条标了适用条件和取舍。

换 Postgres 或 MySQL

适用:生产环境、数据量变大之后。

取舍:SQLite 对单人使用足够,但团队共用或写量上来时,建议切到 Postgres/MySQL。直接用仓库里的 docker-compose.postgres.yml 配置,填好数据库凭证即可。

开 Redis 缓存

适用:短链高频被点击的场景。

取舍:命中跳转是最高频的操作,加一层缓存能明显降低数据库压力。设 REDIS_ENABLED=true 并给出 Redis 地址即可。流量很小可以不开,白占一个服务。

收紧生产配置

适用:任何要对公网开放部署。

  • JWT_SECRET 必填,用一段长随机字符串
  • 放在 Nginx 等反向代理后面时,把 TRUST_PROXY 设对。设错了访客可以伪造自己的 IP
  • 建议开 ENABLE_RATE_LIMIT,限制 API 被刷

换成自己的样子

适用:对外的场合需要品牌感。

把样式、图片、模板放进 custom/ 目录即可覆盖默认样式,不用改代码。放一个同名 styles.css,整体视觉就换掉了。

统一团队登录

适用:企业内部部署。

开启 OIDC 登录(OpenID Connect,一种统一登录协议),配合关闭注册,团队成员直接用公司账号进,不用在 Kutt 里单独管账号。

卡住了看这里

新手最容易踩的四个坑,每个都给原因和解法。

启动报错或页面打不开

原因:没跑 npm run migrate,数据库表还没建。

解法:先执行一次迁移命令再启动。走 Docker 路线的话,镜像启动时会自动迁移,不用管。

生产模式启动失败,提示 JWT_SECRET

原因:npm start 生产模式下 JWT_SECRET 是必填项,它负责签发登录凭证。

解法:在环境变量或 .env 文件里给一段长随机字符串,参考 .example.env。

匿名用户建不了链

原因:默认 DISALLOW_ANONYMOUS_LINKS 为 true,建链需要登录。

解法:两条路。要么开邮件服务(MAIL_ENABLED=true)放开注册;要么给每人发管理员账号,再各自用 API key 建链。

反代之后统计或地区不对

原因:服务器拿到的是代理的 IP,不是访客真实 IP,地区统计自然偏。

解法:TRUST_PROXY 按部署方式设置。有代理设 true;没有代理设 false,否则访客可以伪造 IP。

下一步行动清单

读完按顺序做就行:

  • 用两条路线之一跑通本地部署,确认能生成一条短链
  • 建好管理员账号,贴一条长链验证跳转正常
  • 在设置页生成 API key,用一次接口创建链接
  • 定下数据库方案:个人用 SQLite,团队换 Postgres
  • 上线前核对三项:JWT_SECRET、TRUST_PROXY、ENABLE_RATE_LIMIT
  • (可选)绑定自定义域名,给短链换上自己的域名
  • (可选)用 custom/ 目录做主题替换

完整配置项说明在 README.md,环境变量全表看 .example.env,API 定义在 docs/api/,随时可以对照着往下走。

【免费下载链接】kuttFree Modern URL Shortener.项目地址: https://gitcode.com/GitHub_Trending/ku/kutt

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 11:17:17

windows-metadata 深度指南:用 Rust 读写 ECMA-335 元数据的底层库解析

windows-metadata 深度指南:用 Rust 读写 ECMA-335 元数据的底层库解析 【免费下载链接】windows-rs Rust for Windows 项目地址: https://gitcode.com/GitHub_Trending/wi/windows-rs 本篇技术指南围绕 windows-rs 仓库中的 windows-metadata 底层元数据库展…

作者头像 李华
网站建设 2026/9/15 11:15:10

5阶段、33步、14个Agent:一文看懂AI-DLC的核心数字

5阶段、33步、14个Agent:一文看懂AI-DLC的核心数字 【免费下载链接】aidlc-workflows AI-Driven Life Cycle (AI-DLC) adaptive workflow steering rules for AI coding agents 项目地址: https://gitcode.com/GitHub_Trending/ai/aidlc-workflows AI-DLC&am…

作者头像 李华