挖到宝。Docker一键部署轻量好看的 Markdown 博客:PaperGrid

2026-03-10 09:19:34 1点赞 12收藏 0评论

之前分享过如何用 Halo 2.0 搭建自己的博客站,不过对一部分用户来说,这类项目功能虽然完整,但也显得偏重了一些。相比之下,有些人更喜欢轻量、简洁,甚至只想要一个能稳定托管内容的小站。

挖到宝。Docker一键部署轻量好看的 Markdown 博客:PaperGrid

最近我发现了一个新的博客项目 PaperGrid,整体风格比较轻量,支持 Markdown 编辑,前端表现也不错,同时还有一定的可玩性。这篇文章就简单聊聊,如何把它部署起来并用起来。

挖到宝。Docker一键部署轻量好看的 Markdown 博客:PaperGrid

对我个人来说,博客其实已经替代笔记。把想法、折腾过程和使用体验记录下来,不只是方便自己以后回看,也能分享给有同样需求的人。像 PaperGrid 这样部署不算复杂、界面也比较清爽的项目,用来搭一个属于自己的记录空间,确实挺合适。


项目说明

完整项目名:xywml/PaperGrid,可于GitHub搜索。

作者的话:

项目正在快速开发中,欢迎部署使用,Star,反馈。

目前主要特性

  • Next.js App Router + React 19

  • Prisma ORM

  • NextAuth 认证

  • 管理后台(文章、标签、分类、评论、用户、系统设置、文件管理)

  • 文件管理(本地图片上传、预览、删除、URL 回填)

  • MDX 内容支持、代码高亮、数学公式与图表

  • 国际化与深色模式

  • 内置多套前台主题,可在 管理后台 -> 样式 一键切换(纸格笔记 / 终端机能 / 清透视窗 / 像素账本)

  • 可添加智能AI助手


部署流程

威联通NAS为例,通过Docker Compose的方式进行部署。

部署代码如下,可实现快速启用:

services: papergrid: image: ghcr.io/xywml/papergrid:latest container_name: papergrid ports: - "6066:3000" environment: DATABASE_URL: "file:/data/db.sqlite" # 可选:AI 向量索引单独文件 # AI_VECTOR_DATABASE_URL: "file:/data/ai-index.sqlite" # SQLITE_JOURNAL_MODE: "DELETE" # 先用 NAS IP + 端口,后面如果加反代/域名,再改成正式地址 NEXTAUTH_URL: "http://192.168.100.138:6066" NEXT_PUBLIC_APP_URL: "http://192.168.100.138:6066" # 生产环境建议设置 NEXTAUTH_SECRET: "请替换成一串足够长的随机字符串" # 本地媒体与缓存 MEDIA_ROOT: "/data/uploads" NEXT_CACHE_DIR: "/data/.next-cache" # 首次初始化可选 # INIT_ADMIN_TOKEN: "请替换为随机字符串" # ADMIN_INIT_PASSWORD: "请替换为强密码" # 先不开 OAuth / SMTP,跑通后再补 NEXT_PUBLIC_DEFAULT_LOCALE: "zh" # 内网不反代的话,Host 校验放行 AUTH_TRUST_HOST: "true" volumes: - /share/Container/boke/data:/data restart: unless-stopped logging: driver: "json-file" options: max-size: "10m" max-file: "5"

完整的环境变量如下,大家也可自行创建.env文件:

DATABASE_URL="file:./dev.db" # 可选:为 AI 向量索引单独使用 SQLite 文件(推荐生产启用) # AI_VECTOR_DATABASE_URL="file:/data/ai-index.sqlite" # 可选:AI 向量索引使用的 SQLite 日志模式;默认 DELETE(稳定优先) # SQLITE_JOURNAL_MODE="DELETE" NEXTAUTH_URL="http://localhost:6066" NEXTAUTH_SECRET="your-secret-key-change-this-in-production" # Local media storage MEDIA_ROOT="/data/uploads" MEDIA_MAX_UPLOAD_MB="10" MEDIA_MAX_INPUT_PIXELS="40000000" MEDIA_RESOLVE_CACHE_TTL_MS="30000" # 媒体元数据缓存(ms) INIT_ADMIN_TOKEN="" ADMIN_INIT_PASSWORD="" GITHUB_CLIENT_ID="" GITHUB_CLIENT_SECRET="" GOOGLE_CLIENT_ID="" GOOGLE_CLIENT_SECRET="" CLOUDINARY_CLOUD_NAME="" CLOUDINARY_API_KEY="" CLOUDINARY_API_SECRET="" SMTP_HOST="" SMTP_PORT="465" SMTP_SECURE="true" SMTP_USER="" SMTP_PASS="" # 可选:多个收件人用逗号分隔;留空则自动发给所有管理员邮箱 EMAIL_TO="" # 可选:回复通知邮件拒收名单(逗号/换行分隔) EMAIL_REPLY_DENYLIST="" # 可选:退订链接签名密钥(不填则回退到 NEXTAUTH_SECRET) EMAIL_UNSUBSCRIBE_SECRET="" # 可选:退订链接有效期(天) EMAIL_REPLY_UNSUBSCRIBE_EXPIRE_DAYS="365" GOTIFY_URL="" GOTIFY_TOKEN="" NEXT_PUBLIC_APP_URL="http://localhost:6066" NEXT_PUBLIC_DEFAULT_LOCALE="zh" # 可选:日志级别(fatal/error/warn/info/debug/trace/silent) # LOG_LEVEL="info" # 自定义 Head 注入 – CSP 放行域名 # 在管理后台「样式 → 自定义 Head 注入」添加外部脚本后,需将脚本域名加到此处,否则浏览器会因 CSP 拦截 # HEAD_INJECT_SCRIPT_ORIGINS="https://stats.example.com,https://www.googletagmanager.com" # 可选:关闭 script-src 'unsafe-inline'(默认保留以兼容旧部署,确认无内联脚本后可设为 false) # CSP_ALLOW_UNSAFE_INLINE_SCRIPT="false"

打开Container Station,创建新的应用程序。

挖到宝。Docker一键部署轻量好看的 Markdown 博客:PaperGrid


使用展示

部署完毕后,浏览器输入NAS_IP:6066即可访问服务,界面如下。

挖到宝。Docker一键部署轻量好看的 Markdown 博客:PaperGrid

点击右上角的登录,可进入登录界面。默认管理员账号邮箱:admin@example.com,默认密码
admin123。初次登录,建议立即修改。

挖到宝。Docker一键部署轻量好看的 Markdown 博客:PaperGrid

新建文章,这个文章编辑器,比我现在Halo上的好用~

挖到宝。Docker一键部署轻量好看的 Markdown 博客:PaperGrid挖到宝。Docker一键部署轻量好看的 Markdown 博客:PaperGrid

各种配置,在后台也都支持,可DIY的程度也蛮高。

挖到宝。Docker一键部署轻量好看的 Markdown 博客:PaperGrid


最后

总的来说,PaperGrid 比较适合喜欢轻量化、自建自由度又比较高的用户。它不像一些传统博客系统那么「重」,但基础功能和可玩性并不弱,尤其是对喜欢 Markdown 写作、希望自己折腾页面风格和功能的人来说,还是很有吸引力的。对于想在 NAS 上快速搭一个个人博客、知识库或者简单内容站点的朋友来说,确实是一个值得尝试的新选择。

感谢观看,本文完。

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
12
扫一下,分享更方便,购买更轻松