On this page
Brotherhood of Nicola
Overview
A comprehensive Orthodox Christian community website featuring a Ghost CMS blog, Rallly scheduling system, and Campfire chat application. The site serves as a digital hub for the Brotherhood of Nicola community.
Architecture
- Domain: brotherhoodofnicola.com
- Infrastructure: Docker Compose on Digital Ocean droplet
- Reverse Proxy: Traefik with automatic SSL
- Database: MySQL 8.0 for Ghost, PostgreSQL 15 for Rallly
- Storage: Docker volumes for persistence
Services
Ghost CMS (Main Blog)
- Purpose: Primary content management and blog
- URL: https://brotherhoodofnicola.com
- Database: MySQL 8.0
- Features:
- Orthodox Christian content and articles
- Member stories and testimonials
- Event announcements
- Photo galleries
- SEO optimized
Rallly (Event Scheduling)
- Purpose: Community event scheduling and RSVP management
- URL: https://schedule.brotherhoodofnicola.com
- Database: PostgreSQL 15
- Features:
- Event creation and management
- RSVP tracking
- Email notifications
- Calendar integration
- Member coordination
Campfire (Community Chat)
- Purpose: Real-time community communication
- URL: https://chat.brotherhoodofnicola.com
- Database: SQLite (embedded)
- Features:
- Multiple chat rooms
- Direct messaging
- File attachments
- @mentions and notifications
- Web Push notifications
Calendar (Static)
- Purpose: Static calendar display
- URL: https://brotherhoodofnicola.com/calendar
- Implementation: Nginx serving static HTML
Technical Stack
Backend Services
- Ghost: 6.0.10-alpine
- Rallly: lukevella/rallly:latest
- Campfire: ghcr.io/basecamp/once-campfire
- Databases: MySQL 8.0, PostgreSQL 15-alpine
Infrastructure
- Container Orchestration: Docker Compose
- Reverse Proxy: Traefik
- SSL: Let’s Encrypt automatic certificates
- Networking: Isolated Docker networks per service
Security
- SSL/TLS: Automatic HTTPS with Let’s Encrypt
- Network Isolation: Separate networks for each service
- Volume Persistence: Encrypted storage volumes
- Access Control: Traefik-based routing and authentication
Deployment Process
Initial Setup
- Domain Configuration: DNS A/AAAA records pointing to Digital Ocean droplet
- SSL Certificates: Automatic generation via Traefik and Let’s Encrypt
- Database Initialization: MySQL and PostgreSQL containers with persistent volumes
- Service Configuration: Environment variables and secrets management
Service Dependencies
ghost -> db (MySQL)
rallly -> rallly-db (PostgreSQL)
campfire -> (SQLite embedded)
calendar -> (Static files)Environment Management
- Ghost: Shared environment file for database and SMTP configuration
- Rallly: Dedicated environment variables for authentication and database
- Campfire: Isolated environment file (.env.campfire) for security keys
Monitoring and Maintenance
Health Checks
- Ghost: Database connectivity and service health
- Rallly: Application health endpoint monitoring
- Campfire: Container-level health monitoring
- Traefik: SSL certificate status and routing
Backup Strategy
- Database Backups: Automated MySQL and PostgreSQL dumps
- Volume Backups: Regular snapshots of Docker volumes
- Configuration Backups: Version-controlled docker-compose.yml and environment files
Update Process
- Image Updates: Pinned to specific digests for stability
- Security Updates: Regular base image updates
- Application Updates: Controlled deployment with rollback capability
Performance Optimization
Caching
- Traefik: Built-in caching for static assets
- Ghost: Content caching and CDN integration
- Database: Optimized queries and indexing
Resource Management
- Memory Limits: Container resource constraints
- CPU Allocation: Service-specific resource allocation
- Storage: Efficient volume management and cleanup
Security Considerations
Network Security
- Isolated Networks: Service-specific Docker networks
- Firewall Rules: Restricted port access
- SSL/TLS: End-to-end encryption
Data Protection
- Encryption: Database and volume encryption
- Access Control: Service-specific authentication
- Audit Logging: Comprehensive logging and monitoring
Future Enhancements
- CDN Integration: Global content delivery
- Advanced Analytics: Detailed usage tracking
- Mobile App: Native mobile application
- API Development: RESTful API for third-party integrations