The Projects website is in and of itself, a large project.
The Projects website is using Ghost as the CMS, reverse-proxied behind Apache2 (which I'm using for the rest of the website). This should make adding content really easy (easier than the notes website), and allow the subdomain to update on the same job as my other subdomains.
Since the requirements are a bit more lax than the Notes website (less content hosting, and less overall math support is required), Ghost was a fun alternative to MediaWiki and Wordpress that should be even easier to update.
The Ghost documentation is pretty thorough, but you may run into issues if you have Apache configured as a "catch all" for website (80/443) traffic. After configuring, you can stop ghost with "ghost stop", then modify "config.production.json" to look something like:
Which will use the "url" parameter for links on the site, and will configure the nginx server at localhost:2854 (after restarting ghost with "ghost start").
After that small change, all you need to do is configure an Apache VirtualHost with reverse proxying. Something like:
Since I was testing behind Cloudflare, I didn't catch that images were being loaded insecurely over HTTP with the rest of the site being reverse-proxied over HTTPS (Cloudflare has a nice option to force rewrite all urls to HTTPS). This is a pretty quick way to anger any modern browser.
Fixing this is pretty simple, make sure the url set in ghost has https (which I totally remembered to set):
Also, make sure to set the virtual host to request HTTPS:
Friendly reminder to my future self to remember to test with Cloudflare turned off.