基于 Node.js + MongoDB 技术栈的小众开源短链接程序 —— Lynx 全面解析与部署指南

Lynx是一款基于Node.js+Express+MongoDB技术栈的小众开源短链接程序。该程序支持自定义Slug、多级路径、JSON/CSV数据导入导出、访问统计及Umami统计集成。部署提供两种方案:Node.js环境需分别构建Vue前端与Express后端;Docker部署更为便捷,通过环境变量配置端口、域名、数据库等参数。首次访问时首个注册用户自动成为管理员,支持API集成与HTTPS。尽管项目仓库已归档,但功能完整稳定,适合需要轻量级短链接服务的用户。作者后期因Shlink自带统计功能和PostgreSQL兼容性更优而转用其他方案。

前言:为什么选择 Node.js + MongoDB 的短链接系统?

开源的短链接程序有很多,像 YOURLSShlink 等大多采用 PHP + MySQL 技术栈。
但我之前的服务器配置一般,再加上自己写的小玩具使用的是 Node.js + MongoDB,这些环境已经装在服务器上了,因此更倾向于寻找一款同样基于这套技术栈的短链接程序。

搜索了很久才找到这么一款基于 Express + MongoDB 的短链接程序——Lynx
这个开源项目非常小众,Star 数只有两百多。更巧的是,我用了一个多月后,它的仓库就直接归档了,到现在甚至连网页文档也进不去了……
不过好在这个项目的完成度和稳定性都还可以,用了一年多没出过什么问题,配套的文档也是开源的,可以直接去仓库里看 Markdown 文件。

我对于短链接的需求非常简单,主要就是用它在文章里跳转网盘链接,方便链接失效的时候直接替换,不用重新编辑文章。

满足以下几点就够用了:

  • 支持自定义 Slug
  • 支持 Slug 包含多个斜杠
  • 支持导出 JSON 或者 CSV,方便数据迁移

Lynx 正好满足以上这些功能,并且还支持统计短链接的 访问次数,也可以直接对接 Umami 记录更加详细的统计数据。
更重要的是,Lynx 部署起来简单,页面也很清爽,没有什么多余的功能。
对于我的需求来说可以说是比较完美了!


安装 Lynx:Node.js 与 Docker 双方案

方式一:直接安装(Node.js 环境)

如果你和我一样服务器已经有 Node.js 环境了,可以直接安装 Lynx。
对于熟悉 Node.js 的用户来说,安装还是比较容易的,下面简单描述一下安装思路。

Lynx 前端使用的是 Vue,后端使用的是 Express,因此需要先将前端构建后,再启动后端。

1. 拉取源码

git clone https://github.com/Lynx-Shortener/Lynx

2. 构建前端

cd Lynx/frontend && pnpm i && pnpm build

3. 配置环境变量并启动后端

配置好环境变量后,启动后端即可。


方式二:使用 Docker 一键部署(推荐)

对于一般用户,还是建议直接使用 Docker 运行,省去了安装 Node.js 环境和构建前端的步骤,更加方便。

services:
  lynx:
    image: jackbailey/lynx:latest
    container_name: lynx
    restart: unless-stopped
    network_mode: host
    environment:
      - EXPRESS_PORT=3000 # 端口
      - DOMAIN=https://go.example.com

      # MongoDB 数据库
      - DB_HOST=127.0.0.1
      - DB_PORT=27017
      - DB_USER=admin
      - DB_PASSWORD=<password>

      - HOME_REDIRECT=/dash/overview
      - ENABLE_REGISTRATION=false
      - NODE_ENV=production
      - DEMO=false

      # 生成随机字符并填入
      - JWT_KEY=<random> 
      - USE_HTTPS=true
      - CORS=*

      - URL_LENGTH=8
      - URL_SET=standard
      - URL_ONLY_UNIQUE=false

      - UMAMI_SITEID=<site_id>
      - UMAMI_URL=https://umami.is/script.js
      # Umami 需要开启前端重定向,会略微增加跳转延迟
      - FORCE_FRONTEND_REDIRECT=true

初始化 Lynx:首次登录与管理员注册

给域名做好反代后,访问 https://go.example.com 会自动跳转到登录页面,点击下方的 “Register” 跳转到注册页面。

登录

尽管我们在环境变量中设置 ENABLE_REGISTRATION=false 不允许注册,但是第一个用户还是可以注册的,因此不需要调整环境变量,并且这第一个用户会自动设置成管理员。

注意: 密码要求大于 12 个字符并且包含大小写、数字与符号。

注册


功能演示:Lynx 的核心功能展示

1. 添加短链接

点击右上角的 “Add Link” 就可以添加一个短链接,上方的 “Destination URL” 为跳转的目标。
下方的 “Custom Slug” 可以自己填写,也可以直接留空。

添加短链接

接着就可以在首页看到刚才添加的短链接了。
如果你没有填写 Slug,系统会自动生成,可以在环境变量中通过 URL_LENGTHURL_SET 这两项来修改自动生成的 URL 长度与字符。

主页


2. 导入与导出短链接数据

Lynx 支持从 ShlinkYOURLS 以及 Lynx 自身中导入短链接,直接将对应的文件上传即可。

导入

同样的,Lynx 自然也支持导出,可以直接将所有短链接导出到 JSON 或者 CSV 中。
导出的文件中不但包含了 链接和 Slug,还有 创建、修改的时间 以及 访问次数

导出


3. 生成二维码

点击链接后面的三个小点还可以获取到对应的二维码,可以直接右键将其保存到本地使用。

二维码


总结:Lynx 的优缺点与使用体验

以上基本就是 Lynx 的所有功能了。
相比于其他成熟的项目来说功能不算丰富,但最核心的短链接功能使用体验还是不错的。
并且 Lynx 也是支持 API 的,如果你需要将它集成到你的程序中,可以自行查阅一下文档。

不过目前我已经切换到了 Shlink + PostgreSQL,原因主要有两点:

  1. Shlink 自带统计功能,不需要配合 Umami,也就不需要前端跳转,跳转速度更快;
  2. 大部分程序使用 PostgreSQL,备份数据库时更方便。

常见问题解答(FAQ)

Q1:Lynx 还能正常使用吗?
A:可以。虽然仓库被归档,但项目本身功能完整,依然可以正常部署与使用。

Q2:Lynx 支持 HTTPS 吗?
A:支持。只需在环境变量中设置 USE_HTTPS=true 并配置反向代理即可。

Q3:可以多用户使用吗?
A:可以。第一个注册用户为管理员,可创建其他用户账号。

Q4:如何备份 Lynx 数据?
A:直接导出 JSON 或 CSV 文件,或备份 MongoDB 数据库。

Q5:Lynx 是否支持 API?
A:支持。可通过 REST API 创建、查询、删除短链接,适合自动化集成。

原创文章,作者:KUKU,如若转载,请注明出处:https://wankewu.com/linux/1182.html

(0)
上一篇 2天前

相关推荐

评论列表(1条)

  • 紫衣狐仙
    紫衣狐仙 2025年12月13日 12:43

    这项目居然归档了?还好功能稳!