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访问服务

参考

搭建ftp服务器 # | busyrat blog