干货日志

记录和分享技术成长的脚步

利用树莓派打造家用数据下载中心

目录
[隐藏]

树莓派由注册于英国的慈善组织“Raspberry Pi 基金会”开发,英文名就是Raspberry Pi,是一个基本大小与银行卡差不多的全功能主板。自从2012年问世以来,销量一直遥遥领先于其他的同类产品,截止到2019年1月,产品最新的型号为3代B+型。

之所以树莓派比较受欢迎,原因是价格低廉并且社区解决方案齐全,功能基本满足一般需求,性价比非常高。我买的树莓派是2B,是最后一代采用Arm A7处理器的树莓派,也是最后一个不带WiFi的一代。

接下来我介绍下树莓派从安装系统到打造数据下载中心的一个大概方案,基于我的树莓派2B的系统,如果大于我这个版本的系统的话,可能有些软件的版本号需要改变。文章只是简单记录,没有保存截图,希望大家谅解。

1.安装系统

1、下载文件并刻录TF卡。

我这里采用的是官方的系统,官方会定期更新,这也是吸引大家购买的原因之一,官方主流的系统是基于Debian编写的。下载页面戳这里。这里看到,这里不仅有Linux的,还有Windows10 IoT的,当然也有基于Linux娱乐中心的系统。我用的是Raspberry Pi Desktop。

《利用树莓派打造家用数据下载中心》

下载完ISO文件以后,就可以把ISO文件拷贝到TF上了,实际上这张TF卡也就相当于树莓派的硬盘,所以建议TF卡选择32G以上的,反正现在也不贵,而且以后装一些环境的时候可以有地方放得下。使用Linux系统刻录的方法我就不介绍了,大家可以自己搜索,我用的是Windows 下的Win32DiskImager软件,版本是0.9.5,用的是读卡器+TF卡的方式。

刻录完以后把TF卡插到树莓派上,插上网线,建议使用DHCP上网模式,接通电源和HDMI显示器。以前HDMI显示器要修改配置文件来适应显示器的分辨率等设置,但是新版的我发现已经变成了自动配置。

2、安装系统

接通电源以后系统会自动启动,但是第一次启动会比较慢,大家需要稍微耐心等待一会,安装方式其实应该是类似于文件展开之类的,按照系统的提示一步一步往下操作就可以了,建议语言选择中文,因为我发现先选择英文再选择中文以后显示一直切换不过来,以后我们下载的文件肯定包含中文的比较多,所以安装的时候就把中文勾选上。系统安装到最后会进行更新,建议大家不要选择傍晚的时间进行更新,不一定会连接到大陆的更新源,境外的更新源一般晚上网络繁忙时期网速会比较慢。

最后如果还建议大家安装中文输入法以及部分语言及字体。

sudo apt-get -y install ttf-wqy-zenhei
sudo apt-get -y install scim-pinyin

另外还需要对系统配置的话可以使用raspi-config的配置工具对树莓派进行设置调整。命令为:

sudo raspi-config

《利用树莓派打造家用数据下载中心》
所有操作完成后,运行升级命令,再重启树莓派。

sudo apt-get update

2.安装环境

3、安装远程桌面

Windows服务器上习惯了远程桌面,Linux也采用远程桌面的方式也是不错的,这也是为什么我一开始安装带桌面的原因。当然,使用SSH连接树莓派也是可以的。但是如果使用远程桌面的话,是可以直接连接到root账户的。

树莓派安装远程桌面比较简单,一条命令就可以:

sudo apt-get install xrdp

《利用树莓派打造家用数据下载中心》

4、安装VNC服务

树莓派的VNC服务是集中在raspi-config中,所以只需要启动raspi-config,在第五项Interfacing Options中VNC中开始就可以,这样的话就可以使用RealVNC登陆桌面了。 RealVNC Viewer 下载地址摸这里,有不同的平台进行选择。

《利用树莓派打造家用数据下载中心》

《利用树莓派打造家用数据下载中心》

5、安装gedit

gedit是一个RedHat/CentOS上的内置文本编辑工具,之前这个用习惯了,觉得比Debian内置的vi或是vim这种必须要在Shell窗口运行的工具要方便的很多,毕竟我们安装桌面不就是为了方便么。

安装也很简单,就一个命令。

sudo apt-get install gedit

6、安装DNS工具——GoDNS

作为一个下载服务器,平时主要还是放在家里,但是家里一般都是用的动态IP上网的,想要在家外面下载的话,是需要把动态IP转化成动态域名DDNS的。当然现在大部分路由器也支持了动态域名,只需要把端口转发打开就可以了,但是毕竟有了Linux系统,再把这个工作交给路由器显不出来我们的能力不是?而且在树莓派上做了DDNS也不用担心换路由器了。

GoDNS是我从GitHub上找到的一款用Go语言写的动态DNS的程序,支持的DNS服务商有Cloudflare、DNSPod、HE.net,支持的平台有Linux、MacOS、ARM Linux 、Windows、MIPS32 Platform等。之前的ARM Linux仅支持树莓派3(Arm X64),后来跟作者沟通已经支持到树莓派2(Arm)了。

安装方式在作者的README页面已经写的,我简单描述下我在DNSPod上的操作。首先到DNSPod中打开API功能,记录下ID和Token,同时在DNSPod中在需要使用的域名中做好A记录,A记录的IP地址可以随便设置,例如1.2.3.4,等程序运行开始了以后会自动把树莓派的IP地址更新掉。

我在主博客上已经把完整的教程贴了出来,所以这里就简单的把命令贴上。

mkdir /usr/local/godns
cd /usr/local/godns
wget https://github.com/TimothyYe/godns/releases/download/V1.6/godns-arm-1.6.tar.gz
tar zxvf godns-arm-1.6.tar.gz  && rm -rf godns-arm-1.6.tar.gz
wget -N --no-check-certificate https://raw.githubusercontent.com/TimothyYe/godns/master/config_sample.json
wget -N --no-check-certificate https://raw.githubusercontent.com/TimothyYe/godns/master/systemd/godns.service

接下来重命名config_sample.json为config.json并修改。

mv config_sample.json config.json
vi config.json 
vi godns.service

最后运行程序即可。

cp godns.service /lib/systemd/system 
sudo systemctl enable godns
sudo systemctl start godns

7、安装Web环境——Caddy

首先讲一下,我在主博客上也贴了用树莓派建立一个监控面板的教程,里面也比较详细的描述了Caddy以及PHP和Pi Dashboard的安装方法,这里我也就简单一笔带过。

树莓派的CPU有点太差劲了,虽然可以直接通过apt安装Nginx,但是我觉得对于树莓派来说,处理Web程序的话还是用更加轻量级的Caddy更合适一点。安装方法也很简单,网上已经有了一键安装包,同时安装一个在线文件管理器。

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.filemanager

《利用树莓派打造家用数据下载中心》

安装以后的配置:

  • 启动:/etc/init.d/caddy start
  • 停止:/etc/init.d/caddy stop
  • 重启:/etc/init.d/caddy restart
  • 查看状态:/etc/init.d/caddy status
  • 查看Caddy启动日志:tail -f /tmp/caddy.log
  • 安装目录:/usr/local/caddy
  • Caddy配置文件位置:/usr/local/caddy/Caddyfile
  • Caddy自动申请SSL证书位置:/.caddy/acme/acme-v01.api.letsencrypt.org/sites/xxx.xxx(域名)/

安装成功以后可以在配置文件中添加文件管理器的配置。

:6887 {
 root /usr/local/caddy/www/file
 timeouts none
 gzip
 filemanager / /usr/local/caddy/www/file {
  database /usr/local/caddy/filemanager.db
 }
}

参考链接:

  • Caddy安装脚本及配置 https://www.moerats.com/archives/404/
  • 利用Caddy快速搭建Aria2控制前端 https://www.moerats.com/archives/411/
  • Caddy配置自动免费申请SSL证书 https://larryli.cn/2017/04/645625

8、安装Web环境——PHP

Caddy是支持解析PHP的,PHP可以通过apt安装:

sudo apt-get update
apt-get install php7.0-fpm php7.0-cli php7.0-curl php7.0-gd php7.0-mcrypt php7.0-cgi

但是为了更好的兼容 Caddy ,最好把 PHP-FPM 监听从 Unix socket 改成 TCP socket。

vi  /etc/php/7.0/fpm/pool.d/www.conf

把listen = /run/php/php7.0-fpm.socket 改为 listen = 127.0.0.1:9000

参考链接:

  • Caddy配置PHP https://blog.csdn.net/neuldp/article/details/52232888

其实为了以后读取方便,我还建议安装一个NTFS的兼容驱动,方便移动硬盘切换。这个就是大名鼎鼎的NTFS-3G。

因为我没实际安装,所以我只附上几个参考链接:

  • NTFS-3G官方源码:https://www.tuxera.com/community/open-source-ntfs-3g/
  • linux 使用ntfs-3g 挂载USB存储设备教程:https://blog.csdn.net/tksnail/article/details/68484329
  • ArchLinux?NTFS-3G:https://wiki.archlinux.org/index.php/NTFS-3G_(简体中文)

3.安装软件

9、安装Sync程序

因为某些不可抗拒原因,Sync在境内已经不能使用了,但是有时候有些分享确实是只是通过Sync来分享的。我这里只讨论安装过程。

sudo nano /etc/apt/sources.list.d/resilio-sync.list
echo "deb http://linux-packages.resilio.com/resilio-sync/deb resilio-sync non-free" | sudo tee /etc/apt/sources.list.d/resilio-sync.list
wget -qO - https://linux-packages.resilio.com/resilio-sync/key.asc | sudo apt-key add -
sudo dpkg --add-architecture armhf
sudo apt-get update
echo "deb [arch=armhf] http://linux-packages.resilio.com/resilio-sync/deb resilio-sync non-free" | sudo tee /etc/apt/sources.list.d/resilio-sync.list
sudo apt-get update
sudo apt-get install resilio-sync
sudo service resilio-sync start
sudo systemctl enable resilio-sync
sudo usermod -a -G pi resilio-sync

修改配置及设置网页访问端口(仅供参考)

sudo gedit .config
sudo ./btsync --config /var/lib/btsync/.sync/.config
sudo ./btsync --webui.listen 0.0.0.0:8888</pre>

<img class="alignnone size-full" src="https://image.nicky1605.net/2019/01/Raspi-sync-web.jpg" width="775" height="532" />

参考链接:
<ul>
<li>树莓派 安装 Resilio Sync 方法:https://www.punygear.com/2018/01/25/%E6%A0%91%E8%8E%93%E6%B4%BE-%E5%AE%89%E8%A3%85-resilio-sync/</li>
<li>[图文教程]?<span id="thread_subject">如何在树莓派上安装 Resilio Sync:http://syncfan.com/bbs/forum.php?mod=viewthread&amp;tid=75</span></li>
<li>Sync官网教程:https://help.resilio.com/hc/en-us/articles/206178924-Installing-Sync-package-on-Linux</li>
<li>树莓派之安装Resilio Sync:http://blog.sina.com.cn/s/blog_6b9a8e7d0102x6a8.html</li>
</ul>

<strong>10、安装Transmission</strong>

作为一个下载服务器,BT下载是一个必须要安装的程序,作为一个老牌的BT下载工具,Transmission已经在众多的PT网站和盒子中证明了自己,支持Linux,同时还支持Web控制,所以非常适合树莓派这种不太经常能使用桌面的Linux。

Transmission其实用自动安装就可以解决了,如果用Transmission Gui也是可以的。但是Web的控制页面还是需要单独安装的,我也从网上找到了中文语言包的一键安装包。

这里的Transmission下载地址建议手动在/etc/transmission-daemon/settings配置好
sudo usermod -a -G pi debian-transmission
sudo vi /etc/transmission-daemon/settings.json  #编辑Web及GUI控制用户密码
sudo service transmission-daemon restart
wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control-cn.sh
sudo chmod +x install-tr-control-cn.sh
sudo bash install-tr-control-cn.sh
sudo systemctl enable transmission-daemon

《利用树莓派打造家用数据下载中心》

11、安装Aria2及Web控制器

Aria2作为另外一款BT下载程序,下载速度也是风靡全世界的,尤其是支持Web控制器以后,更是如虎添翼。我这里就贴出安装Aria2和Web控制程序AriaNg。

首先来说Aria2其实如果自己单独编译安装确实非常麻烦,所以我从参考链接看到了已经有人编译了Aria2的程序,我们只需要简单安装就可以了,再一个用AriaNG就可以控制这个Aria2了,变得非常简单。顺便还可以下载网上有人写好的启动服务

apt install make -y
mkdir -p /usr/local/aria2
mkdir -p /home/aria2/download
touch /home/aria2/aria2.session /home/aria2/aria2.log
cd /usr/local/aria2
wget https://github.com/q3aql/aria2-static-builds/releases/download/v1.34.0/aria2-1.34.0-linux-gnu-arm-rbpi-build1.tar.bz2
tar jxvf aria2-*.tar.bz2 &amp;&amp; rm -rf aria2-*.tar.bz2 &amp;&amp; cd aria2-*
make install
wget https://raw.githubusercontent.com/bostoneboy/raspberry_pi_stuff/master/system/aria2c.service

最后还要在新建一个配置文件aria2.conf。因为该文件转载自moerats,我只改了默认位置,所以默认密码也是moerats,可以自行更改

# 文件的保存路径(可使用绝对路径或相对路径)
dir=/home/aria2/download
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
#disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none &lt; falloc ? trunc &lt; prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=trunc
# 断点续传
continue=true

## 下载连接相关 ##

# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=5
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=8
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=16
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=true

## 进度保存相关 ##

# 从会话文件中读取下载任务
input-file=/home/aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/home/aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
#save-session-interval=60

## RPC相关设置 ##

# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
#rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=moerats
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=

## BT/PT下载相关 ##

# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413
# 单个种子最大连接数, 默认:55
#bt-max-peers=55
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=false
# 打开IPv6 DHT功能, PT需要禁用
#enable-dht6=false
# DHT网络监听端口, 默认:6881-6999
#dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
#bt-enable-lpd=false
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=false
# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=0
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true
#停止做种
seed-time=0

最后把配置文件拷贝到service的相应文件夹,或者自己改动service的配置文件

cp aria2c.service /lib/systemd/system/
mkdir -p /etc/aria2/
cp aria2.conf /etc/aria2/
sudo systemctl daemon-reload
sudo systemctl enable aria2c

接下来下载AriaNG,用来控制Aria2程序。

wget https://github.com/mayswind/AriaNg/releases/download/1.0.0/AriaNg-1.0.0.zip -O aira-ng.zip
unzip aira-ng.zip -d aira-ng
cp aira-ng /usr/local/caddy/

接下来修改Caddy配置文件来安装AriaNG。

注意把www.website.com修改成你在GoDNS中配置的网址。为了安全,加了用户验证,帐号为admin,密码12345。

echo "http://www.website.com:6888 {
root /usr/local/caddy/aira-ng
gzip
browse
basicauth / admin 12345
}"&gt; /usr/local/caddy/Caddyfile

参考链接:

  • 使用静态Aria2二进制文件快速安装Aria2:https://www.moerats.com/archives/800/
  • 一个Aria2新的更好用的Web前端—AriaNg安装教程:https://www.moerats.com/archives/255/
  • 树莓派3B+ 远程下载服务器(Aria2):https://blog.csdn.net/kxwinxp/article/details/80288006
  • Aria2+Aria2Ng+OneIndex 宝塔搭建教程:https://blog.67cc.cn/archives/aria2-aria2ng-oneindex-pagoda-course.html

12、搭建oneindex

先把Caddy的配置文件设置好,在Caddy配置文件中加入:

http://www.website.com:6887: {
root /usr/local/caddy/one 
timeouts none
gzip
fastcgi / 127.0.0.1:9000 php 
ext .php
split .php
index index.php
}
rewrite {
to {path} {path}/ /index.php?{query}
}

接下来下载OneIndex程序

mkdir -p /usr/local/caddy/one &amp;&amp; cd /usr/local/caddy/one
wget -N --no-check-certificate "https://github.com/donwa/oneindex/releases/download/3.0/oneindex.zip" &amp;&amp; unzip oneindex.zip &amp;&amp; rm -rf oneindex.zip
chmod -R 755 /usr/local/caddy/

# 访问 https://github.com/donwa/oneindex/releases 获取最新版OneIndex以及适配安装OneDrive。

其实OneIndex自带php上传,当然也可以下载Vicer萌咖大佬的程序进行命令行上传,但是我没有尝试过在树莓派上能否运行。

参考链接:

Aria2+Aria2Ng+OneIndex 宝塔搭建教程:https://blog.67cc.cn/archives/aria2-aria2ng-oneindex-pagoda-course.html

Raspberry PI for OneDrive:https://github.com/RaspiRepo/Raspberry-PI-OneDrive

Caddy+Aria2+AriaNg+OneIndex搭建教程:https://www.iyang9683.cc/aria2-ariang-oneindex-onedrive.html

使用Aria2+Aria2Ng+OneIndex+OneDrive建立不限流量:https://www.moerats.com/archives/700/

13、安装Pi 仪表盘

其实我在我的主博客上已经完整的贴了安装方法,基本上就是Caddy+PHP+web程序的方式。前面已经讲了Caddy跟PHP的适配,我这里就直接贴代码了。

sudo apt-get install git
cd /usr/local/caddy/www/
sudo git clone https://github.com/spoonysonny/pi-dashboard.git
mv pi-dashboard dashboard

接下来在Caddy配置文件中加入以下配置:

http://www.website.com:6886: {
root /usr/local/caddy/www/dashboard
timeouts none
gzip
fastcgi / 127.0.0.1:9000 php 
ext .php
split .php
index index.php
}

参考链接:
Pi Dashboard (Pi 仪表盘): http://maker.quwj.com/project/10

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据