Episode 4 · Publish, deploy, and check
The article is written; now it goes online. Two different actions are involved: publishing decides whether a piece may be public, and deploying ships everything that is public and committed to your site. Keeping them apart means you always know exactly what will appear online.
1. Publish: decide it is public
- Desktop: open the article and click the gear next to FILES. Write an Excerpt on the Overview page first; it appears in listings, search results, and the metadata AI reads. Then go to Visibility and switch from Private to Public.
- CLI:
silan blog publish gem-bench-acceptedOther kinds of content use silan site publish <uri>. Publishing only changes visibility in the source files; the site does not change yet.
2. Commit
A deploy only carries committed content. Each list in the desktop app (Moments, Blog, and so on) has Commit at the bottom right; when there are uncommitted changes, one click commits them with a generated message, and Version next to it shows the history. If you prefer the terminal, git commit inside content/ does the same.
3. First time online: configure deployment
Uncomment [deploy] in silan-viking.toml and fill in your server:
[deploy]
mode = "nginx"
host = "example.com"
user = "deploy"
ssh_key_path = "~/.ssh/silan_deploy_ed25519" # a path only, never the key itself
remote_dir = "/www/wwwroot/example.com"
public_url = "https://example.com"The first deploy installs the site services on the server. Read the plan first, then run it:
silan site deploy --dry-run
silan site deploy --confirm4. Everyday updates: deploy content
After that, each content update leaves the services alone:
- Desktop: the dashboard's Needs attention card shows how many changes are waiting. Click Deploy N and confirm "Deploy content to production?".
- CLI:
silan site update-content --dry-run
silan site update-content --confirmThe server works through receiving → validated → promoting → verifying → rendering → complete: it checks the content bundle, updates the database and media, and regenerates pages, sitemap, RSS, and llms.txt. If any step fails it stops at failed and the live site keeps the previous version, so you never end up half old and half new.
5. Check the live version
After a deploy, the Needs attention card lists a Local and a Deployed version. When they match, the card shows 0 and "Local and deployed content match": what is live is what you reviewed.
If another computer has already deployed something newer, the card shows Pull N. Sync first, then keep writing.
Optional: local preview
With Docker installed you can look at the result on your own machine first:
silan site preview
silan site preview --confirmThe first command only prints the plan; the second starts the stack. Then open http://localhost:8080. The preview is disposable and never touches the live site.
Checkpoint
- the article is Public and committed;
- the deploy succeeded and Local matches Deployed;
- the article shows up on your site.
The next episode brings in an AI assistant.
No comments yet

