Repository navigation
Publish a Public Website
One setting turns a space into a read-only website for people without an account. It is the same space, not a copy: edit a page and the site shows the change. Typical uses: a docs portal built from a repository's docs/ folder, a public handbook, a changelog.
- A space or instance administrator opens the space menu and chooses Publish as website.
- Set who can read the space to public.
- Choose the address, whether to allow downloads, and whether visitors may ask Folio AI.
- Check the tree: a page restriction is not inherited by child pages, so lock every page that must stay closed.
Moving the space back to instance or private takes the site down within seconds, and the settings are kept for next time. The decisions (who sees the site, addresses, downloads, Folio AI, indexing, primary address) live in the database, not in Git, and can be changed only from the browser, not with an API token.
| Address | When it works |
|---|---|
https://wiki.example.com/public/<space> |
Always, as soon as the space is public |
https://<label>.sites.example.com |
The operator sets PUBLIC_SITES_DOMAIN and wildcard DNS, a wildcard certificate and proxy routing; the space admin picks the label |
https://docs.example.com |
A custom domain: a CNAME to your Folio host, plus proxy routing and a certificate for it |
The proxy must keep the original Host header and pass WebSocket connections on /collab, or tables on the site will not update live. Behind a proxy set TRUST_PROXY=true so rate limits count per visitor. Operator steps: INSTALL.md, Public sites.
The page tree, breadcrumbs, search inside the space, documents, data tables (live, read-only), boards as pictures, forms (view only), PDF and Office files, and a layout for phones. Downloads as Markdown, PDF or DOCX, and Ask Folio AI, are switched on per space. Ask runs in Ask mode only, from the public pages of that one space, on the key of the space, then the instance, then CURSOR_API_KEY; whoever owns the key pays. Questions are rate limited per address and per site.
Never published: pages with their own access restrictions, the .agent folder and templates.
Space menu, Site & PDF settings... edits the site title, tagline, description, language, favicon, logo, social image, the site stylesheet and the PDF header, footer and print styles. They are files in a .folio/ folder in the repository (site.json, site.css, export.css, pdf-header.html, pdf-footer.html, assets/), one commit per save, so you can edit them in Git too.
Each page gets its own <head> (title, description, Open Graph, canonical link), and the site answers robots.txt and sitemap.xml per host. Set unlisted: true in a page's front matter to keep it out of the sitemap, or switch Allow search engines to index this site off. Page SEO fields (description, image, unlisted) are front matter keys edited by hand.
- Read-only and anonymous: no comments, history, backlinks, notifications, graph or timer; a form can be viewed but not submitted; bases show a note.
-
site.csscannot load external fonts or images (put files in.folio/assets/, 1 MB each, 5 MB total) and allows no JavaScript or analytics snippets. The "Powered by Folio" footer cannot be changed. - Rate limits live in one server process; public reads have no per-address limit, so rate-limit in the proxy or a CDN if traffic is large.
- Ask Folio AI shows the space's
.agentrules in paraphrase on request: keep secrets out of them. - A reader on a subdomain or custom domain stays anonymous even if signed in on the main address.
- The public demo publishes the Folio Handbook at demo.foliowiki.online/public/folio-handbook and is never indexed.
Blog: publish a wiki space as a public website · Video · Docs as Code · Sharing and Permissions · Install
Website · Live demo · Install · Docs · Repository · Discussions · Changelog · MIT license
Start
Move to Folio
- Migrate from Confluence
- Migrate from Notion
- Migrate from Obsidian
- Make Obsidian Multiplayer
- Docs as Code
Use
AI and agents
Admin