家庭服务器 - 开发/资源下载(NAS)/媒体服务归一配置

453 阅读5分钟

我的需求

首先,想做一个东西,首先明确自己需要什么,我的需求非常明确:

  • 娱乐使用,我希望此服务器能自动追剧或者追动漫。
  • 开发使用,我希望此服务器能适配我的开发工作,如编译,跑集群。
  • 下载使用,我经常从各总网站下载资源或下或巨大的文件(ISO)等(笔记本下载占资源,丢给服务器后台下载)。
  • 部署相关服务,如部署博客等,能从外网访问;如跑周期任务,签到等。

硬件/系统选择和安装

硬件的话,我直接淘宝组的ITX小主机(x86 CPU为二手,成本2K左右):

系统基于我的需求,折腾操作比较多,直接安装NAS系统肯定是不合适的(如TrueNAS),最后我选择了Ubuntu Server 20.04,可以方便的基于Docker做各种功能扩展。

这里有个缺陷就是,不好做手机照片,视频等存储同步,也没有NAS系统那种容灾操作(但目前没这个需求)。

配套软件选择&安装

下载使用

现有媒体比较完美的解决方案是nastool,但是有个缺陷是,它只能用来追剧,我还需要从各大资源网站下载相关资源,所以,这里我自己开发了一个全局资源下载系统 Kubespider(点我查看项目),有如下功能点(后续适配更多场景,如自动下载豆瓣评分大于8的电影):

  • 自动追剧,可以从 美剧天堂 下载追更美剧。
  • 自动追动漫,可以从 蜜柑计划 下载追更动漫。
  • 接受触发,从 BT之家 下载资源(电影,电视剧)。
  • 可以接受各种资源触发下载,如mp4、mp3、torrent,bt等。
  • 对接alist,自动下载各种网盘资源。
  • 对接YouTube,Bilibili等资源网站,下载视频。
  • 可以使用aria2,迅雷作为下载软件。
  • 自动对下载文件进行分类。
  • 提供标准接口,你也可以实现自己的任何下载场景。

可以看如下架构图,Kubespider是作为一个在下载软件和资源网站的中间层,在不同场景特定条件下,从资源网站获取链接,调用不同的下载软件下载资源:

最后的使用效果非常不错,示例如下,右键鼠标,Kubespider在服务器上接收触发,即可下载已有剧集并追更,也可以根据bt连接下载资源,下载通用文件(iso镜像等),你也可以自定义丰富资源下载场景。

娱乐使用

通过Kubespider,能够自动下载相关媒体资源,那么,如何方便的访问呢?通常的解决办法有:

  • 使用plex/jellyfin等方案,观看媒体资源。
  • 使用Samba,直接通过笔记本访问。

为了方便,我直接选择的samba,在ubuntu中运行如下命令即可:

sudo apt install samba -y

后续将如下内容写入`etc/samba/smb.conf:

[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
[homes]
   comment = Home Directories
   browseable = no
   read only = no
   create mask = 0700
   directory mask = 0700
   valid users = %S
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no

设置samba密码并重启服务:

smbpasswd -a root
systemctl restart smbd.service

最后通过打开文件游览器,输入<server_ip>\,输入root/<设置的密码即可访问>。

开发使用

这个就基于你自己的技术栈,配置软件即可,这里就不说了。

部署相关服务使用

通常,部署博客后,需要公网IP才能访问。而我的机器是部署在局域网里面的,如何处理呢?

这是可以使用 frp 服务,借助一台公网的服务器,暴露局域网的服务到公网:

服务端配置如下:

1.下载最新版本

wget https://github.com/fatedier/frp/releases/download/v0.47.0/frp_0.47.0_linux_amd64.tar.gz
tar -zxvf frp_0.47.0_linux_amd64.tar.gz
cd frp_0.47.0_linux_amd64
mv frps /usr/local/bin/
mkdir /root/.frp/

2.设置配置/root/.frp/frps.ini

[common]
bind_port = 4443

3.设置系统服务/etc/systemd/system/frps.service

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/bin/frps -c /root/.frp/frps.ini

[Install]
WantedBy = multi-user.target

4.启动服务

# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps
# 设置开启启动
systemctl enable frps

客户端配置如下:

1.下载最新版本

wget https://github.com/fatedier/frp/releases/download/v0.47.0/frp_0.47.0_linux_amd64.tar.gz
tar -zxvf frp_0.47.0_linux_amd64.tar.gz
cd frp_0.47.0_linux_amd64
mv frpc /usr/local/bin/
mkdir /root/.frp/

2.设置配置/root/.frp/frpc.ini(如下除了common,都可以自定义配置暴露端口)

[common]
server_addr = 23.105.x.x #服务器IP
server_port = 4443 #服务端设置的端口

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[server-custom]
type = tcp
local_ip = 127.0.0.1
local_port = 1235
remote_port = 6001

3.设置系统服务/etc/systemd/system/frpc.service

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/bin/frpc -c /root/.frp/frpc.ini

[Install]
WantedBy = multi-user.target

4.启动服务

# 启动frp
systemctl start frpc
# 停止frp
systemctl stop frpc
# 重启frp
systemctl restart frpc
# 查看frp状态
systemctl status frpc
# 设置开启启动
systemctl enable frpc

所有安装好后,即可通过外网机器ip+端口访问局域网内不同服务。

最后

如果此文章对你有帮助,请给我的项目一个star: GitHub - jwcesign/kubespider: A global resource download orchestration system, build your home download center.