diff --git a/docs/Gemfile b/docs/Gemfile
index 0805eafbe..d131b5981 100644
--- a/docs/Gemfile
+++ b/docs/Gemfile
@@ -9,7 +9,7 @@ source "https://rubygems.org"
# 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"
+gem "just-the-docs"
# 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
@@ -27,3 +27,4 @@ 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
index 0a5e4d664..f50d59a0e 100644
--- a/docs/Gemfile.lock
+++ b/docs/Gemfile.lock
@@ -5,14 +5,14 @@ GEM
public_suffix (>= 2.0.2, < 5.0)
colorator (1.1.0)
concurrent-ruby (1.1.9)
- em-websocket (0.5.2)
+ em-websocket (0.5.3)
eventmachine (>= 0.12.9)
- http_parser.rb (~> 0.6.0)
+ http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.15.4)
forwardable-extended (2.6.0)
- http_parser.rb (0.6.0)
- i18n (1.8.10)
+ http_parser.rb (0.8.0)
+ i18n (1.8.11)
concurrent-ruby (~> 1.0)
jekyll (4.2.1)
addressable (~> 2.4)
@@ -37,6 +37,10 @@ GEM
jekyll (>= 3.8, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
+ just-the-docs (0.3.3)
+ jekyll (>= 3.8.5)
+ jekyll-seo-tag (~> 2.0)
+ rake (>= 12.3.1, < 13.1.0)
kramdown (2.3.1)
rexml
kramdown-parser-gfm (1.1.0)
@@ -46,13 +50,10 @@ GEM
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)
+ rake (13.0.6)
rb-fsevent (0.11.0)
rb-inotify (0.10.1)
ffi (~> 1.0)
@@ -66,15 +67,15 @@ GEM
unicode-display_width (1.8.0)
PLATFORMS
- ruby
+ x86_64-darwin-21
DEPENDENCIES
jekyll (~> 4.2.1)
jekyll-feed (~> 0.12)
- minima (~> 2.5)
+ just-the-docs
tzinfo (~> 1.2)
tzinfo-data
wdm (~> 0.1.1)
BUNDLED WITH
- 2.1.4
+ 2.2.33
diff --git a/docs/_config.yml b/docs/_config.yml
index a55ef9de1..4a993961e 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -8,7 +8,7 @@
# 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:
+# 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/
#
@@ -18,20 +18,47 @@
# 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
+title: Docs | Firezone
+email: support@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
+ Documentation site for Firezone's VPN and firewall server.
+baseurl: "/docs" # the subpath of your site, e.g. /blog
+url: "https://www.firez.one" # the base hostname & protocol for your site, e.g. http://example.com
+permalink: pretty
twitter_username: firezonevpn
github_username: firezone
+# Set a path/url to a logo that will be displayed instead of the title
+logo: "/assets/images/firezone-logo-wordmark-dark.svg"
+
# Build settings
-theme: minima
+theme: just-the-docs
plugins:
- jekyll-feed
+color_scheme: fz
+
+# Footer content
+# appears at the bottom of every page's main content
+
+# footer_content: ""
+
+# Footer last edited timestamp
+last_edit_timestamp: true # show or hide edit time - page must have `last_modified_date` defined in the frontmatter
+last_edit_time_format: "%b %e %Y at %I:%M %p" # uses ruby's time format: https://ruby-doc.org/stdlib-2.7.0/libdoc/time/rdoc/Time.html
+
+# Footer "Edit this page on GitHub" link text
+gh_edit_link: true # show or hide edit this page link
+gh_edit_link_text: "Edit on GitHub"
+gh_edit_repository: "https://github.com/firezone/firezone" # the github URL for your repo
+gh_edit_branch: "master" # the branch that your docs is served from
+# gh_edit_source: docs # the source that your files originate from
+gh_edit_view_mode: "tree" # "tree" or "edit" if you want the user to jump into the editor immediately
+
+# Aux links for the upper right navigation
+aux_links:
+ "Schedule a Demo":
+ - "https://e04kusl9oz5.typeform.com/to/BkWP2ys1"
+
# Exclude from processing.
# The following items will not be processed, by default.
diff --git a/docs/_includes/footer_custom.html b/docs/_includes/footer_custom.html
new file mode 100644
index 000000000..c4dbbeb1c
--- /dev/null
+++ b/docs/_includes/footer_custom.html
@@ -0,0 +1,5 @@
+{%- if site.footer_content -%}
+
+
+
diff --git a/docs/_posts/2021-12-08-welcome-to-jekyll.markdown b/docs/_posts/2021-12-08-welcome-to-jekyll.markdown
new file mode 100644
index 000000000..71e6ed3ff
--- /dev/null
+++ b/docs/_posts/2021-12-08-welcome-to-jekyll.markdown
@@ -0,0 +1,29 @@
+---
+layout: post
+title: "Welcome to Jekyll!"
+date: 2021-12-08 10:08:59 -0800
+categories: jekyll update
+---
+You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
+
+Jekyll requires blog post files to be named according to the following format:
+
+`YEAR-MONTH-DAY-title.MARKUP`
+
+Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
+
+Jekyll also offers powerful support for code snippets:
+
+{% highlight ruby %}
+def print_hi(name)
+ puts "Hi, #{name}"
+end
+print_hi('Tom')
+#=> prints 'Hi, Tom' to STDOUT.
+{% endhighlight %}
+
+Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
+
+[jekyll-docs]: https://jekyllrb.com/docs/home
+[jekyll-gh]: https://github.com/jekyll/jekyll
+[jekyll-talk]: https://talk.jekyllrb.com/
diff --git a/docs/_sass/color_schemes/fz.scss b/docs/_sass/color_schemes/fz.scss
new file mode 100644
index 000000000..1b1c7d8f5
--- /dev/null
+++ b/docs/_sass/color_schemes/fz.scss
@@ -0,0 +1,34 @@
+// Colors
+
+$fz-grey-dk-000: #90867f;
+$fz-grey-dk-100: #766a60;
+$fz-grey-dk-200: #4c3e33;
+$fz-grey-dk-300: #1b140e;
+
+$fz-grey-lt-000: #fcfcfc;
+$fz-grey-lt-100: #f8f7f7;
+$fz-grey-lt-200: #ebebea;
+$fz-grey-lt-300: #dfdedd;
+
+$fz-purple-000: #4805ff;
+$fz-purple-100: #3400c2;
+$fz-purple-200: #37007f;
+$fz-purple-300: #28005c;
+
+$fz-orange: #FF7300;
+
+$link-color: $fz-purple-000;
+$btn-primary-color: $fz-purple-100;
+
+// Fonts
+
+$body-font-family: "Open Sans", sans-serif;
+
+@font-face {
+ font-family: "Open Sans";
+ src: url("../assets/fonts/OpenSans-Italic-VariableFont_wdth,wght.ttf");
+}
+
+// Borders
+
+$border-color: $fz-grey-lt-100;
\ No newline at end of file
diff --git a/docs/assets/fonts/OpenSans-Italic-VariableFont_wdth,wght.ttf b/docs/assets/fonts/OpenSans-Italic-VariableFont_wdth,wght.ttf
new file mode 100644
index 000000000..0fea34ba2
Binary files /dev/null and b/docs/assets/fonts/OpenSans-Italic-VariableFont_wdth,wght.ttf differ
diff --git a/docs/assets/images/firezone-logo-wordmark-dark.svg b/docs/assets/images/firezone-logo-wordmark-dark.svg
new file mode 100644
index 000000000..3d7b990a9
--- /dev/null
+++ b/docs/assets/images/firezone-logo-wordmark-dark.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/docs/deploying-and-configuring.md b/docs/docs/deploying-and-configuring.md
new file mode 100644
index 000000000..5fae43e0e
--- /dev/null
+++ b/docs/docs/deploying-and-configuring.md
@@ -0,0 +1,139 @@
+---
+layout: default
+title: Deploying and Configuring
+nav_order: 1
+---
+
+# Deploying and Configuring
+{: .no_toc }
+
+
+## Table of contents
+{: .no_toc .text-delta }
+
+1. TOC
+{:toc}
+
+---
+
+
+Firezone consists of a single distributable Linux package that you install and
+manage yourself. Management of the Firezone installation is handled by the
+`firezone-ctl` utility while management of the VPN and firewall themselves are
+handled by the Web UI.
+
+Firezone acts as a frontend to both the WireGuard kernel module and
+[netfilter](https://netfilter.org) kernel subsystem. It creates a WireGuard
+interface (by default called `wg-firezone`) and
+`firezone` netfilter table and adds appropriate routes to the routing
+table. Other programs that modify the Linux routing table or netfilter firewall
+may interfere with Firezone's operation.
+
+### SSL
+
+Firezone requires a valid SSL certificate and a matching DNS record to run in
+production. We recommend using [Let's Encrypt](https://letsencrypt.org) to
+generate a free SSL cert for your domain.
+
+### Security Considerations
+
+Firezone is **beta** software. We highly recommend **limiting network access to
+the Web UI** (by default port tcp/443) to prevent exposing it to the public Internet.
+
+The WireGuard listen port (by default port udp/51821) should be exposed to allow user
+devices to connect.
+
+## Supported Linux Distributions
+
+Firezone currently supports the following distributions and architectures:
+
+| Name | Architectures | Status | Notes |
+| --- | --- | --- | --- |
+| AmazonLinux 2 | `amd64` | **Fully-supported** | See [AmazonLinux 2 Notes](#amazonlinux-2-notes) |
+| CentOS 7 | `amd64` | **Fully-supported** | See [CentOS 7 Notes](#centos-7-notes) |
+| CentOS 8 | `amd64` | **Fully-supported** | Works as-is |
+| Debian 10 | `amd64` | **Fully-supported** | See [Debian 10 Notes](#debian-10-notes)|
+| Debian 11 | `amd64` | **Fully-supported** | Works as-is |
+| Fedora 33 | `amd64` | **Fully-supported** | Works as-is |
+| Fedora 34 | `amd64` | **Fully-supported** | Works as-is |
+| Ubuntu 18.04 | `amd64` | **Fully-supported** | See [Ubuntu 18.04 Notes](#ubuntu-1804-notes) |
+| Ubuntu 20.04 | `amd64` | **Fully-supported** | Works as-is |
+| openSUSE Leap 15.3 | `amd64` | **Fully-supported** | See [openSUSE Notes](#opensuse-notes) |
+
+If your distro isn't listed here please
+[open an issue](https://github.com/firezone/firezone/issues/new/choose) and let
+us know. New distros are being supported on a regular basis and there's a good
+chance yours will be added soon.
+
+### AmazonLinux 2 Notes
+
+Kernel upgrade required:
+
+```bash
+sudo amazon-linux-extras install -y kernel-5.10
+```
+
+### CentOS 7 Notes
+
+Kernel upgrade to 4.19+ required. See [this guide
+](https://medium.com/@nazishalam07/update-centos-kernel-3-10-to-5-13-latest-9462b4f1e62c)
+for an example.
+
+### Ubuntu 18.04 Notes
+
+Kernel upgrade to 4.19+ required. E.g. `apt install linux-image-generic-hwe-18.04`
+
+### Debian 10 Notes
+
+Kernel upgrade to 4.19+ required. See [this guide
+](https://jensd.be/968/linux/install-a-newer-kernel-in-debian-10-buster-stable)
+for an example.
+
+### openSUSE Notes
+
+Firezone requires the `setcap` utility, but some recent openSUSE releases may
+not have it installed by default. To fix, ensure `libcap-progs` is installed:
+
+```bash
+sudo zypper install libcap-progs
+```
+
+## Installation Instructions
+
+Assuming you're running Linux kernel 4.19+ on one of the supported distros
+listed above, follow these steps to setup and install Firezone:
+
+1. [Install WireGuard](https://www.wireguard.com/install/) for your distro. If using Linux kernel 5.6 or higher, skip
+ this step.
+2. Download the relevant package for your distribution from the
+ [releases page](https://github.com/firezone/firezone/releases).
+3. Install with `sudo rpm -i firezone*.rpm` or `sudo dpkg -i firezone*.deb`
+ depending on your distro.
+4. Bootstrap the application with `sudo firezone-ctl reconfigure`. This will initialize config files, set up needed services and generate the default configuration.
+5. Edit the default configuration located at `/etc/firezone/firezone.rb`.
+ At a minimum, you'll need to review the following configuration variables:
+
+ ```ruby
+ # Auto-generated based on the server's hostname.
+ # Set this to the FQDN used to access the Web UI.
+ default['firezone']['fqdn'] = 'firezone.example.com'
+
+ # ...
+
+ # Specify the path to your SSL cert and private key.
+ # If set to nil, a self-signed cert will be generated for you.
+ default['firezone']['ssl']['certificate'] = '/path/to/cert.pem'
+ default['firezone']['ssl']['certificate_key'] = '/path/to/key.pem'
+ ```
+6. Reconfigure the application to pick up the new changes: `sudo firezone-ctl reconfigure`.
+7. Finally, create an admin user with `sudo firezone-ctl create-or-reset-admin`.
+ The login credentials will be printed to the console output.
+8. Now you should be able to log into the web UI at the FQDN you specified in
+ step 5 above, e.g. `https://firezone.example.com`
+
+## Configuration File
+
+User-configurable settings can be found in `/etc/firezone/firezone.rb`.
+
+Changing this file **requires re-running** `sudo firezone-ctl reconfigure` to pick up
+the changes and apply them to the running system.
\ No newline at end of file
diff --git a/docs/favicon.ico b/docs/favicon.ico
new file mode 100644
index 000000000..71776b11a
Binary files /dev/null and b/docs/favicon.ico differ
diff --git a/docs/index.markdown b/docs/index.markdown
index 37e799728..bb04b25f5 100644
--- a/docs/index.markdown
+++ b/docs/index.markdown
@@ -3,8 +3,4 @@
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
layout: home
----
-
-Firezone Documentation
-
-WIP
+---
\ No newline at end of file