树莓派的一大用途就是作为下载服务器,毕竟一直开着电脑下载还是挺费电的。而且电脑上也不方便共享。基于树莓派搭建一个下载服务器,在用 Samba 共享出去,所有设备都能使用远程下载服务和 NAS 服务。配合 DLNA,电视投影仪之类的设备也能方便的播放 NAS 上的高清电影。
transmission
BT 下载首选 transmission,自带一个 web 管理界面。Ubuntu 上通过 apt
安装 transmission-daemon
。以下是一些参考设置。
- 配置文件在
/etc/transmission-daemon/settings.json
- 通过web界面修改的重启daemon之后会被覆盖,因此应该在配置文件中修改,然后reload daemon
systemctl reload transmission-daemon
- 强制加密下载
"encryption": 2
- Ubuntu 上 transmission 运行的用户默认是
debian-transmission
,如果想让 Samba 用户能直接管理 BT 下载的文件,需要将 Samba 用户加入debian-transmission
组,并且 transmission 里设置 umask 为 2,即让transmission 以 664 权限创建新文件:"umask": 2
- 访问 Web 管理界面的 IP 白名单:
"rpc-whitelist": "192.168.1.*"
- 指定下载目录:
"download-dir": "/data/transmission/downloads"
- 通过
rpc-username
和rpc-password
配置 Web 管理界面用户名和密码,密码直接写明文即可,reload
后会自动加密 - 设置
"watch-dir": "/data/transmission/torrents"
,即监视某个目录下的种子文件,自动开始下载 - 路由器需要做 NAT 开放
peer-port
设置的端口。
另外,可以通过 https://github.com/AndrewMarchukov/tracker-add
项目来优化下载。
aria2
aria2 主要用于多线程下载 HTTP 直链文件。远程下载可以通过 AriaNg 来实现。
aria2 参考配置:
#后台运行
daemon=true
#rpc密钥,这个密钥就是rpc的密码,AriaNg 设置时会用到
rpc-secret=secret
#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许外部访问,false的话只监听本地端口
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
#rpc-listen-port=6800
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#文件保存路径, 默认为当前启动位置
dir=/data/aria2
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=prealloc
#不进行证书校验
check-certificate=false
#保存下载会话
save-session=/home/user/.config/aria2/aria2.session
input-file=/home/user/.config/aria2/aria2.session
#断点续传
save-session-interval=60
使用 systemd 管理 aria2:
[Unit]
Description=Aria2
After=network.target
[Service]
User=user
Group=group
ExecStart=/usr/bin/aria2c --conf-path=/home/user/.config/aria2/aria2.config
ExecReload=/bin/kill -HUP $MAINPID
Type=forking
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
AriaNg 的 Nginx 配置:
server {
listen 8080;
root /data/wwwroot/ariang;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
access_log /data/log/nginx/ariang_access.log;
error_log /data/log/nginx/ariang_error.log;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
然后访问 AriaNg,配置 rpc 密钥之后就可以使用了。
DLNA
安装 minidlna
。然后通过 /etc/minidlna.conf
来配置,主要关注以下配置:
# A表示这个目录是存放音乐的,当minidlna读到配置文件时,它会自动加载这个目录下的音乐文件
media_dir=A,/samba/DLNA/Music
media_dir=P,/samba/DLNA/Picture
media_dir=V,/samba/DLNA/Video
# 配置minidlna的数库数据的存放目录
db_dir=/samba/DLNA/db
# 配置日志目录
log_dir=/samba/DLNA/log
支持 DLNA 的播放器:
- Windows 10: windows media play, VLC
- 安卓: VLC
Samba
安装 samba
,配置文件在 /etc/samba/smb.conf
:
[global]
# 控制连接数量,超过之后新连接将被拒绝
max connections = 5
# 白名单
hosts allow = 127. 192.168.1. 10.
# logs split per machine
log file = /data/log/samba/log.%m
# max 50KB per log file, then rotate
max log size = 50
security = user
passdb backend = tdbsam
guest ok = no
load printers = no
cups options = raw
#用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
# Some other performace tuning options
# disable links and symbol links
follow symlinks = no
wide links = no
# enable some read/write tuning
use sendfile = yes
read raw = yes
write raw = yes
aio read size = 16384
aio write size = 16384
write cache size = 262144
max xmit = 65536
large readwrite = yes
getwd cache = yes
# disable locking, because only 2 share can be written.
strict locking = no
fake oplocks = yes
oplocks = no
[homes]
comment = Home Directories
path = /data
# 是否显示目录
browseable = yes
writable = yes
create mode = 0664
directory mode = 0775
guest ok = no
valid users = user
添加用户:
useradd user
smbpasswd -a user
另外要注意 Samba 所在盘要用 xfs
或者 ext4
文件系统,不要用 ntfs
,在Linux上 ntfs-3g
速度比较慢,大约只有 xfs
的一半。
(全文完)
发表回复