Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob

Overview

SFTPGo

CI Status Code Coverage Go Report Card License: GPL v3 Docker Pulls Mentioned in Awesome Go

Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support, written in Go. Several storage backends are supported: local filesystem, encrypted local filesystem, S3 (compatible) Object Storage, Google Cloud Storage, Azure Blob Storage, SFTP.

Features

  • SFTPGo uses virtual accounts stored inside a "data provider".
  • SQLite, MySQL, PostgreSQL, bbolt (key/value store in pure Go) and in-memory data providers are supported.
  • Each local account is chrooted in its home directory, for cloud-based accounts you can restrict access to a certain base path.
  • Public key and password authentication. Multiple public keys per user are supported.
  • SSH user certificate authentication.
  • Keyboard interactive authentication. You can easily setup a customizable multi-factor authentication.
  • Partial authentication. You can configure multi-step authentication requiring, for example, the user password after successful public key authentication.
  • Per user authentication methods. You can configure the allowed authentication methods for each user.
  • Custom authentication via external programs/HTTP API is supported.
  • Data At Rest Encryption is supported.
  • Dynamic user modification before login via external programs/HTTP API is supported.
  • Quota support: accounts can have individual quota expressed as max total size and/or max number of files.
  • Bandwidth throttling is supported, with distinct settings for upload and download.
  • Per user maximum concurrent sessions.
  • Per user and per directory permission management: list directory contents, upload, overwrite, download, delete, rename, create directories, create symlinks, change owner/group and mode, change access and modification times.
  • Per user files/folders ownership mapping: you can map all the users to the system account that runs SFTPGo (all platforms are supported) or you can run SFTPGo as root user and map each user or group of users to a different system account (*NIX only).
  • Per user IP filters are supported: login can be restricted to specific ranges of IP addresses or to a specific IP address.
  • Per user and per directory shell like patterns filters are supported: files can be allowed or denied based on shell like patterns.
  • Virtual folders are supported: directories outside the user home directory can be exposed as virtual folders.
  • Configurable custom commands and/or HTTP notifications on file upload, download, pre-delete, delete, rename, on SSH commands and on user add, update and delete.
  • Automatically terminating idle connections.
  • Automatic blocklist management is supported using the built-in defender.
  • Atomic uploads are configurable.
  • Support for Git repositories over SSH.
  • SCP and rsync are supported.
  • FTP/S is supported. You can configure the FTP service to require TLS for both control and data connections.
  • WebDAV is supported.
  • Two-Way TLS authentication, aka TLS with client certificate authentication, is supported for REST API/Web Admin, FTPS and WebDAV over HTTPS.
  • Support for serving local filesystem, encrypted local filesystem, S3 Compatible Object Storage, Google Cloud Storage, Azure Blob Storage or other SFTP accounts over SFTP/SCP/FTP/WebDAV.
  • Per user protocols restrictions. You can configure the allowed protocols (SSH/FTP/WebDAV) for each user.
  • Prometheus metrics are exposed.
  • Support for HAProxy PROXY protocol: you can proxy and/or load balance the SFTP/SCP/FTP/WebDAV service without losing the information about the client's address.
  • REST API for users and folders management, backup, restore and real time reports of the active connections with possibility of forcibly closing a connection.
  • Web based administration interface to easily manage users, folders and connections.
  • Easy migration from Linux system user accounts.
  • Portable mode: a convenient way to share a single directory on demand.
  • SFTP subsystem mode: you can use SFTPGo as OpenSSH's SFTP subsystem.
  • Performance analysis using built-in profiler.
  • Configuration format is at your choice: JSON, TOML, YAML, HCL, envfile are supported.
  • Log files are accurate and they are saved in the easily parsable JSON format (more information).

Platforms

SFTPGo is developed and tested on Linux. After each commit, the code is automatically built and tested on Linux, macOS and Windows using a GitHub Action. The test cases are regularly manually executed and passed on FreeBSD. Other *BSD variants should work too.

Requirements

  • Go 1.15 or higher as build only dependency.
  • A suitable SQL server to use as data provider: PostgreSQL 9.4+ or MySQL 5.6+ or SQLite 3.x.
  • The SQL server is optional: you can choose to use an embedded bolt database as key/value store or an in memory data provider.

Installation

Binary releases for Linux, macOS, and Windows are available. Please visit the releases page.

An official Docker image is available. Documentation is here.

Some Linux distro packages are available:

  • For Arch Linux via AUR:
    • sftpgo. This package follows stable releases. It requires git, gcc and go to build.
    • sftpgo-bin. This package follows stable releases downloading the prebuilt linux binary from GitHub. It does not require git, gcc and go to build.
    • sftpgo-git. This package builds and installs the latest git master. It requires git, gcc and go to build.
  • Deb and RPM packages are built after each commit and for each release.
  • For Ubuntu a PPA is available here.

You can easily test new features selecting a commit from the Actions page and downloading the matching build artifacts for Linux, macOS or Windows. GitHub stores artifacts for 90 days.

Alternately, you can build from source.

Configuration

A full explanation of all configuration methods can be found here.

Please make sure to initialize the data provider before running the daemon!

To start SFTPGo with the default settings, simply run:

sftpgo serve

Check out this documentation if you want to run SFTPGo as a service.

Data provider initialization and management

Before starting the SFTPGo server please ensure that the configured data provider is properly initialized/updated.

For PostgreSQL and MySQL providers, you need to create the configured database. For SQLite, the configured database will be automatically created at startup. Memory and bolt data providers do not require an initialization but they could require an update to the existing data after upgrading SFTPGo.

SFTPGo will attempt to automatically detect if the data provider is initialized/updated and if not, will attempt to initialize/ update it on startup as needed.

Alternately, you can create/update the required data provider structures yourself using the initprovider command.

For example, you can simply execute the following command from the configuration directory:

sftpgo initprovider

Take a look at the CLI usage to learn how to specify a different configuration file:

sftpgo initprovider --help

You can disable automatic data provider checks/updates at startup by setting the update_mode configuration key to 1.

If for some reason you want to downgrade SFTPGo, you may need to downgrade your data provider schema and data as well. You can use the revertprovider command for this task.

We support the follwing schema versions:

  • 6, this is the latest version
  • 4, this is the schema for v1.0.0-v1.2.x

So, if you plan to downgrade from git master to 1.2.x, you can prepare your data provider executing the following command from the configuration directory:

sftpgo revertprovider --to-version 4

Take a look at the CLI usage to learn how to specify a different configuration file:

sftpgo revertprovider --help

The revertprovider command is not supported for the memory provider.

Users and folders management

After starting SFTPGo you can manage users and folders using:

To support embedded data providers like bolt and SQLite we can't have a CLI that directly write users and folders to the data provider, we always have to use the REST API.

Tutorials

Some step-to-step tutorials can be found inside the source tree howto directory.

Authentication options

External Authentication

Custom authentication methods can easily be added. SFTPGo supports external authentication modules, and writing a new backend can be as simple as a few lines of shell script. More information can be found here.

Keyboard Interactive Authentication

Keyboard interactive authentication is, in general, a series of questions asked by the server with responses provided by the client. This authentication method is typically used for multi-factor authentication.

More information can be found here.

Dynamic user creation or modification

A user can be created or modified by an external program just before the login. More information about this can be found here.

Custom Actions

SFTPGo allows to configure custom commands and/or HTTP notifications on file upload, download, delete, rename, on SSH commands and on user add, update and delete.

More information about custom actions can be found here.

Virtual folders

Directories outside the user home directory can be exposed as virtual folders, more information here.

Other hooks

You can get notified as soon as a new connection is established using the Post-connect hook and after each login using the Post-login hook. You can use your own hook to check passwords.

Storage backends

S3 Compatible Object Storage backends

Each user can be mapped to the whole bucket or to a bucket virtual folder. This way, the mapped bucket/virtual folder is exposed over SFTP/SCP/FTP/WebDAV. More information about S3 integration can be found here.

Google Cloud Storage backend

Each user can be mapped with a Google Cloud Storage bucket or a bucket virtual folder. This way, the mapped bucket/virtual folder is exposed over SFTP/SCP/FTP/WebDAV. More information about Google Cloud Storage integration can be found here.

Azure Blob Storage backend

Each user can be mapped with an Azure Blob Storage container or a container virtual folder. This way, the mapped container/virtual folder is exposed over SFTP/SCP/FTP/WebDAV. More information about Azure Blob Storage integration can be found here.

SFTP backend

Each user can be mapped to another SFTP server account or a subfolder of it. More information can be found here.

Encrypted backend

Data at-rest encryption is supported via the cryptfs backend.

Other Storage backends

Adding new storage backends is quite easy:

  • implement the Fs interface.
  • update the user method GetFilesystem to return the new backend
  • update the web interface and the REST API CLI
  • add the flags for the new storage backed to the portable mode

Anyway, some backends require a pay per use account (or they offer free account for a limited time period only). To be able to add support for such backends or to review pull requests, please provide a test account. The test account must be available for enough time to be able to maintain the backend and do basic tests before each new release.

Brute force protection

The connection failed logs can be used for integration in tools such as Fail2ban. Example of jails and filters working with systemd/journald are available in fail2ban directory.

You can also use the built-in defender.

Account's configuration properties

Details information about account configuration properties can be found here.

Performance

SFTPGo can easily saturate a Gigabit connection on low end hardware with no special configuration, this is generally enough for most use cases.

More in-depth analysis of performance can be found here.

Release Cadence

SFTPGo releases are feature-driven, we don't have a fixed time based schedule. As a rough estimate, you can expect 1 or 2 new releases per year.

Acknowledgements

SFTPGo makes use of the third party libraries listed inside go.mod.

We are very grateful to all the people who contributed with ideas and/or pull requests.

Thank you ysura for granting me stable access to a test AWS S3 account.

Sponsors

I'd like to make SFTPGo into a sustainable long term project and your sponsorship will really help ❤️

Bronze, Silver and Gold sponsors will be listed here (if they wish).

License

GNU GPLv3

Issues
  • Occasional Malfunction of Connection

    Occasional Malfunction of Connection

    Occasionally (about once every 12-18 hours) the server will stop accepting the correct username and password. It requires a service reboot to fix. This is the closest set of logs to the latest attempt to login while in this error state:

    {"level":"debug","sender":"sftpd","connection_id":"","time":"2019-09-11T03:27.05.832","message":"idle connections check ticker 2019-09-11 03:27:05.832582724 +0000 UTC m=+44100.001673267"}
    {"level":"info","sender":"sftpd","connection_id":"6508f97ceb9b67f8e7fc4928cd9b0cd10615a47024a8279611e9e8f3f6ef24b4","time":"2019-09-11T03:27.05.832","message":"close idle connection, idle time: 6h27m4.548987039s"}
    {"level":"warn","sender":"sftpd","connection_id":"6508f97ceb9b67f8e7fc4928cd9b0cd10615a47024a8279611e9e8f3f6ef24b4","time":"2019-09-11T03:27.05.832","message":"idle connection close failed: close tcp 172.31.18.230:22->148.59.44.16:64168: use of closed network connection"}
    {"level":"info","sender":"sftpd","connection_id":"8fe250f6489ada67fcb4161871743f4358892324ce8841dcbe4903eabfcc2a59","time":"2019-09-11T03:27.05.832","message":"close idle connection, idle time: 6h27m4.535060735s"}
    {"level":"warn","sender":"sftpd","connection_id":"8fe250f6489ada67fcb4161871743f4358892324ce8841dcbe4903eabfcc2a59","time":"2019-09-11T03:27.05.832","message":"idle connection close failed: close tcp 172.31.18.230:22->148.59.44.16:64169: use of closed network connection"}
    {"level":"debug","sender":"sftpd","connection_id":"","time":"2019-09-11T03:27.05.832","message":"check idle connections ended"}
    

    Any ideas? Is there any way to stop it trying to close idle connections? Perhaps that's the problem?

    bug 
    opened by jdmcd 48
  • Relatively lower performance than OpenSSH

    Relatively lower performance than OpenSSH

    Hi, Thanks for this great project !

    I did some test in my environment and the transfer speed is much lower than OpenSSH.

    Server || --- | --- | OS| Debian 10.2 x64 | CPU| Ryzen5 3600 | RAM| 64GB ECC | Disk| 3* Intel P4510 4TB RAID0 | Ethernet| Mellanox ConnectX-3 40GbE|

    Client || --- | --- | OS| Windows 10 1909 x64 | CPU| Threadripper 1920X | RAM| 64GB ECC | Disk| Samsung 960EVO 1TB | Ethernet| Mellanox ConnectX-3 40GbE|

    Under Filezilla I can get 500MB/s with OpenSSH, but only about 200MB/s with sftpgo.

    In both case I'm using AES256-CTR as cipher and SHA-256 as MAC, I've also tried AES128-CTR but nothing changes.

    CPU usage of sftpgo is higher than OpenSSH:

      PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND 
     4527 sftp      20   0 1795576  52044   8628 R 133.5   0.6   2:12.13 sftpgo 
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND 
    27934 xxxxxx    20   0   17112   5360   4188 R  67.8   0.1   0:10.01 sshd                                                  
    27942 xxxxxx    20   0   17112   5344   4176 R  27.4   0.1   0:12.52 sshd 
    

    In both case I've got a maximum TCP window size of 4MB.

    performance 
    opened by HiFiPhile 45
  • Account Permissions and sub-dirs

    Account Permissions and sub-dirs

    I have a strange issue with an account:

    My user defitinion is as follows:

          {
            "id": 1,
            "status": 1,
            "username": "test",
            "password": "***",
            "home_dir": "/sftp",
            "uid": 1100,
            "gid": 1100,
            "permissions": {
              "/": [
                "list"
              ],
              "/sftp/test/upload: [
                "list",
                "upload",
                "download",
                "rename",
                "create_dirs",
                "delete"
              ]
            }
          },
    

    Although I can list in all directories in /sftp, I wanted to be able to upload to /sftp/test/upload with the above definition. Am i doing something incorrect here?

    Using edge

    enhancement 
    opened by ryjogo 44
  • Add Dockerfile and GitHub Actions workflow

    Add Dockerfile and GitHub Actions workflow

    This PR adds a Dockerfile to the project. It's largely based on my previous Go applications and the existing examples in the repo. It's not perfect though, so we might need some fine tuning in the future, particularly around volumes and configuration.

    Open questions:

    • What are backups? Are they supposed to be saved to persistent storage or are they only meaningful during the lifecycle of the application?
    • Where does the credential path point? What's being read from there? (Existing dockerfiles contain no reference)

    Currently the above settings can only be overridden from environment variables, because defaults are defined for them in env vars. (I think that's an acceptable compromise though).

    I'll work with this image anyway, so I'll provide patches along the way.

    The PR also adds a GitHub Actions workflow for building Docker images based on the official example (I removed a few parts):

    https://github.com/docker/build-push-action#complete-workflow

    After merging the PR, @drakkan , you'll need to do some manual steps though:

    1. Login to ghcr.io: docker login ghcr.io. You'll need a GH PAT for that (with package write scope)
    2. Build the image locally: docker build -t ghcr.io/drakkan/sftpgo:edge .
    3. Push the image docker push ghcr.io/drakkan/sftpgo:edge
    4. Go to packages under your account
    5. Make the package public
    6. Configure a secret called CR_PAT with package write scope under secrets
    7. Uncomment the relevant parts in docker.yml (login and push) (happy to review a PR)

    These steps are necessary, because GitHub packages seem to be super private for the first time, so you need to push and publish manually. (Although rereading the above: you should also be fine to do step 6 and 7 first, since CR_PAT will be your token anyway, and then step 5 to publish the package. I had some trouble with packages under organizations, but this is under your personal account, so it should be fine)

    Sorry about the complicated process, let me know if you need any help.

    opened by sagikazarmark 42
  • webdav

    webdav

    hello, I use sftpgo as a bridge to an s3 endpoint that when a file is uploaded moves it elsewhere. Using webdav and uploading a file with windows the explorer say:

    explorer_nfqgfjM0YX

    this happens because the file is no longer avilable and I guess it is done a stat that fails. Using Curl,for obvious reasons, is ok :

    > PUT /fake0/out/test.bin HTTP/1.1
    > Authorization: Basic XYZ
    > User-Agent: curl/7.29.0
    > Host: FQDN:2080
    > Accept: */*
    > Content-Length: 441
    > Expect: 100-continue
    >
    < HTTP/1.1 100 Continue
    * We are completely uploaded and fine
    < HTTP/1.1 201 Created
    < Etag: "1641d9285d8c3d961b9"
    < Date: Tue, 27 Oct 2020 12:28:29 GMT
    < Content-Length: 7
    < Content-Type: text/plain; charset=utf-8
    <
    * Connection #0 to host FQDN left intact
    
    

    could it be a cache problem (assuming you use it) of the driver that uses sftpgo?

    thnx a lot.

    enhancement 
    opened by fdefilippo 25
  • [FTP] Invalid passive IP gives error `index out of range`

    [FTP] Invalid passive IP gives error `index out of range`

    I configured the passive port range, but first forgot, then misplaced the passive ip configuration. Sftpgo then gives a confusing "index out of range" error, probably because it's searching for the passive ip and not finding it?

    opened by jovandeginste 25
  • Simplify configuration file/dir

    Simplify configuration file/dir

    Currently configuring SFTPGo is a bit complicated in the various environments it might run in (thanks to the available Docker image).

    Namely, the fact that the config dir is tied to a bunch of other things (host keys, sqlite, etc) and that you cannot pass a full path to a config file is a bit uncomfortable.

    To give you a concrete example: when running on Kubernetes, I can mount a config map to a certain path (eg. /etc/sftpgo), containing an sftpgo.yaml file. The problem is, by default, SFTPGo will try to write default host keys to the config dir, but that mount is read only. Right now I solve this by manually setting the path to host keys.

    I see two potential improvements:

    • allow passing a full path to SFTPGo as a flag (analogous to viper.SetConfigFile)
    • introduce a separate directory for host keys and other stuff (although there are already enough directories)

    The first approach would allow mounting a config map under something like /etc/sftpgo/config (and since --config-file is already taken it would allow passing --config-path /etc/sftpgo/config/sftpgo.yaml) and would not interfere with the current config dir concept (/etc/sftpgo would still be writable).

    enhancement 
    opened by sagikazarmark 25
  • added distroless image for sftpgo

    added distroless image for sftpgo

    Hi @drakkan, thank you for your project. I've found the discussion about distroless image for sftpgo that can fix issues with vulnerability scanning https://github.com/drakkan/sftpgo/issues/210#issuecomment-719941806

    I've prepared PR with changes, maybe you will be interested to merge it Result of docker vulnerability scan with distroless

    docker scan sftpgo                                                                            2m 12s  11:40:02 am
    
    Testing sftpgo...
    
    Organization:      *******
    Package manager:   deb
    Project name:      docker-image|sftpgo
    Docker image:      sftpgo
    Platform:          linux/amd64
    Licenses:          enabled
    
    ✓ Tested 3 dependencies for known issues, no vulnerable paths found.
    
    opened by avshvetz 24
  • Ability to choose the log processing

    Ability to choose the log processing

    Hi,

    I have dockerized SFTPgo service with a custom systemD script management. It's working but i must choose a location path for the logfile with --log-file-path argument and i must have to mount a volume only for this. too bad...

    Is it possible to have a parameter to change logger process and publish all logs to stdout/stderr ? and avoid to specify a log path and log file ? With systemD and LogIdentifier parameters, it will be easy to processing logs throuth journalctl and syslog. I can submit Dockerfile and custom SystemD script with a pull request if you want.

    Thanks in advance

    enhancement 
    opened by binou-31 21
  • Symlinks are not supported

    Symlinks are not supported

    I am running a server on a local dir:

    sftpgo portable -d ~/Base/shared --permissions 'list,download' --username 'x' --password 'x' --webdav-port 8114 --sftpd-port 8115 --ftpd-port 8116 --log-verbose --log-file-path sftpgo.log
    

    I symlink other directories I want to share into ~/Base/shared, but sftpgo does not handle the symlinks correctly. (I know sftpgo supports virtual dirs, but I use that ~/Base/shared for other services, too, and I do not want to duplicate my config.)

    PS: That command also does not start the webdav server, saying

    {"level":"debug","time":"2021-03-05T10:49:41.514","sender":"service","message":"WebDAV server not started, disabled in config file"}
    
    wontfix 
    opened by NightMachinary 20
  • No first time user setup on web portal

    No first time user setup on web portal

    sftpgo version 2.1.2. Windows 64 bit

    I have previously installed sftpgo with the windows release without issue. Trying this version on a new Windows install and i don't get the first time web install admin user setup. The admin/password is not working. I've tried adding { "create_default_admin": true, "SFTPGO_DEFAULT_ADMIN_USERNAME": "admin", "SFTPGO_DEFAULT_ADMIN_PASSWORD": "password", "common": {

    to the begining of sftpgo.json in C:\ProgramData\SFTPGo but no change. Not sure what i'm doing wrong. I'm not setting a provider and just going with the default db which i understand to be the auto sqlite.

    opened by robtrooper 2
  • Traefik Authentication Header Username

    Traefik Authentication Header Username

    Hi Nicola,

    I would like to use SFTPGO behind Traefik with SSO. After login, TraefikForwardAuth can add a header such as X-SFTPGo-Username: adam_law

    I was wondering whether you would consider programming this form of authentication into SFTPGo.

    Regards

    Adam

    opened by ajl000 2
  • Auto data retention

    Auto data retention

    Would it be possible to implement an auto data-retention policy, where files are automatically deleted after a configurable amount of time (for example, 90 days)? This could be set via an env variable and would help with compliance with things like GDPR. Thanks!

    opened by n-h-mdla 4
  • SFTPGo needs your help

    SFTPGo needs your help

    Hi all,

    I'm really happy with how SFTPGo is evolving and I enjoy working on it, but as the user base grows, maintaining and evolving it becomes more and more challenging and time consuming.

    I don't use SFTPGo in production myself, this is a totally hobby project.

    I love doing this work and I'd like to spend more time doing it, but I need your support to make it possible.

    I've turned down some paid jobs over the past few months to have enough time to work on SFTPGo, honestly it can't go on forever.

    To keep SFTPGo development sustainable in the long run I need your sponsorships.

    Monthly donations are the preferred option. A small amount every month is much better than a one off donation as it allows planning for the future.

    You can support the project through GitHub sponsorships.

    https://github.com/sponsors/drakkan

    Based on your level of sponsorship, I will prioritize your issues and provide you direct support via email/Slack and optionally I can help you to customize your installations to suite your needs.

    You can also support the project by purchasing a pre-installed AMI from the AWS marketplace.

    https://aws.amazon.com/marketplace/seller-profile?id=6e849ab8-70a6-47de-9a43-13c3fa849335

    I'll provide free setup customizations to annual subscribers. If this experiment goes well I will add SFTPGo to other marketplaces as well.

    Thank you for your support!

    opened by drakkan 13
  • Microsoft OneDrive support

    Microsoft OneDrive support

    Hi,

    Are there any plans to add Microsoft OneDrive support as a storage backend?

    opened by kassemz 2
  • S3 Versioning

    S3 Versioning

    How about supporting s3 buckets with versioning enabled? Minio with the new API 7.x supports them. thnx

    $ s3mc ls --versions local/test
    [2020-07-11 10:39:00 CEST]  1.7KiB group (v3, 14d06c4b-a2a0-4ab7-afe1-e1edb8cd8676)
    [2020-07-11 10:38:59 CEST]  1.7KiB group (v2, 6f02c9fd-da14-497c-8355-e0350a275f4e)
    [2020-07-11 10:38:58 CEST]  1.7KiB group (v1, 3abd225c-ad0e-4f32-934b-806823053959)
    [2020-07-23 23:06:38 CEST]    615B send.sh (v2, e9b064e3-a5ad-4756-b94f-b57ba48b9853)
    [2020-07-23 23:06:35 CEST]    615B send.sh (v1, 2d1acf6e-ff5b-43e9-95f3-0dd5f1dcf02e)
    [2020-06-02 16:54:02 CEST]  1.1KiB test.sh (v1, null)
    [2020-07-22 12:13:12 CEST]      0B uno (v6, 4827a02d-4860-4ae9-bd79-b33299330317, delete-marker)
    [2020-07-12 11:40:18 CEST]  1.7KiB uno (v5, 2da7024f-e7f9-4ba0-9810-66142b881016)
    [2020-07-12 11:39:48 CEST]  1.7KiB uno (v4, c63802ef-28a7-4216-bb61-05976bbb52cc)
    [2020-07-12 11:30:59 CEST]  1.7KiB uno (v3, 7bad9ec9-7bce-4dce-bdbf-caddfef44896)
    [2020-07-12 11:30:27 CEST]  1.7KiB uno (v2, 77f02b51-f09d-4273-9d9c-5c842008a123)
    [2020-07-12 11:30:12 CEST]  1.7KiB uno (v1, 28c2e63a-9d6c-432f-98b8-6748deba9d52)
    
    enhancement 
    opened by fdefilippo 3
  • Feature request: configurator

    Feature request: configurator

    Feature

    Add a simple text-based auto-configurator

    Problem

    There's a lot of config options here, and limited number of examples. It'd be amazing if the tool came with a simple dialog-based config, so that by doing sftpgo initprovider, I could get a JSON config set for my required settings.

    Target

    Go from zero to PostgreSQL-based auth with S3 as storage engine in 5min. :-)

    Inspiration

    rclone does a great job at this. It supports large number of complex systems, yet the config of it makes it very easy for a non-expert to configure stuff properly.

    Another configurator is in aws configure

    I'm sure I'm missing something here, but maybe others will chime in.

    enhancement help wanted 
    opened by wkoszek 5
Releases(v2.1.2)
Owner
Nicola Murino
Nicola Murino
A push notification server written in Go (Golang).

A push notification micro server using Gin framework written in Go (Golang)

Bo-Yi Wu 5.7k Sep 21, 2021
ready-to-use RTSP / RTMP server and proxy that allows to read, publish and proxy video and audio streams

rtsp-simple-server is a simple, ready-to-use and zero-dependency RTSP / RTMP server and proxy, a software that allows users to publish, read and proxy live video and audio streams. RTSP is a specification that describes how to perform these operations with the help of a server, that is contacted by both publishers and readers and relays the publisher's streams to the readers.

Alessandro Ros 1.7k Sep 18, 2021
High Performance, Kubernetes Native Object Storage

MinIO Quickstart Guide MinIO is a High Performance Object Storage released under Apache License v2.0. It is API compatible with Amazon S3 cloud storag

High Performance, Kubernetes Native Object Storage 29.4k Sep 26, 2021
The Galène videoconferencing server

The Galène videoconferencing server

Juliusz Chroboczek 411 Sep 12, 2021
Fast, multi-platform web server with automatic HTTPS

a project Every site on HTTPS Caddy is an extensible server platform that uses TLS by default. Releases · Documentation · Get Help Menu Features Insta

Caddy 34.7k Sep 23, 2021
A feature flag solution, with only a YAML file in the backend (S3, GitHub, HTTP, local file ...), no server to install, just add a file in a central system and refer to it. 🎛️

??️ go-feature-flag A feature flag solution, with YAML file in the backend (S3, GitHub, HTTP, local file ...). No server to install, just add a file i

Thomas Poignant 360 Sep 16, 2021
Async management of servers, containers, workstations...basically anything that runs an operating system.

steward What is it ? Command And Control anything asynchronously. Send shell commands to control your servers by passing a message that will have guar

RaaLabs 26 Sep 17, 2021
Distributed reliable key-value store for the most critical data of a distributed system

etcd Note: The master branch may be in an unstable or even broken state during development. Please use releases instead of the master branch in order

etcd-io 37.2k Sep 16, 2021
A local webserver for developers

devd: a local webserver for developers Install Go to the releases page, download the package for your OS, and copy the binary to somewhere on your PAT

Aldo Cortesi 3.2k Sep 23, 2021
An XMPP server written in Go (Golang).

jackal An XMPP server written in Go. About jackal is a free, open-source, high performance XMPP server which aims to be known for its stability, simpl

Miguel Ángel Ortuño 1.1k Sep 16, 2021
A simple HTTP Server to share files over WiFi via Qr Code

go-fileserver A simple HTTP server to share files over WiFi via QRCode Installation You can download compressed version from

Pradeep Khileri 61 Sep 6, 2021
A proxy server than converts JSON request bodies to protocol buffers

Welcome to Protoxy ?? What is Protoxy? Protoxy allows you to test your REST APIs that use Protocol Buffer serialization through Postman and other API

null 17 Aug 17, 2021
High-performance PHP application server, load-balancer and process manager written in Golang

[RR2-BETA] RoadRunner is an open-source (MIT licensed) high-performance PHP application server, load balancer, and process manager. It supports runnin

Spiral Scout 5.9k Sep 23, 2021
Stream database events from PostgreSQL to Kafka

PSQL-Streamer This service receives the database events from PostgreSQL using logical replication protocol and feeds them to sinks based on the config

Igor Novgorodov 32 Sep 8, 2021
Simple webhook delivery system powered by Golang and PostgreSQL

postmand Simple webhook delivery system powered by Golang and PostgreSQL. Features Simple rest api with only three endpoints (webhooks/deliveries/deli

Allisson Azevedo 16 Jul 26, 2021
Demonstration of a browser connecting to Pion WebRTC without a signaling server.

Offline Browser Sync WebRTC without a signaling server! This repo demonstrates how you can connect two WebRTC proccesses without signaling. No configu

Pion 120 Aug 22, 2021
A RTP -> WebRTC broadcast server for Project Lightspeed.

Project Lightspeed WebRTC A RTP -> WebRTC server based on Pion written in Go. This server accepts RTP packets on port 65535 and broadcasts them via We

Garrett GRVY Graves 62 Sep 24, 2021
Heart 💜A high performance Lua web server with a simple, powerful API

Heart ?? A high performance Lua web server with a simple, powerful API. See the full documentation here. Overview Heart combines Go's fasthttp with Lu

Hyperspace Logistics 65 Sep 18, 2021