Publishing docs — all chapters
Start with Test Connection
Most problems show up in Test Connection, in Site Settings → Publishing, before you ever publish. It reports one of three things.
| Result | What it means |
|---|---|
| Connection successful | The details work, and nothing looks wrong with the destination. |
| Connected — check this | The details work, but something would stop the site showing. The message says what to change. SFTP and GitHub Pages can answer this way. |
| Connection failed | The details don’t work. The message says why. |
After a publish
“Checked: your site shows this publish”
All is well. This is what you want to see.
“Your address still shows the previous version”
Some hosts take a minute or two to switch over. Choose Check Again. If it stays that way, the Site URL may point somewhere other than where you published.
“It answered not found”
The files arrived, but not where the address looks. The site may be in a different folder from the one the address serves. On SFTP, check the remote path. On GitHub Pages, check the branch and folder that Pages serves.
“Its address doesn’t lead anywhere yet” or “Its HTTPS certificate isn’t ready yet”
A new domain can take a while to reach everyone, and hosts issue certificates a little after the DNS records appear. Wait, then check again. Custom domains shows the records to look for.
“Old files couldn’t be removed”
The upload worked, but your login isn’t allowed to delete files, so something you removed is still online. Selfish tries again at the next publish. Check the account’s permissions on the server.
“Couldn’t check what’s live”, or the server didn’t answer
Selfish couldn’t read its record at the destination, or gave up waiting for it after 75 seconds. Try again. If you publish anyway, it uploads every file and removes nothing, which is slow but safe.
The connection dropped partway through
The upload is safe to repeat. Publish again and Selfish finishes what was left. Selfish names the other common failures in the same plain words: the server didn’t answer, turned the connection away, couldn’t be reached, the address doesn’t exist, or this device is offline.
SFTP
Connection refused, or it times out
The host or port is wrong, or a firewall is in the way. Confirm you can run ssh user@host -p 22 from a computer first.
Authentication failed
The username, password or key is off. A key must be an OpenSSH RSA or Ed25519 private key. Other kinds aren’t supported yet.
Permission denied on upload
Your user can log in but can’t write to the remote path. Check who owns the folder, or point at a folder your user owns.
The host key has changed
Expected after you rebuild a server or rotate its key. Use Reset Trusted Host Key and trust the new one. If you weren’t expecting it, stop and find out why before you upload anything.
It connects, but the site doesn’t show
The test may say the folder has public_html (or www, or htdocs) inside it. That inner folder is where your host serves websites from. Set the remote path to it.
If the pages return “403 Forbidden”, the web server can’t read the files. Folders need to be readable and listable by everyone (755) and files readable (644).
WebDAV
“Needs an https:// address”
Selfish won’t send a password over plain http. Use the service’s https:// address.
The password is refused
Many services want an app password for WebDAV rather than your account password. Fastmail always does, and Nextcloud does when two-factor sign-in is on.
The upload is refused part-way
A server that redirects WebDAV requests elsewhere is refused on purpose, so your password isn’t re-sent to another address. Use the address the redirect leads to as the folder address.
S3-compatible storage
Access denied
The access key can’t write to the bucket, or the region or endpoint is wrong. Use a key with write permission on this bucket. For Cloudflare R2 the region is auto.
The site uploads but won’t load
The files are there but aren’t served to the public. Turn on static website hosting (Amazon S3) or connect a custom domain to the bucket (Cloudflare R2).
Posts are “not found” after switching to addresses without .html
Amazon S3 shows /posts/my-post/ only with static website hosting on, or behind a CDN that adds index.html.
Netlify
The token is invalid or has expired
Create a new personal access token. Netlify asks for an expiry date when you make one, and resetting your Netlify password ends the tokens you already had.
Rate limited
Netlify accepts 3 deploys a minute through its API. Wait a minute and publish again.
The site has paused
On Netlify’s metered free plan, a site pauses when its monthly credits run out, and each production deploy uses some. See Netlify’s pricing page.
Cloudflare Pages
The token is invalid
Publishing needs Account → Cloudflare Pages → Edit. Check, too, that the project exists under Workers & Pages.
“This token can’t discover accounts”
Load account & projects needs Account → Account Settings → Read as well. Add it, or enter the account ID and project name by hand.
“No Pages projects in this account yet”
Selfish deploys into a project that already exists. Create one at dash.cloudflare.com, then load the list again.
A file is too large
Cloudflare Pages refuses any single file over 25 MiB. Shorten or re-export the video or audio, or choose Standard quality when you add a video.
GitHub Pages
“Selfish can’t reach this repository yet”
You are signed in, but the repository isn’t one you gave Selfish. Choose Choose Repositories on GitHub, add it, and try again.
“Your GitHub sign-in has ended”
Sign in again in Site Settings → Publishing. It happens if you sign out on GitHub, or after a long time without publishing.
The token is invalid, or it can’t push
A token needs Contents: read and write, and it must be allowed on this repository. If you gave it an expiry date, it may have passed. Create a new one and paste it in.
Repository not found
Check the owner and repository names. A token that can’t see a repository reports it as missing rather than forbidden. Signed in, you are told instead that Selfish can’t reach the repository yet.
Published, but nothing is served
The commit landed but Pages is off, or pointed somewhere else. Signed in, Selfish turns Pages on for you at the next publish. With a token, open the repository’s Settings → Pages and choose the branch and folder you published to. A first build can take a minute. When you are signed in, Test Connection names this problem exactly.
The file tree is too large
Publishing into a subdirectory has to compare the whole repository, and GitHub won’t list a very large one in a single answer. Publish to a branch of its own, with no subdirectory.
A folder
“No folder chosen on this device”
A folder is chosen on each device. Choose it on this one in Site Settings → Publishing.
“Folder unavailable”
The folder was moved, renamed or deleted, or the drive it is on isn’t connected. Choose it again.