Compare commits

..

19 commits

Author SHA1 Message Date
b1878d6e0c add Ant Design and Puppertino
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
2024-11-11 15:51:43 +01:00
96c02e7ba3
content(blog): remove template for blog
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
2024-10-10 14:56:27 +02:00
50217b03ea
content(cv): change wording for job duration 2024-10-10 14:56:07 +02:00
098cbca3c3
content: update security.txt
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
2024-10-10 14:51:28 +02:00
8027fb87e1
content: remove old blog remnants 2024-10-10 14:51:10 +02:00
5351f630c6
fix: wrong hugo version in CI pipeline
Some checks failed
ci/woodpecker/push/deploy-rsync Pipeline failed
2024-10-10 14:45:03 +02:00
e1370b89bf
update job content and stuff-list
Some checks failed
ci/woodpecker/push/deploy-rsync Pipeline failed
2024-10-10 14:43:04 +02:00
2ed8ac09fa
build: bump golang and hugo version 2024-10-10 14:40:26 +02:00
8ef077c4db
small changes
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
2024-08-03 19:20:31 +02:00
e89af4f939
add forgejo-release-proxy to portfolio 2024-08-03 19:20:24 +02:00
71bb0761ba Merge pull request 'add version string loading to portfolio page' (#3) from staging into main
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
Reviewed-on: https://code.lila.network///adoralaura/personal-website/pulls/3
2024-08-03 19:17:27 +02:00
622e88f0df
make version string a simple span
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
2024-08-03 19:16:24 +02:00
75344a1a21
fix whitespace issue
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
2024-08-03 18:50:12 +02:00
7f2f3d8700
add version tags on portfolio page
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
2024-08-03 18:49:02 +02:00
7c7b7881d9
update domain
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
2024-07-30 14:02:33 +02:00
af50989693
update portfolio
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
2024-07-30 09:25:41 +02:00
268f6b2486
try umami
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
2024-07-18 10:05:04 +02:00
4468c74791
add portrait to CV
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
2024-07-15 13:26:37 +02:00
515c3287b6 Merge pull request 'merge CV' (#2) from staging into main
All checks were successful
ci/woodpecker/push/deploy-rsync Pipeline was successful
Reviewed-on: #2
2024-07-15 11:08:44 +02:00
22 changed files with 119 additions and 100 deletions

View file

@ -7,10 +7,10 @@ variables:
steps:
build:
image: golang:1.22-bookworm
image: golang:1.23-bookworm
environment:
- HUGO_VERSION=0.128.2
- TZ=Europe/Berlin
HUGO_VERSION: 0.135.0
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

View file

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2023 Adora Laura Kalb <dev@lauka.net>
Copyright (c) 2023-2024 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:

View file

@ -1,23 +0,0 @@
---
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 🎉

View file

@ -1,7 +0,0 @@
---
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_!

View file

@ -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

View file

@ -3,8 +3,10 @@ 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
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.

View file

@ -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.
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.

View file

@ -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.
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.

View file

@ -4,7 +4,7 @@ params:
company: "DATEV e.G."
position: IT Security Engineer
begin: May 2023
end:
end: Sep 2024
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.

View file

@ -0,0 +1,10 @@
---
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.

View file

@ -4,6 +4,7 @@ title: "Adoras CV"
description: "Adoras CV ^-^"
---
## About me
![Portrait of Adora](/images/portrait.webp)
Im a network engineer with a lot of software development experience, currently embroiled in network security, and Ive managed mid-sized networks and Linux infrastructure aswell as Datacenter Networks and their automation.
Im interested in enterprise networks and software automation and Id love to combine those two!

View file

@ -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
- [FireZone](https://www.firezone.dev/): Wireguard-GUI and config generator (💀, not selfhostabale anymore)
- [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,12 +43,6 @@ A list of cool things, curated by me 🌠
- [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
@ -59,4 +53,8 @@ A list of cool things, curated by me 🌠
- [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!
- [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

View file

@ -1,24 +1,50 @@
---
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)
Language: `Go`
Source: [code.lila.network/adoralaura/ntppool-exporter](https://code.lila.network/adoralaura/ntppool-exporter)
Latest Version: {{< latest-forgejo-version "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.
@ -47,3 +73,4 @@ 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

View file

@ -6,12 +6,13 @@
<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://info.lauka.net/script.js" data-website-id="a163d1bf-b3af-472d-bded-be9347b32628"></script>
<script async src="https://esseles.adora.codes/script.js" data-website-id="a163d1bf-b3af-472d-bded-be9347b32628"></script>
</body>
</html>
</html>

View file

@ -1,24 +0,0 @@
{{ 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"> &bull; {{ partial "reading-time.html" . }}</div>
{{- end -}}
{{- if and .Site.Params.Display.Author .Page.Params.Author -}}
<div class="author float-left"> &bull; by {{ .Page.Params.Author }}</div>
{{- end -}}
</div>
<div class="summary">{{ .Summary }}</div>
<a href="{{ .RelPermalink }}">Read more &rarr;</a>
</div>
{{ end }}
</content>
{{ end }}

View file

@ -8,7 +8,7 @@
<h3>{{ .Params.position }} @ {{ .Params.company }}</h3>
<div class="details">
<time class="float-left">
{{ .Params.begin }} to {{ .Params.end | default "now" }}
{{ .Params.begin }} until {{ .Params.end | default "now" }}
</time>
</div>
{{ .Content }}

View file

@ -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">{{ .Name }}</a>
<a href="{{ .URL }}" class="nav-link" data-umami-event="{{ .Name }}">{{ .Name }}</a>
{{- end -}}
{{- end }}
</div>
</nav>
</nav>

View file

@ -0,0 +1,3 @@
{{ if .Page.Params.JS.LatestVersion }}
<script src="/js/latest-version.js" defer></script>
{{ end }}

View file

@ -0,0 +1 @@
<span class="forgejo-version", data-forgejo-repo="{{ .Get 0 }}">currently unavailable</span>

View file

@ -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://www.lauka.net
It's built with https://gohugo.io and is available at https://adora.codes
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)

View file

@ -1,4 +1,4 @@
Contact: mailto:security@lauka.net
Expires: 2033-08-08T21:59:00.000Z
Contact: mailto:security@lila.network
Expires: 2034-10-10T21:59:00.000Z
Preferred-Languages: en, de
Canonical: https://www.lauka.net/.well-known/security.txt
Canonical: https://adora.codes/.well-known/security.txt

View file

@ -0,0 +1,30 @@
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()