功能齐全、高度可配置化、支持自定义 HTTP/S,FTP/S 和 WebDAV 的 SFTP 服务。 一些存储后端支持:本地文件系统、加密本地文件系统、S3(兼容)对象存储,Google Cloud 存储,Azure Blob 存储,SFTP。
:warning: 我無法自己維護中文翻譯,這個文檔可能已經過時了
如果你觉得 SFTPGo 有用,请考虑支持这个开源项目。
维护和发展 SFTPGo 对我来说是很多工作——很容易相当于一份全职工作。
我想让 SFTPGo 成为一个可持续的长期项目,并且不想引入双重许可选项并将某些功能仅限于专有版本。
如果您使用 SFTPGo,确保您所依赖的项目保持健康和维护良好符合您的最大利益。 这只能通过您的捐款和赞助 发生:heart:
如果您只是拿走任何东西而不返回任何东西,从长远来看,该项目将失败,您将被迫为类似的专有解决方案付费。
更多信息。
您还可以从 SFTPGo 网站 购买支持计划。
SFTPGo 是一个开源项目,您当然可以免费使用它,但也请不要要求免费支持。
我们将检查报告的问题以查看您是否遇到错误,如果是,我们将修复它,但只会为项目赞助商/捐助者提供支持。
如果您报告无效问题或要求逐步支持,您的问题将保持打开状态而没有答案,或者将被关闭为无效而无需进一步解释。 感谢您的理解。
SFTPGo 基于 Linux 开发和创建。在每一次提交之后,代码会自动通过 GitHub Actions 在 Linux、macOS 和 Windows 构建和测试。测试用例定期手动在 FreeBSD 执行,其他的 *BSD 变体同样适用。
为 Linux、macOS 和 Windows 提供的二进制发行版是可用的。请参考 发行版 页面。
一个官方的 Docker 镜像是可用的。文档参考 Docker。
SFTPGo 在 AWS Marketplace 和 Azure Marketplace 同样可用,在此付费可以帮助 SFTPGo 成为一个可持续发展的长期项目。
在 FreeBSD,你可以从 SFTPGo port 下载。 在 DragonFlyBSD,你可以从 DPorts 下载。 您可以从 Actions 页面选择一个 commit 并下载 Linux、macOS 或 Windows 的匹配构建,从而轻松测试新特性。GitHub 存储 90 天。
另外,你可以 从源码构建。
可以完整的配置项方法说明可以参考 配置项。
请确保按需运行之前,初始化数据提供程序。
默认配置启动 STFPGo,运行:
sftpgo serve
如果你将 SFTPGo作为服务,请参阅 这篇文档。
在启动 SFTPGo 服务之前,请确保配置的数据提供程序已经被适当的 初始化/更新。
对于 PostgreSQL, MySQL 和 CockroachDB 提供,你需要创建一个配置数据库。对于 SQLite,配置数据库将会在启动时被自动创建。内存和 bolt 数据提供程序不需要初始化,但是它们需要在升级 SFTPGo 之后更新现有的数据。
SFTPGo 会尝试自动探测数据提供程序是否被 初始化/更新;如果没有,将会在启动时尝试 初始化/更新。
或者,你可以通过 initprovider 命令自行 创建/更新 需要的数据提供程序结构。
比如,你可以执行在配置文件目录下面的命令:
sftpgo initprovider
看一看 CLI 用法学习如何指定一个不同的配置文件:
sftpgo initprovider --help
你可以在启动阶段通过设置 update_mode 配置项为 1,禁止自动数据提供程序 检查/更新。
你可以通过使用 resetprovider 子命令重置你的数据提供程序。看一看 CLI 用法获取更多细节信息:
sftpgo resetprovider --help
:warning: 请注意一些数据提供程序(比如 MySQL 和 CockroachDB)不支持事务内的方案更改,这意味着如果迁移被强制中止或由多个实例同时运行,您可能会得到不一致的方案。
开始使用 SFTPGo,你需要创建一个管理员用户,你可以通过不同的方式进行实现:
create_default_admin 并设置环境变量 SFTPGO_DEFAULT_ADMIN_USERNAME 和 SFTPGO_DEFAULT_ADMIN_PASSWORDSFTPGo 支持从之前的发行版分支升级到当前分支。 一些支持的升级路径如下:
对支持的升级路径,数据和方案将会自动迁移,你可以使用 initprovider 命令作为替代。
所以,比如,你想从 1.2.x 之前的版本升级到 2.0.x,你必须首先安装 1.2.x 版本,升级数据提供程序并最终安装版本 2.0.x。建议安装最新的可用小版本,如果 1.2.2 可用就不要安装 1.2.0 版本。
从以前发行版分支到当前版本,都支持从独立于数据提供程序的 JSON 转储中加载数据。升级 SFTPGo 后,建议从新版本重新生成 JSON 转储。
如果因为一些原因你想降级 SFTPGo,你可能需要降级你的用户数据提供程序方案和数据。你可以使用 revertprovider 命令执行这项任务。
对于升级,SFTPGo 支持从先前的发行版分支降级到当前分支。
所以,如果你有计划从 2.0.x 降级到 1.2.x,之前先卸载 2.0.x 版本,你可以通过从配置目录执行以下命令来准备你的数据提供程序:
sftpgo revertprovider --to-version 4
看一看 CLI 的用法、了解 --to-version 参数支持的参数,了解如何去指定一个不同的配置文件:
sftpgo revertprovider --help
revertprovider 命令不支持内存数据提供程序。
请注意我们只支持当前发行版分支和当前主分支,如果你发现了个 bug,最好是报告这个问题而不是降级到一个老的、不被支持的版本。
在启动 SFTPGo 之后,你可以管理用户和目录使用:
支持内置的数据提供程序比如 bolt 和 SQLite。我们不能使用 CLI 直接将用户和文件夹写到数据提供程序,通常使用 REAST API。
对于用户、目录、管理员和其它资源的细节,都记录在 OpenAPI 方案。如果你想在不手动引入的情况下渲染方案,你可以在 Stoplight 上暴露它。
一些手把手教程可以在源码文件树中的 howto 目录找到。
一个用户可以通过外部程序在登录之前被创建和修改。更多关于此可以参考 动态用户修改。
SFTPGo 允许你配置自定义的命令 和/或 HTTP 钩子去获取关于文件上传、删除和一些其它操作的通知。
更多关于自定义动作的信息你可以参考 自定义动作。
用户 home 文件夹外或者基于不同存储提供的目录,可以作为虚拟目录进行暴露,详细信息参考 虚拟目录。
你可以使用 Post-connect 钩子 及时获取新的连接建立,使用 Post-login hook 获取每次登录之后的通知。你可以使用你自己的钩子去 验证密码。
每个用户可以被映射到 S3 兼容对象存储 /Google Cloud 存储/Azure Blob 存储 bucket 或者一个 bucket 虚拟目录,通过 SFTP/SCP/FTP/WebDAV 进行暴露。
每个用户可以被映射到另一个 SFTP 服务器账户或者它的子目录。更多的信息可以参考 sftpfs。
数据静态加密通过 cryptfs 后端 进行支持。
添加新的存储后端非常简单:
GetFilesystem 返回新的后端portable 模式添加 flags无论如何,一些后端需要按次付费账户(或者他们提供限制期限内提供免费账户)。为了能够添加这些账户支持或者预览 PRs,请提供一个测试账户。测试账户必须在提供足够长时间维护此后端,并且支持每一次新的发行版之前做基本测试。
SFTPGo 支持内置 防护。
你可以使用 连接失败日志 在诸如 Fail2ban 进行工具内集成。jails 和 filters 示例,在 fail2ban 目录中与 systemd/journald 是可以同时工作的。
关于账户配置属性的细节信息,请参考 账户。
SFTPGo 在没有特殊配置的情况下,可以实现低端硬件轻松达到 GB 量级连接,对于大多数场景足够使用了。
更多深度性能分析可以参考 性能。
STFPGo 发行版是特性驱动的,我们没有基于计划的固定时间。粗略估计,你可以每年期待一到两个新的发行版。
SFTPGo 使用了 go.mod 中列出的第三方库。
我们非常感激所有贡献想法 和/或 PRs。
感谢 ysura 给予我测试 AWS S3 账户的稳定权限。
我希望可以使 STFPGo 成为一个可持续发展的长期项目,你的 赞助 对我很有帮助!:heart:
感谢我们的赞助者!
GNU AGPL-3.0-only