Compare commits
No commits in common. "main" and "staging-old" have entirely different histories.
main
...
staging-ol
22 changed files with 100 additions and 119 deletions
|
@ -7,10 +7,10 @@ variables:
|
|||
|
||||
steps:
|
||||
build:
|
||||
image: golang:1.23-bookworm
|
||||
image: golang:1.22-bookworm
|
||||
environment:
|
||||
HUGO_VERSION: 0.135.0
|
||||
TZ: Europe/Berlin
|
||||
- HUGO_VERSION=0.128.2
|
||||
- TZ=Europe/Berlin
|
||||
commands:
|
||||
- wget https://github.com/gohugoio/hugo/releases/download/v$${HUGO_VERSION}/hugo_extended_$${HUGO_VERSION}_linux-amd64.deb && apt install ./hugo_extended_$${HUGO_VERSION}_linux-amd64.deb && rm -f hugo_extended_$${HUGO_VERSION}_linux-amd64.deb
|
||||
- hugo --minify --destination ./public
|
||||
|
|
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2023-2024 Adora Laura Kalb <dev@lauka.net>
|
||||
Copyright (c) 2023 Adora Laura Kalb <dev@lauka.net>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
|
|
23
content/blog/2021/issues-with-docker-swarm-on-esxi.md
Normal file
23
content/blog/2021/issues-with-docker-swarm-on-esxi.md
Normal file
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
title: "Issues with Docker Swarm on ESXi"
|
||||
description: "How to make Docker Swarm work with Nodes on ESXi"
|
||||
publishdate: "2021-04-20"
|
||||
author: "Adora 🌹"
|
||||
draft: true
|
||||
---
|
||||
|
||||
I once tried to set up a Docker Swarm Cluster. I had three nodes, two on Proxmox hosts, and one on a ESXi 7 host. The nodes had a GlusterFS storage attached to them which synced data to all three nodes so containers could be started on any node.
|
||||
|
||||
Everything worked wonderfully. Until I found out that some Containers couldn't talk to others.
|
||||
|
||||
Off to troubleshooting then. It seemed very sporadic, with communication working most of the time somehow. I tried some things, until I found out that it only happens if a container on the ESXi node tried to talk to others on the Proxmox nodes.
|
||||
|
||||
After _A LOT_ of googling and searching many a reddit thread I finally found out why:
|
||||
It seems like ESXi, even when in standalone mode, silently drops packets on `udp/4789`, which apparently is VMWares `VTEP VXLAN Port for NSX-T`.
|
||||
|
||||
The fix for the Swarm cluster is to (re-)create the Swarm Cluster with `--data-path-port=xxxx`:
|
||||
```
|
||||
docker swarm init --data-path-port=(port that's not 4789)
|
||||
```
|
||||
|
||||
Afterwards all communication works again 🎉
|
7
content/blog/_index.md
Normal file
7
content/blog/_index.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: My Blog 🌸
|
||||
description: "Lauras Blog about random stuff :3"
|
||||
---
|
||||
I'll be posting about random stuff here :3 IT, Politics, Love...
|
||||
|
||||
Posts will be in _English_ and in _German_!
|
|
@ -3,8 +3,8 @@ weight: 1
|
|||
params:
|
||||
company: COI GmbH
|
||||
position: Apprenticeship Fachinformatiker Anwendungsentwicklung
|
||||
begin: Sep 2012
|
||||
end: Aug 2015
|
||||
begin: Sep. 2012
|
||||
end: Aug. 2015
|
||||
type: experience
|
||||
---
|
||||
Apprenticeship Software Development
|
||||
|
|
|
@ -3,10 +3,8 @@ weight: 2
|
|||
params:
|
||||
company: BRZ Deutschland GmbH
|
||||
position: Apprenticeship Fachinformatiker Systemintegration
|
||||
begin: Aug 2016
|
||||
end: Feb 2019
|
||||
begin: Aug. 2016
|
||||
end: Feb. 2019
|
||||
type: experience
|
||||
---
|
||||
Apprenticeship Systems Integration
|
||||
|
||||
In the last 16 months of this apprenticeship I already managed the internal network as the primary admin for our network infrastructure, and in this position I completely reworked how we bootstrapped switches and deployed our infrastructure.
|
||||
Apprenticeship Systems Integration
|
||||
|
|
|
@ -3,9 +3,9 @@ weight: 3
|
|||
params:
|
||||
company: BRZ Deutschland GmbH
|
||||
position: Administrator Communication and Security
|
||||
begin: Feb 2019
|
||||
end: Oct 2021
|
||||
begin: Feb. 2019
|
||||
end: Oct. 2021
|
||||
type: experience
|
||||
---
|
||||
|
||||
Administrator and Specialist responsible for management of switching, routing and security infrastructure. I was primarily responsible for the design and deployment of 100G Datacenter Backbone-Infrastructure, deployment of a L3 campus design and the introduction of a hybrid cloud/on-prem datacenter. In addition to that, I taught our Azubis and administered our Cisco PBX.
|
||||
Administrator and Specialist responsible for management of switching, routing and security infrastructure. I was primarily responsible for the design and deployment of 100G Datacenter Backbone-Infrastructure, deployment of a L3 campus design and the introduction of a hybrid cloud/on-prem datacenter.
|
||||
|
|
|
@ -3,9 +3,9 @@ weight: 4
|
|||
params:
|
||||
company: noris network AG
|
||||
position: Network Engineer
|
||||
begin: Nov 2021
|
||||
end: Apr 2023
|
||||
begin: Nov. 2021
|
||||
end: Apr. 2023
|
||||
type: experience
|
||||
---
|
||||
|
||||
I was responsible for design, deployment and maintenance of our datacenter network infrastructure. In addition to that, I was working on implementing and automating a new datacenter fabric. I primarily used Juniper, Arista and Fortigate hardware. Management of noris' and our customers Extreme Networks WiFi hardware was also part of my responsibility.
|
||||
I was responsible for design, deployment and maintenance of our datacenter network infrastructure. In addition to that, I was working on implementing and automating a new datacenter fabric. I primarily used Juniper, Arista and Fortigate hardware.
|
||||
|
|
|
@ -4,7 +4,7 @@ params:
|
|||
company: "DATEV e.G."
|
||||
position: IT Security Engineer
|
||||
begin: May 2023
|
||||
end: Sep 2024
|
||||
end:
|
||||
type: experience
|
||||
---
|
||||
At DATEV I'm managing our firewall fleet, and I analyze IDPS Alerts and other IT Security incidents. In addition to that, I help automate internal processes and help with design implementations. In addition to that, I teach network and firewalling classes in the DATEV Azubi-LAB.
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
weight: 6
|
||||
params:
|
||||
company: "DATEV e.G."
|
||||
position: Cloud Engineer
|
||||
begin: Sep 2024
|
||||
end:
|
||||
type: experience
|
||||
---
|
||||
I'm responsible for managing DATEVs own on premise private cloud with Kubernetes, OpenStack, Terraform and various other Identity, OIDC, Email and Storage providers.
|
|
@ -4,7 +4,6 @@ title: "Adoras CV"
|
|||
description: "Adoras CV ^-^"
|
||||
---
|
||||
## About me
|
||||
![Portrait of Adora](/images/portrait.webp)
|
||||
I’m a network engineer with a lot of software development experience, currently embroiled in network security, and I’ve managed mid-sized networks and Linux infrastructure aswell as Datacenter Networks and their automation.
|
||||
|
||||
I’m interested in enterprise networks and software automation and I’d love to combine those two!
|
||||
|
|
|
@ -5,26 +5,26 @@ description: "A list of interesting things curated by Adora 🌠"
|
|||
A list of cool things, curated by me 🌠
|
||||
|
||||
## Stuff
|
||||
- [FireZone](https://www.firezone.dev/): Wireguard-GUI and config generator (💀, not selfhostabale anymore)
|
||||
- [FireZone](https://www.firezone.dev/): Wireguard-GUI and config generator
|
||||
- [Calcure](https://github.com/anufrievroman/calcure): TUI calendar app, installed via pip. Currently lacks support for `.ics` and external calendars.
|
||||
- [LittleLink](https://demo.littlelink-custom.com/): linktree alternative with php
|
||||
- [YourSpotify](https://github.com/Yooooomi/your_spotify): Spotify Dashboard for statistics and fun
|
||||
- [MDwiki](https://dynalon.github.io/mdwiki/#!faq.md) oder [Gollum](https://github.com/gollum/gollum): Wikis
|
||||
- [today](https://git.sr.ht/~sotirisp/today): shell app for journaling.
|
||||
- [devShort](https://git.sr.ht/~rwa/devshort): url shortener that looks intriguing ^-^
|
||||
- [Ursus](https://git.sr.ht/~whiisker/ursus): webapp for managing PowerDNS (💀)
|
||||
- [Ursus](https://git.sr.ht/~whiisker/ursus): webapp for managing PowerDNS
|
||||
- [chiaki](https://git.sr.ht/~thestr4ng3r): multi platform PS4 and PS5 remote play (feature complete)
|
||||
- [undocker](https://git.sr.ht/~motiejus/undocker): docker to rootfs converter
|
||||
- [Matrix: dendrite](https://matrix.org/docs/projects/server/dendrite): 2nd gen Matrix server
|
||||
- [ergo](https://ergo.chat/): Modern IRC implementation in Go
|
||||
|
||||
## CSS
|
||||
- [Ant Design 5.0:](https://ant.design/) CSS Framework for very beautiful UI designs
|
||||
- [Puppertino:](https://codedgar.github.io/Puppertino/) CSS Framework to mimic MacOS ^-^
|
||||
Sonstiges:
|
||||
- [Design tools and Tips for Developers in a Hurry](https://github.com/sw-yx/spark-joy)
|
||||
- [Halfmoon:](https://www.gethalfmoon.com/docs/) Framework which Codeberg based its design on
|
||||
- [Halfmoon](https://www.gethalfmoon.com/docs/) Framework which Codeberg based its design on
|
||||
- [CSS Patterns](https://css-pattern.com/)
|
||||
- [Canadian design system:](https://design.canada.ca) CSS Framework of the Canadian Government
|
||||
- [magick.css:](https://css.winterveil.net/) minimalistic, (mostly) classless CSS that isjust simple and beautiful.
|
||||
- [Bulma:](https://bulma.io/) Stylish CSS framework I wish to use for some apps ^-^
|
||||
- [Canadian design system](https://design.canada.ca) CSS Framework of the Canadian Government
|
||||
- [magick.css: ](https://css.winterveil.net/) minimalistic, (mostly) classless CSS that isjust simple and beautiful.
|
||||
- [Bulma: ](https://bulma.io/) Stylish CSS framework I wish to use for some apps ^-^
|
||||
|
||||
## Fonts
|
||||
- [Comic Mono](https://dtinth.github.io/comic-mono-font/) Comic Sans in good, as a monospace font
|
||||
|
@ -43,6 +43,12 @@ Sonstiges:
|
|||
- [https://themes.gohugo.io/themes/hugo-flex/](https://themes.gohugo.io/themes/hugo-flex/): Simple Website template
|
||||
- [A4 Resume](https://themes.gohugo.io/themes/resume-a4/): Resume Template
|
||||
|
||||
## Zola Themes
|
||||
- [Oceanic Zen](https://github.com/barlog-m/oceanic-zen): Minimalistic dark theme
|
||||
|
||||
## IAM
|
||||
- [WitchAuth](https://codeberg.org/cyberwitch/witchauth) tries to empower small communities and groups to have an identity provider for easy management and better security through SSO.
|
||||
|
||||
## Mail
|
||||
- [aerc](https://sr.ht/~rjarry/aerc) is an email client for your terminal
|
||||
|
||||
|
@ -53,8 +59,4 @@ Sonstiges:
|
|||
- [sli.dev](https://sli.dev/): Presentation Slides for Developers (with nodejs)
|
||||
|
||||
### Games
|
||||
- [OpenRA](https://www.openra.net): Red Alert, Command & Conquer, Dune 2000 rebuilt for the Modern Era. Open Source and free!
|
||||
|
||||
### HTTP
|
||||
- [Ohayou (おはよう)](https://github.com/hatoo/oha): HTTP load generator, inspired by rakyll/hey with tui animation
|
||||
- [GoAccess](https://goaccess.io): Real-time web log analyzer and interactive viewer
|
||||
- [OpenRA](https://www.openra.net): Red Alert, Command & Conquer, Dune 2000 rebuilt for the Modern Era. Open Source and free!
|
|
@ -1,50 +1,24 @@
|
|||
---
|
||||
title: "Portfolio"
|
||||
description: "Adoras Software Development portfolio"
|
||||
params:
|
||||
JS:
|
||||
LatestVersion: true
|
||||
---
|
||||
|
||||
Here you can find a list of projects I worked on or am currently working on:
|
||||
|
||||
## certwarden-deploy
|
||||
Language: `Go`
|
||||
Source: [code.lila.network/adoralaura/certwarden-deploy](https://code.lila.network/adoralaura/certwarden-deploy)
|
||||
Documentation: [certwarden-deploy.adora.codes](https://certwarden-deploy.adora.codes)
|
||||
Latest Version: {{< latest-forgejo-version "adoralaura/certwarden-deploy" >}}
|
||||
|
||||
Deployment tool for (Let's Encrypt) certificates managed by a CertWarden Instance (similar to certbot or acme.sh, just without the ACME stuff)
|
||||
|
||||
## Mailcow Alias Automation
|
||||
Language: `Go`
|
||||
Source: [code.lila.network/adoralaura/mailcow-admin-aliases](https://code.lila.network/adoralaura/mailcow-admin-aliases)
|
||||
Latest Version: {{< latest-forgejo-version "adoralaura/mailcow-admin-aliases" >}}
|
||||
|
||||
Automates the creation of important admin mail aliases (think security@..., postmaster@...).
|
||||
|
||||
## ntppool-exporter
|
||||
Language: `Go`
|
||||
Source: [code.lila.network/adoralaura/ntppool-exporter](https://code.lila.network/adoralaura/ntppool-exporter)
|
||||
Latest Version: {{< latest-forgejo-version "adoralaura/ntppool-exporter" >}}
|
||||
Language: `Go`
|
||||
Source: [code.lila.network/adoralaura/ntppool-exporter](https://code.lila.network/adoralaura/ntppool-exporter)
|
||||
|
||||
A Prometheus exporter application that pulls data from the ntppool.org API for a given NTP server and serves it in a Prometheus compatible format.
|
||||
|
||||
## forgejo-release-proxy
|
||||
Language: `Go`
|
||||
Source: [code.lila.network/adoralaura/forgejo-release-proxy](https://code.lila.network/adoralaura/forgejo-release-proxy)
|
||||
Latest Version: {{< latest-forgejo-version "adoralaura/forgejo-release-proxy" >}}
|
||||
|
||||
A tiny proxy that this portfolio page here queries to display the latest releases for my projects. It communicates with the API of my forgejo Git Instance.
|
||||
|
||||
## IPAM
|
||||
Language: `Go`
|
||||
Language: `Go`
|
||||
Source: [https://codeberg.org/lauralani/ipam](https://codeberg.org/lauralani/ipam)
|
||||
|
||||
A cli based IP Address Management tool written in Go with PowerDNS integration.
|
||||
|
||||
## go-urlsh
|
||||
Language: `Go`
|
||||
Language: `Go`
|
||||
Source: [https://codeberg.org/lauralani/go-urlsh](https://codeberg.org/lauralani/go-urlsh)
|
||||
|
||||
Go based URL shortener. Hosted via Docker and utilizing PostgreSQL.
|
||||
|
@ -73,4 +47,3 @@ Python based DynDNS client that can edit records managed by OVH and Azure
|
|||
- Automated my home WIFI with radius assigned VLANs via Freeradius and custom frontend (Will be open sourced soon) (Language: `PHP`)
|
||||
- Manage my own DNS via OctoDNS as Code
|
||||
- Host my own mail since 2020
|
||||
- Host my own Git and CI/CD tools
|
||||
|
|
|
@ -6,13 +6,12 @@
|
|||
<title>{{ or .Title .Site.Title }}</title>
|
||||
{{ partial "head/favicon.html" . }}
|
||||
{{ partial "head/styling.html" . }}
|
||||
{{ partial "head/scripts.html" . }}
|
||||
</head>
|
||||
<body>
|
||||
{{ partial "body/nav.html" . }}
|
||||
|
||||
{{ block "page" . }}{{ end }}
|
||||
|
||||
<script async src="https://esseles.adora.codes/script.js" data-website-id="a163d1bf-b3af-472d-bded-be9347b32628"></script>
|
||||
<script async src="https://info.lauka.net/script.js" data-website-id="a163d1bf-b3af-472d-bded-be9347b32628"></script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
24
layouts/blog/section.html
Normal file
24
layouts/blog/section.html
Normal file
|
@ -0,0 +1,24 @@
|
|||
{{ define "page" }}
|
||||
<content>
|
||||
<h1>{{ .Title }}</h1>
|
||||
<p>{{ .Content }}</p>
|
||||
<h2>Latest posts</h2>
|
||||
{{ range .Pages }}
|
||||
<div class="section-page-item">
|
||||
<h3>{{ .Title }}</h3>
|
||||
<div class="details">
|
||||
<time class="float-left">{{ .PublishDate | time.Format ":date_medium" }}</time>
|
||||
{{- if .Site.Params.Display.ReadingTime -}}
|
||||
<div class="read-time float-left"> • {{ partial "reading-time.html" . }}</div>
|
||||
{{- end -}}
|
||||
{{- if and .Site.Params.Display.Author .Page.Params.Author -}}
|
||||
<div class="author float-left"> • by {{ .Page.Params.Author }}</div>
|
||||
{{- end -}}
|
||||
</div>
|
||||
|
||||
<div class="summary">{{ .Summary }}</div>
|
||||
<a href="{{ .RelPermalink }}">Read more →</a>
|
||||
</div>
|
||||
{{ end }}
|
||||
</content>
|
||||
{{ end }}
|
|
@ -8,7 +8,7 @@
|
|||
<h3>{{ .Params.position }} @ {{ .Params.company }}</h3>
|
||||
<div class="details">
|
||||
<time class="float-left">
|
||||
{{ .Params.begin }} until {{ .Params.end | default "now" }}
|
||||
{{ .Params.begin }} to {{ .Params.end | default "now" }}
|
||||
</time>
|
||||
</div>
|
||||
{{ .Content }}
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
{{- if eq $menu_item_url $page_url -}}
|
||||
<a href="{{ .URL }}" class="disabled" aria-current="page">{{ .Name }}</a>
|
||||
{{- else -}}
|
||||
<a href="{{ .URL }}" class="nav-link" data-umami-event="{{ .Name }}">{{ .Name }}</a>
|
||||
<a href="{{ .URL }}" class="nav-link">{{ .Name }}</a>
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
</div>
|
||||
</nav>
|
||||
</nav>
|
|
@ -1,3 +0,0 @@
|
|||
{{ if .Page.Params.JS.LatestVersion }}
|
||||
<script src="/js/latest-version.js" defer></script>
|
||||
{{ end }}
|
|
@ -1 +0,0 @@
|
|||
<span class="forgejo-version", data-forgejo-repo="{{ .Get 0 }}">currently unavailable</span>
|
|
@ -1,8 +1,8 @@
|
|||
# Personal Website
|
||||
This is the source code for my personal website.
|
||||
|
||||
It's built with https://gohugo.io and is available at https://adora.codes
|
||||
It's built with https://gohugo.io and is available at https://www.lauka.net
|
||||
|
||||
|
||||
CI-Status:
|
||||
[![status-badge](https://ci.lila.network/api/badges/5/status.svg)](https://ci.lila.network/repos/5)
|
||||
[![status-badge](https://ci.lila.network/api/badges/5/status.svg)](https://ci.lila.network/repos/5)
|
|
@ -1,4 +1,4 @@
|
|||
Contact: mailto:security@lila.network
|
||||
Expires: 2034-10-10T21:59:00.000Z
|
||||
Contact: mailto:security@lauka.net
|
||||
Expires: 2033-08-08T21:59:00.000Z
|
||||
Preferred-Languages: en, de
|
||||
Canonical: https://adora.codes/.well-known/security.txt
|
||||
Canonical: https://www.lauka.net/.well-known/security.txt
|
|
@ -1,30 +0,0 @@
|
|||
async function FillLatestForgejoRelease() {
|
||||
|
||||
const apiPath = `https://forgejo-proxy.services-prod.lila.network/api/v1/code.lila.network/releases`
|
||||
|
||||
|
||||
var forgejoItems = document.getElementsByClassName('forgejo-version')
|
||||
|
||||
const requestOptions = {
|
||||
method: "GET",
|
||||
redirect: "follow",
|
||||
|
||||
};
|
||||
|
||||
[...forgejoItems].forEach(async item => {
|
||||
var repo = item.getAttribute("data-forgejo-repo");
|
||||
|
||||
var queryParam = new URLSearchParams({ namespace: repo }).toString()
|
||||
|
||||
|
||||
var response = await fetch(`${apiPath}?${queryParam}`, requestOptions)
|
||||
|
||||
if (response.ok) {
|
||||
|
||||
item.textContent = await response.text()
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
FillLatestForgejoRelease()
|
Loading…
Reference in a new issue