2025-04-14 · 9 min read

How to Set Up SFTP Upload for Your Screenshots (Complete Guide)

Most screenshot tools upload your images to their own cloud service. You get a link, but you don't control the server. You can't choose the domain. You can't set access controls. You can't guarantee the link will still work in two years. And you're trusting a third party with every image you upload — including screenshots that might contain sensitive data.

SFTP upload flips this model. Your screenshots go to your own server, on your own domain, under your own control. You decide who can access them. You decide how long they stay up. You control the entire chain from capture to link.

This guide walks through setting up SFTP screenshot upload with Maxisnap, from server preparation to configuration to your first auto-upload. If you have a web server or VPS, you can be up and running in under 15 minutes.

Why SFTP Over Other Upload Methods

SFTP (SSH File Transfer Protocol) transfers files over an encrypted SSH connection. Compared to other upload methods, it offers several advantages:

  • Encrypted in transit — All data is encrypted via SSH. Unlike plain FTP, your screenshots can't be intercepted in transit.
  • No additional software on the server — If your server runs SSH (virtually all Linux servers do), SFTP works out of the box. No FTP daemon, no web server API endpoint, no additional configuration.
  • Key-based authentication — You can use SSH key pairs instead of passwords, which is both more secure and more convenient.
  • Standard protocol — SFTP is supported by every major hosting provider, VPS, and cloud platform. No vendor lock-in.
  • Full control — Your server, your domain, your rules. Screenshots are regular files on your filesystem.

Maxisnap also supports FTP, S3-compatible storage, and HTTP POST uploads. But for most users with their own server, SFTP is the simplest and most secure option. See all upload options.

What You Need

  • A server with SSH access — Any Linux VPS works. DigitalOcean, Linode, Hetzner, AWS EC2, or your own hardware. You need SSH access and a web server (Nginx or Apache) to serve the uploaded images.
  • A domain name — Optional but recommended. Screenshots uploaded to screenshots.yourdomain.com look more professional than an IP address.
  • Maxisnap Pro — SFTP upload requires a Maxisnap Pro license. The free version includes full capture and annotation.

Step 1: Prepare Your Server

If you already have a web server with SSH access, skip to Step 2. Otherwise, here's the minimal setup:

On your server, create a directory for screenshots and configure your web server to serve files from it.

# Create the screenshot directory
sudo mkdir -p /var/www/screenshots
sudo chown $USER:$USER /var/www/screenshots
sudo chmod 755 /var/www/screenshots

If you're using Nginx, add a server block (or add a location to your existing site):

server {
    listen 80;
    server_name screenshots.yourdomain.com;

    root /var/www/screenshots;

    location / {
        try_files $uri =404;
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

If you're using Apache, the equivalent is simpler — just point a VirtualHost at the directory:

<VirtualHost *:80>
    ServerName screenshots.yourdomain.com
    DocumentRoot /var/www/screenshots
</VirtualHost>

Add SSL with Let's Encrypt (strongly recommended):

sudo certbot --nginx -d screenshots.yourdomain.com
# or for Apache:
sudo certbot --apache -d screenshots.yourdomain.com

Step 2: Set Up SSH Key Authentication (Recommended)

You can authenticate with a password, but SSH keys are more secure and eliminate the need to type a password. If you already use SSH keys, skip this step.

On your Windows machine, open PowerShell:

# Generate an SSH key pair (if you don't have one)
ssh-keygen -t ed25519 -C "maxisnap-upload"

# Copy the public key to your server
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@your-server "cat >> ~/.ssh/authorized_keys"

Test the connection:

ssh user@your-server "echo 'Connection successful'"

If it connects without asking for a password, key authentication is working.

Step 3: Configure Maxisnap

Open Maxisnap and navigate to Settings > Upload. Select SFTP as the upload protocol and fill in the following fields:

  • Host: Your server's hostname or IP address (e.g., screenshots.yourdomain.com)
  • Port: 22 (default SSH port, change if your server uses a non-standard port)
  • Username: Your SSH username
  • Authentication: Key file (select your private key, usually C:\Users\YourName\.ssh\id_ed25519) or Password
  • Remote path: /var/www/screenshots/ (the directory you created in Step 1)
  • URL prefix: https://screenshots.yourdomain.com/ (the public URL where files are accessible)

Click Test Connection to verify. Maxisnap will attempt to connect and write a test file. If it succeeds, you're ready to upload.

Step 4: Your First Auto-Upload

Press Ctrl+Alt+7 (Maxisnap's auto-upload hotkey). Select a region of your screen. Maxisnap captures the region, uploads it via SFTP, and copies the shareable link to your clipboard.

Paste that link into a browser. Your screenshot should load from your own domain. The URL will look something like:

https://screenshots.yourdomain.com/2025-04-14_143022.png

That's it. From capture to shareable link in under three seconds, hosted on your own server.

File Naming and Organization

Maxisnap generates filenames based on the capture timestamp by default (e.g., 2025-04-14_143022.png). You can customize the naming pattern in Settings > Upload > Filename pattern. Options include:

  • {datetime} — Full timestamp (default)
  • {date}/{datetime} — Organized into date-based subdirectories
  • {random} — Random 8-character string for unlinkable URLs
  • {random}-{datetime} — Random prefix for uniqueness with timestamp for findability

For security-conscious setups, use {random} naming. This makes URLs unguessable — no one can enumerate your screenshots by incrementing a timestamp.

Advanced: Securing Your Screenshot Server

For professional use, consider these additional security measures:

Access Controls

By default, your screenshots are publicly accessible via URL. To restrict access, you have several options:

  • Random filenames — URLs are unguessable without the exact link. Simple but not true security.
  • Nginx basic auth — Add password protection to the entire screenshots directory. Useful for internal team sharing.
  • IP whitelisting — Restrict access to your office or VPN IP range.
  • Signed URLs — If you use S3-compatible storage instead of SFTP, you can generate time-limited signed URLs.

Automatic Cleanup

Screenshots accumulate over time. Add a cron job to delete old files:

# Delete screenshots older than 90 days
0 3 * * * find /var/www/screenshots -type f -mtime +90 -delete

Bandwidth and Storage

Average screenshot size is 200-500 KB as PNG. At 50 screenshots per day, that's roughly 10-25 MB daily, or 300-750 MB per month. Most VPS plans include far more storage and bandwidth than this requires. Screenshot hosting is not resource-intensive.

Troubleshooting

"Connection refused" or timeout: Verify your server's SSH port is open (check firewall rules with sudo ufw status). Ensure the SSH service is running (sudo systemctl status sshd).

"Permission denied": Your SSH user needs write permission to the remote path. Check ownership with ls -la /var/www/screenshots/. The directory should be owned by your SSH user or a group your user belongs to.

Upload succeeds but link doesn't work: Verify your URL prefix matches the actual public URL. Check that your web server is serving the screenshots directory. Try accessing the file directly via browser with the full path.

Slow uploads: SFTP is encrypted, which adds slight overhead compared to plain FTP. For typical screenshots (200-500 KB), upload should complete in under a second on any reasonable connection. If uploads are consistently slow, check your network connection to the server.

Alternatives to SFTP

SFTP is the best option for most users with their own server, but Maxisnap supports other protocols too:

  • S3-compatible storage — AWS S3, DigitalOcean Spaces, Cloudflare R2, MinIO. Best for teams that want managed storage without maintaining a server.
  • HTTP POST — Upload to any API endpoint that accepts file uploads. Best for integration with custom backends.
  • FTP — Legacy protocol, unencrypted. Use only if SFTP is not available. Not recommended for sensitive screenshots.

Why Self-Hosted Screenshots Matter

Using a third-party screenshot service means trusting them with your data, your uptime, and your links. Services shut down, change their pricing, or get acquired. Links break. Data policies change.

Self-hosted screenshots eliminate these dependencies. Your images live on your server, accessible at your domain, for as long as you want them there. For privacy-sensitive screenshots, for professional documentation, and for links that need to work reliably — self-hosting is the right choice. It's one of the key reasons developers choose Maxisnap over Monosnap.

Download Maxisnap and set up SFTP upload today. Fifteen minutes from now, you'll have a screenshot workflow that's faster, more private, and entirely under your control.

Ready to try a better screenshot tool?

Download Maxisnap free and see the difference.

Download Maxisnap Free