使用 Shaarli 进行链接分享

June 24, 2026 · View on GitHub

简介

Shaarli 是一款极简的自托管书签应用,使用 PHP 编写。它提供了一种快速简单的方式来保存、组织和分享网页链接,支持标签和多种查看模式。

目录

  1. 功能概览
  2. 安装
  3. 配置
  4. 添加书签
  5. 组织与标签
  6. 搜索与浏览
  7. 订阅与导出
  8. 插件系统

功能概览

功能说明
书签保存 URL 并附带笔记
标签多标签组织
搜索全文搜索
订阅RSS/Atom 输出
导出多格式支持
插件可扩展功能
API基于 REST 的接口
主题可定制外观

安装

系统要求

组件最低要求推荐配置
PHP7.4+8.1+
Web 服务器Apache, NginxNginx
存储10 MB100 MB+
扩展mbstring, curl, gd建议全部
数据库无 (SQLite)SQLite

Docker 安装

# docker-compose.yml
services:
  shaarli:
    image: shaarli/shaarli:latest
    ports:
      - "8080:80"
    volumes:
      - ./data:/var/www/shaarli/data
    restart: unless-stopped

手动安装

步骤操作
1从 GitHub 下载发布版
2解压到 Web 目录
3设置 data 目录权限
4通过浏览器访问
5完成安装向导

Web 服务器配置

Nginx

server {
    listen 80;
    server_name shaarli.example.com;
    root /var/www/shaarli;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

Apache

<VirtualHost *:80>
    ServerName shaarli.example.com
    DocumentRoot /var/www/shaarli
    
    <Directory /var/www/shaarli>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

配置

配置文件

主配置存储在 data/config.php 中:

设置说明默认值
title站点标题Shaarli
header_link标题 URL/
language界面语言English
timezone服务器时区UTC
enabled_plugins活跃插件[]

安全设置

设置说明
username管理员用户名
password管理员密码(哈希)
login_protection暴力破解防护
ban_after封禁前失败次数
ban_duration封禁时间(分钟)

隐私设置

设置说明选项
private_links_by_default新链接默认私有true/false
hide_timestamps隐藏日期true/false
show_atom启用 Atom 订阅true/false
feed_need_login订阅需要认证true/false

添加书签

Web 界面

步骤操作
1点击"添加链接"按钮
2输入 URL
3添加标题(自动获取)
4添加描述
5添加标签(空格分隔)
6设置公开/私有
7点击"保存"

书签字段

字段说明必需
URL网址
标题链接标题
描述笔记
标签空格分隔的标签
私有可见性设置
日期自定义日期

浏览器书签小工具

功能说明
一键保存在任何页面点击书签小工具
自动填充URL 和标题预填
弹出窗口添加标签和笔记
安装拖到书签栏

批量导入

来源格式方式
浏览器导出HTML/JSON导入工具
DeliciousJSON导入工具
PinboardJSON导入工具
WallabagJSON导入工具
PocketCSV导入工具

组织与标签

标签系统

功能说明
多标签添加时空格分隔
标签层级使用下划线嵌套
标签同义词映射相似标签
标签计数每个标签的链接数

标签最佳实践

实践示例
一致命名javascript 而非 jsJavaScript
层级化programming_python, programming_rust
描述性tutorial 而非 tut
数量有限每个链接 3-5 个标签

标签管理

操作方法
查看所有标签标签页面
按标签过滤点击标签
多标签过滤选择多个标签
编辑标签编辑链接 > 修改标签
批量重命名标签管理工具

链接状态

状态说明可见性
公开所有人可见任何人
私有仅管理员可见已认证

搜索与浏览

搜索方式

方式说明示例
全文搜索标题 + 描述python tutorial
标签过滤按标签过滤#python
URL 搜索搜索 URLgithub.com
日期过滤按日期过滤2024-01-15

搜索操作符

操作符说明示例
#tag按标签过滤#javascript
!tag排除标签!deprecated
date:YYYY-MM-DD特定日期date:2024-01-15
url:domain按域名过滤url:github.com

浏览模式

模式说明
时间顺序最新优先
标签云可视化标签大小
每日逐日视图
图片墙缩略图网格
搜索结果过滤视图

订阅与导出

订阅类型

订阅URL格式
Atom/feed.atomAtom 1.0
RSS/feed.rssRSS 2.0
每日/feed/dailyAtom
标签/feed/tag/pythonAtom

订阅配置

设置说明
订阅页面大小每页条目数
订阅需要认证需要认证
订阅密码自定义订阅密码
显示 Atom启用/禁用订阅

导出格式

格式命令/方式使用场景
HTMLWeb 界面浏览器导入
JSONAPI备份、迁移
CSVAPI电子表格
Netscape文件浏览器导入

API 访问

# 获取所有链接
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  http://localhost:8080/api/v1/links

# 创建链接
curl -X POST \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","title":"Example","tags":["test"]}' \
  http://localhost:8080/api/v1/links

插件系统

可用插件

插件说明
Wallabagger从 Wallabag 导入
FeedInject从 RSS 添加链接
QRCode生成二维码
Share2Clipboard复制分享 URL
MarkdownExport导出为 Markdown
Readability提取文章内容

插件配置

步骤操作
1导航到插件管理
2启用所需插件
3配置插件设置
4保存配置

插件开发

组件说明
插件目录plugins/ 文件夹
注册插件元数据文件
钩子基于事件的系统
模板自定义 UI 元素

自定义

主题系统

主题说明
默认简洁、极简
MaterialMaterial Design
自定义用户创建的主题

自定义 CSS

位置方式
自定义 CSS 文件data/user.css
主题覆盖修改模板
插件 CSS通过插件系统

链接模板

模板使用场景
默认标准链接显示
紧凑最小视图
详细扩展信息

备份与恢复

组件位置方法
数据库data/shaarli.db文件复制
配置data/config.php文件复制
插件plugins/文件同步
主题tpl/文件同步

总结

Shaarli 提供了一个轻量级的自托管书签解决方案,具有强大的标签和搜索功能。其最低的资源需求、插件系统和多种订阅格式使其成为个人链接管理和分享的理想选择。