1. Samba 文件共享

Samba 是连接 Linux 与 Windows 的桥梁,用于局域网文件共享。

(1) 更新当前软件

sudo apt-get upgrade
sudo apt-get update
sudo apt-get dist-upgrade

(2) 安装 Samba 服务器

sudo apt-get install samba samba-common

(3) 创建一个用于分享的 Samba 目录

sudo mkdir /home/yys/share

(4) 给创建的这个目录设置权限

sudo chmod 777 /home/yys/share

💡 优化建议: 生产环境中 777 权限过于开放。建议配合 chown 设置特定用户组,例如 sudo chown yys:yys /home/yys/share 并设置权限为 755770

(5) 添加用户
(下面的 yys 是我的用户名,之后会需要设置 Samba 的密码)

sudo smbpasswd -a yys

(6) 配置 Samba 的配置文件

sudo nano /etc/samba/smb.conf

在配置文件 smb.conf 的最后添加下面的内容:

[share]
comment = share folder
browseable = yes
path = /home/yys/share
create mask = 0700
directory mask = 0700
valid users = yys
force user = yys
force group = yys
public = yes
available = yes
writable = yes

扩展:添加多个目录示例

[share]
comment = share folder
browseable = yes
path = /home/yys/share
# ... (同上配置)

[share2]
comment = share folder 2
browseable = yes
path = /home/yys/share2
create mask = 0700
directory mask = 0700
valid users = yys
force user = yys
force group = yys
public = yes
available = yes
writable = yes

在上面 valid users = yys 中的 yys 为我的用户名。

(7) 重启 Samba 服务器

sudo service smbd restart

💡 扩展技巧:解决 Windows "网络" 中不显示 NAS 的问题
如果在 Windows 的“网络”邻居中看不到 Linux 主机,可以安装 wsdd 服务:
sudo apt install wsdd
安装后 Windows 即可自动发现设备,无需每次输入 IP。

(8) Windows 访问方法

Win+R 在弹出的运行窗口中输入 \\ip(或者文件夹地址)即可访问。如 \\192.168.31.221,输入 Samba 用户名及密码访问即可看到共享。

如果提示:“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问...”
解决方法见https://www.linuxidc.com/Linux/2018-11/155467.htm

(9) 输入 Samba 用户名及密码访问即可看到共享文件夹 share。

(10) 映射网络驱动器
选中 share,点击右键,选择“映射网络驱动器”。

注意: mnt 挂载盘目录下必须三层目录,比挂载盘多一层(如挂载盘 /mnt/nas 那么目录就是 /mnt/nas/share),不然可能出现没写入权限的问题。


IPv6 访问 Samba

以下是 IPv6 访问 Samba 共享文件夹的方法:

  1. 首先,获取 Samba 共享文件夹所在的 IPv6 地址。
  2. 然后,将 IPv6 地址中的冒号替换为短横线,并在末尾添加 .ipv6-literal.net。例如,如果 IPv6 地址是 fded:abcd:1234::a,则替换后的地址为 fded-abcd-1234--a.ipv6-literal.net
  3. 最后,在文件夹中访问这个地址即可。

如果您使用的是 Windows 系统,可以按照以下步骤操作:

  1. 打开文件资源管理器。
  2. 在地址栏中输入 IPv6 地址,例如 \\fded-abcd-1234--a.ipv6-literal.net
  3. 按下回车键,即可访问 Samba 共享文件夹。

扩展:Win11 开启 Samba IPv6 外网共享(默认只能局域网访问)

方法1:直接控制面板关闭防火墙(不建议,安全性低)

方法2:打开入站规则放开 445 端口 (推荐)

  1. Win + R 打开运行,输入 control 打开控制面板。
  2. 进入“系统和安全” -> “Windows Defender 防火墙”。
  3. 左侧选择“高级设置”,弹出窗口中选择“入站规则”。
  4. 右侧选择“新建规则”。
  5. 选择“端口”,协议选择 TCP,特定本地端口输入 445,允许连接,后续按向导完成即可。

1.2 Docker 部署 Samba

缺点:小米摄像头等部分设备可能无法发现(未解决)。

注意事项

  1. 环境变量dperson/samba 镜像不使用 USERNAMEPASSWORD 环境变量来设置用户,需要在 command 中指定。
  2. 共享目录路径command 中指定的共享目录路径应该与 volumes 中挂载的路径一致。

以下是调整后的 docker-compose.yml 文件:

version: Ɖ'
services:
  smb:
    image: dperson/samba
    container_name: smb
    network_mode: "bridge" # 如果需要更好发现性,可尝试 host 模式
    ports:
      - "139:139"
      - "445:445"
    restart: always
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /mnt/nas:/mnt/nas
    # 修改下面这行,增加了 -g 参数来禁用 oplocks 和 strict locking 以提高兼容性
    command: >
      -u "yys123456"
      -s "nas/mnt/nasyesnoyesallnone"
      -g "oplocks = no"
      -g "level2 oplocks = no"
      -g "kernel oplocks = no"
      -g "strict locking = no"
      -g "map to guest = Bad User"
      -g "min protocol = SMB2"

配置说明

  • 使用 -u "yys123456" 设置用户名和密码。
  • 使用 -s "nas/mount/nasyesnoyesallnone" 配置共享目录。

2. BT 下载 (Transmission)

2.1 安装

sudo add-apt-repository ppa:transmissionbt/ppa
sudo apt-get update
sudo apt-get install transmission transmission-daemon

2.2 修改配置文件

注意: 修改配置文件前必须先停止服务,否则修改不生效。

sudo service transmission-daemon stop

编辑配置文件:

sudo vi /var/lib/transmission-daemon/info/settings.json
# 或者(取决于安装位置)
sudo vi /etc/transmission-daemon/settings.json

关键配置项:

{
    "download-dir": "/home/yys/share/download"
    "incomplete-dir": "/home/yys/share/download"
    "rpc-authentication-required": true
    "rpc-bind-address": "0.0.0.0" 
    "rpc-enabled": true 
    "rpc-password": "123456" 
    "rpc-port": 9091 
    "rpc-url": "/transmission/" 
    "rpc-username": "yys" 
    "rpc-whitelist": "127.0.0.1" 
    "rpc-whitelist-enabled": false
}

主要是关闭 rpc-whitelist-enabled (取消白名单),并设置 用户名密码 以及 download-dir (下载路径)。

2.3 权限管理

因为修改了默认下载路径,默认安装的 transmission 用户组 (debian-transmission) 没有读写权限。

方法1:正规权限赋予 (推荐)

sudo usermod -a -G debian-transmission root
sudo chgrp -R debian-transmission ./transmission-daemon/

方法2:粗暴修改为 777 权限

sudo chmod -R 777 /etc/transmission-daemon  
sudo chmod -R 777 /home/yys/share/download # 你的实际下载路径

2.4 启动和停止

  • 启动sudo service transmission-daemon start
  • 停止sudo service transmission-daemon stop

美化 WEB UI

原版界面较简陋,建议安装加强版 UI:

wget https://gitee.com/culturist/transmission-web-control/raw/master/release/install-tr-control-gitee.sh
bash install-tr-control-gitee.sh

安装后访问 http://ip:9091/,输入用户名密码即可看到新 UI。

2.5 卸载

sudo apt-get install ppa-purge && sudo ppa-purge ppa:transmissionbt/ppa

3. Aria2 离线下载

3.1 安装

命令行安装:

sudo apt -y install aria2
sudo mkdir /etc/aria2
touch /etc/aria2/aria2.session
wget -P /etc/aria2 https://github.com/ToyoDAdoubi/doubi/blob/master/other/Aria2/dht.dat

Docker Compose 安装 (推荐):
使用 p3terx/aria2-pro 镜像,功能更强大。

version: Ɖ'
services:
  aria2:
    image: p3terx/aria2-pro
    container_name: aria2
    environment:
      - PUID=0      # 建议填写实际用户的UID,如1000
      - PGID=0      # 建议填写实际用户的GID
      - RPC_SECRET=123456
      - RPC_PORT=6800
      - LISTEN_PORT=6888
      - FILE_ALLOCATION=none
    ports:
      - "6800:6800"
      - "6888:6888"
      - "6888:6888/udp"
    volumes:
      - /mnt/nas_data/share/download:/downloads
      - /home/yys/docker/aria2/config:/config
    restart: unless-stopped

3.2 配置文件 (非 Docker 方式)

sudo vim /etc/aria2/aria2.conf

配置文件内容示例:

# 文件的保存路径
dir=/home/yys/share/download
disk-cache=32M
file-allocation=trunc
continue=true

## 下载连接相关 ##
max-concurrent-downloads=10
max-connection-per-server=16
min-split-size=10M
split=16
max-overall-upload-limit=80
disable-ipv6=false
check-certificate=false

## 进度保存 ##
input-file=/etc/aria2/aria2.session
save-session=/etc/aria2/aria2.session
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
rpc-listen-port=6800
rpc-secret=123456

## BT/PT 相关 ##
follow-torrent=true
enable-dht=true
enable-peer-exchange=true
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
seed-ratio=0.1
bt-seed-unverified=true
bt-save-metadata=true
# 建议定期更新 Tracker 列表
bt-tracker=udp://tracker.coppersurfer.tk:6969/announceudp://tracker.opentrackr.org:1337/announce...

3.3 新建系统服务 (systemd)

sudo vim /etc/systemd/system/aria2c.service

写入以下内容:

[Unit]
Description=Aria2c

[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

3.4 启动与开机自启

systemctl enable aria2c.service
systemctl start aria2c.service

3.5 浏览器使用

推荐安装浏览器插件 Aria2 for EdgeAriaNg
设置:扩展选项 -> Aria2-RPC-Server -> 更改 IP 为 http://192.168.31.84:6800/jsonrpc,并填入 rpc-secret (如 123456)。

3.6 常见问题

  • RPC 连接失败:检查防火墙是否放行 6800 端口,检查 rpc-secret 是否匹配。

3.7 下载慢/无速度解决办法

方法1:完善 DHT 网络

  1. 开启 DHT:配置文件中确保 enable-dht=true
  2. 端口映射:路由器放行配置的 BT 监听端口。
  3. 下载 DHT 文件:下载 dht.dat 放入配置目录,帮助快速寻找节点。

方法2:添加 Trackers (关键)
BT 下载慢通常是因为 Tracker 服务器连接少。

  • 推荐使用 trackers_besttrackers_all_udp
  • 获取地址:GitHub - trackerslisttkser.tk
  • 将列表追加到 aria2.confbt-tracker= 后面(用逗号分隔),重启 Aria2。

4. NextCloud 搭建私人网盘

4.1 基础设置

更新及安装 Snap 包管理器:

sudo apt-get update
sudo apt-get install snap snapd

4.2 安装 NextCloud (Snap方式)

sudo snap install nextcloud

安装成功会显示类似 nextcloud 22.2.3snap3 installed

4.3 初始化设置

访问本机 IP (如 http://192.168.1.xxx) 进入安装页面,设置管理员账号密码。

4.4 解决“通过不被信任的域名访问”

编辑配置文件:

sudo vim /var/snap/nextcloud/current/nextcloud/config/config.php

trusted_domains 数组中添加你的域名或新 IP:

'trusted_domains' =>
array (
  0 => 餘.168.1.100'
  1 => 'example.com'
  2 => 'ipv6-address'
)

保存后重启 Snap:sudo snap restart nextcloud

4.5 使用 Python 上传文件 (WebDAV)

Nextcloud 支持 WebDAV 协议。

import requests
import os

# 配置信息
server_url = 'http://192.168.31.166'
username = 'root'
password = �' # 或使用应用专用密码
file_path = r"F:\新建文件夹\111.png"

file_name = os.path.basename(file_path)
session = requests.Session()
session.auth = (username password)

# 上传
with open(file_path 'rb') as file:
    # 默认传到根目录,如需传到子目录: /remote.php/dav/files/{username}/Photos/{file_name}
    url = f'{server_url}/remote.php/dav/files/{username}/{file_name}'
    response = session.put(url data=file)

if response.status_code in [201 204]:
    print('文件上传成功!')
else:
    print(f('文件上传失败。状态码: {response.status_code}'))

4.6 查看日志

sudo cat /var/snap/nextcloud/current/logs/nextcloud.log

4.7 解决 External Storage 无法读写问题

Snap 版 Nextcloud 由于沙盒限制,无法直接读取 /mnt/media 下的文件。

解决方案:

  1. 授予权限

    sudo chown -R root:root /mnt/nas/share/nextcloud
    sudo chmod -R 777 /mnt/nas/share/nextcloud
    

    (注意:777 权限仅为测试,建议根据实际用户组调整)

  2. 连接 Snap 接口 (关键)

    snap connect nextcloud:removable-media
    

    执行此命令后,Nextcloud 才能访问 /mnt/media 目录。

如果是 Docker 版本:
需在 docker run 或 compose 中添加 -v /mnt/data:/mnt/data 映射,并确保容器内用户(通常是 www-data uid 33)对该目录有写权限:
sudo chown -R 33:33 /mnt/nas/share/nextcloud

4.8 开启 IPv6 支持

编辑 config.php

  1. trusted_domains 添加 IPv6 地址或域名。
  2. 修改或添加 'overwrite.cli.url' => 'http://[你的IPv6地址]'

4.9 手动安装插件 & 4.10 命令行更新

如果后台提示“通过浏览器更新被禁用”,请使用命令行:

# 进入 Snap 环境执行命令
sudo nextcloud.occ upgrade
# 或者 Docker 环境
docker exec -it nextcloud su -s /bin/bash www-data -c "php occ upgrade"

如果需要手动关闭维护模式:

sudo nextcloud.occ maintenance:mode --off

4.11 性能优化

  • Cron 任务:在 Nextcloud 设置 -> 基本设置 -> 背景任务,选择 Cron(推荐),不要用 AJAX。
  • 缓存:建议配置 Redis 缓存以减少数据库压力。

5. Jellyfin 媒体服务器

Jellyfin 是 Emby/Plex 的免费开源替代品,支持硬件转码。

安装 (Docker 方式推荐):
参考 Docker Hub

改善番剧识别 (刮削)

建议安装 AniListAniDB 插件。

  1. 控制台 -> 插件 -> 安装 AniList/AniDB。
  2. 重启 Jellyfin 容器 (docker restart jellyfin_id)。
  3. 编辑媒体库 -> 刮削器顺序:AniDB > AniList > TheMovieDb。

5.1 电视直播 (IPTV)

  1. 获取源:网上搜索 m3u8 直播源 (如 http://tonkiang.us/)。
  2. 制作 m3u 文件:使用 TeleList 等工具将 频道名链接 格式转换为 .m3u 文件。
  3. Jellyfin 设置
    • 控制台 -> 电视直播 -> 添加调谐器 -> M3U Tuner
    • 填入 m3u 文件路径或 URL。
    • (可选) 添加 XMLTV 格式的 EPG 指南地址(如 http://epg.51zmt.top:8000/e.xml)。

5.2 解决封面/元数据不刷新 (MetaShark)

国内网络环境下 TMDB 可能无法访问。

解决方法:安装 MetaShark 插件

  1. 添加存储库:控制台 -> 插件 -> 存储库 -> 添加:
    • 国内加速: https://ghfast.top/https://github.com/cxfksword/jellyfin-plugin-metashark/releases/download/manifest/manifest_cn.json
  2. 安装插件:在目录中找到 MetaShark 安装并重启。
  3. 配置:媒体库设置中勾选 MetaShark 并移至首位,取消 TheMovieDb。

树莓派 4B 硬件转码设置

树莓派 4B 支持 H.264 硬件编解码 (V4L2)。

Docker 配置:
需映射设备:

devices:
  - /dev/vchiq:/dev/vchiq
  - /dev/video10:/dev/video10
  - /dev/video11:/dev/video11
  - /dev/video12:/dev/video12

Jellyfin 内部设置 (控制台 -> 播放 -> 转码):

  1. 硬件加速:选择 Video4Linux2 (V4L2)
  2. 启用硬件解码:仅勾选 H264 MPEG2 VC1不要勾选 HEVC (H.265),树莓派硬解 HEVC 性能极差且不稳定。
  3. 启用硬件编码:仅勾选 H.264
  4. 色调映射取消勾选 (树莓派性能不足)。
  5. 转码线程:设置为 2 或 3。

其他常用服务一览