Sosse 1.14.2 介绍与选型指南
Sosse 是 AGPL-3.0 开源的 Python/Django 自托管爬取型搜索引擎(最新稳定版 v1.14.2),本文基于官方渠道联网溯源介绍其架构、功能特性、快速安装主线,并以量化数据与 Fess、MeiliSearch、Typesense、SearXNG 横向对比给出选型建议。
Sosse 1.14.2 介绍与选型指南
目标:全面介绍开源自托管搜索引擎 Sosse 的定位、架构、功能与适用场景,并用量化数据与同类引擎横向对比,帮助读者判断"是否该选 Sosse"。本文为认知与选型篇,全部事实与数据来源于官方渠道联网溯源,信息来源与查询日期见"一、环境信息"。
一、环境信息
本文是联网调研篇,不依赖本地实验环境。文中引用的全部版本号、发布日期、社区数据、功能清单均来自下列官方来源,统一查询日期为 2026-10-24:
- 官方网站:https://sosse.io
- 主仓库(GitLab,stable 分支):https://gitlab.com/biolds1/sosse
- GitHub 镜像仓库:https://github.com/biolds/sosse
- 官方文档站:https://sosse.readthedocs.io/en/stable/
- PyPI 包页面:https://pypi.org/project/sosse/
- 版本发布源:GitLab Releases / Tags Atom(
https://gitlab.com/biolds1/sosse/-/tags?format=atom) - 许可证原文:主仓库
LICENSE文件(stable 分支 raw) - 社区数据来源:shields.io 徽章接口(
https://img.shields.io/github/stars/<owner>/<repo>.json),该接口实时读取 GitHub 仓库星数
调研时的关键版本与协议信息汇总:
| 项目 | 值 | 来源 |
|---|---|---|
| 最新稳定版 | v1.14.2(2025-10-15 发布) | GitLab Tags Atom |
| 开源协议 | AGPL-3.0 | 仓库 LICENSE 文件 |
| 开发语言 | Python(要求 ≥ 3.11) | PyPI requires_python |
| Web 框架 | Django 4.2(依赖约束 <4.3) | PyPI 依赖元数据 |
| 数据库 | PostgreSQL(唯一支持的后端) | 官方文档 install/debian.html |
| 包发布渠道 | PyPI + 官方 Debian 仓库 + Docker | 官方文档 install.html |
表格解读:Sosse 是"一个 PostgreSQL + 一个 Python 应用"的最简依赖形态,不引入 Elasticsearch/Redis 等额外中间件,这直接决定了它的部署与运维成本档位,后文选型对比将反复用到这一点。
二、软件概述
2.1 Sosse 是什么
Sosse 的官方一句话定位来自 PyPI 包描述:"Open-source, enterprise-grade web search & archiving"(开源、企业级的网络搜索与归档引擎)。它把「爬虫 + 全文索引 + 搜索门户 + 页面归档」四件事打包进同一个自托管应用:
- 爬虫:内置多 worker 爬虫,支持两种抓取模式——静态
requests抓取与基于 Selenium 的浏览器渲染抓取(Chromium / Firefox),可按域名(Domain)分别设定抓取模式、robots.txt 策略与 Cookie; - 索引:抓取的 HTML 提取正文后写入 PostgreSQL,利用 PostgreSQL 原生
tsvector全文检索能力建立倒排索引,并自动做语言检测; - 搜索门户:自带 Django 渲染的搜索前端,支持结果分页、标签(Tags)过滤、集合(Collections)导航、外部搜索引擎快捷方式(
!g这类 bang 语法); - 归档:可保存页面 HTML 快照与截图(screenshots),搜索结果可回看"当时的页面",这是它区别于普通"搜索框"产品的核心卖点。
💡 技术拓展:自托管搜索引擎按"索引从哪来"可分为三类——爬取型(自带爬虫建立自己的索引,如 Sosse、Fess)、推送型(由应用把结构化文档推送进来建索引,如 MeiliSearch、Typesense)、聚合型(不自建索引,实时转发查询到 Google/Bing 等再聚合结果,如 SearXNG)。Sosse 属于第一类,同时用快照归档向"网站时光机"(web archiving)方向做了延伸。
2.2 项目身份与维护状态
- 维护方:个人/小团队维护的社区项目(GitLab 空间
biolds1,GitHub 镜像biolds),非基金会孵化项目; - 协议:AGPL-3.0。⚠️ 对商业使用敏感的团队需注意:AGPL 要求"通过网络提供服务"的场景同样开放源代码,SaaS 化改造需评估合规义务;
- 维护活跃度(量化):GitLab Tags 显示 2025-06-09 至 2025-10-15 之间连续发布了 8 个版本(v1.13.1 → v1.13.2 → v1.13.3 → v1.13.4 → v1.13.5 → v1.14.0 → v1.14.1 → v1.14.2),四个月 8 个版本的节奏说明项目处于活跃迭代期(查询日期 2026-10-24,数据源
gitlab.com/biolds1/sosse/-/tags?format=atom); - 社区规模(量化):GitHub 镜像星数 408(2026-10-24,shields.io 实测返回
{"value":"408"});GitLab 主仓库星数 2。官方提供 Discord 社区与文档站(sosse.readthedocs.io)。
解读:408 星意味着 Sosse 是一个小众项目——它与星数 60k 的 MeiliSearch、39k 的 SearXNG 不在同一社区量级。选它不是因为"流行",而是因为"爬取+搜索+归档一体化"这个组合在同体量项目里完成度较高,且依赖栈极简。
三、核心架构
3.1 组件拓扑
Sosse 的运行时由四个协作部分组成(依据官方文档 install/pip.html 与 install/debian.html 的部署单元划分):
浏览器/客户端
│ HTTP
▼
Nginx(Web 服务器,静态文件直出 + 动态请求转发)
│ uwsgi 协议(unix socket)
▼
uWSGI(WSGI 应用服务器,运行 Django 应用 sosse.wsgi)
│
├──► Web 界面(搜索页 / 管理后台 / REST API / Atom / CSV)
│
sosse-crawler(爬虫守护进程,sosse-admin crawl 启动的多 worker 进程)
│ requests(静态) / Selenium + Chromium/Firefox(渲染)
▼
PostgreSQL(业务表 + tsvector 全文倒排索引)
- Web 面:Django 应用通过 uWSGI 承载,Nginx 负责把
/static/、/screenshots/、/snap/(HTML 快照)三类静态资源直接用alias直出,其余请求走 uwsgi_pass; - 爬虫面:
sosse-admin crawl启动的独立进程族,默认并发 worker 数为 CPU 核数的一半(配置项crawler_count默认留空即取CPU/2),从 PostgreSQL 队列表取任务,抓完写回se_document表; - 存储面:PostgreSQL 一库承担三种角色——业务数据(用户/集合/标签/域名策略)、待爬队列、全文索引(
se_document.vector字段类型为tsvector,并按检测语言选择regconfig分词配置)。
3.2 数据模型要点
从官方文档(admin_ui.html 的管理对象清单)与数据库迁移脚本可以归纳出核心对象:
| 对象 | 作用 | 关键属性 |
|---|---|---|
| Document(文档) | 一个被索引的 URL | url、title、content、语言、MIME 类型、内容哈希、抓取时间/周期、错误信息 |
| Collection(集合) | 抓取任务的组织单元,决定抓取策略 | 队列、抓取深度、递归策略、认证、标签、Webhook |
| Domain(域名) | 按域名的抓取策略 | browse_mode(detect/requests/chromium/firefox)、robots.txt 状态与规则、Cookie |
| Tag(标签) | 文档/集合的横向分类 | 可在搜索结果中过滤 |
| External Search Engine | 外部搜索引擎快捷方式 | Short name(bang 前缀)+ URL 模板 |
| Mime Plugin | 非 HTML 文件的处理插件 | 按 mimetype 抽取可索引文本 |
| Webhook | 抓取/索引事件回调 | 如 Discord 通知 |
3.3 技术栈与兼容矩阵
| 层 | 组件 | 版本要求 | 说明 |
|---|---|---|---|
| 运行时 | Python | ≥ 3.11 | PyPI requires_python: >=3.11 |
| Web 框架 | Django | 4.2.x(约束 <4.3) | pip 安装实测解析为 4.2.30 |
| REST | djangorestframework + drf-spectacular | 3.x / 0.3x | 自带 Swagger UI(/swagger/) |
| 数据库 | PostgreSQL | 官方文档基线为 15/16 系 | psycopg2-binary 连接 |
| 渲染抓取 | Selenium | <4.25 | 实测解析为 4.24.0 |
| 浏览器 | Chromium / Firefox(可选) | 任一即可 | 仅浏览器渲染模式与截图需要 |
| 应用服务器 | uWSGI | 2.0.x | 官方默认方案 |
| 前置 Web 服务器 | Nginx | 任意 1.x | 也可换其他支持 uwsgi 协议的 Web 服务器 |
表格解读:兼容矩阵里最需要提前规划的是 PostgreSQL 版本与浏览器二进制——静态抓取场景可以完全不装浏览器;需要截图或 JS 渲染时才引入 Chromium/Firefox 及对应 driver。
四、功能特性
以下功能清单来自官方文档站目录(sosse.readthedocs.io/en/stable,查询日期 2026-10-24),每项均能在文档站对应页面找到操作入口与说明:
- 多模式爬取:按域名选择
requests静态抓取或 Chromium/Firefox 浏览器渲染抓取(browse_mode 支持自动检测 detect),支持代理、自定义 User-Agent、fake-useragent 库轮换 UA、超时与重试控制; - 集合与队列:Collections 把 URL 组织成可复用的抓取策略单元,管理界面提供 Crawl queue(实时队列状态)与 Crawlers(worker 运行状态)页;
- robots.txt 与礼貌抓取:按域名维护 robots.txt 允许/拒绝规则,可整体忽略 robots(需在 Domain 设置中显式开启);
- 认证爬取与 Cookie 导入:支持登录后页面抓取,可导入浏览器 Cookie;
- HTML 快照归档:抓取时保存页面完整 HTML 到
/var/lib/sosse/html/,搜索结果可跳转/snap/路径查看存档版本; - 页面截图:浏览器渲染模式下生成 PNG 截图(默认 1920x1080),提供
convert_screens_to_jpeg管理命令批量转 JPEG; - 全文检索:PostgreSQL tsvector 索引,自动语言检测并选择对应分词配置,未检出语言时回退到
fail_over_lang(默认 english); - 搜索体验:分页(默认 20 条/页,上限 200)、搜索历史、标签过滤、快捷键字符(默认
!)触发外部搜索引擎跳转、Atom/RSS 订阅、CSV 导出; - REST API:DRF 实现的
/api/端点 + Swagger 文档页(/swagger/); - Webhooks:抓取/索引事件可推送外部系统,官方文档给出 Discord 通知示例;
- MIME 插件:PDF 等 8 类预置处理器(安装时
update_mime注入),让非 HTML 文档也可被索引; - 权限体系:爬取权限与搜索权限分别控制,支持匿名搜索开关(
anonymous_search); - AI 辅助:官方文档提供 AI API 处理与本地 AI 集成指南(guides/ai_api_processing.html、guides/local_ai.html),可对抓取内容做摘要/加工;
- 国际化:界面 i18n/l10n 可配置,时区与时间格式可调。
五、快速开始(最小可用示例)
本章给出官方推荐安装路径的命令主线(来源:官方文档 install.html 及 install/pip.html、install/debian.html,查询日期 2026-10-24),用于建立整体认知;每个环境的完整可复制安装步骤(含依赖安装、systemd 托管、验证回显与常见问题)见本专栏安装指南篇。
5.1 方式一:官方 pip 安装(通用 Linux)
# 1. 前置:Python 3.11+、PostgreSQL、Nginx、libmagic(浏览器截图/JS 渲染另需 Chromium/Firefox)
virtualenv /opt/sosse-venv/
/opt/sosse-venv/bin/pip install sosse
# 2. 生成默认配置与运行目录
mkdir -p /run/sosse /var/log/sosse /var/www/.cache /var/www/.mozilla /var/lib/sosse/downloads /var/lib/sosse/screenshots /var/lib/sosse/html
touch /var/log/sosse/crawler.log /var/log/sosse/debug.log /var/log/sosse/main.log /var/log/sosse/webserver.log /var/log/sosse/webhooks.log
chown -R www-data:www-data /run/sosse /var/lib/sosse /var/www/.cache /var/www/.mozilla /var/log/sosse
mkdir /etc/sosse
/opt/sosse-venv/bin/sosse-admin default_conf > /etc/sosse/sosse.conf
# 3. 静态文件与数据库初始化
/opt/sosse-venv/bin/sosse-admin collectstatic --noinput --clear
su - postgres -c "psql --command=\"CREATE USER sosse WITH PASSWORD 'CHANGE ME';\""
su - postgres -c "psql --command=\"CREATE DATABASE sosse OWNER sosse;\""
/opt/sosse-venv/bin/sosse-admin migrate
/opt/sosse-venv/bin/sosse-admin update_se
sudo -u www-data /opt/sosse-venv/bin/sosse-admin update_mime
/opt/sosse-venv/bin/sosse-admin default_admin
安装完成后按官方文档继续配置 uWSGI + Nginx(uwsgi.ini 与 sites 配置官方给出了完整模板),浏览器访问后用默认账号 admin / 密码 admin 登录(生产环境务必立即改密)。
5.2 方式二:官方 Debian 仓库(Debian/Ubuntu 系)
apt update && apt install -y curl gpg
mkdir -p /etc/keyrings/
curl https://piggledy.org/repo/apt/debian/public.gpg.key | gpg --dearmor > /etc/keyrings/piggledy.gpg
echo 'deb [signed-by=/etc/keyrings/piggledy.gpg] http://piggledy.org/repo/apt/debian trixie main' > /etc/apt/sources.list.d/piggledy.sources
apt update && apt install -y sosse
# 包内自带 sosse-uwsgi / sosse-crawler 两个 systemd 单元
systemctl enable sosse-uwsgi
systemctl start sosse-uwsgi
systemctl enable sosse-crawler
systemctl start sosse-crawler
5.3 首次爬取与搜索(官方流程)
在管理后台 Crawl a new URL 提交起始 URL(或用命令 sosse-admin crawl --one-shot --collection 1 <url>),爬虫入队后自动抓取、解析并建索引;回到首页搜索框输入关键词即可检索。官方文档 Next steps 建议从 "Website indexing & Search" 指南入手。
六、适用场景与限制
6.1 适合选择 Sosse 的场景
- 企业内网/私有知识库搜索:抓取内网 Wiki、文档站、静态门户,给员工一个统一搜索入口,且可保存页面快照防链接腐烂;
- 个人/小团队的垂直搜索站:针对特定领域站点建站内搜索引擎,标签+集合+外部引擎快捷方式可以做出"领域导航"体验;
- 合规留痕的网页归档:需要"内容何时抓的、当时长什么样"的场景(截图 + HTML 快照双留痕);
- 运维成本敏感的部署:只有一个 PostgreSQL 外部依赖,一台 2C4G 的虚拟机即可起步。
6.2 不适合/需要权衡的场景
- 大规模互联网级爬取:单机架构 + PostgreSQL 索引,没有分片与水平扩展设计,亿级页面不在其设计目标内;
- 对社区与长期支持有强诉求:408 星的小众项目,遇到问题主要靠文档站、源码与 Discord 自救,没有商业支持合同兜底;
- 强实时索引:爬取-索引-可见之间天然存在爬取周期延迟,不适合"写入即查"的应用内搜索(这类需求应看 MeiliSearch/Typesense);
- AGPL 合规敏感方:以 SaaS 形态对外提供服务且不愿开放修改后的源码时,AGPL-3.0 是硬约束。
七、同类选型对比
7.1 量化对比表
| 维度 | Sosse 1.14.2 | Fess 14.x | MeiliSearch | Typesense | SearXNG |
|---|---|---|---|---|---|
| 类型 | 爬取+搜索+归档一体 | 爬取+搜索一体(ES/OpenSearch 后端) | 推送型搜索 API | 推送型搜索 API | 元搜索聚合 |
| 自带爬虫 | ✔(requests + Selenium 双模) | ✔ | ✘(需外部推数据) | ✘(有部分 importer) | ✘ |
| 全文归档(HTML快照/截图) | ✔ | 截图有限 | ✘ | ✘ | ✘ |
| 存储后端 | PostgreSQL(tsvector) | Elasticsearch/OpenSearch | 内置 LSM | 内置 | 无索引 |
| 开发语言 | Python/Django | Java | Rust | C++ | Python |
| 开源协议 | AGPL-3.0 | Apache-2.0 | MIT | Apache-2.0 | AGPL-3.0 |
| GitHub 星数(2026-10-24,shields.io) | 408 | 1.1k | 60k | 27k | 39k |
| 最低外部依赖 | PostgreSQL(+可选浏览器) | JVM + Elasticsearch | 无(单二进制) | 无(单二进制) | 无索引但需上游引擎 |
| 典型资源档位 | 2C4G 起步 | 4C8G 起步(ES 吃内存) | 2C4G 起步 | 2C4G 起步 | 1C2G 起步 |
表格解读:五者其实覆盖了三条不同的产品路线——Sosse 与 Fess 是"给一片站点建搜索引擎"的直接竞品,差距在生态量级(Fess 背靠 Elasticsearch 生态、社区更成熟)与归档能力(Sosse 的快照+截图更完整);MeiliSearch/Typesense 是"给应用加搜索框"的 API 型产品,不解决爬取问题;SearXNG 则根本不建索引。选型第一问应是"索引从哪来"。
7.2 「如果……则……」选型建议
- 如果你要给一批网站(内网文档站、领域站点)建一个带归档的搜索引擎,且希望部署只有"一个 PG + 一个应用"→ 选 Sosse;
- 如果你要企业级爬取搜索、能接受 Elasticsearch 运维成本、需要成熟社区→ 选 Fess;
- 如果你要给自家应用内嵌毫秒级搜索(商品、文章),数据由应用产生 → 选 MeiliSearch 或 Typesense(拼写容错、即时搜索体验更好);
- 如果你要给团队一个不追踪的聚合搜索入口而不关心自建索引 → 选 SearXNG;
- 如果你是 Python 团队,希望搜索引擎本身可读、可改、可贡献,且接受 AGPL → Sosse 的 Django 技术栈对 Python 团队最友好(Django ORM + manage.py 生态,定制成本最低)。
7.3 版本节奏与兼容性风险提示
- 版本节奏(量化):v1.13.1(2025-06-09)到 v1.14.2(2025-10-15)共 8 个版本,平均约 17 天一个版本;1.14.0 为特性大版本(2025-10-12),随后 1.14.1/1.14.2 为两日内的快速修复(2025-10-14/15),说明 1.14 线经过了两轮热修复趋于稳定(来源:GitLab Tags Atom,查询日期 2026-10-24);
- 兼容提示:Python 下限 3.11、Django 锁定 4.2 线(
<4.3)、Selenium 锁定<4.25,升级 Sosse 时应让 pip 解析器统一处理依赖,不要手工固定这几项; - 升级风险:小众项目的 major 升级(如 1.13 → 1.14)应先在测试环境验证数据库迁移(
sosse-admin migrate)再上生产,官方文档为各安装方式均提供了独立的升级章节(pip_upgrades / debian_upgrades / docker_upgrades 等)。
八、参考链接
- Sosse 官方网站:https://sosse.io
- 官方文档站(含安装/配置/管理界面全部章节):https://sosse.readthedocs.io/en/stable/
- GitLab 主仓库(stable 分支,含 LICENSE 与 CHANGELOG):https://gitlab.com/biolds1/sosse
- GitHub 镜像仓库:https://github.com/biolds/sosse
- PyPI 包页面(版本与 Python 版本要求):https://pypi.org/project/sosse/
- 官方 pip 安装文档:https://sosse.readthedocs.io/en/stable/install/pip.html
- 官方 Debian 安装文档:https://sosse.readthedocs.io/en/stable/install/debian.html
- 配置文件参考:https://sosse.readthedocs.io/en/stable/config_file.html
- 命令行接口文档:https://sosse.readthedocs.io/en/stable/cli.html
- 伦理爬取指南(官方):https://sosse.readthedocs.io/en/stable/crawl_guidelines.html
本文全部版本号、日期、星数与功能清单的查询日期为 2026-10-24,社区类数据(星数)会随时间变化,引用时请以 shields.io 与官方仓库当时的实时值为准。
站内相关:《Fess 15.9.0 介绍与选型指南》、《Yacy 1.942 介绍与选型指南》、《Typesense 30.2 介绍与选型指南》。