Skip to content

服务器存储系统初始化规范 ​

目标: 在服务器上从零构建符合 架构设计 的标准目录结构,并挂载 HDD 数据盘。 前置条件: 已完成 Ubuntu 初始化,拥有 sudo 权限。

1. 核心目录结构创建 ​

我们要创建 /srv 下的 5 大核心分区。即使部分目录已存在(如已部署过 Monitor),执行以下命令也是安全的(mkdir -p 不会覆盖现有数据)。

1.1 创建目录树 ​

bash
# 1. 切换到 root (方便批量操作,最后再改回权限)
sudo -i

# 2. 创建一级目录 (SSD)
mkdir -p /srv/core       # 基础设施 (Nginx, FRP, Portainer)
mkdir -p /srv/hub        # Hub 服务 (Nextcloud, Jellyfin, Trilium)
mkdir -p /srv/site       # 静态站点 (Blog, Wiki)
mkdir -p /srv/app        # 动态应用 (Neat, Ark)
mkdir -p /srv/monitor    # 监控系统 (Prometheus, Grafana)
mkdir -p /srv/data       # 数据挂载点 (HDD)

# 3. 验证
tree /srv -L 1
# 应输出:
# /srv
# ├── app
# ├── core
# ├── data
# ├── hub
# ├── monitor
# └── site

1.2 挂载 HDD 数据盘 (Critical) ​

这是最关键的一步! 如果你的服务器有机械硬盘 (HDD),请务必先完成挂载,再往里面写数据。

👉 请跳转阅读专项指南: 磁盘挂载与目录规范 (小白保姆级)(该文档包含详细的格式化、fstab 永久挂载及防翻车教程)

1.3 创建数据盘子目录 ​

在完成 HDD 挂载后,在里面创建存放“大文件”的目录。

bash
# 媒体库与网盘数据
mkdir -p /srv/data/hub/nextcloud/data
mkdir -p /srv/data/hub/jellyfin/media
mkdir -p /srv/data/hub/photoprism/originals
mkdir -p /srv/data/hub/trilium/data
mkdir -p /srv/data/hub/joplin/db

# 备份目录
mkdir -p /srv/data/backup/core
mkdir -p /srv/data/backup/db
mkdir -p /srv/data/backup/app

# 下载缓存
mkdir -p /srv/data/download

2. 权限与用户归属 (Critical) ​

为了让你的当前用户 (如 allen) 能直接通过 VS Code Remote 编辑配置文件,且 Docker 容器能正常读写,我们需要统一权限。

bash
# 假设你的用户名是 allen (请替换为你实际的用户名!)
export MY_USER=allen

# 1. 将 /srv 所有权赋予当前用户
chown -R $MY_USER:$MY_USER /srv

# 2. 赋予组写权限 (方便 Docker 容器内以 group 权限写入)
chmod -R 775 /srv

# 3. 退出 root
exit

验证权限:

bash
# 尝试创建文件 (不加 sudo)
touch /srv/core/test_permission
rm /srv/core/test_permission
# 如果不报错,说明权限配置正确!

3. 软链接规划 (可选) ​

为了方便管理,可以将 /srv/data 中的大目录“软链接”回 /srv/hub,造成一种数据都在一起的假象(方便配置文件写路径),但实际物理存储在 HDD。

bash
# 示例:将 HDD 上的媒体库链接到 Hub 目录
ln -s /srv/data/hub/jellyfin/media /srv/hub/jellyfin/media

注:Docker 挂载时建议直接使用绝对路径 /srv/data/... 以避免混淆,此步骤仅为管理方便。

4. 下一步 ​

目录结构就绪!现在你可以开始将代码部署到这些目录中了。

👉 跳转阅读: Hub 服务重构与部署方案

方舟 · Ark