编译windows下版本,数据库使用bolt,禁用sql。
git clone https://github.com/drakkan/sftpgo.git
cd sftpgo
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -tags nogcs,nos3,noazblob,nomysql,nosqlite,nopgsql,noportable,novaultkms,noawskms,nogcpkms -ldflags "-s -w"
go build -tags nogcs,nos3,noazblob,nomysql,nobolt,nopgsql,noportable,novaultkms,noawskms,nogcpkms -trimpath -ldflags "-s -w -X github.com/drakkan/sftpgo/v2/version.commit=`git describe --always --dirty` -X github.com/drakkan/sftpgo/v2/version.date=`date -Is`" -o sftpgo
使用vbs脚本启动隐藏cmd窗口并重定向日志到nul:
set ws=createobject("wscript.shell")
ws.CurrentDirectory="d:\Program Files\sftpgo\"
ws.run """d:\Program Files\sftpgo\sftpgo.exe"" serve -v=0 -l """" 2> nul",0
wscript.quit
sftpgo默认认证用户密码使用argon2id,当连接数较多时会占用大量内存,通过web新建用户时密码可直接输入sha512crypt密码密文,后续认证时则使用sha512crypt认证,大幅减小内存占用,密码生成:
echo 123456|openssl passwd -6 -in -
sftpgo默认为根目录和子目录添加.和..,添加后会有一些莫名其妙的问题,不添加客户端也可处理与上级目录的关系:
--- ftpd/handler.go 2022-03-11 15:24:52.147555506 +0800
+++ ftpd/handler.go.bak 2022-03-11 15:17:43.300412122 +0800
@@ -14,7 +14,7 @@
"github.com/drakkan/sftpgo/v2/common"
"github.com/drakkan/sftpgo/v2/dataprovider"
"github.com/drakkan/sftpgo/v2/logger"
- //"github.com/drakkan/sftpgo/v2/util"
+ "github.com/drakkan/sftpgo/v2/util"
"github.com/drakkan/sftpgo/v2/vfs"
)
@@ -288,10 +288,10 @@
if err != nil {
return files, err
}
- //if name != "/" {
- // files = util.PrependFileInfo(files, vfs.NewFileInfo("..", true, 0, time.Now(), false))
- //}
- //files = util.PrependFileInfo(files, vfs.NewFileInfo(".", true, 0, time.Now(), false))
+ if name != "/" {
+ files = util.PrependFileInfo(files, vfs.NewFileInfo("..", true, 0, time.Now(), false))
+ }
+ files = util.PrependFileInfo(files, vfs.NewFileInfo(".", true, 0, time.Now(), false))
return files, nil
}
注意:当sftpgo以普通用户运行时db所在目录sftpgo运行用户要有写入权限,否则就算db文件可写sftpgo也提示db只读。
参考:
https://github.com/drakkan/sftpgo/blob/master/docs/account.md