
介绍
SFTPGo 是一个功能齐全、开放核心的托管文件传输 (MFT) 平台。 前端支持:Web页面、 SFTP、SCP、FTP/S、WebDAV 提供安全文件交换。
后端支持:本地磁盘和云存储(S3、Azure、Google)。

功能概览:
简单来说这个软件可以转换存储的访问协议搭建自己的网盘使用。
有完整的证书验证,权限控制,带宽和存储容量限制功能。
详见官方文档 https://docs.sftpgo.com/2.7/features/
文档:
https://docs.sftpgo.com/2.7/
仓库:https://github.com/drakkan/sftpgo
Docker试用
注:把/my/own 替换成真实存在的路径
mkdir -p /my/own/sftpgodata
mkdir -p /my/own/sftpgohome
chown -R 1000:1000 /my/own/编写 docker-compose.yml
services:
sftpgo:
image: drakkan/sftpgo:v2.7.0-plugins
container_name: some-sftpgo
ports:
- "8080:8080"
- "2022:2022"
environment:
SFTPGO_GRACE_TIME: "32"
volumes:
- /my/own/sftpgodata:/srv/sftpgo
- /my/own/sftpgohome:/var/lib/sftpgo
restart: unless-stopped启动:docker compose up -d
管理连接:
访问 http://x.x.x.x:8080/web/admin,创建管理员账号:

添加用户:

简单测试,后端文件系统可以为其配置Local disk:

客户端访问
访问 http://x.x.x.x:8080/web/client, 输入管理端配置的用户名密码

一个可以用的网盘就有了!
后边介绍下如何配置,具体的配置一定要查看文档,AI给的可能不对

前端配置(以FTP为例)
默认前端只开启SFTP和Web页面访问,具体开启了哪些可以访问管理页面--Server Manager--Status:

转变成环境变量名,要把所有字符大写,以SFTPGO_开头,以双下划线“__”分割层级,遇到列表型的配置,要添加数字索引“__0__、__1__”层级。
例如:
SFTPGO_COMMON__ACTIONS__EXECUTE_ON=upload,download
SFTPGO_SFTPD__BINDINGS__0__PORT开启前端FTP服务
添加如下环境变量
ports:
# FTP
- "21:2121"
# FTP passive ports
- "50000-50100:50000-50100"
environment:
# passive mode
SFTPGO_FTPD__PASSIVE_PORT_RANGE__START: "50000"
SFTPGO_FTPD__PASSIVE_PORT_RANGE__END: "50100"
# FTP listener
SFTPGO_FTPD__BINDINGS__0__PORT: "2121"
# 外网IP(非常重要,被动模式要传给客户端容器外的IP才行)
SFTPGO_FTPD__BINDINGS__0__FORCE_PASSIVE_IP : "1.2.3.4"
# 模式 FTP - 0, FTPS - 1, FTP+FTPS - 2
SFTPGO_FTPD__BINDINGS__0__TLS_MODE: "0"若开启FTPS或其他功能,可以自己参考配置项配置。
后端存储配置(以S3为例)
AWS S3(及兼容S3的)存储:
添加用户时File system选择S3(当然也可以添加虚拟文件夹,绑定用户,本文略)
然后配置 Bucket、Region、Access Key、Access Secret即可,其他可保持默认或按需配置。

AWS S3 要先去IAM服务创建账号,获取账号的Key 和 Secret,授予用户S3的权限,最简单的是授予 AmazonS3FullAccess ,担心不安全的可以只授予如下权限(hany是桶名),遇到问题再临时添加 AmazonS3FullAccess 判断是否权限问题:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucketMultipartUploads",
"s3:AbortMultipartUpload",
"s3:ListBucketVersions",
"s3:ListBucket",
"s3:DeleteObject",
"s3:GetBucketLocation",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::hany/*",
"arn:aws:s3:::hany"
]
}
]
}配置兼容S3的存储,比如阿里OSS,需要注意的是要特别配置 Endpoint 为阿里域名链接,这个域名是不带桶名的那个,特别要注意带上 https://,例如:
https://oss-cn-qingdao.aliyuncs.com
区域就是这个域名的中间部分: cn-qingdao
要获取这个域名,点击存储桶,点概览即可:

其他各种功能,大家亲自去体验吧!