feat: 新增 sftpgo (#269)

This commit is contained in:
wanghe 2023-08-02 16:54:40 +08:00 committed by GitHub
parent c47ea9b7bd
commit 468102d53e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 175 additions and 0 deletions

69
apps/sftpgo/README.md Normal file
View File

@ -0,0 +1,69 @@
# SFTPGo
功能齐全、高度可配置化、支持自定义 HTTP/SFTP/S 和 WebDAV 的 SFTP 服务。
一些存储后端支持本地文件系统、加密本地文件系统、S3兼容对象存储Google Cloud 存储Azure Blob 存储SFTP。
## 创建第一个管理员
开始使用 SFTPGo你需要创建一个管理员用户
- 通过 web 管理员界面。默认 URL 是 [http://127.0.0.1:8080/web/admin](http://127.0.0.1:8080/web/admin)
## 用户和目录管理
在启动 SFTPGo 之后,你可以管理用户和目录使用:
- [基于 Web 的管理员界面](https://github.com/drakkan/sftpgo/blob/main/docs/web-admin.md)
## 教程
一些手把手教程可以在源码文件树中的 [howto](https://github.com/drakkan/sftpgo/blob/main/docs/howto "How-to") 目录找到。
## 虚拟目录
用户 home 文件夹外或者基于不同存储提供的目录,可以作为虚拟目录进行暴露,详细信息参考 [虚拟目录](https://github.com/drakkan/sftpgo/blob/main/docs/virtual-folders.md)。
## 存储后端
### S3/GCP/Azure
每个用户可以被映射到 [S3 兼容对象存储](https://github.com/drakkan/sftpgo/blob/main/docs/s3.md) /[Google Cloud 存储](https://github.com/drakkan/sftpgo/blob/main/docs/google-cloud-storage.md)/[Azure Blob 存储](https://github.com/drakkan/sftpgo/blob/main/docs/azure-blob-storage.md) bucket 或者一个 bucket 虚拟目录,通过 SFTP/SCP/FTP/WebDAV 进行暴露。
### SFTP 后端
每个用户可以被映射到另一个 SFTP 服务器账户或者它的子目录。更多的信息可以参考 [sftpfs](https://github.com/drakkan/sftpgo/blob/main/docs/sftpfs.md)。
### 加密后端
数据静态加密通过 [cryptfs 后端](https://github.com/drakkan/sftpgo/blob/main/docs/dare.md) 进行支持。
### 其它存储后端
添加新的存储后端非常简单:
- 实现 [Fs 接口](./vfs/vfs.go#L28 "interface for filesystem backends")
- 更新用户方法 `GetFilesystem` 返回新的后端
- 更新 web 接口和 REST API CLI
- 为新的存储后端添加向 `portable` 模式添加 flags
无论如何,一些后端需要按次付费账户(或者他们提供限制期限内提供免费账户)。为了能够添加这些账户支持或者预览 PRs请提供一个测试账户。测试账户必须在提供足够长时间维护此后端并且支持每一次新的发行版之前做基本测试。
## 强力保护
SFTPGo 支持内置 [防护](https://github.com/drakkan/sftpgo/blob/main/docs/defender.md)。
你可以使用 [连接失败日志](https://github.com/drakkan/sftpgo/blob/main/docs/logs.md) 在诸如 [Fail2ban](http://www.fail2ban.org/) 进行工具内集成。[jails](./fail2ban/jails) 和 [filters](./fail2ban/filters) 示例,在 fail2ban 目录中与 `systemd`/`journald` 是可以同时工作的。
## 账户配置属性
关于账户配置属性的细节信息,请参考 [账户](https://github.com/drakkan/sftpgo/blob/main/docs/account.md)。
## 性能
SFTPGo 在没有特殊配置的情况下,可以实现低端硬件轻松达到 GB 量级连接,对于大多数场景足够使用了。
更多深度性能分析可以参考 [性能](https://github.com/drakkan/sftpgo/blob/main/docs/performance.md)。
## 许可证
GNU AGPL-3.0-only

20
apps/sftpgo/data.yml Executable file
View File

@ -0,0 +1,20 @@
name: SFTPGo
tags:
- 工具
title: 支持自定义 HTTP/SFTP/S 和 WebDAV 的 SFTP 服务
type: 工具
description: 支持自定义 HTTP/SFTP/S 和 WebDAV 的 SFTP 服务
additionalProperties:
key: sftpgo
name: SFTPGo
tags:
- Tool
shortDescZh: 支持自定义 HTTP/SFTP/S 和 WebDAV 的 SFTP 服务
shortDescEn: Support for custom HTTP/S, FTP/S, and WebDAV in SFTP service
type: tool
crossVersionUpdate: false
limit: 1
recommend: 0
website: https://sftpgo.com/
github: https://github.com/drakkan/sftpgo/
document: https://github.com/drakkan/sftpgo/blob/main/docs/howto/getting-started.md

BIN
apps/sftpgo/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

58
apps/sftpgo/v2.5.4/data.yml Executable file
View File

@ -0,0 +1,58 @@
additionalProperties:
formFields:
- default: 8080
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: Web Port
labelZh: Web 端口
required: true
rule: paramPort
type: number
- default: 2022
edit: true
envKey: SFTP_PORT
labelEn: SFTP Port
labelZh: SFTP 端口
required: true
rule: paramPort
type: number
- default: 2121
edit: true
envKey: FTP_PORT
labelEn: FTP Port
labelZh: FTP 端口
required: true
rule: paramPort
type: number
- default: 50000
edit: true
envKey: PASSIVE_PORT_RANGE_START
labelEn: FTP Passive Mod Start Port
labelZh: FTP 被动模式起始端口
required: true
rule: paramCommon
type: text
- default: 50100
edit: true
envKey: PASSIVE_PORT_RANGE_END
labelEn: FTP Passive Mod End Port
labelZh: FTP 被动模式结束端口 (大于起始端口)
required: true
rule: paramCommon
type: text
- default: <your external ip here>
edit: true
envKey: FTP_EXTERNAL_IP
labelEn: FTP External Ip (must change item)
labelZh: FTP 外部地址 (必改项)
required: true
rule: paramCommon
type: text
- default: 10080
edit: true
envKey: WEBDAV_PORT
labelEn: WebDAV Port
labelZh: WebDAV 端口
required: true
rule: paramPort
type: number

View File

@ -0,0 +1,28 @@
version: '3'
services:
sftpgo:
image: drakkan/sftpgo:v2.5.4-alpine
container_name: ${CONTAINER_NAME}
networks:
- 1panel-network
ports:
- ${PANEL_APP_PORT_HTTP}:8080
- ${SFTP_PORT}:${SFTP_PORT}
- ${FTP_PORT}:${FTP_PORT}
- ${PASSIVE_PORT_RANGE_START}-${PASSIVE_PORT_RANGE_END}:${PASSIVE_PORT_RANGE_START}-${PASSIVE_PORT_RANGE_END}
- ${WEBDAV_PORT}:${WEBDAV_PORT}
environment:
SFTPGO_FTPD__BINDINGS__0__PORT: ${FTP_PORT}
SFTPGO_WEBDAVD__BINDINGS__0__PORT: ${WEBDAV_PORT}
SFTPGO_SFTPD__BINDINGS__0__PORT: ${SFTP_PORT}
SFTPGO_FTPD__BINDINGS__0__FORCE_PASSIVE_IP: ${FTP_EXTERNAL_IP}
SFTPGO_FTPD__PASSIVE_PORT_RANGE__START: ${PASSIVE_PORT_RANGE_START}
SFTPGO_FTPD__PASSIVE_PORT_RANGE__END: ${PASSIVE_PORT_RANGE_END}
volumes:
- ./data/data:/srv/sftpgo
- ./data/config:/var/lib/sftpgo
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true