Compare commits

...

58 Commits

Author SHA1 Message Date
abb69fac66 Merge pull request 'blog/scaleway_migration' (#22) from blog/scaleway_migration into main
Add new blog post :
Migration from GitHub to Gitea and AWS to Scaleway
2025-11-21 17:39:12 +00:00
darnodo
d3307429a6 Fix: Correct typo "automation" to "automatisation"
All checks were successful
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Successful in 26s
2025-11-21 18:37:36 +01:00
darnodo
ee68666b0a Fix SVG visibility in dark mode
Invert SVG colors in dark mode to improve visibility. Also, override
OS-level dark mode when the site is in light mode to ensure the correct
theme is used.
2025-11-21 17:29:34 +01:00
darnodo
b25b8ccbe9 Update deployment workflow for Gitea
Use a self-hosted runner and deploy to Scaleway.
2025-11-20 17:38:21 +01:00
darnodo
b093c5a6b4 feat: Add Proxmox and Gitea images to tech banner 2025-11-20 17:37:03 +01:00
darnodo
0125eecb4a Merge branch 'main' into blog/scaleway_migration 2025-11-20 14:41:30 +01:00
f6cb68945c Merge pull request 'Change tech banner animation speed' (#21) from fix(TechBanner) into main
Reviewed-on: #21
2025-11-20 13:38:28 +00:00
darnodo
62e1d134ed Change tech banner animation speed
All checks were successful
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Successful in 21s
Set animation speed to 60s for the tech banner in French homepage and
the tech-banner shortcode.
2025-11-20 14:37:57 +01:00
darnodo
e944ac175b feat: Add French blog and first article
This commit adds the French blog section and the first article
describing the author's personal infrastructure setup using Gitea,
Scaleway, and other tools. It covers topics like self-hosting, hybrid
cloud, and network engineering.
2025-11-20 14:31:48 +01:00
darnodo
e6bc9fe80e Add blog feature to homepage and menu
Adds a blog feature card to the homepage and adds a blog entry to the
main menu. Updates the configuration to enable blog features.
2025-11-20 14:31:37 +01:00
7bc92e0923 Merge pull request 'Add sidebar: open: true to French docs' (#20) from menu_rework into main
Reviewed-on: #20
2025-11-20 09:40:52 +00:00
darnodo
3964d23b00 Add sidebar: open: true to French docs
All checks were successful
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Successful in 52s
Opens the sidebar by default for French documentation.
2025-11-20 10:40:21 +01:00
c9143bc108 Merge pull request '`` feat: Add french tech banner and styles ``' (#19) from update-ci into main
Reviewed-on: #19
2025-11-20 09:20:38 +00:00
2653b3d3a3 Merge branch 'main' into update-ci
All checks were successful
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Successful in 26s
2025-11-20 09:20:23 +00:00
darnodo
1aca706a4e `` feat: Add french tech banner and styles `` 2025-11-20 10:19:52 +01:00
1959778062 Merge pull request 'Install Hugo and Deploy to Scaleway' (#18) from update-ci into main
Reviewed-on: #18
2025-11-19 19:20:19 +00:00
921bd00faf Merge branch 'main' into update-ci
All checks were successful
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Successful in 23s
2025-11-19 19:20:08 +00:00
darnodo
894e259c33 Install Hugo and Deploy to Scaleway
- Added wget to install dependencies
- Changed the Hugo install process to use the deb package
- Changed the Hugo deploy command to use Scaleway
2025-11-19 20:19:47 +01:00
16918d2614 Merge pull request 'Fix deployment working directory' (#17) from update-ci into main
Reviewed-on: #17
2025-11-19 17:04:58 +00:00
d2e177e9f8 Merge branch 'main' into update-ci
Some checks failed
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Failing after 18s
2025-11-19 17:04:47 +00:00
darnodo
ab68a5952c Fix deployment working directory 2025-11-19 18:02:04 +01:00
8b39e2c8ad Merge pull request 'Fix deploy workflow to use self-hosted runner' (#16) from update-ci into main
Reviewed-on: #16
2025-11-19 16:59:57 +00:00
b15474de3f Merge branch 'main' into update-ci
Some checks failed
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Failing after 21s
2025-11-19 16:59:48 +00:00
darnodo
d2fa4f8ee3 Fix deploy workflow to use self-hosted runner 2025-11-19 17:59:19 +01:00
dcdacfa034 Merge pull request 'Update deploy.yml' (#15) from update-ci into main
Reviewed-on: #15
2025-11-19 16:57:24 +00:00
3a75628454 Merge branch 'main' into update-ci
Some checks failed
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Failing after 6s
2025-11-19 16:56:56 +00:00
darnodo
a001a57528 Update deploy.yml 2025-11-19 17:56:31 +01:00
189241002c Update .gitea/workflows/deploy.yml 2025-11-19 16:54:28 +00:00
76423ee1fd Merge pull request 'Refactor Hugo deploy workflow' (#14) from update-ci into main
Reviewed-on: #14
2025-11-19 16:53:05 +00:00
6cc362b85a Merge branch 'main' into update-ci
Some checks failed
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Has been cancelled
2025-11-19 16:52:58 +00:00
darnodo
4372dae142 Refactor Hugo deploy workflow
The deployment workflow was rewritten to use Hugo's built-in deploy
feature. This simplifies the overall process and removes external
dependencies.
2025-11-19 17:52:31 +01:00
6eae2592ed Merge pull request 'Deploy to Scaleway object storage' (#13) from update-ci into main
Reviewed-on: #13
2025-11-19 16:25:22 +00:00
6c8c364399 Merge branch 'main' into update-ci
Some checks failed
Deploy to Scaleway / build-and-deploy (pull_request) Failing after 24s
2025-11-19 16:25:14 +00:00
darnodo
264c7faee1 Deploy to Scaleway object storage
Set S3 signature version to s3v4 and add region.
2025-11-19 17:24:57 +01:00
b8b9aca5ae Merge pull request 'Fix Scaleway deployment secrets' (#12) from update-ci into main
Reviewed-on: #12
2025-11-19 16:19:24 +00:00
8ffaceded7 Merge branch 'main' into update-ci
Some checks failed
Deploy to Scaleway / build-and-deploy (pull_request) Failing after 31s
2025-11-19 16:19:14 +00:00
darnodo
332c02e544 Fix Scaleway deployment secrets
The deployment workflow was using the wrong secret names for accessing
Scaleway resources. This commit corrects those names to the correct
ones.
2025-11-19 17:18:46 +01:00
caa3f2e617 Merge pull request 'Install AWS CLI and deploy with S3 sync' (#11) from update-ci into main
Reviewed-on: #11
2025-11-19 16:13:11 +00:00
6b9655f0b1 Merge branch 'main' into update-ci
Some checks failed
Deploy to Scaleway / build-and-deploy (pull_request) Failing after 40s
2025-11-19 16:13:02 +00:00
darnodo
6c5debee3f Install AWS CLI and deploy with S3 sync
The Hugo native deployment was not working correctly with the Scaleway
object storage. This commit installs the AWS CLI and uses `aws s3 sync`
instead.
2025-11-19 17:12:35 +01:00
fb863f9b78 Merge pull request 'Fix: Update Scaleway deployment and Hugo config' (#10) from update-ci into main
Reviewed-on: #10
2025-11-19 16:10:44 +00:00
darnodo
a44b42eb97 Fix: Update Scaleway deployment and Hugo config
Some checks failed
Deploy to Scaleway / build-and-deploy (pull_request) Failing after 8s
- Use correct environment variables for Scaleway deployment
- Install Scaleway CLI to purge CDN cache
- Add deployment target for S3
2025-11-19 17:09:32 +01:00
e259d05121 Merge pull request 'Update .gitea/workflows/deploy.yml' (#9) from update-ci into main
Reviewed-on: #9
2025-11-19 15:48:30 +00:00
5ad89847c6 Merge branch 'main' into update-ci
Some checks failed
Deploy to Scaleway / build-and-deploy (pull_request) Failing after 8s
2025-11-19 15:48:19 +00:00
adaa7b9db1 Update .gitea/workflows/deploy.yml 2025-11-19 15:47:59 +00:00
4c91280811 Merge pull request 'Update .gitea/workflows/deploy.yml' (#8) from update-ci into main
Reviewed-on: #8
2025-11-19 15:40:09 +00:00
9351624142 Update .gitea/workflows/deploy.yml
Some checks failed
Deploy to Scaleway / build-and-deploy (pull_request) Failing after 12s
2025-11-19 15:39:44 +00:00
077d424e67 Merge pull request 'Update README.md' (#7) from update-ci into main
Reviewed-on: #7
2025-11-19 15:33:43 +00:00
1bf32c7507 Update README.md
Some checks failed
Deploy to Scaleway / build-and-deploy (pull_request) Failing after 1m4s
2025-11-19 15:33:33 +00:00
f506db32af Update .gitea/workflows/deploy.yml 2025-11-19 15:32:18 +00:00
d0c5203173 Merge pull request 'Update .gitea/workflows/deploy.yml' (#6) from update_ci into main
Reviewed-on: #6
2025-11-19 15:28:16 +00:00
bbe1a5d05d Update .gitea/workflows/deploy.yml
Some checks failed
Deploy to Scaleway / build-and-deploy (pull_request) Failing after 1m11s
2025-11-19 15:27:58 +00:00
af4df87d1a Merge pull request 'Update .gitea/workflows/deploy.yml' (#5) from update_ci into main
Reviewed-on: #5
2025-11-19 15:24:37 +00:00
7431e861be Update .gitea/workflows/deploy.yml
Some checks failed
Deploy to Scaleway / build-and-deploy (pull_request) Failing after 1m11s
2025-11-19 15:24:17 +00:00
2649b60762 Merge pull request 'Update .gitea/workflows/deploy.yml' (#4) from update_ci into main
Reviewed-on: #4
2025-11-19 15:21:03 +00:00
67b08b6124 Update .gitea/workflows/deploy.yml
Some checks failed
Deploy to Scaleway / build-and-deploy (pull_request) Failing after 1s
2025-11-19 15:20:51 +00:00
3b8a4461c7 Merge pull request 'Update README.md' (#3) from test-runner into main
Reviewed-on: #3
2025-11-19 14:58:07 +00:00
946fa0dafe Update README.md
Some checks failed
Deploy to Scaleway / build-and-deploy (pull_request) Failing after 9s
2025-11-19 14:57:49 +00:00
23 changed files with 1157 additions and 111 deletions

View File

@@ -1,4 +1,4 @@
name: Deploy to Scaleway name: Build and Deploy Hugo
on: on:
pull_request: pull_request:
@@ -7,40 +7,38 @@ on:
- main - main
jobs: jobs:
build-and-deploy: build_and_deploy:
if: github.event.pull_request.merged == true if: github.event.pull_request.merged == true
name: Deploy Hugo Website
runs-on: self-hosted runs-on: self-hosted
container: container:
image: scaleway/cli:latest image: debian:bookworm-slim
steps: steps:
- name: Install dependencies
run: |
apt-get update
apt-get install -y git curl ca-certificates wget
- name: Install Hugo
run: |
wget https://github.com/gohugoio/hugo/releases/download/v0.152.2/hugo_extended_withdeploy_0.152.2_linux-amd64.deb -O /tmp/hugo.deb
dpkg -i /tmp/hugo.deb
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: "latest"
extended: true
- name: Build Hugo site
run: hugo --minify
- name: Configure Scaleway CLI
run: | run: |
scw init access-key=${{ secrets.SCW_ACCESS_KEY }} \ git clone --recurse-submodules https://gitea.arnodo.fr/Damien/Notebook.git /tmp/workspace
secret-key=${{ secrets.SCW_SECRET_KEY }} \ cd /tmp/workspace
default-organization-id=${{ secrets.SCW_ORGANIZATION_ID }} \ git checkout ${{ github.sha }}
default-region=fr-par
- name: Deploy to Object Storage - name: Build site
run: | run: /usr/local/bin/hugo
scw object cp public/ s3://notebook-arnodo-fr/ --recursive working-directory: /tmp/workspace
- name: Purge CDN Cache (optional) - name: Deploy to Scaleway
run: | run: /usr/local/bin/hugo deploy --force --maxDeletes -1
scw edge-services pipeline purge pipeline-id=${{ secrets.SCW_PIPELINE_ID }} working-directory: /tmp/workspace
env:
AWS_ACCESS_KEY_ID: ${{ secrets.SCW_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SCW_SECRET_KEY }}

109
README.md
View File

@@ -9,88 +9,55 @@ Enjoy your reading!
## Deploiment ## Deploiment
This GitHub page is based on Hugo and deployed using GitHub Actions This Gitea page is based on Hugo and deployed using GitHub Actions
For more details about [HowTo](https://gohugo.io/hosting-and-deployment/hosting-on-github/) For more details about [HowTo](https://gohugo.io/hosting-and-deployment/hosting-on-github/)
Workflow used : Workflow used :
```yaml ```yaml
# Sample workflow for building and deploying a Hugo site to GitHub Pages name: Build and Deploy Hugo
name: Deploy Hugo site to Pages
on: on:
# Runs on pushes targeting the default branch pull_request:
push: types: [closed]
branches: branches:
- main - main
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
# Default to bash
defaults:
run:
shell: bash
jobs: jobs:
# Build job build_and_deploy:
build: if: github.event.pull_request.merged == true
runs-on: ubuntu-latest name: Deploy Hugo Website
env: runs-on: self-hosted
HUGO_VERSION: 0.141.0
steps: container:
- name: Install Hugo CLI image: debian:bookworm-slim
run: |
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Install Dart Sass
run: sudo snap install dart-sass
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Install Node.js dependencies
run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
- name: Build with Hugo
env:
HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
HUGO_ENVIRONMENT: production
TZ: America/Los_Angeles
run: |
hugo \
--gc \
--minify \
--baseURL "${{ steps.pages.outputs.base_url }}/"
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./public
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps: steps:
- name: Deploy to GitHub Pages - name: Install dependencies
id: deployment run: |
uses: actions/deploy-pages@v4 apt-get update
apt-get install -y git curl ca-certificates wget
- name: Install Hugo
run: |
wget https://github.com/gohugoio/hugo/releases/download/v0.152.2/hugo_extended_withdeploy_0.152.2_linux-amd64.deb -O /tmp/hugo.deb
dpkg -i /tmp/hugo.deb
- name: Checkout code
run: |
git clone --recurse-submodules https://gitea.arnodo.fr/Damien/Notebook.git /tmp/workspace
cd /tmp/workspace
git checkout ${{ github.sha }}
- name: Build site
run: /usr/local/bin/hugo
working-directory: /tmp/workspace
- name: Deploy to Scaleway
run: /usr/local/bin/hugo deploy --force --maxDeletes -1
working-directory: /tmp/workspace
env:
AWS_ACCESS_KEY_ID: ${{ secrets.SCW_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SCW_SECRET_KEY }}
``` ```

23
assets/css/custom.css Normal file
View File

@@ -0,0 +1,23 @@
/* Fix SVG visibility in dark mode by inverting colors */
.dark svg {
filter: invert(1) hue-rotate(180deg);
}
/* Counter-invert images within SVGs to preserve their original colors */
.dark svg image {
filter: invert(1) hue-rotate(180deg);
}
/* Fix tech-banner gradient overlays to respect site theme, not OS theme */
:root {
--color-bg: #ffffff;
}
.dark {
--color-bg: #111111 !important;
}
/* Override OS-level dark mode when site is in light mode */
html:not(.dark) {
--color-bg: #ffffff !important;
}

View File

@@ -42,11 +42,71 @@ layout: hextra-home
imageClass="hx:top-[40%] hx:left-[36px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80" imageClass="hx:top-[40%] hx:left-[36px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
style="background: radial-gradient(ellipse at 50% 80%,rgba(203, 28, 66, 0.1),hsla(0,0%,100%,0));" style="background: radial-gradient(ellipse at 50% 80%,rgba(203, 28, 66, 0.1),hsla(0,0%,100%,0));"
>}} >}}
{{< hextra/feature-card
title="Blog"
subtitle="Retours d'expérience et articles techniques"
link="blog"
class="hx:aspect-auto hx:md:aspect-[1.1/1] hx:max-md:min-h-[340px]"
image="/images/blog.png"
imageClass="hx:top-[40%] hx:left-[36px] hx:w-[180%] hx:sm:w-[110%] hx:dark:opacity-80"
style="background: radial-gradient(ellipse at 50% 80%,rgba(142, 68, 173, 0.1),hsla(0,0%,100%,0));"
>}}
{{< /hextra/feature-grid >}} {{< /hextra/feature-grid >}}
<div style="margin-top: 8rem; margin-bottom: 1.5rem;"> <div style="margin-top: 8rem; margin-bottom: 1.5rem;">
<h2 class="hx:text-right hx:text-3xl hx:font-semibold hx:text-gray-900 hx:dark:text-gray-100" style="margin-bottom: 1.5rem;"> <div style="text-align: center; margin-bottom: 3rem;">
Technologies utilisés <h2 class="tech-title" style="
font-size: clamp(2rem, 5vw, 3.5rem);
font-weight: 800;
background: linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%);
background-size: 200% 200%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
animation: gradient-shift 4s ease infinite;
letter-spacing: -0.02em;
margin: 0;
padding: 0.5rem 0;
">
Technologies utilisées
</h2> </h2>
<img src="images/tech-banner.png" alt="Technologies utilisées" class="hx:mx-auto hx:max-w-full hx:h-auto" /> <p style="
color: #6b7280;
font-size: 1rem;
margin-top: 0.75rem;
font-weight: 400;
" class="dark:text-gray-400">
Les outils et plateformes avec lesquels je travaille
</p>
</div>
{{< tech-banner speed="60s" height="80px" gap="4rem" >}}
</div> </div>
<style>
@keyframes gradient-shift {
0%, 100% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
}
@media (prefers-color-scheme: dark) {
.tech-title {
background: linear-gradient(135deg, #a78bfa 0%, #ec4899 50%, #fbbf24 100%) !important;
background-size: 200% 200% !important;
-webkit-background-clip: text !important;
-webkit-text-fill-color: transparent !important;
background-clip: text !important;
}
}
[data-theme="dark"] .tech-title {
background: linear-gradient(135deg, #a78bfa 0%, #ec4899 50%, #fbbf24 100%) !important;
background-size: 200% 200% !important;
-webkit-background-clip: text !important;
-webkit-text-fill-color: transparent !important;
background-clip: text !important;
}
</style>

View File

@@ -0,0 +1,5 @@
---
title: "Blog"
---
Mes articles et retours d'expérience sur le réseau, les systèmes et le DevOps.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -0,0 +1,602 @@
---
title: "Self-Hosting et Cloud Hybride : Mon Infrastructure Perso avec Gitea et Scaleway"
date: 2025-11-20
authors:
- name: Damien
link: https://gitea.arnodo.fr/Damien
tags:
- Homelab
- DevOps
- Self-Hosting
- Network Engineering
---
Retour d'expérience sur la construction de mon infrastructure personnelle : migration de GitHub vers Gitea auto-hébergé, et déploiement de labs réseau éphémères sur Scaleway. Le tout avec Proxmox et Wireguard.
<!--more-->
## 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.
Mais plusieurs envies ont émergé :
- **Apprentissage** : Déployer et gérer un serveur Git complet avec CI/CD
- **Souveraineté** : Héberger mes données en France (à minima en Europe), contrôler mon infrastructure
- **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
![Architecture](global_architecture.fr.svg)
### Stack Technique
**Homelab** :
- **Proxmox VE** : Hyperviseur pour VMs et LXC
- **LXC Containers** : Gitea, runners, services divers
- **Ansible** : Gestion des configurations et mises à jour
- **Grafana/Prometheus/Loki** : Monitoring et supervision
**Exposition publique** :
- **Dedibox Scaleway** : Instance dédiée avec IP fixe
- **Nginx Proxy Manager** : Reverse proxy avec SSL automatique
- **Wireguard VPN** : Tunnel sécurisé entre Scaleway et homelab
**Cloud Scaleway** :
- **Object Storage** : Hébergement du blog Hugo (S3-compatible)
- **Instances** : Labs réseau éphémères provisionnés à la demande
- **Scaleway CLI** : Automatisation complète
## Partie 1 : Migration GitHub → Gitea Auto-Hébergé
### Pourquoi Gitea ?
[Gitea](https://gitea.io/) est un serveur Git leger, parfait pour du self-hosting :
- **Léger** : Idéal pour un LXC sur Proxmox
- **Compatible GitHub Actions** : Migration des workflows sans réécriture
- **Complet** : Issues, PRs, CI/CD, webhooks
- **Open-source** : Communauté active
### Déploiement avec Proxmox Helper Scripts
Plutôt que de tout configurer manuellement, j'utilise les excellents [Proxmox Helper Scripts](https://community-scripts.github.io/ProxmoxVE/) qui automatisent la création de LXC préconfigurés.
**Installation de Gitea** :
```bash
# Sur le nœud Proxmox, exécuter le script
bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/gitea.sh)"
```
Le script :
- Crée un LXC Debian 12
- Installe Gitea et sqlite
- Configure les services systemd
- Prépare l'environnement avec les bonnes permissions
**Configuration post-installation** :
- Accès web : `http://<IP_LXC>:3000`
- Configuration initiale via l'interface
- URL du site : `https://gitea.arnodo.fr`
### 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.
**La solution** :
1. **Dedibox Scaleway** avec IP publique fixe et Nginx Proxy Manager
2. **Wireguard VPN** entre la Dedibox et le homelab
3. Le reverse proxy route `gitea.arnodo.fr` vers l'IP privée du LXC via le tunnel
**Configuration Wireguard (côté homelab)** :
```ini
[Interface]
Address = 10.0.0.1/24
PrivateKey = <private_key>
ListenPort = 51820
[Peer]
# Dedibox Scaleway
PublicKey = <dedibox_public_key>
AllowedIPs = 10.0.0.2/32
Endpoint = <dedibox_public_ip>:51820
PersistentKeepalive = 25
```
**Nginx Proxy Manager** :
- Proxy Host : `gitea.arnodo.fr`
- Forward Hostname/IP : `10.0.0.x` (IP du LXC Gitea via Wireguard)
- Forward Port : `3000`
- SSL : Let's Encrypt automatique
- Websockets : Activés
### Gestion avec Ansible
Pour maintenir Gitea à jour et gérer les configurations, j'utilise Ansible.
**Playbook de mise à jour** (`update-gitea.yml`) :
```yaml
---
- name: Update Gitea
hosts: gitea
become: yes
tasks:
- name: Update apt cache
apt:
update_cache: yes
cache_valid_time: 3600
- name: Upgrade Gitea and system packages
apt:
upgrade: dist
autoremove: yes
autoclean: yes
- name: Restart Gitea service
systemd:
name: gitea
state: restarted
enabled: yes
- name: Check Gitea version
command: gitea --version
register: gitea_version
- debug:
msg: "{{ gitea_version.stdout }}"
```
**Exécution** :
```bash
ansible-playbook -i inventory.ini update-gitea.yml
```
### Monitoring avec Grafana
Gitea expose des métriques Prometheus (https://docs.gitea.com/administration/config-cheat-sheet#metrics-metrics)
Configuration :
**Dans Gitea (`app.ini`)** :
```ini
[metrics]
ENABLED = true
TOKEN = <secret_token>
```
**Prometheus scrape config** :
```yaml
scrape_configs:
- job_name: 'gitea'
metrics_path: /metrics
bearer_token: '<secret_token>'
static_configs:
- targets: ['<gitea_lxc_ip>:3000']
```
**Dashboard Grafana** (https://grafana.com/docs/grafana-cloud/monitor-infrastructure/integrations/integration-reference/integration-gitea/#gitea-integration-for-grafana-cloud) :
- Nombre de repositories, utilisateurs
- Requêtes HTTP (rate, latence)
- État des runners CI/CD
- Utilisation CPU/RAM du LXC
### 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.
### CI/CD : Déploiement Hugo vers Scaleway Object Storage
Mon blog Hugo se déploie automatiquement sur Scaleway Object Storage à chaque push.
**Installation de Gitea Runner** (https://docs.gitea.com/usage/actions/act-runner)
Créer lutilisateur système runner :
```bash
useradd -r -m -d /var/lib/gitea-runner -s /bin/bash gitea-runner
```
Voici un petit script qui peut aider à installer le runner directement dans un LXC:
```bash
sudo apt install -y jq curl tar # si pas déjà
LATEST=$(curl -s 'https://gitea.com/api/v1/repos/gitea/act_runner/releases' | jq -r '.[0].tag_name')
echo "Latest act_runner: $LATEST"
# construire URL de binaire (nommage used: act_runner-<os>-<arch>)
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m)
# Certains serveurs distribuent binaire sans tar; adapter si archive
URL="https://gitea.com/gitea/act_runner/releases/download/${LATEST}/act_runner-${LATEST#v}-${OS}-${ARCH}"
# essayer télécharger binaire
curl -fL "$URL" -o /tmp/act_runner || {
echo "Téléchargement direct échoué — vérifier le nom exact sur la page release." >&2
exit 1
}
sudo mv /tmp/act_runner /usr/local/bin/act_runner
sudo chmod +x /usr/local/bin/act_runner
```
et pour valider
```bash
/usr/local/bin/act_runner --version
```
>[!NOTE]
> Il est important d'enregistrer le runner pour qu'il soit reconnu par Gitea.
> Pour plus d'informations sur la configuration du runner, consultez la documentation officielle de Gitea.
> https://docs.gitea.io/fr/docs/usage/actions/runner/
**Workflow Gitea Actions** (`.gitea/workflows/deploy.yml`) :
```yaml
name: Build and Deploy Hugo
on:
pull_request:
types: [closed]
branches:
- main
jobs:
build_and_deploy:
if: github.event.pull_request.merged == true
name: Deploy Hugo Website
runs-on: self-hosted
container:
image: debian:bookworm-slim
steps:
- name: Install dependencies
run: |
apt-get update
apt-get install -y git curl ca-certificates wget
- name: Install Hugo
run: |
wget https://github.com/gohugoio/hugo/releases/download/v0.152.2/hugo_extended_withdeploy_0.152.2_linux-amd64.deb -O /tmp/hugo.deb
dpkg -i /tmp/hugo.deb
- name: Checkout code
run: |
git clone --recurse-submodules https://gitea.arnodo.fr/Damien/Notebook.git /tmp/workspace
cd /tmp/workspace
git checkout ${{ github.sha }}
- name: Build site
run: /usr/local/bin/hugo
working-directory: /tmp/workspace
- name: Deploy to Scaleway
run: /usr/local/bin/hugo deploy --force --maxDeletes -1
working-directory: /tmp/workspace
env:
AWS_ACCESS_KEY_ID: ${{ secrets.SCW_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SCW_SECRET_KEY }}
```
**Configuration Hugo** (`hugo.yaml`) :
```yaml
deployment:
targets:
- name: "notebook-arnodo-fr"
URL: "s3://notebook-arnodo-fr?endpoint=https://s3.fr-par.scw.cloud&region=fr-par"
```
**Configuration Scaleway Object Storage** :
1. Créer un bucket `notebook-arnodo-fr`
2. Activer le mode "Static Website Hosting"
3. Générer les credentials API (Access Key + Secret Key)
4. Les ajouter comme secrets dans Gitea (Settings > Secrets > Actions)
**Déploiement** :
```bash
git add .
git commit -m "New blog post"
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
### 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
**Concept** :
- Créer une instance Scaleway quand j'ai besoin d'un lab
- Installer automatiquement ContainerLab/le VPN via cloud-init
- Détruire l'instance après utilisation
- Facturation à l'heure (< 1€ pour quelques heures de lab)
### 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.
**Fonctionnalités** :
- **Création** : Instance + Security Group (SSH depuis mon IP uniquement)
- **Start/Stop** : Gestion de l'instance
- **Suppression** : Nettoyage complet (instance, volumes, IP, SG)
**Structure du script** (`scaleway-instance.sh`) :
```bash
#!/bin/bash
# Configuration
INSTANCE_NAME="NetLab"
ZONE="fr-par-1"
IMAGE="debian_bookworm"
VOLUME_SIZE=20 # GB
USER_DATA_FILE="user_data.txt"
SECURITY_GROUP_NAME="${INSTANCE_NAME}-SG"
# Détecte l'IP publique actuelle
get_public_ip() {
curl -4 -s ifconfig.me
}
# Crée un Security Group limitant SSH à l'IP publique
create_or_update_security_group() {
PUBLIC_IP=$(get_public_ip)
# Crée le SG avec inbound SSH uniquement depuis PUBLIC_IP/32
# ...
}
# Actions : create, start, stop, delete
case "$1" in
start)
# Démarre l'instance existante
scw instance server start "$INSTANCE_ID" --wait
;;
stop)
# Arrête l'instance
scw instance server stop "$INSTANCE_ID" --wait
;;
delete)
# Supprime instance + volumes + IP + SG
scw instance server terminate "$INSTANCE_ID" --with-ip --with-block
scw instance security-group delete "$SG_ID"
;;
*)
# Crée une nouvelle instance
create_instance "$1" # Type d'instance (DEV1-S, GP1-XS, ...)
;;
esac
```
### Cloud-Init : Configuration Automatique
Le fichier `user_data.txt` contient les instructions cloud-init pour provisionner l'instance automatiquement.
**Exemple** (`user_data.txt`) :
```yaml
#cloud-config
package_update: true
package_upgrade: true
packages:
- git
- curl
- docker.io
- docker-compose
runcmd:
# Installation de ContainerLab
- bash -c "$(curl -sL https://get.containerlab.dev)"
# Clone d'un repo avec des topologies
- git clone https://gitea.arnodo.fr/Damien/network-labs.git /root/labs
# Démarrage d'une topologie par défaut
- cd /root/labs && containerlab deploy -t spine-leaf.clab.yml
```
### Utilisation Pratique
**Créer un lab** :
```bash
# Crée une instance DEV1-S avec 20 GB de stockage
./scaleway-instance.sh DEV1-S 20
# Attend quelques minutes pour cloud-init
# Récupère l'IP publique
scw instance server list name=NetLab -o json | jq -r '.servers[0].public_ip.address'
# SSH vers l'instance
ssh root@<IP_PUBLIQUE>
# ContainerLab est déjà lancé !
containerlab inspect
```
**Détruire le lab** :
```bash
./scaleway-instance.sh delete
```
### Intégration avec Raycast
Pour simplifier encore plus, j'ai créé un script Raycast qui me permet de gérer mes instances directement depuis mon Mac.
**Script Raycast** :
```bash
#!/bin/bash
# @raycast.schemaVersion 1
# @raycast.title Scaleway Instance
# @raycast.mode silent
# @raycast.icon 🖥️
# @raycast.argument1 { "type": "text", "placeholder": "Action or instance type" }
# @raycast.argument2 { "type": "text", "placeholder": "Volume size", "optional": true }
# @raycast.packageName NetLab
/path/to/scaleway-instance.sh "$1" "$2"
```
**Utilisation** :
- `⌘ + Space` → "Scaleway Instance DEV1-S" → Crée l'instance
- `⌘ + Space` → "Scaleway Instance delete" → Supprime l'instance
### Cas d'Usage : Lab BGP/EVPN avec Arista
**Topologie ContainerLab** (`spine-leaf.clab.yml`) :
```yaml
name: evpn-lab
topology:
nodes:
spine1:
kind: ceos
image: ceos:latest
spine2:
kind: ceos
image: ceos:latest
leaf1:
kind: ceos
image: ceos:latest
leaf2:
kind: ceos
image: ceos:latest
links:
- endpoints: ["spine1:eth1", "leaf1:eth1"]
- endpoints: ["spine1:eth2", "leaf2:eth1"]
- endpoints: ["spine2:eth1", "leaf1:eth2"]
- endpoints: ["spine2:eth2", "leaf2:eth2"]
```
**Workflow** :
1. Créer l'instance Scaleway
2. Cloud-init déploie la topologie
3. Configurer BGP/EVPN via Ansible ou manuellement
4. Tester, expérimenter
5. Détruire l'instance
**Coût** : Instance DEV1-S (2 vCPU, 2GB) = ~0.015€/heure. 4 heures de lab = 0.06€.
## Souveraineté Numérique : Pourquoi C'est Important
Cette infrastructure hybride reflète une conviction personnelle sur la souveraineté numérique.
### Le Contexte
Dans mon travail d'ingénieur réseau, je vois l'importance de la maîtrise de ses infrastructures.
Choisir Scaleway (groupe Iliad, français) et self-hoster Gitea, c'est :
- **Soutenir l'écosystème tech européen**
- **Garantir la protection RGPD** : Juridiction française
- **Réduire la latence** : Datacenters à Paris
- **Comprendre** : Maîtriser sa chaîne complète
### 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
- Comprendre en profondeur les mécanismes CI/CD
- Expérimenter sans limite
- Reproduire des environnements professionnels
## Bilan
### Ce qui Fonctionne Bien
**Gitea auto-hébergé** :
- Très rapide et stable
- Proxmox Helper Scripts = installation en 5 minutes
- Ansible gère les mises à jour proprement
- Grafana surveille tout
**Wireguard + Nginx Proxy Manager** :
- Exposition sécurisée du homelab
- Performances excellentes
- Configuration simple
**Labs Scaleway** :
- Provisionnement en 3 minutes
- Flexibilité totale (taille, durée)
- Coûts prévisibles (facturation à l'heure)
**CI/CD Hugo → Scaleway Object Storage** :
- Push to deploy en 2 minutes
- Gratuit (quelques centimes/mois pour le stockage)
- CDN intégré = site ultra rapide
### Les Défis
**Complexité initiale** :
- Wireguard + reverse proxy = courbe d'apprentissage
- Première configuration Proxmox/LXC = quelques heures
**Maintenance** :
- Responsabilité des mises à jour (heureusement Ansible aide !)
- Monitoring à configurer soi-même
- Sauvegardes à automatiser
**Dépendances** :
- Si la Dedibox tombe, Gitea n'est plus accessible
- Solution : Failover avec une 2e Dedibox ou VPS (à venir)
## Prochaines Étapes
- **Haute disponibilité** : Seconde Dedibox pour du failover
- **Backup automatique** : Scripts pour sauvegarder Gitea vers Scaleway Object Storage
- **Plus d'automatisation** : Terraform pour provisionner toute l'infra Scaleway
- **MCP Arista** : Développer un serveur MCP pour interagir avec les équipements réseau via LLM Locaux
- **Intégration Netbox** : Webhook depuis Netbox vers pipeline de validation réseau
## Conclusion
Cette infrastructure hybride (homelab Proxmox + cloud Scaleway) offre le meilleur des deux mondes :
- **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 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.
## Ressources
### Documentation
- [Gitea](https://docs.gitea.io/)
- [Proxmox Helper Scripts](https://community-scripts.github.io/ProxmoxVE/)
- [Scaleway CLI](https://www.scaleway.com/en/cli/)
- [ContainerLab](https://containerlab.dev/)
- [Nginx Proxy Manager](https://nginxproxymanager.com/)
### 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)
### Communauté
- [Proxmox Forum](https://forum.proxmox.com/)
- [r/homelab](https://reddit.com/r/homelab)
- [ContainerLab Slack](https://containerlab.dev/)

View File

@@ -1,5 +1,7 @@
--- ---
title: "VXLAN" title: "VXLAN"
sidebar:
open: true
cascade: cascade:
type: docs type: docs
--- ---

View File

@@ -1,5 +1,7 @@
--- ---
title: "Sécurité" title: "Sécurité"
sidebar:
open: true
cascade: cascade:
type: docs type: docs
--- ---

View File

@@ -1,5 +1,7 @@
--- ---
title: "Automatisation réseau" title: "Automatisation réseau"
sidebar:
open: true
cascade: cascade:
type: docs type: docs
--- ---

View File

@@ -2,6 +2,8 @@
title: "Mon Premier Lab" title: "Mon Premier Lab"
date: 2025-02-14T12:00:00+02:00 date: 2025-02-14T12:00:00+02:00
weight: 2 weight: 2
sidebar:
open: true
cascade: cascade:
type: docs type: docs
--- ---

View File

@@ -1,5 +1,7 @@
--- ---
title: "Sécurité" title: "Sécurité"
sidebar:
open: true
cascade: cascade:
type: docs type: docs
--- ---

View File

@@ -116,3 +116,4 @@ hugo: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="cu
html: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M1.5 0h21l-1.91 21.563L11.977 24l-8.564-2.438L1.5 0zm7.031 9.75l-.232-2.718 10.059.003.23-2.622L5.412 4.41l.698 8.01h9.126l-.326 3.426-2.91.804-2.955-.81-.188-2.11H6.248l.33 4.171L12 19.351l5.379-1.443.744-8.157H8.531z"/></svg> html: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M1.5 0h21l-1.91 21.563L11.977 24l-8.564-2.438L1.5 0zm7.031 9.75l-.232-2.718 10.059.003.23-2.622L5.412 4.41l.698 8.01h9.126l-.326 3.426-2.91.804-2.955-.81-.188-2.11H6.248l.33 4.171L12 19.351l5.379-1.443.744-8.157H8.531z"/></svg>
mdbook: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M22.77 5.343c.023.337 0 .613-.073.817l-4.314 14.227c-.072.252-.24.445-.504.6a1.67 1.67 0 0 1-.805.23H3.772c-1.154 0-1.839-.337-2.079-1.01-.096-.264-.096-.469.012-.625.108-.144.288-.216.553-.216h12.52c.89 0 1.514-.168 1.85-.493.337-.324.686-1.07 1.034-2.21l3.954-13.05c.216-.71.12-1.334-.265-1.875-.384-.54-.937-.817-1.646-.817H8.735c-.12 0-.373.048-.734.132l.012-.048A2.458 2.458 0 0 0 7.33.933a.979.979 0 0 0-.517.168 1.794 1.794 0 0 0-.385.337c-.096.12-.18.264-.276.456a5.76 5.76 0 0 0-.228.517 7.95 7.95 0 0 1-.217.505c-.084.18-.156.324-.24.444-.06.073-.144.18-.24.3-.096.121-.193.241-.265.337a.776.776 0 0 0-.132.265c-.024.084-.012.216.024.384.036.168.048.289.048.373-.036.36-.168.829-.396 1.394-.229.564-.433.973-.613 1.213a5.201 5.201 0 0 1-.312.325c-.169.168-.277.312-.313.444-.036.048-.036.18-.012.409.036.216.048.372.036.456-.036.325-.156.757-.36 1.298a9.47 9.47 0 0 1-.601 1.322c-.024.06-.108.168-.24.336-.133.168-.217.3-.24.409-.025.072-.013.216.011.408.024.193.024.337-.012.433-.072.36-.216.805-.432 1.322-.217.516-.433.949-.65 1.321-.06.097-.131.205-.24.337-.096.132-.18.24-.24.336a.927.927 0 0 0-.12.3.53.53 0 0 0 .048.277c.036.132.048.228.048.313-.012.132-.024.312-.06.528-.024.216-.048.349-.048.385-.216.576-.204 1.19.024 1.826.264.745.745 1.382 1.43 1.899.685.516 1.406.769 2.139.769H17.05c.625 0 1.214-.205 1.767-.625.553-.42.925-.937 1.105-1.55l3.966-13.05c.216-.696.12-1.31-.265-1.862-.204-.3-.48-.505-.853-.649ZM7.16 15.677l1.707-5.143h1.297c.457 0 3.46-.204 3.052 2.103-.408 2.307-2.259 3.028-4.422 3.052-2.162.024-1.634-.012-1.634-.012zm2.283-.721c.565-.012 2.271-.349 2.656-2.055.384-1.706-1.382-1.61-1.382-1.61h-1.07l-1.225 3.665c.012.012.469.012 1.021 0zm-.396-5.78 1.646-5.107h1.178l.096 4.086 2.835-4.086h1.19l-1.634 5.107h-.853l1.502-4.253-2.944 4.253h-.817l-.096-4.205-1.298 4.205z"/></svg> mdbook: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M22.77 5.343c.023.337 0 .613-.073.817l-4.314 14.227c-.072.252-.24.445-.504.6a1.67 1.67 0 0 1-.805.23H3.772c-1.154 0-1.839-.337-2.079-1.01-.096-.264-.096-.469.012-.625.108-.144.288-.216.553-.216h12.52c.89 0 1.514-.168 1.85-.493.337-.324.686-1.07 1.034-2.21l3.954-13.05c.216-.71.12-1.334-.265-1.875-.384-.54-.937-.817-1.646-.817H8.735c-.12 0-.373.048-.734.132l.012-.048A2.458 2.458 0 0 0 7.33.933a.979.979 0 0 0-.517.168 1.794 1.794 0 0 0-.385.337c-.096.12-.18.264-.276.456a5.76 5.76 0 0 0-.228.517 7.95 7.95 0 0 1-.217.505c-.084.18-.156.324-.24.444-.06.073-.144.18-.24.3-.096.121-.193.241-.265.337a.776.776 0 0 0-.132.265c-.024.084-.012.216.024.384.036.168.048.289.048.373-.036.36-.168.829-.396 1.394-.229.564-.433.973-.613 1.213a5.201 5.201 0 0 1-.312.325c-.169.168-.277.312-.313.444-.036.048-.036.18-.012.409.036.216.048.372.036.456-.036.325-.156.757-.36 1.298a9.47 9.47 0 0 1-.601 1.322c-.024.06-.108.168-.24.336-.133.168-.217.3-.24.409-.025.072-.013.216.011.408.024.193.024.337-.012.433-.072.36-.216.805-.432 1.322-.217.516-.433.949-.65 1.321-.06.097-.131.205-.24.337-.096.132-.18.24-.24.336a.927.927 0 0 0-.12.3.53.53 0 0 0 .048.277c.036.132.048.228.048.313-.012.132-.024.312-.06.528-.024.216-.048.349-.048.385-.216.576-.204 1.19.024 1.826.264.745.745 1.382 1.43 1.899.685.516 1.406.769 2.139.769H17.05c.625 0 1.214-.205 1.767-.625.553-.42.925-.937 1.105-1.55l3.966-13.05c.216-.696.12-1.31-.265-1.862-.204-.3-.48-.505-.853-.649ZM7.16 15.677l1.707-5.143h1.297c.457 0 3.46-.204 3.052 2.103-.408 2.307-2.259 3.028-4.422 3.052-2.162.024-1.634-.012-1.634-.012zm2.283-.721c.565-.012 2.271-.349 2.656-2.055.384-1.706-1.382-1.61-1.382-1.61h-1.07l-1.225 3.665c.012.012.469.012 1.021 0zm-.396-5.78 1.646-5.107h1.178l.096 4.086 2.835-4.086h1.19l-1.634 5.107h-.853l1.502-4.253-2.944 4.253h-.817l-.096-4.205-1.298 4.205z"/></svg>
nuxt: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M13.4642 19.8295h8.9218c.2834 0 .5618-.0723.8072-.2098a1.5899 1.5899 0 0 0 .5908-.5732 1.5293 1.5293 0 0 0 .216-.783 1.529 1.529 0 0 0-.2167-.7828L17.7916 7.4142a1.5904 1.5904 0 0 0-.5907-.573 1.6524 1.6524 0 0 0-.807-.2099c-.2833 0-.5616.0724-.807.2098a1.5904 1.5904 0 0 0-.5907.5731L13.4642 9.99l-2.9954-5.0366a1.5913 1.5913 0 0 0-.591-.573 1.6533 1.6533 0 0 0-.8071-.2098c-.2834 0-.5617.0723-.8072.2097a1.5913 1.5913 0 0 0-.591.573L.2168 17.4808A1.5292 1.5292 0 0 0 0 18.2635c-.0001.2749.0744.545.216.783a1.59 1.59 0 0 0 .5908.5732c.2454.1375.5238.2098.8072.2098h5.6003c2.219 0 3.8554-.9454 4.9813-2.7899l2.7337-4.5922L16.3935 9.99l4.3944 7.382h-5.8586ZM7.123 17.3694l-3.9083-.0009 5.8586-9.8421 2.9232 4.921-1.9572 3.2892c-.7478 1.1967-1.5972 1.6328-2.9163 1.6328z"/></svg> nuxt: <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M13.4642 19.8295h8.9218c.2834 0 .5618-.0723.8072-.2098a1.5899 1.5899 0 0 0 .5908-.5732 1.5293 1.5293 0 0 0 .216-.783 1.529 1.529 0 0 0-.2167-.7828L17.7916 7.4142a1.5904 1.5904 0 0 0-.5907-.573 1.6524 1.6524 0 0 0-.807-.2099c-.2833 0-.5616.0724-.807.2098a1.5904 1.5904 0 0 0-.5907.5731L13.4642 9.99l-2.9954-5.0366a1.5913 1.5913 0 0 0-.591-.573 1.6533 1.6533 0 0 0-.8071-.2098c-.2834 0-.5617.0723-.8072.2097a1.5913 1.5913 0 0 0-.591.573L.2168 17.4808A1.5292 1.5292 0 0 0 0 18.2635c-.0001.2749.0744.545.216.783a1.59 1.59 0 0 0 .5908.5732c.2454.1375.5238.2098.8072.2098h5.6003c2.219 0 3.8554-.9454 4.9813-2.7899l2.7337-4.5922L16.3935 9.99l4.3944 7.382h-5.8586ZM7.123 17.3694l-3.9083-.0009 5.8586-9.8421 2.9232 4.921-1.9572 3.2892c-.7478 1.1967-1.5972 1.6328-2.9163 1.6328z"/></svg>
gitea: <svg version="1.1" id="main_outline" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" style="enable-background:new 0 0 640 640;" xml:space="preserve" viewBox="5.67 143.05 628.65 387.55"> <g> <path id="teabag" style="fill:#FFFFFF" d="M395.9,484.2l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5,21.2-17.9,33.8-11.8 c17.2,8.3,27.1,13,27.1,13l-0.1-109.2l16.7-0.1l0.1,117.1c0,0,57.4,24.2,83.1,40.1c3.7,2.3,10.2,6.8,12.9,14.4 c2.1,6.1,2,13.1-1,19.3l-61,126.9C423.6,484.9,408.4,490.3,395.9,484.2z"></path> <g> <g> <path style="fill:#000000" d="M622.7,149.8c-4.1-4.1-9.6-4-9.6-4s-117.2,6.6-177.9,8c-13.3,0.3-26.5,0.6-39.6,0.7c0,39.1,0,78.2,0,117.2 c-5.5-2.6-11.1-5.3-16.6-7.9c0-36.4-0.1-109.2-0.1-109.2c-29,0.4-89.2-2.2-89.2-2.2s-141.4-7.1-156.8-8.5 c-9.8-0.6-22.5-2.1-39,1.5c-8.7,1.8-33.5,7.4-53.8,26.9C-4.9,212.4,6.6,276.2,8,285.8c1.7,11.7,6.9,44.2,31.7,72.5 c45.8,56.1,144.4,54.8,144.4,54.8s12.1,28.9,30.6,55.5c25,33.1,50.7,58.9,75.7,62c63,0,188.9-0.1,188.9-0.1s12,0.1,28.3-10.3 c14-8.5,26.5-23.4,26.5-23.4s12.9-13.8,30.9-45.3c5.5-9.7,10.1-19.1,14.1-28c0,0,55.2-117.1,55.2-231.1 C633.2,157.9,624.7,151.8,622.7,149.8z M125.6,353.9c-25.9-8.5-36.9-18.7-36.9-18.7S69.6,321.8,60,295.4 c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5,38.5-30c13.8-3.7,31-3.1,31-3.1s7.1,59.4,15.7,94.2c7.2,29.2,24.8,77.7,24.8,77.7 S142.5,359.9,125.6,353.9z M425.9,461.5c0,0-6.1,14.5-19.6,15.4c-5.8,0.4-10.3-1.2-10.3-1.2s-0.3-0.1-5.3-2.1l-112.9-55 c0,0-10.9-5.7-12.8-15.6c-2.2-8.1,2.7-18.1,2.7-18.1L322,273c0,0,4.8-9.7,12.2-13c0.6-0.3,2.3-1,4.5-1.5c8.1-2.1,18,2.8,18,2.8 l110.7,53.7c0,0,12.6,5.7,15.3,16.2c1.9,7.4-0.5,14-1.8,17.2C474.6,363.8,425.9,461.5,425.9,461.5z"></path> <path style="fill:#000000" d="M326.8,380.1c-8.2,0.1-15.4,5.8-17.3,13.8c-1.9,8,2,16.3,9.1,20c7.7,4,17.5,1.8,22.7-5.4 c5.1-7.1,4.3-16.9-1.8-23.1l24-49.1c1.5,0.1,3.7,0.2,6.2-0.5c4.1-0.9,7.1-3.6,7.1-3.6c4.2,1.8,8.6,3.8,13.2,6.1 c4.8,2.4,9.3,4.9,13.4,7.3c0.9,0.5,1.8,1.1,2.8,1.9c1.6,1.3,3.4,3.1,4.7,5.5c1.9,5.5-1.9,14.9-1.9,14.9 c-2.3,7.6-18.4,40.6-18.4,40.6c-8.1-0.2-15.3,5-17.7,12.5c-2.6,8.1,1.1,17.3,8.9,21.3c7.8,4,17.4,1.7,22.5-5.3 c5-6.8,4.6-16.3-1.1-22.6c1.9-3.7,3.7-7.4,5.6-11.3c5-10.4,13.5-30.4,13.5-30.4c0.9-1.7,5.7-10.3,2.7-21.3 c-2.5-11.4-12.6-16.7-12.6-16.7c-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3c4.7-9.7,9.4-19.3,14.1-29 c-4.1-2-8.1-4-12.2-6.1c-4.8,9.8-9.7,19.7-14.5,29.5c-6.7-0.1-12.9,3.5-16.1,9.4c-3.4,6.3-2.7,14.1,1.9,19.8 C343.2,346.5,335,363.3,326.8,380.1z"></path> </g> </g> </g> </svg>

View File

@@ -13,20 +13,26 @@ menu:
- name: Netlab - name: Netlab
pageRef: /netlab pageRef: /netlab
weight: 2 weight: 2
- name: Blog
pageRef: /blog
weight: 3
- name: About - name: About
pageRef: /about pageRef: /about
weight: 3
- name: Search
weight: 4 weight: 4
- name: Search
weight: 5
params: params:
type: search type: search
- name: GitHub - name: Gitea
weight: 5 weight: 6
url: "https://github.com/darnodo" url: "https://gitea.arnodo.fr/Damien"
params: params:
icon: github icon: gitea
params: params:
theme:
default: light
displayToggle: true
# Navbar # Navbar
navbar: navbar:
displayTitle: true displayTitle: true
@@ -43,8 +49,22 @@ params:
flexsearch: flexsearch:
# index page by: content | summary | heading | title # index page by: content | summary | heading | title
index: heading index: heading
# Blog
blog:
list:
displayTags: true
sortBy: date
sortOrder: desc
pagerSize: 10
article:
displayPagination: true
markup: markup:
goldmark: goldmark:
renderer: renderer:
unsafe: true unsafe: true
deployment:
targets:
- name: "notebook-arnodo-fr"
URL: "s3://notebook-arnodo-fr?endpoint=https://s3.fr-par.scw.cloud&region=fr-par"

View File

@@ -0,0 +1,188 @@
{{- $speed := .Get "speed" | default "30s" -}} {{- $gap := .Get "gap" | default
"4rem" -}} {{- $height := .Get "height" | default "80px" -}}
<div
class="tech-banner-wrapper"
style="overflow: hidden; width: 100%; position: relative; margin: 2rem 0"
>
<!-- Gradient overlays for smooth fade effect -->
<div
style="
position: absolute;
top: 0;
left: 0;
width: 150px;
height: 100%;
background: linear-gradient(to right, var(--color-bg), transparent);
z-index: 2;
pointer-events: none;
"
></div>
<div
style="
position: absolute;
top: 0;
right: 0;
width: 150px;
height: 100%;
background: linear-gradient(to left, var(--color-bg), transparent);
z-index: 2;
pointer-events: none;
"
></div>
<!-- Scrolling container -->
<div
class="tech-banner-scroll"
style="display: flex; gap: {{ $gap }}; will-change: transform;"
>
<!-- First set of logos -->
<div
class="tech-banner-track"
style="display: flex; gap: {{ $gap }}; align-items: center; flex-shrink: 0; animation: scroll-left {{ $speed }} linear infinite;"
>
<img
src="/images/tech-banner/arista-color.svg"
alt="Arista"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/aws-color.svg"
alt="AWS"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/containerlab-color.svg"
alt="ContainerLab"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/k8s-color.svg"
alt="Kubernetes"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/nokia-color.svg"
alt="Nokia"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/proxmox-color.svg"
alt="Proxmox"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/scaleway-color.svg"
alt="Scaleway"
style="height: {{ $height }}; width: 200px; object-fit: contain; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
</div>
<!-- Duplicate set for seamless loop -->
<div
class="tech-banner-track"
style="display: flex; gap: {{ $gap }}; align-items: center; flex-shrink: 0; animation: scroll-left {{ $speed }} linear infinite;"
aria-hidden="true"
>
<img
src="/images/tech-banner/arista-color.svg"
alt="Arista"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/aws-color.svg"
alt="AWS"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/containerlab-color.svg"
alt="ContainerLab"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/k8s-color.svg"
alt="Kubernetes"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/nokia-color.svg"
alt="Nokia"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/proxmox-color.svg"
alt="Proxmox"
style="height: {{ $height }}; width: auto; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
<img
src="/images/tech-banner/scaleway-color.svg"
alt="Scaleway"
style="height: {{ $height }}; width: 200px; object-fit: contain; filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease;"
onmouseover="this.style.filter='grayscale(0%)'; this.style.opacity='1';"
onmouseout="this.style.filter='grayscale(100%)'; this.style.opacity='0.7';"
/>
</div>
</div>
</div>
<style>
:root {
--color-bg: #ffffff;
}
@media (prefers-color-scheme: dark) {
:root {
--color-bg: #111111;
}
}
[data-theme="dark"] {
--color-bg: #111111;
}
[data-theme="light"] {
--color-bg: #ffffff;
}
@keyframes scroll-left {
0% {
transform: translateX(0);
}
100% {
transform: translateX(calc(-100% - {{$gap}}));
}
}
.tech-banner-track:hover {
animation-play-state: paused;
}
.tech-banner-scroll:hover .tech-banner-track {
animation-play-state: paused;
}
</style>

BIN
static/images/blog.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="1115px" height="175px" viewBox="0 0 1115 175" enable-background="new 0 0 1115 175" xml:space="preserve">
<g>
<g>
<g>
<path fill="#16325B" d="M391.027,103.426c36.994,0,55.491-25.688,55.491-51.378c0-25.688-18.498-50.353-57.546-50.353
c-28.773-1.029-134.617-1.029-134.617-1.029v173.668h32.879V28.413c25.691,0,90.43,0,103.79,0
c18.496,0,27.745,6.163,27.745,23.635c0,14.385-9.247,22.606-26.718,22.606h-86.315l102.761,98.648h40.078l-73.991-71.932
C381.78,103.426,390,103.426,391.027,103.426z"/>
<rect x="480.429" y="0.669" fill="#16325B" width="31.856" height="173.665"/>
<polygon fill="#16325B" points="916.137,27.387 916.137,0.669 848.313,0.669 816.457,0.669 759.938,0.669 741.441,27.387
816.457,27.387 816.457,174.334 848.313,174.334 848.313,27.387 "/>
<path fill="#16325B" d="M678.756,72.6c-16.441,0-57.543,0-81.182,0c-16.438,0-25.689-7.192-25.689-21.58
c0-16.44,11.305-23.633,25.689-23.633c22.609,0,110.98,0,110.98,0l14.387-26.718c0,0-107.898,0-126.395,0
c-28.775,0-52.407,21.577-52.407,51.382c0,26.715,22.608,48.294,53.434,48.294c17.473,0,69.877,0,81.182,0
c18.5,0,28.775,8.224,28.775,23.637c0,13.357-11.305,22.608-28.775,22.608H566.748l-16.44,27.744c0,0,98.649,0,132.558,0
c33.912,0,52.406-24.658,52.406-52.404C735.275,96.233,713.695,72.6,678.756,72.6z"/>
<path fill="#16325B" d="M104.325,11.972C97.133,23.272,1.564,174.334,1.564,174.334h33.91l31.858-51.381h67.822l17.47-27.746
H84.8l36.993-59.602l86.321,137.697h33.911c0,0-94.542-149.001-102.765-162.359C130.013-2.413,113.574-1.387,104.325,11.972z"/>
<path fill="#16325B" d="M1079.523,174.334h33.912c0,0-94.539-149.003-102.764-162.362c-9.244-15.415-25.689-14.385-34.938-1.028
c-7.195,11.301-102.762,162.359-102.762,162.359h33.91l31.855-51.378h68.852l17.467-27.746h-67.82l36.996-59.603
L1079.523,174.334z"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 304 182" style="enable-background:new 0 0 304 182;" xml:space="preserve">
<style type="text/css">
.st0{fill:#252F3E;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#FF9900;}
</style>
<g>
<path class="st0" d="M86.4,66.4c0,3.7,0.4,6.7,1.1,8.9c0.8,2.2,1.8,4.6,3.2,7.2c0.5,0.8,0.7,1.6,0.7,2.3c0,1-0.6,2-1.9,3l-6.3,4.2
c-0.9,0.6-1.8,0.9-2.6,0.9c-1,0-2-0.5-3-1.4C76.2,90,75,88.4,74,86.8c-1-1.7-2-3.6-3.1-5.9c-7.8,9.2-17.6,13.8-29.4,13.8
c-8.4,0-15.1-2.4-20-7.2c-4.9-4.8-7.4-11.2-7.4-19.2c0-8.5,3-15.4,9.1-20.6c6.1-5.2,14.2-7.8,24.5-7.8c3.4,0,6.9,0.3,10.6,0.8
c3.7,0.5,7.5,1.3,11.5,2.2v-7.3c0-7.6-1.6-12.9-4.7-16c-3.2-3.1-8.6-4.6-16.3-4.6c-3.5,0-7.1,0.4-10.8,1.3c-3.7,0.9-7.3,2-10.8,3.4
c-1.6,0.7-2.8,1.1-3.5,1.3c-0.7,0.2-1.2,0.3-1.6,0.3c-1.4,0-2.1-1-2.1-3.1v-4.9c0-1.6,0.2-2.8,0.7-3.5c0.5-0.7,1.4-1.4,2.8-2.1
c3.5-1.8,7.7-3.3,12.6-4.5c4.9-1.3,10.1-1.9,15.6-1.9c11.9,0,20.6,2.7,26.2,8.1c5.5,5.4,8.3,13.6,8.3,24.6V66.4z M45.8,81.6
c3.3,0,6.7-0.6,10.3-1.8c3.6-1.2,6.8-3.4,9.5-6.4c1.6-1.9,2.8-4,3.4-6.4c0.6-2.4,1-5.3,1-8.7v-4.2c-2.9-0.7-6-1.3-9.2-1.7
c-3.2-0.4-6.3-0.6-9.4-0.6c-6.7,0-11.6,1.3-14.9,4c-3.3,2.7-4.9,6.5-4.9,11.5c0,4.7,1.2,8.2,3.7,10.6
C37.7,80.4,41.2,81.6,45.8,81.6z M126.1,92.4c-1.8,0-3-0.3-3.8-1c-0.8-0.6-1.5-2-2.1-3.9L96.7,10.2c-0.6-2-0.9-3.3-0.9-4
c0-1.6,0.8-2.5,2.4-2.5h9.8c1.9,0,3.2,0.3,3.9,1c0.8,0.6,1.4,2,2,3.9l16.8,66.2l15.6-66.2c0.5-2,1.1-3.3,1.9-3.9c0.8-0.6,2.2-1,4-1
h8c1.9,0,3.2,0.3,4,1c0.8,0.6,1.5,2,1.9,3.9l15.8,67l17.3-67c0.6-2,1.3-3.3,2-3.9c0.8-0.6,2.1-1,3.9-1h9.3c1.6,0,2.5,0.8,2.5,2.5
c0,0.5-0.1,1-0.2,1.6c-0.1,0.6-0.3,1.4-0.7,2.5l-24.1,77.3c-0.6,2-1.3,3.3-2.1,3.9c-0.8,0.6-2.1,1-3.8,1h-8.6c-1.9,0-3.2-0.3-4-1
c-0.8-0.7-1.5-2-1.9-4L156,23l-15.4,64.4c-0.5,2-1.1,3.3-1.9,4c-0.8,0.7-2.2,1-4,1H126.1z M254.6,95.1c-5.2,0-10.4-0.6-15.4-1.8
c-5-1.2-8.9-2.5-11.5-4c-1.6-0.9-2.7-1.9-3.1-2.8c-0.4-0.9-0.6-1.9-0.6-2.8v-5.1c0-2.1,0.8-3.1,2.3-3.1c0.6,0,1.2,0.1,1.8,0.3
c0.6,0.2,1.5,0.6,2.5,1c3.4,1.5,7.1,2.7,11,3.5c4,0.8,7.9,1.2,11.9,1.2c6.3,0,11.2-1.1,14.6-3.3c3.4-2.2,5.2-5.4,5.2-9.5
c0-2.8-0.9-5.1-2.7-7c-1.8-1.9-5.2-3.6-10.1-5.2L246,52c-7.3-2.3-12.7-5.7-16-10.2c-3.3-4.4-5-9.3-5-14.5c0-4.2,0.9-7.9,2.7-11.1
c1.8-3.2,4.2-6,7.2-8.2c3-2.3,6.4-4,10.4-5.2c4-1.2,8.2-1.7,12.6-1.7c2.2,0,4.5,0.1,6.7,0.4c2.3,0.3,4.4,0.7,6.5,1.1
c2,0.5,3.9,1,5.7,1.6c1.8,0.6,3.2,1.2,4.2,1.8c1.4,0.8,2.4,1.6,3,2.5c0.6,0.8,0.9,1.9,0.9,3.3v4.7c0,2.1-0.8,3.2-2.3,3.2
c-0.8,0-2.1-0.4-3.8-1.2c-5.7-2.6-12.1-3.9-19.2-3.9c-5.7,0-10.2,0.9-13.3,2.8c-3.1,1.9-4.7,4.8-4.7,8.9c0,2.8,1,5.2,3,7.1
c2,1.9,5.7,3.8,11,5.5l14.2,4.5c7.2,2.3,12.4,5.5,15.5,9.6c3.1,4.1,4.6,8.8,4.6,14c0,4.3-0.9,8.2-2.6,11.6
c-1.8,3.4-4.2,6.4-7.3,8.8c-3.1,2.5-6.8,4.3-11.1,5.6C264.4,94.4,259.7,95.1,254.6,95.1z"/>
<g>
<path class="st1" d="M273.5,143.7c-32.9,24.3-80.7,37.2-121.8,37.2c-57.6,0-109.5-21.3-148.7-56.7c-3.1-2.8-0.3-6.6,3.4-4.4
c42.4,24.6,94.7,39.5,148.8,39.5c36.5,0,76.6-7.6,113.5-23.2C274.2,133.6,278.9,139.7,273.5,143.7z"/>
<path class="st1" d="M287.2,128.1c-4.2-5.4-27.8-2.6-38.5-1.3c-3.2,0.4-3.7-2.4-0.8-4.5c18.8-13.2,49.7-9.4,53.3-5
c3.6,4.5-1,35.4-18.6,50.2c-2.7,2.3-5.3,1.1-4.1-1.9C282.5,155.7,291.4,133.4,287.2,128.1z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,33 @@
<svg id="svg" width="218.89" height="198.42" version="1.1" viewBox="0 0 178.89 153.42" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(-104.26 -97.654)">
<g fill="none" stroke="#00c9ff" stroke-width=".8">
<path d="m197.09 165.86a1.7578 1.7829 0 0 1-1.7578 1.7829 1.7578 1.7829 0 0 1-1.7578-1.7829 1.7578 1.7829 0 0 1 1.7578-1.7829 1.7578 1.7829 0 0 1 1.7578 1.7829"/>
<path d="m189.62 161.66a2.7588 2.653 0 0 1-2.7588 2.653 2.7588 2.653 0 0 1-2.7588-2.653 2.7588 2.653 0 0 1 2.7588-2.653 2.7588 2.653 0 0 1 2.7588 2.653"/>
<path d="m196.49 152.41a4.1043 3.961 0 0 1-4.1043 3.961 4.1043 3.961 0 0 1-4.1043-3.961 4.1043 3.961 0 0 1 4.1043-3.961 4.1043 3.961 0 0 1 4.1043 3.961"/>
</g>
<path d="m184.69 168.96c-0.505 0.213-1.528 0.852-2.273 1.42-1.43 1.091-3.156 1.362-5.308 0.834-1.553-0.381-1.663 0.068-0.59 2.401 6.631 14.42 26.848 14.896 33.88 0.799 1.579-3.165 1.433-3.72-0.818-3.098-1.9 0.524-3.18 0.227-4.972-1.157-2.436-1.881-5.696-1.883-7.396-4e-3 -1.702 1.881-5.361 1.793-7.477-0.178-1.199-1.118-3.639-1.609-5.046-1.017" fill="#00c9ff"/>
</g>
<g transform="translate(-104.26 -97.654)">
<g aria-label="CONTAINERlab">
<g fill="#001135">
<path d="m121.53 224.9q-2.712 0-4.2 1.896-1.488 1.872-1.488 5.568 0 3.792 1.488 5.544 1.488 1.728 4.2 1.728 0.792 0 1.44-0.144 0.672-0.144 1.224-0.36t0.984-0.48 0.744-0.504l0.696 1.08q-0.816 0.696-2.16 1.224-1.32 0.528-3.024 0.528-3.672 0-5.424-2.232t-1.752-6.384q0-1.968 0.432-3.576 0.456-1.632 1.344-2.784 0.912-1.152 2.256-1.776 1.368-0.648 3.192-0.648 0.984 0 1.8 0.192t1.44 0.48q0.624 0.264 1.056 0.576 0.456 0.288 0.72 0.528l-0.768 1.08q-0.6-0.504-1.632-1.008-1.032-0.528-2.568-0.528z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
<path d="m129.19 232.27q0-1.968 0.456-3.576 0.48-1.632 1.392-2.784t2.256-1.776q1.344-0.648 3.072-0.648t3.048 0.648q1.344 0.624 2.232 1.776 0.912 1.152 1.368 2.784 0.48 1.608 0.48 3.576t-0.48 3.6q-0.456 1.608-1.368 2.784-0.888 1.152-2.232 1.8-1.344 0.624-3.072 0.624t-3.072-0.624q-1.344-0.648-2.256-1.8-0.888-1.176-1.368-2.784-0.456-1.632-0.456-3.6zm1.584 0q0 1.68 0.336 3.048 0.336 1.344 1.032 2.328 0.696 0.96 1.728 1.488 1.056 0.528 2.472 0.528t2.448-0.528q1.056-0.528 1.752-1.488 0.696-0.984 1.032-2.328 0.336-1.368 0.336-3.048t-0.336-3.024q-0.336-1.368-1.032-2.328t-1.752-1.488q-1.032-0.528-2.448-0.528t-2.472 0.528q-1.032 0.528-1.728 1.488t-1.032 2.328q-0.336 1.344-0.336 3.024z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
<path d="m149.63 226.34v14.376h-1.464v-16.872h1.584l8.376 14.304v-14.304h1.464v16.872h-1.464z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
<path d="m168.63 225.26h-5.184v-1.416h11.856v1.416h-5.16v15.456h-1.512z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
<path d="m185 236.01h-6.936l-1.512 4.704h-1.44l5.64-16.872h1.68l5.664 16.872h-1.56zm-6.528-1.32h6.096l-3.024-9.12z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
<path d="m193.05 240.72h-1.512v-16.872h1.512z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
<path d="m199.71 226.34v14.376h-1.464v-16.872h1.584l8.376 14.304v-14.304h1.464v16.872h-1.464z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
<path d="m214.89 223.85h9.312v1.392h-7.8v6h6.096v1.392h-6.096v6.696h8.04v1.392h-9.552z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
<path d="m238.98 240.72h-1.752l-4.128-6.936h-3.408v6.936h-1.488v-16.872h4.44q1.512 0 2.52 0.432 1.032 0.432 1.656 1.152 0.624 0.696 0.888 1.584 0.288 0.864 0.288 1.752 0 0.936-0.264 1.704t-0.72 1.344-1.08 0.984q-0.6 0.408-1.272 0.648zm-2.472-11.88q0-1.68-0.96-2.664-0.936-0.984-3.072-0.984h-2.784v7.272h2.88q2.04 0 2.976-0.984 0.96-0.984 0.96-2.64z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
</g>
<g fill="#00c9ff">
<path d="m242.42 222.72h2.136v18h-2.136z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
<path d="m255.97 235.13q-0.024 0-0.312-0.048t-0.72-0.072q-0.432-0.048-0.936-0.072-0.504-0.048-0.936-0.048-0.768 0-1.32 0.192-0.528 0.192-0.864 0.528-0.336 0.312-0.504 0.744-0.144 0.432-0.144 0.936 0 1.032 0.672 1.536 0.696 0.504 1.8 0.504 0.6 0 1.176-0.192t1.032-0.528q0.48-0.36 0.768-0.816 0.288-0.48 0.288-1.056zm0.144 5.592-0.096-1.344q-0.552 0.768-1.608 1.224-1.056 0.432-2.184 0.432-0.72 0-1.44-0.192t-1.296-0.624-0.96-1.152q-0.36-0.72-0.36-1.776 0-1.848 1.2-2.952t3.6-1.104q0.384 0 0.864 0.024t0.912 0.072q0.432 0.024 0.768 0.072 0.336 0.024 0.456 0.048v-0.744q0-1.32-0.792-1.896-0.768-0.576-2.208-0.576-1.296 0-2.208 0.288-0.888 0.288-1.296 0.528l-0.648-1.512q0.216-0.144 0.6-0.336t0.936-0.36q0.576-0.192 1.296-0.312 0.744-0.12 1.656-0.12 2.184 0 3.456 1.08 1.272 1.056 1.272 3.096v8.136z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
<path d="m262.19 222.72h2.136v7.488q0.096-0.216 0.36-0.504 0.288-0.312 0.744-0.6t1.08-0.48q0.624-0.216 1.44-0.216 1.32 0 2.304 0.48t1.632 1.32 0.96 1.968q0.312 1.104 0.312 2.4 0 1.776-0.48 3-0.48 1.2-1.248 1.944t-1.752 1.08q-0.96 0.312-1.944 0.312-0.72 0-1.296-0.144-0.552-0.12-0.984-0.312t-0.744-0.408q-0.288-0.216-0.456-0.408l-0.096 1.08h-1.968zm5.256 16.344q1.608 0 2.544-1.056 0.96-1.08 0.96-3.432 0-0.912-0.192-1.68-0.192-0.792-0.6-1.344-0.408-0.576-1.032-0.888-0.6-0.312-1.44-0.312-1.656 0-2.52 1.152t-0.864 3.552v2.616q0.336 0.456 1.128 0.936 0.816 0.456 2.016 0.456z" style="font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal"/>
</g>
</g>
</g>
<g transform="translate(-104.26 -97.654)">
<path d="m183.88 108.03c-0.905 0.306-3.497 1.651-5.761 2.99-3.853 2.278-11.013 6.385-15.117 8.672-8.91 4.965-12.222 7.24-13.6 9.34l-1.4 2.135v48l1.495 2.234c0.981 1.466 2.149 2.604 3.4 3.311 1.048 0.593 2.175 1.249 2.505 1.457 1.427 0.901 6.882 3.998 7.041 3.998 0.096 0 0.936 0.49 1.867 1.09 0.931 0.599 2.068 1.293 2.527 1.543 5.118 2.775 6.456 3.543 6.996 4.015 0.348 0.304 0.74 0.552 0.873 0.552 0.212 0 9.511 5.359 11.096 6.393 5.064 3.308 9.284 3.556 14.2 0.837 1.76-0.974 3.56-1.969 4-2.211s1.571-0.936 2.513-1.542c0.942-0.607 2.472-1.495 3.4-1.974s3.257-1.823 5.175-2.987 3.571-2.116 3.672-2.116c0.102 0 2.852-1.576 6.112-3.503 3.261-1.927 6.572-3.841 7.359-4.254 3.027-1.588 4.616-2.952 5.869-5.041l1.3-2.167-4e-3 -23.617-4e-3 -23.618-1.184-2.066c-0.652-1.136-1.865-2.541-2.697-3.121-1.795-1.254-11.567-6.951-17.111-9.976-0.44-0.241-1.07-0.642-1.4-0.892-0.33-0.251-1.5-0.935-2.6-1.522-1.1-0.586-2.353-1.281-2.785-1.544-8.786-5.357-11.014-5.889-12.998-3.103-0.792 1.112-0.817 1.669-0.817 18.206v17.059l1.5 0.597c4.535 1.807 5.276 2.209 7.885 4.278 2.305 1.829 6.8138 8.3577 6.8138 9.5617 0 0.294-0.3468-0.45073-0.0378 0.0363 2.087 3.297 1.569 11.373-1.053 16.415-11.76 22.613-45.493 10.5-40.146-14.417 1.433-6.678 10.132-15.569 15.126-15.712 1.959-0.0561 1.912-0.784 1.912-17.909 0-17.017-0.033-17.352-1.859-18.936-1.119-0.97-2.246-1.106-4.063-0.492m1.577 15.374c0.012 5.81 4e-3 12.291-0.017 14.402l-0.038 3.839-2.978 1.472c-24.133 11.927-15.697 48.374 11.178 48.29 27.377-0.085 35.47-36.1 10.913-48.565l-2.513-1.275v-29.2l0.979 0.109c0.538 0.06 1.258 0.35 1.6 0.644 0.341 0.293 1.855 1.203 3.364 2.021 1.508 0.818 3.896 2.193 5.307 3.056 1.41 0.864 2.635 1.57 2.723 1.57 0.256 0 13.012 7.427 15.599 9.082 4.237 2.712 4.013 1.291 4.122 26.118l0.095 21.4-0.925 1.8c-0.913 1.775-2.523 3.137-5.664 4.789-1.661 0.873-2.502 1.365-4.198 2.454-0.551 0.354-2.082 1.239-3.402 1.966-3.727 2.053-4.401 2.44-10.8 6.195-3.3 1.937-6.72 3.909-7.6 4.382s-3.058 1.705-4.839 2.737c-4.924 2.853-5.013 2.831-16.36-4.006-0.44-0.265-1.234-0.677-1.764-0.914-0.529-0.237-1.753-0.965-2.72-1.617-0.966-0.652-1.893-1.186-2.059-1.186s-1.192-0.569-2.28-1.265c-2.108-1.349-9.385-5.535-9.622-5.535-0.077 0-1.093-0.585-2.258-1.3s-2.473-1.518-2.908-1.785c-0.434-0.267-1.56-0.886-2.501-1.376s-2.201-1.532-2.8-2.315l-1.089-1.424v-45.62l0.91-1.156c0.844-1.073 5.119-4.187 5.783-4.213 0.161-6e-3 1.469-0.731 2.907-1.611s2.708-1.6 2.823-1.6 0.697-0.335 1.293-0.744c1.13-0.775 10.813-6.383 14.284-8.271 1.1-0.599 2.27-1.317 2.6-1.596 0.744-0.628 2.094-0.941 2.517-0.583 0.174 0.147 0.326 5.021 0.338 10.831" fill="#001135" fill-rule="evenodd"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="301.178" viewBox="0 0 338.667 79.687" fill="#005aff" xmlns:v="https://vecta.io/nano"><path d="M114.194 1.145c-21.865 0-38.831 15.914-38.831 38.698 0 23.81 16.965 38.699 38.831 38.698s38.866-14.889 38.831-38.698c-.032-21.587-16.965-38.698-38.831-38.698zm0 10.654c15.258 0 27.627 11.484 27.627 28.044 0 16.867-12.369 28.045-27.627 28.045S86.567 56.709 86.567 39.843c0-16.561 12.369-28.044 27.627-28.044zm119.913-9.376v74.839h11.224V2.423zm-30.985 0l-41.655 37.419 41.655 37.42h16.702l-41.718-37.42 41.718-37.419zM296.843 0l-6.092 11.252 20.667 38.388h-41.447l-14.953 27.623h12.348l9.03-16.573h40.895l9.029 16.573h12.347zM0 0v77.263h11.455v-51.06L70.98 79.686V63.667z"/></svg>

After

Width:  |  Height:  |  Size: 734 B

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) by Marsupilami -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg4060"
version="1.1"
width="1024"
height="162"
viewBox="-1.8685548 -1.8685548 418.4656296 66.0222696">
<defs
id="defs4057" />
<path
id="path55"
d="M 19.35157,0 C 17.87755,0 16.59295,0.26384 15.34571,0.79297 14.13626,1.3221 13.0777,2.0395 12.13282,2.98438 L 35.98243,29.13867 59.79297,2.98438 C 58.84809,2.0395 57.78895,1.3221 56.50391,0.79297 55.33226,0.26384 53.97265,0 52.57422,0 51.10021,0 49.70233,0.30221 48.45508,0.86914 47.17004,1.43607 46.11159,2.26732 45.12891,3.25 L 35.98243,13.37891 26.72266,3.25 C 25.77778,2.26732 24.71932,1.43607 23.39649,0.86914 22.22484,0.30221 20.82558,0 19.35157,0 Z M 35.98243,33.10742 12.13282,59.30078 c 0.94488,0.90709 2.00344,1.66228 3.21289,2.19141 1.24724,0.52913 2.53321,0.79297 3.93164,0.79297 1.5496,0 2.87189,-0.34001 4.11914,-0.86914 1.32283,-0.60473 2.45551,-1.39818 3.40039,-2.38086 l 9.18555,-10.12891 9.18359,10.12891 c 0.94488,0.98268 2.00402,1.77613 3.28906,2.38086 1.24725,0.52913 2.60733,0.86914 4.11914,0.86914 1.39843,0 2.75804,-0.26384 3.92969,-0.79297 1.28504,-0.52913 2.34418,-1.28432 3.28906,-2.19141 z"
style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1.06665826;stroke-linejoin:round" />
<path
id="path69"
d="M 7.86133,7.86133 C 6.34952,7.89913 4.87557,8.20065 3.55274,8.76758 2.19211,9.33451 1.02048,10.12865 0,11.11133 L 18.21875,31.14258 0,51.13672 c 1.02048,1.02047 2.19211,1.81325 3.55274,2.41797 1.32283,0.60472 2.79678,0.86972 4.30859,0.94531 1.6252,-0.0756 3.13869,-0.33921 4.53711,-1.01953 1.39843,-0.64252 2.60648,-1.51331 3.62695,-2.60937 L 33.97852,31.14258 16.02539,11.45117 C 14.92933,10.39291 13.7578,9.52407 12.35938,8.84375 10.96095,8.20123 9.48653,7.89913 7.86133,7.86133 Z m 56.08985,0 c -1.6252,0.0378 -3.06252,0.3399 -4.46094,0.98242 -1.39843,0.68032 -2.60775,1.54916 -3.66602,2.60742 L 37.94727,31.14258 55.82422,50.8711 c 1.05827,1.09606 2.26759,1.96685 3.66602,2.60937 1.39842,0.68032 2.83574,0.94394 4.46094,1.01953 1.62519,-0.0756 3.02286,-0.34059 4.3457,-0.94531 1.43622,-0.60472 2.53226,-1.3975 3.55273,-2.41797 L 53.66993,31.14258 71.84961,11.11133 C 70.82914,10.12865 69.7331,9.33451 68.29688,8.76758 66.97404,8.20065 65.57637,7.89913 63.95118,7.86133 Z m 161.30858,3.40039 c -2.57007,0 -4.98798,1.05829 -6.72656,2.79688 l 15.60938,17.04687 -15.60938,17.19531 c 1.73858,1.73859 4.15649,2.83594 6.72656,2.83594 2.83465,0 5.29267,-1.17205 7.03125,-3.09961 l 8.61719,-9.52539 8.61719,9.52539 c 1.73858,1.92756 4.19534,3.09961 6.99219,3.09961 2.60787,0 4.98798,-1.09735 6.72656,-2.83594 L 247.63476,31.10547 263.24414,14.0586 c -1.73858,-1.73859 -4.11869,-2.79688 -6.72656,-2.79688 -2.79685,0 -5.25361,1.17274 -6.99219,3.0625 l -8.61719,9.44727 -8.69336,-9.44727 c -1.81417,-1.92756 -4.12043,-3.0625 -6.95508,-3.0625 z m 151.56055,0 c -2.68346,0 -5.06552,1.05829 -6.72851,2.79688 l 15.53515,17.04687 -15.53515,17.19531 c 1.66299,1.73859 4.04505,2.83594 6.72851,2.83594 2.72126,0 5.17743,-1.17205 6.91602,-3.09961 l 8.61718,-9.52539 8.6543,9.52539 c 1.66299,1.92756 4.12112,3.09961 6.91797,3.09961 2.60787,0 5.06415,-1.09735 6.80273,-2.83594 L 399.08203,31.10547 414.72851,14.0586 c -1.73858,-1.73859 -4.19486,-2.79688 -6.80273,-2.79688 -2.79685,0 -5.25498,1.17274 -6.91797,3.0625 l -8.6543,9.44727 -8.69336,-9.44727 c -1.70078,-1.92756 -4.04299,-3.0625 -6.83984,-3.0625 z"
style="fill:#e57000;fill-rule:evenodd;stroke:none;stroke-width:1.06665826;stroke-linejoin:round" />
<path
id="path83"
d="m 85.49414,11.1875 c -2.00314,0 -3.74218,1.6615 -3.74218,3.74024 v 36.20898 c 5.44252,0 9.93946,-4.45972 9.93946,-10.01562 h 20.03319 c 5.51811,0 9.97656,-4.45972 9.97656,-10.01563 v -9.90234 c 0,-5.55591 -4.45845,-10.01563 -9.97656,-10.01563 z m 45.58008,0 c -2.00315,0 -3.66602,1.6615 -3.66602,3.74024 v 36.20898 c 5.48032,0 10.01563,-4.45972 10.01563,-10.01562 v -2.53321 h 11.30078 l 5.7832,8.24024 c 1.88977,2.64567 4.72401,4.30859 8.20117,4.30859 1.663,0 3.2885,-0.37817 4.61133,-1.17187 l -8.08789,-11.45313 c 4.61102,-0.94488 8.08789,-4.98769 8.08789,-9.86328 v -7.44531 c 0,-5.55591 -4.45972,-10.01563 -10.01562,-10.01563 z m 51.85547,0 c -5.51811,0 -9.90235,4.45972 -9.90235,10.01563 V 41.1211 c 0,5.5559 4.38424,10.01562 9.90235,10.01562 h 19.99414 c 5.51811,0 9.97851,-4.45972 9.97851,-10.01562 V 21.20313 c 0,-5.55591 -4.4604,-10.01563 -9.97851,-10.01563 z m 89.76367,0 c -2.15433,0 -3.81641,1.6615 -3.81641,3.74024 v 36.20898 c 5.48032,0 10.01563,-4.45972 10.01563,-10.01562 v -19.125 c 0,-0.49134 0.30221,-0.86914 0.86914,-0.86914 0.26456,0 0.56757,0.26414 0.71875,0.45312 l 11.11133,24.45313 c 0.37795,0.86929 1.32269,1.51171 2.26757,1.51171 0.98268,0 1.85115,-0.60336 2.30469,-1.47265 l 11.07422,-24.49219 c 0.15118,-0.18898 0.41697,-0.45312 0.79492,-0.45312 0.41575,0 0.83008,0.3778 0.83008,0.86914 v 19.125 c 0,5.5559 4.45982,10.01562 9.90234,10.01562 V 14.92774 c 0,-2.07874 -1.66286,-3.74024 -3.66601,-3.74024 h -6.23633 c -4.08189,0 -7.55908,2.45506 -9.14648,6.00781 v -0.15039 l -5.85743,12.88868 -5.82031,-12.88868 v 0.15039 c -1.51181,-3.55275 -5.10239,-6.00781 -9.14648,-6.00781 z m 61.79492,0 c -5.55591,0 -10.01563,4.45972 -10.01563,10.01563 V 41.1211 c 0,5.5559 4.45972,10.01562 10.01563,10.01562 h 19.88086 c 5.5559,0 10.01562,-4.45972 10.01562,-10.01562 V 21.20313 c 0,-5.55591 -4.45972,-10.01563 -10.01562,-10.01563 z M 91.69142,21.20313 h 17.49999 c -1e-5,0 2.5332,-0.002 2.5332,2.45508 v 6.19921 c 0,0 -9.2e-4,2.53321 -2.5332,2.53321 H 91.69142 Z m 45.73241,0 h 17.42382 c 0,0 2.45704,-0.002 2.45704,2.45508 v 3.78125 c 0,0 -3.4e-4,2.41796 -2.45704,2.41796 h -17.42382 z m 48.03906,0 h 14.92773 c 0,0 2.53321,-0.002 2.53321,2.45508 v 14.92968 c 0,0 -9.2e-4,2.53321 -2.53321,2.53321 h -14.92773 c 0,0 -2.5332,-9.2e-4 -2.5332,-2.53321 V 23.65821 c 0,0 9.2e-4,-2.45508 2.5332,-2.45508 z m 151.48242,0 h 14.9668 c 0,0 2.45703,-0.002 2.45703,2.45508 v 14.92968 c 0,0 -3.4e-4,2.53321 -2.45703,2.53321 h -14.9668 c 0,0 -2.45703,-9.2e-4 -2.45703,-2.53321 V 23.65821 c 0,0 3.4e-4,-2.45508 2.45703,-2.45508 z"
style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1.06665826;stroke-linejoin:round" />
</svg>
<!-- version: 20171223, original size: 414.72852 62.28516, border: 3% -->

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@@ -0,0 +1,13 @@
<svg width="410" height="80" viewBox="0 0 410 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.9107 54.3209C24.9274 56.8686 27.0181 58.9206 29.5804 58.9042L42.1861 58.8841C45.0739 58.5267 47.2897 56.164 47.4468 53.2747V35.2209C47.4468 32.6897 45.3831 30.6377 42.8374 30.6377C40.2917 30.6377 38.228 32.6897 38.228 35.2209V46.6889C38.228 48.3397 36.8821 49.6779 35.2219 49.6779H29.5202C26.9579 49.6944 24.8942 51.7731 24.9107 54.3209Z" fill="#521094"/>
<path d="M22.035 45.4135C19.4893 45.4135 17.4256 43.3616 17.4256 40.8304V22.7666C17.5772 19.8767 19.7889 17.5098 22.6763 17.1472H35.292C37.8416 17.1523 39.9179 19.1858 39.9616 21.7204C39.9749 22.9464 39.4958 24.1271 38.6305 25.0005C37.7652 25.874 36.5852 26.3681 35.3522 26.3734H29.6405C27.9803 26.3734 26.6344 27.7116 26.6344 29.3624V40.8304C26.6344 43.3577 24.5768 45.4081 22.035 45.4135Z" fill="#521094"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.4796 4.55169e-05H37.3562C44.5954 -0.0131325 51.5429 2.83563 56.6684 7.91884C61.7938 13.002 64.6767 19.9027 64.682 27.1007V63.2382C63.944 70.0767 58.4198 75.4272 51.5252 75.9815H27.3358C20.0878 75.992 13.1333 73.1359 8.00535 68.0428C2.87745 62.9496 -0.00266304 56.0377 1.84766e-06 48.831V14.4172C0.00551173 6.4649 6.48177 0.0165653 14.4796 4.55169e-05ZM50.1458 14.5586C46.7362 11.1591 42.1046 9.25081 37.2761 9.25614L14.8303 9.21629C11.7215 9.25996 9.22756 11.7841 9.23882 14.8755V48.6616C9.2362 53.4532 11.1494 58.0494 14.5569 61.4375C17.9645 64.8257 22.5869 66.728 27.4059 66.7254H50.6333C53.0728 66.3869 55.015 64.5241 55.4433 62.1123V27.3697C55.4618 22.5687 53.5554 17.9582 50.1458 14.5586Z" fill="#521094"/>
<path d="M104.493 67.7317C100.27 67.7021 96.1195 66.6378 92.4086 64.6331C88.5532 62.6416 85.2129 59.7909 82.6487 56.3036C82.3105 55.8858 82.1561 55.35 82.2202 54.8175C82.2843 54.285 82.5616 53.8006 82.9894 53.474L87.6589 49.3491C88.0366 49.0076 88.5312 48.8223 89.0417 48.831H89.3824C89.9862 48.9245 90.5216 49.2686 90.8554 49.7775C92.4311 52.3094 94.5919 54.4307 97.1583 55.9648C99.6108 57.4255 102.416 58.1969 105.275 58.1967C108.381 58.1967 110.716 57.5889 112.179 56.3036C113.616 55.0959 114.387 53.278 114.253 51.4115C114.408 49.4054 113.571 47.45 112.009 46.1708C110.192 44.7958 107.256 43.5072 103.201 42.3049C91.1761 39.3856 85.1638 33.7164 85.1638 25.3671C85.1638 20.216 86.8873 16.1808 90.3444 13.3511C93.8014 10.5215 98.2906 9.22626 103.992 9.22626C111.809 8.99634 119.263 12.5093 124.033 18.6716C124.739 19.5593 124.625 20.8408 123.773 21.5909L119.233 25.377C118.86 25.7249 118.362 25.9112 117.851 25.8951H117.59C116.999 25.8392 116.463 25.5253 116.127 25.0383C114.738 23.0268 112.908 21.3543 110.776 20.1462C108.661 19.0881 106.32 18.5549 103.952 18.5919C101.601 18.4991 99.2774 19.1288 97.2986 20.3953C95.8526 21.4259 95.0124 23.1004 95.054 24.8689C94.9621 26.6539 95.7328 28.3752 97.1282 29.5019C98.7716 30.8769 101.708 31.9928 105.846 33.019C111.467 34.5733 115.866 36.6258 119.063 39.296C122.43 42.2153 124.163 46.2704 124.163 51.4016C124.179 54.4298 123.275 57.3923 121.568 59.9004C119.831 62.4462 117.397 64.4445 114.554 65.6593C111.406 67.1128 107.963 67.8221 104.493 67.7317Z" fill="#521094"/>
<path d="M149.205 67.9011C145.557 67.9905 141.961 67.036 138.843 65.1511C135.81 63.3472 133.354 60.725 131.759 57.5889C130.027 54.247 129.166 50.5268 129.254 46.7686C129.157 43.038 130.019 39.3444 131.759 36.0379C133.359 32.908 135.814 30.2903 138.843 28.4856C141.961 26.6794 145.506 25.7303 149.114 25.7357C152.134 25.6691 155.117 26.4088 157.752 27.8778C160.285 29.3689 162.512 31.3228 164.315 33.6367C165.002 34.5447 164.852 35.8286 163.975 36.556L160.177 39.5451C159.797 39.8179 159.343 39.9707 158.874 39.9834H158.534C157.97 39.903 157.467 39.5878 157.151 39.1166C155.466 36.3527 152.455 34.6612 149.205 34.653C147.321 34.6582 145.474 35.1638 143.854 36.1176C142.227 37.1265 140.934 38.5886 140.136 40.3222C138.322 44.427 138.322 49.1001 140.136 53.205C140.931 54.9639 142.223 56.4557 143.854 57.4992C145.437 58.5355 147.311 59.0448 149.205 58.9539C150.933 59.0546 152.658 58.7115 154.215 57.9575C155.628 57.1916 156.864 56.1394 157.842 54.8688C158.537 54.0159 159.771 53.8301 160.688 54.4404L164.756 57.27C165.214 57.5893 165.525 58.0765 165.621 58.6242C165.717 59.172 165.59 59.7351 165.267 60.1893C165.27 60.2121 165.263 60.2351 165.248 60.2523C165.232 60.2694 165.21 60.2792 165.187 60.279C163.312 62.5875 160.952 64.4611 158.273 65.7689C155.462 67.1814 152.354 67.9121 149.205 67.9011Z" fill="#521094"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M170.628 57.5889C173.948 64.0489 180.689 68.0542 187.984 67.9011C190.817 67.9399 193.614 67.261 196.11 65.9283C196.892 65.46 197.663 64.9818 198.445 64.4637V64.5533C198.461 65.684 199.382 66.5951 200.519 66.6058H205.7C206.837 66.5951 207.758 65.684 207.774 64.5533V28.9938C207.758 27.8614 206.839 26.9474 205.7 26.9313H200.509C199.37 26.9474 198.451 27.8614 198.435 28.9938V29.1731C197.685 28.5749 196.876 28.0542 196.02 27.6188C193.47 26.3623 190.659 25.7174 187.813 25.7357C180.569 25.598 173.887 29.6036 170.628 36.0379C167.251 42.8292 167.251 50.7977 170.628 57.5889ZM182.543 36.1276C184.129 35.1626 185.954 34.6554 187.813 34.663C189.747 34.5783 191.657 35.1202 193.254 36.2073C194.859 37.2433 196.143 38.7024 196.962 40.4218C198.782 44.522 198.782 49.1945 196.962 53.2946C196.177 55.057 194.888 56.5505 193.254 57.5889C191.6 58.5412 189.725 59.0462 187.813 59.0535C185.943 59.1455 184.094 58.6316 182.543 57.5889C180.909 56.5484 179.617 55.0558 178.825 53.2946C177.86 51.256 177.39 49.0208 177.452 46.7686C177.427 44.5487 177.896 42.3508 178.825 40.3322C179.68 38.6361 180.96 37.1879 182.543 36.1276Z" fill="#521094"/>
<path d="M216.662 9.52515H221.843C222.982 9.54121 223.901 10.4553 223.917 11.5876V64.5733C223.901 65.7056 222.982 66.6196 221.843 66.6357H216.662C215.523 66.6196 214.604 65.7056 214.588 64.5733V11.5876C214.568 11.0348 214.78 10.4987 215.174 10.1075C215.567 9.71639 216.106 9.50544 216.662 9.52515Z" fill="#521094"/>
<path d="M305.423 65.2408C305.673 66.128 306.502 66.7295 307.427 66.6955L312.768 66.6855C313.681 66.6792 314.488 66.0936 314.772 65.2308L326.516 29.6513C326.853 28.6109 326.324 27.4884 325.304 27.0808C325.025 26.987 324.736 26.9268 324.442 26.9014H319.512C318.597 26.9122 317.791 27.5013 317.508 28.366L310.424 50.2857L303.409 28.366C303.164 27.4749 302.334 26.8685 301.405 26.9014H296.305C295.39 26.9122 294.584 27.5013 294.301 28.366L287.026 50.5547L279.851 28.3959C279.605 27.5047 278.776 26.8984 277.847 26.9313H272.366C271.977 26.9353 271.594 27.0237 271.244 27.1904C270.351 27.6733 269.93 28.7194 270.242 29.6812L282.076 65.2408C282.325 66.128 283.154 66.7295 284.08 66.6955H289.26C290.164 66.7394 290.985 66.1761 291.264 65.3205L298.599 44.0286L305.423 65.2408Z" fill="#521094"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M347.589 67.9011C340.299 68.0398 333.565 64.0387 330.234 57.5889C326.868 50.7952 326.868 42.8316 330.234 36.0379C333.509 29.5756 340.233 25.5656 347.509 25.7357C350.336 25.7447 353.12 26.428 355.626 27.7284C356.481 28.1616 357.29 28.679 358.041 29.2727V29.1034C358.05 27.953 358.959 27.0093 360.115 26.9512H365.386C366.525 26.9673 367.444 27.8814 367.46 29.0137V64.5733C367.444 65.7039 366.523 66.615 365.386 66.6257H360.205C359.068 66.615 358.147 65.7039 358.131 64.5733V64.4836C357.383 65.0178 356.603 65.5068 355.796 65.9482C353.265 67.2633 350.445 67.9343 347.589 67.9011ZM347.509 34.663C345.65 34.6554 343.825 35.1626 342.238 36.1276C340.654 37.1855 339.373 38.6343 338.521 40.3322C337.546 42.336 337.072 44.5438 337.138 46.7686C337.079 49.0215 337.553 51.2568 338.521 53.2946C339.313 55.0558 340.605 56.5484 342.238 57.5889C343.79 58.6316 345.639 59.1455 347.509 59.0535C349.394 59.0577 351.243 58.5514 352.86 57.5889C354.494 56.5484 355.786 55.0558 356.578 53.2946C358.398 49.1945 358.398 44.522 356.578 40.4218C355.78 38.6856 354.487 37.2202 352.86 36.2073C351.296 35.1217 349.415 34.5789 347.509 34.663Z" fill="#521094"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M259.319 54.5899C260.083 53.6547 261.445 53.4675 262.436 54.1615L265.973 56.7221C265.973 56.7716 266.013 56.8117 266.063 56.8117C266.555 57.1866 266.877 57.7407 266.958 58.3519C267.039 58.9631 266.872 59.5811 266.494 60.0698C264.778 62.2739 262.635 64.1135 260.191 65.4799C256.86 67.2044 253.143 68.0613 249.389 67.9708C245.753 67.9799 242.179 67.0347 239.028 65.2309C236.018 63.3986 233.568 60.7837 231.943 57.6686C230.218 54.3245 229.357 50.6059 229.438 46.8483C229.405 43.1244 230.264 39.4462 231.943 36.1176C233.512 32.9861 235.945 30.3631 238.958 28.5554C242.042 26.7403 245.564 25.79 249.148 25.8055C256.149 25.7488 262.604 29.5547 265.913 35.6892C267.593 38.7702 268.452 42.2277 268.408 45.7324C268.429 46.5336 268.402 47.3355 268.328 48.1336C268.239 49.206 267.336 50.0303 266.253 50.0266H239.198C239.629 52.2116 240.612 54.2517 242.054 55.9549C243.894 58.0468 246.597 59.1849 249.389 59.0436C251.666 59.1174 253.925 58.6134 255.952 57.5789C257.251 56.7988 258.393 55.7852 259.319 54.5899ZM249.309 34.5833C246.83 34.4938 244.423 35.4236 242.655 37.1538C241.363 38.3715 240.375 39.8728 239.769 41.5378H258.548C258.145 39.7527 257.246 38.1162 255.952 36.8151C254.399 35.2608 252.155 34.5833 249.309 34.5833Z" fill="#521094"/>
<path d="M409.686 27.8778C409.269 27.3513 408.637 27.0372 407.963 27.021H403.043C402.152 27.0212 401.355 27.5684 401.038 28.3959L390.938 54.3009L381.348 28.2764C380.995 27.4912 380.209 26.9872 379.344 26.991H373.903C373.202 26.9849 372.548 27.3439 372.18 27.9376C371.774 28.5251 371.706 29.2803 371.999 29.9303L386.068 66.8649C385.837 68.2296 385.096 69.4574 383.994 70.3022C382.702 71.1585 380.199 71.2486 378.816 71.2985L378.813 71.2986C377.613 71.3567 376.668 72.3361 376.659 73.5304V77.0475C376.653 77.641 376.888 78.2118 377.31 78.6316C377.732 79.0513 378.306 79.2847 378.903 79.2793C379.105 79.2793 379.319 79.2808 379.544 79.2824L379.546 79.2824C381.718 79.2975 384.865 79.3194 387.371 78.0737C392.405 75.43 393.598 72.2252 394.943 68.6108C395.119 68.1389 395.297 67.6592 395.487 67.1737L409.907 29.731C410.085 29.1088 410.006 28.4415 409.686 27.8778Z" fill="#521094"/>
</svg>

After

Width:  |  Height:  |  Size: 9.9 KiB