diff --git a/Makefile b/Makefile
index a0426b15522f9ce83bc248316ba878ddf89634bb..ef1e7887fb0b03ee09dc3f6a13f4a77514110311 100644
--- a/Makefile
+++ b/Makefile
@@ -4,8 +4,11 @@ all: output
 
 DOC_OUTPUT = doc.rendered
 
+OUTPUT_FLAGS = --path-base /code/muppet-strings/output \
+			   --env ~/puppet/generated-environments/test/modules/
+
 output:
-	python -m muppet --env ~/puppet/generated-environments/test/modules/
+	python -m muppet  $(OUTPUT_FLAGS)
 
 check:
 	flake8 muppet
diff --git a/muppet/__main__.py b/muppet/__main__.py
index 6ca607322a2750462b7ef13211ac9bb44eba9c5d..65ba1aef89cc95da33bf11b3d7ae6ccc82781918 100644
--- a/muppet/__main__.py
+++ b/muppet/__main__.py
@@ -13,9 +13,15 @@ def __main() -> None:
             prog='puppet-doc configure',
             description='Sets up puppet doc')
 
-    parser.add_argument('--env', action='store', help='''
+    parser.add_argument('--env', action='store', default='/etc/puppetlabs/code/modules',
+                        help='''
                         Path to a puppet `modules` directory.
                         ''')
+    # If deploying to http://example.com/~user/muppet then this should
+    # be set to `~/user/muppet`
+    parser.add_argument('--path-base', action='store', default='', help='''
+                        Prefix to web path the pages will be displayed under.
+                        ''')
     parser.add_argument('modules', nargs='*', type=pathlib.Path, help='''
                         Any number of specific modules to generate documentation for.
                         Mutually exclusive with --env.
@@ -23,7 +29,7 @@ def __main() -> None:
 
     args = parser.parse_args()
 
-    env = args.env or '/etc/puppetlabs/code/modules'
+    env = args.env
 
     cache = Cache('/home/hugo/.cache/puppet-doc')
 
@@ -34,11 +40,11 @@ def __main() -> None:
     else:
         modules = get_modules(cache, env)
 
-    setup_index('output', modules)
+    setup_index('output', modules, path_base=args.path_base)
 
     for module in modules:
         # print(module)
-        setup_module('output', module)
+        setup_module('output', module, path_base=args.path_base)
 
 
 if __name__ == '__main__':
diff --git a/muppet/output.py b/muppet/output.py
index e5dca8c1cafd3460f702c6a1cb1e2a2b23b127e0..59dc6a11399541b81d4a0caebe6893cd091b2066 100644
--- a/muppet/output.py
+++ b/muppet/output.py
@@ -38,11 +38,12 @@ jinja = Environment(
 )
 
 
-def setup_index(base: str, modules: list[ModuleEntry]) -> None:
+def setup_index(base: str, modules: list[ModuleEntry], *, path_base: str) -> None:
     """Create the main index.html file."""
     template = jinja.get_template('index.html')
     with open(os.path.join(base, 'index.html'), 'w') as f:
-        f.write(template.render(modules=modules))
+        f.write(template.render(modules=modules,
+                                path_base=path_base))
 
 
 class IndexItem(TypedDict):
@@ -183,7 +184,10 @@ def type_aliases_index(alias_list: list) -> IndexCategory:
 #     return {}
 
 
-def setup_module_index(base: str, module: ModuleEntry, data: dict[str, Any]) -> None:
+def setup_module_index(base: str,
+                       module: ModuleEntry,
+                       data: dict[str, Any],
+                       path_base: str) -> None:
     """Create the index file for a specific module."""
     template = jinja.get_template('module_index.html')
 
@@ -205,10 +209,11 @@ def setup_module_index(base: str, module: ModuleEntry, data: dict[str, Any]) ->
 
     with open(os.path.join(base, 'index.html'), 'w') as f:
         f.write(template.render(module_name=module.name,
-                                content=content))
+                                content=content,
+                                path_base=path_base))
 
 
-def setup_module(base: str, module: ModuleEntry) -> None:
+def setup_module(base: str, module: ModuleEntry, *, path_base: str) -> None:
     """
     Create all output files for a puppet module.
 
@@ -220,7 +225,7 @@ def setup_module(base: str, module: ModuleEntry) -> None:
         return
     data = json.loads(module.strings_output)
 
-    setup_module_index(path, module, data)
+    setup_module_index(path, module, data, path_base=path_base)
 
     for puppet_class in data['puppet_classes'] + data['defined_types']:
         # localpath = puppet_class['name'].split('::')
@@ -243,7 +248,8 @@ def setup_module(base: str, module: ModuleEntry) -> None:
 
         with open(os.path.join(dir, 'index.html'), 'w') as f:
             template = jinja.get_template('code_page.html')
-            f.write(template.render(content=format_class(puppet_class)))
+            f.write(template.render(content=format_class(puppet_class),
+                                    path_base=path_base))
 
         # puppet_class['file']
         # puppet_class['line']
@@ -261,7 +267,8 @@ def setup_module(base: str, module: ModuleEntry) -> None:
 
         template = jinja.get_template('code_page.html')
         with open(os.path.join(dir, 'index.html'), 'w') as f:
-            f.write(template.render(content=format_type_alias(type_alias)))
+            f.write(template.render(content=format_type_alias(type_alias),
+                                    path_base=path_base))
 
     os.system("cp -r static output")
 
diff --git a/templates/base.html b/templates/base.html
index e29d88eec1e5f37fa68e6e4dbe068bf793d6119b..c4351755afe6cbce3b23a25cf744b945892446f4 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -3,10 +3,10 @@
 	<head>
 		<meta charset="UTF-8">
 		<meta name="viewport" content="width=device-width, initial-scale=1.0">
-		<link type="text/css" rel="stylesheet" href="/static/style.css"/>
-		<link type="text/css" rel="stylesheet" href="/static/highlight.css"/>
-		<link type="text/css" rel="stylesheet" href="/static/style2.css"/>
-		<script src="tabs.js"></script>
+		<link type="text/css" rel="stylesheet" href="{{ path_base }}/static/style.css"/>
+		<link type="text/css" rel="stylesheet" href="{{ path_base }}/static/highlight.css"/>
+		<link type="text/css" rel="stylesheet" href="{{ path_base }}/static/style2.css"/>
+		<script src="{{ path_base }}/tabs.js"></script>
 		<noscript>
 			<style>
 .noscript {
diff --git a/templates/index.html b/templates/index.html
index 241a8d1972a24cc694c0e68a3d44c95eef030c05..f1cd34284027f1a64ba6767b978d5824abf277ce 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -1,19 +1,5 @@
-<!doctype html>
-<html>
-<head>
-	<meta charset="UTF-8"/>
-	<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-	<title></title>
-	<!--
-	<link type="text/css" rel="stylesheet" href="style.css"/>
-	-->
-<style>
-.error {
-	background-color: red;
-}
-</style>
-</head>
-<body>
+{% extends "base.html" %}
+{% block content %}
 	<h1>Muppet Strings</h1>
 	<ul>
 		{% for module in modules %}
@@ -30,6 +16,5 @@
 		</li>
 		{% endfor %}
 	</ul>
-</body>
-</html>
-
+{% endblock %}
+{# ft: jinja #}