
什么是 SFTPGo?
SFTPGo是一种事件驱动的文件传输解决方案。它支持多种协议(SFTP、SCP、FTP/S、WebDAV、HTTP/S)和多种存储后端,包括本地文件系统、加密本地文件系统、S3(兼容)对象存储、Google Cloud Storage、Azure Blob Storage、其他SFTP服务器。
使用 SFTPGo,您可以利用本地和云存储后端,使用您已经熟悉的相同工具和流程在内部或与业务伙伴交换和存储文件。
通过👇这张系统架构图,可能更容易理解 SFTPGo 的功能

安装
在群晖上以 Docker 方式安装。
在注册表中搜索 sftpgo ,选择第一个 drakkan/sftpgo,版本选择 latest。
本文写作时,
latest版本对应为v2.6.2;

最近不知道
Docker hub又发了什么癫,是调整了算法还是什么原因,总之搜出来都是乱七八糟的,不管搜什么,都显示10000个项目

卷
在 docker 文件夹中,创建一个新文件夹 sftpgo,并在其中建两个子文件夹 data 和 key
| 文件夹 | 装载路径 | 说明 |
|---|---|---|
docker/sftpgo/data | /srv/sftpgo | 存放数据 |
docker/sftpgo/key | /var/lib/sftpgo | 系统主目录 |

端口
本地端口不冲突就行,不确定的话可以用命令查一下
# 查看端口占用
netstat -tunlp | grep 端口号
| 本地端口 | 容器端口 | 说明 |
|---|---|---|
2021 | 8080 | Web UI 的端口 |
2022 | 2022 | SFTP 协议使用的端口 |
2023 | 2023 | WebDAV 协议使用的端口 |
默认没有对外暴露端口

需要点 + 号逐个添加

环境
| 可变 | 值 |
|---|---|
SFTPGO_WEBDAVD__BINDINGS__0__PORT | WebDAV 协议的容器端口,设为 2023 |
系统默认支持只支持
SFTP协议,通过环境变量设置,增加了WebDAV协议

命令行安装
如果你熟悉命令行,可能用 docker cli 更快捷
# 新建文件夹 sftpgo 和 子目录
mkdir -p /volume1/docker/sftpgo/{data,key}
# 进入 sftpgo 目录
cd /volume1/docker/sftpgo
# 修改目录所有者
chown -R 1000:1000 {data,key}
# 运行容器
docker run -d \
--restart unless-stopped \
--name sftpgo \
-p 2021:8080 \
-p 2022:2022 \
-p 2023:2023 \
-v $(pwd)/data:/srv/sftpgo \
-v $(pwd)/key:/var/lib/sftpgo \
-e SFTPGO_WEBDAVD__BINDINGS__0__PORT=2023 \
drakkan/sftpgo
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
version: '3'
services:
sftpgo:
image: drakkan/sftpgo
container_name: sftpgo
restart: unless-stopped
ports:
- 2021:8080
- 2022:2022
- 2023:2023
volumes:
- ./data:/srv/sftpgo
- ./key:/var/lib/sftpgo
environment:
- SFTPGO_WEBDAVD__BINDINGS__0__PORT=2023
然后执行下面的命令
# 新建文件夹 sftpgo 和 子目录
mkdir -p /volume1/docker/sftpgo/{data,key}
# 进入 sftpgo 目录
cd /volume1/docker/sftpgo
# 修改目录所有者
chown -R 1000:1000 {data,key}
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
运行
后端(WebAdmin)
在浏览器中输入 http://群晖IP:2021 就能看到注册界面

登录成功后的后台管理的主界面
是否要启用双因素认证,看个人需要了,如果只是局域网,可以不启用

新建 virtual folders

点 Add 添加,在 Storage 中可以选择类型

Storage:选择Local diskRoot directory:填入我们挂载的数据目录/srv/sftpgo

保存之后,就有了第一个虚拟存储

再新建一个用户用于测试

Username:用户名Password:密码

下拉到 Virtual folders 部分,授权用户可使用的目录
mount path:用户看到的名称,需要自己输入,例如/nasSelect a path:下拉选择,这是我们前面创建的Virtual folders
完成后点 Add

点 Save 保存之后

点 Sign Out 退出管理端

前端(WebClient)
回到登录界面后,Go to WebClient

输入账号密码

登录成功后,会看到我们授权的目录

可以上传文件

服务器上保存的目录

SFTP 访问
以 RaiDrive 为例
- 协议:选择
SFTP协议 - 地址:填入
SFTPGo服务地址 - 端口:填入我们前面设置的本机端口地址
2022 - 账号:填入
SFTPGo的用户 - 密码:填入
SFTPGo的用户对应的密码

如果是使用 WinSCP,也可以参考上面👆的设置

WebDAV 访问
按安装时的环境变量设置,WebDAV 的访问地址是 http://群晖IP:2023
以 RaiDrive 为例
- 协议:选择
WebDAV协议 - 地址:填入
SFTPGo服务地址 - 端口:填入我们前面设置的本机端口地址
2023 - 账号:填入
SFTPGo的用户 - 密码:填入
SFTPGo的用户对应的密码

如果是使用 WinSCP,也可以参考上面👆的设置

在 RaiDrive 中添加成功后

可以在资源管理器中直接访问

这和我们在 WebClient 看到的结构是一致的

用 WinSCP 也是一样的

参考文档
drakkan/sftpgo: Fully featured and highly configurable SFTP server with optional HTTP/S, FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob
地址:https://github.com/drakkan/sftpgo
SFTPGo - Bring your file transfers anywhere
地址:https://sftpgo.com/
SFTPGo documentation
地址:https://sftpgo.github.io/latest/



















