Moliere.love

September 6, 2025 · View on GitHub

Run Locally

Option 1: Docker (matches production)

make jekyll_build_prod  # Build with production settings
make build             # Build Docker image
make run               # Run nginx container

Go to http://0.0.0.0/

Option 2: Jekyll development server

make jekyll_serve_local  # Live reload on port 4000

Go to http://0.0.0.0:4000/

Option 3: Build and watch

make jekyll_build_watch  # Watch for changes and rebuild

Deploy New Content

  1. Build for production:

    make jekyll_build_prod
    # This runs: JEKYLL_ENV=production bundle exec jekyll build
    
  2. Commit and push (including the built _site folder):

    git add .
    git commit -m "Your changes"
    git push origin master
    
  3. Automatic deployment: DigitalOcean App Platform automatically:

    • Detects the push to master
    • Uses the Dockerfile to build a production container
    • Copies the custom nginx.conf and _site folder to nginx
    • Deploys the site with optimized performance and SEO settings

Architecture & SSL Configuration

Infrastructure Overview

User → Cloudflare (CDN/SSL) → DigitalOcean App Platform → nginx container (HTTP)

SSL/HTTPS Handling

  • HTTPS termination: Handled by Cloudflare (upstream)
  • HTTP to HTTPS redirect: Automatic 301 redirect by Cloudflare
  • nginx configuration: Only listens on port 80 (receives HTTP from Cloudflare)
  • SSL certificates: Managed automatically by Cloudflare

Why nginx.conf Only Uses HTTP

The nginx container receives HTTP traffic from Cloudflare, which has already:

  • Terminated SSL/TLS connections
  • Performed HTTPS redirects
  • Added security headers
  • Provided CDN caching

Verification

Test the setup:

# Should return 301 redirect to HTTPS
curl -I http://moliere.love

# Should return 200 OK with Cloudflare headers
curl -I https://moliere.love

This architecture provides optimal SEO performance with HTTPS, HTTP/2 support, and global CDN caching.

URL Parameters for Testing

App Banner

  • ?show-banner=true - Forces the app store banner to show (resets user dismissal)
  • ?reset-cookies=true - Resets cookie consent and shows cookie banner again

New play

  • Content in data

    • .json
    • personnages- .json
    • structure- .json
  • images in assets/images/

    • play image
    • characters
    • scenes
  • Folders in

    • assets/images/
    • posts/
  • pages:

    • posts// 1 file per scene with summary
    • posts/.md

Documentation

How to install & use