Appearance
服务器存储系统初始化规范
目标: 在服务器上从零构建符合 架构设计 的标准目录结构,并挂载 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
# └── site1.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/download2. 权限与用户归属 (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 服务重构与部署方案
