自托管短链接服务Snapp

什么是 Snapp ?

Snapp 是一款自托管 URL 缩短服务。能轻松缩短链接。借助 Snapp 的自托管功能,您能拥有完全的控制权,并根据您的要求创建简洁、可共享的链接。

使用 Snapp,您可以个性化链接结尾、监控链接的点击次数,设置链接的到期日期以提供额外的安全性。

官方将安装分为了三种情况:

  • 方式一:简易安装,这种方式不推荐,可能会遇到 CORS 问题,也不适合群晖;
  • 方式二:http 协议安装,如果只是在局域网使用,建议这种方式;
  • 方式三:https 协议安装,如果在互联网使用,建议采用这种方式;

下面的三种安装方式,都基于方式二,而 docker cli 还提供了方式三

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 uraniadev ,选择第一个 uraniadev/snapp,双击直接下载

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
3082 3000

环境

可变
ORIGIN 如果您遇到 CORS 问题,请务必设置 ORIGIN
PUBLIC_URL 如果您遇到 CORS 问题,请务必设置 PUBLIC_URL
NODE_ENV 不使用 HTTPS 协议的情况下进行自托管,请设置NODE_ENV=development

默认值如下

修改之后

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 运行容器(http协议)
docker run -d \
--restart unless-stopped \
--name snapp \
-p 3082:3000 \
-e ORIGIN=http://192.168.0.197:3082 \
-e PUBLIC_URL=http://192.168.0.197:3082 \
-e NODE_ENV=development \
uraniadev/snapp:latest

# 运行容器(https协议)
docker run -d \
--restart unless-stopped \
--name snapp \
-p 3082:3000 \
-e ORIGIN=https://snapp.laosu.cf \
-e PUBLIC_URL=https://snapp.laosu.cf \
uraniadev/snapp:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3'

services:
snapp:
image: uraniadev/snapp:latest
container_name: snapp
restart: unless-stopped
ports:
- 3082:3000
environment:
- ORIGIN=http://192.168.0.197:3082
- PUBLIC_URL=http://192.168.0.197:3082
- NODE_ENV=development

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 snapp
mkdir -p /volume1/docker/snapp

# 进入 snapp 目录
cd /volume1/docker/snapp

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3082 就能看到主界面

下拉能看到前面提到的三种安装方式,还有一些参数,例如:启用用户注册禁用主页使用 Docker 持久化数据库

从左侧菜单 Login 进入注册账号

登录成功后,就是 Dashboard

点右上角 Shorten an url 来测试一下,没有设置过期时间和密码

SAVE 之后会回到 Dashboard 首页

访问地址就是我们前面设置的 PUBLIC_URL + /~/ + SHORT CODE,也就是 http://192.168.0.197:3082/~/i0ydl

访问的次数,在 USAGES 中会有体现

参考文档

urania-dev/snapp: Yet Another Url Shortner. | A simple excercise to learn Svelte, Svelte5 Runes, and Tabler.
地址:https://github.com/urania-dev/snapp

Snapp.li | Self-hostable Short Url
地址:https://snapp.li/

Snapp | Selfhosted Url Shortner : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/18chpe4/snapp_selfhosted_url_shortner/