###### 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讓其在背景運行