GitHub Pages and other hosts
GitHub Pages serves static files, not the optional Node editor. Build the reader with selected MarkStack source, then publish only its reviewed artifact through the chosen GitHub Pages workflow. Hosting a private source repository does not by itself make its website private.
Choose repository and path
| Site shape | Configured prefix |
|---|---|
| User, organization root | Empty path prefix |
| Project under repo name | Matching repository path |
| Root custom domain | Empty path prefix, configured final origin |
| Private project site | Observed unique address, access policy; recheck prefix |
Example project reader at https://example.github.io/field-guide:
{
"siteTitle": "Field Guide",
"headerTitle": "Field Guide",
"siteUrl": "https://example.github.io/field-guide",
"baseUrl": "/field-guide",
"showHero": false
}
This is illustrative config, not a verified live address. Merge intended fields into the selected full config, not a blind overwrite that loses policy/customization. Templates use baseUrl; authored Markdown URLs need /field-guide deliberately. Test images/search/deep reload at the actual prefix. A local root-only check is insufficient.
The pin’s 404 Return Home link is literal /. Verify it and other authored paths rather than claiming complete automatic subpath conversion. Metadata uses configured siteUrl, not the GitHub deployment URL automatically.
Publishing options
| Route | Contract |
|---|---|
| Branch root | Reviewed generated files at selected branch root |
Branch /docs |
Reviewed artifact at that selected folder |
| Actions | Build, upload, deploy complete reviewed artifact |
| External CI to branch | Reviewed rendered commit plus Pages deploy workflow |
GitHub’s current documentation recommends a custom Actions workflow for non-Jekyll generation. For branch publishing of prebuilt output, an empty .nojekyll at publishing root disables the default Jekyll build. Branch source folder is root or /docs, not an arbitrary presumed dist selector.
# In a disposable reviewed rendered-artifact root only.
touch .nojekyll
This creates a file; it does not push, enable Pages or deploy. Review the exact repository/branch/folder and final commit before sending to a production-connected source. Keep source/private runtime out of an artifact repository.
Branch setup sequence
- Prepare reviewed generated files with home
index.htmlat publishing root. - Confirm selected repository and existing publishing branch.
- In repository Pages settings, select branch publishing and intended branch/root or
/docs. - Inspect the triggered deployment/workflow status.
- Use the observed Visit site URL and test the complete reader.
The Pages site is deployed through an Actions workflow even with branch publishing. Current guidance says workflow commits using GITHUB_TOKEN do not trigger a Pages build. If an external CI process pushes output, review that trigger/identity behavior rather than assuming any commit fires the same deployment.
Repositories containing symbolic links require an Actions publishing workflow under current GitHub guidance. Do not use public output symlinks to reach private files. Copy/select intended artifact bytes and inspect their audience.
Actions build boundary
| Phase | Requirement |
|---|---|
| Checkout | Selected intended source revision |
| Node, install | Supported pin requirement and committed lockfile |
| Tests, build | Failure stops deployment |
| Artifact | Complete generated output, no private runtime |
| Deploy | Actual Pages environment, permissions, approval |
| Verify | Observed URL, status and current reader bytes |
Choose current supported official actions/permissions for your organization. This page does not invent an untested workflow version/policy or create one in your account. The key MarkStack commands are locked install, tests and build, with output dist unless explicitly selected otherwise. Reader hosting needs no editor/account process.
Public versus private reading
| Choice | Audience consequence |
|---|---|
| Ordinary Pages publish | Public internet, even with private repo when allowed |
| Enterprise private project | Eligible org project with repository-reader access |
| Organization site | Current private access-control option does not apply |
| External private host | Host gate must cover pages, index, assets |
noindex/hidden sidebar |
Not confidentiality controls |
Current GitHub private project publication requires GitHub Enterprise Cloud and eligible organization-owned private/internal project repositories. Enterprise Managed Users have additional enterprise-only policy. Verify your plan/org policy before relying on it; do not infer privacy from a repository lock icon.
Private Pages uses an observed unique subdomain, which may require changing build prefix. Custom domains remain a separate Pages settings/API operation; a repository CNAME file alone does not add/remove the domain. Record actual returned URL rather than deriving a guessed path from the repository name.
Host acceptance
| Target | Check |
|---|---|
| Entry | Current home content at actual URL |
| Deep route | Direct reload and directory index handling |
| Search | Current JSON and real heading, page target |
| Assets | CSS, scripts, fonts, notices and media |
| Missing path | Actual 404 status and intended page |
| Paths | Prefix, authored links and 404 home link |
| Audience | No source, accounts, runtime exposed |
| Browser | Both themes, phone, controls and new cache context |
Keep generated 404.html with the artifact and inspect real status, not a homepage fallback. A provider success or pushed commit is not reader acceptance. Retain prior reviewed artifact and supported rollback, then verify actual live result after any return.
Other static hosts
Apply the same artifact/audience/path/404/cache requirements. Use a host’s current official build/output/MIME/HTTPS rules. Cloudflare _redirects/_headers are not universal rule files; nginx, Caddy and Apache use their own configuration. Do not paste one format into another host and call it tested.
An already-rendered directory needs no npm build at the host. A source host needs selected Node/lockfile/config/build inputs but not production accounts in public output. Static deployment and Review and release supply release gates.
Official sources
Checked 12 October 2026; no GitHub Pages account or deployment changed: