Alf.io 2.0-M5-2609 介绍与选型指南

面向自建活动售票与签到系统的技术选型者,介绍开源票务系统 Alf.io 2.0-M5-2609 的定位、架构、功能、部署形态与同类量化对比,信息溯源官方渠道(查询日期 2026-10-22)。

Alf.ioAlf.io票务2026/10/23

Alf.io 2.0-M5-2609 介绍与选型指南

目标:面向准备自建活动售票与签到系统的技术选型者,全面介绍开源票务系统 Alf.io 的定位、架构、功能、部署形态与同类横向对比。本文为认知篇,全部信息均来自官方渠道(官网、官方文档、GitHub 仓库、Docker Hub、GitHub Releases),溯源查询日期统一为 2026-10-22,本文不做本地实测。

一、环境信息

本章说明本文的信息溯源环境与版本实查方法,保证后文数据可复核。

  • 溯源查询日期:2026-10-22( Asia/Shanghai 时区,当日完成全部取证)
  • 官方网站:https://alf.io/
  • 官方文档:https://alf.io/docs/
  • GitHub 仓库:https://github.com/alfio-event/alf.io
  • 官方演示站:https://demo.alf.io/(后台入口 https://demo.alf.io/admin/ )
  • 版本实查方式一(官方 Releases Atom 源):https://github.com/alfio-event/alf.io/releases.atom,最新条目为 2.0-M5-2609(发布于 2026-09-18)
  • 版本实查方式二(Docker Hub 标签 API):https://hub.docker.com/v2/repositories/alfio/alf.io/tags,latest 标签与 2.0-M5-2609 同日推送(2026-09-18T07:11:52Z),两者指向同一构建
  • GitHub 星数取证方式:shields.io 徽章接口(https://img.shields.io/github/stars/alfio-event/alf.io.svg),避免直连 api.github.com 造成限流

💡 说明:Alf.io 当前发布件命名规则为 2.0-M5-<YYMM>[-<修订序号>],即「2.0 第 5 个里程碑 + 构建年月」。例如 2.0-M5-2609 表示 2026 年 9 月构建的 M5 里程碑修订版(同日发布的 2.0-M5-2606 对应 2026 年 6 月)。该规则由 Releases 列表(2509/2509-1/2606/2609 等条目)归纳得出。

二、软件概述

Alf.io(读作 [ˈalfjo])是一个自由开源的活动出席管理系统(event attendance management system),官方定位为「开源售票预订系统(The open source ticket reservation system)」,面向重视隐私、安全与对购票者公平定价的活动组织者。项目起源于瑞士提契诺州社区活动组织者的实践,由社区维护,GitHub 组织为 alfio-event,主仓库 alfio-event/alf.io。

核心信息一览(来源见括号内标注,查询日期均为 2026-10-22):

项目内容来源
软件定位活动售票预订 + 现场签到 + 报表统计官网首页
最新稳定版本2.0-M5-2609(2026-09-18 发布,安全修复版)GitHub Releases
开源许可证GPL-3.0shields.io License 徽章
主要语言Java(运行依赖 Java 17)官方文档 Prerequisites
数据库依赖PostgreSQL 10 及以上(仅支持 PostgreSQL)官方文档 Prerequisites
最低硬件外置数据库:1 vCPU / 512MB 内存;同机部署数据库:1 vCPU / 1GB 内存官方文档 Getting Started
官方 Docker 镜像alfio/alf.io(累计拉取 15 万+)Docker Hub
商业托管版Swicket(官方团队运营的付费托管服务)官网首页

Alf.io 不只是一个 Web 应用,而是一个覆盖活动全生命周期的工具生态(来源:官网首页):

组成部分许可证用途
Alf.io Web 应用GPLv3售票前台(公众购票/预订)+ 管理后台(组织者)
Alf.io Scan(Alf.ioBackoffice)Apache 2.0iOS/Android 移动签到 App,供签到员扫票入场、参展商扫描观众徽章收集线索
alf.io-PIGPLv3基于树莓派的触屏签到站点,支持离线签到与大流量现场打印胸卡

💡 技术拓展:同为「活动票务」类系统,业界还分为 SaaS 托管型(Eventbrite、活动行等,免运维但按票抽成、数据在第三方)与自托管型(Alf.io、Pretix、Hi.Events 等,数据自主、无按票抽成)。Alf.io 属后者,官方强调「不向大平台泄漏参与者数据、不向购票者收取额外服务费」。

三、核心架构

本章基于官方仓库与文档对 Alf.io 的技术形态进行梳理(来源:GitHub 仓库 MANIFEST、源码目录、官方文档,查询日期 2026-10-22)。

单体 Spring Boot 应用架构。Alf.io 2.0-M5-2609 的发布件是一个自包含的 Spring Boot 可执行 JAR(alfio-2.0-M5-2609-boot.jar,约 79.5MB),其 MANIFEST 显示:

  • Spring Boot 版本:3.5.16;构建 JDK:Java 17;启动类:alfio.config.SpringBootLauncher
  • 内嵌 Servlet 容器为 Eclipse Jetty(12.0.36)
  • 模板渲染、PDF/PDF 生成(openhtmltopdf)等均在 JAR 内打包,无外部中间件依赖

关键架构要素(依据官方源码目录与文档归纳):

  1. 数据库层:仅支持 PostgreSQL(10+),应用启动时通过 Flyway 自动建表迁移;官方明确要求数据库账号不要使用超级用户(SUPERUSER),否则行级安全策略(row security policy)校验会被跳过(来源:仓库 README Prerequisites)。
  2. Web 层:分为公开售票前台(/event/...、票务预订流程)与管理后台(/admin/,SPA 单页应用)+ REST API(公开 API /api/v2/...、签到端 API /api/v1/...、后台内部 API /admin/api/...)。
  3. 签到通道:线上签到列表经端到端加密下发给 alf.io-PI 站点或 Alf.io Scan 移动端,"与会者数据只有在扫描其票券时才能解密",站点可离线工作并保证同一张票不会在两个站点重复签到(来源:官网 alf.io-PI 说明)。
  4. 扩展机制(Extensions):官方文档 Dev Reference 提供 Event/Reservation/Ticket/Subscription/Email/Other 六类扩展点,可通过脚本对接第三方系统(如 CRM);官方页面同时提示了扩展脚本沙箱的安全边界(2.0-M5-2609 正是修复了扩展脚本相关的越权与 RCE 问题,见下文安全节)。
  5. 支付层:信用卡类支付经 Stripe、Mollie 网关完成(敏感卡数据不落本服务器,天然满足 PCI 合规);另支持 Revolut、PayPal、银行转账(含 Revolut 集成、手工发送付款指令)与现场收款(来源:官网首页与文档 Payment 章节)。

部署形态:单机直装(Java 17 + PostgreSQL + 发行件 JAR + 反向代理 TLS)、Docker Compose(官方镜像 alfio/alf.io,官方 README 标注 compose 运行方式为 experimental,生产使用官方建议自行处理 TLS 终结)、云平台(官方提供 Heroku、OpenShift、Cloud Foundry、GKE 等部署教程)。

四、功能特性

以下特性均可在官方文档导航与官网首页逐项对应(来源:https://alf.io/docs/ 与 https://alf.io/ ,查询日期 2026-10-22)。

售票与预订

  • 付费/免费活动均可创建;支持信用卡预付、PayPal、银行转账后付、入口现场支付等多种模式
  • 支付网关集成:Stripe(含 SCA 流程)、Mollie(iDEAL、Bancontact、ING Home Pay、Belfius、KBC/CBC、Przelewy24 等欧洲本地支付方式)、Revolut、PayPal、自定义线下支付(2.0-M5 系列新增 Custom Offline Payments)
  • 银行转账:支持 Revolut 集成与「手工发送付款指令」流程
  • 票务有效期:可按自然日或 24 小时制计算支付截止时间(2.0-M5-2609 更新说明中提及 payment expiration date 计算开关)
  • 分类访问控制:可将公开票类限制给指定人群(文档 Limit access to a public Category)

组织者后台

  • 组织(Organization)/活动两级管理;首次登录向导引导完成语言、站点 URL、邮件与地图配置(文档 Basic Configuration)
  • 参与者信息收集字段可自定义(Attendees' data to collect)
  • 后台直接创建预订(Create from Backoffice)、从 CSV 导入既有参与者名单(Import existing attendees;2.0-M5-2609 更新说明中亦包含 Attendee (reservation) import)
  • 发票与合规:意大利电子发票(IT E-Invoice)、欧盟反向征收(EU Reverse Charge)
  • 邮件:内置邮件模板与发送配置,官方文档覆盖 SMTP、Mailjet、Mailgun 三种接入

签到与现场

  • Alf.io Scan 移动 App(iOS/Android):小规模活动签到、参展商收集线索
  • alf.io-PI 树莓派签到站:触屏 + 离线可用 + 现场打印胸卡(文档覆盖建站、标签内容、支持的打印机型号)
  • 签到端到端加密:站点集群首次启动时下载加密的参与者名单,仅扫票时解密

集成与合规

  • 移动钱包票据:Apple Pass 与 Google Wallet(文档 Mobile Wallet 章节)
  • OpenID 单点登录集成(文档 OpenID Integration)
  • Cloudflare Turnstile 人机校验(文档 Security 章节)
  • Google Analytics 统计(默认开启匿名化与 IP 混淆,宣称默认满足欧盟 Cookie 法)
  • 自定义 CSS(文档 Custom CSS)
  • 扩展脚本(Extensions)对接外部系统(CRM 等)

多语言:界面内置意大利语、英语、西班牙语、德语、荷兰语、法语、土耳其语、罗马尼亚语、葡萄牙语等(官网列明的 9 种;发布件内 i18n 资源另含保加利亚语、捷克语、丹麦语、波兰语、瑞典语等,翻译工作在 POEditor 社区进行)。

安全响应:2.0-M5-2609(2026-09-18)为安全修复版本,修复了三个已披露问题(来源:该版本 Release Notes 与 GHSA 安全公告):组织所有者访问控制系统机密的越权问题(CVE-2026-50165)、扩展脚本 simpleHttpClient 任意文件读取(CVE-2026-41412)、扩展脚本沙箱逃逸导致的认证后 RCE(CVE-2026-35482)。安全公告由外部研究者提交并走 GHSA 流程,说明项目具备持续的安全披露与响应机制。

五、快速开始(最小可用示例)

本节给出官方渠道提供的最小可用路径,帮助在选型阶段快速建立直观认识(本篇为认知篇,仅引用官方来源,逐条实测部署请看本站部署篇)。

方式一:在线演示站(零部署)。打开官方演示站后台 https://demo.alf.io/admin/ ,以演示账号进入即可体验活动创建、票类配置与预订流程(来源:官网首页 "Try it!" 链接)。

方式二:Docker Compose 试用(官方 README 推荐)。官方仓库根目录提供 docker-compose.yml(内含 PostgreSQL 服务与注释掉的可选 alfio 服务),按 README 执行:

docker-compose up

官方 README 对试用的说明要点(引用自查证的 README 内容):查看日志 docker logs alfio;首次启动控制台会打印自动生成的 admin 密码;浏览器打开 https://<服务器IP>/admin 登录。若要在生产使用 compose,官方提示需自行增加 8443 端口映射、处理 TLS 终结(如 haproxy)并移除 SPRING_PROFILES_ACTIVE: dev 环境变量。

⚠️ 注意:官方 README 明确写着「Running alf.io in production using Docker compose is not officially supported」(官方不支持 compose 生产运行)。生产部署建议采用 JAR 直装 + systemd 托管 + 反向代理 TLS 的形态,完整步骤见 《Ubuntu 22.04 安装 Alf.io 2.0-M5-2609 指南》。

方式三:JAR 直装路径预览。发布件为单个 Spring Boot JAR,最小运行条件为 Java 17 + PostgreSQL 10+:创建非超级用户数据库账号 → 配置 datasource.url/username/password → java -jar alfio-2.0-M5-2609-boot.jar 启动,首次启动控制台打印自动生成的管理员密码。完整从零安装见部署篇。

六、适用场景与限制

适合的场景(结合官方定位与功能清单归纳):

  1. 技术会议、行业展会、工作坊、社区聚会:官方首页明确面向这些组织形式;签到端(Scan App / PI 站点)覆盖从几十人到数千人的入场核验与胸卡打印。
  2. 对参与者数据隐私敏感的活动(社区自治组织、公益组织、欧洲 GDPR 环境下的主办方):数据完全自持,无第三方 SaaS 参与票务流程。
  3. 拒绝按票抽成、要求购票者零服务费的活动:自托管形态下无平台服务费,官方「Fair」主张即在于此。
  4. 需要与自有系统深度集成的组织:开放 REST API + 扩展脚本(Event/Reservation/Ticket/Subscription/Email 扩展点)+ OpenID 集成。
  5. 欧洲本地支付方式为主的售票场景:Mollie 对 iDEAL、Bancontact、Przelewy24 等欧洲支付方式的覆盖是其差异点。

限制与注意事项(均来自官方来源,查询日期 2026-10-22):

  1. 仅支持 PostgreSQL:不支持 MySQL/MariaDB/SQLite,数据库选型无回旋余地。
  2. 2.0 系列为里程碑版本(M5):版本号形态表明 2.0 大版本仍在里程碑迭代中;官方 README 同时提示 master 主分支为开发分支(不稳定),若自行从源码构建生产部署建议使用其指出的维护分支。以 Releases 页面正式发布件(如 2.0-M5-2609)为准是当前稳妥做法。
  3. compose 生产不受官方支持:自托管生产环境需要自行承担 TLS 终结、反向代理等周边工作。
  4. 邮件与支付需自备账号:SMTP/Mailjet/Mailgun 账号、Stripe/Mollie/PayPal/Revolut 商户账号均需主办方自行开通。
  5. 地图与统计依赖第三方:事件地图需 Google Maps 或 HERE Maps 的 API Key;流量统计依赖 Google Analytics。
  6. 中文界面缺失:官方文档列明的界面语言不含简体中文,中文用户界面使用有门槛(i18n 资源中有繁体中文条目,尚在未合并状态)。

七、同类选型对比

本章对自托管开源活动票务类系统中社区活跃度最高的三个同类项(Pretix、Hi.Events、Odoo Events)与 Alf.io 做量化对比,另附 SaaS 代表(Eventbrite)作参照系。所有数据取证于 2026-10-22,来源标注于表后。

维度Alf.io 2.0-M5-2609PretixHi.EventsOdoo Events(Odoo 社区版)Eventbrite(SaaS,参照)
GitHub 星数(shields.io,2026-10-22)1.6k2.5k4.1k55k(整仓,Events 仅其模块)不开源
许可证GPL-3.0AGPLv3+附加条款(禁 SaaS 转售/去署名)AGPL-3.0+附加条款(仓库页标注)LGPLv3商业
技术栈Java 17 / Spring Boot 3.5Python / DjangoPHP(Laravel 系)Python / Odoo 框架—
数据库仅 PostgreSQLPostgreSQL(亦支持部分场景 SQLite 测试)MySQL/PostgreSQLPostgreSQL—
最新版本(2026-10-22 实查)2.0-M5-2609(2026-09-18)持续发布(2026 年仍活跃)持续发布(2026 年仍活跃)18.0 系列年度版—
部署形态JAR 直装 / Docker / 云平台Docker / pip 自托管 / 官方 SaaSDocker / PHP 部署Odoo 整体部署免部署
现场签到与胸卡打印移动 App + 树莓派站点(离线可用、端到端加密)移动端 check-in(官方 App)有在线 check-in 功能依赖 Odoo 生态官方 App
支付集成Stripe/Mollie/Revolut/PayPal/转账/现场Stripe/PayPal/银行转账/数十种插件Stripe/PayPal 等随 Odoo 生态平台统一
按票抽成无(自托管)无(自托管);官方 SaaS 收费无(自托管)无按票抽成+服务费
多语言9 种官方列明(含欧洲主要语言,无简体中文)多语言(含中文社区翻译)多语言多语言(含中文)多语言(含中文)
硬件下限(官方口径)1 vCPU / 512MB(外置 DB)官方推荐 2GB+ 内存低官方推荐 2 vCPU / 4GB(整机)—

数据来源明细:星数取自 shields.io 徽章(img.shields.io/github/stars/<owner>/<repo>.svg,2026-10-22 实查:alfio-event/alf.io=1.6k、pretix/pretix=2.5k、HiEventsDev/Hi.Events=4.1k、odoo/odoo=55k);许可证取证自 shields.io License 徽章(alf.io=GPL-3.0)与仓库 LICENSE 文件(Pretix=AGPLv3+附加条款、Odoo=LGPLv3)、仓库页面 HTML(Hi.Events=AGPL-3.0 with additional terms);技术栈与部署形态取自各官方文档与仓库;Alf.io 硬件口径取自官方文档 Getting Started。

关键差异与选型解读:

  1. 体量与定位差异最大的是 Odoo:Odoo 是 ERP 全家桶,Events 只是其中一个模块,选它意味着引入整套 Odoo;若诉求是「独立票务系统」,Odoo 不应进入候选。
  2. Pretix 是功能最全面、插件生态最强的德国系项目,但其 AGPLv3 附加条款对 SaaS 化与去署名有限制,且官方主推其托管服务;社区自托管选它没有问题,只是要接受条款边界。
  3. Hi.Events 星数增长快(4.1k)、现代化 UI,PHP 技术栈对 LNMP 运维习惯友好;AGPL-3.0+附加条款同样需评估。
  4. Alf.io 的不可替代点是现场签到:树莓派签到站 + 离线可用 + 端到端加密 + 现场打印,这在开源票务里独一份,适合大型会议/展会主办方;加上最低 512MB 内存的硬件下限,也是同类中最轻的自托管后端。
  5. 选型建议(如果…则…):
    • 如果你的活动以现场核验、胸卡打印、离线签到为核心诉求 → 选 Alf.io;
    • 如果你需要最丰富的票务玩法(场次座席、复杂折扣、插件市场)且接受 Python/Django 运维 → 选 Pretix;
    • 如果你的团队是 PHP 技术栈、追求现代 UI 的售票页 → 选 Hi.Events;
    • 如果你本来就要上 Odoo ERP,票务只是附属需求 → 直接用 Odoo Events 模块;
    • 如果完全不想运维且能接受按票抽成 → 用 Eventbrite 等商业 SaaS。

八、参考链接

  1. Alf.io 官网:https://alf.io/
  2. 官方文档(Getting Started / Configuration / Event Management / Dev Reference):https://alf.io/docs/
  3. GitHub 仓库:https://github.com/alfio-event/alf.io
  4. Releases(版本实查):https://github.com/alfio-event/alf.io/releases
  5. 官方 Docker 镜像:https://hub.docker.com/r/alfio/alf.io
  6. 移动签到 App 仓库(Alf.ioBackoffice):https://github.com/alfio-event/Alf.ioBackoffice
  7. 树莓派签到站仓库(alf.io-PI):https://github.com/alfio-event/alf.io-PI
  8. 官方演示站:https://demo.alf.io/
  9. 2.0-M5-2609 安全公告(GHSA):https://github.com/alfio-event/alf.io/security/advisories/GHSA-x473-r8w6-fcq5
  10. 本站部署篇:《Ubuntu 22.04 安装 Alf.io 2.0-M5-2609 指南》