使用docker搭建各类nas应用
基础nas应用可分为下载类、文件管理类、影音类、同步类、文本类及照片类等等。
本文介绍在docker环境下使用docker搭建各类nas应用。
不知道如何创建docker环境,可以参考以前的文章。当然docker环境的创建不仅限于笔者的这套方案,最简单的甚至可以直接在pve8.1下安装docker。但是并不推荐这么做,尽量保持pve8.1本身宿主环境是最纯净的。
开整之前
国内拉取docker镜像速度可能会比较慢,可以选择并设置docker镜像源。
常用的docker镜像源有:
中科大镜像地址:http://mirrors.ustc.edu.cn
中科大github:地址:https://github.com/ustclug/mirrorrequest
Azurel中国镜像地址:http://mirror.azure.cn
阿里云镜像仓库:https://cr.console.aliyun.com
coreos镜像仓库:https://quay.io/repository
RedHat镜像仓库:https://access.redhat.com/containers
等等,选择一个并设置。
1. echo '{ "registry-mirrors": [ "http://hub-mirror.c.163.com" ] }' > /etc/docker/daemon.json && systemctl restart docker
下载类
下载类应用有很多,qb、tr、amule、xunlei、gopeed等等,以应用最广泛的qb为例(PTer的最爱),一条docker-cli命令如下:
1. docker run -itd --name qbittorrent --restart unless-stopped -e TZ=Asia/Shanghai -p 8080:8080 -v /opt/appdata/qbittorrent:/config -v /mnt:/downloads linuxserver/qbittorrent:latest
这里大概解释一下:
docker run就是运行docker容器的命令
linuxserver/qbittorrent:latest就是使用dockerhub最新版本的作者是linuxserver的qbittorrent镜像
-itd就是以后台交互方式来运行
--name就是容器名称
--restart就是重启策略
-e就是容器变量
-p就是容器的端口映射,默认网络为bridge模式
-v就是容器的路径映射,这里该容器的配置文件会持久化在lxc的/opt/appdata/qbittorrent目录下,你下载的文件最终会被存放在lxc的/mnt目录下

qbittorrent新版密码不再是adminadmin(用户仍为admin),使用查看日志命令找到临时密码。
1. docker logs -t qbittorrent

进入qbittorrent设置修改admin登录密码,并修改成中文界面,下载路径/downloads保持不变。



文件管理类
文件管理类应用也有很多,kodexplorer、kodbox、webos、filebrowser等等,以最有名的kodexplorer为例,一条docker-cli命令如下:
1. docker run -itd --name kod --restart unless-stopped -p 8880:80 -v /opt/appdata/kod:/var/www/html -v /mnt:/mnt kodcloud/kodexplorer:latest
看到这里,应该都能自己解释含义了吧。

打开页面,设置admin密码即可登入使用。

影音类
影音类应用主流的大致有emby、jellyfin、plex等,以开源免费的jellyfin为例,一条docker-cli命令如下:
1. docker run -itd --name jellyfin --restart unless-stopped -e TZ=Asia/Shanghai -p 8096:8096 --device /dev/dri:/dev/dri -v /opt/appdata/jellyfin/config:/config -v /opt/appdata/jellyfin/cache:/cache -v /mnt:/mnt nyanmisaka/jellyfin:latest
这里解释一下--device参数:就是把lxc的显卡传递给容器内部,使之可以调用核显实现硬解。

打开页面,一步步傻瓜化操作完成设置。

重点说下,进入控制台-播放-转码,选择QSV来启用硬件转码。

同步类
同步类软件也有很多,syncthing、resiliosync、verysync等等,以国产本地化做的最好的verysync为例,一条docker-cli命令如下:
1. docker run -itd --name verysync --restart unless-stopped -p 8886:8886 -v /mnt:/mnt jonnyan404/verysync:latest

进入页面,进行简单设置。

文本类
文本类软件也有很多,大型一点的包括各种wiki类,适中一点的包括mrdoc,trilium,raneto等等,轻量一点的包括memos、siyuan、affine等等,这里以affine(号称notion开源版)为例,一条docker-cli命令如下:
1. docker run -itd --name affine --restart unless-stopped -p 3000:3000 -v /opt/appdata/affine:/app/data ghcr.io/toeverything/affine-self-hosted:latest

打开页面,开箱即用,支持markdown。

照片类
照片类软件有immich、photoview、photoprism、lomorage、pigallery等等,这里以较为轻量的pigallery为例,一条docker-cli命令如下:
1. docker run -itd --name pigallery --restart unless-stopped -p 9880:80 -v /opt/appdata/pigallery/config:/app/data/config -v /opt/appdata/pigallery/db:/app/data/db -v /opt/appdata/pigallery/tmp:/app/data/tmp -v /mnt/pics:/app/data/images bpatrik/pigallery2:latest

进入页面,使用默认用户名及密码(admin/admin)登入,在后台进行用户名密码定制化修改后,即可食用。

缺点什么
是不是觉得缺点什么?得把这些零散的应用整合起来,来个导航吧,也能后续方便地折腾你的nas。
导航应用多如牛毛,homepage、homarr、homer、bender、onenav、sun-pannel、heimdall、flare等等。
这里以笔者最新看到的mtab为例,mtab.yml文件内容如下:
version: '3'
services:
app:
image: itushan/mtab:latest
container_name: mtab
restart: unless-stopped
ports:
- 9200:80
volumes:
- /opt/appdata/mtab/app:/app
db:
image: linuxserver/mariadb:10.6.13
container_name: mtab-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- /opt/appdata/mtab/db:/config/databases
lxc的控制台运行:
1.docker-compose -f mtab.yml up -d
等待拉取并部署完成。

这里解释一下,yml文件中有2个容器,一个是前台app就是mtab本身,包括镜像名、容器名、重启策略、端口映射、路径映射;另一个是后台db,使用的是linuxserver/mariadb:10.6.13这个镜像,后续是容器名、重启策略、容器变量、路径映射,这里端口不用映射,默认为3306端口,直接使用容器端口。docker-compose建立容器前会先建立一个虚拟网络,在这个虚拟网络里面创建各个容器。

设置如上图所示,管理员邮箱及密码个性化填写,其他不建议修改。完成后进入导航页,如下图所示:

将各个nas应用写入导航页,最终效果图如下:

写在最后
至此,一个基于虚拟化平台的全docker打造的nas系统初具雏形。当然,很多机友会说,casaos这种集成平台一样能达到效果,而且更方便,的确没错,包括很多其他集成化应用,比如nastool等,不会差只会更好用。这里只是抛砖引玉提供另一个思考角度,欢迎友好交流。
另外忘记说的一点是,本篇所有的nas应用均只能在内网访问。如需外网访问,其实有很多种方案,大致如下:
1. ddns:包括ipv4的及ipv6的。
2. 虚拟组网:比如zerotier、tailscale、蒲公英等。
3. 内网穿透:比如ddnsto、nps、frp(其中一些需要有vps)等。
这方面的内容,有待机友自己去寻找适合自己的方式,教程也有很多,此处不做讨论。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

值友1777552402
校验提示文案
alexzt512
校验提示文案
wbchn
校验提示文案
值友1777552402
校验提示文案
wbchn
校验提示文案
alexzt512
校验提示文案