什么是 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 disk
Root directory
:填入我们挂载的数据目录/srv/sftpgo
保存之后,就有了第一个虚拟存储
再新建一个用户用于测试
Username
:用户名Password
:密码
下拉到 Virtual folders
部分,授权用户可使用的目录
mount path
:用户看到的名称,需要自己输入,例如/nas
Select 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/