Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions content/doc/addons/fs-bucket.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,10 @@
| RSA | 4096 | `SHA256:yRHC/tAlBpHLlRZ5rwbZ1z+159Bj3yg0VxHf+hXINLg` |
| RSA | 4096 | `SHA256:yhn79aqxOGQZ+LXdN1/vIY+jwRIbBamlVT1+HdFoA6o` |

> [!NOTE]
> The SFTP access to FS Buckets uses Clever Cloud-managed credentials. You cannot add custom SSH keys or manage individual user accounts for FS Bucket access.

Check notice on line 160 in content/doc/addons/fs-bucket.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/doc/addons/fs-bucket.md#L160

[Google.Contractions] Use 'can't' instead of 'cannot'.
Raw output
{"message": "[Google.Contractions] Use 'can't' instead of 'cannot'.", "location": {"path": "content/doc/addons/fs-bucket.md", "range": {"start": {"line": 160, "column": 76}}}, "severity": "INFO"}
> If you need fine-grained user management and custom SSH key support for SFTP, consider deploying [SFTPGo](/guides/sftpgo/) as a Docker application instead.

Check failure on line 161 in content/doc/addons/fs-bucket.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/doc/addons/fs-bucket.md#L161

[Vale.Spelling] Did you really mean 'SFTPGo'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'SFTPGo'?", "location": {"path": "content/doc/addons/fs-bucket.md", "range": {"start": {"line": 161, "column": 101}}}, "severity": "ERROR"}

### From your favorite FTP client

The **Add-on information** tab of your FS Bucket add-on displays the information
Expand Down
123 changes: 123 additions & 0 deletions content/guides/sftpgo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
---
type: docs
linkTitle: SFTPGo
title: SFTPGo

Check failure on line 4 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L4

[Vale.Spelling] Did you really mean 'SFTPGo'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'SFTPGo'?", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 4, "column": 8}}}, "severity": "ERROR"}

Check notice on line 4 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L4

[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 4, "column": 8}}}, "severity": "INFO"}
description: Deploy SFTPGo on Clever Cloud with Docker to set up a custom SFTP server with user management and Cellar S3 storage backend
keywords:
- sftpgo
- sftp
- ftp
- file transfer
- docker
- cellar
- s3 storage
- file management
- webdav
aliases:
- /sftpgo
---

{{< hextra/hero-subtitle >}}
SFTPGo is a modern, open-source SFTP server with multi-user management, a web interface and S3-compatible storage backends like Cellar.

Check failure on line 21 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L21

[Vale.Spelling] Did you really mean 'SFTPGo'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'SFTPGo'?", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 21, "column": 3}}}, "severity": "ERROR"}

Check warning on line 21 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L21

[Google.WordList] Use 'open source' instead of 'open-source'.
Raw output
{"message": "[Google.WordList] Use 'open source' instead of 'open-source'.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 21, "column": 23}}}, "severity": "WARNING"}

Check notice on line 21 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L21

[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 21, "column": 35}}}, "severity": "INFO"}
{{< /hextra/hero-subtitle >}}

## Overview

Clever Cloud provides built-in SFTP access to [FS Buckets](/doc/addons/fs-buckets/), but if you need advanced user management, fine-grained access control, or want to expose files stored in [Cellar](/doc/addons/cellar/) over SFTP, you can deploy SFTPGo as a Docker application.

Check notice on line 26 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L26

[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 26, "column": 32}}}, "severity": "INFO"}

Check notice on line 26 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L26

[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 26, "column": 226}}}, "severity": "INFO"}

Check failure on line 26 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L26

[Vale.Spelling] Did you really mean 'SFTPGo'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'SFTPGo'?", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 26, "column": 247}}}, "severity": "ERROR"}

> [!WARNING] Only the SFTP protocol works out of the box on Clever Cloud

Check notice on line 28 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L28

[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 28, "column": 23}}}, "severity": "INFO"}
> FTP (non-encrypted) requires a dedicated TCP port range. Contact [Clever Cloud support](https://console.clever-cloud.com/ticket/center) to enable it.

Check notice on line 29 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L29

[Google.Acronyms] Spell out 'FTP', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'FTP', if it's unfamiliar to the audience.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 29, "column": 3}}}, "severity": "INFO"}

## Requirements

You need [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) and a [Clever Cloud account](https://console.clever-cloud.com).

## Create and configure resources on Clever Cloud

1. Create a **Docker** application (XS size or above) from the [Console](https://console.clever-cloud.com)

Check warning on line 37 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L37

[Google.WordList] Use 'preceding' instead of 'above'.
Raw output
{"message": "[Google.WordList] Use 'preceding' instead of 'above'.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 37, "column": 48}}}, "severity": "WARNING"}
2. Create a **PostgreSQL** add-on (version 15, XXS Small Space) and link it to your application

Check notice on line 38 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L38

[Google.Acronyms] Spell out 'XXS', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'XXS', if it's unfamiliar to the audience.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 38, "column": 48}}}, "severity": "INFO"}
3. Create a **Cellar** add-on for S3-compatible object storage and link it to your application
4. Enable **TCP redirection** on your Docker application from the Console

## Prepare the project

Initialize a Git repository with a minimal **Dockerfile**:

```bash
mkdir my-sftpgo && cd my-sftpgo
git init
```

Create a **Dockerfile** at the root of the project

```bash
FROM drakkan/sftpgo:latest
```

## Set environment variables

Add the following environment variables to your Docker application in the console. Replace placeholder values with the credentials provided by Clever Cloud for your PostgreSQL add-on:

```bash
CC_DOCKER_EXPOSED_TCP_PORT="2022"
SFTPGO_DATA_PROVIDER__DRIVER="postgresql"
SFTPGO_DATA_PROVIDER__HOST="<pg_host>"
SFTPGO_DATA_PROVIDER__NAME="<pg_dbname>"
SFTPGO_DATA_PROVIDER__PASSWORD="<pg_password>"
SFTPGO_DATA_PROVIDER__PORT="<pg_port>"
SFTPGO_DATA_PROVIDER__USERNAME="<pg_user>"
```

## Deploy

First, commit and push your code:

Check warning on line 73 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L73

[Google.OxfordComma] Use the Oxford comma in 'First, commit and'.
Raw output
{"message": "[Google.OxfordComma] Use the Oxford comma in 'First, commit and'.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 73, "column": 1}}}, "severity": "WARNING"}

```bash
git add .
git commit -m "Deploy SFTPGo"
clever link <your-app-id>
clever deploy
```

Or using a Git remote:

```bash
git remote add clever <your-clever-git-url>
git push clever master

```

## Initialize SFTPGo

Check failure on line 90 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L90

[Vale.Spelling] Did you really mean 'SFTPGo'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'SFTPGo'?", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 90, "column": 15}}}, "severity": "ERROR"}

1. Open your application URL in a browser
2. Follow the setup wizard to create an **admin account**

Check warning on line 93 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L93

[Google.WordList] Use 'administrator' instead of 'admin'.
Raw output
{"message": "[Google.WordList] Use 'administrator' instead of 'admin'.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 93, "column": 43}}}, "severity": "WARNING"}

## Connect Cellar as a storage backend

In the SFTPGo web admin interface, create a new user with an **S3-compatible** filesystem:

Check failure on line 97 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L97

[Vale.Spelling] Did you really mean 'SFTPGo'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'SFTPGo'?", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 97, "column": 8}}}, "severity": "ERROR"}

Check warning on line 97 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L97

[Google.WordList] Use 'administrator' instead of 'admin'.
Raw output
{"message": "[Google.WordList] Use 'administrator' instead of 'admin'.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 97, "column": 19}}}, "severity": "WARNING"}

| Setting | Value |
|---------|-------|
| Bucket | Your Cellar bucket name |
| Region | FR |
| Access Key | Your Cellar Key ID |
| Access Secret | Your Cellar Key Secret |
| Endpoint | https://cellar-c2.services.clever-cloud.com |


## Connect with an SFTP client

Check notice on line 108 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L108

[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 108, "column": 20}}}, "severity": "INFO"}

Use any SFTP client (such as FileZilla, Cyberduck, or the sftp CLI) with:

Check notice on line 110 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L110

[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'SFTP', if it's unfamiliar to the audience.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 110, "column": 9}}}, "severity": "INFO"}

Check failure on line 110 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L110

[Vale.Spelling] Did you really mean 'sftp'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'sftp'?", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 110, "column": 59}}}, "severity": "ERROR"}

- Host: shown in the TCP redirection tab of your application in the console
- Port: shown in the TCP redirection tab
- Username & Password: your SFTPGo admin credentials

Check failure on line 114 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L114

[Vale.Spelling] Did you really mean 'SFTPGo'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'SFTPGo'?", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 114, "column": 29}}}, "severity": "ERROR"}

Check warning on line 114 in content/guides/sftpgo.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/guides/sftpgo.md#L114

[Google.WordList] Use 'administrator' instead of 'admin'.
Raw output
{"message": "[Google.WordList] Use 'administrator' instead of 'admin'.", "location": {"path": "content/guides/sftpgo.md", "range": {"start": {"line": 114, "column": 36}}}, "severity": "WARNING"}

## πŸŽ“ Learn more

{{< cards >}}
{{< card link="/developers/doc/applications/docker" title="Deploy a Docker application" subtitle="How to configure your Docker app" icon="docker" >}}
{{< card link="/developers/doc/addons/cellar" title="Cellar Object Storage" subtitle="S3-compatible storage on Clever Cloud" icon="database" >}}
{{< card link="/developers/doc/addons/fs-bucket" title="FS Buckets" subtitle="Built-in persistent file storage with SFTP access" icon="database" >}}
{{< card link="https://docs.sftpgo.com/" title="SFTPGo Documentation" subtitle="Official SFTPGo documentation" icon="book-open" >}}
{{< /cards >}}
Loading