###### tags: `nas`
# 手動搭建個人nas系統
## 簡介
因為Docker有些東西不是很了解,所以這是以直接搭服務的教學
集合個人伺服器主機常用服務
1. [FileBrowser](https://github.com/filebrowser/filebrowser)(文檔管理)
2. [JellyFin](https://github.com/jellyfin/jellyfin)(影音串流)
3. [Docker](https://github.com/portainer/portainer)(Docker部屬)
4. [FRP](https://github.com/fatedier/frp)(反向代理)
5. [Pi DashBoard](https://github.com/nxez/pi-dashboard)(監控主機資源使用量)
6. [Aria2](https://aria2.github.io/)(離線下載,BT)
7. [Php探針](http://www.yahei.net/tz/tz_tw.php)(監控主機狀態)
8. [TTYD](https://github.com/tsl0922/ttyd)(網頁終端)
## 環境說明
系統:ubuntu
網頁伺服器:apache2
Terminal:screen
文字編輯器:vim
防火牆管理:ufw
## FileBrowser
建立一個screen
```sh
screen -S filebrowser
```
下載安裝FileBrowser
```sh
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
filebrowser -r /path/to/your/files
```
然後Ctrl+C先結束
輸入指令導出設定檔,檔案格式為yaml
```sh
filebrowser config export /your/config/path/config.yaml
```
修改設定檔(相關設置請參考[官網](https://filebrowser.org/))
```sh
vim /your/config/path/config.yaml
```
```yaml
...
signup: false
createuserdir: false
defaults:
scope: .
locale: zh-tw
viewmode: mosaic
singleclick: false
sorting:
by: ""
asc: false
perm:
admin: true
execute: true
create: true
rename: true
modify: true
delete: true
share: true
download: true
commands: []
hidedotfiles: false
authmethod: json
branding:
name: ""
disableexternal: false
files: ""
theme: dark
commands:
after_copy: []
after_delete: []
after_rename: []
after_save: []
after_upload: []
before_copy: []
before_delete: []
before_rename: []
before_save: []
before_upload: []
shell: []
rules: []
server:
root: /shortcut
baseurl: ""
socket: ""
tlskey: ""
tlscert: ""
port: "8080"
address: 0.0.0.0
log: stdout
enablethumbnails: false
resizepreview: false
enableexec: false
typedetectionbyheader: false
auther:
recaptcha: null
```
導入設定檔
```sh
filebrowser config import /your/config/path/config.yaml
```
ufw允許port連入
```sh
ufw allow yourport
```
運行服務
```sh
filebrowser
```
按下Ctrl+A+D讓其在背景運行
## JellyFin
安裝jellyfin
```sh
wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo apt-key add -
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
apt update
apt-get install jellyfin
```
設置port
```sh
vim /etc/jellyfin/system.xml
```
ufw允許port連入
```sh
ufw allow yourport
```
重啟服務
```sh
service jellyfin restart
```
記憶體清除cache/buffer指令
```sh
sync; echo 1 > /proc/sys/vm/drop_caches
```
## Docker
這邊DockerUI使用的是[Portainer](https://www.portainer.io/)
安裝Docker
```sh
apt-get install docker.io
```
安裝Portainer
```sh
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
```
## FRP
建立一個screen
```sh
screen -S frp
```
下載最新版[FRP](https://github.com/fatedier/frp/releases)
```sh
wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
```
解壓縮
```sh
tar zxvf frp_0.37.0_linux_amd64.tar.gz
```
進入目錄
```sh
cd frp_0.37.0_linux_amd64
```
修改frpc.ini檔案
```sh
vim frpc.ini
```
```ini=
[common]
#connect frp server config
token =
server_addr =
server_port =
#frp client web ui config
admin_addr =
admin_port =
admin_user =
admin_pwd =
```
ufw允許port連入
```sh
ufw allow yourport
```
運行服務
```sh
./frpc -c frpc.ini
```
按下Ctrl+A+D讓其在背景運行
## Pi Dashboard
安裝php環境
```sh
apt-get install php
```
從Github clone下來,放入Web Server目錄即可
```sh
https://github.com/nxez/pi-dashboard.git
```
## Aria2
建立一個screen
```sh
screen -S aria2
```
安裝aria2
```sh
apt-get install aria2
```
建立設定檔
```sh
mkdir /etc/aria2
touch /etc/aria2/aria2.session
touch /etc/aria2/aria2.log
touch /etc/aria2/aria2.conf
```
編輯aria2.conf
```
vim /etc/aria2/aria2.conf
```
```c=
##===================================##
## 文件保存相关 ##
##===================================##
# 文件保存目录
dir=/media/Download
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=16M
# 断点续传
continue=true
#日志保存
log=aria2.log
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=prealloc
##===================================##
## 下载连接相关 ##
##===================================##
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=100
# 同一服务器连接数, 添加时可指定, 默认:1
# 官方的aria2最高设置为16, 如果需要设置任意数值请重新编译aria2
max-connection-per-server=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=false
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
# 建议同max-connection-per-server设置为相同值
split=16
##===================================##
## 进度保存相关 ##
##===================================##
# 从会话文件中读取下载任务
input-file=/etc/aria2/aria2.session
# 在Aria2退出时保存错误的、未完成的下载任务到会话文件
save-session=/etc/aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=60
##===================================##
## RPC相关设置 ##
##此部分必须启用,否则无法使用WebUI
##===================================##
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许外部访问, 默认:false
rpc-listen-all=true
# RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=
# 启动SSL
# rpc-secure=true
# 证书文件, 如果启用SSL则需要配置证书文件, 例如用https连接aria2
# rpc-certificate=
# rpc-private-key=
##===================================##
## BT/PT下载相关 ##
##===================================##
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413
# 单个种子最大连接数, 默认:55
#bt-max-peers=55
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=true
# DHT网络监听端口, 默认:6881-6999
dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true
# 每个种子限速, 对少种的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=true
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true
# 单个种子最大连接数, 默认:55 0表示不限制
bt-max-peers=0
# 最小做种时间, 单位:分
# seed-time = 60
# 分离做种任务
bt-detach-seed-only=true
#BT Tracker List ;下载地址:https://github.com/ngosang/trackerslist
bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.internetwarriors.net:1337/announce,udp://tracker.opentrackr.org:1337/announce
```
下載ariang
```sh
wget https://github.com/mayswind/AriaNg/releases/download/1.2.2/AriaNg-1.2.2.zip
```
解壓縮後,放入Web Server目錄即可
```sh
unzip AriaNg-1.2.2.zip
```
ufw允許port連入
```sh
ufw allow yourport
```
運行服務
```sh
aria2c --conf-path=/etc/aria2/aria2.conf
```
按下Ctrl+A+D讓其在背景運行
## Php探針
安裝php環境(之前有安裝的可以取消這一步)
```sh
apt-get install php
```
下載php探針
```sh
wget http://www.yahei.net/tz/tz_tw.zip
```
解壓縮後,放入Web Server目錄即可
```sh
unzip tz_tw.zip
```
## TTYD
建立一個screen
```sh
screen -S ttyd
```
下載程式碼自行編譯
```sh
sudo apt-get install build-essential cmake git libjson-c-dev libwebsockets-dev
git clone https://github.com/tsl0922/ttyd.git
cd ttyd && mkdir build && cd build
cmake ..
make && sudo make install
```
ufw允許port連入
```sh
ufw allow yourport
```
運行服務
```
./ttyd -p 8022 --credential admin:password bash
```
按下Ctrl+A+D讓其在背景運行