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)
|
||||
|
||||
Reference in New Issue
Block a user