- 设计令牌:暖米 #F9F8F6 纸面 × 柔和黑 #1C1C1C,透明度分层 /60 /40 /10,纯单色 - 圆角归零、阴影清零、渐变清除;删除渐变光斑背景层 Background.astro - 字体:Playfair Display + Noto Serif SC 衬线标题(weight 400)+ Noto Sans SC 正文 - 首页巨型衬线刊名 + 日期线 + 最新发布索引卡;Section 自动编号 - 文章页改刊头式标题区;归档改衬线年号 + 目录行;卡片去渐变封面改纯排版 - 交互:hover 细线下划线、标题转斜体、油墨反转,prefers-reduced-motion 降级保留 - 文件处理逻辑 / 文章内容 / deploy 上传脚本未改动 - 附:新增 LLM 系列笔记与配图、Artalk 部署配置、评论组件入库
160 lines
4.2 KiB
YAML
160 lines
4.2 KiB
YAML
# Artalk 配置 · Yukun's Blog
|
||
# 基于官方 conf/artalk.example.zh-CN.yml 裁剪
|
||
# 文档:https://artalk.js.org
|
||
#
|
||
# ★ 部署前必改:
|
||
# 1. app_key → 执行 `openssl rand -hex 16` 生成随机字符串填入(加密密钥,勿泄露)
|
||
# 2. admin_users → 可留空,启动后 `docker exec -it artalk artalk admin` 交互创建
|
||
# 3. site_url → 确认主站域名
|
||
# ----------------------------------------------------------------------
|
||
|
||
# 服务器
|
||
host: "0.0.0.0"
|
||
port: 23366
|
||
# ★ 加密密钥(务必生成随机值,openssl rand -hex 16)
|
||
app_key: ""
|
||
debug: false
|
||
locale: zh-CN
|
||
timezone: Asia/Shanghai
|
||
|
||
# 站点
|
||
site_default: "Yukun's Blog"
|
||
# ★ 备案期间用 IP 预览地址;备案完成后改回 https://sausagetoast.cloud
|
||
site_url: "http://106.54.37.223:8321"
|
||
login_timeout: 259200
|
||
|
||
# 数据库(SQLite 开箱即用,数据落地 ./data/artalk.db)
|
||
db:
|
||
type: sqlite
|
||
file: ./data/artalk.db
|
||
prepare_stmt: true
|
||
|
||
# 日志
|
||
log:
|
||
enabled: true
|
||
filename: ./data/artalk.log
|
||
|
||
# HTTP
|
||
http:
|
||
body_limit: 100
|
||
# 走 nginx 反代时填 X-Forwarded-For 获取真实 IP
|
||
proxy_header: "X-Forwarded-For"
|
||
|
||
# ★ 可信域名(CORS 防护:前端页面所在来源都要填)
|
||
trusted_domains:
|
||
- "https://sausagetoast.cloud"
|
||
- "http://localhost:4321"
|
||
- "http://106.54.37.223:8321" # 备案期间的主站预览地址(备案完成后可删)
|
||
|
||
# 管理员账户(留空,启动后用命令创建:docker exec -it artalk artalk admin)
|
||
admin_users: []
|
||
|
||
# ★ 审核与反垃圾(匿名方案必备)
|
||
moderator:
|
||
# 新评论默认直接显示(低流量博客可接受;想严格审核改 true)
|
||
pending_default: false
|
||
# 反垃圾 API 出错时是否拦截(false = 出错放行,避免误伤)
|
||
api_fail_block: false
|
||
# Akismet 反垃圾(可选,https://akismet.com 申请 key)
|
||
akismet_key: ""
|
||
# 腾讯云/阿里云内容安全(可选,留默认关闭)
|
||
tencent:
|
||
enabled: false
|
||
aliyun:
|
||
enabled: false
|
||
# ★ 本地关键词过滤(离线词库,零成本防垃圾)
|
||
keywords:
|
||
enabled: true
|
||
pending: true # 命中关键词 → 设为待审
|
||
files:
|
||
- ./data/keywords.txt
|
||
file_sep: "\n"
|
||
replace_to: "*"
|
||
|
||
# ★ 验证码(匿名评论防垃圾主力)
|
||
captcha:
|
||
enabled: true
|
||
always: false # 操作 3 次后才要求验证码(降低打扰)
|
||
captcha_type: image # 图形验证码,零第三方依赖
|
||
action_limit: 3
|
||
action_reset: 60
|
||
|
||
# IP 属地展示(可选,默认关闭)
|
||
ip_region:
|
||
enabled: false
|
||
db_path: ./data/ip2region.xdb
|
||
precision: province
|
||
|
||
# 图片上传
|
||
img_upload:
|
||
enabled: true
|
||
path: ./data/artalk-img/
|
||
max_size: 5
|
||
public_path: null
|
||
|
||
# ★ 邮件通知(国内服务器不部署 SMTP,关闭)
|
||
email:
|
||
enabled: false
|
||
|
||
# ★ 管理员通知(无 SMTP,邮件通知关闭;如需可开 Telegram/Bark 等推送)
|
||
admin_notify:
|
||
notify_pending: false
|
||
noise_mode: false
|
||
email:
|
||
enabled: false
|
||
telegram:
|
||
enabled: false
|
||
api_token: ""
|
||
receivers: []
|
||
bark:
|
||
enabled: false
|
||
server: ""
|
||
webhook:
|
||
enabled: false
|
||
url: ""
|
||
|
||
# ★ 身份认证(匿名方案:允许仅填昵称+邮箱评论)
|
||
auth:
|
||
enabled: true
|
||
# 允许匿名评论(跳过验证,仅填昵称+邮箱)
|
||
anonymous: true
|
||
# 邮箱验证码登录(无 SMTP 无法发验证码,关闭)
|
||
email:
|
||
enabled: false
|
||
# 社交登录默认全部关闭;需要时参考官方文档逐项开启
|
||
github:
|
||
enabled: false
|
||
google:
|
||
enabled: false
|
||
|
||
# 界面默认配置(前端 Comments.astro 也会覆盖部分项)
|
||
frontend:
|
||
placeholder: "喵~说点什么吧(昵称 + 邮箱即可评论)"
|
||
noComment: "快来抢沙发喵~"
|
||
sendBtn: "发送"
|
||
editorTravel: true
|
||
emoticons: https://cdn.jsdelivr.net/gh/ArtalkJS/Emoticons/grps/default.json
|
||
vote: true
|
||
voteDown: false
|
||
uaBadge: false
|
||
listSort: true
|
||
preview: true
|
||
flatMode: auto
|
||
nestMax: 2
|
||
nestSort: DATE_ASC
|
||
darkMode: inherit
|
||
gravatar:
|
||
mirror: https://weavatar.com/avatar/
|
||
params: sha256=1&d=mp&s=240
|
||
pagination:
|
||
pageSize: 20
|
||
readMore: true
|
||
autoLoad: true
|
||
heightLimit:
|
||
content: 300
|
||
children: 400
|
||
scrollable: false
|
||
imgLazyLoad: false
|
||
reqTimeout: 15000
|
||
versionCheck: true
|
||
pluginURLs: []
|