diff --git a/.woodpecker/deploy-netlify.yaml b/.woodpecker/deploy-netlify.yaml new file mode 100644 index 0000000..c9817ef --- /dev/null +++ b/.woodpecker/deploy-netlify.yaml @@ -0,0 +1,34 @@ +steps: + build: + image: golang:1.20-bookworm + when: + - event: push + branch: [main, staging] + commands: + - wget https://github.com/gohugoio/hugo/releases/download/v0.116.0/hugo_extended_0.116.0_linux-amd64.deb && apt install ./hugo_extended_0.116.0_linux-amd64.deb && rm -f hugo_extended_0.116.0_linux-amd64.deb + - hugo --minify --destination ./public + + deploy-staging: + image: node:alpine + when: + - event: push + branch: staging + secrets: + - NETLIFY_AUTH_TOKEN + - NETLIFY_SITE_ID + commands: + - npm install netlify-cli -g + - netlify deploy --alias stage --dir ./public + + + deploy-production: + image: node:alpine + when: + - event: push + branch: main + secrets: + - NETLIFY_AUTH_TOKEN + - NETLIFY_SITE_ID + commands: + - npm install netlify-cli -g + - netlify deploy --prod --dir ./public diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/assets/scss/style.scss b/assets/scss/style.scss new file mode 100644 index 0000000..736296c --- /dev/null +++ b/assets/scss/style.scss @@ -0,0 +1,166 @@ +$body-font-color: #c1c1c1; +$link-font-color: #00cccc; +$heading-font-color: #d66388; +$code-font-color: cornflowerblue; +$special-font-color: #c2f486; +$main-font-family: Consolas, monaco, monospace; + +a { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; + text-decoration: none; + color: $link-font-color; + &:hover { + text-decoration: underline; + } +} +body { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; + font-family: $main-font-family; + font-size: 130%; + line-height: 1.4; + margin: 3% 5%; + max-width: 50em; + background: #303030; + color: $body-font-color; +} +h1 { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; + line-height: 100%; + margin-top: 2rem; + margin-bottom: 1rem; + color: $heading-font-color; + &:before { + content: "# "; + content: "# "/ ""; + } + &:after { + content: "-----"; + content: "-----" / ""; + display: block; + } +} +h2 { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; + line-height: 100%; + margin-top: 2rem; + margin-bottom: 1rem; + color: $heading-font-color; + &:before { + content: "## "; + content: "## "/ ""; + } +} +h3 { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; + line-height: 100%; + margin-top: 2rem; + margin-bottom: 1rem; + color: $heading-font-color; + &:before { + content: "### "; + content: "### "/ ""; + } +} +html { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} +li { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} +p { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; + margin-bottom: .75rem; + >code { + font: unset; + font-family: $main-font-family; + color: $code-font-color; + } +} +span { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} +strong { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; + font-weight: 700; + color: $heading-font-color; + &:before { + content: "*"; + content: "*" / ""; + } + &:after { + content: "*"; + content: "*" / ""; + } +} +u { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} +ul { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; + list-style-type: none; + margin-left: 1rem; + >li { + &:before { + content: "-"; + position: absolute; + margin-left: -1.1rem; + } + } +} +code { + font: unset; + font-family: $main-font-family; + color: $code-font-color; +} +.special { + color: $special-font-color; + font-style: normal; +} diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..3de3b74 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,55 @@ +--- +date: 2023-08-07T08:58:15+02:00 +--- + +Hi, my name is `Laura Kalb` and I (literally) do things on the internet. + +## About me +I'm a network engineer, with a pretty mixed technical background. I started my career in software development, and then +moved on to be a sysadmin with main emphasis on linux environments. Afterwards, I was a mix of network engineer and site +reliability engineer. Now I'm responsible for the network infrastructure at a big datacenter provider. Currently I'm +primarily working on network automation and our internal network infrastructure, and I'm playing a lot with the Golang +programming language =). + + +## Some nice stuff +A list of **tools**, **projects** and **fun stuff** that I already +have worked on or that I want to work on in the future. + +- [A list of awesome stuff curated by me!](/interesting-stuff) +- building my own IPAM with [Go](https://go.dev/). Source: [https://codeberg.org/lauralani/ipam](https://codeberg.org/lauralani/ipam) +- My own URL Shortener with Go. Source: [https://codeberg.org/lauralani/go-urlsh](https://codeberg.org/lauralani/go-urlsh) +- hosting my own mail with [mailcow](https://mailcow.email/) +- managing my public domains via Infrastructure as Code with Git, CI/CD and [OctoDNS](https://github.com/octodns/octodns) +- wrote my own [DynDNS-Tool](https://codeberg.org/lauralani/dyndns-script) in Python (supports Azure DNS and OVH) +- Automated my home WIFI with radius assigned VLANs via Freeradius and custom frontend (Will be open sourced soon) +- Some minor other projects: + - [OVH ApiKey Manager](https://codeberg.org/lauralani/ovh-apikey-manager) + + +Notepad +My list of awesome technologies I want to implement soon: +- [Garage](https://garagehq.deuxfleurs.fr/): A S3-compatible storage (for selfhosting static websites like this one) + +## Books +I always loved to read as many books as I can. So here I'm listing the books I've read since I started this webpage, +including a rating and short description. These are the last few books I've rated: + +Soon + +## Contact +Some ways to contact me: +- @lauralani@lila.network +- mail (at) (this domain) [(PGP and S/MIME Keys)](/encryption) +- matrix: @lauralani:matrix.org or @lauralani:lila.network +- [LinkedIn](https://www.linkedin.com/in/laura-kalb/) +- [XING](https://www.xing.com/profile/Laura_Kalb3/) + +## About this website +This website is open source and hosted at [Codeberg e.V.](https://codeberg.org/lauralani/www-lauka-net). It's an entirely static webpage generated with [{{< hugo-version >}}](https://gohugo.io/) and hosted with Netlify. + +This page makes due without any cookies, frontend javascript, tracking and databases in the effort to make the web quick and usable again :) + +This page was last updated at {{< last-updated >}} + +Copyright (c) Laura Kalb 2021-{{< copyright-date >}} - [Impressum und Datenschutzerklärung](/impressum.html) \ No newline at end of file diff --git a/hugo.yaml b/hugo.yaml new file mode 100644 index 0000000..1c1a7b1 --- /dev/null +++ b/hugo.yaml @@ -0,0 +1,3 @@ +baseURL: http://example.org/ +languageCode: en-us +title: Lauras Website <3 diff --git a/layouts/404.html b/layouts/404.html new file mode 100644 index 0000000..9c249c5 --- /dev/null +++ b/layouts/404.html @@ -0,0 +1,91 @@ +--- +permalink: 404.html +--- + + + + + + + + + 404 Not Found - lauka.net + + + + + + + + + + +
+ + // 404 page not found. + + + + if + + (!found) + { + + + + throw + + + ("404 Not Found"); + + + } + + // Go home! + + +
+ + diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 0000000..6091cfb --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,13 @@ + + + + + + {{ or .Title .Site.Title }}{{ if ne .Kind "home" }} | {{ .CurrentSection.Title }}{{ end }} + {{ $style := resources.Get "scss/style.scss" | toCSS | minify }} + + + + {{ block "page" . }}{{ end }} + + \ No newline at end of file diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..fe6189c --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,26 @@ +{{ define "page" }} +
+ {{ if ne .Kind "home" }} + Home + {{ end }} +

{{ .Title }}

+ {{ range .Sections }} +

{{ .Title }}

+ + {{ end }} +

Other

+ +
+{{ end }} \ No newline at end of file diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 0000000..5cf005c --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,7 @@ +{{ define "page" }} +
+ Back to {{ .CurrentSection.Title }} +

{{ .Title }}

+ {{ .Content }} +
+{{ end }} \ No newline at end of file diff --git a/layouts/home.html b/layouts/home.html new file mode 100644 index 0000000..8a5a178 --- /dev/null +++ b/layouts/home.html @@ -0,0 +1,14 @@ + + + + + + {{ or .Title .Site.Title }} + {{ $style := resources.Get "scss/style.scss" | toCSS | minify }} + + + +

{{ .Site.Title }}

+ {{ .Content }} + + \ No newline at end of file diff --git a/layouts/shortcodes/copyright-date.html b/layouts/shortcodes/copyright-date.html new file mode 100644 index 0000000..27a8827 --- /dev/null +++ b/layouts/shortcodes/copyright-date.html @@ -0,0 +1 @@ +{{ now.Format "2006" }} \ No newline at end of file diff --git a/layouts/shortcodes/hugo-version.html b/layouts/shortcodes/hugo-version.html new file mode 100644 index 0000000..227f2aa --- /dev/null +++ b/layouts/shortcodes/hugo-version.html @@ -0,0 +1 @@ +Hugo {{ .Site.Hugo.Version }} \ No newline at end of file diff --git a/layouts/shortcodes/last-updated.html b/layouts/shortcodes/last-updated.html new file mode 100644 index 0000000..8b642ba --- /dev/null +++ b/layouts/shortcodes/last-updated.html @@ -0,0 +1 @@ +{{ .Page.Date }} \ No newline at end of file