个人开发不易,欢迎大家点Star关注,谢谢啦:
概览
- 基于 Laravel + Better Auth + PostgreSQL + Redis 构建的现代化 Web 社区平台
- 支持多种登录方式(邮箱验证码、邮箱密码、微信/QQ 扫码)与完整的用户权限管理
- 内置 Markdown 编辑器,支持粘贴图片自动上传,提供 SMTP 邮件订阅与 RSS 订阅
- 游客访问自动使用预构建静态 HTML + Gzip 压缩,性能优化到极致
- Docker Compose 一键部署,支持 Docker Hub 镜像快速启动
前言
最近我在 B 站做 up 主1,发了不少关于 AI 应用、Vibe Coding、国自然标书写作的教程视频,粉丝慢慢多了起来。但随之而来的是一个让我头疼的问题:怎么跟大家保持高效互动?
一开始我建了个微信群,很快就发现不对劲——微信群只能容纳 200 人,而且每次我更新项目、发布新功能,都得在群里发消息。问题是微信群是个聊天工具,消息很快就被刷屏了,后来加入的小伙伴根本看不到历史更新。更要命的是,我用 AI 开发东西更新频繁,总不能每改一次就在群里吆喝一声吧?(~ ̄▽ ̄)~
后来我试了 QQ 频道,心想这下总该行了吧?结果更崩溃:发个消息审核半小时都过不了,链接还会被”智能”压缩成乱码,完全没法正常使用。最关键的是,QQ 频道不支持 Markdown,也无法与 Claude Code 这样的 Vibe Coding 工具交互——而我恰恰需要用 AI 来自动发布更新公告、总结项目进展。
你可能会问:为什么不用 Discourse 或 Telegram?国外的小伙伴确实可以,但国内用户访问不便。我想来想去,既然咱们都会用 AI 了,为什么不手搓一个呢?于是在写国自然标书的间隙,我花了两天时间开发了 Bensz Channel——一个专为 AI 时代 up 主设计的社区平台。
Bensz Channel 基于 Laravel + Better Auth + PostgreSQL + Redis + Docker 构建,采用三栏式布局(左侧频道导航、中间内容流、右侧社区信息),核心特点是:支持 Markdown、可与 Claude Code 交互、按频道组织内容、支持 RSS/邮件订阅。它的定位不是传统论坛,更像是 QQ 频道和知识星球的结合体——我可以用 AI 自动发布项目更新,小伙伴们可以通过 RSS 订阅或邮件通知及时获取消息,内容按频道沉淀,后来者也能看到完整历史。
最重要的是,Docker Compose 一键部署,5 分钟就能拥有自己的社区平台!我已经在自己的服务器上跑起来了,实际地址是 https://channel.hwb0307.com2,小伙伴们可以先去体验一下。
我在 B 站也讨论了一下相关的情况,欢迎查看3:
下面,我就来详细介绍如何部署和使用这个平台!
核心特性
在正式开始部署之前,让我们先了解一下 Bensz Channel 都有哪些亮点功能。
频道系统
Bensz Channel 的核心是频道系统。你可以创建多个主题频道,比如”技术分享”、”生活日常”、”问答互动”等,每个频道都有独立的内容流。系统还内置了两个特殊频道:
- 精华频道:自动聚合所有被标记为”精华”的文章,方便粉丝快速找到优质内容
- 未分类频道:默认隐藏,用于临时存放未归类的内容
管理员可以在后台决定哪些频道出现在顶栏导航中,隐藏的频道仍然保留访问地址和内容,只是不会在首页显示。这种设计让内容组织更加灵活!
多种登录方式
为了降低用户的注册门槛,Bensz Channel 支持多种登录方式2:
- 邮箱验证码登录:无需记密码,输入邮箱收验证码即可登录
- 邮箱密码登录:传统的账号密码登录方式
- 微信扫码登录:支持微信开放平台 OAuth(也提供演示模式)
- QQ 扫码登录:支持 QQ 互联 OAuth(也提供演示模式)
是不是感觉很贴心?特别是微信/QQ 扫码登录,对于习惯使用社交账号的用户来说非常方便。而且,项目默认开启演示模式,即使你没有申请微信/QQ 开放平台账号,也可以直接体验扫码登录的流程!
Markdown 支持
作为一个技术向的社区平台,Markdown 支持是必不可少的。Bensz Channel 的文章和评论都支持 Markdown 渲染,而且还有一个超级实用的功能:粘贴图片自动上传!
你只需要在编辑器中直接粘贴图片(Ctrl+V 或 Cmd+V),系统会自动上传到服务器并插入 Markdown 图片链接。上传的图片统一存放在 data/web/storage/app/public/media/ 目录,重新部署后也不会丢失。这个功能对于经常需要插入截图的技术文章来说,简直不要太方便!
订阅通知
Bensz Channel 提供了两种订阅方式:
SMTP 邮件订阅(需登录):
– 默认开启”全部版块新文章提醒”和”评论 @ 提醒”
– 可以在订阅设置页面关闭全部提醒,或仅保留指定版块
– 管理员可以在后台配置 SMTP 服务器,支持测试邮件发送
RSS 订阅(公开):
– 全部版块:/feeds/articles.xml
– 单个版块:/feeds/channels/{channel-public-id}.xml
– 任何拿到链接的用户都可以在 RSS 阅读器中订阅
值得一提的是,Bensz Channel 的公开文章、频道和频道 RSS 链接统一使用固定长度的不可变 public_id,即使你修改了文章标题或频道名称,链接也不会失效。这个设计细节体现了对用户体验的用心!
静态页面优化
这是 Bensz Channel 最让我自豪的功能之一:游客访问自动使用预构建静态 HTML + Gzip 压缩!
当游客(未登录用户)访问网站时,系统会优先返回预先构建好的静态 HTML 文件,而不是每次都动态渲染页面。这些静态文件还会额外生成 .gz 压缩版本,Nginx 开启 gzip_static 后可以直接返回压缩文件,大幅提升加载速度。
每次管理员修改文章/频道、成员发表评论后,系统会自动触发静态站点重建。高频更新的文章和评论会走异步队列和增量重建,不会阻塞用户操作。这种设计让 Bensz Channel 在保持动态交互能力的同时,拥有接近静态网站的访问速度!
而且,静态资源(CSS、JS、图片)采用 Vite 指纹命名,可以通过 ASSET_URL 接入 CDN,进一步加速全球访问。我自己就接入了 DogeCloud CDN,效果非常明显!
管理后台
Bensz Channel 提供了完整的管理后台,包括:
- 频道管理:创建、编辑、删除频道,控制顶栏显示
- 文章管理:一键设置文章置顶或精华
- 用户管理:查看用户列表、修改用户资料、设置角色、封禁用户
- 站点设置:自定义站点名称、标语、CDN 地址、登录方式开关
- 订阅设置:配置 SMTP 服务器、测试邮件发送
管理后台的大部分高频操作都改为了紧凑图标按钮,鼠标悬停会显示用途提示,操作起来非常高效。
技术栈
在介绍部署方法之前,让我们先了解一下 Bensz Channel 的技术架构。作为一个现代化的 Web 应用,它采用了以下技术栈2:
| 层级 | 方案 |
|---|---|
| Web 应用 | Laravel 12 + Blade + Tailwind CSS |
| 认证服务 | Better Auth + Express |
| 数据库 | PostgreSQL 17 |
| 缓存 | Redis 7 |
| Web 服务 | Nginx + PHP-FPM |
| 前端构建 | Vite 7 |
| 本地邮件 | Mailpit |
| 部署 | Docker Compose |
这套技术栈的选择有几个考虑:
Laravel 12:作为 PHP 生态中最流行的框架,Laravel 提供了完善的 ORM、路由、中间件、队列等功能,开发效率极高。而且 Laravel 的文档非常详细,社区活跃,遇到问题很容易找到解决方案。
Better Auth:这是一个现代化的认证服务,支持多种登录方式(邮箱验证码、密码、OAuth 等),而且可以自托管。Bensz Channel 将 Better Auth 作为独立的认证服务运行,Laravel 通过内部共享密钥调用认证 API,实现了认证逻辑与业务逻辑的分离。
PostgreSQL 17:相比 MySQL,PostgreSQL 在复杂查询、JSON 支持、全文搜索等方面更有优势。而且 PostgreSQL 的 MVCC(多版本并发控制)机制让并发性能更好,特别适合社区平台这种读写频繁的场景。
Redis 7:用于缓存和队列,大幅提升响应速度。Bensz Channel 的静态页面重建任务就是通过 Redis 队列异步处理的。
Nginx + PHP-FPM:Nginx 作为 Web 服务器,PHP-FPM 处理 PHP 请求,这是 PHP 应用的经典组合。Nginx 的静态文件服务能力非常强,配合 gzip_static 可以直接返回预压缩的静态文件。
Vite 7:现代化的前端构建工具,支持热更新、代码分割、资源指纹等功能。Vite 的构建速度比 Webpack 快很多,开发体验非常好。
Mailpit:本地邮件测试工具,可以拦截所有发出的邮件并在 Web 界面中查看。在开发和测试阶段非常有用,避免误发邮件给真实用户。
Docker Compose:一键部署所有服务,包括 Web 应用、认证服务、数据库、缓存、邮件服务等。所有配置都在 docker-compose.yml 中定义,部署和迁移都非常方便。
快速部署
好了,理论知识讲得差不多了,下面进入实战环节!Bensz Channel 提供了两种部署方式:使用 Docker Hub 镜像(推荐)和本地构建镜像。我们先介绍最简单的 Docker Hub 镜像部署方式。
前置要求
在开始之前,请确保你的服务器满足以下要求:
- Docker 20.10+
- Docker Compose 2.0+
- 至少 2GB 内存(推荐 4GB)
- 至少 10GB 磁盘空间
如果你还没有安装 Docker 和 Docker Compose,可以参考我之前的教程《Docker系列 学习Docker之前》。
创建工作目录
首先,我们创建一个工作目录来存放配置文件和数据:
work=~/docker/bensz-channel
mkdir -p $work/config
cd $work
创建 docker-compose.yml
在工作目录中创建 docker-compose.yml 文件:
vim docker-compose.yml
粘贴以下内容:
services:
channel-web:
image: huangwb8/bensz-channel-web:latest
container_name: channel-web
ports:
- "${WEB_PORT:-6542}:80"
env_file:
- config/.env
depends_on:
channel-auth:
condition: service_healthy
channel-postgres:
condition: service_healthy
channel-redis:
condition: service_started
channel-mailpit:
condition: service_started
volumes:
- ./data/web/storage:/var/www/html/storage
- ./data/web/bootstrap-cache:/var/www/html/bootstrap/cache
- ./data/web/static:/var/www/html/public/${STATIC_SITE_OUTPUT_DIR:-static}
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1/up || exit 1"]
interval: 10s
timeout: 5s
retries: 12
channel-worker:
image: huangwb8/bensz-channel-web:latest
container_name: channel-worker
entrypoint:
- php
- /var/www/html/artisan
- queue:work
- --queue=static-builds,default
- --sleep=1
- --tries=3
- --timeout=900
env_file:
- config/.env
depends_on:
channel-web:
condition: service_healthy
channel-postgres:
condition: service_healthy
channel-redis:
condition: service_started
volumes:
- ./data/web/storage:/var/www/html/storage
- ./data/web/bootstrap-cache:/var/www/html/bootstrap/cache
- ./data/web/static:/var/www/html/public/${STATIC_SITE_OUTPUT_DIR:-static}
restart: unless-stopped
channel-auth:
image: huangwb8/bensz-channel-auth:latest
container_name: channel-auth
env_file:
- config/.env
depends_on:
channel-postgres:
condition: service_healthy
channel-mailpit:
condition: service_started
healthcheck:
test: ["CMD-SHELL", "node -e \"fetch('http://127.0.0.1:3001/health').then(r => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))\""]
interval: 10s
timeout: 5s
retries: 12
start_period: 120s
channel-postgres:
image: postgres:17-alpine
container_name: channel-postgres
env_file:
- config/.env
volumes:
- ./data/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-bensz} -d ${POSTGRES_DB:-bensz_channel}"]
interval: 5s
timeout: 5s
retries: 12
channel-redis:
image: redis:7-alpine
container_name: channel-redis
command: redis-server --appendonly yes --dir /data
volumes:
- ./data/redis:/data
channel-mailpit:
image: axllent/mailpit:latest
container_name: channel-mailpit
command: ["--database", "/data/mailpit.db"]
ports:
- "${MAILPIT_PORT:-8025}:8025"
volumes:
- ./data/mailpit:/data
这个配置文件定义了 6 个服务:
- channel-web:Web 应用主容器,运行 Laravel + Nginx
- channel-worker:队列处理容器,负责异步任务(如静态页面重建)
- channel-auth:认证服务容器,运行 Better Auth
- channel-postgres:PostgreSQL 数据库
- channel-redis:Redis 缓存和队列
- channel-mailpit:本地邮件测试工具
创建配置文件
接下来,我们需要创建 config/.env 配置文件:
vim config/.env
粘贴以下内容(记得修改密钥和密码):
# ============================================
# Docker Compose 直接引用的公开配置
# ============================================
# 端口映射
WEB_PORT=6542
MAILPIT_PORT=8025
# 静态站点配置
STATIC_SITE_OUTPUT_DIR=static
# PostgreSQL 配置
DB_HOST=postgres
POSTGRES_DB=bensz_channel
POSTGRES_USER=bensz
# Laravel 数据库连接配置
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=bensz_channel
DB_USERNAME=bensz
# ============================================
# 密钥类配置(敏感信息 - 必须修改)
# ============================================
# Laravel 应用密钥(运行下面命令生成)
# docker run --rm huangwb8/bensz-channel-web:latest php artisan key:generate --show
APP_KEY=base64:your_generated_app_key_here
# 数据库密码(修改为强密码)
DB_PASSWORD=your_secure_db_password_here
POSTGRES_PASSWORD=your_secure_db_password_here
# Better Auth 密钥(修改为强随机字符串)
BETTER_AUTH_SECRET=your_secure_auth_secret_here
BETTER_AUTH_INTERNAL_SECRET=your_secure_internal_secret_here
# 管理员密码
ADMIN_PASSWORD=your_admin_password_here
# 邮件服务凭证(可选)
MAIL_USERNAME=
MAIL_PASSWORD=
# AWS 凭证(可选)
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
# 第三方登录凭证(可选)
WECHAT_CLIENT_ID=
QQ_CLIENT_ID=
重要提示:上面的配置文件中有几个密钥和密码必须修改:
- 生成 Laravel 应用密钥:
docker run --rm huangwb8/bensz-channel-web:latest php artisan key:generate --show
将输出的密钥(类似 base64:xxxxxx)复制到 APP_KEY 字段。
-
设置数据库密码:将
DB_PASSWORD和POSTGRES_PASSWORD改为强密码(建议使用随机生成的 32 位字符串)。 -
设置 Better Auth 密钥:将
BETTER_AUTH_SECRET和BETTER_AUTH_INTERNAL_SECRET改为强随机字符串(建议使用随机生成的 64 位字符串)。 -
设置管理员密码:将
ADMIN_PASSWORD改为你想要的管理员密码。
启动服务
配置文件准备好后,就可以启动服务了:
docker compose up -d
第一次启动会拉取镜像,需要等待一段时间。你可以通过以下命令查看启动日志:
docker compose logs -f
当你看到类似这样的日志时,说明服务已经启动成功:
channel-web | [INFO] Application ready
channel-auth | [INFO] Better Auth service started on port 3001
channel-postgres | [INFO] database system is ready to accept connections
按 Ctrl+C 退出日志查看。
访问网站
启动成功后,你可以通过以下地址访问:
- 🌐 站点首页:
http://localhost:6542(或http://你的服务器IP:6542) - 🔑 登录页:
http://localhost:6542/login - 📬 Mailpit:
http://localhost:8025
默认管理员账号:
– 📧 邮箱:[email protected]
– 🔑 密码:你在 config/.env 中设置的 ADMIN_PASSWORD
– 🆔 用户ID:0
是不是感觉很简单?整个部署过程不超过 10 分钟!(~ ̄▽ ̄)~
配置反向代理
如果你想通过域名访问 Bensz Channel,需要配置反向代理。这里我推荐使用 Nginx Proxy Manager(NPM),它提供了友好的 Web 界面,配置起来非常方便。
不了解 Nginx Proxy Manager 用法的小伙伴,请看《Docker系列 两大神器NPM和ddns-go的安装》。
域名解析
首先,在你的域名托管商后台(或使用 ddns-go)解析好域名,比如 channel.example.com,指向你的服务器 IP。
添加 Proxy Host
在 Nginx Proxy Manager 中添加一个 Proxy Host:
- Domain Names:
channel.example.com - Scheme:
http - Forward Hostname / IP:
你的服务器局域网IP(如192.168.1.100) - Forward Port:
6542 - Block Common Exploits:勾选
- Websockets Support:勾选
在 SSL 标签页中申请 Let’s Encrypt 证书,勾选 Force SSL 和 HTTP/2 Support。
修改配置文件
反向代理配置好后,需要修改 config/.env 文件,将 APP_URL 改为你的域名:
vim config/.env
修改以下内容:
APP_URL=https://channel.example.com
SESSION_SECURE_COOKIE=true
然后重启服务:
docker compose restart
现在你就可以通过 https://channel.example.com 访问你的社区平台了!
进阶配置
配置 SMTP 邮件服务
如果你想启用邮件订阅功能,需要配置 SMTP 服务器。Bensz Channel 支持在后台管理界面中配置 SMTP,非常方便。
- 以管理员身份登录
- 进入”订阅设置”页面
- 填写 SMTP 服务器信息:
- SMTP 服务器:如
smtp.gmail.com - SMTP 端口:如
587 - SMTP 用户名:你的邮箱地址
- SMTP 密码:邮箱密码或应用专用密码
- 发件人邮箱:发送邮件时显示的发件人地址
- 发件人名称:发送邮件时显示的发件人名称
- 点击”测试 SMTP”按钮,输入测试收件邮箱,验证配置是否正确
- 测试通过后,点击”保存 SMTP 配置”
配置保存后,系统会自动使用 SMTP 服务器发送邮件订阅通知、评论提醒和邮箱验证码。
配置 CDN 加速
Bensz Channel 支持将静态资源(CSS、JS、图片)托管到 CDN,加速全球访问。配置方法有两种:
方式一:后台站点设置(推荐)
- 以管理员身份登录
- 进入”站点设置”页面
- 找到”静态资源 CDN”字段
- 填写 CDN 域名,例如:
https://cdn.example.com - 点击”保存站点设置”
方式二:环境变量
在 config/.env 中配置:
ASSET_URL=https://cdn.example.com
配置后,页面中的静态资源会自动使用 CDN 域名,而页面链接继续使用 APP_URL。
关于 DogeCloud CDN 的详细接入方法,可以参考项目的开发者文档2。
配置微信/QQ 扫码登录
Bensz Channel 默认开启微信/QQ 扫码登录的演示模式,无需任何外部平台账号即可体验。如果你想启用真实的 OAuth 登录,需要完成以下步骤:
- 在微信开放平台(或 QQ 互联)创建网站应用,获取
Client ID和Client Secret - 配置回调地址:
- 微信:
https://你的域名/auth/social/wechat/callback - QQ:
https://你的域名/auth/social/qq/callback - 修改
config/.env文件:
# 微信扫码登录
WECHAT_QR_MODE=oauth
WECHAT_CLIENT_ID=你的微信Client_ID
WECHAT_CLIENT_SECRET=你的微信Client_Secret
# QQ 扫码登录
QQ_QR_MODE=oauth
QQ_CLIENT_ID=你的QQ_Client_ID
QQ_CLIENT_SECRET=你的QQ_Client_Secret
- 重启服务:
docker compose restart
详细的配置教程可以参考项目文档《如何让本项目支持微信和QQ扫码登陆》2。
数据备份
Bensz Channel 的所有数据都存储在 data/ 目录中,包括:
data/postgres:PostgreSQL 数据库data/redis:Redis 数据data/mailpit:Mailpit 邮件数据data/web/storage:Laravel 运行时存储(包括上传的图片)data/web/static:预构建的静态页面
备份整个 data/ 目录即可保存所有数据。你可以使用 rsync、tar 或其他备份工具定期备份:
# 使用 tar 打包备份
tar -czf bensz-channel-backup-$(date +%Y%m%d).tar.gz data/
# 使用 rsync 同步到远程服务器
rsync -avz data/ user@backup-server:/path/to/backup/
如果需要恢复数据,只需将备份的 data/ 目录复制回工作目录,然后重启服务即可。
使用技巧
频道管理
作为管理员,你可以在”频道管理”页面创建和管理频道。一些实用技巧:
- 频道顺序:频道在顶栏的显示顺序可以通过拖拽调整(如果主题支持)
- 隐藏频道:不想在顶栏显示的频道可以隐藏,但仍然保留访问地址
- 精华频道:将优质文章标记为”精华”,它们会自动出现在精华频道中
文章管理
发布文章时的一些技巧:
- Markdown 语法:支持标准 Markdown 语法,包括标题、列表、代码块、表格等
- 粘贴图片:直接在编辑器中粘贴图片(Ctrl+V 或 Cmd+V),系统会自动上传
- 置顶文章:重要公告可以设置为置顶,会在首页优先显示
- 精华文章:优质内容可以标记为精华,方便粉丝快速找到
用户管理
管理用户时的一些技巧:
- 稳定用户 ID:每个用户都有一个稳定的 ID(从 101 开始递增),不会因为修改昵称或邮箱而改变
- 封禁用户:可以对违规用户进行 1 天、3 天、7 天、30 天、永久或自定义时间的封禁
- 批量操作:支持多选批量删除用户
- 用户仪表盘:可以查看最近 7 天的登录/活跃、评论与发文统计
订阅设置
订阅功能的一些技巧:
- 测试 SMTP:配置 SMTP 后,先点击”测试 SMTP”按钮验证配置是否正确,再保存
- 选择性订阅:用户可以选择只订阅特定频道的新文章,而不是全部频道
- RSS 订阅:RSS 订阅链接是公开的,可以分享给任何人
常见问题
启动失败怎么办?
如果服务启动失败,可以通过以下命令查看日志:
docker compose logs
常见的启动失败原因:
- 端口被占用:检查 6542 和 8025 端口是否被其他程序占用,可以在
config/.env中修改端口号 - 密钥未配置:检查
config/.env中的APP_KEY、DB_PASSWORD、BETTER_AUTH_SECRET等是否已正确配置 - 磁盘空间不足:确保服务器有足够的磁盘空间(至少 10GB)
如何升级到新版本?
Bensz Channel 使用 Docker Hub 镜像,升级非常简单:
# 拉取最新镜像
docker compose pull
# 重启服务
docker compose up -d
升级后,数据会自动迁移,不会丢失任何内容。
如何修改管理员密码?
管理员可以在”账户设置”页面修改自己的密码。如果忘记了管理员密码,可以通过以下方法重置:
- 停止服务:
docker compose down - 修改
config/.env中的ADMIN_PASSWORD - 重启服务:
docker compose up -d
系统会自动将管理员密码重置为 config/.env 中配置的值。
如何迁移到新服务器?
迁移 Bensz Channel 非常简单:
- 在旧服务器上备份
data/目录和config/.env文件 - 在新服务器上安装 Docker 和 Docker Compose
- 复制
docker-compose.yml、config/.env和data/目录到新服务器 - 启动服务:
docker compose up -d
迁移完成后,所有数据和配置都会保留。
小结
Bensz Channel 是一个专为自媒体创作者设计的社区平台,它结合了 QQ 频道的频道化内容组织和知识星球的轻量级互动体验,提供了完整的用户管理、订阅通知、静态页面优化等功能。通过 Docker Compose 一键部署,5 分钟就能拥有自己的社区平台,而且完全开源,可以根据自己的需求随意定制。
相比传统的论坛程序,Bensz Channel 更注重内容的组织和沉淀,而不是单纯的讨论。频道系统让内容分类更加清晰,Markdown 支持让技术文章的撰写更加高效,静态页面优化让访问速度接近静态网站,订阅通知让粉丝不会错过任何更新。这些特性让 Bensz Channel 成为自媒体创作者与粉丝深度互动的理想平台。
我自己已经在 https://channel.hwb0307.com 部署了 Bensz Channel,用于与博客读者进行更深度的交流。如果你也想搭建一个属于自己的社区平台,不妨试试 Bensz Channel!项目完全开源,代码托管在 GitHub1,欢迎 Star 和贡献代码!
以后有什么使用心得会继续更新内容。请拭目以待!(~ ̄▽ ̄)~
参考文献
- Bilibili – Bensz的个人空间. https://space.bilibili.com/24478261
- Bensz Channel – 实际部署地址. https://channel.hwb0307.com
- Bilibili – Bensz Channel 部署教程视频. https://www.bilibili.com/video/BV1uFP9zoEGa
- GitHub – huangwb8/bensz-channel: 现代化 Web 社区平台. https://github.com/huangwb8/bensz-channel
- Bensz Channel – 开发者文档. https://github.com/huangwb8/bensz-channel/blob/main/docs/开发者文档.md
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍