+
+
+
+ {/each}
+
+
+
diff --git a/src/routes/blogs/test2/+page.svx b/src/routes/about/+page.svelte
similarity index 100%
rename from src/routes/blogs/test2/+page.svx
rename to src/routes/about/+page.svelte
diff --git a/src/routes/blogs/0-The-Creation-of-this-Blog/+page.svx b/src/routes/blogs/0-The-Creation-of-this-Blog/+page.svx
new file mode 100644
index 0000000..b9b4130
--- /dev/null
+++ b/src/routes/blogs/0-The-Creation-of-this-Blog/+page.svx
@@ -0,0 +1,54 @@
+---
+title: "The creation of this Blog"
+date: 2025-09-12
+desc: "The goal was to create an easy to maintain blog with while the main focus relays on keeping the effort
+to write new posts minimal. This is more a ressource summery with tips, than an full tutorial."
+---
+
+
+# Static side generation
+The stack consists of:
+- [svelte + svelte-kit](https://svelte.dev/docs/kit/introduction)
+- [mdsvex](https://mdsvex.pngwn.io/)
+- [static adapter](https://svelte.dev/docs/kit/adapter-static)
+
+The core functionallity provides which allow you to combine svelte and markdown.
+
+
+
+# Image sizing
+
+I want to be able to rezise an image in markdown without using HTML,
+just like in obsidian, by declaring the width after the alt text ``.
+To archive that I replace every img that that mdsvex creates with some new written `img` component:
+
+```ts
+//img.svelte
+
+
+
+```
+
+And then needs to be imported in the mdsvex layout:
+```ts
+
+```
+
+This is desctibed in furhter details by the [mdsvex docs](https://mdsvex.pngwn.io/docs#custom-components)
+and this [issue](https://github.com/pngwn/MDsveX/discussions/292).
+
+# Colors
+
+I love the [rose pine](https://rosepinetheme.com/) color palette. I use it privatly for some applications,
+and think it improves this blog too.
+Both the [prism theme](https://github.com/rose-pine/prism) and [color palette](https://github.com/rose-pine/rose-pine-palette)
+can be added as npm package and used without compications.
diff --git a/src/routes/blogs/1-64k-Demo/+page.svx b/src/routes/blogs/1-64k-Demo/+page.svx
new file mode 100644
index 0000000..3cf22bd
--- /dev/null
+++ b/src/routes/blogs/1-64k-Demo/+page.svx
@@ -0,0 +1,7 @@
+---
+title: "64k Demo"
+date: 2025-09-15
+desc: "Dev Diary of the Demo"
+---
+
+asd
diff --git a/src/routes/blogs/2-gitea-runner-on-podman-in-lxc/+page.svx b/src/routes/blogs/2-gitea-runner-on-podman-in-lxc/+page.svx
new file mode 100644
index 0000000..30d13d1
--- /dev/null
+++ b/src/routes/blogs/2-gitea-runner-on-podman-in-lxc/+page.svx
@@ -0,0 +1,138 @@
+---
+title: Setup up Gitea Runner with Podman in LXC
+desc: "For some time now I already host a gitea instace and now with this blog I finally have some real usage for CI, but setting up gitea actions in an LXC and using Podman instead of Docker Engine was not as straight forward as expected."
+date: 2025-09-17
+---
+
+# Setup PVE
+
+
+Setup Proxmox, so podman can run in unpreviliged container.
+Podman uses high user ids for it's containers, so we need to extend the range that is usable by LXCs.
+
+
+It is also required to change the limit explictly in the containers config, and we need to add a kernel module.
+Those ranges are defined in `/etc/subuid` for user ids and `/etc/subgid` for group ids,
+in the from of `::`.
+You could change them manually or change them with
+
+(the first number defines the start and the secound the end of ids)
+
+```bash
+usermod --add-subuids 100000-300000 --add-subgids 100000-300000 root
+```
+
+So `/etc/subuid` should contains `root:100000:200000`.
+
+We also need to edit the LXC config `/etc/pve/lxc/.conf`.
+
+```yaml
+#
+lxc.idmap: u 0 100000 165536 # uids 0..165536 (container) -> 100000..265536 (host)
+lxc.idmap: g 0 100000 165536 # gids
+lxc.cgroup2.devices.allow: c 10:200 rwm # cgroup2 for PVE >= 7.0
+lxc.mount.entry: /dev/net dev/net none bind,create=dir
+```
+
+I got the information from [here](https://forum.proxmox.com/threads/podman-in-rootless-mode-on-lxc-container.141790/)
+together with infos from the [official docu](https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md#etcsubuid-and-etcsubgid-configuration).
+
+
+# Setup LXC
+
+As we want to run podman as an unpreviliged user, lets create on:
+```bash
+useradd -U
+```
+
+```bash
+apt install podman
+systemctl --user -M act@ enable podman.socket
+```
+
+First, since we wanna run this rootless, we need a new unpreviliged user.
+
+The binary is [here available](https://dl.gitea.com/act_runner/).
+I placed it there `/usr/local/bin/act_runner` and made it executable by the new created user.
+```bash
+cd /usr/local/bin
+curl https://dl.gitea.com/act_runner/0.2.13/act_runner-0.2.13-linux-amd64 > act_runner
+chmod +x act_runner
+chown act:act act_runner
+```
+
+A config that references the regrister file and the podman socket is needed, I placed it in
+`/etc/act_runner/config.yaml`
+
+``` bash
+mkdir /etc/act_runner
+chown -R act:act /etc/act_runner
+```
+
+
+```yaml
+# config.yaml
+runner:
+ file: /etc/act_runner/.runner
+ envs:
+ XDG_RUNTIME_DIR directory: "/run/user/1000"
+
+container:
+ docker_host: "unix:///run/user//podman/docker.sock"
+
+cache:
+ # Enable cache server to use actions/cache.
+ enabled: true
+ # The directory to store the cache data.
+ # If it's empty, the cache data will be stored in $HOME/.cache/actcache.
+ dir: "/etc/act_runner/cache"
+```
+
+And last but not least, we need to regristrate the runner, wich will create the runner file:
+The token is accsasible through `Settings -> Actions -> Runners -> Create new Runner`.
+
+(I'd recommend running the regristration as the unpreviliged user.)
+```bash
+/usr/local/bin/act_runner register -c /etc/act_runner/config.yaml \
+ --instance --token
+ --no-interactive
+```
+
+### Create Act Runner User Service
+Create a user service in in the following file: `/usr/lib/systemd/user/act_runner.servic`
+```ini
+Description=Gitea Actions runner
+Documentation=https://gitea.com/gitea/act_runner
+After=podman.socket
+
+[Service]
+ExecStart=/usr/local/bin/act_runner daemon -c /etc/act_runner/config.yaml
+Delegate=true
+Type=simple
+
+[Install]
+WantedBy=default.target
+```
+
+## Auto start user Services
+
+To start the user services, you can add a drop-in and add the Install, by running:
+
+```bash
+systemctl edit user@1001 --drop-in=start_act_runner
+```
+
+and inserting
+
+```ini
+[Unit]
+After=gitea.service
+
+[Install]
+WantedBy=multi-user.target
+```
+
+In the end, all left to do is, enable the user:
+```bash
+systemctl status user@1001
+```
diff --git a/src/routes/blogs/blog.svelte b/src/routes/blogs/blog.svelte
new file mode 100644
index 0000000..829793f
--- /dev/null
+++ b/src/routes/blogs/blog.svelte
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
{title}
Last updated {ddate.toDateString()}
+
+
+
{desc}
+
+
+
+
+
+
+
diff --git a/src/routes/blogs/e-FemDev-GameJam/+page.svx b/src/routes/blogs/e-FemDev-GameJam/+page.svx
new file mode 100644
index 0000000..baea9de
--- /dev/null
+++ b/src/routes/blogs/e-FemDev-GameJam/+page.svx
@@ -0,0 +1,7 @@
+---
+title: "FemDev GameJam - Catastrophe"
+date: 2024-11-10
+src: "https://elkortes.itch.io/catastrophe"
+desc: "I took part in the amazing FemDev Game and helped to creathe this little game.
+My work are the animations, 3d Models and some texturing"
+---
diff --git a/src/routes/blogs/e-Flame/+page.svx b/src/routes/blogs/e-Flame/+page.svx
new file mode 100644
index 0000000..7a472c0
--- /dev/null
+++ b/src/routes/blogs/e-Flame/+page.svx
@@ -0,0 +1,6 @@
+---
+title: "Flame Demo"
+date: 2024-11-26
+src: "https://madeio.net/fox"
+desc: "A WebGL Project wich shows that deffered rendering and volumetric fog is very possible in Three.js"
+---
diff --git a/src/routes/blogs/h1.svelte b/src/routes/blogs/h1.svelte
new file mode 100644
index 0000000..ac0dd89
--- /dev/null
+++ b/src/routes/blogs/h1.svelte
@@ -0,0 +1 @@
+
diff --git a/src/routes/blogs/h2.svelte b/src/routes/blogs/h2.svelte
new file mode 100644
index 0000000..0c52fbd
--- /dev/null
+++ b/src/routes/blogs/h2.svelte
@@ -0,0 +1 @@
+
diff --git a/src/routes/blogs/h3.svelte b/src/routes/blogs/h3.svelte
new file mode 100644
index 0000000..8b2d682
--- /dev/null
+++ b/src/routes/blogs/h3.svelte
@@ -0,0 +1 @@
+
diff --git a/src/routes/blogs/img.svelte b/src/routes/blogs/img.svelte
new file mode 100644
index 0000000..8c9e24b
--- /dev/null
+++ b/src/routes/blogs/img.svelte
@@ -0,0 +1,9 @@
+
+
+
diff --git a/src/routes/blogs/style-blog.css b/src/routes/blogs/style-blog.css
new file mode 100644
index 0000000..3dfd4d9
--- /dev/null
+++ b/src/routes/blogs/style-blog.css
@@ -0,0 +1,10 @@
+.blog-text{
+ border-radius: 0.5rem;
+ background: var(--rp-moon-surface);
+ box-shadow: 0px 0px 1rem 0px hsl(from var(--rp-moon-base) h s calc(l * 0.85));
+ margin: -1rem;
+ padding: 1rem;
+}
+
+
+
diff --git a/src/routes/blogs/test/+page.svx b/src/routes/blogs/test/+page.svx
deleted file mode 100644
index f4367f8..0000000
--- a/src/routes/blogs/test/+page.svx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: "Blog Entry #1"
----
-
-# Title
-
----
-
-1. asd
-2. asd
-3. asd
-
-```js
-{..., lib}:
-{
- "hello" = "world";
-}
-```
\ No newline at end of file
diff --git a/src/routes/main.svelte b/src/routes/main.svelte
new file mode 100644
index 0000000..e69de29
diff --git a/src/routes/style-entries.css b/src/routes/style-entries.css
new file mode 100644
index 0000000..3d42950
--- /dev/null
+++ b/src/routes/style-entries.css
@@ -0,0 +1,47 @@
+
+.blog-entry{
+ background: var(--rp-moon-surface);
+ border-radius: 0.5rem;
+ width:100%;
+ color: var(--rp-moon-text) !important;
+ text-decoration : none !important;
+ display: flex;
+ flex-flow: row wrap;
+ box-shadow: 0px 0px 1rem 0px hsl(from var(--rp-moon-base) h s calc(l * 0.85));
+}
+
+
+
+.blog-entry:hover{
+ box-shadow: 0px 0px 1rem 0px hsl(from var(--rp-moon-base) h s calc(l * 0.75));
+ background: var(--rp-moon-overlay);
+ transition: 0.2s;
+}
+
+.blog-entry div {
+ width: calc(100% - 17rem);
+ padding: 1rem;
+}
+
+.blog-entry img{
+ width:15rem;
+ object-fit: cover;
+ border-radius: 0 0.5rem 0.5rem 0;
+}
+
+@media only screen and (max-width: 700px) {
+ .blog-entry div {
+ width: calc( 100% - 2rem);
+ }
+
+ .blog-entry img {
+ width: 100%;
+ max-height: 15rem;
+ border-radius: 0 0rem 0.5rem 0.5rem;
+ }
+}
+
+.blog-entry h4{
+ margin-top:0.5rem;
+ margin-bottom: 0.5rem;
+}
diff --git a/src/routes/style.css b/src/routes/style.css
new file mode 100644
index 0000000..23b0ec1
--- /dev/null
+++ b/src/routes/style.css
@@ -0,0 +1,150 @@
+@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,100..900;1,9..144,100..900&display=swap');
+
+@font-face {
+ font-family: 'fira';
+ font-style: normal;
+ font-weight: 500;
+ src: url('/fonts/FiraCode-Regular.ttf') format('truetype');
+}
+
+@font-face {
+ font-family: 'Fraunces';
+ font-style: normal;
+ font-weight: 100 900;
+ src: url('/fonts/Fraunces.woff2') format('woff2');
+}
+
+@font-face {
+ font-family: 'Inter';
+ font-style: normal;
+ font-weight: 400;
+ src: url('/fonts/Inter.ttf') format('truetype');
+}
+
+:root{
+ --d1:1.0rem;
+ --d2:1.5rem;
+ --d3:2.25rem;
+ --d4:3.375rem;
+ --d5:5.0625rem;
+ --d6:7.59375rem;
+ --d7:11.390625rem;
+ --d8:17.0859375rem;
+ --d9:25.62890625rem;
+ --d10:38.443359375rem;
+
+ --border-round:var(--d2);
+}
+
+
+body {
+ color: var(--rp-moon-text);
+ background: var(--rp-moon-base);
+ padding: 0;
+ max-width: 60rem;
+ width:100%;
+ margin: auto;
+ text-align: justify;
+ font-family: Inter;
+}
+
+code {
+ background: var(--rp-moon-base);
+ padding: 3px;
+ border-radius: 0.5rem;
+ font-family: fira;
+}
+
+pre {
+ background: var(--rp-moon-base);
+ border-radius: 0.5rem;
+}
+
+pre code{
+ padding:0px;
+}
+
+a {
+ color: var(--rp-moon-iris);
+ text-decoration: none;
+
+ &:visited {
+ color: hsl(from var(--rp-moon-iris) h s calc(l * 0.85))
+ }
+}
+
+h1,h2,h3,h4,p:first-child {
+ #margin-top: 0;
+}
+
+
+nav {
+ margin-top: 1rem;
+
+ padding: 0 var(--d3) 0;
+
+ font-family: "Fraunces", serif;
+ font-optical-sizing: auto;
+ font-weight: 400;
+ font-style: normal;
+ font-variation-settings:
+ "SOFT" 0,
+ "WONK" 0;
+ font-size:1.728rem;
+}
+
+nav a{
+ margin: 1rem;
+ margin-left: 0rem;
+ padding-left: 0rem;
+ color: var(--rp-moon-foam);
+ #text-decoration: underline;
+ &:visited {
+ color: var(--rp-moon-foam);
+ }
+}
+
+main {
+ #padding: 0 2rem 2rem;
+ margin-top: var(--d3);
+ width: 100%;
+ #box-shadow: 0px 0px 1rem 0px hsl(from var(--rp-moon-base) h s calc(l * 0.85));
+}
+
+.date{
+ text-align: right;
+ color: var(--rp-moon-subtle);
+ font-family: Fraunces;
+}
+
+hr {
+ color: var(--rp-moon-muted);
+}
+
+.bsky{
+ display:block;
+ height: 2rem;
+ float:right;
+}
+
+h1{font-size: 2.986rem}
+h2{font-size: 2.488rem}
+h3{font-size: 2.074rem}
+h4{font-size: 1.728rem}
+
+ h1, h2, h3, h4{
+ font-family: "Fraunces", serif;
+ font-optical-sizing: auto;
+ font-weight: 400;
+ font-style: normal;
+ text-align: left;
+ font-variation-settings:
+ "SOFT" 0,
+ "WONK" 0;
+}
+
+h4{
+ color: var(--rp-moon-foam);
+}
+
+
diff --git a/static/blog-1.png b/static/blog-1.png
new file mode 100644
index 0000000..7554839
Binary files /dev/null and b/static/blog-1.png differ
diff --git a/static/fonts/FiraCode-Bold.ttf b/static/fonts/FiraCode-Bold.ttf
new file mode 100644
index 0000000..f891bde
Binary files /dev/null and b/static/fonts/FiraCode-Bold.ttf differ
diff --git a/static/fonts/FiraCode-Light.ttf b/static/fonts/FiraCode-Light.ttf
new file mode 100644
index 0000000..5664ec3
Binary files /dev/null and b/static/fonts/FiraCode-Light.ttf differ
diff --git a/static/fonts/FiraCode-Medium.ttf b/static/fonts/FiraCode-Medium.ttf
new file mode 100644
index 0000000..2c0ecdf
Binary files /dev/null and b/static/fonts/FiraCode-Medium.ttf differ
diff --git a/static/fonts/FiraCode-Regular.ttf b/static/fonts/FiraCode-Regular.ttf
new file mode 100644
index 0000000..bd73685
Binary files /dev/null and b/static/fonts/FiraCode-Regular.ttf differ
diff --git a/static/fonts/FiraCode-Retina.ttf b/static/fonts/FiraCode-Retina.ttf
new file mode 100644
index 0000000..660742d
Binary files /dev/null and b/static/fonts/FiraCode-Retina.ttf differ
diff --git a/static/fonts/FiraCode-SemiBold.ttf b/static/fonts/FiraCode-SemiBold.ttf
new file mode 100644
index 0000000..d8dcef6
Binary files /dev/null and b/static/fonts/FiraCode-SemiBold.ttf differ
diff --git a/static/fonts/Fraunces.woff2 b/static/fonts/Fraunces.woff2
new file mode 100644
index 0000000..cb295bf
Binary files /dev/null and b/static/fonts/Fraunces.woff2 differ
diff --git a/static/fonts/Inter.ttf b/static/fonts/Inter.ttf
new file mode 100644
index 0000000..e31b51e
Binary files /dev/null and b/static/fonts/Inter.ttf differ
diff --git a/svelte.config.js b/svelte.config.js
index ff0406c..5eae00f 100644
--- a/svelte.config.js
+++ b/svelte.config.js
@@ -2,24 +2,38 @@ import adapter from '@sveltejs/adapter-static';
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
import { mdsvex } from 'mdsvex';
+import { join, dirname } from 'path';
+import { fileURLToPath } from 'url';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = dirname(__filename);
+
+const path_to_layout = join(__dirname, './src/routes/blogs/blog.svelte');
+
+
+
/** @type {import('@sveltejs/kit').Config} */
const config = {
- // Consult https://svelte.dev/docs/kit/integrations
- // for more information about preprocessors
- preprocess: [vitePreprocess(), mdsvex()],
- kit: {
- // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
- // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
- // See https://svelte.dev/docs/kit/adapters for more information about adapters.
- adapter: adapter({
- pages: 'build',
- assets: 'build',
- fallback: undefined,
- precompress: false,
- strict: true
- })
- },
- extensions: ['.svelte', '.svx']
+ // Consult https://svelte.dev/docs/kit/integrations
+ // for more information about preprocessors
+ preprocess: [vitePreprocess(), mdsvex({
+ layout: {
+ _: path_to_layout
+ }
+ })],
+ kit: {
+ // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
+ // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
+ // See https://svelte.dev/docs/kit/adapters for more information about adapters.
+ adapter: adapter({
+ pages: 'build',
+ assets: 'build',
+ fallback: undefined,
+ precompress: false,
+ strict: true
+ })
+ },
+ extensions: ['.svelte', '.svx']
};
export default config;