OSSN 介绍与选型指南

OSSN v10.1 认知篇:PHP 私有社交网络建站软件的定位、维护方沿革、CAL-1.0 许可证、组件化架构与功能边界,联网溯源量化对比 Mastodon/Friendica/Diaspora* 的选型指南。

OSSNOSSN社交网络PHP自托管2026/11/02

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–2015Informatikon Technologies(创始人 Syed Arsalan Hussain Shah)
2015–2021Softlab24 Ltd
2021–2022OpenHost247 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):

  1. Web Installer:官网下载最新包(build.zip),解压后浏览器访问 installation/ 走安装向导;
  2. Docker:官方组织仓库 opensource-socialnetwork/docker(Dockerfile + docker-compose.yml,本专栏第二篇即基于它实测改造);
  3. VM Image:官网提供预装好的虚拟机镜像下载;
  4. 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 的配置模型:

  1. 引入 configurations/ossn.config.site.php(站点 URL 与用户数据目录 $Ossn->url / $Ossn->userdata);
  2. 引入 configurations/ossn.config.db.php(数据库五参数 host/port/user/password/dbname);
  3. 引入 configurations/ossn.config.dcache.php(动态缓存设置,默认 disabled);
  4. 按 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 项);
  5. 从数据库 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

或手工安装三步曲:

  1. 准备 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 ...);
  2. 解压发布包到站点目录,浏览器访问 http://<你的域名>/installation/,向导依次过 Prerequisites 检查、License、Database(填库名/账号/站点 URL/数据目录)、Account(创建管理员)、Finish;
  3. 完成后自动跳转 /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:

维度OSSNMastodonFriendicaDiaspora*
最新版本v10.1v4.7.4v2026.05-1v0.9.1.0
GitHub stars1.3k50k1.7k14k
实现语言PHP 8RubyPHPRuby
许可证CAL-1.0(OSSNL 4.0)AGPL-3.0AGPL-3.0AGPL-3.0
联邦协议无(单站)ActivityPubActivityPubDiaspora* 协议
产品形态私有 Facebook 式 SNS联邦微博联邦社交聚合联邦社交图谱
数据依赖MySQL/MariaDBPostgreSQL + RedisMySQL/MariaDBPostgreSQL + Redis
扩展生态官方组件市场(免费+付费)生态大、插件多addon 体系插件少、迭代慢
运维复杂度低(传统 LAMP)中(Ruby+PG+Redis+Sidekiq)低-中中(Ruby 栈)

补充说明:Hubzilla(Zot 协议联邦平台,同为 PHP)亦属同类,但其徽章在本次查询中未能取到 star 数据,不列入对比表;其定位与 OSSN 的"私有站"有部分重叠(支持完全关闭互联的单站模式)。

选型结论:

  • 目标是"给我的社区一个自己的 Facebook"(好友/小组/相册/聊天,封闭圈子)→ OSSN 是 PHP 阵营里完成度最高的选择之一,且部署运维心智负担最低;
  • 目标是"发广播、进联邦宇宙" → Mastodon(热度与生态压倒性领先);
  • 既要聚合多平台时间线又要 PHP 栈 → Friendica;
  • Diaspora* 社区迭代已明显放缓(14k stars 但版本节奏低),新项目不建议首选。

八、参考链接

OSSN 介绍与选型指南 - Quzuo