2.5 KiB
2.5 KiB
nexus_infernum
Infernal Symphony of Agony: A Description of the Infrastructure Powering SpeedyWeedyOps Site
SpeedyWeedyOps Web Infrastructure
This project sets up a web infrastructure using Docker Compose, including a Ghost blog, Gitea for Git repository hosting, and supporting services.
Services
- Caddy: Web server and reverse proxy
- Ghost: Blogging platform
- Gitea: Self-hosted Git service
- MySQL: Database for both Ghost and Gitea
- Varnish: HTTP caching reverse proxy
Architecture
The infrastructure is set up with the following architecture:
- Caddy serves as the front-facing web server, handling HTTPS and acting as a reverse proxy.
- Varnish sits between Caddy and Ghost, providing caching for improved performance.
- Ghost and Gitea are the main applications, each exposed on different subdomains.
- MySQL serves as the database backend for both Ghost and Gitea.
Security Features
- HTTPS enforced by Caddy with automatic certificate management
- Security headers set in Caddy configuration
- Secrets management for sensitive data (e.g., database passwords)
- Network separation using Docker networks
Performance Optimizations
- Varnish caching for Ghost content
- Static asset caching configured in Caddy
- Compression enabled for responses
Configuration Files
compose.yml
: Defines the Docker services and their configurationsCaddyfile
: Caddy web server configurationvarnish/default.vcl
: Varnish caching rules
Setup Instructions
- Clone this repository
- Create a
ghost_mysql_password
file with the desired MySQL password for Ghost - Adjust any configuration files as needed
- Run
docker compose up -d
to start the services
Maintenance
- Logs for all services are configured to output to stdout/stderr and can be viewed with
docker compose logs
- Volume mounts are used for persistent data storage
- Regular backups of the MySQL data and application content are recommended
Notes
- The www subdomain is configured to redirect to the non-www version
- The Ghost admin panel and API are excluded from Varnish caching
- Both Ghost and Gitea are configured to use MySQL as their database backend
For more detailed information about each service, refer to their respective documentation: