挖到寶。Docker部署輕量又好看的 Markdown 博客系統:PaperGrid

之前分享過如何用 Halo 2.0 搭建自己的博客站,不過對一部分用戶來說,這類項目功能雖然完整,但也顯得偏重了一些。相比之下,有些人更喜歡輕量、簡潔,甚至只想要一個能穩定託管內容的小站。

最近我發現了一個新的博客項目 PaperGrid,整體風格比較輕量,支持 Markdown 編輯,前端表現也不錯,同時還有一定的可玩性。這篇文章就簡單聊聊,如何把它部署起來並用起來。

對我個人來說,博客其實已經替代筆記。把想法、折騰過程和使用體驗記錄下來,不只是方便自己以後回看,也能分享給有同樣需求的人。像 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,創建新的應用程序。

使用展示

部署完畢後,瀏覽器輸入NAS_IP:6066即可訪問服務,界面如下。

點擊右上角的登錄,可進入登錄界面。默認管理員賬號郵箱:admin@example.com,默認密碼

密碼:admin123。初次登錄,建議立即修改。

新建文章,這個文章編輯器,比我現在Halo上的好用~

各種配置,在後臺也都支持,可DIY的程度也蠻高。

最後

總的來說,PaperGrid 比較適合喜歡輕量化、自建自由度又比較高的用戶。它不像一些傳統博客系統那麼「重」,但基礎功能和可玩性並不弱,尤其是對喜歡 Markdown 寫作、希望自己折騰頁面風格和功能的人來說,還是很有吸引力的。對於想在 NAS 上快速搭一個個人博客、知識庫或者簡單內容站點的朋友來說,確實是一個值得嘗試的新選擇。

感謝觀看,本文完。

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com