Update documentation for clarity and consistency
All checks were successful
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Successful in 24s
All checks were successful
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Successful in 24s
Remove emojis and em dash separators Simplify introductory sentences Standardize section headings
This commit is contained in:
@@ -15,7 +15,7 @@ A write-up on building my personal infrastructure: migrating from GitHub to self
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Context and Motivations
|
||||
## Context and motivations
|
||||
|
||||
As a network engineer working in automation and orchestration, I've always needed an environment to experiment and learn in. Until recently, I used GitHub for my code and ContainerLab locally/on AWS via [DevPod](/documentation/devpod/) for my network simulations.
|
||||
|
||||
@@ -26,11 +26,11 @@ But several needs emerged:
|
||||
- **Flexibility**: Being able to spin up network labs on demand without saturating my local machine
|
||||
- **Automation**: Scripting the complete provisioning of my environments
|
||||
|
||||
## The Overall Architecture
|
||||
## The overall architecture
|
||||
|
||||

|
||||
|
||||
### Tech Stack
|
||||
### Tech stack
|
||||
|
||||
**Homelab**:
|
||||
- **Proxmox VE**: Hypervisor for VMs and LXC
|
||||
@@ -48,7 +48,7 @@ But several needs emerged:
|
||||
- **Instances**: Ephemeral network labs provisioned on demand
|
||||
- **Scaleway CLI**: Full automation
|
||||
|
||||
## Part 1: Migrating from GitHub to Self-Hosted Gitea
|
||||
## Part 1: migrating from GitHub to self-hosted Gitea
|
||||
|
||||
### Why Gitea?
|
||||
|
||||
@@ -81,7 +81,7 @@ The script:
|
||||
- Initial setup via the interface
|
||||
- Site URL: `https://gitea.arnodo.fr`
|
||||
|
||||
### Network Architecture: Wireguard + Nginx Proxy Manager
|
||||
### Network architecture: Wireguard + Nginx Proxy Manager
|
||||
|
||||
**The problem**: Gitea runs inside my homelab (private IP), but I want to access it from the Internet.
|
||||
|
||||
@@ -186,7 +186,7 @@ scrape_configs:
|
||||
- CI/CD runner status
|
||||
- LXC CPU/RAM usage
|
||||
|
||||
### Migrating Code from GitHub
|
||||
### Migrating code from GitHub
|
||||
|
||||
Simple and fast:
|
||||
Use Gitea's import feature (Settings > New Migration > GitHub), which also migrates issues and releases.
|
||||
@@ -313,16 +313,16 @@ git push origin main
|
||||
|
||||
The workflow triggers automatically, Hugo builds the site, and deploys it to Scaleway Object Storage. The site is instantly available via the CDN.
|
||||
|
||||
## Part 2: Network Labs on Scaleway
|
||||
## Part 2: network labs on Scaleway
|
||||
|
||||
### The Problem
|
||||
### The problem
|
||||
|
||||
Running ContainerLab with several Arista EOS instances locally is:
|
||||
- **Resource-hungry**: 4-8 GB RAM per cEOS container
|
||||
- **Local-only**: No access from outside
|
||||
- **Conflict-prone**: With other Docker/K8s services
|
||||
|
||||
### The Solution: On-Demand Scaleway Instances
|
||||
### The solution: on-demand Scaleway instances
|
||||
|
||||
**Concept**:
|
||||
- Spin up a Scaleway instance whenever I need a lab
|
||||
@@ -330,7 +330,7 @@ Running ContainerLab with several Arista EOS instances locally is:
|
||||
- Destroy the instance after use
|
||||
- Billed by the hour (< €1 for a few hours of lab time)
|
||||
|
||||
### Automation Script: Scaleway CLI
|
||||
### Automation script: Scaleway CLI
|
||||
|
||||
I built a Bash script that manages the entire lifecycle of a lab instance.
|
||||
|
||||
@@ -385,7 +385,7 @@ case "$1" in
|
||||
esac
|
||||
```
|
||||
|
||||
### Cloud-Init: Automatic Configuration
|
||||
### Cloud-init: automatic configuration
|
||||
|
||||
The `user_data.txt` file contains the cloud-init instructions to automatically provision the instance.
|
||||
|
||||
@@ -413,7 +413,7 @@ runcmd:
|
||||
- cd /root/labs && containerlab deploy -t spine-leaf.clab.yml
|
||||
```
|
||||
|
||||
### Practical Usage
|
||||
### Practical usage
|
||||
|
||||
**Create a lab**:
|
||||
|
||||
@@ -438,7 +438,7 @@ containerlab inspect
|
||||
./scaleway-instance.sh delete
|
||||
```
|
||||
|
||||
### Raycast Integration
|
||||
### Raycast integration
|
||||
|
||||
To make things even simpler, I created a Raycast script that lets me manage my instances directly from my Mac.
|
||||
|
||||
@@ -461,7 +461,7 @@ To make things even simpler, I created a Raycast script that lets me manage my i
|
||||
- `⌘ + Space` → "Scaleway Instance DEV1-S" → Creates the instance
|
||||
- `⌘ + Space` → "Scaleway Instance delete" → Deletes the instance
|
||||
|
||||
### Use Case: BGP/EVPN Lab with Arista
|
||||
### Use case: BGP/EVPN lab with Arista
|
||||
|
||||
**ContainerLab topology** (`spine-leaf.clab.yml`):
|
||||
|
||||
@@ -499,11 +499,11 @@ topology:
|
||||
|
||||
**Cost**: DEV1-S instance (2 vCPU, 2GB) = ~€0.015/hour. 4 hours of lab time = €0.06.
|
||||
|
||||
## Digital Sovereignty: Why It Matters
|
||||
## Digital sovereignty: why it matters
|
||||
|
||||
This hybrid infrastructure reflects a personal conviction about digital sovereignty.
|
||||
|
||||
### The Context
|
||||
### The context
|
||||
|
||||
In my work as a network engineer, I see how important it is to be in control of your own infrastructure.
|
||||
|
||||
@@ -513,7 +513,7 @@ Choosing Scaleway (part of the Iliad group, French) and self-hosting Gitea means
|
||||
- **Reducing latency**: Datacenters in Paris
|
||||
- **Understanding**: Owning your entire chain end-to-end
|
||||
|
||||
### Learning by Doing
|
||||
### Learning by doing
|
||||
|
||||
As a network professional (Arista, BGP/EVPN, automation), self-hosting lets me:
|
||||
- Apply Infrastructure as Code principles
|
||||
@@ -523,7 +523,7 @@ As a network professional (Arista, BGP/EVPN, automation), self-hosting lets me:
|
||||
|
||||
## Assessment
|
||||
|
||||
### What Works Well
|
||||
### What works well
|
||||
|
||||
**Self-hosted Gitea**:
|
||||
- Very fast and stable
|
||||
@@ -546,7 +546,7 @@ As a network professional (Arista, BGP/EVPN, automation), self-hosting lets me:
|
||||
- Free (a few cents/month for storage)
|
||||
- Built-in CDN = ultra-fast site
|
||||
|
||||
### The Challenges
|
||||
### The challenges
|
||||
|
||||
**Initial complexity**:
|
||||
- Wireguard + reverse proxy = learning curve
|
||||
@@ -561,7 +561,7 @@ As a network professional (Arista, BGP/EVPN, automation), self-hosting lets me:
|
||||
- If the Dedibox goes down, Gitea becomes unreachable
|
||||
- Solution: failover with a second Dedibox or VPS (coming soon)
|
||||
|
||||
## Next Steps
|
||||
## Next steps
|
||||
|
||||
- **High availability**: A second Dedibox for failover
|
||||
- **Automatic backup**: Scripts to back up Gitea to Scaleway Object Storage
|
||||
@@ -571,16 +571,11 @@ As a network professional (Arista, BGP/EVPN, automation), self-hosting lets me:
|
||||
|
||||
## Conclusion
|
||||
|
||||
This hybrid infrastructure (Proxmox homelab + Scaleway cloud) offers the best of both worlds:
|
||||
This hybrid setup, Proxmox homelab plus Scaleway cloud, gives me control over sensitive data (code, configurations stay in the homelab), cloud resources for one-off needs, and everything hosted in France with European providers.
|
||||
|
||||
- **Control**: Sensitive data (code, configurations) stays in the homelab
|
||||
- **Flexibility**: Cloud resources for one-off needs
|
||||
- **Learning**: A complete environment to experiment in
|
||||
- **Sovereignty**: Everything hosted in France, with European providers
|
||||
Self-hosting hasn't saved me money (spoiler: I pay about as much as before, if not more). What it gave me is a deeper understanding of the systems I work with.
|
||||
|
||||
Self-hosting isn't just about costs (spoiler: I pay about as much as before, if not more), but about learning, mastery, and a deep understanding of systems.
|
||||
|
||||
For a network or DevOps engineer, it's the ideal environment to reproduce professional use cases and build up skills.
|
||||
For a network or DevOps engineer, it's a good environment to reproduce professional use cases and build up skills.
|
||||
|
||||
## Resources
|
||||
|
||||
@@ -591,7 +586,7 @@ For a network or DevOps engineer, it's the ideal environment to reproduce profes
|
||||
- [ContainerLab](https://containerlab.dev/)
|
||||
- [Nginx Proxy Manager](https://nginxproxymanager.com/)
|
||||
|
||||
### My Repos
|
||||
### My repos
|
||||
- [Blog Hugo](https://gitea.arnodo.fr/Damien/blog)
|
||||
- [Network Labs](https://gitea.arnodo.fr/Damien/arista-evpn-vxlan-clab) (ContainerLab topologies)
|
||||
- [Scaleway Scripts](https://gitea.arnodo.fr/Damien/scaleway-automation)
|
||||
|
||||
@@ -15,7 +15,7 @@ Retour d'expérience sur la construction de mon infrastructure personnelle : mig
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Contexte et Motivations
|
||||
## Contexte et motivations
|
||||
|
||||
En tant qu'ingénieur réseau travaillant dans le domaine de l'automatisation et de l'orchestration, j'ai toujours eu besoin d'un environnement pour expérimenter et apprendre. Jusqu'à récemment, j'utilisais GitHub pour mon code et ContainerLab en local/AWS via [DevPod](/documentation/devpod/) pour mes simulations réseau.
|
||||
|
||||
@@ -26,11 +26,11 @@ Mais plusieurs envies ont émergé :
|
||||
- **Flexibilité** : Pouvoir lancer des labs réseau à la demande sans saturer ma machine locale
|
||||
- **Automatisation** : Scripter le provisionnement complet de mes environnements
|
||||
|
||||
## L'Architecture Globale
|
||||
## L'architecture globale
|
||||
|
||||

|
||||
|
||||
### Stack Technique
|
||||
### Stack technique
|
||||
|
||||
**Homelab** :
|
||||
- **Proxmox VE** : Hyperviseur pour VMs et LXC
|
||||
@@ -48,7 +48,7 @@ Mais plusieurs envies ont émergé :
|
||||
- **Instances** : Labs réseau éphémères provisionnés à la demande
|
||||
- **Scaleway CLI** : Automatisation complète
|
||||
|
||||
## Partie 1 : Migration GitHub → Gitea Auto-Hébergé
|
||||
## Partie 1 : migration GitHub → Gitea auto-hébergé
|
||||
|
||||
### Pourquoi Gitea ?
|
||||
|
||||
@@ -81,7 +81,7 @@ Le script :
|
||||
- Configuration initiale via l'interface
|
||||
- URL du site : `https://gitea.arnodo.fr`
|
||||
|
||||
### Architecture Réseau : Wireguard + Nginx Proxy Manager
|
||||
### Architecture réseau : Wireguard + Nginx Proxy Manager
|
||||
|
||||
**Le problème** : Gitea tourne dans mon homelab (IP privée), mais je veux y accéder depuis Internet.
|
||||
|
||||
@@ -186,7 +186,7 @@ scrape_configs:
|
||||
- État des runners CI/CD
|
||||
- Utilisation CPU/RAM du LXC
|
||||
|
||||
### Migration du Code depuis GitHub
|
||||
### Migration du code depuis GitHub
|
||||
|
||||
Simple et rapide :
|
||||
Utiliser la fonction d'import de Gitea (Settings > New Migration > GitHub) qui migre aussi les issues et releases.
|
||||
@@ -197,7 +197,7 @@ Mon blog Hugo se déploie automatiquement sur Scaleway Object Storage à chaque
|
||||
|
||||
**Installation de Gitea Runner** (https://docs.gitea.com/usage/actions/act-runner)
|
||||
|
||||
Créer l’utilisateur système runner :
|
||||
Créer l'utilisateur système runner :
|
||||
|
||||
```bash
|
||||
useradd -r -m -d /var/lib/gitea-runner -s /bin/bash gitea-runner
|
||||
@@ -313,16 +313,16 @@ git push origin main
|
||||
|
||||
Le workflow se déclenche automatiquement, Hugo génère le site, et le déploie sur Scaleway Object Storage. Le site est accessible instantanément via le CDN.
|
||||
|
||||
## Partie 2 : Labs Réseau sur Scaleway
|
||||
## Partie 2 : labs réseau sur Scaleway
|
||||
|
||||
### Le Problème
|
||||
### Le problème
|
||||
|
||||
ContainerLab avec plusieurs Arista EOS en local, c'est :
|
||||
- **Gourmand** : 4-8 GB RAM par conteneur cEOS
|
||||
- **Local** : Pas d'accès depuis l'extérieur
|
||||
- **Conflits** : Avec d'autres services Docker/K8s
|
||||
|
||||
### La Solution : Instances Scaleway à la Demande
|
||||
### La solution : instances Scaleway à la demande
|
||||
|
||||
**Concept** :
|
||||
- Créer une instance Scaleway quand j'ai besoin d'un lab
|
||||
@@ -330,7 +330,7 @@ ContainerLab avec plusieurs Arista EOS en local, c'est :
|
||||
- Détruire l'instance après utilisation
|
||||
- Facturation à l'heure (< 1€ pour quelques heures de lab)
|
||||
|
||||
### Script d'Automatisation : Scaleway CLI
|
||||
### Script d'automatisation : Scaleway CLI
|
||||
|
||||
J'ai développé un script Bash qui gère tout le cycle de vie d'une instance de lab.
|
||||
|
||||
@@ -385,7 +385,7 @@ case "$1" in
|
||||
esac
|
||||
```
|
||||
|
||||
### Cloud-Init : Configuration Automatique
|
||||
### Cloud-init : configuration automatique
|
||||
|
||||
Le fichier `user_data.txt` contient les instructions cloud-init pour provisionner l'instance automatiquement.
|
||||
|
||||
@@ -413,7 +413,7 @@ runcmd:
|
||||
- cd /root/labs && containerlab deploy -t spine-leaf.clab.yml
|
||||
```
|
||||
|
||||
### Utilisation Pratique
|
||||
### Utilisation pratique
|
||||
|
||||
**Créer un lab** :
|
||||
|
||||
@@ -461,7 +461,7 @@ Pour simplifier encore plus, j'ai créé un script Raycast qui me permet de gér
|
||||
- `⌘ + Space` → "Scaleway Instance DEV1-S" → Crée l'instance
|
||||
- `⌘ + Space` → "Scaleway Instance delete" → Supprime l'instance
|
||||
|
||||
### Cas d'Usage : Lab BGP/EVPN avec Arista
|
||||
### Cas d'usage : lab BGP/EVPN avec Arista
|
||||
|
||||
**Topologie ContainerLab** (`spine-leaf.clab.yml`) :
|
||||
|
||||
@@ -499,11 +499,11 @@ topology:
|
||||
|
||||
**Coût** : Instance DEV1-S (2 vCPU, 2GB) = ~0.015€/heure. 4 heures de lab = 0.06€.
|
||||
|
||||
## Souveraineté Numérique : Pourquoi C'est Important
|
||||
## Souveraineté numérique : pourquoi c'est important
|
||||
|
||||
Cette infrastructure hybride reflète une conviction personnelle sur la souveraineté numérique.
|
||||
|
||||
### Le Contexte
|
||||
### Le contexte
|
||||
|
||||
Dans mon travail d'ingénieur réseau, je vois l'importance de la maîtrise de ses infrastructures.
|
||||
|
||||
@@ -513,7 +513,7 @@ Choisir Scaleway (groupe Iliad, français) et self-hoster Gitea, c'est :
|
||||
- **Réduire la latence** : Datacenters à Paris
|
||||
- **Comprendre** : Maîtriser sa chaîne complète
|
||||
|
||||
### Apprentissage par la Pratique
|
||||
### Apprentissage par la pratique
|
||||
|
||||
En tant que professionnel du réseau (Arista, BGP/EVPN, automation), self-hoster me permet de :
|
||||
- Appliquer les principes Infrastructure as Code
|
||||
@@ -523,7 +523,7 @@ En tant que professionnel du réseau (Arista, BGP/EVPN, automation), self-hoster
|
||||
|
||||
## Bilan
|
||||
|
||||
### Ce qui Fonctionne Bien
|
||||
### Ce qui fonctionne bien
|
||||
|
||||
**Gitea auto-hébergé** :
|
||||
- Très rapide et stable
|
||||
@@ -546,7 +546,7 @@ En tant que professionnel du réseau (Arista, BGP/EVPN, automation), self-hoster
|
||||
- Gratuit (quelques centimes/mois pour le stockage)
|
||||
- CDN intégré = site ultra rapide
|
||||
|
||||
### Les Défis
|
||||
### Les défis
|
||||
|
||||
**Complexité initiale** :
|
||||
- Wireguard + reverse proxy = courbe d'apprentissage
|
||||
@@ -561,7 +561,7 @@ En tant que professionnel du réseau (Arista, BGP/EVPN, automation), self-hoster
|
||||
- Si la Dedibox tombe, Gitea n'est plus accessible
|
||||
- Solution : Failover avec une 2e Dedibox ou VPS (à venir)
|
||||
|
||||
## Prochaines Étapes
|
||||
## Prochaines étapes
|
||||
|
||||
- **Haute disponibilité** : Seconde Dedibox pour du failover
|
||||
- **Backup automatique** : Scripts pour sauvegarder Gitea vers Scaleway Object Storage
|
||||
@@ -571,16 +571,11 @@ En tant que professionnel du réseau (Arista, BGP/EVPN, automation), self-hoster
|
||||
|
||||
## Conclusion
|
||||
|
||||
Cette infrastructure hybride (homelab Proxmox + cloud Scaleway) offre le meilleur des deux mondes :
|
||||
Cette infrastructure hybride, homelab Proxmox plus cloud Scaleway, me donne le contrôle sur les données sensibles (code, configurations restent dans le homelab), des ressources cloud pour les besoins ponctuels, et tout est hébergé en France chez des acteurs européens.
|
||||
|
||||
- **Contrôle** : Données sensibles (code, configurations) dans le homelab
|
||||
- **Flexibilité** : Ressources cloud pour les besoins ponctuels
|
||||
- **Apprentissage** : Environnement complet pour expérimenter
|
||||
- **Souveraineté** : Tout hébergé en France, chez des acteurs européens
|
||||
Le self-hosting ne m'a pas fait économiser d'argent (spoiler : je paie autant qu'avant, voire plus). Ce qu'il m'apporte, c'est une compréhension plus profonde des systèmes avec lesquels je travaille.
|
||||
|
||||
Le self-hosting n'est pas qu'une question de coûts (spoiler : je paie autant qu'avant, voire plus), mais d'apprentissage, de maîtrise et de compréhension profonde des systèmes.
|
||||
|
||||
Pour un ingénieur réseau ou DevOps, c'est l'environnement idéal pour reproduire des cas d'usage professionnels et monter en compétences.
|
||||
Pour un ingénieur réseau ou DevOps, c'est un bon environnement pour reproduire des cas d'usage professionnels et monter en compétences.
|
||||
|
||||
## Ressources
|
||||
|
||||
@@ -591,7 +586,7 @@ Pour un ingénieur réseau ou DevOps, c'est l'environnement idéal pour reprodui
|
||||
- [ContainerLab](https://containerlab.dev/)
|
||||
- [Nginx Proxy Manager](https://nginxproxymanager.com/)
|
||||
|
||||
### Mes Repos
|
||||
### Mes repos
|
||||
- [Blog Hugo](https://gitea.arnodo.fr/Damien/blog)
|
||||
- [Network Labs](https://gitea.arnodo.fr/Damien/arista-evpn-vxlan-clab) (topologies ContainerLab)
|
||||
- [Scaleway Scripts](https://gitea.arnodo.fr/Damien/scaleway-automation)
|
||||
|
||||
Reference in New Issue
Block a user