From b28b2ce4e6d3aa88c659291be325f6a3158bae1d Mon Sep 17 00:00:00 2001 From: Nathan Falvey Date: Wed, 4 Mar 2026 14:16:46 +0000 Subject: [PATCH] feat: :art: Added a new portainer configuration for sftpgo Provided a new concise portainer configuration allowing users to deploy sftpgo if they wish. --- templates/sftpgo/README.md | 28 ++++++++++++---- templates/sftpgo/docker-compose.yml | 50 +++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 6 deletions(-) diff --git a/templates/sftpgo/README.md b/templates/sftpgo/README.md index 1e5444a..129d922 100644 --- a/templates/sftpgo/README.md +++ b/templates/sftpgo/README.md @@ -1,8 +1,24 @@ -# sftpgo (templates) +# SFTPGo (Portainer template) -### Description -Description for sftpgo goes here. +SFTPGo is a fully featured and highly configurable storage routing server with SFTP, HTTP/S, FTP/S and WebDAV support. It allows you to securely share files with local and remote users. -### Configuration -- Path: templates/sftpgo/docker-compose.yml -- Status: Draft +Quick notes: + +- **Protocols**: Supports SFTP, FTP/S, WebDAV, and a built-in Web UI for file management. +- **Storage**: Can serve local storage, S3, Google Cloud Storage, and Azure Blob. +- **Authentication**: Supports multiple backends including SQLite, MySQL, PostgreSQL, and LDAP/OIDC. + +Usage: + +1. Import the compose file into Portainer's Stacks or App Templates. +2. Configure the environment variables for the initial admin user and database settings. +3. Map the data volume to persist user data and configuration. +4. Deploy the stack via Portainer. +5. Access the admin web interface at `http://:8080/web/admin`. + +Helpful links: + +- GitHub Repository: https://github.com/drakkan/sftpgo +- Documentation: https://github.com/drakkan/sftpgo/tree/main/docs + +**Status:** Ready for configuration diff --git a/templates/sftpgo/docker-compose.yml b/templates/sftpgo/docker-compose.yml index e69de29..7fec49d 100644 --- a/templates/sftpgo/docker-compose.yml +++ b/templates/sftpgo/docker-compose.yml @@ -0,0 +1,50 @@ +services: + sftpgo: + image: drakkan/sftpgo:latest + user: "${PUID}:${PGID}" + container_name: sftpgo + ports: + - 8813:8080 # HTTP + - 2026:2022 # SFTP + environment: + # Fixes the "id_rsa: permission denied" error by using the mapped volume + SFTPGO_CONFIG_DIR: /srv/sftpgo + SFTPGO_WEBDAVD__BINDINGS__0__PORT: 5007 + SFTPGO_DATA_PROVIDER__DRIVER: mysql + SFTPGO_DATA_PROVIDER__NAME: sftpgo + SFTPGO_DATA_PROVIDER__HOST: mysql + SFTPGO_DATA_PROVIDER__PORT: 3306 + SFTPGO_DATA_PROVIDER__USERNAME: ${DB_USER} + SFTPGO_DATA_PROVIDER__PASSWORD: ${MYSQL_USER_PWD} + SFTPGO_COMMON__DEFENDER__ENABLED: "true" + SFTPGO_COMMON__DEFENDER__BAN_TIME: 15 + SFTPGO_COMMON__DEFENDER__BAN_TIME_INCREMENT: 100 + SFTPGO_COMMON__DEFENDER__THRESHOLD: 5 + SFTPGO_COMMON__DEFENDER__OBSERVATION_TIME: 15 + volumes: + - ./data:/srv/sftpgo:rw + - ./user_data:/user_data + depends_on: + mysql: + condition: service_healthy + restart: on-failure:8 + + mysql: + image: mariadb:11.8-noble + container_name: sftpgo-db + healthcheck: + # Standard MariaDB 11.x healthcheck using root credentials + test: ["CMD-SHELL", "mariadb-admin ping -h localhost -u root -p$${MYSQL_ROOT_PWD} || exit 1"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + environment: + TZ: ${TZ} + MYSQL_DATABASE: sftpgo + MYSQL_USER: ${DB_USER} + MYSQL_PASSWORD: ${MYSQL_USER_PWD} + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PWD} + volumes: + - ./db:/var/lib/mysql:rw + restart: on-failure:5 \ No newline at end of file