FTP测试服务
可以快速通过容器搭建一个FTP服务,可以将远程的FTP内容,同步到本地,并且用web服务队外提供,支持权限控制。
USERS格式:用户名|密码|目录|user_id
ADDRESS: 需要可以解析到容器宿主机,推荐容器宿主机的ip地址
docker run -d -p 21:21 -v /home/nh/ftp:/home/one/ftp -p 21000-21010:21000-21010 -e USERS="one|1234|/home/one/ftp|1000" -e ADDRESS=192.168.5.42 --name ftp delfer/alpine-ftp-server
此时建立了一个FTP server
host: 192.168.5.42
port: 21
username: one
password: 1234
可以用FTP client工具,例如FileZilla - The free FTP solution进行测试
FTP镜像工具
用FTP抓取工具crazy-max/ftpgrab: Grab your files periodically from a remote FTP or SFTP server easily,可以完整的备份一个FTP的远程目录到指定的目录.
# ./ftpgrab.yml
db:
path: ftpgrab.db
server:
ftp:
host: 192.168.5.42
port: 21
username: one
password: 1234
sources:
- /home/one/ftp
timeout: 5s
download:
output: ./download
retry: 3
hideSkipped: false
createBaseDir: false
ftpgrab --config ./ftpgrab.yml
经过如上命令,即可将远程(192.168.5.42)的ftp文件目录下载到本地目录,后续远端有更新,命令可以重复执行。
# 每分钟执行一次
ftpgrab --config conf.yaml --schedule="* * * * *"
# 每12小时执行一次
./ftpgrab --config conf.yaml --schedule="0 */12 * * *"
# 每天执行一次更新
./ftpgrab --config conf.yaml --schedule="0 0 * * *"
HTTP文件服务
FTP服务已经不被主流浏览器支持,需要用客户端软件访问,带来一定的不便,可以将FTP的内容转换成HTTP服务,对外提供
使用filebrowser/filebrowser: 📂 Web File Browser来部署一个文件浏览服务
基本使用
# 首先在/home/nh/browser/目录创建一个空的filebrowser.db文件
touch filebrowser.db
# 启动容器
docker run -d -v /home/nh/ftp:/srv -v /home/nh/browser/filebrowser.db:/database.db -u $(id -u):$(id -g) -p 8080:80 --name filebrowser filebrowser/filebrowser
接着可以在浏览器访问http://host:8080
初始用户名/密码admin/admin
,登录后修改密码,并且添加其它只读用户即可。
开启https
首先自己签发证书
# 签署cert和key
openssl genpkey -algorithm RSA -out mykey.pem -pkeyopt rsa_keygen_bits:2048
openssl req -new -x509 -key mykey.pem -out mycert.pem -days 365
编辑如下setting.json
{
"address": "0.0.0.0",
"port": 80,
"locale": "zh-cn",
"baseURL": "/",
"log": "stdout",
"database": "/filebrowser.db",
"root": "/srv",
"cert": "/mycert.pem",
"key": "/mykey.pem"
}
开启容器服务
docker run -d \
-v /home/nh/ftp:/srv \
-v /home/nh/browser/mycert.pem:/mycert.pem \
-v /home/nh/browser/mykey.pem:/mykey.pem \
-v /home/nh/browser/filebrowser.db:/filebrowser.db \
-v /home/nh/browser/setting.json:/.filebrowser.json \
-p 8080:80 \
--name filebrowser \
--restart=always \
filebrowser/filebrowser
即可通过https访问服务