之前分享過如何用 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

