2025-05-30 12:43:55 -06:00

2522 lines
50 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Defending democratic rights against UCP authoritarianism - Opposing Bill 54 and fighting for expanded democratic participation in Alberta">
<meta name="author" content="Alberta Democracy Taskforce">
<link rel="canonical" href="https://albertademocracytaskforce.org/cm-lite/services/static-server/">
<link rel="prev" href="../mkdocs/">
<link rel="next" href="../listmonk/">
<link rel="icon" href="../../../assets/images/adtf-logo.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.14">
<title>Static Server - Alberta Democracy Taskforce</title>
<link rel="stylesheet" href="../../../assets/stylesheets/main.342714a4.min.css">
<link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../../stylesheets/extra.css">
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<meta property="og:type" content="website" >
<meta property="og:title" content="Static Server - Alberta Democracy Taskforce" >
<meta property="og:description" content="Defending democratic rights against UCP authoritarianism - Opposing Bill 54 and fighting for expanded democratic participation in Alberta" >
<meta property="og:image" content="https://albertademocracytaskforce.org/assets/images/social/cm-lite/services/static-server.png" >
<meta property="og:image:type" content="image/png" >
<meta property="og:image:width" content="1200" >
<meta property="og:image:height" content="630" >
<meta property="og:url" content="https://albertademocracytaskforce.org/cm-lite/services/static-server/" >
<meta name="twitter:card" content="summary_large_image" >
<meta name="twitter:title" content="Static Server - Alberta Democracy Taskforce" >
<meta name="twitter:description" content="Defending democratic rights against UCP authoritarianism - Opposing Bill 54 and fighting for expanded democratic participation in Alberta" >
<meta name="twitter:image" content="https://albertademocracytaskforce.org/assets/images/social/cm-lite/services/static-server.png" >
</head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="deep-purple" data-md-color-accent="amber">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#static-site-server" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
<aside class="md-banner">
<div class="md-banner__inner md-grid md-typeset">
<a href="https://homepage.albertademocracytaskforce.org" class="login-button">Login</a>
- <a href="https://docs.bnkops.com">Changemaker-lite Docs</a>
</div>
</aside>
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../../.." title="Alberta Democracy Taskforce" class="md-header__button md-logo" aria-label="Alberta Democracy Taskforce" data-md-component="logo">
<img src="../../../assets/images/adtf-logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Alberta Democracy Taskforce
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Static Server
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../../.." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../../../vision/" class="md-tabs__link">
Vision
</a>
</li>
<li class="md-tabs__item">
<a href="../../../getting-started/" class="md-tabs__link">
Getting Started
</a>
</li>
<li class="md-tabs__item">
<a href="../../../bill-54-analysis/" class="md-tabs__link">
Bill 54 Analysis
</a>
</li>
<li class="md-tabs__item">
<a href="../../../resources/" class="md-tabs__link">
Resources
</a>
</li>
<li class="md-tabs__item">
<a href="../../../faq/" class="md-tabs__link">
FAQ
</a>
</li>
<li class="md-tabs__item">
<a href="../../../archive/" class="md-tabs__link">
Archive
</a>
</li>
<li class="md-tabs__item">
<a href="../../../blog/" class="md-tabs__link">
Democracy Blog
</a>
</li>
<li class="md-tabs__item">
<a href="../../../contributing/" class="md-tabs__link">
Contributing
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../../" class="md-tabs__link">
Changemaker Lite
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../.." title="Alberta Democracy Taskforce" class="md-nav__button md-logo" aria-label="Alberta Democracy Taskforce" data-md-component="logo">
<img src="../../../assets/images/adtf-logo.png" alt="logo">
</a>
Alberta Democracy Taskforce
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../.." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../vision/" class="md-nav__link">
<span class="md-ellipsis">
Vision
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../bill-54-analysis/" class="md-nav__link">
<span class="md-ellipsis">
Bill 54 Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../resources/" class="md-nav__link">
<span class="md-ellipsis">
Resources
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../faq/" class="md-nav__link">
<span class="md-ellipsis">
FAQ
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<div class="md-nav__link md-nav__container">
<a href="../../../archive/" class="md-nav__link ">
<span class="md-ellipsis">
Archive
</span>
</a>
<label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Archive
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_2" >
<label class="md-nav__link" for="__nav_7_2" id="__nav_7_2_label" tabindex="0">
<span class="md-ellipsis">
Bill 54 News Coverage
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_2">
<span class="md-nav__icon md-icon"></span>
Bill 54 News Coverage
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../archive/Alberta%20bill%20seeks%20to%20reintroduce%20union%2C%20corporate%20contributions%2C%20ban%20tabulators%20and%20lower%20recall%20threshold/" class="md-nav__link">
<span class="md-ellipsis">
Edmonton Journal
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../archive/Alberta%20overhauls%20election%20laws%20to%20allow%20corporate%20donations%2C%20change%20referendum%20thresholds%20%20CBC%20News/" class="md-nav__link">
<span class="md-ellipsis">
CBC News
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../archive/Albertas%20chief%20electoral%20officer%20warns%20UCP%20proposed%20bill%20will%20hurt%20investigations%20-%20Globalnews.ca/" class="md-nav__link">
<span class="md-ellipsis">
Global News
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../archive/Alberta%20Government%20tables%20changes%20to%20the%20election%20act/" class="md-nav__link">
<span class="md-ellipsis">
Alberta Government
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../archive/May%202024%20Alberta%20Municipalities%20said%20it%20hasnt%20been%20given%20chance%20to%20consult%20on%20changes%20to%20bill/" class="md-nav__link">
<span class="md-ellipsis">
May 2024 Municipal Consultation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_3" >
<label class="md-nav__link" for="__nav_7_3" id="__nav_7_3_label" tabindex="0">
<span class="md-ellipsis">
Expert Analysis
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_3">
<span class="md-nav__icon md-icon"></span>
Expert Analysis
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../archive/Smiths%20Electoral%20Reforms%20Are%20Straight%20from%20Trumps%20Playbook/" class="md-nav__link">
<span class="md-ellipsis">
The Tyee - Trump Playbook
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../archive/Why%20the%20UCP%20Is%20a%20Threat%20to%20Democracy/" class="md-nav__link">
<span class="md-ellipsis">
The Tyee - UCP Threat
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../archive/The%20Dangerous%20Americanization%20of%20Alberta%20Democracy/" class="md-nav__link">
<span class="md-ellipsis">
The Tyee - Americanization
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_4" >
<label class="md-nav__link" for="__nav_7_4" id="__nav_7_4_label" tabindex="0">
<span class="md-ellipsis">
Indigenous Opposition
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_4">
<span class="md-nav__icon md-icon"></span>
Indigenous Opposition
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../archive/Central%20Alberta%20First%20Nations%20slam%20Bill%2054/" class="md-nav__link">
<span class="md-ellipsis">
Treaty 6 Nations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../archive/Cold%20Lake%20First%20Nations%20opposes%20Albertas%20proposed%20Bill%2054/" class="md-nav__link">
<span class="md-ellipsis">
Cold Lake First Nations
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_5" >
<label class="md-nav__link" for="__nav_7_5" id="__nav_7_5_label" tabindex="0">
<span class="md-ellipsis">
Municipal Impact
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_5">
<span class="md-nav__icon md-icon"></span>
Municipal Impact
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../archive/The%20Alberta%20government%20banned%20electronic%20vote%20tabulators.%20Municipalities%20want%20it%20to%20reconsider%20%20CBC%20News/" class="md-nav__link">
<span class="md-ellipsis">
Tabulator Ban
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../archive/Alberta%20to%20make%20changes%20to%20bill%20proposing%20sweeping%20powers%20over%20municipalities%20%20%20Globalnews.ca/" class="md-nav__link">
<span class="md-ellipsis">
Municipal Powers
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_6" >
<label class="md-nav__link" for="__nav_7_6" id="__nav_7_6_label" tabindex="0">
<span class="md-ellipsis">
Government Sources
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_6">
<span class="md-nav__icon md-icon"></span>
Government Sources
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../archive/Strengthening%20democracy%20%20Renforcer%20la%20d%C3%A9mocratie/" class="md-nav__link">
<span class="md-ellipsis">
Official Release
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../archive/Improving%20consistency%20and%20fairness%20in%20Albertas%20democratic%20processes/" class="md-nav__link">
<span class="md-ellipsis">
Implementation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_7" >
<label class="md-nav__link" for="__nav_7_7" id="__nav_7_7_label" tabindex="0">
<span class="md-ellipsis">
Political Context
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_7">
<span class="md-nav__icon md-icon"></span>
Political Context
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../archive/Danielle%20Smith%20lowers%20bar%20for%20Alberta%20referendum%20with%20separatism%20sentiment%20emerging/" class="md-nav__link">
<span class="md-ellipsis">
Referendum Changes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../archive/Smith%20pushes%20Alberta%20Accord%20defends%20citizen%20referendums%20amid%20separation%20debate/" class="md-nav__link">
<span class="md-ellipsis">
Alberta Accord
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../blog/" class="md-nav__link">
<span class="md-ellipsis">
Democracy Blog
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
<div class="md-nav__link md-nav__container">
<a href="../../../contributing/" class="md-nav__link ">
<span class="md-ellipsis">
Contributing
</span>
</a>
<label class="md-nav__link " for="__nav_9" id="__nav_9_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
Contributing
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../contributing/getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Setup Account
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../contributing/navigating-gitea/" class="md-nav__link">
<span class="md-ellipsis">
Navigate Gitea
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../contributing/first-edit/" class="md-nav__link">
<span class="md-ellipsis">
First Edit
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../contributing/git-basics/" class="md-nav__link">
<span class="md-ellipsis">
Git Basics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../contributing/local-editing/" class="md-nav__link">
<span class="md-ellipsis">
Local Development
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../contributing/submitting-changes/" class="md-nav__link">
<span class="md-ellipsis">
Submit Changes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../contributing/collaboration/" class="md-nav__link">
<span class="md-ellipsis">
Collaboration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" checked>
<div class="md-nav__link md-nav__container">
<a href="../../" class="md-nav__link ">
<span class="md-ellipsis">
Changemaker Lite
</span>
</a>
<label class="md-nav__link " for="__nav_10" id="__nav_10_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
Changemaker Lite
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10_2" checked>
<div class="md-nav__link md-nav__container">
<a href="../" class="md-nav__link ">
<span class="md-ellipsis">
Services
</span>
</a>
<label class="md-nav__link " for="__nav_10_2" id="__nav_10_2_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_10_2_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_10_2">
<span class="md-nav__icon md-icon"></span>
Services
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../homepage/" class="md-nav__link">
<span class="md-ellipsis">
Homepage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../code-server/" class="md-nav__link">
<span class="md-ellipsis">
Code Server
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../mkdocs/" class="md-nav__link">
<span class="md-ellipsis">
MkDocs
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Static Server
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Static Server
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#overview" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#features" class="md-nav__link">
<span class="md-ellipsis">
Features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#access" class="md-nav__link">
<span class="md-ellipsis">
Access
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configuration" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
<nav class="md-nav" aria-label="Configuration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#environment-variables" class="md-nav__link">
<span class="md-ellipsis">
Environment Variables
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#volumes" class="md-nav__link">
<span class="md-ellipsis">
Volumes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#usage" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#file-structure" class="md-nav__link">
<span class="md-ellipsis">
File Structure
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#performance-features" class="md-nav__link">
<span class="md-ellipsis">
Performance Features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#custom-configuration" class="md-nav__link">
<span class="md-ellipsis">
Custom Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#monitoring" class="md-nav__link">
<span class="md-ellipsis">
Monitoring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
Troubleshooting
</span>
</a>
<nav class="md-nav" aria-label="Troubleshooting">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#common-issues" class="md-nav__link">
<span class="md-ellipsis">
Common Issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#debugging" class="md-nav__link">
<span class="md-ellipsis">
Debugging
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#official-documentation" class="md-nav__link">
<span class="md-ellipsis">
Official Documentation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../listmonk/" class="md-nav__link">
<span class="md-ellipsis">
Listmonk
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../postgresql/" class="md-nav__link">
<span class="md-ellipsis">
PostgreSQL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../n8n/" class="md-nav__link">
<span class="md-ellipsis">
n8n
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nocodb/" class="md-nav__link">
<span class="md-ellipsis">
NocoDB
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#overview" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#features" class="md-nav__link">
<span class="md-ellipsis">
Features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#access" class="md-nav__link">
<span class="md-ellipsis">
Access
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#configuration" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
<nav class="md-nav" aria-label="Configuration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#environment-variables" class="md-nav__link">
<span class="md-ellipsis">
Environment Variables
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#volumes" class="md-nav__link">
<span class="md-ellipsis">
Volumes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#usage" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#file-structure" class="md-nav__link">
<span class="md-ellipsis">
File Structure
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#performance-features" class="md-nav__link">
<span class="md-ellipsis">
Performance Features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#custom-configuration" class="md-nav__link">
<span class="md-ellipsis">
Custom Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#monitoring" class="md-nav__link">
<span class="md-ellipsis">
Monitoring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
Troubleshooting
</span>
</a>
<nav class="md-nav" aria-label="Troubleshooting">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#common-issues" class="md-nav__link">
<span class="md-ellipsis">
Common Issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#debugging" class="md-nav__link">
<span class="md-ellipsis">
Debugging
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#official-documentation" class="md-nav__link">
<span class="md-ellipsis">
Official Documentation
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="static-site-server">Static Site Server<a class="headerlink" href="#static-site-server" title="Permanent link">&para;</a></h1>
<p>Nginx-powered static site server for hosting built documentation and websites.</p>
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link">&para;</a></h2>
<p>The Static Site Server uses Nginx to serve your built documentation and static websites. It's configured to serve the built MkDocs site and other static content with high performance and reliability.</p>
<h2 id="features">Features<a class="headerlink" href="#features" title="Permanent link">&para;</a></h2>
<ul>
<li>High-performance static file serving</li>
<li>Automatic index file handling</li>
<li>Gzip compression</li>
<li>Caching headers</li>
<li>Security headers</li>
<li>Custom error pages</li>
<li>URL rewriting support</li>
</ul>
<h2 id="access">Access<a class="headerlink" href="#access" title="Permanent link">&para;</a></h2>
<ul>
<li><strong>Default Port</strong>: 4001</li>
<li><strong>URL</strong>: <code>http://localhost:4001</code></li>
<li><strong>Document Root</strong>: <code>/config/www</code> (mounted from <code>./mkdocs/site</code>)</li>
</ul>
<h2 id="configuration">Configuration<a class="headerlink" href="#configuration" title="Permanent link">&para;</a></h2>
<h3 id="environment-variables">Environment Variables<a class="headerlink" href="#environment-variables" title="Permanent link">&para;</a></h3>
<ul>
<li><code>PUID</code>: User ID for file permissions (default: 1000)</li>
<li><code>PGID</code>: Group ID for file permissions (default: 1000)</li>
<li><code>TZ</code>: Timezone setting (default: Etc/UTC)</li>
</ul>
<h3 id="volumes">Volumes<a class="headerlink" href="#volumes" title="Permanent link">&para;</a></h3>
<ul>
<li><code>./mkdocs/site:/config/www</code>: Static site files</li>
<li>Built MkDocs site is automatically served</li>
</ul>
<h2 id="usage">Usage<a class="headerlink" href="#usage" title="Permanent link">&para;</a></h2>
<ol>
<li>Build your MkDocs site: <code>docker exec mkdocs-changemaker mkdocs build</code></li>
<li>The built site is automatically available at <code>http://localhost:4001</code></li>
<li>Any files in <code>./mkdocs/site/</code> will be served statically</li>
</ol>
<h2 id="file-structure">File Structure<a class="headerlink" href="#file-structure" title="Permanent link">&para;</a></h2>
<div class="language-text highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>mkdocs/site/ # Served at /
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>├── index.html # Homepage
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>├── assets/ # CSS, JS, images
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>├── services/ # Service documentation
</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a>└── search/ # Search functionality
</span></code></pre></div>
<h2 id="performance-features">Performance Features<a class="headerlink" href="#performance-features" title="Permanent link">&para;</a></h2>
<ul>
<li><strong>Gzip Compression</strong>: Automatic compression for text files</li>
<li><strong>Browser Caching</strong>: Optimized cache headers</li>
<li><strong>Fast Static Serving</strong>: Nginx optimized for static content</li>
<li><strong>Security Headers</strong>: Basic security header configuration</li>
</ul>
<h2 id="custom-configuration">Custom Configuration<a class="headerlink" href="#custom-configuration" title="Permanent link">&para;</a></h2>
<p>For advanced Nginx configuration, you can:
1. Create custom Nginx config files
2. Mount them as volumes
3. Restart the container</p>
<h2 id="monitoring">Monitoring<a class="headerlink" href="#monitoring" title="Permanent link">&para;</a></h2>
<p>Monitor the static site server through:
- Container logs: <code>docker logs mkdocs-site-server-changemaker</code>
- Access logs for traffic analysis
- Performance metrics</p>
<h2 id="troubleshooting">Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permanent link">&para;</a></h2>
<h3 id="common-issues">Common Issues<a class="headerlink" href="#common-issues" title="Permanent link">&para;</a></h3>
<ul>
<li><strong>404 Errors</strong>: Ensure MkDocs site is built and files exist in <code>./mkdocs/site/</code></li>
<li><strong>Permission Issues</strong>: Check <code>PUID</code> and <code>PGID</code> settings</li>
<li><strong>File Not Found</strong>: Verify file paths and case sensitivity</li>
</ul>
<h3 id="debugging">Debugging<a class="headerlink" href="#debugging" title="Permanent link">&para;</a></h3>
<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="c1"># Check container logs</span>
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>docker<span class="w"> </span>logs<span class="w"> </span>mkdocs-site-server-changemaker
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="c1"># Verify files are present</span>
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>mkdocs-site-server-changemaker<span class="w"> </span>ls<span class="w"> </span>-la<span class="w"> </span>/config/www
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a>
</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="c1"># Test file serving</span>
</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a>curl<span class="w"> </span>-I<span class="w"> </span>http://localhost:4001
</span></code></pre></div>
<h2 id="official-documentation">Official Documentation<a class="headerlink" href="#official-documentation" title="Permanent link">&para;</a></h2>
<p>For more information about the underlying Nginx server:
- <a href="https://docs.linuxserver.io/images/docker-nginx">LinuxServer.io Nginx</a>
- <a href="https://nginx.org/en/docs/">Nginx Documentation</a></p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<!-- Custom unified footer -->
<footer class="md-footer">
<div class="md-footer__unified">
<div class="md-footer__inner md-grid">
<div class="footer-content">
<!-- Previous page link -->
<div class="footer-nav-links footer-nav-prev">
<a href="../mkdocs/" class="md-footer__link" rel="prev">
<span class="nav-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg></span>
<span class="nav-label">MkDocs</span>
</a>
</div>
<!-- Subscribe section inline -->
<div class="footer-center">
<div class="footer-subscribe-inline">
<div class="subscribe-row-inline">
<div class="subscribe-logo-container">
<img src="/assets/images/adtf-logo.png" alt="Alberta Democracy Task Force" class="subscribe-logo-small" />
</div>
<form method="post" action="https://listmonk.albertademocracytaskforce.org/subscription/form" class="listmonk-form-inline">
<div class="inline-form-container">
<input type="hidden" name="nonce" />
<input type="email" name="email" required placeholder="Enter your email" class="email-input-inline" />
<input id="d9fba-inline" type="checkbox" name="l" checked value="d9fba28f-bbfc-46b6-bfac-4bacb81bc094" hidden />
<input type="submit" value="Subscribe" class="subscribe-btn-inline" />
</div>
</form>
</div>
</div>
<div class="md-copyright">
</div>
</div>
<!-- Next page link -->
<div class="footer-nav-links footer-nav-next">
<a href="../listmonk/" class="md-footer__link" rel="next">
<span class="nav-label">Listmonk</span>
<span class="nav-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg></span>
</a>
</div>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.tracking", "navigation.indexes", "navigation.collapse", "navigation.path", "content.code.copy", "navigation.top", "navigation.tabs", "navigation.footer"], "search": "../../../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../../../assets/javascripts/bundle.13a4f30d.min.js"></script>
</body>
</html>