From install to live in four steps
Selfish runs on iPhone, iPad, and Mac from a single purchase. The flow is always the same: write a post, generate the static site, point Selfish at your server once, and publish. You only do the SFTP setup a single time per site.
Add your first site
From the sites list, tap New Site. Each site keeps its own posts, pages, theme, and publishing target — so you can run as many as you like from one app.
- 01Title — your site's name, shown on the generated site, e.g. Field Notes.
- 02Description & author (optional) — used on the site and in its RSS feed.
- 03Site URL — set in Publishing settings: where readers reach it, e.g. https://fieldnotes.example. Used to build canonical links, sitemap.xml, and the RSS feed.
Connect Selfish to your server
Selfish publishes over SFTP — the file-transfer layer of SSH. If you can SSH into your box, you can publish to it. Open your site's Publishing settings and fill in five fields:
- Host
- Your server's address — a domain like
ssh.yourhost.comor an IP like203.0.113.10. - Port
22for almost everyone. Only change it if your host runs SSH on a custom port.- Username
- Your SSH login, e.g.
deployorwww-data. - Password
- Stored in the Apple Keychain only — never in a database, source, or log.
- Remote path
- The absolute directory your web server serves from, e.g.
/var/www/fieldnotes. Selfish creates sub-folders as needed.
Prefer keys to passwords? Switch Authentication to SSH key and paste an OpenSSH RSA or Ed25519 private key (passphrases supported). Like passwords, keys live only in the Keychain.
Not publishing over SFTP? Set Publish Using to S3 and Selfish uploads to Amazon S3 or any S3-compatible storage — Cloudflare R2, Backblaze B2, DigitalOcean Spaces, MinIO. You'll need the endpoint, region, bucket, and access keys from your provider.
Finding your details
Where these live depends on what you're publishing to. A few common setups:
- VPS (DigitalOcean, Hetzner, Linode)
- Host = the droplet IP, user = the account you SSH in as, path = wherever Nginx/Apache points (often
/var/www/html). - Shared hosting / cPanel
- Look for "SFTP / SSH access" in the panel. Path is usually
~/public_html. - Home server / NAS
- Host = your local IP or domain, with SSH enabled. Make sure the port is reachable from your device.
Test the connection
Before you ever publish, tap Test Connection. Selfish opens an SFTP session, verifies the credentials, and checks your remote path — creating it if it doesn't exist yet — so you find problems now, not mid-upload.
Host-key trust (first connection)
The first time Selfish reaches a server it shows you that server's host-key fingerprint and asks you to trust it — trust-on-first-use, the same model as SSH itself. Selfish pins that key and refuses to publish if it ever changes silently, which is real protection against a server being impersonated.
Compare the fingerprint to what your host published (or to ssh-keyscan output) and tap Trust.
If the key later changes, Selfish blocks the upload and warns you — investigate before continuing.
When you've legitimately rotated the key, use Reset Trusted Host Key in Publishing settings and trust the new one.
Generate and push
Tap Publish. Selfish renders every published post and page to static HTML — with your sitemap and RSS feed — then uploads the whole site over the connection you set up, creating any missing remote directories and showing per-file progress as it goes.
Drafts stay private — only posts marked Published are generated and uploaded.
Three built-in themes
Every theme is responsive, fast, and dependency-free. Switch any time and re-publish — your content never changes, only the wrapper. You can also inject custom header / footer snippets for analytics-free extras like a web font or a verification tag.
Three more — Mono, Editorial, and Zine — are available in the Theme Gallery as optional one-time purchases.
Common SFTP issues
ssh user@host -p 22 from a computer first.