Jirafeau 介绍与选型指南
Jirafeau(PHP 一次性临时文件托管)认知篇:项目沿革与定位、无数据库存储架构、功能特性清单、适用场景限制与同类工具量化选型对比,基于官方仓库与生态实查(查询日期 2026-10-30)。
Jirafeau 介绍与选型指南
目标:说清 Jirafeau 这一 PHP 一次性临时文件托管工具的定位、架构、功能边界与同类选型差异,帮助读者判断"什么时候该用它、什么时候不该用"。本文为认知篇,全部信息来源于官方仓库与官方生态站点联网溯源(查询日期 2026-10-30,标注于各节),未混入本地实测数据。
一、环境信息
- 溯源方式:联网实查官方 GitLab 仓库、原仓库、Docker Hub、官方容器镜像仓库(API 响应原文留档,查询日期 2026-10-30)
- 软件本体:Jirafeau(PHP 编写的 Web 临时文件托管 / "one-click filesharing")
- 许可证:AGPL-3.0(官方 README 徽章与 LICENSES 目录实查)
- 官方仓库(社区续作版):https://gitlab.com/jirafeau/Jirafeau(37 stars,最后活动 2026-10-29,实查)
- 原始仓库(已停止维护):https://gitlab.com/mojo42/Jirafeau(273 stars / 122 forks,最后活动 2025-01-09,实查)
- 最新稳定版:4.7.2(GitLab tag 提交时间 2026-06-27,实查)
- 官方演示站:https://jirafeau.net/(官方 README 指明)
- 运行依赖:PHP(官方镜像基于 PHP 8.3 + lighttpd,官方 Dockerfile 实查);无数据库
💡 说明:Jirafeau 名字来源于法语 "où est-ce qu'on la fate?" 的谐音梗——官方仓库描述为 "Jirafeau: a simple way to upload a file"。它不是下载工具,而是一个"上传一次、分享一条链接"的自托管临时文件托管服务。
二、软件概述
2.1 定位
Jirafeau 是一个"一键飞传"(one-click filesharing)自托管服务:选择文件 → 上传 → 得到一条下载链接,全部流程不需要注册账号。官方 README 对它的第一句描述是 "Jirafeau is a 'one-click-filesharing': Select your file, upload, share a link. That's it."(来源:官方 README,查询日期 2026-10-30)。
它的设计哲学是 KISS(Keep It Simple, Stupid)——官方明确声明 "Jirafeau project won't evolve to a file manager and will focus to keep a very few dependencies",即不打算做成文件管理器,而是把依赖压到最少:无数据库、纯 PHP + 文件系统即可运行。
2.2 项目沿革(重要)
Jirafeau 的"官方仓库"需要特别注意,这里存在一次接力(以下时间线均实查于 2026-10-30):
| 阶段 | 仓库 | 状态 |
|---|---|---|
| 前身 | Jyraphe(gna.org) | Jirafeau 基于 Jyraphe 0.5 稳定版 fork 而来,官方 README 注明,原站已存档(web.archive.org 快照可查) |
| 原项目 | gitlab.com/mojo42/Jirafeau(作者 Jérôme Jutteau) | 已停止维护:fork README 明确写有 "This project is a fork of the discontinued project",原仓库最后活动 2025-01-09(GitLab API 实查,273 stars / 122 forks) |
| 现官方 | gitlab.com/jirafeau/Jirafeau(社区续作) | 2024 年起接棒开发,README 声明 "In this repository we are aiming to continue development of the original Jirafeau project";最后活动 2026-10-29(GitLab API 实查,37 stars) |
因此 2024 年之后查到的 4.6.x / 4.7.x 版本均出自社区续作仓库。本文(及本专栏全部 4 篇)基于续作官方的最新稳定版 4.7.2。
💡 技术拓展:自托管临时文件托管(one-time file sharing)与网盘(file manager)是两类产品形态。前者围绕"一条链接的生命周期"设计——限时、限次(一次性)、口令保护、到期自动删除,不提供用户体系与长期目录管理;后者围绕"人的文件资产"设计——目录树、配额、分享协作。Jirafeau 属于前者,与它同形态的还有 Uguu、goploader、transfer.sh、Plik 等(对比见第七节)。
三、核心架构
(来源:官方仓库源码结构与 docker/ 目录文件实读,查询日期 2026-10-30)
3.1 运行形态
Jirafeau 是典型的 PHP 经典架构:Web 服务器 + PHP-FPM + 文件系统,无数据库、无缓存服务、无消息队列。官方镜像内部由 lighttpd 承载 HTTP、php-fpm 执行 PHP(官方 Dockerfile:FROM php:8.3-fpm-alpine + apk add lighttpd)。官方 README 强调 "No database, only use basic PHP"。
3.2 入口文件分工
仓库根目录的 5 个 PHP 入口各司其职(源码树实查):
| 入口 | 职责 |
|---|---|
| index.php | 上传主页(Web 界面,HTML5 分块异步上传) |
| f.php | 下载页:?h=<链接名> 取文件,&k=<口令> 带下载口令,&d=1 直接下载,&d=<删除码> 删除,&p=1 预览 |
| script.php | 脚本接口(HTTP API):POST 上传、GET 下载/删除、版本与容量查询,并可通过 ?lang=bash 自动生成 Bash 客户端脚本 |
| admin.php | 管理界面:清理过期、清点存储、按名称/哈希/链接名检索、删除链接,兼带 PHP-CLI 两个维护子命令(clean_expired / clean_async) |
| tos.php | 可定制的服务条款页 |
3.3 数据存储模型
数据目录(默认 /data)下分三个子目录(源码 docker_config.php 与官方 docker/README.md 实查):
files/:文件内容按哈希分片存放(如files/fec2ab10/aea6b090/4ad54eb7/3e027314/<哈希>),同名哈希文件只存一份,旁边以<哈希>_count引用计数——这是文件级去重(deduplication)的基础;links/:每个分享链接一个元数据文件,记录文件哈希、过期时间、口令哈希、一次性标记、上传者 IP、下载次数等;async/:HTML5 异步分块上传的临时中转。
删除链接时引用计数递减,计数归零即物理删除文件内容;这一机制在官方仓库的 lib/functions.php 中实现(jirafeau_delete_link)。
3.4 配置模型
配置收敛在单一文件 lib/config.local.php(PHP 数组),模板为 lib/config.original.php(约 30 个配置项)。安装时向导或镜像首启脚本生成它;有效期的 9 个档位(minute/hour/day/week/fortnight/month/quarter/year/none)由 availabilities 数组控制。配置体系详见本专栏《Jirafeau 4.7.2 配置参数详解》。
四、功能特性
(来源:官方 README 功能清单 + CHANGELOG.md 实读,查询日期 2026-10-30)
| 特性 | 说明 |
|---|---|
| 一次上传双链接 | 每次上传生成一条下载链接 + 一条删除链接 |
| 大文件分块上传 | HTML5 File API 分块异步上传,规避 PHP post_max_size 限制,带进度/速率/剩余时间显示 |
| 有效期 9 档 | minute / hour / day / week / fortnight / month / quarter / year / none,可逐档开关(availabilities) |
| 一次性链接 | 下载一次后自动销毁(one_time_download,4.7.x 支持默认勾选) |
| 下载口令 | 上传方可设口令;download_password_requirement 支持 optional / required / generated(自动生成)三态,4.7.2 起口令以 SHA256 哈希存储 |
| 上传口令与 IP 白名单 | upload_password(多口令)、upload_ip / upload_ip_nopassword(CIDR,IPv4) |
| 管理口令 | admin_password 以 SHA256 存储;亦支持 HTTP 认证托管(admin_http_auth_user)与管理端 IP 白名单(admin_ip) |
| 文件级去重 | file_hash 设为 md5 时同内容文件只存一份(默认 random 不去重);md5_outside 为低成本折中 |
| 服务端加密 | enable_crypt 开启后密钥不落库(返回给上传者),但与去重互斥 |
| 浏览器预览 | preview 开启后可预览可预览类型(4.7.x 连续修补了 SVG/MIME 嗅探类预览漏洞) |
| 短链接 | 4.7.0 新增 use_shortlinks,需要 Web 服务器 URL 重写支持 |
| 下载统计 | 4.6.0 引入,记录下载次数与最后下载时间/来源 |
| 管理界面 | admin.php:清理过期、清点存储占用、按名称/哈希/链接检索、删除 |
| 脚本接口 | script.php HTTP API + 自动生成的 Bash 客户端(send/get/delete 三命令) |
| 定时清理 | 镜像内置 cleanup.sh 每日执行 admin.php clean_expired / clean_async;源码部署可用 cron 调用 |
| 多语言与主题 | 语言包位于 lib/locales/(含中文),主题位于 media/,明暗两套(style / dark_style) |
| 服务条款页 | tos.php 可定制,页脚自动带出组织名与联系人 |
| X-Accel/X-Sendfile 卸载 | use_xsendfile 将文件下发交给 Web 服务器;另有 LiteSpeed 专用 workaround |
五、快速开始
最小可用路径为官方镜像 + Docker Compose(来源:官方仓库 docker-compose.yaml 与 docker/README.md,查询日期 2026-10-30)。最小服务定义如下:
name: jirafeau-4.7.2-stack
services:
web:
image: registry.gitlab.com/jirafeau/jirafeau:4.7.2
ports:
- "8080:80"
volumes:
- ./jirafeau_data:/data
environment:
ADMIN_PASSWORD: q1w2e3r4 # 管理界面口令(示例值)
restart: unless-stopped
启动后访问服务端口即进入上传主页;管理界面位于 /admin.php。首启时若不设 ADMIN_PASSWORD,镜像会自动生成一个 20 位随机口令并打印在启动日志中(官方 docker/README.md 声明)。完整的部署步骤、首启日志解读、上传/一次性链接/过期/管理端验证均在《Jirafeau Docker Compose 部署指南》中逐条实测给出。
六、适用场景与限制
6.1 适用场景
- 临时文件分发:给同事/客户一个"看完即走"的下载链接,到期自动清理,不留存储尾巴;
- 运维工件传递:日志包、抓包文件、构建产物的中转站——配合 Bash 客户端可完全脱离浏览器,一条命令上传并取回链接;
- 敏感文件交接:一次性链接 + 下载口令 + 服务端加密组合,链接泄露后也不会二次下载;
- 内网/家庭 NAS 轻量服务:无数据库、单容器、内存占用极小,适合常驻低配设备。
6.2 限制(官方声明 + 生态实查)
- 无用户体系:没有账号、配额与目录管理,不适合作为团队长期文档库(官方明确不做文件管理器);
- 单机存储:数据落本地文件系统,无原生集群/分布式形态;
- 热度体量中等:原项目 273 stars(GitLab 实查),社区续作 37 stars——是小众但持续维护的工具,选型时不应期待大型社区生态;
- 无官方 Debian 包:Debian 官方源无 jirafeau 包(sources.debian.org API 实查,查询日期 2026-10-30),Linux 部署以容器或源码为主;
- 预览安全边界:预览功能历史上多次出现 MIME 嗅探类 CVE(CVE-2022-30110 / CVE-2024-12326 / CVE-2025-7066 / CVE-2026-1466,CHANGELOG 实读),续作仓库已系统性修复,但生产环境建议关闭
preview或保持版本跟进; - 镜像不含安装向导:官方容器镜像剥离了 install.php(本专栏部署篇实测),容器化路径完全依赖环境变量首启配置。
七、同类选型对比
同形态候选:Chibisafe(Node.js 网盘型,平台已交付)、goploader(Python)、transfer.sh(Go,已停维护)、Plik(Go)、Uguu(PHP)。对比维度与数据来源:Jirafeau 侧为本节实查数据;Chibisafe 侧引用本站已发布评测(见文末链接);其余项目为公开资料的一般性描述(未逐项实测,选型时请以各自官方文档为准)。
| 维度 | Jirafeau 4.7.2 | Chibisafe 6.x | goploader | transfer.sh | Plik |
|---|---|---|---|---|---|
| 技术栈 | PHP + lighttpd | Node.js + React(前后端分离) | Python | Go | Go |
| 依赖 | 无数据库,纯文件系统 | 需数据库(如 PostgreSQL)+ 对象存储可选 | 单二进制 + SQLite | 单二进制 | 单二进制 |
| 一次性链接 | ✅ 内置 | ✅ 支持 | ❌(永久链接为主) | ❌(限时) | ✅ 支持 |
| 有效期控制 | 9 档可配置 | 有过期策略 | 弱 | 有 | 有 |
| 下载口令 | ✅(optional/required/generated) | ✅ | ❌ | ❌ | ✅ |
| 文件级去重 | ✅(md5 模式) | ❌ | ❌ | ❌ | ❌ |
| 服务端加密 | ✅(与去重互斥) | ✅ | ❌ | ❌ | ✅ |
| 管理界面 | ✅(清理/检索/删除/清点) | ✅(完整管理后台) | ❌ | ❌ | ✅ |
| CLI/API | Bash 客户端 + HTTP API | OpenAPI 77 路径(实测) | HTTP API | HTTP API | HTTP API + CLI |
| 部署体量 | 单容器,极轻 | 三容器编排(前端/后端/网关) | 极轻 | 极轻 | 极轻 |
| 维护状态 | 活跃(2026-10-29 有活动) | 活跃 | 缓慢 | 已停维护 | 活跃 |
| 镜像热度取证 | 社区镜像聚合 pulls ≈ 3.7M(Docker Hub 实查) | 见本站评测 | — | — | — |
选型建议:
- 只想要"限时/限次/口令"的纯临时链接服务、且希望单容器极轻部署 → Jirafeau;
- 需要完整网盘体验(账号、目录、配额、大文件管理后台)→ Chibisafe(见本站评测);
- 只需要一条命令在服务器间传文件、不需要 Web 界面 → transfer.sh / Plik 类单二进制更顺手(但 transfer.sh 已停维护,慎选)。
八、参考链接
- 官方仓库(社区续作):https://gitlab.com/jirafeau/Jirafeau (查询日期 2026-10-30)
- 原始仓库(已停止维护):https://gitlab.com/mojo42/Jirafeau (查询日期 2026-10-30)
- 官方演示站:https://jirafeau.net/
- 官方容器镜像说明:https://gitlab.com/jirafeau/Jirafeau/-/blob/master/docker/README.md (查询日期 2026-10-30)
- Docker Hub 社区镜像:https://hub.docker.com/r/mojo42/jirafeau (pulls 实查日期 2026-10-30)
- 同形态已交付评测:《Chibisafe 介绍与选型指南》
- 本系列部署实测:《Jirafeau Docker Compose 部署指南》