使用docker搭建各类nas应用

2024-01-15 22:45:29 41点赞 346收藏 8评论

基础nas应用可分为下载类、文件管理类、影音类、同步类、文本类及照片类等等。

本文介绍在docker环境下使用docker搭建各类nas应用。

不知道如何创建docker环境,可以参考以前的文章。当然docker环境的创建不仅限于笔者的这套方案,最简单的甚至可以直接在pve8.1下安装docker。但是并不推荐这么做,尽量保持pve8.1本身宿主环境是最纯净的。

140包邮i3-6100u板U(itx)上安装PVE8.1

pve8.1创建lxc容器

lxc(bookworm)下创建docker环境

开整之前

国内拉取docker镜像速度可能会比较慢,可以选择并设置docker镜像源。

常用的docker镜像源有:

  1. 网易:http://hub-mirror.c.163.com

  2. 中科大镜像地址:http://mirrors.ustc.edu.cn

  3. 中科大github:地址:https://github.com/ustclug/mirrorrequest

  4. Azurel中国镜像地址:http://mirror.azure.cn

  5. 阿里云镜像仓库:https://cr.console.aliyun.com

  6. coreos镜像仓库:https://quay.io/repository

  7. 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

这里大概解释一下:

  1. docker run就是运行docker容器的命令

  2. linuxserver/qbittorrent:latest就是使用dockerhub最新版本的作者是linuxserver的qbittorrent镜像

  3. -itd就是以后台交互方式来运行

  4. --name就是容器名称

  5. --restart就是重启策略

  6. -e就是容器变量

  7. -p就是容器的端口映射,默认网络为bridge模式

  8. -v就是容器的路径映射,这里该容器的配置文件会持久化在lxc的/opt/appdata/qbittorrent目录下,你下载的文件最终会被存放在lxc的/mnt目录下

使用docker搭建各类nas应用

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

1. docker logs -t qbittorrent

使用docker搭建各类nas应用

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

使用docker搭建各类nas应用使用docker搭建各类nas应用使用docker搭建各类nas应用

文件管理类

文件管理类应用也有很多,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

看到这里,应该都能自己解释含义了吧。

使用docker搭建各类nas应用

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

使用docker搭建各类nas应用

影音类

影音类应用主流的大致有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的显卡传递给容器内部,使之可以调用核显实现硬解。

使用docker搭建各类nas应用

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

使用docker搭建各类nas应用

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

使用docker搭建各类nas应用

同步类

同步类软件也有很多,syncthing、resiliosync、verysync等等,以国产本地化做的最好的verysync为例,一条docker-cli命令如下:

1. docker run -itd --name verysync --restart unless-stopped -p 8886:8886 -v /mnt:/mnt jonnyan404/verysync:latest

使用docker搭建各类nas应用

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

使用docker搭建各类nas应用

文本类

文本类软件也有很多,大型一点的包括各种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

使用docker搭建各类nas应用

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

使用docker搭建各类nas应用

照片类

照片类软件有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

使用docker搭建各类nas应用

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

使用docker搭建各类nas应用

缺点什么

是不是觉得缺点什么?得把这些零散的应用整合起来,来个导航吧,也能后续方便地折腾你的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

等待拉取并部署完成。

使用docker搭建各类nas应用

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

使用docker搭建各类nas应用

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

使用docker搭建各类nas应用

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

使用docker搭建各类nas应用

写在最后

至此,一个基于虚拟化平台的全docker打造的nas系统初具雏形。当然,很多机友会说,casaos这种集成平台一样能达到效果,而且更方便,的确没错,包括很多其他集成化应用,比如nastool等,不会差只会更好用。这里只是抛砖引玉提供另一个思考角度,欢迎友好交流。

另外忘记说的一点是,本篇所有的nas应用均只能在内网访问。如需外网访问,其实有很多种方案,大致如下:

1. ddns:包括ipv4的及ipv6的。

2. 虚拟组网:比如zerotier、tailscale、蒲公英等。

3. 内网穿透:比如ddnsto、nps、frp(其中一些需要有vps)等。

这方面的内容,有待机友自己去寻找适合自己的方式,教程也有很多,此处不做讨论。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
8评论

  • 精彩
  • 最新
  • 写的非常好 需要补充的是,可以通过chatgpt把所有的docker命令转换成compose文件,这样后续升级或者更改目录配置文件更方便

    校验提示文案

    提交
    谢谢,单镜像其实不太建议compose [高兴]

    校验提示文案

    提交
    升级可以搞watchtower试试

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 赞一个

    校验提示文案

    提交
  • 很全面 [鼓掌]

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
346
扫一下,分享更方便,购买更轻松