Configuration
OwnShip is configured via a plain _site.ini file that lives next to index.php. Every line is optional — sensible defaults apply if a line is absent, or if the file is absent entirely.
Comments start with a semicolon (;) — either on their own line or after a value. A # works only at the start of a line; an inline # is not a comment and becomes part of the value, so use ; for notes after a value.
; _site.ini
title = My Site
theme = light ; light | dark | sepia | or any _theme-NAME.css name
clean_urls = false ; true needs .htaccess on Apache
show_theme_button = true ; show/hide the theme cycle button
show_stock_themes = true ; false = suppress light/dark/sepia (drop-ins only)
show_search = true ; show/hide the 🔍 search button
logo_height = 32 ; header image height in px
content_width = 0 ; max content width in px (0 = no limit)
password = ; shared password (blank = no gate)
nav_style = left ; left | right | none
og_description = ; description for search results & social cards
og_image = ; social preview image (path or URL)
Options
title — Site name shown in the header and browser tab. If omitted, OwnShip uses the first # H1 heading in your index.md home page. If neither is present, falls back to My Site.
theme — Starting theme. Accepts light, dark, sepia, or the name of any _theme-NAME.css drop-in placed alongside index.php. Readers can cycle through all available themes and their preference is saved locally. Default: light. See Custom Themes.
clean_urls — When true, pages serve as /my-page instead of ?page=my-page. Requires an .htaccess file on Apache — see Clean URLs. Default: false.
show_theme_button — Controls visibility of the theme cycle button in the header. Also hides automatically when only one theme is available. Default: true.
show_stock_themes — When false, suppresses the three built-in themes (Light, Dark, Sepia) and shows only _theme-NAME.css drop-ins in the cycle. Has no effect if no drop-ins are present. Default: true. See Custom Themes.
show_search — Controls visibility of the 🔍 search button in the nav pane. When enabled, readers can search page titles and content, and the nav tree narrows to the matches. Set to false for single-page or business-card sites where search adds no value. Default: true. See Search.
logo_height — Height in pixels of an image used in _header.md or _header.html. Default: 32.
content_width — Maximum width of the content area in pixels. Useful for narrower layouts like business-card sites, or wider layouts for documentation. 0 means no limit — content stretches to fill the available pane. Default: 0.
password — A shared password that must be entered before the site is accessible. Visitors see a simple sign-in form; a correct entry starts an authenticated session that lasts for the browser session. Accepts a bcrypt or Argon2 hash as well as plain text. Omit or leave blank to disable. See Keeping a Site Private for what the gate does and doesn't protect.
nav_style — Controls the navigation pane position. left (default) places it on the left; right places it on the right; none removes it entirely. Use none for business-card or single-topic sites where you supply your own navigation via _header.md. When none is set and content_width is also set, OwnShip automatically applies the same width constraint to the header.
og_description — A short site description used for the <meta name="description"> tag and for Open Graph / Twitter social cards. OwnShip auto-generates a per-page description from each page's first paragraph; og_description is the fallback for pages without one (and for the home page when it has no intro text). Keep it under ~155 characters. Default: none.
og_image — A preview image shown when a page is shared on social platforms or chat apps. Give a path relative to index.php (e.g. _assets/card.png) or a full https:// URL. Applies site-wide. Default: none — cards render without an image.
For deeper color control — overriding heading colors, link colors, or any part of the built-in palette — see Custom Themes.
Setting a password, and keeping _site.ini itself off the web, are covered in Keeping a Site Private.