目录

基于Ubuntu/Debian Server定制自己的nas系统【二】

关键字 nas,ubuntu,linux,debian,samba,netatalk

来填上次挖的坑,上次写完了 samba, netatalk, avahi 这些有关文件共享的部分,这次来写 nas 用到的其他服务,下载器 aria2, qbittorrent, 以及 frp 内网穿透的部分

docker 和 docker-compose

考虑部署方便,我的部分应用使用了 docker-compose 部署。

安装 docker 并设置为开机启动

1
2
apt install docker.io
systemctl enable --now docker

安装 docker-compose

1
apt install docker-compose

aria2

aria2 分后端 aria2c 和前端页面,前端页面有 AriaNg 和 webui-aria2,这里我用了 AriaNg。直接安装 aria2c 后端然后用 nginx 架 webserver 配合 AriaNg 做前端也是可以的,但是考虑部署方便,后来我改用了 docker 部署,镜像是hurlenko/aria2-ariang

配置文件

docker-compose.yml 如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
version: "3"

services:
  ariang:
    image: hurlenko/aria2-ariang
    container_name: aria2-ariang
    ports:
      - 8014:8080
    volumes:
      - /nas/sp-lomot/download/aria2:/aria2/data
      - ./conf:/aria2/conf
    environment:
      - PUID=1000
      - PGID=1000
      - DOMAIN=0.0.0.0:8080
      - ARIA2RPCPORT=8080
    restart: always

docker-compose.yml 文件中有两处需要修改成你自己的,其中

  • /nas/sp-lomot/download/aria2 是我的下载文件存放目录,
  • 8014:8080 中的 8014 是暴露出来的端口。

使用示例

找个用于存放 docker-compose.yml 和 aria2 设置的目录,例如/opt/appdata/aria2

1
2
3
4
5
6
7
# 创建目录
mkdir -p /opt/appdata/aria2
cd /opt/appdata/aria2
# 编辑 docker-compose.yml
vim docker-compose.yml
# 启动服务
docker-compose up -d

qbittorrent

qbittorrent 是一个很好用的 BT 下载器,我用了 docker 部署

配置文件

docker-compose.yml 如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
version: "3"

services:
  qbittorrent:
    image: gists/qbittorrent
    container_name: qbittorrent
    volumes:
      - /nas/sp-lomot/download/qbittorrent:/data/downloads
      - ./data:/data
    ports:
      - 6881:6881
      - 6881:6881/udp
      - 8012:8012
    environment:
      - UID=1000
      - GID=1000
      - TZ=Asia/Shanghai
      - WEB_PORT=8012
    restart: always

由于暴露的端口有点多,我使用的是 host 模式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
version: "3"

services:
  qbittorrent:
    image: gists/qbittorrent
    container_name: qbittorrent
    network_mode: "host"
    volumes:
      - /nas/sp-lomot/download/qbittorrent:/data/downloads
      - ./data:/data
    environment:
      - UID=1000
      - GID=1000
      - TZ=Asia/Shanghai
      - WEB_PORT=8012
    restart: always

其中/nas/sp-lomot/download/qbittorrent 是我的下载文件存放目录。

使用方法跟上面的 aria2 一样,这里不介绍了。

frp

frp 是一款优秀的内网穿透软件,不过需要服务端,我使用了一台阿里云的服务器作为服务端。详细使用方法可以直接参考官方的中文文档, 以下是我的个人配置

服务端

下载安装

apt 软件源是没有 frp 的,因此需要去 github 下载对应版本:下载地址,这里以 0.32.1,x86_64 为例

1
2
3
4
5
6
7
# 下载frp_0.32.1_linux_amd64.tar.gz
wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz
# 创建文件夹并解压
mkdir -p /opt/frp
mv frp_0.32.1_linux_amd64.tar.gz /opt/frp
cd /opt/frp
tar -zxvf frp_0.32.1_linux_amd64.tar.gz

配置

配置文件为/etc/frp/frps.ini,需要手动创建

1
2
3
4
5
6
7
8
9
# frps.ini
[common]
bind_port = 7070
# token类似密码,需要服务器端与客户端一样
token = xxxxxx

log_file = /var/log/frps.log
log_max_days = 3
log_level = info

使用 systemctl 启动服务端, 创建/etc/systemd/system/frps.service,

1
2
3
4
5
# 创建frps.service
vim /etc/systemd/system/frps.service
# 启动服务端并开机自启
systemctl daemon-reload
systemctl enbale --now frps.service

/etc/systemd/system/frps.service 内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frps -c /etc/frp/frps.ini

[Install]
WantedBy=multi-user.target

客户端

客户端的安装和配置方法与服务端类似,只是配置文件不一样

  • /etc/frp/frpc.ini
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# frpc.ini
# ssh: 7080
[common]
server_addr = xxx.xx.xx.xx #ip和域名都行
server_port = 7070
# token需要与服务端一样
token = xxxxxx

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

这个配置文件只对外网暴露了一个 ssh 服务,更多使用方法还请参考官方文档。

  • /etc/systemd/system/frpc.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frpc -c /etc/frp/frpc.ini
ExecReload=/opt/frp/frpc reload -c /etc/frp/frpc.ini

[Install]
WantedBy=multi-user.target

相关系列

截止到这篇文章,已经包括了 samba, netatalk, aria2, qbittorrent, frp 这些服务,也算是囊括了一个 nas 的基本功能。后续额外的功能等有空再写吧。