Source: https://seerepo.com/r/drakkan/sftpgo/built
Markdown source: https://seerepo.com/r/drakkan/sftpgo/built.md
Description: sftpgo is a Go repo built with chi and github.com/go-chi/render. It stores its data in github.com/studio-b12/gowebdav, MySQL, Postgres, and SQLite.

# What is sftpgo built with?

sftpgo is a Go repo built with chi and github.com/go-chi/render. It stores its data in github.com/studio-b12/gowebdav, MySQL, Postgres, and SQLite, signs people in with golang.org/x/oauth2, github.com/alexedwards/argon2id, github.com/wagslane/go-password-validator, github.com/go-jose/go-jose/v4, github.com/pquerna/otp, and 3 more, connects to Google, makes its content with github.com/wneessen/go-mail, is tested with github.com/stretchr/testify, deploys with github.com/rs/zerolog, HashiCorp, github.com/aws/aws-sdk-go-v2, github.com/aws/aws-sdk-go-v2/config, github.com/go-acme/lego/v5, and 5 more, and uses go-sqlite3, pgx, s3, etcd, github.com/Azure/azure-sdk-for-go/sdk/storage/azblob, and 3 more. It has 211,396 written lines, with 38 test files.

Read on November 10, 2026, at commit a2bc33e.

Repository: https://github.com/drakkan/sftpgo

## Backend

### The base

- **[chi](https://seerepo.com/uses/chi)**: 13 files

### Data

- **[go-sqlite3](https://seerepo.com/uses/go-sqlite3)**
- **[pgx](https://seerepo.com/uses/pgx)**
- **[s3](https://seerepo.com/uses/s3)**
- **github.com/studio-b12/gowebdav**: 2 files
- **[MySQL](https://seerepo.com/uses/mysql)**: 2 files · [internal/dataprovider/mysql.go, line 32](https://github.com/drakkan/sftpgo/blob/a2bc33e5a3e7c65493595ea5c379b2f5f371feb6/internal/dataprovider/mysql.go#L32)
- **[Postgres](https://seerepo.com/uses/postgres)**: 2 files · [internal/dataprovider/pgsql.go, line 31](https://github.com/drakkan/sftpgo/blob/a2bc33e5a3e7c65493595ea5c379b2f5f371feb6/internal/dataprovider/pgsql.go#L31)
- **[SQLite](https://seerepo.com/uses/sqlite)**: 2 files · [internal/dataprovider/sqlite.go, line 30](https://github.com/drakkan/sftpgo/blob/a2bc33e5a3e7c65493595ea5c379b2f5f371feb6/internal/dataprovider/sqlite.go#L30)
- **[etcd](https://seerepo.com/uses/etcd)**: 1 file
- **[github.com/Azure/azure-sdk-for-go/sdk/storage/azblob](https://seerepo.com/uses/githubcom-azure-azure-sdk-for-go-sdk-storage-azblob)**: 1 file
- **github.com/cockroachdb/cockroach-go/v2**: 1 file
- **github.com/jlaffaye/ftp**: 1 file
- **gocloud.dev**: 1 file

### Sign-in

- **[golang.org/x/oauth2](https://seerepo.com/uses/golangorg-x-oauth2)**: 5 files
- **github.com/alexedwards/argon2id**: 4 files
- **github.com/wagslane/go-password-validator**: 4 files
- **[github.com/go-jose/go-jose/v4](https://seerepo.com/uses/githubcom-go-jose-go-jose-v4)**: 3 files
- **[github.com/pquerna/otp](https://seerepo.com/uses/githubcom-pquerna-otp)**: 2 files
- **[github.com/aws/aws-sdk-go-v2/credentials](https://seerepo.com/uses/githubcom-aws-aws-sdk-go-v2-credentials)**: 1 file
- **[github.com/Azure/azure-sdk-for-go/sdk/azidentity](https://seerepo.com/uses/githubcom-azure-azure-sdk-for-go-sdk-azidentity)**: 1 file
- **[github.com/coreos/go-oidc/v3](https://seerepo.com/uses/githubcom-coreos-go-oidc-v3)**: 1 file

### Services

- **[Google](https://seerepo.com/uses/google)**: 1 file · [internal/vfs/gcsfs.go, line 36](https://github.com/drakkan/sftpgo/blob/a2bc33e5a3e7c65493595ea5c379b2f5f371feb6/internal/vfs/gcsfs.go#L36)

## Support

### The base

- **github.com/go-chi/render**: 22 files

### Content

- **github.com/wneessen/go-mail**: 3 files

### Testing

- **github.com/stretchr/testify**: 33 files

### Deploy

- **[github.com/rs/zerolog](https://seerepo.com/uses/githubcom-rs-zerolog)**: 14 files
- **[HashiCorp](https://seerepo.com/uses/hashicorp)**: 7 files
- **[github.com/aws/aws-sdk-go-v2](https://seerepo.com/uses/githubcom-aws-aws-sdk-go-v2)**: 2 files
- **[github.com/aws/aws-sdk-go-v2/config](https://seerepo.com/uses/githubcom-aws-aws-sdk-go-v2-config)**: 2 files
- **github.com/go-acme/lego/v5**: 2 files
- **[github.com/aws/aws-sdk-go-v2/feature/ec2/imds](https://seerepo.com/uses/githubcom-aws-aws-sdk-go-v2-feature-ec2-imds)**: 1 file
- **[github.com/aws/aws-sdk-go-v2/service/sts](https://seerepo.com/uses/githubcom-aws-aws-sdk-go-v2-service-sts)**: 1 file
- **[github.com/Azure/azure-sdk-for-go/sdk/azcore](https://seerepo.com/uses/githubcom-azure-azure-sdk-for-go-sdk-azcore)**: 1 file
- **[gopkg.in/natefinch/lumberjack.v2](https://seerepo.com/uses/gopkgin-natefinch-lumberjackv2)**: 1 file
- **[Prometheus](https://seerepo.com/uses/prometheus)**: 1 file

### Tools

- **github.com/spf13/cobra**: 23 files

### Other

- **github.com/rs/xid**: 18 files
- **github.com/pkg/sftp**: 13 files
- **golang.org/x/crypto**: 11 files
- **github.com/spf13/viper**: 9 files
- **golang.org/x/sys**: 7 files
- **github.com/hashicorp/go-plugin**: 6 files
- **github.com/robfig/cron/v3**: 6 files
- **github.com/fclairamb/ftpserverlib**: 4 files
- **github.com/GehirnInc/crypt**: 2 files
- **github.com/hashicorp/go-retryablehttp**: 2 files
- **github.com/klauspost/compress**: 2 files
- **github.com/rs/cors**: 2 files
- **github.com/shirou/gopsutil/v4**: 2 files
- **github.com/subosito/gotenv**: 2 files
- **github.com/unrolled/secure**: 2 files
- **github.com/aws/aws-sdk-go-v2/service/marketplacemetering**: 1 file
- **github.com/aws/aws-sdk-go-v2/service/secretsmanager**: 1 file
- **github.com/bmatcuk/doublestar/v4**: 1 file
- **github.com/google/shlex**: 1 file
- **github.com/minio/sio**: 1 file
- **github.com/pires/go-proxyproto**: 1 file
- **github.com/spf13/afero**: 1 file
- **github.com/yl2chen/cidranger**: 1 file
- **golang.org/x/net**: 1 file
- **golang.org/x/term**: 1 file
- **golang.org/x/time**: 1 file

## Other repos with a similar stack

- [hashicorp/vault](https://seerepo.com/r/hashicorp/vault/built): pgx, s3, MySQL, Postgres, etcd, github.com/cockroachdb/cockroach-go/v2, Google, golang.org/x/oauth2, github.com/go-jose/go-jose/v4, github.com/pquerna/otp, github.com/aws/aws-sdk-go-v2/credentials, github.com/Azure/azure-sdk-for-go/sdk/azidentity, HashiCorp, github.com/aws/aws-sdk-go-v2, github.com/aws/aws-sdk-go-v2/config, github.com/aws/aws-sdk-go-v2/feature/ec2/imds, github.com/aws/aws-sdk-go-v2/service/sts, github.com/Azure/azure-sdk-for-go/sdk/azcore, Prometheus · [Compare](https://seerepo.com/compare/drakkan/sftpgo/vs/hashicorp/vault)
- [rclone/rclone](https://seerepo.com/r/rclone/rclone/built): chi, s3, etcd, github.com/Azure/azure-sdk-for-go/sdk/storage/azblob, github.com/jlaffaye/ftp, golang.org/x/oauth2, github.com/pquerna/otp, github.com/aws/aws-sdk-go-v2/credentials, github.com/Azure/azure-sdk-for-go/sdk/azidentity, HashiCorp, github.com/aws/aws-sdk-go-v2, github.com/aws/aws-sdk-go-v2/config, github.com/aws/aws-sdk-go-v2/service/sts, github.com/Azure/azure-sdk-for-go/sdk/azcore, gopkg.in/natefinch/lumberjack.v2, Prometheus · [Compare](https://seerepo.com/compare/drakkan/sftpgo/vs/rclone/rclone)
- [infiniflow/ragflow](https://seerepo.com/r/infiniflow/ragflow/built): pgx, s3, MySQL, Postgres, github.com/Azure/azure-sdk-for-go/sdk/storage/azblob, Google, golang.org/x/oauth2, github.com/aws/aws-sdk-go-v2/credentials, github.com/aws/aws-sdk-go-v2, github.com/aws/aws-sdk-go-v2/config, github.com/aws/aws-sdk-go-v2/service/sts, github.com/Azure/azure-sdk-for-go/sdk/azcore, gopkg.in/natefinch/lumberjack.v2 · [Compare](https://seerepo.com/compare/drakkan/sftpgo/vs/infiniflow/ragflow)
- [pingcap/tidb](https://seerepo.com/r/pingcap/tidb/built): s3, MySQL, etcd, github.com/Azure/azure-sdk-for-go/sdk/storage/azblob, Google, golang.org/x/oauth2, github.com/aws/aws-sdk-go-v2/credentials, github.com/Azure/azure-sdk-for-go/sdk/azidentity, github.com/aws/aws-sdk-go-v2, github.com/aws/aws-sdk-go-v2/config, github.com/aws/aws-sdk-go-v2/service/sts, github.com/Azure/azure-sdk-for-go/sdk/azcore, Prometheus · [Compare](https://seerepo.com/compare/drakkan/sftpgo/vs/pingcap/tidb)
- [mattermost/mattermost](https://seerepo.com/r/mattermost/mattermost/built): Postgres, github.com/Azure/azure-sdk-for-go/sdk/storage/azblob, golang.org/x/oauth2, github.com/aws/aws-sdk-go-v2/credentials, github.com/Azure/azure-sdk-for-go/sdk/azidentity, github.com/wneessen/go-mail, github.com/aws/aws-sdk-go-v2, github.com/aws/aws-sdk-go-v2/config, github.com/aws/aws-sdk-go-v2/feature/ec2/imds, github.com/Azure/azure-sdk-for-go/sdk/azcore, Prometheus · [Compare](https://seerepo.com/compare/drakkan/sftpgo/vs/mattermost/mattermost)
- [netdata/netdata](https://seerepo.com/r/netdata/netdata/built): pgx, s3, MySQL, github.com/aws/aws-sdk-go-v2/credentials, github.com/Azure/azure-sdk-for-go/sdk/azidentity, github.com/aws/aws-sdk-go-v2, github.com/aws/aws-sdk-go-v2/config, github.com/aws/aws-sdk-go-v2/service/sts, github.com/Azure/azure-sdk-for-go/sdk/azcore, Prometheus · [Compare](https://seerepo.com/compare/drakkan/sftpgo/vs/netdata/netdata)

## Frequently asked questions

### What language is sftpgo written in?

sftpgo is written in Go, with 211,396 written lines.

### What framework does sftpgo use?

sftpgo is built with chi and github.com/go-chi/render.

### What database does sftpgo use?

sftpgo stores its data in github.com/studio-b12/gowebdav, MySQL, Postgres, and SQLite.

### What does sftpgo sign people in with?

sftpgo signs people in with golang.org/x/oauth2, github.com/alexedwards/argon2id, github.com/wagslane/go-password-validator, github.com/go-jose/go-jose/v4, github.com/pquerna/otp, github.com/aws/aws-sdk-go-v2/credentials, github.com/Azure/azure-sdk-for-go/sdk/azidentity, and github.com/coreos/go-oidc/v3.

### What services does sftpgo use?

sftpgo connects to Google and uses go-sqlite3, pgx, s3, etcd, github.com/Azure/azure-sdk-for-go/sdk/storage/azblob, github.com/cockroachdb/cockroach-go/v2, github.com/jlaffaye/ftp, and gocloud.dev.

The proof: [internal/vfs/gcsfs.go, line 36](https://github.com/drakkan/sftpgo/blob/a2bc33e5a3e7c65493595ea5c379b2f5f371feb6/internal/vfs/gcsfs.go#L36)

### Does sftpgo have tests?

Yes. sftpgo has 38 test files and is tested with github.com/stretchr/testify.

### Which repos have a stack like sftpgo's?

The ones that share most of its stack: hashicorp/vault, rclone/rclone, and infiniflow/ragflow.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
