使用Docker搭建Notesnook,打造私有加密笔记系统
一、部署准备
硬件要求
- 最低配置:2核CPU / 2GB内存 / 20GB存储
- 推荐配置:4核CPU / 4GB内存 / 50GB存储(适合10人以上团队)
软件依赖
# Ubuntu/Debian
sudo apt update && sudo apt install -y \
docker.io \
docker-compose-plugin \
caddy
# 配置docker用户组
sudo usermod -aG docker $USER
newgrp docker
域名配置(必需)
服务类型 | 示例域名 | 说明 |
---|---|---|
主应用 | notes.yourdomain.com | 同步服务器 |
身份认证 | auth.yourdomain.com | 用户认证服务 |
实时事件 | events.yourdomain.com | SSE推送服务 |
笔记分享 | mono.yourdomain.com | 公开笔记分享服务 |
二、核心服务部署
1. 获取部署文件
mkdir notesnook && cd notesnook
wget https://raw.githubusercontent.com/streetwriters/notesnook-sync-server/master/docker-compose.yml
2. 环境变量配置 (.env)
# 基础配置
INSTANCE_NAME="My Private Notes"
DISABLE_SIGNUPS=false # 初始部署设为false,注册后改为true
# API安全
NOTESNOOK_API_SECRET=$(openssl rand -hex 32)
# SMTP配置(必须真实有效)
[email protected]
SMTP_PASSWORD=your-smtp-password
SMTP_HOST=smtp.yourdomain.com
SMTP_PORT=587
# 域名配置(必须与准备环节一致)
NOTESNOOK_APP_PUBLIC_URL=https://notes.yourdomain.com
MONOGRAPH_PUBLIC_URL=https://mono.yourdomain.com
AUTH_SERVER_PUBLIC_URL=https://auth.yourdomain.com
ATTACHMENTS_SERVER_PUBLIC_URL=https://files.yourdomain.com
# MinIO配置
MINIO_ROOT_USER=notesnook
MINIO_ROOT_PASSWORD=$(openssl rand -hex 16)
3. 启动服务
docker compose up -d
三、高级配置技巧
1. 邮件发送优化
解决SMTP用户名不等于发件人地址的问题:
# 在identity-server容器中执行
docker exec -it identity-server \
sed -i 's/mailOptions.from = username;/mailOptions.from = "[email protected]";/' \
/app/dist/services/email/service.js
2. 数据库备份方案
# 每日MongoDB备份脚本
cat > /usr/local/bin/notesnook-backup <<EOF
#!/bin/bash
BACKUP_DIR=/var/backups/notesnook
mkdir -p \$BACKUP_DIR
docker exec notesnook-db mongodump \
--uri="mongodb://notesnook-db:27017/?replSet=rs0" \
--out=\$BACKUP_DIR/\$(date +%Y%m%d)
EOF
chmod +x /usr/local/bin/notesnook-backup
3. 性能监控仪表板
使用Grafana监控关键指标:
# 在docker-compose.yml中添加
services:
prometheus:
image: prom/prometheus
ports: ["9090:9090"]
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
networks:
- notesnook
grafana:
image: grafana/grafana
ports: ["3000:3000"]
networks:
- notesnook
四、安全加固措施
1. 网络隔离
# 创建专用网络
docker network create --internal notesnook-internal
# 修改docker-compose.yml中的网络配置
networks:
notesnook:
internal: true
public:
driver: bridge
2. 防火墙规则
# 只开放必要端口
ufw allow 80,443/tcp
ufw enable
3. 定期安全更新
# 设置自动更新
cat > /etc/cron.weekly/docker-update <<EOF
#!/bin/sh
docker compose pull && docker compose up -d --force-recreate
EOF
chmod +x /etc/cron.weekly/docker-update
五、客户端配置指南
- 桌面端:从官网下载客户端
- 移动端:在应用商店搜索"Notesnook"
服务器设置:
Sync Server: https://notes.yourdomain.com Auth Server: https://auth.yourdomain.com Events Server: https://events.yourdomain.com Monograph Server: https://mono.yourdomain.com
六、故障排除
常见问题解决方案
问题现象 | 排查步骤 |
---|---|
注册收不到邮件 | 1. 检查SMTP日志 2. 验证垃圾邮件箱 3. 执行邮件测试脚本 |
同步失败 | 1. 检查网络连接 2. 验证服务器时间同步 3. 查看docker日志 |
附件上传失败 | 1. 检查MinIO存储空间 2. 验证S3权限配置 3. 监控磁盘使用率 |
日志查看命令
# 查看实时日志
docker compose logs -f
# 筛选错误日志
docker compose logs | grep -i error
七、生态整合方案
1. 与Nextcloud集成
# 通过WebDAV同步附件
docker exec notesnook-server \
sed -i 's|S3_SERVICE_URL=.*|S3_SERVICE_URL=https://nextcloud.yourdomain.com/remote.php/dav/files/admin/Attachments|' \
/app/.env
2. 支持Markdown导出
# 添加自定义导出处理器
docker exec notesnook-server \
npm install --save @notesnook/exporter
3. 邮件提醒整合
# 配置邮件模板
docker cp custom-email-templates/ identity-server:/app/dist/services/email/templates/
通过本指南,您已成功部署了一个完全私有化、端到端加密的企业级笔记系统。Notesnook 的自托管方案特别适合:
- 注重隐私安全的个人用户
- 需要合规审计的企业团队
- 有特定数据驻留要求的组织机构