How to Deploy SFTPGo: A Multi-Protocol File Server with Web Interface
Give clients and staff secure file access via SFTP, WebDAV, HTTPS, and FTP from one server. Here is how to deploy SFTPGo with Docker.
Every business needs to share files securely. Some clients prefer SFTP. Some staff prefer a web interface. Some applications only speak WebDAV. SFTPGo handles all of these protocols from a single server with a unified web administration panel. Here is how to deploy it with Docker.
Step 1: Create the Docker Compose File
services:
sftpgo:
image: ghcr.io/drakkan/sftpgo:v2-alpine
container_name: sftpgo
restart: unless-stopped
ports:
- "127.0.0.1:8089:8080"
- "2022:2022"
volumes:
- ./data:/srv/sftpgo
- ./config:/var/lib/sftpgo
environment:
- SFTPGO_DEFAULT_ADMIN_USERNAME=admin
- SFTPGO_DEFAULT_ADMIN_PASSWORD=your_admin_passwordPort 8089 is the web admin interface (proxied through your reverse proxy). Port 2022 is the SFTP port (exposed directly for SFTP clients). Add FTP port 21 and WebDAV port if you need those protocols.
Step 2: Configure the Reverse Proxy
Add a proxy host for files.yourdomain.com pointing to sftpgo:8080. Request SSL and enable Force SSL. The admin panel and the web client are available at this URL.
Step 3: Create Users and Shared Folders
Open https://files.yourdomain.com. Log in with the admin credentials. Create user accounts for each person who needs file access. Assign each user a home directory, set permissions (read, write, delete, list), and configure bandwidth limits if needed.
SFTPGo supports virtual folders: map multiple directories to appear as subfolders in a user's home directory. A client can see a folder for project files, a folder for invoices, and a folder for reports, all appearing in their SFTP root, even if the actual data is stored in different locations on disk.
Step 4: Connect Users to S3-Compatible Storage
SFTPGo can use S3-compatible object storage as a backend. Instead of storing files on the server's local disk, configure a virtual folder to point to an S3 bucket. Users connect via SFTP or the web interface as usual. Files are stored in S3. This is useful for offsite backups, large storage requirements, or compliance with data residency requirements.
Step 5: Share Files Publicly
SFTPGo includes a web client at https://files.yourdomain.com/web. Users log in with their SFTPGo credentials and access their files through a browser. Create share links with optional passwords and expiration dates. Share a file with a client by generating a link. They download it without needing an SFTP client or login credentials.
SFTPGo logs every file transfer: who accessed which file, when, from which IP address, and what they did. This audit trail is essential for businesses that need to demonstrate data access controls for compliance.
VPS1 deploys SFTPGo with configured users, virtual folders, and S3 storage backends. Your clients and staff get secure file access through whatever protocol they prefer. You get a complete audit trail of every transfer.
More articles
How to Deploy BTCPay Server: Accept Bitcoin Payments with Zero Platform Fees
BTCPay Server lets you accept Bitcoin and Lightning payments with no platform fees. Only standard Bitcoin network fees apply. Here is how to deploy it with Docker Compose.
Self-Hosted Crypto Payment Processors: BTCPay Server, Bitcart, and SHKeeper Compared
Accept Bitcoin and cryptocurrency payments directly with no platform fees, no intermediaries, and no KYC. Here is how BTCPay Server, Bitcart, and SHKeeper compare.
How to Deploy SHKeeper: Accept Crypto Payments with WooCommerce in 30 Minutes
SHKeeper supports Bitcoin, Ethereum, USDT, USDC, and 19+ cryptocurrencies with a free WooCommerce plugin. Zero platform fees -- only standard network fees apply.