OSSN 介绍与选型指南
OSSN v10.1 认知篇:PHP 私有社交网络建站软件的定位、维护方沿革、CAL-1.0 许可证、组件化架构与功能边界,联网溯源量化对比 Mastodon/Friendica/Diaspora* 的选型指南。
OSSN 介绍与选型指南
目标:把 Open Source Social Network(OSSN)一次讲清楚——它是什么、由谁维护、架构如何组织、功能边界在哪、适合什么场景,并与 Mastodon、Friendica、Diaspora* 等同类自托管社交软件做量化选型对比。本文为认知篇,全部结论来自官方仓库与公开徽章的联网溯源(查询日期 2026-11-02),不含本地实测;部署与调参请移步本专栏的 Docker Compose 部署指南、配置参数详解与 CLI 命令详解三篇。
一、环境信息(溯源口径)
本文所有事实性数据的来源与查询口径如下(查询日期均为 2026-11-02):
- 软件版本:OSSN v10.1(GitHub 仓库 tag
10.1,shields.io release 徽章显示v10.1) - 溯源主渠道:GitHub 仓库
opensource-socialnetwork/opensource-socialnetwork的 README、LICENSE.md、ChangeLog.txt 与源码目录结构 - 量化数据渠道:shields.io 徽章 API(
github/stars、github/v/release、github/commit-activity/y) - 网络限制说明:官网
www.opensource-socialnetwork.org与官方 wiki(docs 站)在查询环境被 Cloudflare 人机验证拦截,无法程序化抓取正文,因此官网侧信息一律以 GitHub README 中的原文与链接为准;本文涉及官网的链接均给出但标注了这一限制。
二、软件概述
2.1 定位
OSSN(Open Source Social Network)是一个用 PHP 编写的开源社交网络建站软件:装上它,你就得到一个属于自己的、功能完整的社交网站(类似自建版 Facebook),成员可以注册登录、发动态、传照片、建小组、即时聊天、互发消息。README 原文的表述是:"a powerful open-source social networking software developed in PHP. It enables you to create a fully functional social networking website that fosters community engagement and helps your members form meaningful social relationships."
需要第一时间厘清的概念边界:OSSN 不是联邦宇宙(Fediverse)软件。Mastodon、Friendica、Diaspora* 的核心卖点是跨站互联(ActivityPub / Diaspora* 协议),而 OSSN 是单站私有社交网络——它的目标人群是"为一个封闭或半封闭社区搭建自己的 SNS",比如公司内部社区、兴趣俱乐部、校友圈、小区业主圈,成员只在你这一站内互动,不与外部服务器互通。
2.2 维护方与历史
从 LICENSE.md 与 README 的版权声明行可以还原出清晰的维护方沿革:
| 时期 | 维护主体 |
|---|---|
| 2014–2015 | Informatikon Technologies(创始人 Syed Arsalan Hussain Shah) |
| 2015–2021 | Softlab24 Ltd |
| 2021–2022 | OpenHost247 LLC |
| 现在 | OpenTeknik LLC(官网署名 info@openteknik.com) |
项目由个人创始人驱动、以公司实体持续维护超过十年,代码至今仍在活跃迭代(shields.io commit-activity 徽章:约 275 次提交/年,查询日期 2026-11-02)。GitHub stars 为 1.3k——在自托管社交软件里属于小众梯队,但显著高于多数已停更的同类项目。
2.3 许可证:CAL-1.0 的与众不同
OSSN 采用自署的 "Open Source Social Network License (OSSNL) 4.0",其正文实质是 Cryptographic Autonomy License version 1.0(CAL-1.0)——一个 OSI 认证的开源许可证,以"加密自主权"为核心条款:当你分发基于该软件的部署时,必须保证用户对加密密钥的自主控制(例如不得用私有密钥锁死用户数据)。对纯自托管使用者而言日常义务很小,但如果你计划基于 OSSN 做二次分发或商业托管服务,需要逐条阅读 CAL-1.0 第 4.1 节(Source Code Correlation)与第 6 节(User Account and Cryptographic Key Control)的条款。这与 Mastodon/Friendica/Diaspora* 的 AGPL-3.0 在"网络分发即触发开源义务"这一点上的约束路径不同,选型时应纳入考量。
2.4 交付形态
README 列出的官方安装路径有四条(查询日期 2026-11-02):
- Web Installer:官网下载最新包(build.zip),解压后浏览器访问
installation/走安装向导; - Docker:官方组织仓库
opensource-socialnetwork/docker(Dockerfile + docker-compose.yml,本专栏第二篇即基于它实测改造); - VM Image:官网提供预装好的虚拟机镜像下载;
- Ubuntu PPA:
ppa:arsalanshah/opensource-socialnetwork,支持 18.04–24.04 LTS,apt-get install opensource-socialnetwork一条命令装齐。
此外官方提供在线演示站 demo.opensource-socialnetwork.org(本次溯源同样受 Cloudflare 拦截,未能程序化验证其在线状态)。
三、核心架构
以下架构事实来自对 v10.1 源码目录的逐文件阅读(GitHub tag 10.1 源码包,2026-11-02)。
3.1 技术栈与运行要求
OSSN 是典型的 LAMP 应用:
- 语言:PHP,安装器硬性要求
version_compare(PHP_VERSION, '8.0', '>=')(installation/classes/OssnInstall.php),即 PHP ≥ 8.0; - PHP 扩展:gd、mysqli、zip、mbstring、pdo_mysql、opcache、exif(官方 Docker 仓库 Dockerfile 的编译清单),安装器另检查 curl、openssl、SimpleXML、json、fileinfo、allow_url_fopen;
- Web 服务器:Apache(或 LiteSpeed),依赖 mod_rewrite 伪静态;
- 数据库:MySQL / MariaDB(mysqli 直连,无 ORM,自研
OssnDatabase类)。
3.2 请求入口与路由
单一入口 index.php:定义 OSSN_ALLOW_SYSTEM_START 后引入 system/start.php,读取 h(handler)与 p(page)两个参数,交给 ossn_load_page() 渲染。伪静态由根目录 .htaccess 完成:形如 /home、/profile/admin 的路径重写为 index.php?h=<handler>&p=<page>;/action/<name> 重写为 system/handlers/actions.php?action=<name>(所有表单 POST 端点)。值得注意的是:.htaccess 并非随包发布,而是安装器首次加载时用 installation/configs/htaccess.dist 模板生成(ossn_generate_server_config_setup('apache')),该模板同时用 RedirectMatch 404 屏蔽了 actions/、libraries/、classes/、system/handlers/cli 等内部路径的 HTTP 访问。
3.3 启动装配:configurations 三件套 + 库清单 + 组件
system/start.php 的装配顺序定义了 OSSN 的配置模型:
- 引入
configurations/ossn.config.site.php(站点 URL 与用户数据目录$Ossn->url/$Ossn->userdata); - 引入
configurations/ossn.config.db.php(数据库五参数 host/port/user/password/dbname); - 引入
configurations/ossn.config.dcache.php(动态缓存设置,默认 disabled); - 按
configurations/libraries.php清单逐个加载libraries/ossn.lib.*.php核心库;按configurations/classes.php清单加载classes/Ossn*.php核心类(Database、User、Object、Entities、Annotation、Components、Menu、Image、File、Mail、JWT、Redis、Memcached、DynamicCaching 等 24 项); - 从数据库
ossn_components表读取激活组件清单,逐个加载components/OssnXxx/ossn_com.php完成插件式装配。
前两个配置文件在安装时由安装器从 .example.php 模板做占位符替换生成(<<host>> <<port>> <<user>> <<password>> <<dbname>> 与 <<siteurl>> <<datadir>>),这是 OSSN "文件层配置"的全部家底;其余一切站点级参数(主题、语言、缓存开关、错误显示、站点名、密钥等)都存在数据库 ossn_site_settings 表里,通过后台界面修改。
3.4 数据模型与存储布局
核心表共 11 张(installation/sql/opensource-socialnetwork.sql):ossn_entities(一切对象的统一实体表,guid 主键)、ossn_object、ossn_users(bcrypt 口令 + 独立 salt)、ossn_annotations(键值化元数据)、ossn_relationships(好友/小组等关系)、ossn_likes、ossn_messages、ossn_notifications、ossn_chat_messages、ossn_components、ossn_site_settings。用户、帖子、评论、相册全部是 entity 的特化——这是典型的"实体-注释-关系"三原语建模,组件通过 ossn_trigger_callback / ossn_register_callback 钩子体系扩展行为。
文件存储与代码目录分离:用户上传的图片、附件等写入 $Ossn->userdata(安装时指定,官方 Docker 形态为安装目录之外的 ossn_data/),Web 根内只保留 cache/(压缩合并后的 css/js)等可再生数据。
3.5 组件体系
v10.1 随包内置 24 个组件(components/ 目录):OssnWall(动态墙)、OssnPhotos、OssnComments、OssnLikes、OssnChat、OssnMessages、OssnNotifications、OssnGroups、OssnProfile、OssnSearch、OssnBlock、OssnAds、OssnEmbed、OssnGiphy、OssnLocation、OssnPoke、OssnInvite、OssnSitePages、OssnSmilies、OssnSounds、OssnAutoPagination、OssnMessageTyping、OssnRealTimeComments、OssnPostBackground。每个组件自带控制器、视图、语言包与后台配置页,可在管理后台独立启停。官方社区另有大量免费与付费(Premium)扩展组件与主题——这是 OSSN 生态的核心玩法,也是其商业模式(OpenTeknik 卖组件与托管服务)所在。
3.6 缓存、安全与 API
- 两级缓存:文件缓存(
cache/css、cache/js,后台开关cache设置项)+ 动态缓存(ossn.config.dcache.php配置 Redis 或 Memcached,后台"动态缓存"页可在线测试连接并回写配置文件,需 PHP redis / memcached 扩展); - 安全机制:bcrypt 口令散列、表单令牌(
ossn_token+ossn_ts时间戳)、__OSSN_REQUEST_TOKEN会话令牌、安装完成写入installation/INSTALLED文件锁定安装器; - API:后台功能清单列有 "WebServices API",核心内置
OssnJWT类(encode/decode)作为令牌基础;完整的 REST 接口由官方商业组件提供,开源核心只保留 JWT 与钩子底座。
四、功能特性
README 的 Front-End Features 表(2026-11-02 实查)覆盖:注册/登录、个人资料页(封面/头像/好友列表)、好友管理、实时聊天、站内私信、动态墙、相册与照片、广告位、小组、动态中标记好友、屏蔽体系、Poke 戳一戳、评论、点赞与表情回应、评论内 Giphy、邀请好友、视频嵌入、表情与 Smilies、站点静态页(条款/关于/隐私)、移动端自适应、通知、全站搜索、画廊、动态背景、实时评论、实时消息、博客、社区主题市场、评论内 @提及、自定义页面、自定义菜单项、验证码、站点公告、问候语、以他人身份登录(Login as)、PWA、Microsoft Active Directory 登录等。
后台(Admin Dashboard)能力:站点概览仪表盘、在线人数与性别分布图、按月用户增长图、组件配置、用户增删改、广告管理、缓存设置、基础设置、未验证用户管理、自定义页面、菜单构建器、主题管理、组件管理、WebServices API 入口。
多语言:官方语言包含简体中文(Traditional Chinese 亦在列)等 23 种语言,语言包以 locale/ossn.<lang>.php 形式随组件分发。
五、快速开始
官方推荐的裸机路径(Ubuntu 24.04 LTS 为例,README 原文):
sudo add-apt-repository ppa:arsalanshah/opensource-socialnetwork
sudo apt-get update
sudo apt-get install opensource-socialnetwork
或手工安装三步曲:
- 准备 LAMP(PHP ≥ 8.0 + gd/mysqli/zip/mbstring/pdo_mysql/opcache/exif,Apache 开 mod_rewrite,
configurations/目录可写,Web 服务用户对安装父目录有写权限——README 给出chgrp www-data /path/to/ossn_parent_directory && chmod g+w ...); - 解压发布包到站点目录,浏览器访问
http://<你的域名>/installation/,向导依次过 Prerequisites 检查、License、Database(填库名/账号/站点 URL/数据目录)、Account(创建管理员)、Finish; - 完成后自动跳转
/administrator后台,安装器被 INSTALLED 文件锁定。
升级:替换代码后访问 upgrade/upgrade.php(或 CLI 等价入口),按 upgrade/upgrades/*.php 时间戳脚本逐个执行并记账在 ossn_site_settings 的 upgrades 项。
想要可复现、可编排的部署,见《OSSN 10.1 Docker Compose 部署指南》;参数逐项解释见《OSSN 10.1 配置参数详解》;命令行运维入口见《OSSN 10.1 常用 CLI 命令与工具详解》。
六、适用场景与限制
适合:
- 为封闭社区(公司内网、俱乐部、校友会、小区)搭建私有 Facebook 式社交站:好友关系、小组、聊天、相册开箱即用;
- 团队有 PHP/LAMP 运维经验,希望"一台小机器 + MySQL 跑全站"的低复杂度方案;
- 需要深度定制界面与业务流程——组件/主题/钩子体系 + 活跃的商业扩展市场,二开门槛低于 Rails 系同类;
- 小规模站点:常驻内存需求低(LAMP 常规量级),1GB 级内存的 VPS 即可承载。
不适合 / 限制:
- 需要跨站互联:OSSN 不实现 ActivityPub 等任何联邦协议,站就是孤岛;这类需求应选 Mastodon/Friendica;
- 计划二次分发或对外提供托管服务:CAL-1.0 的密钥自主与源码关联条款需要法务级审视;
- 超大规模多实例集群:单体 PHP + MySQL 架构,无内建分片/消息队列,水平扩展要靠传统 LAMP 手段;
- 社区体量小(stars 1.3k),中文资料几乎空白,问题排查主要依赖官方社区论坛与读源码;
- 官网与 wiki 存在 Cloudflare 强人机验证,程序化抓取文档困难(人工浏览器访问不受影响)。
七、同类选型对比
量化数据均来自 shields.io 徽章 API,查询日期 2026-11-02:
| 维度 | OSSN | Mastodon | Friendica | Diaspora* |
|---|---|---|---|---|
| 最新版本 | v10.1 | v4.7.4 | v2026.05-1 | v0.9.1.0 |
| GitHub stars | 1.3k | 50k | 1.7k | 14k |
| 实现语言 | PHP 8 | Ruby | PHP | Ruby |
| 许可证 | CAL-1.0(OSSNL 4.0) | AGPL-3.0 | AGPL-3.0 | AGPL-3.0 |
| 联邦协议 | 无(单站) | ActivityPub | ActivityPub | Diaspora* 协议 |
| 产品形态 | 私有 Facebook 式 SNS | 联邦微博 | 联邦社交聚合 | 联邦社交图谱 |
| 数据依赖 | MySQL/MariaDB | PostgreSQL + Redis | MySQL/MariaDB | PostgreSQL + Redis |
| 扩展生态 | 官方组件市场(免费+付费) | 生态大、插件多 | addon 体系 | 插件少、迭代慢 |
| 运维复杂度 | 低(传统 LAMP) | 中(Ruby+PG+Redis+Sidekiq) | 低-中 | 中(Ruby 栈) |
补充说明:Hubzilla(Zot 协议联邦平台,同为 PHP)亦属同类,但其徽章在本次查询中未能取到 star 数据,不列入对比表;其定位与 OSSN 的"私有站"有部分重叠(支持完全关闭互联的单站模式)。
选型结论:
- 目标是"给我的社区一个自己的 Facebook"(好友/小组/相册/聊天,封闭圈子)→ OSSN 是 PHP 阵营里完成度最高的选择之一,且部署运维心智负担最低;
- 目标是"发广播、进联邦宇宙" → Mastodon(热度与生态压倒性领先);
- 既要聚合多平台时间线又要 PHP 栈 → Friendica;
- Diaspora* 社区迭代已明显放缓(14k stars 但版本节奏低),新项目不建议首选。
八、参考链接
- GitHub 仓库:https://github.com/opensource-socialnetwork/opensource-socialnetwork (查询日期 2026-11-02)
- 官方 Docker 部署仓库:https://github.com/opensource-socialnetwork/docker
- 官网(下载/演示/社区):https://www.opensource-socialnetwork.org/ (注:程序化访问受 Cloudflare 拦截)
- 官方在线演示:http://demo.opensource-socialnetwork.org/
- 许可证文本(CAL-1.0):https://www.opensource-socialnetwork.org/licence/
- 官方安装 wiki:https://www.opensource-socialnetwork.org/wiki/view/706/how-to-install-open-source-social-network
- 官方升级 wiki:https://www.opensource-socialnetwork.org/wiki/view/708/how-to-upgrade-ossn
- 编码规范:https://github.com/opensource-socialnetwork/opensource-socialnetwork/wiki/Coding-Standards
- 同类项目:Mastodon https://github.com/mastodon/mastodon 、Friendica https://github.com/friendica/friendica 、Diaspora* https://github.com/diaspora/diaspora
- 量化徽章数据:https://img.shields.io/github/stars/opensource-socialnetwork/opensource-socialnetwork.json 等(shields.io API,查询日期 2026-11-02)
- 站内系列:《OSSN 10.1 Docker Compose 部署指南》 、《OSSN 10.1 配置参数详解》 、《OSSN 10.1 常用 CLI 命令与工具详解》