Update documentation for clarity and consistency
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:
Damien
2026-07-19 15:09:56 +02:00
parent 0edec585a7
commit 2d8830960b
22 changed files with 485 additions and 553 deletions

View File

@@ -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
![Architecture](global_architecture.en.svg)
### 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)