摘要
本文详细介绍了如何在阿里云 ECS 上搭建一套高可用、低成本的个人云平台。
架构采用 “动静分离” 策略:

  • 主站:基于 Hexo + Butterfly 的静态技术博客,专注于高性能内容展示。
  • 子站:基于 Docker + Memos 的动态日记系统,用于碎片化记录与私有化存储。

🌏 一、 基础设施环境初始化

服务器选用阿里云 ECS(Ubuntu 系统,2核 2G 配置),为保证系统安全与稳定性,需进行以下初始化操作。

1.1 系统安全加固

  • 用户管理:创建普通用户 admin-alex 并赋予 sudo 权限,禁止 root 用户直接远程登录。
  • SSH 配置:修改 /etc/ssh/sshd_config,设置 PermitRootLogin no,并启用密钥对登录,关闭密码验证。

1.2 内存优化 (Swap)

针对 2G 内存运行 Docker 可能出现的 OOM (内存溢出) 风险,配置 2GB 的 Swap 交换分区:

1
2
3
4
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

1.3 合规性配置

依据国内互联网法律法规,完成以下合规流程:

  1. ICP 备案:通过阿里云初审及工信部短信核验。

  2. 公安备案:在全国互联网安全管理服务平台完成备案(服务类型选择“非交互式”)。

  3. 页面整改:在网页底部显著位置悬挂 ICP 备案号及公安备案号链接。


🔒 二、 全站 HTTPS 安全加密

为保障数据传输安全,全站启用 HTTPS(SSL/TLS)。

2.1 证书申请

使用阿里云数字证书管理服务申请免费 DV 单域名证书(DigiCert)。

  • 验证技巧:若自动 DNS 验证延迟,可手动在云解析 DNS 中添加 _dnsauth 的 TXT 记录以加速签发。

2.2 Nginx 反向代理配置

配置 Nginx 接管 80 (HTTP) 和 443 (HTTPS) 端口,并强制 HTTP 跳转 HTTPS。

核心配置示例 (/etc/nginx/sites-enabled/default):

codeNginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 80;
server_name jjmstart.com;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name jjmstart.com;

ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;

root /var/www/html;
index index.html;
}

🎨 三、 Hexo 静态博客部署 (主站)

主站采用 Hexo 框架配合 Butterfly 主题,实现纯静态化发布。

3.1 本地构建环境

  • 环境:Node.js + Git + Hexo CLI。

  • 主题:安装 hexo-theme-butterfly,配置打字机特效、大封面图及侧边栏。

3.2 自动化部署流

为解决 SCP 传输大量小文件不稳定的问题,采用 “打包-传输-解压” 的部署策略:

  1. 本地构建与打包 (PowerShell):

    codePowershell

    1
    2
    3
    hexo g
    Compress-Archive -Path .\public -DestinationPath .\release.zip -Force
    scp release.zip admin-alex@ServerIP:~
  2. 服务端解压与发布

    codeBash

    1
    2
    unzip -o release.zip
    sudo cp -r public/* /var/www/html/

📓 四、 Memos 私有日记部署 (子站)

子站采用 Memos 构建轻量级笔记服务,通过 Docker 容器化部署。

4.1 Docker 部署

使用 Docker 一键启动服务,映射 5230 端口,并挂载数据卷以持久化存储:

codeBash

1
2
3
4
5
6
sudo docker run -d \
--name memos \
-p 5230:5230 \
-v /var/lib/memos:/var/opt/memos \
--restart always \
neosmemo/memos:stable

4.2 反向代理与子域名

  • 域名解析:添加 A 记录 diary 指向服务器 IP。

  • Nginx 配置:配置 diary.jjmstart.com 的反向代理,将流量转发至 127.0.0.1:5230。

4.3 游客访问增强

Memos 默认强制登录。为提升游客体验,通过注入自定义 JavaScript 脚本,在登录页增加“游客入口”按钮:

codeJavaScript

1
2
3
4
5
6
// 脚本逻辑:在登录表单下方动态插入跳转至 /explore 的按钮
var btn = document.createElement('a');
btn.innerText = '👀 随便看看 (游客入口)';
btn.href = '/explore';
// ...样式代码省略...
container.appendChild(btn);

🚀 五、 总结

至此,一套基于 Linux + Nginx + Docker 的全栈个人云平台已搭建完成。该架构具备以下优势:

  • 低成本:动静分离,极低内存占用。

  • 高安全:全站 HTTPS 加密,SSH 安全加固。

  • 易维护:基于 Docker 的容器化管理与基于 Git 的版本控制。

后续优化方向:

  • 配置阿里云 OSS + Crontab 实现数据异地自动备份。

  • 引入服务器可视化监控面板 (如 1Panel)。