From 95086af2574cf93efcbf94ed3cffd415dd37f0d0 Mon Sep 17 00:00:00 2001 From: Emin Arslan Date: Sat, 16 Nov 2024 15:11:00 +0300 Subject: [PATCH] Big update --- .gitea/workflows/main-build.yaml | 14 + .gitignore | 6 +- content/posts/setup_p1.md | 24 +- public/404.html | 176 ---------- .../Emin-Arslan_hu13852530772249569318.webp | Bin 46264 -> 0 bytes public/about/index.html | 214 ------------ public/ai.txt | 3 - public/categories/index.xml | 11 - ...42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css | 1 - public/healthcheck.json | 1 - public/index.html | 187 ---------- public/index.xml | 26 -- ...a6088f21d1cf5302b4cae8557e0593f70081d72.js | 1 - public/posts/index.html | 201 ----------- public/posts/index.xml | 19 -- public/posts/setup_p1/index.html | 320 ------------------ public/sitemap.xml | 21 -- public/tags/index.xml | 11 - 18 files changed, 41 insertions(+), 1195 deletions(-) create mode 100644 .gitea/workflows/main-build.yaml delete mode 100644 public/404.html delete mode 100644 public/Emin-Arslan_hu13852530772249569318.webp delete mode 100644 public/about/index.html delete mode 100644 public/ai.txt delete mode 100644 public/categories/index.xml delete mode 100644 public/css/main.bundle.min.955b22a3fcff20511a11d9c7fdac7dd57e8293ee16e4d4ca0d6ab737f4895c3017582739cfd1f17a7c3feae23b42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css delete mode 100644 public/healthcheck.json delete mode 100644 public/index.html delete mode 100644 public/index.xml delete mode 100644 public/js/main.bundle.min.4657c962c90bb42241e3db9c00332ac44a2ff6a901654b8248b4e2f4b586571fd2aa672dcadf728d6f2135b0ea6088f21d1cf5302b4cae8557e0593f70081d72.js delete mode 100644 public/posts/index.html delete mode 100644 public/posts/index.xml delete mode 100644 public/posts/setup_p1/index.html delete mode 100644 public/sitemap.xml delete mode 100644 public/tags/index.xml diff --git a/.gitea/workflows/main-build.yaml b/.gitea/workflows/main-build.yaml new file mode 100644 index 0000000..278a6dc --- /dev/null +++ b/.gitea/workflows/main-build.yaml @@ -0,0 +1,14 @@ +name: Build & Deploy + +on: + push: + branches: + - main + +jobs: + build-or-sth: + runs-on: ubuntu-latest + steps: + - run: echo "hi!" + - name: Get hugo + run: apt install hugo diff --git a/.gitignore b/.gitignore index d3579d2..669e6a7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ -/resources/_gen/ -/assets/jsconfig.json +resources/_gen/ +assets/jsconfig.json +public/* hugo_stats.json + .hugo_build.lock diff --git a/content/posts/setup_p1.md b/content/posts/setup_p1.md index d1600a7..4baa5f9 100644 --- a/content/posts/setup_p1.md +++ b/content/posts/setup_p1.md @@ -138,7 +138,7 @@ services: - 3000:80 ``` -Or you could even have *two* servers, like, a gogs and a web server! +Or you could even have *two* servers, like, a Gogs and a web server! ```yaml services: @@ -162,6 +162,28 @@ It just works! Of course, you can add volumes to tie it all, and 'secrets' to manage sensitive files (like keys and certificates). I won't go into those here though. +## Automation + +Yeah, okay. I like automating, I know I talked big game up in the introduction. +It's obvious. I just love it when things do themselves instead of me having to +do them. I remember wanting to make a robot to do my homework when I was a kid. +I still want to do that. Of course, the fact that it would be easier to just do +my homework is irrelevant. It was always irrelevant. It's not about doing less +work, it's about the ***principle***. + +Anyway, so the point is that I want to automate the process of deploying from a +git repository directly to my blog. Thankfully, gitea provides a nice feature +for Continuous Integration (CI), gitea actions. It's similar to GitHub actions. + +Essentially, you install gitea normally, then register an act_runner to it with +a registration token you get from the instance. I use docker compose and the +gitea/act_runner image to automate this step as well. + +Once a runner is registered, you can write a workflow file, which tells the +runner what it should do once you push some changes. In my case, for example, +this would be building the website using hugo, then putting the files into the +web directory. + # Conclusion Docker and Docker Compose are a lot more useful than my younger self would have diff --git a/public/404.html b/public/404.html deleted file mode 100644 index 48f286a..0000000 --- a/public/404.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - -haxala1r - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- - - - haxala1r - - -
- - - -
-
- - -
-
- -
-

Page not found!

- -
- -
-
- - - diff --git a/public/Emin-Arslan_hu13852530772249569318.webp b/public/Emin-Arslan_hu13852530772249569318.webp deleted file mode 100644 index 848a1ab3b67098e7de12a2cf5c9703eacd6a769f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46264 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 =YWeQM({AWbprNkt- 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 - - - - - - - - - -haxala1r - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- - - - haxala1r - - -
- - - -
-
- - -
-
- -
- - - - - - -
- Emin Arslan - -
- - - -

- Emin Arslan -

- - -
- -
-
- -
-
- -

Biography

- -

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.

-

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 Hugo -with the Qubt theme to -generate pages from my content. I think it looks pretty good, check -them out.

-

Hopefully I’ll post a bit more on here soon.

- -
- -
-
- -
-
-
-
- -

- © - 2024 - Emin Arslan -

- - - - - -

- Published with Hugo & Qubt -

-
- -
- - diff --git a/public/ai.txt b/public/ai.txt deleted file mode 100644 index 5489e00..0000000 --- a/public/ai.txt +++ /dev/null @@ -1,3 +0,0 @@ -User-Agent: * -Disallow: * -Disallow: / diff --git a/public/categories/index.xml b/public/categories/index.xml deleted file mode 100644 index 4523662..0000000 --- a/public/categories/index.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - Categories on haxala1r - https://emin.software/categories/ - Recent content in Categories on haxala1r - Hugo - en-us - - - diff --git a/public/css/main.bundle.min.955b22a3fcff20511a11d9c7fdac7dd57e8293ee16e4d4ca0d6ab737f4895c3017582739cfd1f17a7c3feae23b42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css b/public/css/main.bundle.min.955b22a3fcff20511a11d9c7fdac7dd57e8293ee16e4d4ca0d6ab737f4895c3017582739cfd1f17a7c3feae23b42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css deleted file mode 100644 index dfbc3ee..0000000 --- a/public/css/main.bundle.min.955b22a3fcff20511a11d9c7fdac7dd57e8293ee16e4d4ca0d6ab737f4895c3017582739cfd1f17a7c3feae23b42a8f4b01d7052fa2bc03a1430fa0669bf2d60.css +++ /dev/null @@ -1 +0,0 @@ -/*!Qubt v1.4.0 | MIT License | https://github.com/Chrede88/qubt*/*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*!tailwindcss v3.4.14 | MIT License | https://tailwindcss.com*/*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::before,::after{--tw-content:''}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=As]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=as]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=Is]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=is]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px rgb(var(--tw-prose-kbd-shadows)/10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgb(0 0 0 / 50%);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-slate{--tw-prose-body:#334155;--tw-prose-headings:#0f172a;--tw-prose-lead:#475569;--tw-prose-links:#6366f1;--tw-prose-bold:#334155;--tw-prose-counters:#64748b;--tw-prose-bullets:#64748b;--tw-prose-hr:#e2e8f0;--tw-prose-quotes:#0f172a;--tw-prose-quote-borders:#e2e8f0;--tw-prose-captions:#64748b;--tw-prose-kbd:#0f172a;--tw-prose-kbd-shadows:15 23 42;--tw-prose-code:#0f172a;--tw-prose-pre-code:#e2e8f0;--tw-prose-pre-bg:#1e293b;--tw-prose-th-borders:#cbd5e1;--tw-prose-td-borders:#e2e8f0;--tw-prose-invert-body:#e2e8f0;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#94a3b8;--tw-prose-invert-links:#6366f1;--tw-prose-invert-bold:#94a3b8;--tw-prose-invert-counters:#94a3b8;--tw-prose-invert-bullets:#e2e8f0;--tw-prose-invert-hr:#334155;--tw-prose-invert-quotes:#f1f5f9;--tw-prose-invert-quote-borders:#334155;--tw-prose-invert-captions:#94a3b8;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#cbd5e1;--tw-prose-invert-pre-bg:rgb(0 0 0 / 50%);--tw-prose-invert-th-borders:#475569;--tw-prose-invert-td-borders:#334155}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.bottom-4{bottom:1rem}.right-0{right:0}.top-0{top:0}.top-4{top:1rem}.z-10{z-index:10}.m-0{margin:0}.m-4{margin:1rem}.mx-auto{margin-left:auto;margin-right:auto}.-mt-0\.5{margin-top:-.125rem}.-mt-6{margin-top:-1.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.ml-4{margin-left:1rem}.ml-8{margin-left:2rem}.mt-1{margin-top:.25rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-6{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-48{height:12rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[3px\]{height:3px}.h-\[75vh\]{height:75vh}.h-full{height:100%}.h-screen{height:100vh}.max-h-80{max-height:20rem}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-2\/5{width:40%}.w-48{width:12rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-xl{max-width:1280px}.shrink-0{flex-shrink:0}.origin-top{transform-origin:top}@keyframes open-menu{0%{transform:scaleY(0)}100%{transform:scaleY(1)}}.animate-open-menu{animation:open-menu .3s ease-in-out forwards}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-inside{list-style-position:inside}.list-\[lower-alpha\]{list-style-type:lower-alpha}.list-\[upper-roman\]{list-style-type:upper-roman}.list-disc{list-style-type:disc}.grid-flow-row{grid-auto-flow:row}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-none{grid-template-columns:none}.grid-cols-subgrid{grid-template-columns:subgrid}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-8{gap:2rem}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-.75rem * var(--tw-space-x-reverse));margin-left:calc(-.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.border-2{border-width:2px}.border-solid{border-style:solid}.border-slate-50{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.bg-clip-border{background-clip:border-box}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-10{padding:2.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-extrabold{font-weight:800}.font-semibold{font-weight:600}.text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow-md{--tw-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.duration-500{transition-duration:500ms}.link{margin:.25rem;height:2.5rem;width:2.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y));background-color:transparent;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:300ms;transition-timing-function:cubic-bezier(0,0,.2,1)}@media(hover:hover) and (pointer:fine){.link:hover{--tw-scale-x:1.25;--tw-scale-y:1.25;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}}.link_svg{border-radius:9999px;fill:#334155}.link_svg:is(.dark *){fill:#f8fafc}.toggle-btn>div::after{--tw-translate-y:0px;--tw-rotate:-45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.toggle-btn>div::before{--tw-translate-y:0px;--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.toggle-btn>div{--tw-rotate:720deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y));background-color:transparent}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.before\:absolute::before{content:var(--tw-content);position:absolute}.before\:h-\[3px\]::before{content:var(--tw-content);height:3px}.before\:w-8::before{content:var(--tw-content);width:2rem}.before\:-translate-x-4::before{content:var(--tw-content);--tw-translate-x:-1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.before\:-translate-y-2\.5::before{content:var(--tw-content);--tw-translate-y:-0.625rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.before\:rounded::before{content:var(--tw-content);border-radius:.25rem}.before\:bg-slate-700::before{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.before\:transition-all::before{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.before\:duration-500::before{content:var(--tw-content);transition-duration:500ms}.before\:content-\[\'\'\]::before{--tw-content:'';content:var(--tw-content)}.after\:absolute::after{content:var(--tw-content);position:absolute}.after\:h-\[3px\]::after{content:var(--tw-content);height:3px}.after\:w-8::after{content:var(--tw-content);width:2rem}.after\:-translate-x-4::after{content:var(--tw-content);--tw-translate-x:-1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.after\:translate-y-2\.5::after{content:var(--tw-content);--tw-translate-y:0.625rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.after\:rounded::after{content:var(--tw-content);border-radius:.25rem}.after\:bg-slate-700::after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.after\:transition-all::after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.after\:duration-500::after{content:var(--tw-content);transition-duration:500ms}.after\:content-\[\'\'\]::after{--tw-content:'';content:var(--tw-content)}@media(hover:hover) and (pointer:fine){.hover\:text-indigo-500:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.hover\:text-slate-500:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-indigo-500:hover{text-decoration-color:#6366f1}}.prose-pre\:max-w-\[90vw\] :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){max-width:90vw}.dark\:bg-neutral-500:is(.dark *){--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.dark\:bg-neutral-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.dark\:bg-neutral-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.dark\:bg-slate-200:is(.dark *){--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.dark\:bg-slate-400:is(.dark *){--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.dark\:text-slate-200:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.dark\:text-slate-400:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.dark\:text-slate-700:is(.dark *){--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.before\:dark\:bg-slate-400:is(.dark *)::before{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.after\:dark\:bg-slate-400:is(.dark *)::after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}@media(hover:hover) and (pointer:fine){.hover\:dark\:text-slate-400:is(.dark *):hover{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}}@media(min-width:768px){.md\:mt-48{margin-top:12rem}.md\:block{display:block}.md\:hidden{display:none}.md\:p-0{padding:0}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-8xl{font-size:6rem;line-height:1}.md\:prose-pre\:max-w-screen-md :is(:where(pre):not(:where([class~=not-prose],[class~=not-prose] *))){max-width:768px}}@media(min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}} \ No newline at end of file diff --git a/public/healthcheck.json b/public/healthcheck.json deleted file mode 100644 index 39ce085..0000000 --- a/public/healthcheck.json +++ /dev/null @@ -1 +0,0 @@ -{ "status": "ok" } \ No newline at end of file diff --git a/public/index.html b/public/index.html deleted file mode 100644 index fc15a05..0000000 --- a/public/index.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - -haxala1r - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- - - - haxala1r - - -
- - - -
-
- - -
-
- -
-
- - - - - - -
- Emin Arslan - -
- - - -

- Emin Arslan -

- - -

- Welcome to my personal blog :) -

- -
- -
-
-
- -
-
-
-
- -

- © - 2024 - Emin Arslan -

- - - - - -

- Published with Hugo & Qubt -

-
- -
- - diff --git a/public/index.xml b/public/index.xml deleted file mode 100644 index e4ab287..0000000 --- a/public/index.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - haxala1r - https://emin.software/ - Recent content on haxala1r - Hugo - en-us - Fri, 25 Oct 2024 23:11:17 +0300 - - - My Setup - https://emin.software/posts/setup_p1/ - Fri, 25 Oct 2024 23:11:17 +0300 - https://emin.software/posts/setup_p1/ - I go over the things I&rsquo;ve learned about docker, and how I&rsquo;ve used it to host my website. - - - About - https://emin.software/about/ - Thu, 24 Oct 2024 23:17:52 +0300 - https://emin.software/about/ - 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. - - - diff --git a/public/js/main.bundle.min.4657c962c90bb42241e3db9c00332ac44a2ff6a901654b8248b4e2f4b586571fd2aa672dcadf728d6f2135b0ea6088f21d1cf5302b4cae8557e0593f70081d72.js b/public/js/main.bundle.min.4657c962c90bb42241e3db9c00332ac44a2ff6a901654b8248b4e2f4b586571fd2aa672dcadf728d6f2135b0ea6088f21d1cf5302b4cae8557e0593f70081d72.js deleted file mode 100644 index adec2b4..0000000 --- a/public/js/main.bundle.min.4657c962c90bb42241e3db9c00332ac44a2ff6a901654b8248b4e2f4b586571fd2aa672dcadf728d6f2135b0ea6088f21d1cf5302b4cae8557e0593f70081d72.js +++ /dev/null @@ -1 +0,0 @@ -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"))}) \ No newline at end of file diff --git a/public/posts/index.html b/public/posts/index.html deleted file mode 100644 index c975656..0000000 --- a/public/posts/index.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - - - -haxala1r - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -

- © - 2024 - Emin Arslan -

- - - - - -

- Published with Hugo & Qubt -

-
- -
- - diff --git a/public/posts/index.xml b/public/posts/index.xml deleted file mode 100644 index 89878d1..0000000 --- a/public/posts/index.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - Blog on haxala1r - https://emin.software/posts/ - Recent content in Blog on haxala1r - Hugo - en-us - Fri, 25 Oct 2024 23:11:17 +0300 - - - My Setup - https://emin.software/posts/setup_p1/ - Fri, 25 Oct 2024 23:11:17 +0300 - https://emin.software/posts/setup_p1/ - I go over the things I&rsquo;ve learned about docker, and how I&rsquo;ve used it to host my website. - - - diff --git a/public/posts/setup_p1/index.html b/public/posts/setup_p1/index.html deleted file mode 100644 index 31e43c0..0000000 --- a/public/posts/setup_p1/index.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - - - - -haxala1r - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- - - - haxala1r - - -
- - - -
-
- - -
-
- - - - - - - - -
-
-

- My Setup -

-

- Containers! Docker! -

-
- Oct 25, 2024 - 6 minute read -
- - - - - - -

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.

-

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.

-

This is a cumbersome process. The whole point of using hugo is to focus on the -writing, so having to zip and reupload for every typo is… not great. I -wanted to be able to do a simple git push, and not worry about the rest.

-

The “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.

-

After reading a bit on this topic, I decided I would use docker for this. Podman -would work just as nicely (any containerization software would work, really), -but I decided on docker because it’s been the standard for a while now

-

Motivation

-

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 reproducible?

-

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. For this, something like Gitea -would normally be great. I went with Gogs instead, because -it is far more lightweight.
  • -
  • 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.
  • -
-

Of course, there are always more things I could be self-hosting. So it makes -sense to automate the setup, and that’s where docker comes in.

-

Basics of docker

-

Before we can get to the exciting stuff, we need to go over what docker is, and how to -use it. Essentially, docker 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, reproducibility.

-

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.

-

If you’ve used docker before, you’ll feel right at home. Many commands are unchanged -from docker, making docker 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.

-

In case you’re unfamiliar with docker, here are some basic commands (run these -either as root, or as a user in the docker group):

-
# Search for container images (on docker.io unless you configure otherwise)
-$ docker search <image name>
-
-# Download (pull) an image from remote repo
-$ docker pull <image name>
-
-# list the images you have pulled.
-$ docker images
-
-# run a container.
-$ docker run <image name>
-
-# run a container, but with a LOT of flags. I just listed the most useful ones.
-$ docker run
-    -i # interactive, so you can e.g. run a shell in the container
-    -t # allocates a tty. useful with -i so that shell completion etc. can work
-    -d # opposite of -i, detach and run in the background
-    --port <HOST PORT>:<CONTAINER PORT> # port forwarding, for when you need a server.
-    -v <HOST DIR>:<CONT DIR>:<FLAGS> # give the container access to some directory
-    <image name>
-    <command> # ... want a shell?
-
-# list running containers. add -a to list ALL containers, running or stopped.
-$ docker ps <-a>
-
-# stop a running container.
-$ docker stop <id>
-
-# stopped containers don't automatically get removed. This command removes it.
-$ docker rm <id>
-

Compose is nice.

-

Docker compose is a nice way to essentially “group together” some containers, -and ship them in an easy way.

-

Usually, on a server, each application isn’t totally separate from each other

-
    -
  • for my own use case, 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 totally separate, there’s some amount of -relation.
  • -
-

At the same time… I don’t really want to set up both containers, then their -volumes, and their ports etc. by hand. Sure I could stick it in a shell script, -but that’s hardly elegant.

-

Docker compose helps with this: you can create a -compose.yaml file, and define containers, ports, volumes, secrets all inside -this file. Then, when you run docker compose up this configuration is read, -and all of it is processed as you would want it to.

-

e.g you might have this for starting a web server on port 3000:

-
services:
-    web:
-        image: "nginx"
-        ports:
-            - 3000:80
-

Or you could even have two servers, like, a gogs and a web server!

-
services:
-    web:
-        image: "nginx"
-        ports:
-            - 80:80
-    gogs-haha:
-        image: "gogs/gogs"
-        ports:
-            - 3000:3000
-            - 3022:22
-

See how we got multiple services to run, very very easily? Isn’t that just -really nice? You can just keep adding stuff. And compose even sets up dns for -these containers! That means, for example, you can have your web server act as -a reverse proxy by having it access http://gogs-haha:3000 in the above config! -It just works!

-

Of course, you can add volumes to tie it all, and ‘secrets’ to manage sensitive -files (like keys and certificates). I won’t go into those here though.

-

Conclusion

-

Docker and Docker Compose are a lot more useful than my younger self would have -given them credit for. It was really fun learning about them, and hopefully I’ll -use this knowledge in the future.

-

Thank you for reading.

- -
-
-
- -
-
-
-
- -

- © - 2024 - Emin Arslan -

- - - - - -

- Published with Hugo & Qubt -

-
- -
- - diff --git a/public/sitemap.xml b/public/sitemap.xml deleted file mode 100644 index b573815..0000000 --- a/public/sitemap.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - https://emin.software/posts/ - 2024-10-25T23:11:17+03:00 - - https://emin.software/ - 2024-10-25T23:11:17+03:00 - - https://emin.software/posts/setup_p1/ - 2024-10-25T23:11:17+03:00 - - https://emin.software/about/ - 2024-10-24T23:17:52+03:00 - - https://emin.software/categories/ - - https://emin.software/tags/ - - diff --git a/public/tags/index.xml b/public/tags/index.xml deleted file mode 100644 index b52f548..0000000 --- a/public/tags/index.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - Tags on haxala1r - https://emin.software/tags/ - Recent content in Tags on haxala1r - Hugo - en-us - - -