0x00 问题描述
课题组内有一台内网部署的ubuntu 23服务器,想要在上面运行一个NAS服务,供内网环境中的文件存储与分享。希望搭建一个功能简单、容易上手的NAS服务,并且希望通过docker部署,减少对于服务器上现有应用的影响。另外,内网服务器意味着它无法连接互联网下载应用,只能在本地下载好了之后上传到服务器安装。
0x01 NAS选择
由于需要部署NAS服务器的内网服务器无法连接互联网,因此一些NAS高级功能(比如文件同步、个性化插件等)或者私人云盘类型的应用此处并不适用。我们需要一个功能简单但是稳定可靠的NAS开源实现,至少应包含多用户登录、文件上传/下载、内网文件分享等功能。
寻找一翻,发现filebrowser能很好地满足我的需求,且可以通过docker镜像便捷部署。
github地址:https://github.com/filebrowser/filebrowser 项目仓库22.9k star
功能展示:
0x02 部署步骤1:手动下载安装docker
课题组的服务器系统是ubuntu 23,通过apt进行包管理,因此我们可以通过下载docker的.deb格式的安装文件快速安装(相比于源代码编译模式,更加简单快速)。
参考docker官方用户文档,按照‘Install from a packet’章节的提示执行如下操作:
(1)访问https://download.docker.com/linux/ubuntu/dists/,选择操作系统版本对应的子目录(这里用的是ubuntu版本的别名,如ubuntu 23对应的是mantic)
(2)进入子目录/mantic/pool/stable,选择处理器架构适用的子目录(根据自己机器实际情况选择)
(3)下载以下内容,资源建议下载最新的版本
containerd.io_<version>_<arch>.deb
docker-ce_<version>_<arch>.deb
docker-ce-cli_<version>_<arch>.deb
docker-buildx-plugin_<version>_<arch>.deb(不必须安装)
docker-compose-plugin_<version>_<arch>.deb(不必须安装)
(4)远程连接内网服务器,并将下载好的文件上传到服务器
(5)通过库文件,离线安装docker(这里是ubuntu系统的安装命令,centos请使用yum install安装)
- sudo dpkg -i docker-ce-cli_<version>_amd64.deb
- sudo dpkg -i containerd.io_<version>_amd64.deb
- sudo dpkg -i docker-ce_<version>_amd64.deb
(6)验证docker是否安装成功
sudo systemctl start docker sudo systemctl enable docker sudo docker version
有下图类似的结果说明安装成功了
0x03 部署步骤2:手动下载filebrowser的docker镜像
正常能联网的服务器在安装完docker后,可以直接按照你需要的服务名称拉取镜像,但是我们的服务器无法联网,因此需要在能联网的机器上手动下载docker镜像。
找一台能联网的机器,并且安装docker(联网机器上安装docker很简单,直接使用操作系统带的软件管理器下载安装即可),然后使用如下命令下载镜像文件。
docker pull filebrowser/filebrowser docker save filebrowser/filebrowser -o filebrowser.tar
0x04 部署步骤3:启动filebrowser的docker镜像
将上一步下载好的filebrowser.tar文件上传到我们的离线服务器,之后即可使用下面的命令启动docker镜像。需要注意:(1)文件路径请自己按照实际情况指定;(2)“-p 8080:80”这里指的是docker镜像的80端口映射到服务器的8080端口,换句话说就是外部访问服务器的8080端口时流量将会转发给filebrowser镜像的80端口。
docker run -d \ -v /path/to/your/data:/srv \ -v /path/to/database:/database \ -v /path/to/config:/config \ -p 8080:80 \ --name filebrowser \ filebrowser/filebrowser
0x05 部署步骤4:使用filebrowser
在浏览器的url栏填写:服务器ip地址:8080,即可进入登录界面。首次登录默认的用户名和密码都是admin。登录进入就可以使用了。