Add Scaleway Deployment Configuration #1

Merged
Damien merged 13 commits from scaleway-deployment into main 2025-11-19 14:42:07 +00:00
Showing only changes of commit fb720f6459 - Show all commits

View File

@@ -1,273 +0,0 @@
# 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