From 23d11c675152b90e19dc4dde28053b9f93d150db Mon Sep 17 00:00:00 2001 From: nomad Date: Thu, 5 Jun 2025 22:17:05 +0300 Subject: [PATCH] Blog post restored --- src/lib/components/atoms/Crest.svelte | 3 +- src/lib/components/molecules/CodeBlock.svelte | 17 +++- src/routes/(blog-article)/+layout.svelte | 13 +++ src/routes/(blog-article)/kub-1/+page.md | 88 +++++++++++++++++++ 4 files changed, 116 insertions(+), 5 deletions(-) create mode 100644 src/routes/(blog-article)/kub-1/+page.md diff --git a/src/lib/components/atoms/Crest.svelte b/src/lib/components/atoms/Crest.svelte index ccb707e..9069a37 100644 --- a/src/lib/components/atoms/Crest.svelte +++ b/src/lib/components/atoms/Crest.svelte @@ -1,6 +1,7 @@ diff --git a/src/lib/components/molecules/CodeBlock.svelte b/src/lib/components/molecules/CodeBlock.svelte index 34a6e09..73159d0 100644 --- a/src/lib/components/molecules/CodeBlock.svelte +++ b/src/lib/components/molecules/CodeBlock.svelte @@ -86,6 +86,8 @@ padding: 5px 10px; z-index: 2; font-size: 0.85em; + min-width: 40px; + text-align: center; } .filename { @@ -99,21 +101,28 @@ top: -15px; z-index: 1; } + .code-container { + position: relative; + overflow-x: auto; + } .copy-button { position: absolute; - right: 40px; - top: -15px; + right: 10px; + top: 25px; background: var(--color--code-background); color: white; border: none; - border-radius: 10px; + border-radius: 6px; padding: 5px 8px; font-size: 0.8rem; cursor: pointer; - transition: background 0.2s ease; + transition: all 0.2s ease; + opacity: 0.7; + z-index: 1; &:hover { background: var(--color--primary-shade); + opacity: 1; } } } diff --git a/src/routes/(blog-article)/+layout.svelte b/src/routes/(blog-article)/+layout.svelte index 460ba07..3cd6a25 100644 --- a/src/routes/(blog-article)/+layout.svelte +++ b/src/routes/(blog-article)/+layout.svelte @@ -2,6 +2,7 @@ import Header from '$lib/components/organisms/Header.svelte'; import Footer from '$lib/components/organisms/Footer.svelte'; import Tag from '$lib/components/atoms/Tag.svelte'; + import Crest from '$lib/components/atoms/Crest.svelte'; import dateformat from 'dateformat'; import { keywords, siteBaseUrl, title } from '$lib/data/meta'; @@ -78,6 +79,10 @@ +
+ +
+ {#if post.relatedPosts && post.relatedPosts.length > 0}
@@ -96,6 +101,14 @@ background-color: var(--color--post-page-background); } + .crest-wrapper { + display: flex; + justify-content: center; + align-items: center; + margin: 10px auto; + width: 100%; + } + #article-content { --main-column-width: 65ch; position: relative; diff --git a/src/routes/(blog-article)/kub-1/+page.md b/src/routes/(blog-article)/kub-1/+page.md new file mode 100644 index 0000000..c613cfe --- /dev/null +++ b/src/routes/(blog-article)/kub-1/+page.md @@ -0,0 +1,88 @@ +--- +slug: kub-1 +title: 'My Journey to Kubernetes land #1' +description: From a single Docker container to a full homelab setup - this is how it all started. +date: '2025-01-08' +coverImage: /images/posts/kube.jpeg +tags: ['homelab', 'kubernetes', 'media server'] +--- + + + + + +# The Kubernetes way + +The love story started with a single docker container. In this posts I will try to go through how I started, the process and how I ended up with this setup. as much as I could since it was never a straight path 🐋 + +### The Discovery + +Years ago it all started when I discovered docker containers. I remember I needed a solution to cache downloaded games so I dont consume alot of bandwith and resources. The main goal was to make it faster. I downloaded Game A in PC#1. I redownload the same game in PC#2 but this time it will fetch it from the local cache server. + +I had no clue what docker was. Yes you heard that right. Not a single clue! I found a project called lancache. Im comfortable with computers so I thought lets give it a go. So I did. + +### The meetup + +I had a Desktop PC with 32GB Ram and intel i5. and about 6TB for storage. I thought well this gonna be a server "lets just install linux server on it, and we will go from there" I barley knew how to cd and ls. Today my main daily driver is linux. funny how things work 🤣. Anyways I installed ubuntu server. Followed the instructions on running lancache from github and the docs. Aaaand it was running successfully! I was happy. its doing what its inteded to do. I have **Orchestrated** this I thought. + +One of my friends was my tech guy for the tech guy if you know what I mean. I myself was the tech guy for everyone else. But he was my tech guy! I was proudly showing him the setup. He said and I quote "Oh you are running it in a docker container" I had no clue what was that. I just followed the instructions I knew docker was involved because I wrote some commands started with docker. However I had no clue what it was. He is software engineer, Backend specifically not a devop so he knew what is it just not fully. I told him yeah "uhh yeah docker!". What the hell is that? where can I see the cached files why everything looks gibbresh! He proceeded with explainging docker to me. "its basically a small virtual machine running ubuntu in your ubuntu except it shares the kerneal so its lighter than a VM". + +![noclue](https://images.gr-assets.com/hostedimages/1395589252ra/9017005.gif) + +He lost me at kernal. But I kind of understood the idea. I did my own search. Found another project called jellyfin where you can watch movies and series streamed locally! At first I wasnt excited for the project per se. I just wanted to go through the journy of running it. So I did what I do best. Google it, Follow this instruction I found in a blog post. I spent few hours and it was running! on the same server that i was using for lancache. however all of this is not at home **yet**. + +### The Compose + +This little project intoduced me to docker compose. I dont exactly remember when but its around this timeline. After I tested around thats its working I got excited with the project. It was amazing! I looked for a way to securly connect to it from home. And stumbled on tailscale, I installed it on the server. So now I got a tunnel I could connect to it from home! I was excited. I shared it with my family! Installed tailscale and jellyfin TV Client on all TVs. its great! but It was still just a little project. proof of concept that it works how I **orchestrated** it. I slowly began to get addicted to this. I could command a machine to do exactly what I want when I want automatically. + +### The Orchestra + +##### Hardware + +After that I was using it as is. tailscale and client. I myself wasnt using it much at first. I noticed my wife and my little brother was using it almost daily! I thought 💡 "Hey, why dont I just do the whole thing here locally?" At that point I didn't even knew "Homelab" was an actual term. So I did. But first! we need hardware dont we. + +I had an old desktop pc it was missing some components. I know that on of my friends got me covered he is PC componenets hoarder big time. I gave him a call he was happy to get rid of it. everytime I needed sata cable or whatever I would give him a call first see if its available in his *store* 🤣. Extra points for beign a neighbour as well. + +##### Software + +Okay, I got my hardware now. Its mix and match from old parts: + +* Ram 8GB Currenlty (16GB) +* AMD Ryzen 7 1800X (16) @ 3.600GHz +* And some old GTX 280 Nvidia I think Currently (NVIDIA GeForce GTX 1080 Ti) + +Great! lets get that ubuntu server on it! This is where I was starting to get comfortable with docker compose. Not so comfortable just getting started. I began on getting the stack passing the volumes here and there. Slowly and surely getting how things works. Its not a straight line from here to where I am now. + +Finally the stack is working locally! To the users who are just 2 now. nothing much changed. except they dont need to run tailscale now! + + + +```yaml + - Jellyfin : The media server + - Jellyseer : Requesting new media + - Sonarr : Series tracker + - Radarr : Movies tracker + - Transmission : Download client + - Jackett : Proxy server +``` + + +Fast forward configuring Caddy and sharing these services with friends and family. Currently around 60 users ☃️ + +And this is where I started my real journy into Dockers, Containers, Homelab, Selfhosting as Hobby and eventually Devops, Kubernetes, and CI/CD. + +we will get into all of that in another blog post since this is getting long 🥱 +for now if you are intersted you can see some of my CI/CD 👇🏼 + +[Git with CI/CD Repos](https://git.askar.tv/nomad) +[Github](https://github.com/nomadics9) \ No newline at end of file