diff --git a/docs/Gemfile b/docs/Gemfile
new file mode 100644
index 000000000..0805eafbe
--- /dev/null
+++ b/docs/Gemfile
@@ -0,0 +1,29 @@
+source "https://rubygems.org"
+# Hello! This is where you manage which Jekyll version is used to run.
+# When you want to use a different version, change it below, save the
+# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
+#
+# bundle exec jekyll serve
+#
+# This will help ensure the proper Jekyll version is running.
+# Happy Jekylling!
+gem "jekyll", "~> 4.2.1"
+# This is the default theme for new Jekyll sites. You may change this to anything you like.
+gem "minima", "~> 2.5"
+# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
+# uncomment the line below. To upgrade, run `bundle update github-pages`.
+# gem "github-pages", group: :jekyll_plugins
+# If you have any plugins, put them here!
+group :jekyll_plugins do
+ gem "jekyll-feed", "~> 0.12"
+end
+
+# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
+# and associated library.
+platforms :mingw, :x64_mingw, :mswin, :jruby do
+ gem "tzinfo", "~> 1.2"
+ gem "tzinfo-data"
+end
+
+# Performance-booster for watching directories on Windows
+gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
new file mode 100644
index 000000000..0a5e4d664
--- /dev/null
+++ b/docs/Gemfile.lock
@@ -0,0 +1,80 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ addressable (2.8.0)
+ public_suffix (>= 2.0.2, < 5.0)
+ colorator (1.1.0)
+ concurrent-ruby (1.1.9)
+ em-websocket (0.5.2)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0.6.0)
+ eventmachine (1.2.7)
+ ffi (1.15.4)
+ forwardable-extended (2.6.0)
+ http_parser.rb (0.6.0)
+ i18n (1.8.10)
+ concurrent-ruby (~> 1.0)
+ jekyll (4.2.1)
+ addressable (~> 2.4)
+ colorator (~> 1.0)
+ em-websocket (~> 0.5)
+ i18n (~> 1.0)
+ jekyll-sass-converter (~> 2.0)
+ jekyll-watch (~> 2.0)
+ kramdown (~> 2.3)
+ kramdown-parser-gfm (~> 1.0)
+ liquid (~> 4.0)
+ mercenary (~> 0.4.0)
+ pathutil (~> 0.9)
+ rouge (~> 3.0)
+ safe_yaml (~> 1.0)
+ terminal-table (~> 2.0)
+ jekyll-feed (0.15.1)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-sass-converter (2.1.0)
+ sassc (> 2.0.1, < 3.0)
+ jekyll-seo-tag (2.7.1)
+ jekyll (>= 3.8, < 5.0)
+ jekyll-watch (2.2.1)
+ listen (~> 3.0)
+ kramdown (2.3.1)
+ rexml
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ liquid (4.0.3)
+ listen (3.7.0)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ mercenary (0.4.0)
+ minima (2.5.1)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-feed (~> 0.9)
+ jekyll-seo-tag (~> 2.1)
+ pathutil (0.16.2)
+ forwardable-extended (~> 2.6)
+ public_suffix (4.0.6)
+ rb-fsevent (0.11.0)
+ rb-inotify (0.10.1)
+ ffi (~> 1.0)
+ rexml (3.2.5)
+ rouge (3.26.1)
+ safe_yaml (1.0.5)
+ sassc (2.4.0)
+ ffi (~> 1.9)
+ terminal-table (2.0.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ unicode-display_width (1.8.0)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ jekyll (~> 4.2.1)
+ jekyll-feed (~> 0.12)
+ minima (~> 2.5)
+ tzinfo (~> 1.2)
+ tzinfo-data
+ wdm (~> 0.1.1)
+
+BUNDLED WITH
+ 2.1.4
diff --git a/docs/_config.yml b/docs/_config.yml
new file mode 100644
index 000000000..a55ef9de1
--- /dev/null
+++ b/docs/_config.yml
@@ -0,0 +1,54 @@
+# Welcome to Jekyll!
+#
+# This config file is meant for settings that affect your whole blog, values
+# which you are expected to set up once and rarely edit after that. If you find
+# yourself editing this file very often, consider using Jekyll's data files
+# feature for the data you need to update frequently.
+#
+# For technical reasons, this file is *NOT* reloaded automatically when you use
+# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
+#
+# If you need help with YAML syntax, here are some quick references for you:
+# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
+# https://learnxinyminutes.com/docs/yaml/
+#
+# Site settings
+# These are used to personalize your new site. If you look in the HTML files,
+# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
+# You can create any custom variable you would like, and they will be accessible
+# in the templates via {{ site.myvariable }}.
+
+title: Firezone Documentation
+email: feedback-docs@firez.one
+description: >- # this means to ignore newlines until "baseurl:"
+ Firezone Reference Documentation.
+ Open-source, WireGuard-based VPN server and firewall for Linux.
+baseurl: "" # the subpath of your site, e.g. /blog
+url: "https://docs.firez.one" # the base hostname & protocol for your site, e.g. http://example.com
+twitter_username: firezonevpn
+github_username: firezone
+
+# Build settings
+theme: minima
+plugins:
+ - jekyll-feed
+
+# Exclude from processing.
+# The following items will not be processed, by default.
+# Any item listed under the `exclude:` key here will be automatically added to
+# the internal "default list".
+#
+# Excluded items can be processed by explicitly listing the directories or
+# their entries' file path in the `include:` list.
+#
+# exclude:
+# - .sass-cache/
+# - .jekyll-cache/
+# - gemfiles/
+# - Gemfile
+# - Gemfile.lock
+# - node_modules/
+# - vendor/bundle/
+# - vendor/cache/
+# - vendor/gems/
+# - vendor/ruby/
diff --git a/docs/css/style.css b/docs/css/style.css
deleted file mode 100644
index 02f4f4375..000000000
--- a/docs/css/style.css
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * cf-green: 6ece00;
- * cf-blue: 006ece;
- * cf-purple: 6000ce;
- * cf-orange: ce6000;
- * cf-yellow: cec700;
- * cf-red: ce0006;
- */
-a {
- text-decoration: none;
- color: white;
-}
-a:visited {
- text-decoration: none;
- color: white;
-}
-
-img.logo {
- position: fixed;
- left: 2ch;
- width: 5ch;
- height: 5ch;
-}
-
-nav {
- margin: auto;
- padding-top: 0;
- height: 6ch;
-}
-
-ul.nav-links {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- max-width: 70ch;
- list-style-type: none;
- margin: 0 auto;
- padding: 0;
- justify-content: space-between;
-}
-
-ul.nav-links li a {
- display: block;
- padding: 2ch 0;
-}
-
-body {
- background-color: #006ece;
- margin: 0;
- padding: 0;
-}
-
-main {
- margin: 0;
- padding: 0;
- width: 100%;
-}
-
-main section {
- background-color: white;
-}
-div.content {
- max-width: 70ch;
- padding: 2ch;
- margin: auto;
-}
-
-footer {
- color: white;
- margin: auto;
- padding-top: 0;
- height: 6ch;
- height:
-}
-
-footer div {
- margin: 0 auto;
- padding: 2ch 0;
- max-width: 70ch;
-}
diff --git a/docs/img/logo.svg b/docs/img/logo.svg
deleted file mode 100644
index 23551001d..000000000
--- a/docs/img/logo.svg
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
diff --git a/docs/index.html b/docs/index.html
deleted file mode 100644
index afbfad535..000000000
--- a/docs/index.html
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
- Firezone: Firewall + Web Gui for WireGuard
-
-
-
-
-
-
-
-
-
-
-
Firezone
-
-
-
Introduction
-
-
-
Installation
-
-
-
Usage
-
-
-
Contributing
-
-
-
-
-
-
diff --git a/docs/index.markdown b/docs/index.markdown
new file mode 100644
index 000000000..37e799728
--- /dev/null
+++ b/docs/index.markdown
@@ -0,0 +1,10 @@
+---
+# Feel free to add content and custom Front Matter to this file.
+# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
+
+layout: home
+---
+
+Firezone Documentation
+
+WIP