Skip to content
xgp2012Public

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

土豆BBS · 我的世界服务器门户

基于 Next.js + Tailwind CSS + Framer Motion(前端)、Node.js + Express(后端, 负责公告、管理员鉴权、MC 服务器状态、以及评论)的服务器官网 / 门户。 整站技术栈均为 Node.js。

功能

  • 首页:服务器状态(在线人数 / 版本 / 延迟)、最新公告、加入指引
  • 公告板:列表 + 详情页(详情页内嵌评论区)
  • 管理后台:管理员登录 + 公告增删改查(JWT 鉴权,bcrypt 密码哈希)
  • 评论区:后端内置 LokiJS 本地文件存储,无需任何外部数据库

技术栈

  • 前端:Next.js(App Router)、Tailwind CSS、Framer Motion
  • 后端:Node.js + Express(backend/ 单进程,同时提供 /api 与 /comments)
  • 公告数据:SQLite(使用 Node.js 内置 node:sqlite,本地文件 data/portal.db,无需原生编译)
  • 评论数据:LokiJS(本地文件 data/comments.db)
  • 鉴权:bcryptjs 密码哈希 + jsonwebtoken(HS256)签发 JWT

目录结构

backend/      Node 后端(Express):公告 + 鉴权 + MC状态 + 评论
  server.js          入口 HTTP 服务
  create-admin.js    创建/列出管理员的 CLI
  src/db.js          SQLite 初始化与公告/管理员 CRUD
  src/auth.js        bcrypt + jwt 鉴权中间件
  src/mcstatus.js    MC Server List Ping 状态探测
  src/comments.js    LokiJS 评论路由
frontend/     Next.js 应用
scripts/      nginx.conf、systemd unit、start.sh

快速开始(开发)

1. 后端

cd backend
npm install
export JWT_SECRET=dev-secret DB_PATH=data/portal.db MC_SERVER_HOST=127.0.0.1 MC_SERVER_PORT=25565
node create-admin.js create --user admin --password '你的密码'
npm start                       # 监听 127.0.0.1:6666

2. 前端

cd frontend
cp .env.local.example .env.local   # 一般无需修改
npm install
npm run dev                        # http://localhost:4444,/api 与 /comments 已反代

快速部署(下载 Actions 产物,推荐)

CI 会产出单一自包含包 tudoubbs-deploy.zip,内含装好依赖的 Node 后端、可直接 next start 的前端,以及 start.sh。你只需:

# 1. 在 GitHub 仓库 Actions → 最新 Build & Package → 下载 tudoubbs-deploy.zip
# 2. 解压并启动
unzip tudoubbs-deploy.zip -d tudoubbs
cd tudoubbs
bash start.sh
  • 首次运行会自动创建管理员(控制台会打印 用户名/密码),访问 http://<服务器IP>:4444
  • 前端在 :4444 直接可用;/api 与 /comments 由前端反代到本地后端 :6666
  • 数据落在 data/(portal.db + comments.db),日志在 data/*.log

生产部署(域名 + HTTPS,可选)

  • nginx.conf:反代 / → Next(4444)、/api → 后端(6666)、/comments → 后端(6666)
  • systemd/tudoubbs-backend.service:单 Node 后端服务;systemd/tudoubbs-next.service:Next 服务 需自行把目录放到 /opt/tudoubbs,并把 JWT_SECRET 改为强随机值
  • 反向代理由你自行配置(见 nginx.conf 模板 + certbot 签发证书)

环境变量

后端(backend 或 start.sh 内设置)

变量 默认 说明
PORT 6666 后端 HTTP 监听端口
DB_PATH data/portal.db SQLite 文件路径
DATA_DIR data/ 数据目录(SQLite + comments.db 落盘处)
JWT_SECRET dev-insecure-... 管理员 JWT 签名密钥(生产必填)
JWT_TTL 86400 JWT 有效期(秒)
MC_SERVER_HOST / MC_SERVER_PORT 127.0.0.1 / 25565 MC 服务器地址
MC_TIMEOUT 5000 MC 状态探测超时(毫秒)

前端

变量 说明
NEXT_PUBLIC_API_BASE 留空=同源(由 Nginx 反代 /api 与 /comments)
GO_API_TARGET 开发时 Next 反代 /api 的目标(默认 6666)
COMMENTS_TARGET 开发时 Next 反代 /comments 的目标(默认 6666)

备注

  • 评论系统用 LokiJS 将评论直接落盘到本地 data/comments.db,无需外部数据库; 它与公告/鉴权/MC状态运行在同一个 Node 进程内(统一 /comments 路由)。
  • MC 状态使用 TCP "Server List Ping" 协议(默认开启,无需 enable-query)。
  • 评论的删除操作复用后端颁发的 JWT(共享 JWT_SECRET),管理员登录一次即可。
  • 公告库使用 Node.js 内置的 node:sqlite(Node 22.5+ 可用,部署服务器 Node 24 满足), 属于 Node 自带模块,无任何原生编译 / 平台二进制依赖,下载即跑,彻底避免原生模块 在目标机上因 glibc / Node 版本不匹配而加载失败的问题。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages