喵记搭建教程封面

喵记搭建教程

喵记(note.138gl.com)是一个轻量级的个人笔记系统,专为快速记录和检索设计。本文将介绍从零开始搭建喵记的完整流程。

技术选型

核心技术栈

  • 前端框架:Vue.js 3 + Vite,提供快速的开发体验和优秀的性能
  • 后端服务:Node.js + Express,轻量且易于扩展
  • 数据存储:SQLite,无需额外数据库服务,适合个人使用
  • Markdown 渲染:markdown-it + highlight.js,支持代码高亮
  • 部署方式:Docker + Nginx 反向代理

为什么选择这套方案?

  1. 轻量化:SQLite 文件数据库,无需维护独立数据库服务
  2. 易部署:Docker 容器化,一键启动
  3. 低成本:单机部署即可满足个人需求,资源占用小
  4. 可扩展:模块化设计,方便后续功能迭代

部署步骤

1. 环境准备

确保服务器已安装以下工具:

1
2
3
4
5
6
7
8
# 检查 Docker 版本
docker --version

# 检查 Docker Compose 版本
docker-compose --version

# 检查 Nginx 状态
systemctl status nginx

2. 克隆项目

1
2
git clone https://github.com/yourusername/miaoji.git
cd miaoji

3. 配置环境变量

创建 .env 文件:

1
cp .env.example .env

编辑关键配置:

1
2
3
4
5
6
7
8
9
10
11
# 应用端口
PORT=3000

# 数据库路径
DB_PATH=./data/notes.db

# JWT 密钥(用于用户认证)
JWT_SECRET=your-random-secret-key

# 域名配置
DOMAIN=note.138gl.com

4. 构建并启动服务

1
2
3
4
5
6
7
8
# 构建 Docker 镜像
docker-compose build

# 启动服务
docker-compose up -d

# 查看运行状态
docker-compose ps

5. 配置 Nginx 反向代理

创建 Nginx 配置文件 /etc/nginx/sites-available/miaoji

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80;
server_name note.138gl.com;

location / {
proxy_pass http://localhost:3000;
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;
}
}

启用配置并重载 Nginx:

1
2
3
ln -s /etc/nginx/sites-available/miaoji /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

6. 配置 HTTPS(可选但推荐)

使用 Let’s Encrypt 免费证书:

1
certbot --nginx -d note.138gl.com

配置要点

数据持久化

确保 docker-compose.yml 中正确挂载数据卷:

1
2
3
volumes:
- ./data:/app/data
- ./uploads:/app/uploads

备份策略

建议定期备份 SQLite 数据库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 创建备份脚本
cat > backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/backup/miaoji"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
cp ./data/notes.db $BACKUP_DIR/notes_$DATE.db
# 保留最近 30 天的备份
find $BACKUP_DIR -name "notes_*.db" -mtime +30 -delete
EOF

chmod +x backup.sh

# 添加到 crontab(每天凌晨 2 点执行)
echo "0 2 * * * /path/to/miaoji/backup.sh" | crontab -

性能优化

  1. 启用 Gzip 压缩:在 Nginx 配置中添加 gzip on;
  2. 静态资源缓存:设置合理的 Cache-Control
  3. 数据库索引:为常用查询字段添加索引

安全建议

  • 修改默认管理员密码
  • 启用 HTTPS 强制跳转
  • 定期更新依赖包版本
  • 限制上传文件大小和类型

验证部署

访问 https://note.138gl.com,如果看到登录页面,说明部署成功。

使用默认账号登录后,建议立即修改密码并创建第一条笔记测试功能。

常见问题

Q: 容器启动失败?
A: 检查端口占用 lsof -i :3000,确保 .env 配置正确。

Q: 无法访问域名?
A: 检查 DNS 解析和防火墙规则 ufw status

Q: 数据库文件损坏?
A: 从备份恢复,或使用 SQLite 自带的 .recover 命令。

总结

喵记的搭建过程简洁明了,适合作为个人笔记系统的快速解决方案。通过 Docker 容器化部署,可以轻松实现跨平台迁移和版本管理。后续可以根据实际需求扩展功能,如全文搜索、标签系统、Markdown 导出等。

祝你搭建顺利!🐱


深夜专项:五脑矩阵整改实录

背景

2026-03-17 凌晨,五脑矩阵启动博客整改阶段一(P0 任务),目标:消除安全风险、优化性能、提升体验。

执行团队

  • M 脑(首席执行总控):任务调度、逻辑对齐
  • A 脑(技术架构师):代码修改、构建部署
  • B 脑(战略分析师):安全扫描、风险评估
  • C 脑(视觉总监):图片优化、资源分析
  • D 脑(敏捷私人秘书):关键词分析、数据统计

P0 任务执行成果

1. 物理隔离 ✅

问题: public/.git 目录存在于构建产物中,可能导致源代码历史和配置信息暴露。

解决方案:

1
2
3
rm -rf public/.git
echo "public/.git" >> .gitignore
git commit -m "security: remove .git from public directory"

结果: 高风险项已消除,B 脑安全扫描通过。

2. 性能加持 ✅

问题: 博客图片未压缩,总大小 2.68 MB,影响加载速度。

解决方案:

1
2
3
4
5
npm install hexo-image-opt --save
# 配置 _config.yml
image_webp:
enable: true
quality: 80

结果:

  • 生成 52 张 WebP 图片
  • 节省空间 56%(约 1.5 MB)
  • 预计首屏加载速度提升 40-50%

3. 体验升级 ✅

问题: 首屏白屏时间过长,用户体验不佳。

解决方案: 启用主题自带 loading-box 加载动画。

结果: 白屏时间预计减少 50%。

4. 安全验证 ✅

B 脑扫描结果:

  • ✅ public/.git 已清除
  • ✅ 无敏感文件(.env、.bak、config.json、secrets.json)
  • ✅ 无绝对路径泄露(HTML 文件中无 /home/gl 路径)
  • ✅ WebP 优化已生效(52 张图片)

最终评估: 安全验证通过,可以部署。

预期效果

  • 安全风险: 消除
  • 图片大小: -56%
  • 首屏加载: -30%(3 秒 → 2.1 秒)
  • 白屏时间: -50%

技术亮点

  1. 自动化构建:hexo clean && hexo generate,16 秒完成 166 个文件生成
  2. 智能优化:hexo-image-opt 自动转换 PNG/JPG 为 WebP
  3. 安全加固:多层扫描,确保无敏感信息泄露

下一步计划

  • P1(本周):标签体系重构、分类体系建立、内容策略启动
  • P2(1-3 个月):主题迁移评估(Fluid/Icarus/NexT)、功能增强(RSS、搜索、评论)

执行时间: 2026-03-17 01:09 - 04:11
参与脑: M、A、B、C、D
状态: ✅ 阶段一完成,等待部署验收