Skip to content
Hoody.com

You mount the container’s storage on your own computer, so the connection is client-initiated: your machine connects to the container, not the other way around. From there you get drag-and-drop file access in whatever file manager you already use.

What that gives you:

  • Client-initiated - you open the connection from your local machine
  • Local tools on container files - edit with VS Code, Photoshop, or Excel
  • No container changes - SFTP via the Hoody SSH Proxy, WebDAV via hoody-files
  • Familiar file managers - Finder and Explorer treat it like any network drive

File access:

Related access:


Two protocols support local mounting:

SFTP

Provided by: Hoody API (SSH Proxy)

  • Built on SSH protocol (port 22)
  • Same infrastructure as SSH access
  • Same authentication (SSH keys)
  • Privacy-preserving routing
  • Universal SFTP client support

WebDAV

Provided by: hoody-kit (hoody-files service)

  • HTTP/HTTPS-based protocol
  • Authentication via Proxy Permissions
  • Native macOS/Windows support
  • Mount directly in file managers
  • Works through firewalls easily

Both protocols reach the same container filesystem: SFTP through the Hoody API, WebDAV through hoody-kit.


SFTP is provided by the Hoody API’s SSH Proxy, the same infrastructure as SSH access.

Terminal window
Protocol: SFTP (SSH File Transfer Protocol)
Host: {projectId}-{containerId}-ssh.{serverName}.containers.hoody.com
Port: 22
Username: root
Authentication: SSH public key

You mount from your local machine to the container: a client-initiated connection, for security and control.

Example: if your container is on server us-west-1, the SFTP host is:

{projectId}-{containerId}-ssh.us-west-1.containers.hoody.com

Privacy benefit: the same endpoint serves all containers on that server. SFTP routing happens by SSH public key during the handshake, so the target container is not visible in the connection URL.


  1. Open FinderGo menu → Connect to Server (⌘K)
  2. Server Address:
    sftp://{projectId}-{containerId}-ssh.us-west-1.containers.hoody.com
  3. Click Connect
  4. Authentication:
    • Select your SSH private key from keychain
    • Or add new key: Keychain Access → add ~/.ssh/hoody-container-1
  5. The container filesystem mounts as a network drive

Mounted at: /Volumes/{projectId}-{containerId}-ssh.us-west-1.containers.hoody.com/


Download: WinSCP

  1. New Site:

    • File protocol: SFTP
    • Host name: {projectId}-{containerId}-ssh.us-west-1.containers.hoody.com
    • Port: 22
    • User name: root
  2. Authentication:

    • Advanced → SSH → Authentication
    • Private key file: Browse to %USERPROFILE%\.ssh\hoody-container-1
    • WinSCP converts to .ppk format automatically
  3. Login - the container filesystem appears in WinSCP’s file manager

  4. Optional: Tools → Preferences → Integration → Explorer

    • Enable “Windows Explorer integration”
    • Access via right-click “WinSCP” in Explorer

Terminal window
# Install sshfs
sudo apt-get install sshfs # Debian/Ubuntu
sudo dnf install sshfs # Fedora
sudo pacman -S sshfs # Arch
# Create mount point
mkdir -p ~/hoody-containers/container-1
# Mount container
sshfs root@{projectId}-{containerId}-ssh.us-west-1.containers.hoody.com:/ \
~/hoody-containers/container-1 \
-o IdentityFile=~/.ssh/hoody-container-1
# Access files
ls ~/hoody-containers/container-1/hoody/storage
# Make persistent (add to /etc/fstab)
echo "root@{projectId}-{containerId}-ssh.us-west-1.containers.hoody.com:/ /home/user/hoody-containers/container-1 fuse.sshfs defaults,IdentityFile=/home/user/.ssh/hoody-container-1,allow_other 0 0" | sudo tee -a /etc/fstab
# Unmount
fusermount -u ~/hoody-containers/container-1

ClientPlatformGUIFeatures
FileZillaWin/Mac/LinuxYesTwo-pane, queue, bookmarks, free
WinSCPWindowsYesExplorer integration, scripting, sync
CyberduckMac/WindowsYesFinder integration, cloud services
TransmitMacYesPolished UI, fast, paid
sshfsMac/LinuxNoCommand-line, native mounting
Mountain DuckMac/WindowsYesMount as drive letter, paid

WebDAV provides HTTP-based filesystem access with native operating-system support.

Terminal window
# Get container details to build WebDAV URL
hoody containers get $CONTAINER_ID
# The WebDAV URL follows this pattern:
# https://{project}-{container}-files-1.{server}.containers.hoody.com/

Connection details:

Terminal window
URL: https://{project}-{container}-files-1.{server}.containers.hoody.com/
Authentication: Hoody Proxy Permissions

Example URL:

https://PROJECT_ID-CONTAINER_ID-files-1.us-west-1.containers.hoody.com/

You mount from your client to the container, so you control the connection.


  1. FinderGoConnect to Server (⌘K)

  2. Server Address:

    https://PROJECT_ID-CONTAINER_ID-files-1.us-west-1.containers.hoody.com/
  3. Click Connect

  4. Authentication:

    • If Proxy Permissions configured: Use those credentials
    • If no permissions: Leave blank or use any credentials (access is open)
  5. The container filesystem mounts as a WebDAV drive

Mounted at: /Volumes/webdav/


  1. Right-click “This PC”Map network drive

  2. Drive letter: Choose (e.g., Z:)

  3. Folder:

    https://PROJECT_ID-CONTAINER_ID-files-1.us-west-1.containers.hoody.com/
  4. Check: “Reconnect at sign-in” (for persistence)

  5. Check: “Connect using different credentials”

  6. Credentials:

    • If Proxy Permissions configured: Use those credentials
    • If no permissions: Leave blank, or use any credentials, since access is open
  7. Click Finish - the drive appears in Explorer as Z:\


Terminal window
# Install davfs2
sudo apt-get install davfs2 # Debian/Ubuntu
sudo dnf install davfs2 # Fedora
# Create mount point
sudo mkdir -p /mnt/hoody-container
# Add credentials to /etc/davfs2/secrets (if Proxy Permissions configured)
echo "https://PROJECT_ID-CONTAINER_ID-files-1.us-west-1.containers.hoody.com/ USERNAME PASSWORD" | sudo tee -a /etc/davfs2/secrets
# OR leave blank if no permissions configured
sudo chmod 600 /etc/davfs2/secrets
# Mount
sudo mount -t davfs https://PROJECT_ID-CONTAINER_ID-files-1.us-west-1.containers.hoody.com/ /mnt/hoody-container
# Access files
ls /mnt/hoody-container/hoody/storage
# Make persistent (add to /etc/fstab)
echo "https://PROJECT_ID-CONTAINER_ID-files-1.us-west-1.containers.hoody.com/ /mnt/hoody-container davfs user,noauto 0 0" | sudo tee -a /etc/fstab
# Unmount
sudo umount /mnt/hoody-container

Recommended WebDAV client for Android:

  1. Install WebDAV Navigator from Play Store

  2. Add Connection:

    • Tap +WebDAV
    • URL: https://PROJECT_ID-CONTAINER_ID-files-1.us-west-1.containers.hoody.com/
    • If Proxy Permissions configured: Enter credentials
    • If no permissions: Leave blank or use any credentials
  3. Browse Files:

    • Tap connection to browse container filesystem
    • /hoody/storage, /home/user, etc. all accessible
  4. File Operations:

    • Download files to device
    • Upload from device to container
    • Create folders, rename, delete
    • Open with Android apps

iOS 13 and later have built-in WebDAV support.

  1. Open Files app

  2. Tap ••• (More) → Connect to Server

  3. Server:

    https://PROJECT_ID-CONTAINER_ID-files-1.us-west-1.containers.hoody.com/
  4. Authentication:

    • If Proxy Permissions configured: Enter credentials
    • If no permissions: Tap “Connect as Guest”
  5. Container mounts in sidebar under “Shared”

  6. Access Files:

    • Browse container filesystem
    • Open files with iOS apps
    • Share files between apps
    • Download and upload by dragging

The two differ in setup, platform support, and metadata handling:

FeatureSFTPWebDAV
Provided ByHoody API (SSH Proxy)hoody-kit (hoody-files)
SetupRequires SSH keyUses Proxy Permissions
Native SupportmacOS/Linux (via sshfs)macOS/Windows/iOS (built-in)
Mobile SupportAndroid/iOS SSH clientsAndroid/iOS native file managers
SecuritySSH protocolHTTPS
FirewallPort 22 (sometimes blocked)Port 443 (rarely blocked)
SpeedFastSlightly slower (HTTP overhead)
MetadataFull POSIX supportLimited metadata
CompatibilityAll SFTP clientsAll WebDAV clients

Recommendation:

  • SFTP: when you already have SSH configured and need full POSIX metadata (desktop or laptop)
  • WebDAV: for native OS mounting, especially on mobile (iOS Files app, Android file managers)
  • Either one for basic file transfer, where they work equally well

Mount the container, edit locally, and the changes land in the container immediately:

Terminal window
# Mount container filesystem
# macOS:
open sftp://{projectId}-{containerId}-ssh.us-west-1.containers.hoody.com
# Edit files in your favorite local editor
code /Volumes/{projectId}-{containerId}-ssh.us-west-1.containers.hoody.com/hoody/storage/myapp/
# Changes saved locally = changes in container instantly

Good for: editing code, configs, and logs without an SSH terminal.

Drag and drop a backup through your file manager:

Terminal window
# Mount container
# Copy /hoody/storage to local backup
cp -r /Volumes/webdav/hoody/storage ~/Backups/container-backup-2025-11-10/
# Or use rsync for incremental backups
rsync -av /Volumes/webdav/hoody/storage/ ~/Backups/container-latest/

Better than: manual file downloads via the HTTP API.

Upload hundreds of files in one operation:

Terminal window
# Mount container WebDAV
# Drag entire project folder from local machine
# to /Volumes/webdav/hoody/storage/projects/
# Or use command-line
cp -r ~/Projects/website/* /Volumes/webdav/var/www/html/

Faster than: sequential HTTP uploads.

Tail logs in a local text editor:

Terminal window
# Mount container
# Open log file with live-updating editor (e.g., VS Code, Sublime Text)
code /Volumes/webdav/hoody/storage/myapp/logs/app.log
# Log updates appear in real-time as container writes

Alternative to: SSH plus tail -f.


SFTP’s public key routing means the connection URL doesn’t reveal which container you’re accessing:

Terminal window
# Same endpoint for all containers
{projectId}-{containerId}-ssh.us-west-1.containers.hoody.com
# Routing happens by SSH key (invisible to network observers)

WebDAV URLs contain the project and container IDs, which are visible to anyone who sees the URL.

SFTP: SSH keys already in ~/.ssh/ with permissions 600

WebDAV: Use credential managers:

  • macOS: Keychain stores WebDAV passwords automatically
  • Windows: Credential Manager saves mapped drive credentials
  • Linux: davfs2 secrets file with chmod 600

Never hard-code API tokens in scripts.

Leaving mounts active consumes resources:

Terminal window
# macOS
umount /Volumes/webdav
# Linux
fusermount -u ~/hoody-containers/container-1
# Windows
net use Z: /delete

Or set up auto-unmount on logout and shutdown.

SFTP (Linux/macOS):

Terminal window
sshfs root@{projectId}-{containerId}-ssh.{serverName}.containers.hoody.com:/ ~/container-1 \
-o ro,IdentityFile=~/.ssh/key

A read-only mount prevents accidental deletions when you are only browsing or reading files.

Local mounting is for human interaction: file managers and editors.

For automation such as scripts and CI/CD, use the Hoody Files HTTP API:

Terminal window
# Automation: Direct HTTP
curl "https://...-files.../api/v1/files/data.json"
# Automation: Mounting unnecessary
mount access unmount (slower, more complex)

Do I need SSH configured for SFTP mounting?

Section titled “Do I need SSH configured for SFTP mounting?”

Yes. SFTP uses SSH authentication, so your container must have an ssh_public_key configured. See SSH Access.

WebDAV does not require SSH. It uses Hoody Proxy Permissions, or no authentication if permissions are disabled.

Can I mount multiple containers simultaneously?

Section titled “Can I mount multiple containers simultaneously?”

Yes. Each container has unique SFTP and WebDAV endpoints, so mount as many as you need.

SFTP: Different SSH keys route to different containers (same hostname).

WebDAV: Different container URLs mount as different drives.

Does mounting affect container performance?

Section titled “Does mounting affect container performance?”

Minimal impact. File operations go through the hoody-files service, which is optimized for this use case.

Heavy operations, such as copying gigabytes of data, consume bandwidth and I/O like any file transfer.

SFTP: Only if they have the container’s SSH private key.

WebDAV: Only if they pass Proxy Permissions (if configured). If permissions disabled, WebDAV is open access.

Security: Configure Proxy Permissions for WebDAV access control. SFTP is always key-protected.

What happens if I delete files via mounted drive?

Section titled “What happens if I delete files via mounted drive?”

Files are permanently deleted from the container filesystem, the same as running rm over SSH.

Safety: Create snapshots before bulk deletions.

Does mounting work with containers in “block” network mode?

Section titled “Does mounting work with containers in “block” network mode?”

Yes. Mounting is inbound, to the container, through the Hoody Proxy. Network block mode only prevents outbound traffic from the container.


Problem: “Connection refused” when mounting SFTP

Solutions:

  1. Verify container is running:

    Terminal window
    curl "https://api.hoody.com/api/v1/containers/{id}" \
    -H "Authorization: Bearer $TOKEN"
    # Check: "status": "running"
  2. Test SSH connectivity:

    Terminal window
    ssh -i ~/.ssh/hoody-container-1 root@{projectId}-{containerId}-ssh.{serverName}.containers.hoody.com
    # Should connect to shell
  3. Check SSH key is added to container:

    Terminal window
    # Verify via API
    GET /api/v1/containers/{id}
    # Check: "ssh_public_key" field is set

Problem: Windows can’t connect to WebDAV, authentication fails

Solutions:

  1. Enable WebClient service:

    Terminal window
    sc config webclient start=auto
    sc start webclient
  2. Allow Basic Auth over HTTPS: Registry: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters

    • Set BasicAuthLevel = 2
    • Restart WebClient
  3. Check Proxy Permissions:

    • If permissions configured: Verify credentials are correct
    • If no permissions: Any credentials should work (or leave blank)
    • See Proxy Permissions for configuration

Problem: macOS blocks the WebDAV connection over the SSL certificate

Solution: Hoody issues and renews per-server wildcard certificates (*.{serverName}.containers.hoody.com), so this should not happen.

If it does:

  1. Verify URL is correct (use container’s actual URL from Hoody)
  2. Try SFTP instead (SSH doesn’t have this issue)

Problem: Changes made in container don’t appear in mounted filesystem

Cause: File manager caching

Solutions:

  1. Unmount and remount:

    Terminal window
    umount /Volumes/webdav
    # Remount
  2. Refresh view: F5 or ⌘R in file manager

  3. Use Hoody Terminal to verify file contents:

    Terminal window
    cat /path/to/changed/file

Problem: File transfers via mounted filesystem are slow

Solutions:

  1. Check network latency:

    Terminal window
    ping {projectId}-{containerId}-ssh.{serverName}.containers.hoody.com
    # High latency = slow transfers
  2. Use a nearby server: create the container on a geographically close server

  3. Compress before transfer:

    Terminal window
    # Instead of copying entire directory
    tar czf backup.tar.gz /source/dir
    # Copy single compressed file (faster)
  4. Use a direct HTTP upload for large files:

    Terminal window
    curl -X PUT "https://...-files.../api/v1/files/uploads/large-file.zip" \
    --data-binary @large-file.zip

Other storage capabilities:

File access methods:

What this page covered:

  • SFTP is provided by the Hoody API, on the SSH Proxy infrastructure
  • WebDAV is provided by hoody-files, a hoody-kit service
  • You mount from your machine to the container, so the connection is yours to open and close
  • The container filesystem mounts in macOS Finder, Windows Explorer, and Linux
  • SFTP uses SSH keys, with privacy-preserving routing through the Hoody API
  • WebDAV uses Proxy Permissions for authentication
  • You reach the same filesystem as over SSH, through a file manager instead