Okay, fuck CI/CD
This commit is contained in:
parent
5010599642
commit
4f0cccf078
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,4 +1,3 @@
|
||||
/public/
|
||||
/resources/_gen/
|
||||
/assets/jsconfig.json
|
||||
hugo_stats.json
|
||||
|
@ -5,3 +5,6 @@ main:
|
||||
- name: About
|
||||
url: /about/
|
||||
weight: 20
|
||||
- name: Posts
|
||||
url: /posts/
|
||||
weight: 30
|
||||
|
176
public/404.html
Normal file
176
public/404.html
Normal file
@ -0,0 +1,176 @@
|
||||
<!doctype html><html lang="en-us">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="generator" content="Qubt theme for Hugo" />
|
||||
|
||||
|
||||
|
||||
<title>haxala1r</title>
|
||||
<meta name="title" content="haxala1r" />
|
||||
|
||||
|
||||
|
||||
<meta name="author" content="Emin Arslan" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.955b22a3fcff20511a11d9c7fdac7dd57e8293ee16e4d4ca0d6ab737f4895c3017582739cfd1f17a7c3feae23b42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css" integrity="sha512-lVsio/z/IFEaEdnH/ax91X6Ck+4W5NTKDWq3N/SJXDAXWCc5z9Hxenw/6uI7Qqj0sB1wUvorwDoUMPoGab8tYA==" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/js/main.bundle.min.4657c962c90bb42241e3db9c00332ac44a2ff6a901654b8248b4e2f4b586571fd2aa672dcadf728d6f2135b0ea6088f21d1cf5302b4cae8557e0593f70081d72.js" integrity="sha512-RlfJYskLtCJB49ucADMqxEov9qkBZUuCSLTi9LWGVx/Sqmctyt9yjW8hNbDqYIjyHRz1MCtMroVX4Fk/cAgdcg=="></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="https://emin.software/404.html">
|
||||
<meta property="og:site_name" content="haxala1r">
|
||||
<meta property="og:title" content="404 Page not found">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="404 Page not found">
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
if (localStorage.getItem("color-theme") === "dark" || (!("color-theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
|
||||
document.documentElement.classList.add("dark");
|
||||
} else {
|
||||
document.documentElement.classList.remove("dark");
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="flex h-screen flex-col justify-between bg-neutral-100 dark:bg-neutral-800">
|
||||
<div>
|
||||
<header class="sticky top-0 z-10 bg-neutral-100 dark:bg-neutral-800">
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="mx-auto flex max-w-screen-xl items-center justify-between p-4">
|
||||
<a href="https://emin.software/" class="flex items-center space-x-3">
|
||||
|
||||
<span class="self-center whitespace-nowrap text-2xl font-semibold text-slate-700 dark:text-slate-400">
|
||||
haxala1r
|
||||
</span>
|
||||
</a>
|
||||
<div class="flex flex-row space-x-8">
|
||||
<nav class="hidden space-x-8 text-xl md:block" aria-label="main">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
<a href="/posts/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Posts
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
<button id="theme-toggle" type="button" class="rounded-lg text-sm text-slate-700 hover:text-indigo-500 dark:text-slate-400" aria-label="theme-switcher">
|
||||
<svg id="theme-toggle-dark-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
|
||||
</svg>
|
||||
<svg id="theme-toggle-light-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button id="hamburger-button" class="relative h-8 w-8 cursor-pointer text-3xl md:hidden" aria-label="hamburger-button">
|
||||
<div
|
||||
class="absolute top-4 -mt-0.5 h-[3px] w-8 rounded bg-slate-700 transition-all duration-500 before:absolute before:h-[3px] before:w-8 before:-translate-x-4 before:-translate-y-2.5 before:rounded before:bg-slate-700 before:transition-all before:duration-500 before:content-[''] after:absolute after:h-[3px] after:w-8 after:-translate-x-4 after:translate-y-2.5 after:rounded after:bg-slate-700 after:transition-all after:duration-500 after:content-[''] dark:bg-slate-400 before:dark:bg-slate-400 after:dark:bg-slate-400"></div>
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
<section id="mobile-menu" class="absolute hidden w-full origin-top animate-open-menu flex-col justify-center bg-neutral-100 text-4xl dark:bg-neutral-800">
|
||||
<nav class="flex min-h-screen flex-col items-center py-8" aria-label="mobile">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
<a href="/posts/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Posts
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<div class="mb-2 mt-24 flex flex-col items-center justify-center md:mt-48">
|
||||
<h1 class="text-3xl font-extrabold text-slate-700 md:text-8xl dark:text-slate-200">Page not found!</h1>
|
||||
<div class="m-4 flex flex-row justify-center space-x-4">
|
||||
|
||||
<a href="/" class="rounded-full bg-slate-700 px-3 py-1 text-slate-200 hover:text-indigo-500 dark:bg-slate-200 dark:text-slate-700">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="rounded-full bg-slate-700 px-3 py-1 text-slate-200 hover:text-indigo-500 dark:bg-slate-200 dark:text-slate-700">
|
||||
About
|
||||
</a>
|
||||
|
||||
<a href="/posts/" class="rounded-full bg-slate-700 px-3 py-1 text-slate-200 hover:text-indigo-500 dark:bg-slate-200 dark:text-slate-700">
|
||||
Posts
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="flex flex-col justify-center p-10">
|
||||
|
||||
<p class="text-center text-slate-700 dark:text-slate-400">
|
||||
©
|
||||
2024
|
||||
Emin Arslan
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="text-center text-sm text-slate-700 dark:text-slate-400">
|
||||
Published with <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://gohugo.io" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://github.com/chrede88/qubt" target="_blank" rel="noopener noreferrer">Qubt</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
BIN
public/Emin-Arslan_hu13852530772249569318.webp
Normal file
BIN
public/Emin-Arslan_hu13852530772249569318.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 45 KiB |
209
public/about/index.html
Normal file
209
public/about/index.html
Normal file
@ -0,0 +1,209 @@
|
||||
<!doctype html><html lang="en-us">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="generator" content="Qubt theme for Hugo" />
|
||||
|
||||
|
||||
|
||||
<title>haxala1r</title>
|
||||
<meta name="title" content="haxala1r" />
|
||||
|
||||
|
||||
|
||||
<meta name="author" content="Emin Arslan" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.955b22a3fcff20511a11d9c7fdac7dd57e8293ee16e4d4ca0d6ab737f4895c3017582739cfd1f17a7c3feae23b42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css" integrity="sha512-lVsio/z/IFEaEdnH/ax91X6Ck+4W5NTKDWq3N/SJXDAXWCc5z9Hxenw/6uI7Qqj0sB1wUvorwDoUMPoGab8tYA==" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/js/main.bundle.min.4657c962c90bb42241e3db9c00332ac44a2ff6a901654b8248b4e2f4b586571fd2aa672dcadf728d6f2135b0ea6088f21d1cf5302b4cae8557e0593f70081d72.js" integrity="sha512-RlfJYskLtCJB49ucADMqxEov9qkBZUuCSLTi9LWGVx/Sqmctyt9yjW8hNbDqYIjyHRz1MCtMroVX4Fk/cAgdcg=="></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="https://emin.software/about/">
|
||||
<meta property="og:site_name" content="haxala1r">
|
||||
<meta property="og:title" content="About">
|
||||
<meta property="og:description" content="About me Hi, I’m Emin!
|
||||
I am a second year Computer Engineering student at Izmir University of Economics. I like all things programming and computers.
|
||||
I mostly do systems programming - I feel most at home when I use C++ or C, though I’ve used Rust, Java and many other languages to varying degrees. I also had a phase when I was really into Common Lisp. Seriously, using a language with true macros is an entirely different experience.">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:published_time" content="2024-10-24T23:17:52+03:00">
|
||||
<meta property="article:modified_time" content="2024-10-24T23:17:52+03:00">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="About">
|
||||
<meta name="twitter:description" content="About me Hi, I’m Emin!
|
||||
I am a second year Computer Engineering student at Izmir University of Economics. I like all things programming and computers.
|
||||
I mostly do systems programming - I feel most at home when I use C++ or C, though I’ve used Rust, Java and many other languages to varying degrees. I also had a phase when I was really into Common Lisp. Seriously, using a language with true macros is an entirely different experience.">
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
if (localStorage.getItem("color-theme") === "dark" || (!("color-theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
|
||||
document.documentElement.classList.add("dark");
|
||||
} else {
|
||||
document.documentElement.classList.remove("dark");
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="flex h-screen flex-col justify-between bg-neutral-100 dark:bg-neutral-800">
|
||||
<div>
|
||||
<header class="sticky top-0 z-10 bg-neutral-100 dark:bg-neutral-800">
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="mx-auto flex max-w-screen-xl items-center justify-between p-4">
|
||||
<a href="https://emin.software/" class="flex items-center space-x-3">
|
||||
|
||||
<span class="self-center whitespace-nowrap text-2xl font-semibold text-slate-700 dark:text-slate-400">
|
||||
haxala1r
|
||||
</span>
|
||||
</a>
|
||||
<div class="flex flex-row space-x-8">
|
||||
<nav class="hidden space-x-8 text-xl md:block" aria-label="main">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
<a href="/posts/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Posts
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
<button id="theme-toggle" type="button" class="rounded-lg text-sm text-slate-700 hover:text-indigo-500 dark:text-slate-400" aria-label="theme-switcher">
|
||||
<svg id="theme-toggle-dark-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
|
||||
</svg>
|
||||
<svg id="theme-toggle-light-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button id="hamburger-button" class="relative h-8 w-8 cursor-pointer text-3xl md:hidden" aria-label="hamburger-button">
|
||||
<div
|
||||
class="absolute top-4 -mt-0.5 h-[3px] w-8 rounded bg-slate-700 transition-all duration-500 before:absolute before:h-[3px] before:w-8 before:-translate-x-4 before:-translate-y-2.5 before:rounded before:bg-slate-700 before:transition-all before:duration-500 before:content-[''] after:absolute after:h-[3px] after:w-8 after:-translate-x-4 after:translate-y-2.5 after:rounded after:bg-slate-700 after:transition-all after:duration-500 after:content-[''] dark:bg-slate-400 before:dark:bg-slate-400 after:dark:bg-slate-400"></div>
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
<section id="mobile-menu" class="absolute hidden w-full origin-top animate-open-menu flex-col justify-center bg-neutral-100 text-4xl dark:bg-neutral-800">
|
||||
<nav class="flex min-h-screen flex-col items-center py-8" aria-label="mobile">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
<a href="/posts/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Posts
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="justify-left mx-auto mt-8 flex max-w-screen-md px-4">
|
||||
<article>
|
||||
<h1 class="text-4xl font-extrabold text-slate-700 dark:text-slate-200">
|
||||
About
|
||||
</h1>
|
||||
<h2 class="mt-4 text-2xl text-slate-500 dark:text-slate-400">
|
||||
|
||||
</h2>
|
||||
<div class="mb-4 mt-2 text-sm text-slate-500 dark:text-slate-400">
|
||||
Oct 24, 2024 - 1 minute read
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="prose prose-slate break-words text-lg text-slate-700 dark:prose-invert prose-pre:max-w-[90vw] md:prose-pre:max-w-screen-md dark:text-slate-200">
|
||||
<h1 id="about-me">About me</h1>
|
||||
<p>Hi, I’m Emin!</p>
|
||||
<p>I am a second year Computer Engineering student at Izmir University of
|
||||
Economics. I like all things programming and computers.</p>
|
||||
<p>I mostly do systems programming - I feel most at home when I use C++ or
|
||||
C, though I’ve used Rust, Java and many other languages to varying
|
||||
degrees. I also had a phase when I was <em>really</em> into Common Lisp.
|
||||
Seriously, using a language with true macros is an entirely different
|
||||
experience.</p>
|
||||
<p>This website exists to be my blog/toy. It’s hosted on a VPS, so that I
|
||||
can practice my hosting/web skills. I use <a href="https://gohugo.io/">Hugo</a>
|
||||
with the <a href="https://themes.gohugo.io/themes/qubt/">Qubt</a> theme to
|
||||
generate pages from my content. I think it looks pretty good, check
|
||||
them out.</p>
|
||||
<p>Hopefully I’ll post a bit more on here soon.</p>
|
||||
|
||||
</span>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="flex flex-col justify-center p-10">
|
||||
|
||||
<p class="text-center text-slate-700 dark:text-slate-400">
|
||||
©
|
||||
2024
|
||||
Emin Arslan
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="text-center text-sm text-slate-700 dark:text-slate-400">
|
||||
Published with <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://gohugo.io" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://github.com/chrede88/qubt" target="_blank" rel="noopener noreferrer">Qubt</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
3
public/ai.txt
Normal file
3
public/ai.txt
Normal file
@ -0,0 +1,3 @@
|
||||
User-Agent: *
|
||||
Disallow: *
|
||||
Disallow: /
|
11
public/categories/index.xml
Normal file
11
public/categories/index.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Categories on haxala1r</title>
|
||||
<link>https://emin.software/categories/</link>
|
||||
<description>Recent content in Categories on haxala1r</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>en-us</language>
|
||||
<atom:link href="https://emin.software/categories/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/healthcheck.json
Normal file
1
public/healthcheck.json
Normal file
@ -0,0 +1 @@
|
||||
{ "status": "ok" }
|
187
public/index.html
Normal file
187
public/index.html
Normal file
@ -0,0 +1,187 @@
|
||||
<!doctype html><html lang="en-us">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="generator" content="Qubt theme for Hugo" />
|
||||
|
||||
|
||||
|
||||
<title>haxala1r</title>
|
||||
<meta name="title" content="haxala1r" />
|
||||
|
||||
|
||||
|
||||
<meta name="author" content="Emin Arslan" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.955b22a3fcff20511a11d9c7fdac7dd57e8293ee16e4d4ca0d6ab737f4895c3017582739cfd1f17a7c3feae23b42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css" integrity="sha512-lVsio/z/IFEaEdnH/ax91X6Ck+4W5NTKDWq3N/SJXDAXWCc5z9Hxenw/6uI7Qqj0sB1wUvorwDoUMPoGab8tYA==" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/js/main.bundle.min.4657c962c90bb42241e3db9c00332ac44a2ff6a901654b8248b4e2f4b586571fd2aa672dcadf728d6f2135b0ea6088f21d1cf5302b4cae8557e0593f70081d72.js" integrity="sha512-RlfJYskLtCJB49ucADMqxEov9qkBZUuCSLTi9LWGVx/Sqmctyt9yjW8hNbDqYIjyHRz1MCtMroVX4Fk/cAgdcg=="></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="https://emin.software/">
|
||||
<meta property="og:site_name" content="haxala1r">
|
||||
<meta property="og:title" content="haxala1r">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="haxala1r">
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
if (localStorage.getItem("color-theme") === "dark" || (!("color-theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
|
||||
document.documentElement.classList.add("dark");
|
||||
} else {
|
||||
document.documentElement.classList.remove("dark");
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="flex h-screen flex-col justify-between bg-neutral-100 dark:bg-neutral-800">
|
||||
<div>
|
||||
<header class="sticky top-0 z-10 bg-neutral-100 dark:bg-neutral-800">
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="mx-auto flex max-w-screen-xl items-center justify-between p-4">
|
||||
<a href="https://emin.software/" class="flex items-center space-x-3">
|
||||
|
||||
<span class="self-center whitespace-nowrap text-2xl font-semibold text-slate-700 dark:text-slate-400">
|
||||
haxala1r
|
||||
</span>
|
||||
</a>
|
||||
<div class="flex flex-row space-x-8">
|
||||
<nav class="hidden space-x-8 text-xl md:block" aria-label="main">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
<a href="/posts/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Posts
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
<button id="theme-toggle" type="button" class="rounded-lg text-sm text-slate-700 hover:text-indigo-500 dark:text-slate-400" aria-label="theme-switcher">
|
||||
<svg id="theme-toggle-dark-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
|
||||
</svg>
|
||||
<svg id="theme-toggle-light-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button id="hamburger-button" class="relative h-8 w-8 cursor-pointer text-3xl md:hidden" aria-label="hamburger-button">
|
||||
<div
|
||||
class="absolute top-4 -mt-0.5 h-[3px] w-8 rounded bg-slate-700 transition-all duration-500 before:absolute before:h-[3px] before:w-8 before:-translate-x-4 before:-translate-y-2.5 before:rounded before:bg-slate-700 before:transition-all before:duration-500 before:content-[''] after:absolute after:h-[3px] after:w-8 after:-translate-x-4 after:translate-y-2.5 after:rounded after:bg-slate-700 after:transition-all after:duration-500 after:content-[''] dark:bg-slate-400 before:dark:bg-slate-400 after:dark:bg-slate-400"></div>
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
<section id="mobile-menu" class="absolute hidden w-full origin-top animate-open-menu flex-col justify-center bg-neutral-100 text-4xl dark:bg-neutral-800">
|
||||
<nav class="flex min-h-screen flex-col items-center py-8" aria-label="mobile">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
<a href="/posts/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Posts
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
<div class="flex items-center justify-center">
|
||||
<div class="mt-auto flex h-[75vh] flex-col items-center justify-center">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="relative w-48">
|
||||
<img class="mb-2 h-48 w-48 rounded-full" width="192" height="192" alt="Emin Arslan" src="/Emin-Arslan_hu13852530772249569318.webp" />
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<h1 class="text-center text-4xl font-extrabold text-slate-700 dark:text-slate-200">
|
||||
Emin Arslan
|
||||
</h1>
|
||||
|
||||
|
||||
<h2 class="mt-4 text-center text-xl text-slate-600 dark:text-slate-400">
|
||||
Welcome to my personal blog :)
|
||||
</h2>
|
||||
|
||||
<div class="mt-4 flex flex-wrap items-center justify-center">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="flex flex-col justify-center p-10">
|
||||
|
||||
<p class="text-center text-slate-700 dark:text-slate-400">
|
||||
©
|
||||
2024
|
||||
Emin Arslan
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="text-center text-sm text-slate-700 dark:text-slate-400">
|
||||
Published with <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://gohugo.io" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://github.com/chrede88/qubt" target="_blank" rel="noopener noreferrer">Qubt</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
26
public/index.xml
Normal file
26
public/index.xml
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>haxala1r</title>
|
||||
<link>https://emin.software/</link>
|
||||
<description>Recent content on haxala1r</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Fri, 25 Oct 2024 23:11:17 +0300</lastBuildDate>
|
||||
<atom:link href="https://emin.software/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>My Setup - p1</title>
|
||||
<link>https://emin.software/posts/setup_p1/</link>
|
||||
<pubDate>Fri, 25 Oct 2024 23:11:17 +0300</pubDate>
|
||||
<guid>https://emin.software/posts/setup_p1/</guid>
|
||||
<description>My Setup In this &lsquo;series&rsquo; I will be walking you through my process of how I host everything on this server.
I&rsquo;m currently running, on top of my blog, a gogs instance.
When first creating this website, I just had my blog. I generated this blog using hugo: a static site generator. Hugo allowed me to focus on writing whatever I wanted in Markdown format, it would take care of converting my writing into HTML and CSS.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>About</title>
|
||||
<link>https://emin.software/about/</link>
|
||||
<pubDate>Thu, 24 Oct 2024 23:17:52 +0300</pubDate>
|
||||
<guid>https://emin.software/about/</guid>
|
||||
<description>About me Hi, I&rsquo;m Emin!
I am a second year Computer Engineering student at Izmir University of Economics. I like all things programming and computers.
I mostly do systems programming - I feel most at home when I use C++ or C, though I&rsquo;ve used Rust, Java and many other languages to varying degrees. I also had a phase when I was really into Common Lisp. Seriously, using a language with true macros is an entirely different experience.</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
@ -0,0 +1 @@
|
||||
const initSite=()=>{const t=document.getElementById("hamburger-button"),e=document.getElementById("mobile-menu"),n=()=>{e.classList.toggle("hidden"),e.classList.toggle("flex"),t.classList.toggle("toggle-btn")};t.addEventListener("click",n),e.addEventListener("click",n)};document.addEventListener("DOMContentLoaded",initSite);var themeToggleBtn,themeToggleDarkIcon=document.getElementById("theme-toggle-dark-icon"),themeToggleLightIcon=document.getElementById("theme-toggle-light-icon");localStorage.getItem("color-theme")==="dark"||!("color-theme"in localStorage)&&window.matchMedia("(prefers-color-scheme: dark)").matches?themeToggleLightIcon.classList.remove("hidden"):themeToggleDarkIcon.classList.remove("hidden"),themeToggleBtn=document.getElementById("theme-toggle"),themeToggleBtn.addEventListener("click",function(){themeToggleDarkIcon.classList.toggle("hidden"),themeToggleLightIcon.classList.toggle("hidden"),localStorage.getItem("color-theme")?localStorage.getItem("color-theme")==="light"?(document.documentElement.classList.add("dark"),localStorage.setItem("color-theme","dark")):(document.documentElement.classList.remove("dark"),localStorage.setItem("color-theme","light")):document.documentElement.classList.contains("dark")?(document.documentElement.classList.remove("dark"),localStorage.setItem("color-theme","light")):(document.documentElement.classList.add("dark"),localStorage.setItem("color-theme","dark"))})
|
179
public/posts/docker_setup/index.html
Normal file
179
public/posts/docker_setup/index.html
Normal file
@ -0,0 +1,179 @@
|
||||
<!doctype html><html lang="en-us">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="generator" content="Qubt theme for Hugo" />
|
||||
|
||||
|
||||
|
||||
<title>haxala1r</title>
|
||||
<meta name="title" content="haxala1r" />
|
||||
|
||||
|
||||
|
||||
<meta name="author" content="Emin Arslan" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.955b22a3fcff20511a11d9c7fdac7dd57e8293ee16e4d4ca0d6ab737f4895c3017582739cfd1f17a7c3feae23b42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css" integrity="sha512-lVsio/z/IFEaEdnH/ax91X6Ck+4W5NTKDWq3N/SJXDAXWCc5z9Hxenw/6uI7Qqj0sB1wUvorwDoUMPoGab8tYA==" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/js/main.bundle.min.4657c962c90bb42241e3db9c00332ac44a2ff6a901654b8248b4e2f4b586571fd2aa672dcadf728d6f2135b0ea6088f21d1cf5302b4cae8557e0593f70081d72.js" integrity="sha512-RlfJYskLtCJB49ucADMqxEov9qkBZUuCSLTi9LWGVx/Sqmctyt9yjW8hNbDqYIjyHRz1MCtMroVX4Fk/cAgdcg=="></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="http://emin.software/posts/docker_setup/">
|
||||
<meta property="og:site_name" content="haxala1r">
|
||||
<meta property="og:title" content="haxala1r">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="posts">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="haxala1r">
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
if (localStorage.getItem("color-theme") === "dark" || (!("color-theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
|
||||
document.documentElement.classList.add("dark");
|
||||
} else {
|
||||
document.documentElement.classList.remove("dark");
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="flex h-screen flex-col justify-between bg-neutral-100 dark:bg-neutral-800">
|
||||
<div>
|
||||
<header class="sticky top-0 z-10 bg-neutral-100 dark:bg-neutral-800">
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="mx-auto flex max-w-screen-xl items-center justify-between p-4">
|
||||
<a href="http://emin.software/" class="flex items-center space-x-3">
|
||||
|
||||
<span class="self-center whitespace-nowrap text-2xl font-semibold text-slate-700 dark:text-slate-400">
|
||||
haxala1r
|
||||
</span>
|
||||
</a>
|
||||
<div class="flex flex-row space-x-8">
|
||||
<nav class="hidden space-x-8 text-xl md:block" aria-label="main">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
<button id="theme-toggle" type="button" class="rounded-lg text-sm text-slate-700 hover:text-indigo-500 dark:text-slate-400" aria-label="theme-switcher">
|
||||
<svg id="theme-toggle-dark-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
|
||||
</svg>
|
||||
<svg id="theme-toggle-light-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button id="hamburger-button" class="relative h-8 w-8 cursor-pointer text-3xl md:hidden" aria-label="hamburger-button">
|
||||
<div
|
||||
class="absolute top-4 -mt-0.5 h-[3px] w-8 rounded bg-slate-700 transition-all duration-500 before:absolute before:h-[3px] before:w-8 before:-translate-x-4 before:-translate-y-2.5 before:rounded before:bg-slate-700 before:transition-all before:duration-500 before:content-[''] after:absolute after:h-[3px] after:w-8 after:-translate-x-4 after:translate-y-2.5 after:rounded after:bg-slate-700 after:transition-all after:duration-500 after:content-[''] dark:bg-slate-400 before:dark:bg-slate-400 after:dark:bg-slate-400"></div>
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
<section id="mobile-menu" class="absolute hidden w-full origin-top animate-open-menu flex-col justify-center bg-neutral-100 text-4xl dark:bg-neutral-800">
|
||||
<nav class="flex min-h-screen flex-col items-center py-8" aria-label="mobile">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="justify-left mx-auto mt-8 flex max-w-screen-md px-4">
|
||||
<article>
|
||||
<h1 class="text-4xl font-extrabold text-slate-700 dark:text-slate-200">
|
||||
|
||||
</h1>
|
||||
<h2 class="mt-4 text-2xl text-slate-500 dark:text-slate-400">
|
||||
|
||||
</h2>
|
||||
<div class="mb-4 mt-2 text-sm text-slate-500 dark:text-slate-400">
|
||||
Jan 1, 1 - 0 minute read
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="prose prose-slate break-words text-lg text-slate-700 dark:prose-invert prose-pre:max-w-[90vw] md:prose-pre:max-w-screen-md dark:text-slate-200">
|
||||
|
||||
</span>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="flex flex-col justify-center p-10">
|
||||
|
||||
<p class="text-center text-slate-700 dark:text-slate-400">
|
||||
©
|
||||
2024
|
||||
Emin Arslan
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="text-center text-sm text-slate-700 dark:text-slate-400">
|
||||
Published with <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://gohugo.io" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://github.com/chrede88/qubt" target="_blank" rel="noopener noreferrer">Qubt</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
203
public/posts/index.html
Normal file
203
public/posts/index.html
Normal file
@ -0,0 +1,203 @@
|
||||
<!doctype html><html lang="en-us">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="generator" content="Qubt theme for Hugo" />
|
||||
|
||||
|
||||
|
||||
<title>haxala1r</title>
|
||||
<meta name="title" content="haxala1r" />
|
||||
|
||||
|
||||
|
||||
<meta name="author" content="Emin Arslan" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.955b22a3fcff20511a11d9c7fdac7dd57e8293ee16e4d4ca0d6ab737f4895c3017582739cfd1f17a7c3feae23b42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css" integrity="sha512-lVsio/z/IFEaEdnH/ax91X6Ck+4W5NTKDWq3N/SJXDAXWCc5z9Hxenw/6uI7Qqj0sB1wUvorwDoUMPoGab8tYA==" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/js/main.bundle.min.4657c962c90bb42241e3db9c00332ac44a2ff6a901654b8248b4e2f4b586571fd2aa672dcadf728d6f2135b0ea6088f21d1cf5302b4cae8557e0593f70081d72.js" integrity="sha512-RlfJYskLtCJB49ucADMqxEov9qkBZUuCSLTi9LWGVx/Sqmctyt9yjW8hNbDqYIjyHRz1MCtMroVX4Fk/cAgdcg=="></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="https://emin.software/posts/">
|
||||
<meta property="og:site_name" content="haxala1r">
|
||||
<meta property="og:title" content="Blog">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="website">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Blog">
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
if (localStorage.getItem("color-theme") === "dark" || (!("color-theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
|
||||
document.documentElement.classList.add("dark");
|
||||
} else {
|
||||
document.documentElement.classList.remove("dark");
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="flex h-screen flex-col justify-between bg-neutral-100 dark:bg-neutral-800">
|
||||
<div>
|
||||
<header class="sticky top-0 z-10 bg-neutral-100 dark:bg-neutral-800">
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="mx-auto flex max-w-screen-xl items-center justify-between p-4">
|
||||
<a href="https://emin.software/" class="flex items-center space-x-3">
|
||||
|
||||
<span class="self-center whitespace-nowrap text-2xl font-semibold text-slate-700 dark:text-slate-400">
|
||||
haxala1r
|
||||
</span>
|
||||
</a>
|
||||
<div class="flex flex-row space-x-8">
|
||||
<nav class="hidden space-x-8 text-xl md:block" aria-label="main">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
<a href="/posts/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Posts
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
<button id="theme-toggle" type="button" class="rounded-lg text-sm text-slate-700 hover:text-indigo-500 dark:text-slate-400" aria-label="theme-switcher">
|
||||
<svg id="theme-toggle-dark-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
|
||||
</svg>
|
||||
<svg id="theme-toggle-light-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button id="hamburger-button" class="relative h-8 w-8 cursor-pointer text-3xl md:hidden" aria-label="hamburger-button">
|
||||
<div
|
||||
class="absolute top-4 -mt-0.5 h-[3px] w-8 rounded bg-slate-700 transition-all duration-500 before:absolute before:h-[3px] before:w-8 before:-translate-x-4 before:-translate-y-2.5 before:rounded before:bg-slate-700 before:transition-all before:duration-500 before:content-[''] after:absolute after:h-[3px] after:w-8 after:-translate-x-4 after:translate-y-2.5 after:rounded after:bg-slate-700 after:transition-all after:duration-500 after:content-[''] dark:bg-slate-400 before:dark:bg-slate-400 after:dark:bg-slate-400"></div>
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
<section id="mobile-menu" class="absolute hidden w-full origin-top animate-open-menu flex-col justify-center bg-neutral-100 text-4xl dark:bg-neutral-800">
|
||||
<nav class="flex min-h-screen flex-col items-center py-8" aria-label="mobile">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
<a href="/posts/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Posts
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
|
||||
<div class="justify-left mx-auto mt-8 flex max-w-screen-xl px-4">
|
||||
<article>
|
||||
<h1 class="text-4xl font-extrabold text-slate-700 dark:text-slate-200">
|
||||
Blog
|
||||
</h1>
|
||||
<div class="mt-2 text-lg text-slate-500 dark:text-slate-400">
|
||||
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mx-auto max-w-screen-xl">
|
||||
<div class="mt-8 grid grid-flow-row grid-cols-1 justify-items-center gap-8 px-4 lg:grid-cols-2">
|
||||
|
||||
|
||||
<a href="/posts/setup_p1/">
|
||||
<div class="flex h-full max-h-80 w-full max-w-2xl flex-row rounded-xl bg-neutral-300 bg-clip-border text-slate-400 shadow-md dark:bg-neutral-700">
|
||||
|
||||
<div class="flex flex-col justify-between p-6">
|
||||
<div>
|
||||
<h4 class="mb-2 line-clamp-2 text-base font-semibold text-slate-700 antialiased md:text-2xl dark:text-slate-200">
|
||||
My Setup - p1
|
||||
</h4>
|
||||
<p class="mb-4 line-clamp-6 text-base text-slate-500 dark:text-slate-400">
|
||||
My Setup In this ‘series’ I will be walking you through my process of how I host everything on this server.
|
||||
I’m currently running, on top of my blog, a gogs instance.
|
||||
When first creating this website, I just had my blog. I generated this blog using hugo: a static site generator. Hugo allowed me to focus on writing whatever I wanted in Markdown format, it would take care of converting my writing into HTML and CSS.
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between">
|
||||
<div class="flex items-center -space-x-3">
|
||||
|
||||
</div>
|
||||
<div class="p-3 text-xs text-slate-500 dark:text-slate-400">
|
||||
Oct 25, 2024
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="flex flex-col justify-center p-10">
|
||||
|
||||
<p class="text-center text-slate-700 dark:text-slate-400">
|
||||
©
|
||||
2024
|
||||
Emin Arslan
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="text-center text-sm text-slate-700 dark:text-slate-400">
|
||||
Published with <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://gohugo.io" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://github.com/chrede88/qubt" target="_blank" rel="noopener noreferrer">Qubt</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
19
public/posts/index.xml
Normal file
19
public/posts/index.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Blog on haxala1r</title>
|
||||
<link>https://emin.software/posts/</link>
|
||||
<description>Recent content in Blog on haxala1r</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Fri, 25 Oct 2024 23:11:17 +0300</lastBuildDate>
|
||||
<atom:link href="https://emin.software/posts/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>My Setup - p1</title>
|
||||
<link>https://emin.software/posts/setup_p1/</link>
|
||||
<pubDate>Fri, 25 Oct 2024 23:11:17 +0300</pubDate>
|
||||
<guid>https://emin.software/posts/setup_p1/</guid>
|
||||
<description>My Setup In this &lsquo;series&rsquo; I will be walking you through my process of how I host everything on this server.
I&rsquo;m currently running, on top of my blog, a gogs instance.
When first creating this website, I just had my blog. I generated this blog using hugo: a static site generator. Hugo allowed me to focus on writing whatever I wanted in Markdown format, it would take care of converting my writing into HTML and CSS.</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
287
public/posts/podman-setup/index.html
Normal file
287
public/posts/podman-setup/index.html
Normal file
@ -0,0 +1,287 @@
|
||||
<!doctype html><html lang="en-us">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="generator" content="Qubt theme for Hugo" />
|
||||
|
||||
|
||||
|
||||
<title>haxala1r</title>
|
||||
<meta name="title" content="haxala1r" />
|
||||
|
||||
|
||||
|
||||
<meta name="author" content="Emin Arslan" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.955b22a3fcff20511a11d9c7fdac7dd57e8293ee16e4d4ca0d6ab737f4895c3017582739cfd1f17a7c3feae23b42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css" integrity="sha512-lVsio/z/IFEaEdnH/ax91X6Ck+4W5NTKDWq3N/SJXDAXWCc5z9Hxenw/6uI7Qqj0sB1wUvorwDoUMPoGab8tYA==" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/js/main.bundle.min.4657c962c90bb42241e3db9c00332ac44a2ff6a901654b8248b4e2f4b586571fd2aa672dcadf728d6f2135b0ea6088f21d1cf5302b4cae8557e0593f70081d72.js" integrity="sha512-RlfJYskLtCJB49ucADMqxEov9qkBZUuCSLTi9LWGVx/Sqmctyt9yjW8hNbDqYIjyHRz1MCtMroVX4Fk/cAgdcg=="></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="http://emin.software/posts/podman-setup/">
|
||||
<meta property="og:site_name" content="haxala1r">
|
||||
<meta property="og:title" content="My Setup - p1">
|
||||
<meta property="og:description" content="Podman In this ‘series’ I will be walking you through my process of how I host everything on this server.
|
||||
When first creating this website, I just had my blog. I generated this blog using hugo: a static site generator. Hugo allowed me to focus on writing whatever I wanted in Markdown format, it would take care of converting my writing into HTML and CSS.
|
||||
I had a small issue with how I wrote my code and deployed it though: whenever I made a small change to the page, I had to manually rebuild it, then upload the updated version to my server and put it in the web directory.">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="posts">
|
||||
<meta property="article:published_time" content="2024-10-25T23:11:17+03:00">
|
||||
<meta property="article:modified_time" content="2024-10-25T23:11:17+03:00">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="My Setup - p1">
|
||||
<meta name="twitter:description" content="Podman In this ‘series’ I will be walking you through my process of how I host everything on this server.
|
||||
When first creating this website, I just had my blog. I generated this blog using hugo: a static site generator. Hugo allowed me to focus on writing whatever I wanted in Markdown format, it would take care of converting my writing into HTML and CSS.
|
||||
I had a small issue with how I wrote my code and deployed it though: whenever I made a small change to the page, I had to manually rebuild it, then upload the updated version to my server and put it in the web directory.">
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
if (localStorage.getItem("color-theme") === "dark" || (!("color-theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
|
||||
document.documentElement.classList.add("dark");
|
||||
} else {
|
||||
document.documentElement.classList.remove("dark");
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="flex h-screen flex-col justify-between bg-neutral-100 dark:bg-neutral-800">
|
||||
<div>
|
||||
<header class="sticky top-0 z-10 bg-neutral-100 dark:bg-neutral-800">
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="mx-auto flex max-w-screen-xl items-center justify-between p-4">
|
||||
<a href="http://emin.software/" class="flex items-center space-x-3">
|
||||
|
||||
<span class="self-center whitespace-nowrap text-2xl font-semibold text-slate-700 dark:text-slate-400">
|
||||
haxala1r
|
||||
</span>
|
||||
</a>
|
||||
<div class="flex flex-row space-x-8">
|
||||
<nav class="hidden space-x-8 text-xl md:block" aria-label="main">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
<button id="theme-toggle" type="button" class="rounded-lg text-sm text-slate-700 hover:text-indigo-500 dark:text-slate-400" aria-label="theme-switcher">
|
||||
<svg id="theme-toggle-dark-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
|
||||
</svg>
|
||||
<svg id="theme-toggle-light-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button id="hamburger-button" class="relative h-8 w-8 cursor-pointer text-3xl md:hidden" aria-label="hamburger-button">
|
||||
<div
|
||||
class="absolute top-4 -mt-0.5 h-[3px] w-8 rounded bg-slate-700 transition-all duration-500 before:absolute before:h-[3px] before:w-8 before:-translate-x-4 before:-translate-y-2.5 before:rounded before:bg-slate-700 before:transition-all before:duration-500 before:content-[''] after:absolute after:h-[3px] after:w-8 after:-translate-x-4 after:translate-y-2.5 after:rounded after:bg-slate-700 after:transition-all after:duration-500 after:content-[''] dark:bg-slate-400 before:dark:bg-slate-400 after:dark:bg-slate-400"></div>
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
<section id="mobile-menu" class="absolute hidden w-full origin-top animate-open-menu flex-col justify-center bg-neutral-100 text-4xl dark:bg-neutral-800">
|
||||
<nav class="flex min-h-screen flex-col items-center py-8" aria-label="mobile">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="justify-left mx-auto mt-8 flex max-w-screen-md px-4">
|
||||
<article>
|
||||
<h1 class="text-4xl font-extrabold text-slate-700 dark:text-slate-200">
|
||||
My Setup - p1
|
||||
</h1>
|
||||
<h2 class="mt-4 text-2xl text-slate-500 dark:text-slate-400">
|
||||
|
||||
</h2>
|
||||
<div class="mb-4 mt-2 text-sm text-slate-500 dark:text-slate-400">
|
||||
Oct 25, 2024 - 5 minute read
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="prose prose-slate break-words text-lg text-slate-700 dark:prose-invert prose-pre:max-w-[90vw] md:prose-pre:max-w-screen-md dark:text-slate-200">
|
||||
<h1 id="podman">Podman</h1>
|
||||
<p>In this ‘series’ I will be walking you through my process of how I
|
||||
host everything on this server.</p>
|
||||
<p>When first creating this website, I just had my blog. I generated this blog
|
||||
using <a href="https://hugo.io">hugo</a>: a static site generator. Hugo allowed me to
|
||||
focus on writing whatever I wanted in Markdown format, it would take care of
|
||||
converting my writing into HTML and CSS.</p>
|
||||
<p>I had a small issue with how I wrote my code and deployed it though: whenever I
|
||||
made a small change to the page, I had to manually rebuild it, then upload the
|
||||
updated version to my server and put it in the web directory.</p>
|
||||
<p>This is a cumbersome process. The whole point of using hugo is to <em>focus on the
|
||||
writing</em>, so having to rebuild and reupload for every typo is… not great. I
|
||||
wanted to be able to do a simple <code>git push</code>, and not worry about the rest.</p>
|
||||
<p>The previous “manual” approach also depends on me having already installed all
|
||||
necessary software. If you have a dedicated server that you’re running yourself,
|
||||
that’s probably okay, you just have to setup once, but I’m running this on a VPS
|
||||
that I’m not sure I’ll keep forever. The ability to reproduce this exact setup
|
||||
within minutes actually matters.</p>
|
||||
<p>After reading a bit on this topic, I decided I would use podman for this. Docker would
|
||||
work just as nicely (any containerization software would work, really), but I decided
|
||||
on podman because it can run without a daemon and without root privilages. Also,
|
||||
it has pretty neat support for kubernetes pods (which are honestly a lot more useful
|
||||
than I would’ve given them credit for before I started this whole project).</p>
|
||||
<p>That’s really why I’m writing this. So that you, the reader (or possibly my future self) can
|
||||
understand the methodology of podman, how to create pods, run containers and configure all
|
||||
of this automatically, and so that I may demonstrate and share what I’ve learnt during
|
||||
this process.</p>
|
||||
<h2 id="motivation">Motivation</h2>
|
||||
<p>Basically, I’m already running a web server. Why shouldn’t I also host several other services
|
||||
for friends and family while I’m at it? Why shouldn’t I make the entire setup reproducable?</p>
|
||||
<p>Here are some of the services I wanted to self-host:
|
||||
- Web server: obviously, who doesn’t want a website?
|
||||
- Some git server: having my own place to show off all the things I’ve done is certainly really cool.
|
||||
- Wireguard: Free VPN along with the website? sign me up.
|
||||
- CI/CD: automatic testing and releases of my software is cool, and also incredibly useful because that’s
|
||||
how I plan to handle the website as well.</p>
|
||||
<p>Of course, there are always more things I could be self-hosting. So it makes sense to automate
|
||||
the setup, and that’s where podman comes in.</p>
|
||||
<h2 id="basics-of-podman">Basics of podman</h2>
|
||||
<p>Before we can get to the exciting stuff, we need to go over what podman is, and how to
|
||||
use it. Essentially, podman is a container engine: it lets you build and run applications in
|
||||
a containerized environment. Containers are useful because they provide security,
|
||||
easy setup and most importantly, reproducability.</p>
|
||||
<p>I’m not going to spend any more time explaining what containers are and why they’re
|
||||
good, that’s been done to death already. Right now, what matters is the actual setup,
|
||||
so let’s get on with it.</p>
|
||||
<p>If you’ve used docker before, you’ll feel right at home. Many commands are unchanged
|
||||
from docker, making podman a suitable drop-in replacement. Some things like network
|
||||
setups tend to be a little different, but that won’t matter too much right now.</p>
|
||||
<p>In case you’re unfamiliar with docker, here are some basic commands:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#75715e"># Search for container images (on docker.io unless you configure otherwise)</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman search <image name>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Download (pull) an image from remote repo</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman pull <image name>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># list the images you have pulled.</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman images
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># run a container.</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman run <image name>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># run a container, but with a LOT of flags. I just listed the most useful ones.</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman run
|
||||
</span></span><span style="display:flex;"><span> -i <span style="color:#75715e"># interactive, so you can e.g. run a shell in the container</span>
|
||||
</span></span><span style="display:flex;"><span> -t <span style="color:#75715e"># allocates a tty. useful with -i so that shell completion etc. can work</span>
|
||||
</span></span><span style="display:flex;"><span> -d <span style="color:#75715e"># opposite of -i, detach and run in the background</span>
|
||||
</span></span><span style="display:flex;"><span> --port <HOST PORT>:<CONTAINER PORT> <span style="color:#75715e"># port forwarding, for when you need a server.</span>
|
||||
</span></span><span style="display:flex;"><span> -v <HOST DIR>:<CONT DIR>:<FLAGS> <span style="color:#75715e"># give the container access to some directory</span>
|
||||
</span></span><span style="display:flex;"><span> <image name>
|
||||
</span></span><span style="display:flex;"><span> <command> <span style="color:#75715e"># ... want a shell?</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># list running containers. add -a to list ALL containers, running or stopped.</span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># podman ps <-a></span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># stop a running container.</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman stop <id>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># stopped containers don't automatically get removed. This command removes it.</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman rm <id>
|
||||
</span></span></code></pre></div><h2 id="pods-are-nice">Pods are nice.</h2>
|
||||
<p>Pods are basically just a collection of containers - multiple programs working
|
||||
with each other.</p>
|
||||
<p>Usually, on a server, each application <em>isn’t</em> totally separate from each other</p>
|
||||
<ul>
|
||||
<li>for my own usecase, I want my git server (e.g. gogs) to automatically build
|
||||
and update my website whenever I push to its git repository. That means my git
|
||||
server and web server can’t be <em>totally</em> separate, there’s some amount of relation.
|
||||
Pods can help with this.</li>
|
||||
</ul>
|
||||
<p>Pods allow you to create a “pod” containing several containers, sharing resources
|
||||
with each other, etc. For example, I could run a pod with nginx and gogs running
|
||||
in seperate containers - then, the nginx server could act as a reverse proxy based
|
||||
on host name, showing the web page on emin.software, and the git server on
|
||||
git.emin.software. Nginx redirects to gogs which only binds to <em>the pod’s
|
||||
localhost address</em>, so only nginx can reach it. Likewise, a database server can
|
||||
be added to the pod only for the git server to use, so that it can’t be reached
|
||||
from the outside the pod - and it is logically grouped along with the rest of the pod.</p>
|
||||
<p>On top of this, pods can be built purely from a kubernetes-compatible configuration
|
||||
file, so setting them up is relatively easy.</p>
|
||||
|
||||
</span>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="flex flex-col justify-center p-10">
|
||||
|
||||
<p class="text-center text-slate-700 dark:text-slate-400">
|
||||
©
|
||||
2024
|
||||
Emin Arslan
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="text-center text-sm text-slate-700 dark:text-slate-400">
|
||||
Published with <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://gohugo.io" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://github.com/chrede88/qubt" target="_blank" rel="noopener noreferrer">Qubt</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
298
public/posts/setup_p1/index.html
Normal file
298
public/posts/setup_p1/index.html
Normal file
@ -0,0 +1,298 @@
|
||||
<!doctype html><html lang="en-us">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="generator" content="Qubt theme for Hugo" />
|
||||
|
||||
|
||||
|
||||
<title>haxala1r</title>
|
||||
<meta name="title" content="haxala1r" />
|
||||
|
||||
|
||||
|
||||
<meta name="author" content="Emin Arslan" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="/css/main.bundle.min.955b22a3fcff20511a11d9c7fdac7dd57e8293ee16e4d4ca0d6ab737f4895c3017582739cfd1f17a7c3feae23b42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css" integrity="sha512-lVsio/z/IFEaEdnH/ax91X6Ck+4W5NTKDWq3N/SJXDAXWCc5z9Hxenw/6uI7Qqj0sB1wUvorwDoUMPoGab8tYA==" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script defer src="/js/main.bundle.min.4657c962c90bb42241e3db9c00332ac44a2ff6a901654b8248b4e2f4b586571fd2aa672dcadf728d6f2135b0ea6088f21d1cf5302b4cae8557e0593f70081d72.js" integrity="sha512-RlfJYskLtCJB49ucADMqxEov9qkBZUuCSLTi9LWGVx/Sqmctyt9yjW8hNbDqYIjyHRz1MCtMroVX4Fk/cAgdcg=="></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta property="og:url" content="https://emin.software/posts/setup_p1/">
|
||||
<meta property="og:site_name" content="haxala1r">
|
||||
<meta property="og:title" content="My Setup - p1">
|
||||
<meta property="og:description" content="My Setup In this ‘series’ I will be walking you through my process of how I host everything on this server.
|
||||
I’m currently running, on top of my blog, a gogs instance.
|
||||
When first creating this website, I just had my blog. I generated this blog using hugo: a static site generator. Hugo allowed me to focus on writing whatever I wanted in Markdown format, it would take care of converting my writing into HTML and CSS.">
|
||||
<meta property="og:locale" content="en_us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="posts">
|
||||
<meta property="article:published_time" content="2024-10-25T23:11:17+03:00">
|
||||
<meta property="article:modified_time" content="2024-10-25T23:11:17+03:00">
|
||||
|
||||
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="My Setup - p1">
|
||||
<meta name="twitter:description" content="My Setup In this ‘series’ I will be walking you through my process of how I host everything on this server.
|
||||
I’m currently running, on top of my blog, a gogs instance.
|
||||
When first creating this website, I just had my blog. I generated this blog using hugo: a static site generator. Hugo allowed me to focus on writing whatever I wanted in Markdown format, it would take care of converting my writing into HTML and CSS.">
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
if (localStorage.getItem("color-theme") === "dark" || (!("color-theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
|
||||
document.documentElement.classList.add("dark");
|
||||
} else {
|
||||
document.documentElement.classList.remove("dark");
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="flex h-screen flex-col justify-between bg-neutral-100 dark:bg-neutral-800">
|
||||
<div>
|
||||
<header class="sticky top-0 z-10 bg-neutral-100 dark:bg-neutral-800">
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="mx-auto flex max-w-screen-xl items-center justify-between p-4">
|
||||
<a href="https://emin.software/" class="flex items-center space-x-3">
|
||||
|
||||
<span class="self-center whitespace-nowrap text-2xl font-semibold text-slate-700 dark:text-slate-400">
|
||||
haxala1r
|
||||
</span>
|
||||
</a>
|
||||
<div class="flex flex-row space-x-8">
|
||||
<nav class="hidden space-x-8 text-xl md:block" aria-label="main">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
<a href="/posts/" class="px-3 py-2 text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Posts
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
<button id="theme-toggle" type="button" class="rounded-lg text-sm text-slate-700 hover:text-indigo-500 dark:text-slate-400" aria-label="theme-switcher">
|
||||
<svg id="theme-toggle-dark-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
|
||||
</svg>
|
||||
<svg id="theme-toggle-light-icon" class="hidden h-6 w-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button id="hamburger-button" class="relative h-8 w-8 cursor-pointer text-3xl md:hidden" aria-label="hamburger-button">
|
||||
<div
|
||||
class="absolute top-4 -mt-0.5 h-[3px] w-8 rounded bg-slate-700 transition-all duration-500 before:absolute before:h-[3px] before:w-8 before:-translate-x-4 before:-translate-y-2.5 before:rounded before:bg-slate-700 before:transition-all before:duration-500 before:content-[''] after:absolute after:h-[3px] after:w-8 after:-translate-x-4 after:translate-y-2.5 after:rounded after:bg-slate-700 after:transition-all after:duration-500 after:content-[''] dark:bg-slate-400 before:dark:bg-slate-400 after:dark:bg-slate-400"></div>
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
<section id="mobile-menu" class="absolute hidden w-full origin-top animate-open-menu flex-col justify-center bg-neutral-100 text-4xl dark:bg-neutral-800">
|
||||
<nav class="flex min-h-screen flex-col items-center py-8" aria-label="mobile">
|
||||
|
||||
<a href="/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Home
|
||||
</a>
|
||||
|
||||
<a href="/about/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
About
|
||||
</a>
|
||||
|
||||
<a href="/posts/" class="px-3 py-2 text-center text-slate-700 hover:text-indigo-500 md:p-0 dark:text-slate-400">
|
||||
Posts
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
</header>
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="justify-left mx-auto mt-8 flex max-w-screen-md px-4">
|
||||
<article>
|
||||
<h1 class="text-4xl font-extrabold text-slate-700 dark:text-slate-200">
|
||||
My Setup - p1
|
||||
</h1>
|
||||
<h2 class="mt-4 text-2xl text-slate-500 dark:text-slate-400">
|
||||
|
||||
</h2>
|
||||
<div class="mb-4 mt-2 text-sm text-slate-500 dark:text-slate-400">
|
||||
Oct 25, 2024 - 5 minute read
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="prose prose-slate break-words text-lg text-slate-700 dark:prose-invert prose-pre:max-w-[90vw] md:prose-pre:max-w-screen-md dark:text-slate-200">
|
||||
<h1 id="my-setup">My Setup</h1>
|
||||
<p>In this ‘series’ I will be walking you through my process of how I
|
||||
host everything on this server.</p>
|
||||
<p>I’m currently running, on top of <a href="https://emin.software">my blog</a>, a <a href="https://git.emin.software">gogs
|
||||
instance</a>.</p>
|
||||
<p>When first creating this website, I just had my blog. I generated this blog
|
||||
using <a href="https://hugo.io">hugo</a>: a static site generator. Hugo allowed me to
|
||||
focus on writing whatever I wanted in Markdown format, it would take care of
|
||||
converting my writing into HTML and CSS.</p>
|
||||
<p>I had a small issue with how I wrote my code and deployed it though: whenever I
|
||||
made a small change to the page, I had to manually rebuild it, then upload the
|
||||
updated version to my server and put it in the web directory.</p>
|
||||
<p>This is a cumbersome process. The whole point of using hugo is to <em>focus on the
|
||||
writing</em>, so having to rebuild and reupload for every typo is… not great. I
|
||||
wanted to be able to do a simple <code>git push</code>, and not worry about the rest.</p>
|
||||
<p>The previous “manual” approach also depends on me having already installed all
|
||||
necessary software. If you have a dedicated server that you’re running yourself,
|
||||
that’s probably okay, you just have to setup once, but I’m running this on a VPS
|
||||
that I’m not sure I’ll keep forever. The ability to reproduce this exact setup
|
||||
within minutes actually matters.</p>
|
||||
<p>After reading a bit on this topic, I decided I would use podman for this. Docker
|
||||
would work just as nicely (any containerization software would work, really),
|
||||
but I decided on podman because it can run without a daemon and without root
|
||||
privilages. Also, it has pretty neat support for kubernetes pods (which are
|
||||
honestly a lot more useful than I would’ve given them credit for before I started
|
||||
this whole project).</p>
|
||||
<p>That’s really why I’m writing this. So that you, the reader (or possibly my future self) can
|
||||
understand the methodology of podman, how to create pods, run containers and configure all
|
||||
of this automatically, and so that I may demonstrate and share what I’ve learnt during
|
||||
this process.</p>
|
||||
<h2 id="motivation">Motivation</h2>
|
||||
<p>Basically, I’m already running a web server. Why shouldn’t I also host several other services
|
||||
for friends and family while I’m at it? Why shouldn’t I make the entire setup reproducable?</p>
|
||||
<p>Here are some of the services I wanted to self-host:
|
||||
- Web server: obviously, who doesn’t want a website?
|
||||
- Some git server: having my own place to show off all the things I’ve done is certainly really cool.
|
||||
- Wireguard: Free VPN along with the website? sign me up.
|
||||
- CI/CD: automatic testing and releases of my software is cool, and also incredibly useful because that’s
|
||||
how I plan to handle the website as well.</p>
|
||||
<p>Of course, there are always more things I could be self-hosting. So it makes sense to automate
|
||||
the setup, and that’s where podman comes in.</p>
|
||||
<h2 id="basics-of-podman">Basics of podman</h2>
|
||||
<p>Before we can get to the exciting stuff, we need to go over what podman is, and how to
|
||||
use it. Essentially, podman is a container engine: it lets you build and run applications in
|
||||
a containerized environment. Containers are useful because they provide security,
|
||||
easy setup and most importantly, reproducability.</p>
|
||||
<p>I’m not going to spend any more time explaining what containers are and why they’re
|
||||
good, that’s been done to death already. Right now, what matters is the actual setup,
|
||||
so let’s get on with it.</p>
|
||||
<p>If you’ve used docker before, you’ll feel right at home. Many commands are unchanged
|
||||
from docker, making podman a suitable drop-in replacement. Some things like network
|
||||
setups tend to be a little different, but that won’t matter too much right now.</p>
|
||||
<p>In case you’re unfamiliar with docker, here are some basic commands:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#75715e"># Search for container images (on docker.io unless you configure otherwise)</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman search <image name>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Download (pull) an image from remote repo</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman pull <image name>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># list the images you have pulled.</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman images
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># run a container.</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman run <image name>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># run a container, but with a LOT of flags. I just listed the most useful ones.</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman run
|
||||
</span></span><span style="display:flex;"><span> -i <span style="color:#75715e"># interactive, so you can e.g. run a shell in the container</span>
|
||||
</span></span><span style="display:flex;"><span> -t <span style="color:#75715e"># allocates a tty. useful with -i so that shell completion etc. can work</span>
|
||||
</span></span><span style="display:flex;"><span> -d <span style="color:#75715e"># opposite of -i, detach and run in the background</span>
|
||||
</span></span><span style="display:flex;"><span> --port <HOST PORT>:<CONTAINER PORT> <span style="color:#75715e"># port forwarding, for when you need a server.</span>
|
||||
</span></span><span style="display:flex;"><span> -v <HOST DIR>:<CONT DIR>:<FLAGS> <span style="color:#75715e"># give the container access to some directory</span>
|
||||
</span></span><span style="display:flex;"><span> <image name>
|
||||
</span></span><span style="display:flex;"><span> <command> <span style="color:#75715e"># ... want a shell?</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># list running containers. add -a to list ALL containers, running or stopped.</span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># podman ps <-a></span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># stop a running container.</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman stop <id>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#75715e"># stopped containers don't automatically get removed. This command removes it.</span>
|
||||
</span></span><span style="display:flex;"><span>$ podman rm <id>
|
||||
</span></span></code></pre></div><h2 id="pods-are-nice">Pods are nice.</h2>
|
||||
<p>Pods are basically just a collection of containers - multiple programs working
|
||||
with each other.</p>
|
||||
<p>Usually, on a server, each application <em>isn’t</em> totally separate from each other</p>
|
||||
<ul>
|
||||
<li>for my own usecase, I want my git server (e.g. gogs) to automatically build
|
||||
and update my website whenever I push to its git repository. That means my git
|
||||
server and web server can’t be <em>totally</em> separate, there’s some amount of relation.
|
||||
Pods can help with this.</li>
|
||||
</ul>
|
||||
<p>Pods allow you to create a “pod” containing several containers, sharing resources
|
||||
with each other, etc. For example, I could run a pod with nginx and gogs running
|
||||
in seperate containers - then, the nginx server could act as a reverse proxy based
|
||||
on host name, showing the web page on emin.software, and the git server on
|
||||
git.emin.software. Nginx redirects to gogs which only binds to <em>the pod’s
|
||||
localhost address</em>, so only nginx can reach it. Likewise, a database server can
|
||||
be added to the pod only for the git server to use, so that it can’t be reached
|
||||
from the outside the pod - and it is logically grouped along with the rest of the pod.</p>
|
||||
<p>On top of this, pods can be built purely from a kubernetes-compatible configuration
|
||||
file, so setting them up is relatively easy.</p>
|
||||
|
||||
</span>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="flex flex-col justify-center p-10">
|
||||
|
||||
<p class="text-center text-slate-700 dark:text-slate-400">
|
||||
©
|
||||
2024
|
||||
Emin Arslan
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="text-center text-sm text-slate-700 dark:text-slate-400">
|
||||
Published with <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://gohugo.io" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-indigo-500 hover:text-indigo-500" href="https://github.com/chrede88/qubt" target="_blank" rel="noopener noreferrer">Qubt</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
21
public/sitemap.xml
Normal file
21
public/sitemap.xml
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
<url>
|
||||
<loc>https://emin.software/posts/</loc>
|
||||
<lastmod>2024-10-28T23:41:06+03:00</lastmod>
|
||||
</url><url>
|
||||
<loc>https://emin.software/</loc>
|
||||
<lastmod>2024-10-28T23:41:06+03:00</lastmod>
|
||||
</url><url>
|
||||
<loc>https://emin.software/posts/setup_p1/</loc>
|
||||
<lastmod>2024-10-25T23:11:17+03:00</lastmod>
|
||||
</url><url>
|
||||
<loc>https://emin.software/about/</loc>
|
||||
<lastmod>2024-10-24T23:17:52+03:00</lastmod>
|
||||
</url><url>
|
||||
<loc>https://emin.software/categories/</loc>
|
||||
</url><url>
|
||||
<loc>https://emin.software/tags/</loc>
|
||||
</url>
|
||||
</urlset>
|
11
public/tags/index.xml
Normal file
11
public/tags/index.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Tags on haxala1r</title>
|
||||
<link>https://emin.software/tags/</link>
|
||||
<description>Recent content in Tags on haxala1r</description>
|
||||
<generator>Hugo</generator>
|
||||
<language>en-us</language>
|
||||
<atom:link href="https://emin.software/tags/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
Loading…
Reference in New Issue
Block a user