配置总览
设置指南
设置列表
site.*
site.title:站点标题。显示为:{页面标题} | {站点标题}(格式可在seo.title.template中自定义)site.subtitle:[可选] 站点子标题。如果设置,将显示为:{页面标题} | {站点标题} - {站点子标题}(格式可在seo.title.template中自定义)site.title.template:站点标题模板。{pageTitle}、{title}、{subtitle}将分别被替换为页面标题、站点标题、站点子标题。英文括号'()'及其内部内容将在未设置站点子标题时清空site.url:站点主域名地址,无需添加尾缀斜杠。请填写实际访问域名的完整形式,例如使用子域名部署时应填写https://blog.example.com而非https://example.com。此项配置影响 favicon、avatar 等资源的路由匹配,填写不正确将导致图标无法正常显示site.color:站点主题颜色变量。亮色/暗色独立配置,支持hex 或 oklchsite.shiki.theme:代码高亮主题。参考 https://shiki.style/themes ,填写主题 ID。site.custom.script:[可选] 自定义脚本标签。可填写一个或多个<script>标签(支持 src 外链和内联脚本),将注入到页面底部用于加载自定义脚本site.slogan.primary:站点主标语。显示在主页site.slogan.secondary:站点副标语。显示在菜单的最上方site.birthday:站点创建时间。用于计算运行天数及版权声明site.copyright:站点版权信息。显示在菜单底部(桌面版)或页脚(移动版)。每行一条,可使用HTMLsite.avatar:站点Logo图片URL地址,建议使用正方形图片。留空使用 /avatar.jpg 默认头像。注:修改 Logo 有两种方式:1.在媒体管理中上传,然后直接填写 /p/ 路径开头的图片链接即可;2. 将对应图片的持久化路径设置为 “avatar.jpg”,然后重新构建。site.favicon:站点Favicon图标URL地址,建议使用正方形图片。留空使用 /icon.png 默认图标。注:修改 icon 有两种方式:1.在媒体管理中以“保留原片”模式上传jpg/png格式的图片(不要开启“有损优化”或“无损转换”),然后直接填写 /p/ 路径开头的图片链接即可;2. 以“保留原片”模式上传jpg/png格式的图片后,将对应图片的持久化路径设置为 “icon.png”,然后重新构建。注意:方式一依赖site.url的正确配置,若site.url与实际访问域名不一致(例如使用了子域名但未填写完整),favicon 路由将无法正确匹配,导致浏览器收到透明图片。遇到 favicon 不生效时,请优先检查site.url是否填写了完整的访问域名。
author.*
author.name:站点管理员/作者/团队名。影响版权声明、友链申请信息展示等author.bio:[可选] 站点管理员/作者/团队简介签名。影响友链申请信息展示等author.mail:[可选] 站点管理员/作者/团队邮箱author.birthday:[可选] 站点管理员/作者/团队生日。单独设置不生效,需与author.birthday.showAge共同设置author.birthday.showAge:单独设置不生效,需与author.birthday共同设置。开启后,在时间线中将显示当年作者年龄
seo.*
seo.description:[可选] 站点默认SEO描述seo.keywords:[可选] 站点SEO关键词seo.category:[可选] 站点分类。用于SEO优化,但对SEO影响极小seo.country:[可选] 站点所属国家(英文全称)。用于SEO优化,对SEO影响极小)seo.imageCard.enable:是否开启站点链接在分享时显示的图片摘要。关闭以减少资源消耗,但可能影响SEO效果seo.index.enable:是否允许搜索引擎索引此站点seo.twitter_site:[可选] 官方Twitter账号,例如 @xxxseo.twitter_creator:[可选] 内容创建者Twitter账号,例如 @xxxseo.google_verification:[可选] Google Search Console网站验证码。适用于meta标签格式的验证方法
user.*
user.registration.enabled:是否允许用户注册user.email.verification.required:是否需要用户注册后验证邮箱。需要设置相关环境变量以配置电子邮件发送服务,详见文档user.sso.google.enabled:是否启用 Google SSO 登录,详见 https://neutralpress.net/docs/settings/ssouser.sso.google:Google OAuth 配置参数user.sso.github.enabled:是否启用 GitHub SSO 登录,详见 https://neutralpress.net/docs/settings/ssouser.sso.github:GitHub OAuth 配置参数user.sso.microsoft.enabled:是否启用 Microsoft SSO 登录,详见 https://neutralpress.net/docs/settings/ssouser.sso.microsoft:Microsoft OAuth 配置参数user.passkey.enabled:是否启用通行密钥功能user.passkey.maxPerUser:每个用户允许绑定的最大通行密钥数量
content.*
content.license.default:文章默认版权声明许可证,详情参考文章编辑器中的版权声明选项content.license.textTemplate:文章版权声明文本模板。{LICENSE}将被替换为具体的许可证描述文本content.menu.enabled:是否启用文章目录content.slug.segment:是否对自动转换的拼音slug进行分词处理。例如:zheshi-yipian-wenzhang 而不是 zhe-shi-yi-pian-wen-zhangcontent.autoIndex.enabled:是否在每次文章保存时自动更新搜索索引。这可能会略微增加保存时间content.rss.enabled:是否启用RSS订阅功能content.rss.postCount:RSS订阅中包含的最新文章数量content.rss.showFullContent:RSS订阅中是否显示文章全文,若关闭则仅显示摘要content.rss.autoGenerateExcerpt:如果文章未手动设置摘要,是否自动截取文章内容作为摘要。如果 content.rss.showFullContent 为 true 则此配置无效content.rss.maxExcerptLength:RSS订阅中自动文章摘要的最大长度,单位为字符。如果 content.rss.showFullContent 为 true 则此配置无效。需与 content.rss.autoGenerateExcerpt 配合使用content.githubAutoSync.enabled:是否启用GitHub内容自动同步功能,用于更新项目信息content.githubAutoSync.personalKey:[可选] GitHub个人访问令牌(Personal Access Token)。建议填写以避免API速率限制,详见文档
media.*
media.antiHotLink.enable:是否开启防盗链功能。开启后,从其他站点直接引用本站原始图片(/p/*)将被拒绝。优化图片(/_next/image)不受影响。media.antiHotLink.allowEmptyReferrer:是否允许空 Referer 访问媒体资源。关闭将减小图片被爬取的可能,但可能影响部分浏览器或隐私插件的正常访问media.antiHotLink.allowedDomains:除本站域名(site.url)外,允许引用本站媒体资源的域名白名单列表。填写完整域名,每行一个。建议添加常见搜索引擎域名以允许其爬取图片media.antiHotLink.fallbackImage.enable:是否在防盗链拦截时,返回一张占位图片来提示回到此站查看图片。关闭后将直接返回403错误media.gallery.sortByShotTime:画廊页面是否优先按拍摄时间排序。开启后,若照片包含拍摄时间元数据,则优先按拍摄时间排列;否则按当前上传时间排列media.gallery.sortOrder:画廊页面照片的排序顺序,最新照片在前(desc)或最早照片在前(asc)media.customLoader:自定义图片加载器URL模板。默认使用Next.js内置图片优化服务。URL模板中可使用{url}、{width}、{quality}占位符,分别代表图片URL、请求宽度和质量参数。参考文档: https://neutralpress.net/docs/settings/media
comment.*
comment.enable:是否启用评论功能comment.placeholder:[可选] 评论输入框默认占位信息comment.akismet.enable:是否启用Akismet反垃圾功能,若开启需同时填写comment.akismet.apiKey。开启后可自动检测垃圾评论。不会对 AUTHOR/EDITOR/ADMIN 进行检查。详见 https://neutralpress.net/docs/settings/akismetcomment.akismet.apiKey:[可选] Akismet API Key。启用 Akismet 反垃圾功能所需comment.akismet.report.enable:是否在管理员将评论标记为垃圾评论时,上报至 Akismetcomment.anonymous.enable:是否允许用户匿名评论,而无需登录账户comment.anonymous.email.required:是否需要匿名评论的用户提供邮箱。关闭后,邮箱作为可选字段comment.anonymous.website.enable:是否允许匿名评论的用户填写个人网站comment.email.notice.enable:是否在评论被回复时,向评论者发送通知邮件。控制所有用户,同时受 notice.enable 控制comment.anonymous.email.notice.enable:是否在评论被回复时,向评论者发送通知邮件。控制匿名用户,同时受 notice.enable 控制comment.review.enable:评论是否需要管理员审核后才能展示。控制所有评论comment.anonymous.review.enable:评论是否需要管理员审核后才能展示。控制匿名评论comment.review.notifyAdmin.enable:若开启评论审核,是否在有新评论待审核时通知管理员及编辑(ADMIN/EDITOR)comment.review.notifyAdmin.uid:审核通知应该发送给哪个用户。填写用户UID,每行一个。不填写则发送给所有ADMIN/Editorcomment.review.notifyAdmin.threshold:当待审核评论数量达到该阈值时,才发送通知comment.locate.enable:是否在评论中显示评论者的IP归属地。管理面板中将始终显示 IP 信息,不受此选项影响
notice.*
notice.enable:是否启用通知功能notice.email:[可选] 邮件通知发信地址。留空以关闭邮件通知功能notice.email.from.name:邮件发件人显示名称notice.email.replyTo:[可选] 邮件回复地址。如果留空,则使用 notice.email 作为回复地址notice.email.resend.apiKey:[可选] Resend API key。填写后,使用 Resend 而不是 SMTP 发送邮件notice.email.smtp:邮件通知SMTP配置。字段较多,请参照文档配置。当设置 notice.email.resend.apiKey 后,自动忽略此配置notice.posts.enable:是否在文章被评论时,向作者发送通知notice.ably.key:[可选] Ably API 密钥。填写后可启用 WebSocket 连接,增强通知、聊天的实时性。详见 https://neutralpress.net/docs/settings/ablynotice.webPush.enable:是否启用 WebPush 通知功能,可实现实时推送服务。需要用户允许浏览器接收通知权限notice.webPush.maxPerUser:每个用户允许订阅的最大 Web Push 设备数量notice.webPush.vapidKeys:WebPush VAPID 密钥对。需要同时配置 publicKey 与 privateKey。默认会初始化生成一套,一般无需修改notice.mailSubscription.enable:是否允许用户订阅邮件通知。开启后,用户可以订阅文章更新。需要设置有效的邮件发送配置才能正常使用notice.mailSubscription.anonymous.enable:是否允许匿名用户订阅邮件通知。关闭后,只有注册用户可以订阅邮件通知notice.mailSubscription.check.enable:是否在用户订阅邮件通知时,发送一封确认邮件以验证邮箱地址的有效性。开启后可以减少无效邮箱订阅,但可能增加用户订阅的步骤
friendlink.*
friendlink.apply.enable:是否允许用户提交友链申请friendlink.apply.checkBackLink.enable:是否在用户提交友链申请时,先检查对方站点是否存在本站链接作为反向链接。无链接则不会发起申请friendlink.autoApprove.enable:是否自动批准友链申请。若开启 friendlink.apply.checkBackLink ,则仅对通过反向链接检查的申请自动批准friendlink.showProfile.enable:是否在友链列表中显示你的简介信息,以便其他站长添加friendlink.profile.avatar:你的信息中的头像URL地址friendlink.profile.name:你的信息中的名称。不填则使用站点标题friendlink.profile.website:你的信息中的网站地址。不填则使用站点 URLfriendlink.profile.description:你的信息中的简介描述。不填则使用 site.slogan.primaryfriendlink.autoCheck.enable:是否定期自动检查友链的可用性。关闭后仅可手动检查friendlink.autoCheck.checkBackLink.enable:是否在自动检查时,验证对方站点有本站点的反向链接。手动标记为跳过回链检查的友链除外friendlink.autoCheck.autoManageStatus.enable:是否根据自动检查结果,自动更新友链状态(例如:对方站点无法访问则标记为不可用)。这会导致友链检查连续失败 30 次后,自动隐藏该友链friendlink.autoCheck.alertApplicant.enable:是否在自动检查发现友链异常时,发送通知给友链申请者friendlink.autoCheck.alertAdmin.enable:是否在自动检查发现友链异常时,发送通知给管理员(ADMIN)friendlink.noticeApplicant.enable:是否在友链状态变更时,发送通知给友链申请者(例如:友链审核通过/拒绝/删除)
cron.*
cron.enable:是否启用计划任务手动触发入口。关闭后将跳过所有任务cron.task.doctor.enable:计划任务是否执行 doctor 自检cron.task.projects.enable:计划任务是否执行 projects 拉取cron.task.friends.enable:计划任务是否执行 friends 检查cron.task.cleanup.enable:计划任务是否执行自动清理cron.task.analytics.enable:计划任务是否执行访问统计整理cron.task.cleanup.searchLog.retentionDays:自动清理 SearchLog 的保留天数cron.task.cleanup.healthCheck.retentionDays:自动清理 HealthCheck 的保留天数cron.task.cleanup.auditLog.retentionDays:自动清理 AuditLog 的保留天数cron.task.cleanup.cronHistory.retentionDays:自动清理 CronHistory 的保留天数cron.task.cleanup.cloudTriggerHistory.retentionDays:自动清理 CloudTriggerHistory 的保留天数cron.task.cleanup.notice.retentionDays:自动清理 Notice 的保留天数cron.task.cleanup.recycleBin.retentionDays:自动清理回收站资源(deletedAt)的保留天数cron.task.cleanup.mailSubscriptionUnsubscribed.retentionDays:自动清理 UNSUBSCRIBED 邮件订阅的保留天数cron.task.cleanup.refreshToken.expiredRetentionDays:自动清理过期 RefreshToken 的保留天数(0 表示过期即清理)cron.task.cleanup.passwordReset.retentionMinutes:自动清理 PasswordReset 的保留分钟数cron.task.cleanup.pushSubscription.markInactiveDays:PushSubscription 标记为 inactive 的阈值天数cron.task.cleanup.pushSubscription.deleteInactiveDays:自动删除 inactive PushSubscription 的阈值天数cron.task.cleanup.pushSubscription.deleteDisabledUserDays:对 webPushEnabled=false 用户,自动删除 inactive PushSubscription 的阈值天数cron.task.analytics.report.mode:访问统计整理后,管理员报告发送方式cron.task.analytics.report.daily.enable:是否在每日触发后发送昨日访问统计报告cron.task.analytics.report.weekly.enable:是否在周一触发后发送上周访问统计报告(周一至周日)cron.task.analytics.report.monthly.enable:是否在每月 1 日触发后发送上月访问统计报告cron.task.analytics.report.notifyAdmin.uid:访问统计报告应发送给哪些管理员 UID。每行一个;留空则发送给所有 ADMIN/EDITOR。
cloud.*
cloud.enable:是否启用 NeutralPress Cloud 互联功能cloud.id:实例唯一标识(UUID)。若为空,构建阶段将自动生成并写入cloud.schedule.time:云端计划任务执行时间(UTC,HH:mm)。留空则由云端随机分配分钟槽位cloud.key.alg:实例签名算法。当前固定为 ed25519cloud.key.pub:实例公钥(PEM)。构建阶段自动生成cloud.key.priv:实例私钥(PEM)。构建阶段自动生成cloud.api.baseUrl:NeutralPress Cloud 服务地址(不含尾部斜杠)cloud.verify.dohDomain:云端验签公钥的 DoH TXT 域名cloud.verify.jwksUrl:DoH 验签失败时的 JWKS 回退地址cloud.verify.issuer:云端触发 JWT 的 issuer 期望值cloud.verify.audience:云端触发 JWT 的 audience 期望值
autoupdate.*
autoupdate.mode:自动更新模式。REPOSITORY=同步 GitHub 仓库,CONTAINER=触发容器更新autoupdate.repo.fullName:仓库更新模式使用的目标仓库,格式 owner/repoautoupdate.repo.branch:仓库更新模式使用的目标分支autoupdate.repo.pat:仓库更新模式使用的 GitHub Personal Access Tokenautoupdate.watchtower.baseUrl:容器更新模式调用的 Watchtower HTTP API 地址
ai.*
ai.enable:是否启用AI相关辅助功能。需要同时配置 ai.gateway.url 与 ai.configai.gateway.url:AI 网关地址。默认服务不保证可用性,请参考文档自建服务ai.config:AI 配置信息。参考文档设置
message.*
message.enable:是否启用站内信系统message.userToUser.enable:是否允许USER与USER之间相互发送站内信message.userToAdmin.enable:是否允许USER向ADMIN/EDITOR/AUTHOR发送站内信
analytics.*
analytics.enable:是否启用内建访问统计系统analytics.timezone:访问统计使用的时区。用于确定归档数据的日期边界。请改为管理员所在时区,例如:UTC、Asia/Shanghai、America/New_York。不会影响已归档的数据analytics.precisionDays:高精度数据保留天数。超过此天数的数据将被压缩,成为低精度数据,以优化数据库占用。设置为0以保留所有数据。低精度数据在天数视图的统计结果上与高精度数据并无区别,但低精度数据无法进行关联查询(例如:不能查看目标为某路径且来源为某域名的访问量,但能查询某日的所有访问路径和所有访问来源)analytics.retentionDays:数据保留天数。超过此天数的数据将被删除(不会影响访问量统计)。设置为0以保留所有数据