Documentation Map
A task-oriented index: find the page that answers your current question, without scrolling through the full navigation.
If you are looking for the definition of a term, see the Glossary.
Getting started
| I want to... | Go to |
|---|---|
| Understand what SFTPGo is and which features it has | Features |
| Install SFTPGo on Linux, Windows, macOS, Docker, or Kubernetes | Installation, Docker |
| Do the first-time setup (admin, first user, test login) | Getting Started |
| Use example configurations for common deployments | Configuration Examples |
Users, groups, roles
| I want to... | Go to |
|---|---|
| Create a user (any backend) | Getting Started, REST API |
| Use groups to centralize settings | Groups, Groups tutorial |
| Understand primary vs secondary vs membership groups | Groups |
| Delegate admin duties to scoped administrators | Roles |
| Let users self-change their password | WebClient |
Storage backends
| I want to... | Go to |
|---|---|
| Use the local filesystem | Local filesystem |
| Use encrypted local storage | Data At Rest Encryption |
| Use Amazon S3 or S3-compatible storage (Wasabi, MinIO, etc.) | S3 |
| Use Google Cloud Storage | GCS |
| Use Azure Blob Storage | Azure Blob |
| Chain SFTPGo on top of another SFTP server | SFTP backend |
| Use an FTP server as a backend | FTP backend |
| Use a custom HTTP API as storage | HTTPFs |
| Mount different backends at different paths | Virtual Folders |
Protocols
| I want to... | Go to |
|---|---|
| Configure SFTP/SCP (SSH) | SSH |
| Configure FTP / FTPS | FTP |
| Configure WebDAV | WebDAV |
| Enable TUS resumable uploads | Features |
Authentication
| I want to... | Go to |
|---|---|
| Accept SSH public keys | SSH |
| Integrate an OIDC Identity Provider (Entra ID, Okta, Google, Auth0, Keycloak…) | OIDC, Auto-provision users via IdP |
| Integrate LDAP / Active Directory | LDAP plugin |
| Enable multi-factor authentication | Two-factor authentication |
| Use API keys for automation | REST API |
| Replace the built-in login with a custom service | External auth hook, Keyboard-interactive |
| Modify user records at login time | Pre-login hook |
Sharing
| I want to... | Go to |
|---|---|
| Let users create public / password-protected links | Shares tutorial |
| Require email authentication on shares | Shares tutorial |
Automation (Event Manager)
| I want to... | Go to |
|---|---|
| Understand the Event Manager overview | Event Manager, Event Manager tutorial |
| Write templates with placeholders and helper functions | Placeholders & Templates |
| Send email or webhook notifications on upload | Upload notifications & webhooks |
| Auto-provision users via OIDC | Auto-provision via IdP |
| Schedule retention / cleanup | Data retention |
| Copy or archive files across backends | Copy & archive workflows |
| Scan uploads with antivirus (ICAP) | Antivirus (ICAP) |
| Encrypt/decrypt with PGP | PGP encryption & decryption |
| Build auto folder structures | Automatic folder structure |
| Take daily backups | Daily backups |
| Integrate virtual folders with events | Virtual folders integration |
| Implement a recycle bin | Recycle bin |
| Run actions before a file is published to clients | Execute before file publish |
| See what a rule actually does in production | Event report |
| Execute filesystem actions from rules | Filesystem actions |
| Migrate from older custom action hooks | Event Manager migration guide |
Security and protection
| I want to... | Go to |
|---|---|
| Get TLS certificates automatically | Let's Encrypt tutorial |
| Block brute-force attackers | Defender |
| Rate-limit requests | Rate limiting |
| Preserve client IPs behind a load balancer | Configuration file |
| Store secrets in a cloud KMS | KMS, Cloud KMS providers plugin |
| Restrict shares by IP country | GeoIP plugin |
Configuration and operation
| I want to... | Go to |
|---|---|
| Configure via config file | Config file |
| Configure via environment variables | Env vars |
| Use the CLI for administrative tasks | CLI |
| Customize email templates | Email templates |
| Use the WebAdmin or WebClient | Web interfaces |
| Pick a data provider (SQLite, PostgreSQL, MySQL, CockroachDB) | Data provider |
| Migrate from OSS 2.6.x to Enterprise | Migration from OSS |
Observability
| I want to... | Go to |
|---|---|
| Read server logs | Logs |
| Collect Prometheus metrics | Metrics |
| Store audit logs in a plugin | Audit logs plugin |
| Forward events to Pub/Sub or a message broker | Pub/Sub plugin |
| Profile CPU or memory usage | Profiling |
Integrations
| I want to... | Go to |
|---|---|
| Deploy on AWS | SFTPGo on AWS |
| Deploy on Google Cloud | SFTPGo on Google Cloud |
| Use OAuth2 for SMTP / IMAP | OAuth2 for SMTP & IMAP |
| Extend SFTPGo with a plugin | Plugins |
Compliance and reference
| I want to... | Go to |
|---|---|
| Review SFTPGo's compliance posture | Security & Compliance |
| Consult the REST API contract | REST API + openapi/openapi.yaml (or https://sftpgo.com/assets/openapi.yaml) |
| Look up a specific term | Glossary |
| See the changelog | Changelog |
AI-assisted workflows
| I want to... | Go to |
|---|---|
| Use Claude Code, Cursor, Copilot, ChatGPT, Gemini, or any other AI to write SFTPGo configuration, REST API payloads, WebAdmin form values, Event Action templates, or troubleshoot a deployment | AI Assistants |