HarborFM

Export and Delivery

Podcast delivery (export) pushes your RSS feed and episode audio to a remote destination (S3, R2, FTP, SFTP, WebDAV, IPFS, SMB) so listeners can subscribe and download.

Credentials are encrypted at rest with the instance's HARBORFM_SECRETS_KEY. Full request-body examples and options are in the main README ("Export" section).

Podcast Delivery Overview

Podcast delivery (export) uploads your show's RSS feed and episode audio files to a remote server or storage. You configure one or more exports per show; each export has a destination (e.g. S3, FTP) and credentials.

Where to Configure

  1. Open the show (podcast) and go to Settings (or the show's delivery/export section).
  2. Find Podcast Delivery (or "Export," "Deploy").
  3. Add an export and choose the mode (S3, FTP, SFTP, WebDAV, IPFS, SMB). Fill in the required fields (bucket/path, credentials, and optional public base URL).
  4. Save. Credentials are stored encrypted using the instance's HARBORFM_SECRETS_KEY.

Deploying

After you've built an episode (Build Final Episode) and optionally published it, deploy so the updated feed and new/changed audio files are pushed to the remote. When the episode has chapters, chapters.json is included in the deploy. The UI has a Deploy/Push action for each export. Only changed files are uploaded (the app uses ETag or similar to skip unchanged files).

Public Base URL

Many export types let you set a public base URL (e.g. your CDN or bucket URL). The generated RSS feed will use this URL for the feed itself and for episode audio enclosures, so subscribers and directories get the correct links.

Analytics Note

If you serve your podcast from a remote destination (e.g. S3 or your own CDN), the built-in analytics in HarborFM do not track plays for those remote files. Analytics apply to listens that go through the HarborFM host. See Analytics and the main README.

See Also

S3 and R2 Export

You can deploy your RSS feed and episode audio to AWS S3, Cloudflare R2, Backblaze B2, or any S3-compatible storage.

S3 (AWS)

Configure an export with mode S3 (or "S3" in the UI). You'll need:

  • Bucket name and optional prefix (folder path).
  • Region (e.g. us-east-1).
  • Access key ID and Secret access key (IAM user with read/write to the bucket).
  • Public base URL (optional) - e.g. https://my-bucket.s3.amazonaws.com or your CloudFront URL so the feed and enclosures use the correct listener-facing URLs.

R2 (Cloudflare)

Use the same S3-compatible mode with R2-specific settings:

  • Bucket, prefix, region (use auto for R2).
  • Endpoint URL - e.g. https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com.
  • R2 Access key ID and Secret access key (from R2 dashboard).
  • Public base URL - e.g. your R2 public bucket URL or custom domain.

B2 (Backblaze)

Again use S3-compatible mode:

  • Bucket, prefix, region (e.g. us-west-002 for B2).
  • Endpoint URL - e.g. https://s3.us-west-002.backblazeb2.com.
  • B2 key ID and application key.
  • Public base URL - your B2 bucket URL or custom domain.

See Also

FTP, SFTP, Webdav, IPFS, and SMB Export

Besides S3-compatible storage, HarborFM can deploy to FTP, SFTP, WebDAV, IPFS, and SMB. Configure each as a separate export in Podcast Delivery on the show settings.

FTP

  • Mode: FTP.
  • Host, port (usually 21), username, password.
  • Path - Remote directory for the feed and audio (e.g. /public/podcast).
  • Secure - Use TLS if your server supports it.
  • Public base URL - Optional; URL where the feed and files will be served (e.g. https://cdn.example.com/podcast).

SFTP

  • Mode: SFTP.
  • Host, port (usually 22), username, password (or private key PEM for key-based auth).
  • Path - Remote directory.
  • Public base URL - Optional.

Webdav

  • Mode: WebDAV.
  • URL - WebDAV base URL (e.g. https://webdav.example.com/remote.php/dav/files/user/).
  • Username, password.
  • Path - Subpath for the podcast (e.g. podcast/).
  • Public base URL - Optional.

IPFS

  • Mode: IPFS.
  • API URL - Your IPFS node API (e.g. http://127.0.0.1:5001). Optional API key, username, password if the node is behind auth (e.g. Caddy).
  • Path - Optional path/prefix.
  • Gateway URL - Public gateway for resolving content (e.g. https://ipfs.io).
  • Public base URL - Optional; e.g. your own gateway.

SMB

  • Mode: SMB.
  • Host, port (default 445), share name, username, password, optional domain (for Windows domain auth).
  • Path - Path within the share (e.g. feed/).
  • Public base URL - Optional; URL where you serve the feed and files (e.g. via a web server in front of the share).

See Also