惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
U
Unit 42
aimingoo的专栏
aimingoo的专栏
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
博客园_首页
M
MIT News - Artificial intelligence
博客园 - 司徒正美
T
The Blog of Author Tim Ferriss
D
DataBreaches.Net
IT之家
IT之家
C
Check Point Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
D
Docker
Microsoft Security Blog
Microsoft Security Blog
Google DeepMind News
Google DeepMind News

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
Docker部署一个轻量又好看的 Markdown 博客系统:PaperGrid -...
2026-03-10 · via 少数派

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

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

截屏2026-03-09 12.36.07.png

对我个人来说,博客其实已经替代笔记。把想法、折腾过程和使用体验记录下来,不只是方便自己以后回看,也能分享给有同样需求的人。像 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,创建新的应用程序。

截屏2026-03-06 17.01.16.png

使用展示

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

截屏2026-03-09 09.41.42.png

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

截屏2026-03-09 11.50.50.png

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

截屏2026-03-09 11.58.16.png
截屏2026-03-09 11.57.10.png

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

截屏2026-03-09 12.37.24.png

最后

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

感谢观看,本文完。