环境变量
Hollo是通过环境变量进行配置的。你可以在项目根目录的 .env 文件中设置它们,或者使用Docker的-e/--env选项或Railway的环境变量进行设置。
PORT 可选 Railway中未使用
Section titled “PORT ”服务器监听的端口号。默认为3000。
BIND 可选 Railway中未使用
Section titled “BIND ”服务器监听的地址。必须是有效的IP地址或localhost。
DATABASE_URL Railway中未使用
Section titled “DATABASE_URL ”PostgreSQL数据库的URL,例如:postgresql://hollo:password@localhost/hollo。
SECRET_KEY Railway中未使用
Section titled “SECRET_KEY ”用于保护会话的密钥。必须至少44个字符长。你可以使用以下命令生成一个随机密钥:
openssl rand -hex 32TZ 可选
Section titled “TZ ”应用程序的时区。
必须是有效的时区标识符,例如:UTC、America/New_York、Asia/Shanghai。
默认是UTC。
NODE_TYPE 可选
Section titled “NODE_TYPE ”控制此进程中运行的组件。有效值为:
all(默认):运行Web服务器、Fedify消息队列、导入工作器、 清理工作器和远程回复抓取工作器web:仅运行Web服务器(HTTP API)worker:仅运行工作器(Fedify消息队列 + 导入工作器 + 清理工作器 + 远程回复抓取工作器)
这允许将Web服务器与后台工作器分离以获得更好的可扩展性。 在运行具有大量关注者的高流量实例时,分离工作器可以提高性能。
默认为all。
BEHIND_PROXY 可选 Railway中未使用
Section titled “BEHIND_PROXY ”如果Hollo在反向代理后面,请将此设置为true。如果你将Hollo放在L7负载均衡器后面(通常应该这样做),请开启此选项。
默认关闭。
HANDLE_HOST 可选
Section titled “HANDLE_HOST ”在分域 WebFinger 配置中用作联邦宇宙账号句柄的域名。
设置后,联邦宇宙账号的形式为 @user@HANDLE_HOST,但 Hollo 本身
仍在 WEB_ORIGIN 上运行。
必须与 WEB_ORIGIN 一起设置;只设置其中一个会导致 Hollo 启动失败。
请务必在创建第一个账号之前完成配置——一旦联邦开始后再更改
句柄域名,会破坏所有远程关注关系。
默认情况下不设置。
WEB_ORIGIN 可选
Section titled “WEB_ORIGIN ”在分域 WebFinger 配置中 Hollo 的 ActivityPub
服务器实际运行的来源(scheme + host),例如
https://ap.example.com。所有 actor URI、收件箱 URL 等联邦端点
都将基于此来源构建。
必须与 HANDLE_HOST 一起设置;
只设置其中一个会导致 Hollo 启动失败。
默认情况下不设置。
ALLOW_PRIVATE_ADDRESS 可选
Section titled “ALLOW_PRIVATE_ADDRESS ”将此选项设置为true将禁用 SSRF(服务器端请求伪造)保护。
打开此选项可在本地网络中进行测试。
默认情况下关闭。
HOME_URL 可选
Section titled “HOME_URL ”如果存在,主页将重定向到此URL。如果未设置,主页将显示实例上的账户列表。
REMOTE_ACTOR_FETCH_POSTS 可选
Section titled “REMOTE_ACTOR_FETCH_POSTS ”首次遇到远程用户时,从远程用户获取的最近公开帖子数量。
默认为10。
REMOTE_REPLIES_SCRAPE_DEPTH 可选
Section titled “REMOTE_REPLIES_SCRAPE_DEPTH ”后台工作器作业抓取远程回复的层级数。设置为0可禁用远程回复抓取。
默认为2。
REMOTE_REPLIES_SCRAPE_MAX_ITEMS 可选
Section titled “REMOTE_REPLIES_SCRAPE_MAX_ITEMS ”单个远程回复抓取作业最多保存的回复项目数。
默认为100。
REMOTE_REPLIES_SCRAPE_INTERVAL_SECONDS 可选
Section titled “REMOTE_REPLIES_SCRAPE_INTERVAL_SECONDS ”对同一origin发起远程回复抓取请求之间的最小延迟秒数。
默认为5。
REMOTE_REPLIES_SCRAPE_BACKOFF_SECONDS 可选
Section titled “REMOTE_REPLIES_SCRAPE_BACKOFF_SECONDS ”当远程服务器返回HTTP 429且未提供Retry-After时,
重试远程回复抓取作业前的等待秒数。
默认为300。
REMOTE_REPLIES_SCRAPE_COOLDOWN_SECONDS 可选
Section titled “REMOTE_REPLIES_SCRAPE_COOLDOWN_SECONDS ”已完成的远程回复抓取作业抑制同一回复集合重复作业的时间窗口秒数。
默认为300。
MEDIA_PROXY 可选
Section titled “MEDIA_PROXY ”控制 Hollo 如何向客户端提供位于远程服务器的媒体(头像、横幅图、附件、 自定义表情、链接预览卡片图片)。可用值:
off(默认):Mastodon API 和 Web UI 将远程 URL 原样交给客户端, 与历史行为一致。proxy:将所有远程媒体 URL 改写为带签名的/proxy/<sig>/<b64url>路径,由 Hollo 自己提供。Hollo 在每次请求时 将上游字节流式转发,不写入磁盘。客户端只看到 Hollo 自身的源, 避免远程 CORS 配置的影响,也避免访问者的 IP 被泄露。cache:URL 改写与proxy相同,但会把流式获取的响应主体保存到 所配置存储后端的proxy/<sha256>.bin,并把记录内容类型的旁路文件 保存到proxy/<sha256>.json。后续请求会跳过上游请求。与本地账号 存在已批准关注关系的远程 actor 头像,也会在 actor 被保存或刷新时 预取到此缓存中。管理面板的 /thumbnail_cleanup 页面可以按需清空缓存。
布尔同义值:true / on / 1 作为 proxy 的别名,
false / off / 0 作为 off 的别名。磁盘缓存必须用 cache 显式
开启。
在 proxy 和 cache 模式下,Hollo 会拒绝代理非 HTTP(S) 协议,对上游
URL 和每一次重定向目标执行 SSRF 检查,将响应主体限制为 32 MiB,并且
绝不代理 image/svg+xml——SVG 可能包含会在 Hollo 自身源上执行的内联
脚本。
默认为off。
REMOTE_MEDIA_THUMBNAILS 可选
Section titled “REMOTE_MEDIA_THUMBNAILS ”控制 Hollo 接收帖子时是否下载远程附件媒体以生成本地 WebP 缩略图。
可用值为 on / true / 1(历史行为)或 off / false / 0。
设置为 off 时,Hollo 会对收到的附件完全跳过上游下载和 Sharp 流程,
直接将远程 URL 作为缩略图 URL 存储。配合 MEDIA_PROXY=proxy 或
cache 使用时,客户端在渲染时仍然得到同源 URL;若 MEDIA_PROXY=off,
客户端会直接收到上游 URL。在接收大量媒体型帖子的实例上可以显著
节省磁盘空间。
默认为on。
REMOTE_ACTOR_STALENESS_DAYS 可选
Section titled “REMOTE_ACTOR_STALENESS_DAYS ”远程用户的缓存数据被视为过期的天数。 在处理活动时(例如收到转发或新帖子),如果遇到过期的用户, 其个人资料数据将被异步刷新。
默认为7。
REFRESH_ACTORS_ON_INTERACTION 可选
Section titled “REFRESH_ACTORS_ON_INTERACTION ”设置为true时,会在所有传入的活动(点赞、表情回应、关注等)中
检查过期的用户数据。设置为false(默认)时,
仅在时间线上显示的活动(Announce、Create)中检查。
默认情况下关闭。
TIMELINE_INBOXES 可选
Section titled “TIMELINE_INBOXES ”将此设置为false后,将禁用时间线收件箱模式。启用(默认)时,
时间线上可见的所有帖子都实际存储在数据库中,而不是在显示时实时过滤。
这对于有大量传入帖子的相对较大的实例非常有用。
从Hollo 0.9.0起,默认值更改为true。在Hollo 1.0.0中,
此选项将被完全删除,届时时间线收件箱模式将成为唯一的行为。
默认情况下开启。
ALLOW_HTML 可选
Section titled “ALLOW_HTML ”将此设置为true后,您可以在Markdown中使用原始HTML。
(Hollo中用Markdown来介绍个人资料和发布内容等)
当您想要使用比Markdown支持的格式更多样的格式时,它很有用,
但HTML标记和属性受到一定限制,以防止XSS攻击。
默认情况下关闭。
LOG_LEVEL 可选
Section titled “LOG_LEVEL ”应用程序的日志级别。可选项有:debug、info、warning、error和fatal。
默认是info。
LOG_QUERY 可选
Section titled “LOG_QUERY ”将此设置为true以记录SQL查询。
默认关闭。
LOG_FILE 可选
Section titled “LOG_FILE ”指定要写入结构化日志的文件路径。日志以结构化日志格式写入(默认为JSON Lines)。
LOG_FILE_FORMAT 可选
Section titled “LOG_FILE_FORMAT ”LOG_FILE 指定的日志文件格式。有效值为:
jsonl(默认):JSON Lines 格式,每行一个JSON对象。 适合解析结构化JSON的日志聚合工具。logfmt:logfmt 格式,每行一对键值对。 易于人工阅读,兼容 Loki 等工具。
默认为 jsonl。
SENTRY_DSN 可选
Section titled “SENTRY_DSN ”Sentry项目的DSN,用于发送错误报告和跟踪信息。
FEDIFY_DEBUG 可选
Section titled “FEDIFY_DEBUG ”将此设置为true以启用 Fedify 调试器,这是一个用于实时检查 ActivityPub
追踪和活动的内嵌调试仪表板。启用后,可在 /__debug__/ 访问调试仪表板。
默认情况下关闭。
DRIVE_DISK
Section titled “DRIVE_DISK”用于在 Hollo 上存储头像、自定义象形图和其他媒体等文件的磁盘驱动程序。
可以选择 fs(本地文件系统)或 s3(S3 兼容对象存储)。
出于向后兼容性考虑,s3 是默认设置,但建议明确设置,因为默认设置将来会被移除。
有关驱动程序的更多信息,请参阅 FlyDrive 文档(英文)。
STORAGE_URL_BASE
Section titled “STORAGE_URL_BASE”资产存储的公共 URL 基础,例如:https://media.hollo.social。
当使用 DRIVE_DISK=fs 时,您应该设置此项以通过 Web 访问提供本地文件系统文件,
通常格式为 https://<主机>/assets,例如:https://hollo.example.com/assets。
本地文件系统设置
Section titled “本地文件系统设置”FS_STORAGE_PATH FS 驱动程序必填
Section titled “FS_STORAGE_PATH ”文件在本地文件系统中的存储路径。例如:/var/lib/hollo。
与 S3 兼容的对象存储设置
Section titled “与 S3 兼容的对象存储设置”S3_REGION S3 驱动程序必填
Section titled “S3_REGION ”S3兼容对象存储的区域,例如:us-east-1。在某些非S3服务中,可以省略此项。
S3_BUCKET S3 驱动程序必填
Section titled “S3_BUCKET ”S3兼容对象存储的桶名称,例如:hollo。
S3_ENDPOINT_URL S3 驱动程序必填
Section titled “S3_ENDPOINT_URL ”S3兼容对象存储的端点URL,例如:
https://s3.us-east-1.amazonaws.com。
S3_FORCE_PATH_STYLE
Section titled “S3_FORCE_PATH_STYLE”是否强制在S3兼容对象存储中使用路径格式的URL。设置为true开启,false关闭。对于非AWS的S3兼容服务非常有用。默认关闭。
AWS_ACCESS_KEY_ID S3 驱动程序必填
Section titled “AWS_ACCESS_KEY_ID ”S3兼容对象存储的访问密钥ID。
AWS_SECRET_ACCESS_KEY S3 驱动程序必填
Section titled “AWS_SECRET_ACCESS_KEY ”S3兼容对象存储的访问密钥。