Jekyll Auth is an open-source Ruby tool that gates a Jekyll site behind GitHub OAuth so only members of a specified GitHub organization can view it.
What is Jekyll Auth?
Jekyll Auth is an open-source Ruby gem and Sinatra application by Ben Balter that adds GitHub OAuth protection to a Jekyll static site. It takes a Jekyll project as input and outputs an access-controlled HTML site deployed on Heroku. The application uses the sinatra_auth_github middleware to authenticate users against GitHub and checks that they belong to the organization you configure. The project is end of life; the README recommends switching to GitHub Pages visibility controls instead.
Key Features
- GitHub OAuth authentication — Uses
sinatra_auth_githubto handle the OAuth flow, so visitors log in with their existing GitHub accounts. - Organization membership check — Before serving any page, the app confirms the authenticated user is a member of the target GitHub organization; non-members receive a bouncer graphic.
- Static site serving with Sinatra — Sinatra serves the
_sitefolder that Jekyll generates, using it the same way a Rails app uses thepublicdirectory. - Heroku build integration — On each push to Heroku, the platform runs
rake assets:precompile, which triggers a Jekyll build automatically. - Free Dyno hosting — The design targets Heroku's free Dyno tier, so hosting costs are zero unless you exceed Heroku's free limits.
- Companion guides — The repository includes separate markdown documents for configuring, getting started, running locally, and troubleshooting.
Who is it for?
- GitHub organization owners — They can deploy an internal Jekyll site and restrict access to org members without building a custom auth system.
- Teams using GitHub Pages — Teams that currently use GitHub Pages but need selective access can switch to this tool for protected hosting on Heroku.
- Developers comfortable with Ruby and Heroku — Since the tool is a Sinatra app, deploying and debugging it requires familiarity with Rake, bundler, and Heroku's platform.
What can you do with Jekyll Auth?
- Share internal documentation — Host a Jekyll-generated docs site on Heroku and let only GitHub org members read it.
- Preview site builds with a private audience — Deploy a Jekyll site to a protected URL and share it with a select group by adding them to a GitHub organization.
How does Jekyll Auth work?
Every push to Heroku triggers the platform's built-in rake assets:precompile command, which builds the Jekyll site into the _site directory. Sinatra then serves that directory as static files. When a request arrives, the sinatra_auth_github plugin sends the visitor through GitHub OAuth; if their account is a member of the configured organization, the page is returned, otherwise they get a bouncer message.
Pros and cons
- Pros: Open source and free to use; leverages GitHub's existing OAuth and organization membership; works with the standard Jekyll build on Heroku.
- Cons: The project is end of life and no longer maintained; it requires running a separate Heroku app; deployment relies on Heroku's asset precompile hook, which ties it to that platform's behavior.
Alternatives
- GitHub Pages visibility settings — For GitHub Enterprise Cloud, you can make a GitHub Pages site private natively by changing its visibility, which is the replacement the Jekyll Auth README suggests.
FAQ
Is Jekyll Auth still maintained?
No. The README declares the project end of life. The recommended path is to use GitHub Pages visibility controls if your GitHub plan supports private sites.
How does Jekyll Auth protect a site?
It uses GitHub OAuth through the sinatra_auth_github Ruby middleware. A visitor is redirected to GitHub to log in, then the app verifies they belong to the configured organization before serving the static Jekyll page.
What do I need to run Jekyll Auth?
You need a GitHub account, a GitHub organization, a registered GitHub application, and a Heroku account. The README notes you can use other hosts, but its instructions target Heroku specifically.








