一个基于 Rust 生态构建的高性能、轻量级书签管理 Web 应用。
- 用户名:
guest- 密码:
guest
| 功能 | 截图 |
|---|---|
| 🏠 主页 | ![]() |
| ➕ 添加书签 | ![]() |
| ✏️ 编辑书签 | ![]() |
| 📥 导入书签 | ![]() |
| 功能 | 截图 |
|---|---|
| ➕ 添加书签 | ![]() |
| ⚙️ 插件设置 | ![]() |
项目根目录提供了已编译好的插件包 bookmark-clipper-1.1.0-chrome.zip,按以下步骤安装:
- 下载
bookmark-clipper-1.1.0-chrome.zip到任意目录 - 打开 Chrome/Edge 浏览器,访问
chrome://extensions(Edge 是edge://extensions) - 开启右上角的「开发者模式」
- 拖动下载好的插件压缩包到 Chrome 浏览器的扩展程序页面
- 插件安装成功后,点击浏览器工具栏的插件图标打开设置页
- 点击插件右上角的设置图标进入设置页面
- 在设置页面中,填写你的书签库地址(如
https://bks.artista.cc)、用户名、密码,然后点击保存 - 配置完成后,可以通过以下方式收藏书签:
- 点击插件图标:打开弹窗,编辑标题、选择分类、添加标签后保存
- 右键菜单:在网页或链接上右键 →「收藏到书签库」,快速保存
如需修改插件功能,进入 browser-ext 目录进行开发:
cd browser-ext
bun install
bun run dev # Chrome 开发模式,热重载bun run dev 之后,按照终端提示在 chrome://extensions 里加载 .output/chrome-mv3-dev 目录。
打包插件:
bun run build # 编译产物在 .output/chrome-mv3
bun run zip # 打包成 .zip 文件- 极致性能:基于 Rust 的
axum框架与 PostgreSQL 构建,内存占用低、响应速度快。 - 现代化全栈体验:结合
htmx与askama模板引擎,无需引入重量级前端框架即可实现无刷新的动态交互。 - 优雅 UI:采用 TailwindCSS 构建,界面现代、布局响应式。
- 浏览器插件支持:配套浏览器插件,一键保存当前页面书签。
- 生产级部署:内置开箱即用的 Nginx、Systemd 配置,并支持多环境配置分离。
- 后端:Rust(
axum) - 数据库:PostgreSQL + Redis(用于缓存与会话管理)
- 模板引擎:Askama(编译期类型安全的 HTML 模板)
- 前端:htmx + TailwindCSS + Bun(构建期工具)
如需在本地进行开发或二次开发,请确保已安装 Rust、Bun 和 PostgreSQL。
在 PostgreSQL 中创建名为 bookmark 的数据库,并执行迁移脚本:
psql -U postgres -d postgres -c "CREATE DATABASE bookmark;"
# 执行数据库迁移
psql -U postgres -d bookmark < migrations/20260624051018_init.sql项目使用 bun 与 TailwindCSS 管理前端依赖并编译静态资源:
bun install
bun run devcargo run🔑 默认管理员账号 服务启动后,访问
http://127.0.0.1:8000,使用以下默认凭证登录:
- 用户名:
admin- 密码:
admin(建议登录后立即修改)
使用 Docker 部署最简单,无需手动安装 Rust / PostgreSQL / Redis,只需要 Docker 和 Docker Compose。
# 1. 只需要 compose 文件和环境变量文件,不需要克隆整个仓库
mkdir bookmark-manager && cd bookmark-manager
curl -O https://raw.githubusercontent.com/ikeeplearn/bookmark-axum/main/docker-compose.ghcr.yml
curl -O https://raw.githubusercontent.com/ikeeplearn/bookmark-axum/main/.env.example
# 2. 复制环境变量文件并修改
cp .env.example .env
nano .env # 至少修改 POSTGRES_PASSWORD 和 API_TOKEN_SECRET
# 3. 启动(直接从 GHCR 拉取镜像,几十秒搞定)
docker compose -f docker-compose.ghcr.yml up -d# 1. 克隆仓库
git clone https://github.com/ikeeplearn/bookmark-axum.git
cd bookmark-axum
# 2. 复制环境变量文件并修改
cp .env.example .env
nano .env # 至少修改 POSTGRES_PASSWORD 和 API_TOKEN_SECRET
# 3. 构建并启动(Rust 编译较慢,第一次可能要几分钟)
docker compose up -d --build
# 4. 查看日志,确认启动成功
docker compose logs -f app启动完成后访问 http://your-server-ip:8000,使用默认账号登录:
| 用户名 | 密码 |
|---|---|
admin |
admin |
更详细的 Docker 使用说明请参考 DOCKER_DEPLOY.md。
生产环境部署十分简单,只需从 Release 页面下载对应的压缩包即可。
从 Release 页面下载 bookmark.zip,并解压到服务器目标目录(如 /app/bookmark):
unzip bookmark.zip -d /app/bookmark
cd /app/bookmark解压后的目录结构如下:
.
├── bookmark # 编译好的二进制可执行文件
├── ddl.sql # 数据库初始化脚本
├── configuration/
│ └── base.yaml # 配置文件
├── public/ # 静态资源目录(JS / CSS / 图片)
├── nginx.conf # Nginx 示例配置
└── bookmark.service # Systemd 服务配置文件
编辑 configuration/base.yaml,根据服务器实际情况调整路径与凭证:
# 应用程序配置
application:
# HTTP 服务监听端口
port: 8000
# HTTP 服务监听地址
host: 0.0.0.0
# 静态资源目录的绝对路径(JS/CSS/图片等)
static_directory: "/app/bookmark/public" # 修改为实际的绝对路径
# 文件上传目录的绝对路径
upload_directory: "/app/bookmark/upload" # 修改为实际的上传路径
# 图片转换为 WebP 时的压缩质量,取值范围 0.0-100.0(数值越高质量越好,文件越大)
image_quality: 80.0
# 数据库配置
database:
# PostgreSQL 主机地址
host: "127.0.0.1"
# PostgreSQL 端口
port: 5432
# PostgreSQL 用户名
username: "postgres"
# PostgreSQL 密码
password: "your_secure_password"
# PostgreSQL 数据库名
database_name: "bookmark"
# 是否需要 SSL 连接
require_ssl: false
# Redis 连接地址(用于缓存和会话管理)
redis_uri: "redis://127.0.0.1:6379"
# API Token 配置(用于浏览器插件等外部应用访问)
api_token:
# 用于签名 Token 的密钥(生产环境请使用随机生成的密钥)
secret_key: "very-long-and-random-secret-key"
# Token 过期时间(支持的单位:s/秒,m/分钟,h/小时,d/天)
expire_time: 1h确保生产环境的 PostgreSQL 已创建 bookmark 数据库,并执行迁移脚本:
psql -U postgres -d bookmark < ddl.sql将自带的 bookmark.service 移动到系统的 systemd 目录并启动:
# 1. 复制服务文件
sudo cp bookmark.service /etc/systemd/system/
# 2. 重新加载 systemd 配置
sudo systemctl daemon-reload
# 3. 启动服务并设置开机自启
sudo systemctl enable --now bookmark
# 4. 查看运行状态
sudo systemctl status bookmark💡 提示:请确保
bookmark.service中的ExecStart与WorkingDirectory指向实际的解压路径(如/app/bookmark)。
如需启用自定义域名或 SSL,可参考附带的 nginx.conf 进行配置,并将其合并到你的 Nginx 配置中(通常位于 /etc/nginx/sites-available/):
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}配置完成后,重启 Nginx:
sudo nginx -s reload服务启动成功后,请使用系统预设的管理员账号首次登录:
| 字段 | 初始值 |
|---|---|
| 用户名(Username) | admin |
| 密码(Password) | admin |
⚠️ 安全提示:为保障数据安全,请在首次登录成功后立即前往设置页面修改默认密码。
本项目采用 MIT 协议开源。
如有疑问,请联系开发者。






