Skip to content
The code for the Certbot instruction generator and documentation
CSS HTML JavaScript Other
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
_data add debian 10 instructions (#459) Aug 14, 2019
_docs @ 47f64c7 update submodule Jul 19, 2019
_faq_entries Merge pull request #420 from certbot/redesign Jun 17, 2019
_gulp JS tooltips May 28, 2019
_includes add links to instructions in readme from places where hosting_provide… Jul 26, 2019
_layouts add links to instructions in readme from places where hosting_provide… Jul 26, 2019
_plugins No script glossary tooltips May 24, 2019
_sass Swap instructions footer asset Jun 18, 2019
_scripts add rhel8 instructions (#458) Aug 14, 2019
_terms Hosting providers page tweaks Jun 17, 2019
about Fix SSH term on about Jun 18, 2019
all-instructions Show no-js users the All Instructions page Feb 16, 2018
contribute Contributing page styling tweaks Jun 14, 2019
faq Misc QA styling fixes Jun 17, 2019
fonts add social icons to hero unit May 6, 2016
glossary Add glossary page and terms Jun 13, 2019
hosting_providers Hosting providers page tweaks Jun 17, 2019
images Update some assets Jun 17, 2019
instructions Homepage styling tweaks Jun 6, 2019
privacy Update IRC channels mentioned in privacy policy. Oct 25, 2018
support no irc for support Oct 23, 2018
.gitignore Revert "Revert "Merge pull request #295 from certbot/seo"" Feb 15, 2018
.gitmodules move _docs over to the master branch fixes #93 May 12, 2016
.travis.yml Move IRC notifications to #certbot-devel. (#414) Jun 3, 2019
Dockerfile Upgrade code to Gulp 4 Nov 29, 2018 Update Sep 8, 2016
LICENSE.txt add license fixes #40 May 9, 2016 Move instructions to README Jul 26, 2019
_config.yml start of instructions page May 30, 2019 Use Nov 8, 2018
build_key.enc Update build key and path Jul 7, 2017
docker-compose.yml Match nginx port w/in and w/out container Feb 21, 2018
favicon.ico Transparent favicon Oct 26, 2018
gulpfile.js add license fixes #40 May 9, 2016
index.html Revert "Revert "Merge pull request #295 from certbot/seo"" Feb 15, 2018
nginx.conf Fix nginx listen directive Feb 21, 2018
package-lock.json Bump lodash.mergewith from 4.6.1 to 4.6.2 Jul 11, 2019
package.json Don't fail on broken hosting provider links (#456) Jul 31, 2019 Don't push if an error occurs. May 21, 2018

Certbot Website

Website for EFF's Certbot project. Uses Jekyll for static site generation.

Build Status


With Docker

  1. Clone this repo and cd into the project directory.
  2. Get the documentation submodule:
  • git submodule init
  • git submodule update
  1. docker-compose up

Docker-compose serves the site with nginx to more closely mirror production.

Without Docker


  1. Install ruby 2.0+, node 8.0+, and npm 2.0+.
  2. gem install jekyll (requires v3.0 or higher)
  3. sudo npm install gulp-cli -g
  4. npm install

If you want to build a copy of the documentation for your local mirror of the Cerbot website, also do:

  1. git submodule init
  2. git submodule update
  3. ./ depend
  4. Install pdflatex e.g. via sudo apt install texlive texlive-latex-extra


To watch for changes and reload assets as needed via BrowserSync: gulp watch

To build the site once: gulp build

To build for production (minified javascript, no source maps): gulp build --env production The environment can also be set in the NODE_ENV environment variable. See

Editing content

Basic pages

Most pages can be edited as markdown files.

Use /index.html to edit the homepage. Use /[RELATIVE_URL]/index.html to edit internal pages.

Hosting providers list

  • Make sure to fill out the name, link, category, and reviewed fields.
  • reviewed should be a date in format 2019.7.11.
  • link is usually a link to the provider's main page; it's where clicking on the name will go.
  • for category, see descriptions here.
  • for full/partial categories, one of the links provided should have evidence of being in that category.
  • only one of tutorial, announcement, plan will show up, in that order.
  • partial should have tutorial.
  • full providers shouldn't need a tutorial to turn on https. an exception might include instructions of what to do if something goes wrong and the automatic https doesn't work.
  • if one provider offers multiple products, either split into two entries or note it in the note field.
  • the note field is good for things like noting which products have https, or that the site is available only in certain languages. it's not meant for advertising.
  • all unused fields should be ""

Installation instructions

Are generated by JavaScript with Mustache, and can be edited in _scripts/instruction-widget.


FAQ entries are a Jekyll collection. Add FAQ entries (question and answer pairs) as markdown files to the _faq_entries directory.

FAQ entries require two variables to be set in the front matter:

  • title: the "Question" the FAQ entry answers
  • weight: the position of this entry on the page - lighter FAQ entries will float to the top.


Certbot/website uses html-proofer to validate the html output of the build.

To install:

gem install html-proofer

To run the tests:

npm test

(Files with known issues are ignored.)

Travis Builds

All branches and pull requests and built and tested by Travis.

For branches, the built assets are pushed to an analagous branch in certbot/website-builds. Built assets from PRs are not saved because Travis doesn't provide a mechanism to securely push to a Github repo after PRs across forks.

To view the build of any branch, checkout that branch from certbot/website-builds and run some server to serve the files. For example,

python -m SimpleHTTPServer 8000
You can’t perform that action at this time.