01 — GETTING STARTED

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.

01
Write
02
Generate
03
Connect
04
Publish
02 — CREATE A 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.

  1. 01Title — your site's name, shown on the generated site, e.g. Field Notes.
  2. 02Description & author (optional) — used on the site and in its RSS feed.
  3. 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.
03 — SET UP SFTP

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:

FIELD
WHAT TO ENTER
Host
Your server's address — a domain like ssh.yourhost.com or an IP like 203.0.113.10.
Port
22 for almost everyone. Only change it if your host runs SSH on a custom port.
Username
Your SSH login, e.g. deploy or www-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.
KEY

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.

S3

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.

$ selfish test --site fieldnotes
resolving ssh.yourhost.com:22
authenticating as deploy
remote path /var/www/fieldnotes ready
connection ok — ready to publish

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.

04 — PUBLISH

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.

generating static site…
142 pages rendered · sitemap.xml · feed.xml
uploading via sftp ████████████ 100%
live at https://fieldnotes.example

Drafts stay private — only posts marked Published are generated and uploaded.

05 — THEMES

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.

Default
Clean & minimal, system fonts
Modern
Bold type, vibrant accents
Classic
Traditional serif, timeless

Three more — Mono, Editorial, and Zine — are available in the Theme Gallery as optional one-time purchases.

06 — TROUBLESHOOTING

Common SFTP issues

Connection refused / timeout
The host or port is wrong, or a firewall is blocking it. Confirm you can ssh user@host -p 22 from a computer first.
Authentication failed
Username or password is off. Re-enter the password — it's read fresh from the Keychain on each publish.
Permission denied on upload
Your user can log in but can't write to the remote path. Check directory ownership, or point at a path your user owns.
Host key has changed
Expected after a legitimate server rebuild or key rotation — use Reset Trusted Host Key. If you weren't expecting it, stop and investigate.
READY?
Get Selfish and publish your first site