从零搭建Nas-tool:一站式影音自动化管理实战指南
1. 为什么你需要Nas-tool作为一个影音爱好者我深知管理影视资源的痛苦。每次想追剧都要经历全网搜索资源→对比种子质量→手动添加下载→等待完成后重命名文件→整理到媒体库→等待刮削元数据→最后才能欣赏。这个过程不仅繁琐还经常遇到各种问题下载的电影文件名乱七八糟、字幕对不上、元数据缺失等等。Nas-tool就是为了解决这些痛点而生的自动化工具。它能够帮你实现一键订阅通过微信/Telegram直接发送资源名称自动触发下载流程智能识别自动匹配TMDB元数据规范命名影视文件无缝衔接与qBittorrent、Jellyfin等工具深度整合全自动管理从下载到入库完全无需人工干预我自己的使用场景是这样的晚上刷微博看到新剧推荐直接复制剧名发给Nas-tool的微信机器人。第二天起床剧集已经整齐地出现在Jellyfin里连海报、演员表、评分都整理好了。这种体验用过就回不去了。2. 环境准备云服务器选择与基础配置2.1 服务器选购建议我测试过多种云服务器配置对于个人使用推荐腾讯云轻量应用服务器2核CPU/4GB内存/80GB SSD硬盘约50/月阿里云ECS突发性能实例t62核/2GB配合100GB高效云盘境外服务器如果主要访问国际资源可选香港/新加坡节点实测数据单部1080P电影处理时Nas-tool内存占用约800MBqBittorrent需要300-500MB。建议至少选择2GB内存的配置。2.2 系统初始化设置连接服务器后这些基础操作必不可少# 更新系统 sudo apt update sudo apt upgrade -y # 安装常用工具 sudo apt install -y vim git curl wget # 设置时区重要影响任务调度 sudo timedatectl set-timezone Asia/Shanghai # 创建专用用户避免使用root sudo useradd -m nasuser sudo passwd nasuser sudo usermod -aG sudo nasuser我强烈建议使用密钥登录替代密码# 本地生成密钥对 ssh-keygen -t rsa -b 4096 # 上传公钥到服务器 ssh-copy-id nasuser你的服务器IP3. Docker环境部署实战3.1 Docker安装与优化不同系统的安装方式# Ubuntu/Debian sudo apt install -y docker.io docker-compose sudo systemctl enable --now docker # CentOS sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl enable --now docker关键优化配置# 修改docker存储目录默认/var/lib/docker sudo mkdir /data/docker sudo vi /etc/docker/daemon.json添加以下内容{ data-root: /data/docker, log-driver: json-file, log-opts: { max-size: 100m, max-file: 3 } }3.2 容器网络规划我推荐使用自定义bridge网络而非默认的docker0docker network create --subnet172.20.0.0/16 nas-network这样部署时有三个优势容器间可通过服务名互相访问可以固定IP地址与宿主机网络隔离更安全4. Nas-tool核心组件部署4.1 Nas-tool主程序安装使用docker-compose部署更规范version: 3 services: nas-tools: image: jxxghp/nas-tools:latest container_name: nas-tools network_mode: host volumes: - ./config:/config - /nastools:/nastools environment: - PUID0 - PGID0 - UMASK000 - NASTOOL_AUTO_UPDATEtrue restart: unless-stopped启动后访问http://服务器IP:3000默认账号密码用户名admin密码password必须立即修改的配置在基础设置→安全中修改密码设置登录IP限制防止未授权访问配置备份设置定期备份数据库4.2 TMDB API申请指南TMDB是元数据的主要来源申请时注意使用英文填写申请理由选择Developer类型应用名称不要包含nas、download等敏感词申请地址https://www.themoviedb.org/settings/api拿到API Key后在Nas-tool的基础设置→媒体中填入。测试时如果连接失败可能需要修改hosts# 查询可用IP ping api.themoviedb.org # 修改hosts sudo vi /etc/hosts 添加 13.224.167.108 api.themoviedb.org5. 下载工具链配置5.1 qBittorrent优化配置推荐使用linuxserver镜像的增强版docker run -d \ --nameqbittorrent \ --networknas-network \ --ip172.20.0.2 \ -e PUID1000 \ -e PGID1000 \ -e TZAsia/Shanghai \ -e WEBUI_PORT8080 \ -p 8080:8080 \ -p 6881:6881 \ -p 6881:6881/udp \ -v ./qbittorrent/config:/config \ -v /nastools/downloads:/downloads \ --restart unless-stopped \ lscr.io/linuxserver/qbittorrent:latest关键优化参数在设置→下载中启用自动管理模式设置磁盘缓存为512MB减少IO压力添加热门Tracker列表提升速度# 更新Tracker列表 curl -s https://trackerslist.com/best.txt | tee -a ./qbittorrent/config/qBittorrent/BT_backup/trackers.txt5.2 Nas-tool与下载器联动在Nas-tool的下载器设置中地址填写容器IP如172.20.0.2端口8080路径留空用户名密码admin/adminadmin测试连接时常见问题解决连接超时→检查防火墙是否开放8080端口认证失败→确认qbittorrent的WebUI账号密码无法下载→检查/nastools/downloads目录权限6. 媒体服务器搭建6.1 Jellyfin硬解配置硬件加速方案选择方案适用场景配置示例VAAPIIntel核显--device /dev/dri:/dev/driNVDECNVIDIA显卡安装nvidia-docker运行时软件解码无显卡增加-e FFMPEG_OPTS-vaapi_device /dev/dri/renderD128我的docker-compose配置jellyfin: image: lscr.io/linuxserver/jellyfin:latest container_name: jellyfin network_mode: host environment: - PUID1000 - PGID1000 - TZAsia/Shanghai volumes: - ./jellyfin/config:/config - /nastools/media:/media devices: - /dev/dri:/dev/dri restart: unless-stopped6.2 媒体库最佳实践目录结构建议/nastools ├── media │ ├── movies # 电影 │ ├── tvshows # 电视剧 │ ├── anime # 动漫 │ └── docs # 纪录片 └── downloads # 下载目录在Jellyfin添加媒体库时内容类型选择准确电影/剧集元数据下载器顺序TMDB优先勾选实时监控自动更新库7. 高级功能配置7.1 微信机器人集成在Nas-tool的消息通知中选择微信协议扫码登录微信小号设置消息模板【下载通知】 资源名称{{name}} 状态{{status}} 进度{{progress}}% 速度{{speed}} 剩余时间{{time_left}}使用技巧发送帮助获取指令列表支持模糊搜索找 权力的游戏订阅更新订阅 西部世界 季47.2 自动化规则配置我常用的智能规则自动删种做种时间7天且分享率3季集整理检测到S01E01自动创建剧集目录质量控制过滤掉小于720p或大于50GB的资源分类规则/media/anime/目录只接收包含动漫标签的资源配置路径设置→下载器→下载策略8. 安全防护与维护8.1 反向代理配置Nginx示例配置server { listen 80; server_name nastool.yourdomain.com; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } # 强制HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl; server_name nastool.yourdomain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; } }8.2 备份策略设置每日自动备份# 备份脚本 cat /nastools/backup.sh EOF #!/bin/bash tar -czvf /backup/nas-tool_$(date %Y%m%d).tar.gz /nastools/config docker exec nas-tools sqlite3 /config/data.db .backup /backup/data.db.bak EOF # 添加定时任务 (crontab -l ; echo 0 3 * * * /bin/bash /nastools/backup.sh) | crontab -建议将备份同步到云存储rclone copy /backup onedrive:backups/nas-tool