master
Kaitlyn Parkhurst 3 years ago
parent 6744b1bfe5
commit 5941a255e8
  1. 42
      README.md

@ -12,48 +12,36 @@ MyJekyllBlog is a project to provide a SaaS web interface to Jekyll backed with
| Certbot | Handles getting/updating SSL certs | mjb.certbot | store, webservers |
| WebServer | Hosts customer blogs on the internet | nginx | certbot, build |
### Panel
The Panel server hosts the web application that customers can use to provision blogs, publish articles, upload media and otherwise manage their blogs. Administrators can use it to check users/blogs on the system, run maintenance tasks, and configure some aspects of the system.
## What are the systems?
### Build
### Web Panel
The build server processes Jekyll git repositories into static websites and deploys the fully built website to the webservers for hosting.
The web panel allows users of the service to create and manage their Jeykll blogs.
### Store
The following functionality should exist:
The store server hosts two database with postgresql. One database supports `MyJekyllBlog::DB` and another supports Minion. The Panel, Build, and Certbot servers all need access to these databases.
* Wizard to create a new blog
* Editor panel that lists articles
* Editor panel that lists pages
* Editor panel that allows creating a new article
* Editor panel that allows creating a new page
* Editor panel that allows editing an existing article
* Editor panel that allows editing an existing page
* Manager panel that shows last deployment
* Manager panel that allows deploying the blog
* Manager panel that allows adding a custom domain name to the blog
* Manager panel that shows list of commits and which one is deployed
* Manager panel that allows selecting an alternative commit and deploying it
The store server also hosts an installation of Gitea so that each Jekyll blog may have its own central git repository. The panel server will checkout and commit/push to this server. The build server will checkout the repository from this server for building.
### Database Server
### Certbot
The database server holds the database for the `Web Panel` and for the `Build Server`.
The CertBot server handles obtaining SSL certificates from Let's Encrypt and pushing them to the webservers.
### Gitea Server
When HTTP challenges are used, `/.well-known/` is proxied from ALL webserver nodes to the certbot node and `--standalone` is used from the certbot node to obtain an SSL certificate.
The gitea server will have user mapping between the `Web Panel` and Gitea. Users websites will be held as repos here.
When DNS challenges are used, wildcard certificates may be obtained (and is recommended for hosts expecting many sub-domains to be made).
### Build Server
The `/etc/letsencrypt` directory is synced with webserver nodes through rsync whenever new certificates are obtained. An administrator can update and sync SSL certificates from the admin panel.
The build server will check out the repo, build the static site and deploy it to whichever `Web Server` it should be deployed to.
### WebServer
### SSL Server
WebServers run nginx and host static content for Jekyll blogs. When a blog is provisioned, an SSL certificate will be requested for the site and an nginx configuration file will be created.
The SSL server will run certbot. The `/.well-known` directory should be proxied to this server so that HTTP challenges can be used.
The build servers will sync the blog content with webservers each time the blog is updated through the Panel.
### Web Servers
Web servers will host static content for Jeykll blogs.
## How does it work?

Loading…
Cancel
Save