HydraPipeline

HydraTransfer Runbook

WeTransfer-like file sharing service.

Infrastructure

Resource Value
Server hydratransfer.experiencenet.com (195.201.136.205)
Hetzner cx23, nbg1
Config /var/lib/hydratransfer/config.yaml
Data directory /var/lib/hydratransfer/
Service systemctl status hydratransfer
Logs journalctl -u hydratransfer -f

Overview

HydraTransfer provides simple file sharing without user authentication. Security is achieved through unguessable 16-hex-character transfer IDs. Files are uploaded in 10 MB chunks and automatically expire after 7 days.

Key Concepts

Operations

Monitor Active Transfers

ssh root@195.201.136.205
ls -la /var/lib/hydratransfer/

Check Expiry Cleanup

The service automatically removes expired transfers. Verify cleanup is working:

# Check for old transfers that should have been cleaned up
find /var/lib/hydratransfer/ -maxdepth 1 -mtime +7 -type d

Health Check

curl -s https://hydratransfer.experiencenet.com/api/v1/health

SSH Access

ssh root@hydratransfer.experiencenet.com
# or
ssh root@195.201.136.205

Mirror Push

When a transfer completes, hydratransfer pushes the file to hydramirror (best-effort, non-blocking). The mirror path is transfers/{transfer_id}/{filename}.

Configured in config.yaml:

mirror:
  url: "https://mirror-a.experiencenet.com"
  token: "<admin token>"

Verify mirror push

# Check logs for mirror-push entries
journalctl -u hydratransfer --since '1 hour ago' --no-pager | grep mirror-push

# Check if a file exists on the mirror
curl -I https://mirror-a.experiencenet.com/api/v1/files/transfers/<id>/<filename>

CLI Upload

Upload files from the command line using the built-in upload command:

hydratransfer upload --server https://hydratransfer.experiencenet.com --build-type experience --notes "description" /path/to/file.zip

Performs chunked upload (10 MB chunks) with progress display and SHA256 verification. Output includes the transfer ID and download URL.

Troubleshooting

Service not responding

  1. SSH to the server: ssh root@195.201.136.205
  2. Check service status: systemctl status hydratransfer
  3. Check logs: journalctl -u hydratransfer --since '10 min ago' --no-pager
  4. Check disk space: df -h /var/lib/hydratransfer/
  5. Restart if needed: systemctl restart hydratransfer

Disk space issues

Large uploads can fill the disk. Check for stale incomplete uploads:

du -sh /var/lib/hydratransfer/*

Upload failures

Chunked uploads may leave incomplete transfers. The expiry cleanup handles these, but for immediate cleanup:

# List transfers older than 7 days
find /var/lib/hydratransfer/ -maxdepth 1 -mtime +7 -type d -exec rm -rf {} +