274 lines
5.8 KiB
Markdown
274 lines
5.8 KiB
Markdown
# 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
|