Mobilizon 介绍与选型指南
Mobilizon 5.2.4 认知篇:Framasoft 联邦化活动与群组管理平台的定位、Elixir/OTP26+PostgreSQL/PostGIS 架构(无 Redis)、功能与联邦能力实测、资源占用(~526MiB)、社区状态与 Gancio/Meetable/Framadate 量化选型对比及纠偏清单(实测日期 2026-11-02)
Mobilizon 介绍与选型指南
定位一句话:Mobilizon 是 Framasoft 出品的自托管、联邦化(ActivityPub)活动与群组管理平台,用 Elixir/Phoenix 编写、以 PostgreSQL+PostGIS 为唯一持久化依赖,面向"多个组织/群组在一套实例上发布活动、跨实例互相订阅传播"的场景。本文基于 Mobilizon 5.2.4(2026-11-02 实测取证)给出功能面、架构、资源占用、社区状态与量化选型对比。部署实操见同专栏《Mobilizon Docker Compose 部署指南》,参数与 CLI 分别见《Mobilizon 5.2.4 配置参数详解》《Mobilizon 5.2.4 常用 CLI 命令与工具详解》。
一、Mobilizon 是什么
Mobilizon 由法国非营利组织 Framasoft(Framadate、PeerTube 同一家族)开发,目标是替代 Meetup/Eventbrite 类中心化活动平台。核心对象模型:
| 对象 | 说明 |
|---|---|
| Instance(实例) | 一个自托管站点,有名称、描述、注册策略、管理员 |
| Person(个人) | 用户账号,拥有一个 profile actor(@username) |
| Group(群组) | 由成员管理的组织实体(如"某某协会"),是活动的主要发布主体 |
| Event(活动) | 归属于某个 actor(个人或群组),含时间、地点(地理编码)、图片、参与设置 |
| Participant(参与者) | 对活动的参与记录,带角色(CREATOR/MODERATOR/ADMINISTRATOR/PARTICIPANT/REJECTED…)与确认状态 |
与"活动日历"类工具(Gancio 等)最大的差异在于:群组是一等公民 + 整个对象模型都是 ActivityPub actor,即活动、群组、个人都能被 Mastodon、PeerTube 等联邦网络关注与转发。
功能清单(5.2.4)
- 活动管理:创建/编辑/取消活动,单场与系列活动,参与者管理与审批,参与名单导出(实测配置项支持 CSV / PDF / ODS 三种格式,见
config.exs模板 exports 段)。 - 群组协作:多管理员、成员角色(ADMIN/MODERATOR)、群组页与活动列表;实测 GraphQL 里群组活动可见性/加入选项枚举
EventJoinOptions={EXTERNAL,FREE,INVITE,RESTRICTED}。 - 联邦:实例可被 PeerTube/Mastodon 关注,支持 Relay(中继订阅,
mobilizon_ctl relay follow/accept实测存在);.well-known/nodeinfo、webfinger、actor/outbox 全链实测通过。 - 媒体:本地上传器(可配远程),孤儿媒体清理任务,图片处理过滤器(Dedupe/Optimize)。
- 地理编码:可插拔地址服务(Nominatim/Addok/Photon/GoogleMaps/MapQuest/Mimirsbrunn/Pelias/Hat),PostGIS 支撑附近活动查询。
- 反垃圾:Akismet 与 Keyword 关键词反垃圾(5.2.4 新增,docs configure 页明确标注 "Added in Mobilizon 5.2.4"),另有
maintenance.detectspam任务。 - 管理面:Web 管理后台 + GraphQL API(
/api)+mobilizon_ctlCLI;实例名/描述/注册开关等可在管理 UI 内配置,config 文件仅作 fallback。 - 其他:实例级公开 feeds(
enable_instance_feeds)、全局搜索、匿名参与、可选 Matomo/Sentry 前端分析、Web Push。
二、版本与镜像现状(2026-11-02 实查)
- 最新稳定版:5.2.4;预发布 5.2.5-RC.1(镜像 tag 已出现,不建议生产)。
- 镜像 tag 实测列表(
docker.1ms.run/v2/kaihuri/mobilizon/tags/list):5.1.4, 5.1.5, 5.2.0, 5.2.1-beta1, 5.2.2, 5.2.3, 5.2.3-arm64, 5.2.4, 5.2.4-amd64, 5.2.4-arm64, 5.2.5-RC.1(+amd64/arm64), latest。 - 纠偏①(重要):官方文档 "Further Reading" 仍写
framasoft/mobilizon,但该 Docker Hub 镜像已废弃——实测镜像源上framasoft/mobilizon所有 tag 均 404;现行镜像为kaihuri/mobilizon(文档正文首句即 "run the kaihuri/mobilizon docker image")。 - 纠偏②:Mobilizon 没有 Redis 依赖,只需 PostgreSQL(≥15,带 PostGIS)。后台任务队列用 Oban(跑在 PG 上),这是它与 PeerTube/Mastodon 等 AP 项目的一个显著运维差异(少一个中间件)。
- 版本佐证链:docs.mobilizon.org configure 页 "Added in Mobilizon 5.2.4"、epiktistes.com 2026-06 发布帖、镜像内
VERSION=5.2.4三路交叉一致。
三、技术架构
| 层 | 实现 | 实测证据 |
|---|---|---|
| 语言/运行时 | Elixir 1.16.3 / OTP 26(erts-14.2.5.15) | 容器日志与镜像内版本目录 |
| Web 服务器 | Bandit 1.12.0(纯 Erlang,非 Cowboy) | 启动行 Running Mobilizon.Web.Endpoint with Bandit 1.12.0 at 0.0.0.0:4000 |
| Web 框架 | Phoenix(Mobilizon.Web) | — |
| API | GraphQL,路径 /api | 实测 login/createEvent/joinEvent 全链 |
| 后台任务 | Oban(PostgreSQL 队列:search/mailers/background/default + periodic workers) | 日志 Oban peer became leader |
| 数据库 | PostgreSQL 15 + PostGIS 3.4 | 扩展实测:postgis, postgis_topology, postgis_tiger_geocoder, fuzzystrmatch, pg_trgm, unaccent, plpgsql |
| 前端 | Vue SPA(构建产物随镜像) | GET / 返回 2499B SPA 壳,<title> 渲染实例名 |
| 邮件 | Swoosh SMTP | config 模板 Mobilizon.Web.Email.Mailer |
| 认证 | Guardian JWT(accessToken/refreshToken) | GraphQL login 实测返回 sub "User:1" |
架构血统:Mobilizon 脱胎于 PeerTube 代码族——实测活动 outbox 的 @context 里同时出现 schema.org(sc:)、mz: 扩展与 joinpeertube.org/ns#,是这一历史的直接证据。
联邦协议面(实测):
/.well-known/nodeinfo→ 2.0/2.1 links;software=Mobilizon 5.2.4,protocols=[activitypub],openRegistrations=true,services.outbound=[atom1.0]。/.well-known/webfinger?resource=acct:g25admin@…→ subject/aliases/self + ostatus subscribe template(/interact?uri={uri},即 Mastodon 可从活动页直接关注)。Accept: application/activity+json请求/events/<uuid>→ 返回标准 ASEvent对象(attributedTo指向群组 actor)。
四、资源占用与部署形态
- 官方 FAQ 口径:1 CPU / 512MB 内存即可运行(小实例)。
- 实测(本批次 5.2.4 compose 双容器,空载+少量数据):
docker stats显示 mobilizon 353MiB + db 173MiB ≈ 526MiB,与 FAQ 口径吻合;镜像体积 mobilizon 2.16GB + postgis 844MB。 - 持久化只有两样:PG 数据卷 + uploads 目录(备份 = PG dump +
/etc/mobilizon/config.exs+ uploads,FAQ 明确)。 - 安装路径三选一:
- Docker Compose(推荐,官方 compose 仓库
framagit.org/kaihuri/mobilizon-docker,entrypoint 自动等待 DB→建扩展→migrate→启动,实测零手工迁移); - Release 二进制 + systemd(
mobilizon_ctl instance gen交互生成 config.exs 与建库 SQL); - 从源码编译(Elixir/mix,不推荐常规用户)。
- Docker Compose(推荐,官方 compose 仓库
- 反向代理官方提供 nginx/apache 模板(镜像内
/support/实测存在)。
五、社区与项目状态(查询日期 2026-11-02)
- 主仓库在 Framagit(Framasoft 自有 Git 平台)。纠偏③:GitHub 上
JoinMobilizon/Mobilizon已不可达(api.github.com 返回 404),搜索仅见 2021 年的陈旧 fork(如 burning-timber/mobilizon-docker)——查 issue/star 数据不要再去 GitHub。 - 文档站 docs.mobilizon.org 活跃:首页 Last update 2026-10-05,configure/reference 页 2026-09-18,docker 安装页 2026-05-07。
- Framasoft 官方演示实例 mobilizon.fr 在线(搜索快照含 2026-10/11 活动),可直接体验。
- 生态位:Framasoft "CHATONS" 去中心化产品矩阵成员(Framadate=投票、Mobilizon=活动、PeerTube=视频),法语社区活跃、中英社区相对小。
六、选型对比
6.1 与同赛道自托管组件量化对比
| 维度 | Mobilizon 5.2.4 | Gancio 1.28.2(专栏 1356) | Meetable(专栏 1368) | Framadate 1.1.19(专栏 1350) |
|---|---|---|---|---|
| 定位 | 群组+活动+联邦 | 社区活动日历/发布 | 会议/聚会聚合站 | 投票排期 |
| 技术栈 | Elixir/OTP26 | Node.js | PHP/Laravel | PHP |
| 数据库 | PostgreSQL+PostGIS | SQLite | MariaDB(+Redis) | MySQL |
| ActivityPub 联邦 | 原生(actor/relay/nodeinfo 全链) | 无 | 无(webmention/iCal) | 无 |
| 群组/多组织者 | 一等公民 | 弱(单一日历) | 中(host 概念) | 无 |
| 参与者管理/导出 | 角色+审批+CSV/PDF/ODS | 报名字段有限 | RSVP | 无 |
| 地理检索 | PostGIS 附近查询 | 基础 | 基础 | 无 |
| 内存实测 | ~526MiB(双容器) | 低(Node+SQLite) | 中(四容器) | 低 |
| 适合 | 组织化、需跨站传播 | 个人/小社区轻量日历 | 极客聚会聚合 | 凑时间 |
互链:Gancio 认知篇见 《Gancio 介绍与选型指南》;Meetable 见 《Meetable 介绍与选型指南》;Framadate 见 《Framadate 1.1.19 介绍与选型指南》。
6.2 与中心化服务对比
| Mobilizon 自托管 | Meetup/Eventbrite | |
|---|---|---|
| 数据主权 | 完全自有 | 平台所有 |
| 触达 | 可借联邦网络(Mastodon 用户即受众) | 平台内流量 |
| 成本 | 一台 VPS + 运维 | 抽成/订阅费 |
| 报名支付 | 无内建支付 | 有 |
6.3 选择建议
- 选 Mobilizon:协会/社群/活动组织需要多群组协作发布、希望活动被 Mastodon/PeerTube 网络看到、需要参与者名单管理与导出、接受 Elixir+PG 运维面。
- 不选:只要一个轻量活动日历(Gancio 更省);只要投票凑时间(Framadate/Bitpoll);需要支付售票(转 Eventbrite/自研);服务器内存 <1GB 且并发紧张(对比之下 Gancio 更合适)。
- 日历同步需求(CalDAV)不属于 Mobilizon 赛道,见 Radicale/Baïkal 类方案。
七、上手前必须知道的坑(本批次实测纠偏汇总)
- 镜像名:用
kaihuri/mobilizon,别按旧文档拉framasoft/mobilizon(已 404)。 - 没有 Redis:任何"Mobilizon 需要 Redis"的描述都是过时/错误,依赖只有 PG+PostGIS。
- CLI 名字:管理工具是
mobilizon_ctl(不是mobilizon.cli);Release 安装初始化用mobilizon_ctl instance gen,Docker 路径 entrypoint 自动 migrate。 - CLI 子命令与文档不一致:文档写
media.clean_orphan,5.2.4 实测为media.cleanorphan;文档 CLI 页未列的maintenance.testemails、relay.accept实测存在;任务书设想的geoip、addresses任务不存在。 - GitHub 不是主仓库:issue/star/版本发布以 Framagit 与 docs.mobilizon.org 为准。
- GraphQL 分页字段是
total/elements(不是 Spring 风格content/totalElements);createEvent必须organizerActorId且组织者需有群组权限(个人直接代发群组活动会被拒)。 - arm64 部署:官方文档建议用
nickblah/postgis替代 postgis 官方镜像。
八、小结
Mobilizon 是自托管活动管理里唯一把"群组组织 + 活动 + ActivityPub 联邦"做全的成熟方案:5.2.4 版本线活跃(docs 更新至 2026-10)、资源门槛低(~512MB)、运维依赖极简(只有 PG)。代价是 Elixir 技术栈在排障资料上的社区规模不如 PHP/Node 系。若你的场景是"组织对外发活动、希望被联邦网络传播",它是当前首选;下一步实操请读《Mobilizon Docker Compose 部署指南》。
取证说明:本文全部实测数据来自 2026-11-02 在 Ubuntu 24.04 / Docker 环境部署的 kaihuri/mobilizon:5.2.4-amd64 实例(HTTP/GraphQL/CLI/联邦全链路验证),网络受限环境下镜像经 docker.1ms.run 拉取;官方文档快照与取证细节见批次 evidence 记录。