# Deployment Options Comparison ## Quick Decision Guide Choose based on your priorities: | Factor | Object Storage | Docker Instance | GitHub Pages (current) | |--------|---------------|-----------------|------------------------| | **Cost** | ~€1-2/month | ~€10/month | Free | | **Setup Complexity** | Low | Medium | Very Low | | **Control** | Limited | Full | Limited | | **SSL/TLS** | Via CDN | Let's Encrypt | Automatic | | **Custom Domain** | ✅ | ✅ | ✅ | | **Scalability** | Excellent | Limited | Excellent | | **Maintenance** | None | Regular updates | None | ## Deployment Methods Overview ### 1. Object Storage (S3-compatible) **Best for**: Low-traffic blogs, simple hosting needs **Pros**: - Very low cost - No server maintenance - Highly scalable - Built-in redundancy - Pay only for what you use **Cons**: - Limited server-side features - HTTPS requires CDN or custom setup - Less control over caching - No server-side redirects **Setup time**: 30 minutes **Files needed**: - `.gitea/workflows/deploy.yml` - Scaleway API credentials **Documentation**: [SCALEWAY_DEPLOYMENT.md](./SCALEWAY_DEPLOYMENT.md) --- ### 2. Docker on Scaleway Instance **Best for**: Sites needing more control, custom configurations **Pros**: - Full server control - Easy SSL with Let's Encrypt - Custom Nginx configuration - Server-side redirects/rewrites - Better caching control - No per-request costs **Cons**: - Higher fixed cost - Requires server maintenance - Need to manage updates - Single point of failure (without HA) **Setup time**: 1-2 hours **Files needed**: - `.gitea/workflows/deploy-docker.yml` - SSH key pair - Docker Compose configuration **Documentation**: [SCALEWAY_DEPLOYMENT_DOCKER.md](./SCALEWAY_DEPLOYMENT_DOCKER.md) --- ## Cost Breakdown ### Object Storage ``` Storage: 1 GB × €0.01 = €0.01/month Traffic: 50 GB/month (first 75 GB free) Total: €0.01-0.50/month ``` ### Object Storage + CDN ``` CDN base: €1/month Storage: €0.01/month Traffic: Reduced origin traffic SSL: Included Total: €1-3/month ``` ### Docker Instance (DEV1-S) ``` Instance: €7-10/month Traffic: 100 GB included SSL: Free (Let's Encrypt) Total: €10/month (predictable) ``` ### GitHub Pages (Current) ``` Free for public repositories Custom domain: ✅ SSL: Automatic Limits: 100 GB bandwidth/month, 1 GB storage ``` --- ## Traffic Threshold Analysis When to choose each option: ### Stay with GitHub Pages if: - Traffic < 100 GB/month - No special requirements - Happy with current setup ### Choose Object Storage if: - Want French hosting - Traffic 100-500 GB/month - Need cost optimization - Minimal configuration needs ### Choose Docker Instance if: - Need custom server config - Traffic > 500 GB/month - Want full control - Need advanced features (auth, API endpoints, etc.) --- ## Migration Path ### Phase 1: Parallel Deployment 1. Keep GitHub Pages active 2. Set up Scaleway (either method) 3. Test thoroughly ### Phase 2: DNS Switch ``` notebook.arnodo.fr → Scaleway netlify/pages subdomain → keep as backup ``` ### Phase 3: Complete Migration - Update all links - Verify analytics - Monitor for 30 days - Decommission old setup --- ## Performance Comparison | Metric | GitHub Pages | Object Storage | Docker Instance | |--------|-------------|----------------|-----------------| | **TTFB** | ~50-100ms | ~30-50ms | ~20-40ms | | **Global CDN** | ✅ | Optional | No (single region) | | **HTTP/2** | ✅ | ✅ | ✅ | | **Brotli** | ✅ | ❌ | ✅ (configurable) | | **Caching** | Good | Basic | Full control | --- ## Recommended Approach ### For Your Use Case (Network Engineer Blog): I recommend **Object Storage** initially because: 1. **Cost-effective**: ~€1/month vs €10/month 2. **Low maintenance**: No server to manage 3. **Scalable**: Can handle traffic spikes 4. **French hosting**: Data sovereignty if needed 5. **Easy rollback**: Keep GitHub Pages as backup ### Upgrade path: ``` Object Storage → Add CDN if needed → Docker instance only if traffic justifies it ``` --- ## Implementation Checklist ### Object Storage Setup - [ ] Create Scaleway account - [ ] Create Object Storage bucket - [ ] Configure bucket for static hosting - [ ] Generate API keys - [ ] Add secrets to Gitea - [ ] Update DNS - [ ] Test deployment - [ ] Monitor costs ### Docker Instance Setup - [ ] Create Scaleway instance - [ ] Install Docker and dependencies - [ ] Configure Nginx - [ ] Set up SSL certificate - [ ] Create deployment user - [ ] Configure SSH keys - [ ] Update Gitea workflow - [ ] Set up monitoring - [ ] Configure backups --- ## Maintenance Requirements ### Object Storage - **Daily**: None - **Weekly**: None - **Monthly**: Review costs - **Yearly**: Review retention policy ### Docker Instance - **Daily**: Check monitoring - **Weekly**: Review logs - **Monthly**: Apply security updates - **Quarterly**: Review backups, update SSL --- ## Support & Resources ### Scaleway - Docs: https://www.scaleway.com/en/docs/ - Support: Via console ticket system - Community: Discord, Forum ### Hugo - Docs: https://gohugo.io/documentation/ - Community: Forum, Discord ### Gitea - Docs: https://docs.gitea.com/ - Actions: https://docs.gitea.com/usage/actions --- ## Emergency Rollback Plan If Scaleway deployment fails: 1. **Keep GitHub Pages active** during testing 2. **DNS TTL**: Set to 300s (5 min) during migration 3. **Rollback**: Change DNS back to GitHub Pages 4. **Monitoring**: Set up uptime monitoring (UptimeRobot, etc.) --- ## Next Steps 1. ✅ Review both deployment options 2. ⬜ Choose deployment method 3. ⬜ Run setup script (`scripts/setup-scaleway.sh`) 4. ⬜ Configure DNS 5. ⬜ Add secrets to Gitea 6. ⬜ Merge deployment branch 7. ⬜ Test deployment 8. ⬜ Monitor for issues 9. ⬜ Update documentation --- Need help deciding? Consider: - **Budget**: Object Storage - **Control**: Docker Instance - **Simplicity**: Object Storage - **Features**: Docker Instance