Samba 文件共享 + Jellyfin & Immich 深度整合 (基于实战全流程)
#### **〇、前言与蓝图**
本教程旨在为您提供一个完整的、端到端的解决方案,将您的 OECT (或类似Armbian设备) 从一个简单的机器,转变为一个强大、私密且易于使用的家庭数据与媒体中心。
**最终实现的目标:**
1. **中央文件服务器**:通过 **Samba** 服务,将外置硬盘共享到您的家庭局aniu局域网,让任何电脑都能像访问本地磁盘一样(例如 L: 盘)轻松读写文件。
2. **自动化媒体中心**:让 **Jellyfin** 自动发现并索引您存入共享硬盘的电影和电视剧,打造您的私人影院。
3. **智能照片备份库**:让 **Immich** 能够扫描并管理您存入共享硬盘的大量历史照片集,作为手机自动备份的完美补充。
**系统架构蓝图:**
* **硬件层**:OECT 设备 (eMMC系统盘 + SATA/NVMe数据盘 + USB移动硬盘)
* **系统层**:Armbian OS + Docker + 1Panel 管理面板
* **服务层**:
* **Samba**:负责文件共享
* **Jellyfin**:负责影音播放
* **Immich**:负责照片管理
* **数据流**:电脑 -\> (WiFi/有线网络) -\> L: 盘 (Samba共享) -\> OECT移动硬盘 (`/mnt/library`) -\> 被Jellyfin和Immich读取
**准备工作 (Prerequisites):**
在开始本教程前,您应已完成:
* 您的 OECT 设备已刷入 Armbian 并可以正常SSH访问。
* 一块大容量移动硬盘已连接,并被系统永久挂载在 `/mnt/library` 目录。
* 已通过 1Panel 或其他方式部署好 Jellyfin 和 Immich 的Docker容器。
—–
### **Part 1: 构建核心 – Samba 文件共享服务**
这是所有后续整合的基础,我们将创建一个稳定、安全的局域网文件共享。
#### **步骤 1.1:安装 Samba 服务**
通过 SSH 连接到您的设备,更新软件列表并安装 Samba。
“`bash
# 更新软件包列表
sudo apt update
# 安装 Samba 软件包
sudo apt install samba -y
“`
#### **步骤 1.2:创建专属网络用户**
为了安全,我们创建一个独立的用户 `smbuser` 专门用于网络访问。
1. **创建 Linux 系统用户**:系统会提示您设置一个密码。
“`bash
sudo adduser smbuser
“`
*(按提示输入两次密码,其他信息可直接回车跳过)*
2. **为该用户设置 Samba 密码**:这是您从电脑连接时需要输入的密码。建议设置为与系统密码相同。
“`bash
sudo smbpasswd -a smbuser
“`
*(再次按提示输入两次密码)*
#### **步骤 1.3:准备共享目录结构**
一个良好的目录结构是高效管理的基础。
1. **创建主共享目录**:
“`bash
sudo mkdir -p /mnt/library/backups
“`
2. **分配目录所有权**:将主目录的所有权赋予 `smbuser`,这是确保您能从电脑写入文件的关键。
“`bash
sudo chown -R smbuser:smbuser /mnt/library/backups
“`
3. **创建媒体子目录**:您现在可以直接在 SSH 中创建,或稍后在 Windows 的 L: 盘里用鼠标右键创建。
“`bash
mkdir /mnt/library/backups/Movies
mkdir /mnt/library/backups/TV_Shows
mkdir /mnt/library/backups/Photos
mkdir /mnt/library/backups/PC_Backups
“`
#### **步骤 1.4:配置 Samba**
编辑配置文件,告诉系统要共享什么、以及如何共享。
1. **打开配置文件**:
“`bash
sudo nano /etc/samba/smb.conf
“`
2. **添加共享定义**:滚动到文件最末尾,将以下配置块完整粘贴进去。
“`ini
[Backups]
comment = My Central Data Share
path = /mnt/library/backups
read only = no
browsable = yes
valid users = smbuser
create mask = 0664
directory mask = 0775
“`
**注意**:`valid users = smbuser` 必须与您创建的用户名完全一致。
3. **保存并退出**:按 `Ctrl + X` -\> `Y` -\> `Enter`。
#### **步骤 1.5:启动并启用服务**
让配置生效,并设置为开机自启。
“`bash
# 重启服务以应用新配置
sudo systemctl restart smbd
# 设置为开机自动启动
sudo systemctl enable smbd
“`
—–
### **Part 2: 连接枢纽 – 从电脑访问共享中心**
#### **步骤 2.1:Windows 用户 (映射网络驱动器)**
1. 打开“文件资源管理器”,点击左侧的“**此电脑**”。
2. 在顶部菜单栏中,点击“**…**”并选择“**映射网络驱动器**”。
3. 在弹出窗口中:
* **驱动器:** 选择一个盘符,如 `L:`。
* **文件夹:** 输入共享路径 `\\你的设备IP\Backups` (例如 `\\192.168.31.211\Backups`)。
* 勾选“**登录时重新连接**”和“**使用其他凭据连接**”。
4. 点击“**完成**”,在弹出的凭据窗口中输入:
* **用户名:** `smbuser`
* **密码:** 您用 `smbpasswd` 命令设置的 **Samba密码**。
* 勾选“**记住我的凭据**”。
5. 点击“确定”。您的“此电脑”中将出现一个 L: 盘,可永久使用。
#### **步骤 2.2:macOS 用户**
1. 打开“访达(Finder)”,在顶部菜单栏点击“前往” -\> “连接服务器”。
2. 输入 `smb://你的设备IP/Backups` (例如 `smb://192.168.31.211/Backups`)。
3. 点击“连接”,并按提示输入 `smbuser` 的用户名和 **Samba密码**。
—–
### **Part 3: 影音帝国 – 整合 Jellyfin 媒体服务器**
#### **步骤 3.1:修改 Jellyfin Docker Compose**
1. 登录 **1Panel**,进入 **编排** 菜单,找到 Jellyfin 的编排并点击 **编辑**。
2. **替换**其全部内容为以下配置(关键是 `volumes` 部分的改动)。
“`yaml
# — Jellyfin Compose with Local Media Added —
version: “3.8”
services:
jellyfin:
# … (image, container_name, restart, ports 等保持不变) …
volumes:
– /mnt/mydisk/appdata/jellyfin/config:/config
– /mnt/mydisk/appdata/jellyfin/cache:/cache
– type: bind
source: /mnt/mydisk/cloud_mount
target: /media/cloud
# … (bind options) …
– /mnt/library/backups:/media/local # <— 添加此行
# … (privileged, devices 等保持不变) …
“`
3. 点击 **更新**,等待 Jellyfin 重启。
#### **步骤 3.2:在 Jellyfin 中添加本地媒体库**
1. 登录 Jellyfin 网页,进入 **管理后台** -\> **媒体库**。
2. 点击 **添加媒体库**。
3. **为电影添加媒体库**:
* **内容类型**: 电影
* **显示名称**: 本地电影 (建议用描述性名称区分)
* **文件夹**: 点击 `+` 添加路径 `/media/local/Movies`。
* 设置语言等选项后,点击确定。
4. **再次点击添加媒体库,为电视剧添加**:
* **内容类型**: 电视节目
* **显示名称**: 本地剧集
* **文件夹**: 点击 `+` 添加路径 `/media/local/TV_Shows`。
* 点击确定。
—–
### **Part 4: 记忆宫殿 – 整合 Immich 照片管理**
#### **步骤 4.1:修改 Immich Docker Compose**
1. 在 **1Panel** 的 **编排** 菜单中,编辑 Immich 的编排文件。
2. **替换**其全部内容。关键是在 `immich-server` 和 `immich-machine-learning` 两个服务中都添加相同的 `volumes` 挂载。
“`yaml
name: immich
services:
immich-server:
# … (其他设置) …
volumes:
– ${UPLOAD_LOCATION}:/data
– /etc/localtime:/etc/localtime:ro
– /mnt/library/backups/Photos:/import:ro # <— 添加此行
# … (其他设置) …
immich-machine-learning:
# … (其他设置) …
volumes:
– /mnt/mydisk/appdata/immich/model-cache:/cache
– /mnt/library/backups/Photos:/import:ro # <— 添加完全相同的此行
# … (其他设置) …
# … (redis, database 服务保持不变) …
“`
3. 点击 **更新**,等待 Immich 重启。
#### **步骤 4.2:在 Immich 中添加外部库**
1. 用管理员账户登录 Immich 网页。
2. 进入 **管理** -\> **外部图库 (External Libraries)**。
3. 点击右上角的 **添加图库 (Add Library)**。
4. 在 **图库路径 (Library Path)** 输入框中,准确填写:`/import`
5. 点击 **保存**。
—–
### **Part 5: 日常运作 – 使用与维护指南**
#### **日常文件添加流程**
* **添加影视剧**:在电脑上将下载好的电影或电视剧,直接拖拽到 **L: 盘** 的 `Movies` 或 `TV_Shows` 文件夹中。
* **添加旧照片**:将电脑或相机中的照片,复制到 **L: 盘** 的 `Photos` 文件夹中。
* **电脑备份**:将重要文件备份到 **L: 盘** 的 `PC_Backups` 文件夹中。
#### **手动触发扫描**
* **Jellyfin**: 登录后台,首页点击 **扫描所有媒体库**。
* **Immich**: 登录后台 -\> **外部图库** -\> 点击 **扫描所有图库**。
#### **核心概念重申**
* **Immich 存储区别**:手机App上传的照片存放在 Immich 的私有目录 (`/mnt/library/immich_photos`),是**实时**的且**可删除**的。您从 L: 盘添加的照片属于外部库,是**非实时**的(需扫描)且在Immich中**只读**。
—–
### **Part 6: 附录 – 故障排查**
**问题:连接 L: 盘时提示“拒绝访问”?**
1. **检查密码**:在SSH中执行 `sudo smbpasswd -a smbuser` 重设一个不会输错的密码再试。
2. **检查权限**:执行 `ls -ld /mnt/library/backups`,确保所有者是 `smbuser smbuser`。
3. **检查配置**:执行 `cat /etc/samba/smb.conf`,检查 `[Backups]` 部分的 `valid users` 是否正确无误。
4. **检查服务**:执行 `sudo systemctl status smbd`,确保服务是 `active (running)` 状态。

