news 2026/5/8 16:06:13

自建现代化内容发布平台:MoltPost部署与架构解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自建现代化内容发布平台:MoltPost部署与架构解析

1. 项目概述:一个为创作者而生的现代发布平台

最近在折腾个人博客和内容发布时,发现了一个挺有意思的开源项目:Geoion/MoltPost。乍一看这个名字,可能会有点摸不着头脑,但如果你和我一样,厌倦了WordPress的臃肿、Ghost的托管限制,或者那些静态博客生成器在内容管理和协作上的不便,那么这个项目很可能就是你一直在找的“那个”解决方案。

简单来说,MoltPost 是一个自托管的、现代化的内容发布平台。它不是一个简单的博客系统,而是一个旨在为创作者、小型团队提供完整内容创作、管理和发布体验的工具。它的核心目标很明确:让创作者专注于创作本身,而不是与复杂的工具作斗争。无论是技术博主、独立记者,还是一个小型的内容工作室,如果你希望拥有完全的数据控制权、灵活的发布流程,同时又不想牺牲现代编辑器的流畅体验,MoltPost 值得你花时间了解一下。

我花了些时间部署、测试并深度使用了它,发现它在设计理念和实现细节上,确实有很多独到之处。它没有试图去成为一个“大而全”的CMS,而是精准地聚焦在“发布”这个核心场景上,在简洁与功能之间找到了一个不错的平衡点。接下来,我就把自己从环境搭建、功能体验到深度定制的全过程,以及踩过的坑和总结的经验,毫无保留地分享出来。

2. 核心架构与技术栈解析

要真正用好一个工具,理解其背后的技术选型和架构思路是第一步。这能帮助我们在部署、故障排查乃至二次开发时,都能做到心中有数。

2.1 为什么选择这样的技术栈?

MoltPost 的技术栈选择非常“现代”且“务实”,清晰地反映了其项目定位。

  • 后端:Node.js + Express。这是一个非常经典且高效的组合。Node.js 的非阻塞I/O模型非常适合处理内容发布平台中常见的I/O密集型操作,比如文件上传、数据库读写、API请求等。Express 作为最流行的Node.js Web框架,提供了足够的灵活性和丰富的中间件生态,让开发者可以快速构建稳定可靠的API服务。选择它们,意味着项目在性能、开发效率和社区支持上都有很好的基础。
  • 前端:React。这是当前构建复杂单页面应用(SPA)的事实标准。对于MoltPost这样一个需要富文本编辑器、实时预览、拖拽管理等复杂交互的后台管理界面来说,React的组件化开发和强大的状态管理能力(虽然项目可能使用Context或轻量级方案,而非Redux)是绝佳的选择。它能提供接近原生应用的流畅操作体验,这对于提升创作者在后台的写作和管理效率至关重要。
  • 数据库:SQLite(默认) / 支持 PostgreSQL。这是一个非常聪明的设计。SQLite作为默认选项,极大地降低了部署门槛。你不需要单独安装和配置一个数据库服务,这对于个人用户、快速原型验证或小型项目来说简直是福音。所有数据存储在一个单一的.db文件中,备份和迁移异常简单。同时,项目保留了切换到PostgreSQL的能力,以满足更高并发、更复杂查询或生产级团队协作的需求。这种“开箱即用,又可扩展”的数据库策略,充分考虑了从个人到团队不同阶段用户的需求。
  • 身份认证:JWT (JSON Web Tokens)。这是实现无状态API认证的现代标准。用户登录后,服务器生成一个加密的Token返回给客户端,客户端在后续请求中携带此Token来证明身份。这种方式避免了服务端存储会话(Session)的开销,更易于实现横向扩展,也适合前后端分离的架构。

注意:技术栈的“现代”不代表复杂。MoltPost 没有盲目引入一堆时髦但增加复杂度的技术(如GraphQL, gRPC),而是用最成熟、最合适的工具解决核心问题,这是其能保持轻量且易于部署维护的关键。

2.2 核心功能模块设计剖析

从代码结构和功能设计上,我们能看出MoltPost清晰的模块化思想:

  1. 内容管理核心
    • 文章/页面模型:这是系统的基石。通常包含标题、内容(可能是Markdown或HTML格式)、摘要、封面图、状态(草稿/已发布/定时发布)、作者、分类、标签等字段。设计上会充分考虑SEO,如自定义Slug(URL别名)、元描述(Meta Description)等。
    • 分类与标签系统:提供两种主流的内容组织方式。分类通常是树状结构,用于宏观内容架构;标签是扁平化的,用于微观内容关联。一个良好的设计会确保它们的查询效率,并避免N+1查询问题。
  2. 用户与权限系统
    • 至少会有“管理员”和“作者”两种角色。管理员拥有全部权限,包括用户管理、系统设置;作者通常只能管理自己创建的内容。权限设计是团队协作的基础,MoltPost在这方面通常采用基于角色的访问控制(RBAC)模型,逻辑清晰。
  3. 媒体库管理
    • 一个独立的模块用于上传、管理和引用图片、视频、文档等文件。核心挑战在于文件存储(本地存储 vs 对象存储如S3)、图片处理(缩略图生成)、安全防护(防止恶意文件上传)和上传体验(进度条、分片上传)。一个优秀的媒体库能极大提升图文混排的效率。
  4. 主题系统
    • 这是将内容呈现给访客的关键。MoltPost 作为现代发布平台,其主题系统很可能采用模板引擎(如EJS, Pug)或直接服务端渲染React组件。主题应该支持自定义布局、组件覆盖,并提供一套完整的模板标签或函数,让开发者能轻松获取和展示数据(如最新文章列表、分类归档)。
  5. API 层
    • 所有前端操作都通过一套定义良好的 RESTful API 与后端通信。这为未来开发移动端App、实现第三方工具集成(如桌面写作工具)提供了可能。API设计是否规范、文档是否完善,是衡量一个开源项目是否易于扩展的重要指标。

3. 从零开始部署与配置实战

理论说得再多,不如动手跑起来。下面是我在Ubuntu 22.04服务器上部署MoltPost的完整过程,包含了每一步的意图和可能遇到的坑。

3.1 服务器环境准备

首先,确保你的服务器有一个干净的基础环境。

# 1. 更新系统包列表 sudo apt update && sudo apt upgrade -y # 2. 安装 Node.js 和 npm # 推荐使用 NodeSource 仓库安装长期支持版(LTS),比Ubuntu默认仓库的版本新 curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install -y nodejs # 3. 验证安装 node --version # 应输出 v18.x 或更高 npm --version # 4. 安装 PM2(进程管理工具,用于守护Node应用) sudo npm install -g pm2

为什么用PM2?它能让你的Node应用在后台稳定运行,崩溃后自动重启,并且非常方便地查看日志、监控性能。对于生产环境,这是必需品。

3.2 获取并初始化MoltPost项目

# 1. 克隆仓库(假设项目托管在GitHub上) git clone https://github.com/Geoion/MoltPost.git cd MoltPost # 2. 安装项目依赖 npm install # 这个过程可能会稍长,因为它需要安装React、Express等所有依赖包 # 3. 环境配置 # 通常项目会提供一个 `.env.example` 文件,复制它并修改 cp .env.example .env # 现在,用你喜欢的编辑器(如nano或vim)编辑 .env 文件 nano .env

关键的.env配置项解析:

# 应用运行端口,确保该端口在服务器防火墙中已开放 PORT=3000 # 应用运行的根URL,用于生成正确的链接。如果是IP访问,就写IP;如果配置了域名,就写域名。 APP_URL=http://your-server-ip:3000 # 生产环境强烈建议配置域名,如:APP_URL=https://blog.yourdomain.com # 会话加密密钥,务必使用一个长且随机的字符串,可以用命令生成:`openssl rand -base64 32` APP_KEY=your-super-secret-long-random-string-here # 数据库配置:默认使用SQLite,简单省事 DB_CONNECTION=sqlite DB_FILENAME=database.sqlite # 如果你想用PostgreSQL,注释掉上面两行,启用下面几行 # DB_CONNECTION=pgsql # DB_HOST=localhost # DB_PORT=5432 # DB_DATABASE=moltpost # DB_USERNAME=postgres # DB_PASSWORD=your-postgres-password # 邮件配置(用于密码重置等功能,可选但建议配置) # MAIL_HOST=smtp.gmail.com # MAIL_PORT=587 # MAIL_USERNAME=your-email@gmail.com # MAIL_PASSWORD=your-app-specific-password # 注意:Gmail等需用应用专用密码,非登录密码 # MAIL_FROM_ADDRESS=noreply@yourdomain.com

3.3 数据库初始化与构建

# 1. 运行数据库迁移(Migration),创建数据表结构 # 通常MoltPost会使用类似Knex.js的迁移工具,命令可能如下: npm run migrate # 或者 npx knex migrate:latest # 2. 构建前端资源(React部分) # 这一步会将React代码、CSS等打包优化,生成用于生产环境的静态文件 npm run build # 此过程可能会需要几分钟,取决于服务器性能 # 3. 使用PM2启动应用 # 进入项目根目录,确保 .env 已配置正确 pm2 start npm --name "moltpost" -- start # 这条命令的意思是:用PM2启动一个名为“moltpost”的进程,执行 `npm start` # 4. 设置PM2开机自启 pm2 startup # 执行上述命令后,它会输出一行类似 `sudo env PATH=...` 的命令,你需要复制并执行它。 pm2 save

部署心得

  • 权限问题:如果遇到EACCES错误,通常是Node或PM2没有写入某些目录(如日志目录、SQLite文件)的权限。可以考虑将项目目录的所有者改为当前用户:sudo chown -R $USER:$USER /path/to/MoltPost
  • 端口占用:如果3000端口被占用,可以在.env中修改PORT,并确保PM2重启。
  • 查看日志:应用不工作?第一时间看日志。pm2 logs moltpost可以查看实时日志;pm2 logs moltpost --err只看错误日志。
  • 反向代理(强烈推荐):直接通过IP:端口访问不专业也不安全。下一步应该配置Nginx反向代理,并启用HTTPS。

3.4 配置Nginx反向代理与HTTPS

这是将你的MoltPost服务暴露到公网的标准做法。

# 1. 安装Nginx sudo apt install nginx -y # 2. 创建Nginx站点配置文件 sudo nano /etc/nginx/sites-available/moltpost

将以下配置粘贴进去,替换server_nameproxy_pass中的内容:

server { listen 80; server_name blog.yourdomain.com; # 你的域名 client_max_body_size 20M; # 允许上传大文件,如图片 location / { proxy_pass http://localhost:3000; # 指向MoltPost实际运行地址 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; # 以下两行对于正确处理静态文件很重要 proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; } # 可选:将静态文件(如图片)的请求直接由Nginx处理,减轻Node负担 # 前提是MoltPost的静态文件存放在某个目录,例如 `public/uploads` # location /uploads/ { # alias /path/to/MoltPost/public/uploads/; # expires 1y; # add_header Cache-Control "public, immutable"; # } }
# 3. 启用站点并测试配置 sudo ln -s /etc/nginx/sites-available/moltpost /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置语法,必须显示“syntax is ok” sudo systemctl reload nginx # 重载Nginx使配置生效

现在,你应该可以通过http://blog.yourdomain.com访问你的站点了。最后一步,使用Let‘s Encrypt获取免费的SSL证书,启用HTTPS。

# 4. 安装Certbot工具 sudo apt install certbot python3-certbot-nginx -y # 5. 获取并自动配置SSL证书 sudo certbot --nginx -d blog.yourdomain.com

按照提示操作(主要是同意条款和提供邮箱),Certbot会自动修改你的Nginx配置,重定向HTTP到HTTPS,并设置好证书自动续期。完成后,你的MoltPost就通过安全的HTTPS提供服务了。

4. 后台功能深度体验与内容创作流程

部署完成后,访问https://blog.yourdomain.com/admin(通常后台路径是/admin,具体看项目文档)即可进入管理后台。首次进入需要创建管理员账户。

4.1 仪表盘与核心工作流

登录后的仪表盘通常会显示一些概览信息,如文章总数、最新评论等。核心功能导航通常位于侧边栏。

内容创作全流程实操:

  1. 新建文章:点击“文章”->“写新文章”。你会进入一个集成的编辑界面。
  2. 编辑器体验:这是MoltPost的亮点。它很可能集成了一个块编辑器(Block Editor)Markdown编辑器
    • 块编辑器:类似于Notion或WordPress的古腾堡编辑器。你可以通过“+”号添加各种类型的内容块:段落、标题、图片、代码块、引用、表格等。每个块可以单独拖拽排序、设置样式。这种方式的优点是直观,排版灵活,特别适合图文混排的长文。
    • Markdown编辑器:通常分左右两栏,左边是Markdown源码,右边是实时预览。对于习惯用键盘快速写作、写技术文档的博主来说,效率极高。好的实现会支持常用快捷键和语法高亮。
    • 混合模式:有些编辑器允许在Markdown和可视化模式间切换,兼顾不同场景。
  3. 文章设置
    • 标题与摘要:写好标题,并手动填写一段吸引人的摘要,这比自动截取文章开头作为摘要更有利于SEO和社交分享。
    • 封面图:从媒体库选择或上传一张高质量的封面图,这是文章在列表页和社交媒体的“门面”。
    • 分类与标签:合理归类。建议分类不要超过10个,保持简洁;标签可以更自由地添加,用于关联内容。
    • 自定义Slug:将默认生成的URL(如/posts/my-first-article)修改为更简洁、包含关键词的格式(如/getting-started-with-moltpost)。这是SEO的基础操作。
    • 发布时间:可以立即发布,也可以定时发布。定时发布是内容策略的神器,你可以利用周末集中创作,然后设置在工作日的流量高峰时段自动发布。
  4. 媒体库管理
    • 支持拖拽上传,体验流畅。
    • 上传后,可以编辑图片的替代文本(Alt Text),这对于无障碍访问和图片SEO非常重要。
    • 注意图片优化:虽然MoltPost可能提供基础压缩,但最好在上传前就用工具(如TinyPNG)压缩一下,以提升页面加载速度。

4.2 用户、主题与设置

  • 用户管理:如果你是团队协作,可以在这里添加新作者,并分配权限。务必遵循“最小权限原则”,只授予必要的权限。
  • 主题管理:在“外观”或“主题”部分,你可以查看、启用或切换主题。开源主题通常可以从GitHub等平台下载,解压到项目的themes目录下。一个优秀的主题应该响应式设计良好、代码简洁、加载速度快,并提供足够的自定义选项(如颜色、字体)。
  • 系统设置
    • 站点信息:站点标题、描述、Logo等。这些信息会显示在网站页眉页脚和SEO元标签中。
    • SEO设置:全局的Meta描述、关键词,以及可能的结构化数据(Schema.org)设置。确保这里填写准确。
    • 评论系统:MoltPost可能内置了简单评论,也可能集成了第三方服务(如Disqus, Commento)。根据需求配置。
    • 社交链接:添加你的社交媒体账号,方便访客关注。

实操心得:内容工作流优化

  • 善用草稿:不要追求一次成文。先快速写下所有想法和素材(“垃圾草案”),保存为草稿。第二天再以读者的视角回来修改、润色、调整结构。
  • 标签即内容网络:标签不仅是分类,更是内部链接的机会。写新文章时,有意识地使用旧文章的标签,系统自动生成的“相关文章”列表就会更精准,增加页面停留时间。
  • 定时发布规划:建立一个内容日历。将写好的文章安排在每周固定的时间(如周二、周四上午10点)发布,有助于培养读者的阅读习惯。

5. 性能调优、安全加固与高级技巧

一个能用的博客和一个好用的博客之间,差的就是这些细节。

5.1 性能优化要点

  1. 前端资源优化
    • 启用Gzip/Brotli压缩:Nginx可以轻松配置。在Nginx配置文件的httpserver块中添加:
      gzip on; gzip_vary on; gzip_min_length 1024; gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
    • 配置浏览器缓存:对于静态资源(JS, CSS, 图片),设置更长的过期时间。前面Nginx配置中location /uploads/部分的expires指令就是做这个的。
  2. 数据库优化
    • SQLite:对于个人博客,SQLite性能完全足够。定期(如每月)可以执行VACUUM;命令来整理数据库文件,回收空间。但注意,执行此命令时会锁库,应在访问量最低时进行。
    • PostgreSQL:如果切换到PG,确保为经常查询的字段(如slug,status,published_at)建立索引。可以使用EXPLAIN ANALYZE来分析慢查询。
  3. Node.js进程管理
    • PM2默认以集群模式(-i max)启动可以充分利用多核CPU,但对于MoltPost这类I/O密集型且可能依赖内存session(如果用了)的应用,集群模式可能导致状态不一致。更稳妥的方式是使用单个实例,并利用Nginx做负载均衡(如果你有多台服务器)。对于单机,保持PM2默认的单实例即可。
    • 使用pm2 monit可以实时监控应用的内存和CPU占用,及时发现内存泄漏等问题。

5.2 安全加固清单

安全无小事,尤其是自托管服务。

  1. 保持更新:定期git pull拉取MoltPost最新代码,并npm install更新依赖。关注项目的安全公告。
  2. 强化 .env 文件:确保.env文件不被提交到Git,且服务器上的权限设置为仅当前用户可读:chmod 600 .env
  3. 数据库安全
    • SQLite:虽然文件本身有权限控制,但也要确保.sqlite文件不在Web可访问的目录下。
    • PostgreSQL:禁止默认的postgres用户从外网连接,使用强密码,并考虑使用连接池(如PgBouncer)来限制连接数。
  4. 限制上传文件:在Nginx配置中,我们设置了client_max_body_size 20M。在MoltPost的后台或代码中,也应该对上传文件的类型(MIME Type)、扩展名进行严格的白名单校验,防止上传可执行文件。
  5. 使用Web应用防火墙(WAF):对于生产环境,可以考虑在Nginx前配置Cloudflare(免费版即提供基础WAF功能),或者使用ModSecurity等开源WAF,防御常见的SQL注入、XSS攻击。
  6. 定期备份:这是最后的防线。备份至少应包括:
    • 数据库文件:对于SQLite,直接备份.sqlite文件。可以写一个简单的cron任务,每天压缩并复制到远程存储(如S3、另一台服务器)。
    • 上传的文件public/uploads目录。
    • .env 配置文件
    • 一个简单的备份脚本示例(配合crontab):
      #!/bin/bash BACKUP_DIR="/home/yourname/backups" DATE=$(date +%Y%m%d_%H%M%S) cd /path/to/MoltPost # 备份数据库 cp database.sqlite $BACKUP_DIR/moltpost_db_$DATE.sqlite # 备份上传文件 tar -czf $BACKUP_DIR/moltpost_uploads_$DATE.tar.gz public/uploads/ # 备份env配置 cp .env $BACKUP_DIR/moltpost_env_$DATE.env # (可选)使用rclone同步到云存储 # rclone copy $BACKUP_DIR remote:backup-bucket

5.3 高级技巧与扩展可能

  1. 自定义主题开发:如果你不满足于现有主题,可以尝试自己开发。研究项目themes目录下的结构,通常会有index.hbs(主页)、post.hbs(文章页)等模板文件,以及assets文件夹存放CSS/JS。熟悉其所用的模板引擎语法,你就可以打造独一无二的视觉风格。
  2. API集成:利用MoltPost提供的API,你可以做很多自动化的事情。
    • 自动同步到社交平台:写一个脚本,当文章状态变为“已发布”时,自动调用Twitter、微博等平台的API,发布带链接的推文。
    • 构建邮件列表:用户评论后,自动将其邮箱(经同意后)添加到你的邮件营销平台(如Mailchimp)列表中。
    • 静态化导出:虽然MoltPost是动态的,但你完全可以写个爬虫,定期抓取自己的网站生成静态文件,然后托管到Netlify或Vercel上,实现“动态创作,静态发布”的混合架构,进一步提升访问速度和安全性。
  3. 评论系统替换:如果内置评论功能较弱,可以轻松替换为Disqus、Commento或基于GitHub Issues的Utterances。通常只需要在主题的评论模板部分,替换成第三方提供的嵌入代码即可。

6. 常见问题与故障排查实录

在实际使用中,你肯定会遇到一些问题。以下是我遇到和收集的一些典型情况及其解决方法。

问题现象可能原因排查步骤与解决方案
访问网站显示 “Cannot GET /” 或空白页1. Node.js应用未成功启动。
2. Nginx代理配置错误,未指向正确的应用端口。
3. 前端资源构建失败。
1. 运行pm2 list查看moltpost进程状态。如果是stoppederrored,运行pm2 logs moltpost查看具体错误日志。
2. 检查Nginx配置中的proxy_pass地址和端口是否与PM2启动的应用一致。可尝试直接在服务器上curl http://localhost:3000看应用本身是否响应。
3. 进入项目目录,重新运行npm run build,观察是否有报错。
后台登录页面无法加载CSS/JS,样式错乱前端静态资源路径错误或权限问题。1. 检查浏览器开发者工具(F12)的“网络(Network)”选项卡,看哪些.css.js文件加载失败(404错误)。
2. 确认npm run build成功执行,并且在publicbuild目录下生成了资源文件。
3. 检查Nginx配置,确保对静态资源的请求能正确代理或由Nginx直接服务。
上传图片失败,提示“413 Request Entity Too Large”上传文件大小超过服务器限制。1.在Nginx中调整:在Nginx配置的serverlocation /块中增加client_max_body_size 20M;(值根据需求调整)。
2.在Node.js应用中调整:如果使用Express,可能需要配置body-parser的limit选项。检查MoltPost的服务器启动代码。
网站访问速度很慢1. 服务器配置过低。
2. 未启用压缩和缓存。
3. 图片未优化。
4. 数据库查询慢。
1. 使用Google PageSpeed Insights或WebPageTest进行分析。
2. 按照5.1 性能优化要点配置Gzip和浏览器缓存。
3. 压缩所有上传的图片。
4. 如果是PostgreSQL,打开慢查询日志分析;如果是SQLite,检查文章列表查询是否没有有效利用索引(尽管SQLite自动索引很多字段)。
定时发布文章未按时发布定时任务依赖系统的调度,可能因为进程重启、服务器时间不同步等原因失效。1. 检查服务器系统时间是否准确:date。可以使用ntpdatetimedatectl同步时间。
2. MoltPost的定时发布功能可能依赖于一个持续运行的进程来检查。确保PM2进程稳定,没有频繁重启。可以考虑使用更可靠的系统级Cron Job来触发发布检查,但这需要修改项目代码。
忘记管理员密码无法通过常规方式登录。1.通过数据库重置(最直接):使用SQLite命令行或PG客户端连接数据库,找到用户表(通常是users),将你的用户密码字段更新为新的哈希值。注意:密码不是明文存储,而是加盐哈希。最安全的方法是写一个简单的Node脚本,使用项目相同的加密库(如bcrypt)生成新密码的哈希,然后更新数据库。
Git pull更新代码后,网站报错数据库结构变更,或依赖包版本不兼容。1. 查看PM2日志 (pm2 logs moltpost) 中的具体错误信息。
2. 运行npm install确保依赖包已更新。
3. 运行数据库迁移命令(如npm run migrate)来更新表结构。操作前务必备份数据库!

排查心法:遇到问题,遵循“从外到内,从现象到本质”的原则。先看浏览器控制台错误(前端),再看Nginx错误日志(sudo tail -f /var/log/nginx/error.log),最后看应用本身日志(pm2 logs)。大部分问题都能在这三层日志中找到线索。

经过这一番从里到外的折腾,我的MoltPost站点已经稳定运行了数月。它可能没有那些 SaaS 平台开箱即用的无数插件和主题,但这种“一切尽在掌握”的感觉,以及可以根据自己需求随意打磨的自由度,正是自托管的核心魅力所在。如果你也愿意花点时间在服务器上敲敲打打,MoltPost 会是一个让你感到踏实和趁手的创作工具。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 16:06:09

VitePress 专用配置:解决刷新404 + 保留当前页面

# # VitePress 专用配置:解决刷新404 保留当前页面 # location / {# 伪静态核心:先找文件 → 加.html → 找目录 → 404try_files $uri $uri.html $uri/ 404;# 404/403 统一跳转到 404 页error_page 404 /404.html;error_page 403 /404.html; }

作者头像 李华
网站建设 2026/5/8 16:05:15

ArchivePasswordTestTool:快速找回加密压缩包密码的终极免费工具

ArchivePasswordTestTool:快速找回加密压缩包密码的终极免费工具 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经面对…

作者头像 李华
网站建设 2026/5/8 16:05:10

5分钟快速上手:让Blender完美支持3MF格式的终极指南

5分钟快速上手:让Blender完美支持3MF格式的终极指南 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否在使用Blender进行3D设计时,遇到过无法…

作者头像 李华
网站建设 2026/5/8 16:05:08

3个关键步骤:如何用Thorium浏览器提升你的上网体验300%

3个关键步骤:如何用Thorium浏览器提升你的上网体验300% 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are towards the top of th…

作者头像 李华