summaryrefslogtreecommitdiff
path: root/_content
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2025-12-29 16:25:54 +0700
committerShulhan <ms@kilabit.info>2025-12-29 16:25:54 +0700
commit3ca9187c0548a2ffc768b01f82939ea30d5a03c8 (patch)
treea23e53dbe12648e7cb704951dc04cd408c903ded /_content
parenta2da83b6416179a48cabedc17030f5d5505d7694 (diff)
downloadkilabit.info-3ca9187c0548a2ffc768b01f82939ea30d5a03c8.tar.xz
journal/2025: new journal "Internal of kilabit.info"
In this article we will take a look at the architecture and the stacks behind kilabit.info, and how it works.
Diffstat (limited to '_content')
-rw-r--r--_content/journal/2025/index.adoc4
-rw-r--r--_content/journal/2025/internal_of_kilabit/diagram.d285
-rw-r--r--_content/journal/2025/internal_of_kilabit/diagram.svg153
-rw-r--r--_content/journal/2025/internal_of_kilabit/index.adoc193
4 files changed, 435 insertions, 0 deletions
diff --git a/_content/journal/2025/index.adoc b/_content/journal/2025/index.adoc
index e5244c9..5674c98 100644
--- a/_content/journal/2025/index.adoc
+++ b/_content/journal/2025/index.adoc
@@ -1,6 +1,10 @@
=== 2025
+link:/journal/2025/internal_of_kilabit/[Internal of kilabit.info^].
+In this article we will take a look at the architecture and the stacks
+behind kilabit.info and domains their managed, and how it works.
+
link:/journal/2025/2024_accomplishments/[2024 Accomplishments^].
link:/journal/2025/hyperv_vs_virtualbox/[Hyper-V vs VirtualBox: benchmarking Angular test suites^].
diff --git a/_content/journal/2025/internal_of_kilabit/diagram.d2 b/_content/journal/2025/internal_of_kilabit/diagram.d2
new file mode 100644
index 0000000..ced953e
--- /dev/null
+++ b/_content/journal/2025/internal_of_kilabit/diagram.d2
@@ -0,0 +1,85 @@
+vars: {
+ d2-config: {
+ layout-engine: elk
+ theme-id: 300
+ }
+}
+
+internet: {
+ shape: cloud
+}
+private_user: Me and others {
+ shape: person
+}
+cloud_storage: Cloud storage {
+ shape: cloud
+}
+
+vps: {}
+vps.haproxy: {
+ shape: oval
+}
+vps.www-kilabit: {
+ shape: oval
+}
+vps.karajo: {
+ shape: oval
+}
+vps.www-awwan: {
+ shape: oval
+}
+vps.systemd-nspawn: {}
+vps.systemd-nspawn.awwan-tour: {
+ shape: oval
+}
+vps.www-golangid: {
+ shape: oval
+}
+
+internet <-> vps.haproxy
+internet <-> cloud_storage: umum.kilabit.info
+
+vps.haproxy <-> vps.www-kilabit: kilabit.info
+vps.haproxy <-> vps.karajo: build.kilabit.info
+vps.haproxy <-> vps.www-awwan: awwan.org
+vps.haproxy <-> vps.systemd-nspawn.awwan-tour: tour.awwan.org
+vps.haproxy <-> vps.www-golangid: golang-id.org
+
+
+vps.vpn: {}
+vps.vpn.wireguard: {
+ shape: oval
+}
+vps.sshd: {
+ shape: oval
+}
+vps.vpn.wireguard <-> vps.haproxy: .internal zone
+vps.vpn.wireguard <-> vps.sshd
+private_user <-> vps.vpn.wireguard: 10.8.0.0/24
+
+
+vps.analytics: {}
+vps.analytics.haminer: {
+ shape: oval
+}
+vps.analytics.postgresql: {
+ shape: oval
+}
+vps.haproxy -> vps.analytics.haminer: access log
+vps.analytics.haminer <-> vps.analytics.postgresql
+
+vps.mail: mail.kilabit.info {}
+vps.mail.opensmtpd: {
+ shape: oval
+}
+vps.mail.dovecot: {
+ shape: oval
+}
+vps.mail.opensmtpd -> vps.mail.dovecot
+internet <-> vps.mail.opensmtpd: SMTP
+internet <-> vps.mail.dovecot: IMAP
+
+vps.rescached: {
+ shape: oval
+}
+internet <-> vps.rescached: DNS, DoH, DoT
diff --git a/_content/journal/2025/internal_of_kilabit/diagram.svg b/_content/journal/2025/internal_of_kilabit/diagram.svg
new file mode 100644
index 0000000..10a9ed9
--- /dev/null
+++ b/_content/journal/2025/internal_of_kilabit/diagram.svg
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="0.7.1" preserveAspectRatio="xMinYMin meet" viewBox="0 0 1990 1810"><svg class="d2-3837416583 d2-svg" width="1990" height="1810" viewBox="-89 -89 1990 1810"><rect x="-89.000000" y="-89.000000" width="1990.000000" height="1810.000000" rx="0.000000" fill="#FFFFFF" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
+.d2-3837416583 .text-mono {
+ font-family: "d2-3837416583-font-mono";
+}
+@font-face {
+ font-family: d2-3837416583-font-mono;
+ src: url("data:application/font-woff;base64,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");
+}
+.d2-3837416583 .text-mono-bold {
+ font-family: "d2-3837416583-font-mono-bold";
+}
+@font-face {
+ font-family: d2-3837416583-font-mono-bold;
+ src: url("data:application/font-woff;base64,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");
+}
+.d2-3837416583 .text-mono-italic {
+ font-family: "d2-3837416583-font-mono-italic";
+}
+@font-face {
+ font-family: d2-3837416583-font-mono-italic;
+ src: url("data:application/font-woff;base64,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");
+}]]></style><style type="text/css"><![CDATA[.shape {
+ shape-rendering: geometricPrecision;
+ stroke-linejoin: round;
+}
+.connection {
+ stroke-linecap: round;
+ stroke-linejoin: round;
+}
+.blend {
+ mix-blend-mode: multiply;
+ opacity: 0.5;
+}
+
+ .d2-3837416583 .fill-N1{fill:#000410;}
+ .d2-3837416583 .fill-N2{fill:#0000B8;}
+ .d2-3837416583 .fill-N3{fill:#9499AB;}
+ .d2-3837416583 .fill-N4{fill:#CFD2DD;}
+ .d2-3837416583 .fill-N5{fill:#C3DEF3;}
+ .d2-3837416583 .fill-N6{fill:#EEF1F8;}
+ .d2-3837416583 .fill-N7{fill:#FFFFFF;}
+ .d2-3837416583 .fill-B1{fill:#000410;}
+ .d2-3837416583 .fill-B2{fill:#0000E4;}
+ .d2-3837416583 .fill-B3{fill:#5AA4DC;}
+ .d2-3837416583 .fill-B4{fill:#E7E9EE;}
+ .d2-3837416583 .fill-B5{fill:#F5F6F9;}
+ .d2-3837416583 .fill-B6{fill:#FFFFFF;}
+ .d2-3837416583 .fill-AA2{fill:#008566;}
+ .d2-3837416583 .fill-AA4{fill:#45BBA5;}
+ .d2-3837416583 .fill-AA5{fill:#7ACCBD;}
+ .d2-3837416583 .fill-AB4{fill:#F1C759;}
+ .d2-3837416583 .fill-AB5{fill:#F9E088;}
+ .d2-3837416583 .stroke-N1{stroke:#000410;}
+ .d2-3837416583 .stroke-N2{stroke:#0000B8;}
+ .d2-3837416583 .stroke-N3{stroke:#9499AB;}
+ .d2-3837416583 .stroke-N4{stroke:#CFD2DD;}
+ .d2-3837416583 .stroke-N5{stroke:#C3DEF3;}
+ .d2-3837416583 .stroke-N6{stroke:#EEF1F8;}
+ .d2-3837416583 .stroke-N7{stroke:#FFFFFF;}
+ .d2-3837416583 .stroke-B1{stroke:#000410;}
+ .d2-3837416583 .stroke-B2{stroke:#0000E4;}
+ .d2-3837416583 .stroke-B3{stroke:#5AA4DC;}
+ .d2-3837416583 .stroke-B4{stroke:#E7E9EE;}
+ .d2-3837416583 .stroke-B5{stroke:#F5F6F9;}
+ .d2-3837416583 .stroke-B6{stroke:#FFFFFF;}
+ .d2-3837416583 .stroke-AA2{stroke:#008566;}
+ .d2-3837416583 .stroke-AA4{stroke:#45BBA5;}
+ .d2-3837416583 .stroke-AA5{stroke:#7ACCBD;}
+ .d2-3837416583 .stroke-AB4{stroke:#F1C759;}
+ .d2-3837416583 .stroke-AB5{stroke:#F9E088;}
+ .d2-3837416583 .background-color-N1{background-color:#000410;}
+ .d2-3837416583 .background-color-N2{background-color:#0000B8;}
+ .d2-3837416583 .background-color-N3{background-color:#9499AB;}
+ .d2-3837416583 .background-color-N4{background-color:#CFD2DD;}
+ .d2-3837416583 .background-color-N5{background-color:#C3DEF3;}
+ .d2-3837416583 .background-color-N6{background-color:#EEF1F8;}
+ .d2-3837416583 .background-color-N7{background-color:#FFFFFF;}
+ .d2-3837416583 .background-color-B1{background-color:#000410;}
+ .d2-3837416583 .background-color-B2{background-color:#0000E4;}
+ .d2-3837416583 .background-color-B3{background-color:#5AA4DC;}
+ .d2-3837416583 .background-color-B4{background-color:#E7E9EE;}
+ .d2-3837416583 .background-color-B5{background-color:#F5F6F9;}
+ .d2-3837416583 .background-color-B6{background-color:#FFFFFF;}
+ .d2-3837416583 .background-color-AA2{background-color:#008566;}
+ .d2-3837416583 .background-color-AA4{background-color:#45BBA5;}
+ .d2-3837416583 .background-color-AA5{background-color:#7ACCBD;}
+ .d2-3837416583 .background-color-AB4{background-color:#F1C759;}
+ .d2-3837416583 .background-color-AB5{background-color:#F9E088;}
+ .d2-3837416583 .color-N1{color:#000410;}
+ .d2-3837416583 .color-N2{color:#0000B8;}
+ .d2-3837416583 .color-N3{color:#9499AB;}
+ .d2-3837416583 .color-N4{color:#CFD2DD;}
+ .d2-3837416583 .color-N5{color:#C3DEF3;}
+ .d2-3837416583 .color-N6{color:#EEF1F8;}
+ .d2-3837416583 .color-N7{color:#FFFFFF;}
+ .d2-3837416583 .color-B1{color:#000410;}
+ .d2-3837416583 .color-B2{color:#0000E4;}
+ .d2-3837416583 .color-B3{color:#5AA4DC;}
+ .d2-3837416583 .color-B4{color:#E7E9EE;}
+ .d2-3837416583 .color-B5{color:#F5F6F9;}
+ .d2-3837416583 .color-B6{color:#FFFFFF;}
+ .d2-3837416583 .color-AA2{color:#008566;}
+ .d2-3837416583 .color-AA4{color:#45BBA5;}
+ .d2-3837416583 .color-AA5{color:#7ACCBD;}
+ .d2-3837416583 .color-AB4{color:#F1C759;}
+ .d2-3837416583 .color-AB5{color:#F9E088;}.appendix text.text{fill:#000410}.md{--color-fg-default:#000410;--color-fg-muted:#0000B8;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#000410;--color-border-muted:#0000E4;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0000E4;--color-accent-emphasis:#0000E4;--color-attention-subtle:#0000B8;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3837416583);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3837416583);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-normal-d2-3837416583);mix-blend-mode:color-burn}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3837416583);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3837416583);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3837416583);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3837416583);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-normal-d2-3837416583);mix-blend-mode:color-burn}.sketch-overlay-AA5{fill:url(#streaks-normal-d2-3837416583);mix-blend-mode:color-burn}.sketch-overlay-AB4{fill:url(#streaks-normal-d2-3837416583);mix-blend-mode:color-burn}.sketch-overlay-AB5{fill:url(#streaks-normal-d2-3837416583);mix-blend-mode:color-burn}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3837416583);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-darker-d2-3837416583);mix-blend-mode:lighten}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3837416583);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3837416583);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-normal-d2-3837416583);mix-blend-mode:color-burn}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3837416583);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3837416583);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><style type="text/css"><![CDATA[
+.dots-overlay {
+ fill: url(#dots-d2-3837416583);
+ mix-blend-mode: multiply;
+}]]></style><defs><pattern id="dots-d2-3837416583" x="0" y="0" width="15" height="15" patternUnits="userSpaceOnUse">
+<g style="mix-blend-mode:multiply" opacity="0.1">
+<rect x="2" y="2" width="1" height="1" fill="#0A0F25"/>
+</g>
+<g style="mix-blend-mode:multiply" opacity="0.1">
+<rect x="12" y="2" width="1" height="1" fill="#0A0F25"/>
+</g>
+<g style="mix-blend-mode:multiply" opacity="0.1">
+<rect x="12" y="12" width="1" height="1" fill="#0A0F25"/>
+</g>
+<g style="mix-blend-mode:multiply" opacity="0.1">
+<rect x="2" y="12" width="1" height="1" fill="#0A0F25"/>
+</g>
+<g style="mix-blend-mode:multiply" opacity="0.1">
+<rect x="2" y="7" width="1" height="1" fill="#0A0F25"/>
+</g>
+<g style="mix-blend-mode:multiply" opacity="0.1">
+<rect x="12" y="7" width="1" height="1" fill="#0A0F25"/>
+</g>
+<g style="mix-blend-mode:multiply" opacity="0.1">
+<rect x="7" y="2" width="1" height="1" fill="#0A0F25"/>
+</g>
+<g style="mix-blend-mode:multiply" opacity="0.1">
+<rect x="7" y="12" width="1" height="1" fill="#0A0F25"/>
+</g>
+<g style="mix-blend-mode:multiply" opacity="0.1">
+<rect x="7" y="7" width="1" height="1" fill="#0A0F25"/>
+</g>
+</pattern>
+</defs><g class="aW50ZXJuZXQ="><g class="shape" ><path d="M 895 76 C 895 77 894 78 892 78 C 875 79 862 90 862 104 C 862 119 877 131 896 131 H 1025 C 1045 131 1062 118 1062 103 C 1062 88 1047 76 1027 75 C 1026 75 1024 74 1024 73 C 1020 58 1000 47 976 47 C 961 47 947 52 938 59 C 937 60 935 60 934 60 C 931 59 927 59 923 59 C 909 59 896 66 895 76 Z" stroke="#000410" fill="#FFFFFF" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g><text x="960.900000" y="110.516000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">INTERNET</text></g><g class="cHJpdmF0ZV91c2Vy"><g class="shape" ><path d="M 492 105 H 352 V 104 C 352 88 367 74 392 67 C 378 61 370 52 370 42 C 370 26 393 12 422 12 C 450 12 474 26 474 42 C 474 52 466 61 453 67 C 477 74 493 88 493 104 V 105 H 492 Z" stroke="#000410" fill="#5AA4DC" class=" stroke-B1 fill-B3" style="stroke-width:2;" /></g><text x="422.000000" y="126.000000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">ME AND OTHERS</text></g><g class="Y2xvdWRfc3RvcmFnZQ=="><g class="shape" ><path d="M 1626 396 C 1626 397 1625 398 1623 398 C 1605 399 1591 410 1591 424 C 1591 439 1607 451 1626 451 H 1760 C 1781 451 1798 438 1798 423 C 1798 408 1782 396 1762 395 C 1761 395 1759 394 1759 393 C 1754 378 1734 367 1709 367 C 1693 367 1679 372 1670 379 C 1669 380 1667 380 1666 380 C 1663 379 1659 379 1655 379 C 1641 379 1628 386 1626 396 Z" stroke="#000410" fill="#FFFFFF" class=" stroke-B1 fill-N7" style="stroke-width:2;" /></g><text x="1695.176000" y="430.516000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">CLOUD STORAGE</text></g><g class="dnBz"><g class="shape" ><rect x="12.000000" y="367.000000" width="1560.000000" height="1253.000000" stroke="#000410" fill="#E7E9EE" class=" stroke-B1 fill-B4" style="stroke-width:2;" /><rect x="12.000000" y="367.000000" width="1560.000000" height="1253.000000" class="dots-overlay" style="stroke-width:2;" /><rect x="17.000000" y="372.000000" width="1550.000000" height="1243.000000" stroke="#000410" fill="transparent" class=" stroke-B1" style="stroke-width:2;" /></g><text x="792.000000" y="400.000000" fill="#000410" class="text-mono fill-N1" style="text-anchor:middle;font-size:28px">VPS</text></g><g class="dnBzLmhhcHJveHk="><g class="shape" ><ellipse rx="120.000000" ry="28.000000" cx="677.000000" cy="974.000000" stroke="#000410" fill="#F5F6F9" class="shape stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="677.000000" y="979.500000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">HAPROXY</text></g><g class="dnBzLnd3dy1raWxhYml0"><g class="shape" ><ellipse rx="106.500000" ry="35.500000" cx="168.500000" cy="1313.500000" stroke="#000410" fill="#F5F6F9" class="shape stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="168.500000" y="1319.000000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">WWW-KILABIT</text></g><g class="dnBzLmthcmFqbw=="><g class="shape" ><ellipse rx="69.500000" ry="29.500000" cx="364.500000" cy="1307.500000" stroke="#000410" fill="#F5F6F9" class="shape stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="364.500000" y="1313.000000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">KARAJO</text></g><g class="dnBzLnd3dy1hd3dhbg=="><g class="shape" ><ellipse rx="92.000000" ry="30.500000" cx="546.000000" cy="1308.500000" stroke="#000410" fill="#F5F6F9" class="shape stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="546.000000" y="1314.000000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">WWW-AWWAN</text></g><g class="dnBzLnN5c3RlbWQtbnNwYXdu"><g class="shape" ><rect x="658.000000" y="1278.000000" width="300.000000" height="167.000000" stroke="#000410" fill="#F5F6F9" class=" stroke-B1 fill-B5" style="stroke-width:2;" /><rect x="658.000000" y="1278.000000" width="300.000000" height="167.000000" class="dots-overlay" style="stroke-width:2;" /></g><text x="808.000000" y="1307.000000" fill="#000410" class="text-mono fill-N1" style="text-anchor:middle;font-size:24px">SYSTEMD-NSPAWN</text></g><g class="dnBzLnd3dy1nb2xhbmdpZA=="><g class="shape" ><ellipse rx="113.500000" ry="38.000000" cx="1091.500000" cy="1316.000000" stroke="#000410" fill="#F5F6F9" class="shape stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="1091.500000" y="1321.500000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">WWW-GOLANGID</text></g><g class="dnBzLnZwbg=="><g class="shape" ><rect x="280.000000" y="509.000000" width="285.000000" height="162.000000" stroke="#000410" fill="#F5F6F9" class=" stroke-B1 fill-B5" style="stroke-width:2;" /><rect x="280.000000" y="509.000000" width="285.000000" height="162.000000" class="dots-overlay" style="stroke-width:2;" /></g><text x="422.500000" y="538.000000" fill="#000410" class="text-mono fill-N1" style="text-anchor:middle;font-size:24px">VPN</text></g><g class="dnBzLnNzaGQ="><g class="shape" ><ellipse rx="55.500000" ry="33.000000" cx="511.500000" cy="833.000000" stroke="#000410" fill="#F5F6F9" class="shape stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="511.500000" y="838.500000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">SSHD</text></g><g class="dnBzLmFuYWx5dGljcw=="><g class="shape" ><rect x="1225.000000" y="1278.000000" width="297.000000" height="292.000000" stroke="#000410" fill="#F5F6F9" class=" stroke-B1 fill-B5" style="stroke-width:2;" /><rect x="1225.000000" y="1278.000000" width="297.000000" height="292.000000" class="dots-overlay" style="stroke-width:2;" /></g><text x="1373.500000" y="1307.000000" fill="#000410" class="text-mono fill-N1" style="text-anchor:middle;font-size:24px">ANALYTICS</text></g><g class="dnBzLm1haWw="><g class="shape" ><rect x="585.000000" y="422.000000" width="337.000000" height="298.000000" stroke="#000410" fill="#F5F6F9" class=" stroke-B1 fill-B5" style="stroke-width:2;" /><rect x="585.000000" y="422.000000" width="337.000000" height="298.000000" class="dots-overlay" style="stroke-width:2;" /></g><text x="753.500000" y="451.000000" fill="#000410" class="text-mono fill-N1" style="text-anchor:middle;font-size:24px">MAIL.KILABIT.INFO</text></g><g class="dnBzLnJlc2NhY2hlZA=="><g class="shape" ><ellipse rx="92.000000" ry="30.500000" cx="1085.000000" cy="452.500000" stroke="#000410" fill="#F5F6F9" class="shape stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="1085.000000" y="458.000000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">RESCACHED</text></g><g class="dnBzLnN5c3RlbWQtbnNwYXduLmF3d2FuLXRvdXI="><g class="shape" ><ellipse rx="100.000000" ry="33.500000" cx="808.000000" cy="1361.500000" stroke="#000410" fill="#FFFFFF" class="shape stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="808.000000" y="1367.000000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">AWWAN-TOUR</text></g><g class="dnBzLnZwbi53aXJlZ3VhcmQ="><g class="shape" ><ellipse rx="92.500000" ry="31.000000" cx="422.500000" cy="590.000000" stroke="#000410" fill="#FFFFFF" class="shape stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="422.500000" y="595.500000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">WIREGUARD</text></g><g class="dnBzLmFuYWx5dGljcy5oYW1pbmVy"><g class="shape" ><ellipse rx="78.000000" ry="28.000000" cx="1373.000000" cy="1356.000000" stroke="#000410" fill="#FFFFFF" class="shape stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="1373.000000" y="1361.500000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">HAMINER</text></g><g class="dnBzLmFuYWx5dGljcy5wb3N0Z3Jlc3Fs"><g class="shape" ><ellipse rx="98.500000" ry="33.000000" cx="1373.500000" cy="1487.000000" stroke="#000410" fill="#FFFFFF" class="shape stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="1373.500000" y="1492.500000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">POSTGRESQL</text></g><g class="dnBzLm1haWwub3BlbnNtdHBk"><g class="shape" ><ellipse rx="92.500000" ry="31.000000" cx="727.500000" cy="503.000000" stroke="#000410" fill="#FFFFFF" class="shape stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="727.500000" y="508.500000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">OPENSMTPD</text></g><g class="dnBzLm1haWwuZG92ZWNvdA=="><g class="shape" ><ellipse rx="78.000000" ry="28.000000" cx="794.000000" cy="642.000000" stroke="#000410" fill="#FFFFFF" class="shape stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="794.000000" y="647.500000" fill="#000410" class="text-mono-bold fill-N1" style="text-anchor:middle;font-size:16px">DOVECOT</text></g><g class="KGludGVybmV0ICZsdDstJmd0OyB2cHMuaGFwcm94eSlbMF0="><marker id="mk-d2-3837416583-2451250203" markerWidth="10.000000" markerHeight="12.000000" refX="3.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="10.000000,0.000000 0.000000,6.000000 10.000000,12.000000" fill="#000410" class="connection fill-B1" stroke-width="2" /> </marker><marker id="mk-d2-3837416583-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#000410" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 962.000212 135.000000 L 962.041016 906.000000 S 962.041016 906.000000 962.041016 906.000000 L 717.000000 906.000000 S 717.000000 906.000000 717.000000 906.000000 L 717.000000 944.000000" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /></g><g class="KGludGVybmV0ICZsdDstJmd0OyBjbG91ZF9zdG9yYWdlKVswXQ=="><path d="M 1028.970802 134.999893 L 1028.708008 171.000000 S 1028.708008 171.000000 1028.708008 171.000000 L 1696.000000 171.000000 S 1696.000000 171.000000 1696.000000 171.000000 L 1696.000000 364.000000" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="1440.500000" y="177.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">UMUM.KILABIT.INFO</text></g><g class="dnBzLihoYXByb3h5ICZsdDstJmd0OyB3d3cta2lsYWJpdClbMF0="><path d="M 591.023747 997.999930 L 591.284973 1042.000000 S 591.284973 1042.000000 591.284973 1042.000000 L 168.500000 1042.000000 S 168.500000 1042.000000 168.500000 1042.000000 L 168.991525 1274.000009" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="286.000000" y="1048.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">KILABIT.INFO</text></g><g class="dnBzLihoYXByb3h5ICZsdDstJmd0OyBrYXJham8pWzBd"><path d="M 625.981548 1002.999957 L 625.570984 1092.000000 S 625.570984 1092.000000 625.570984 1092.000000 L 364.500000 1092.000000 S 364.500000 1092.000000 364.500000 1092.000000 L 364.989247 1274.000014" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="449.000000" y="1098.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">BUILD.KILABIT.INFO</text></g><g class="dnBzLihoYXByb3h5ICZsdDstJmd0OyB3d3ctYXd3YW4pWzBd"><path d="M 659.995914 1005.999998 L 659.856995 1142.000000 S 659.856995 1142.000000 659.856995 1142.000000 L 546.000000 1142.000000 S 546.000000 1142.000000 546.000000 1142.000000 L 546.000000 1274.000000" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="605.000000" y="1148.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">AWWAN.ORG</text></g><g class="dnBzLihoYXByb3h5ICZsdDstJmd0OyBzeXN0ZW1kLW5zcGF3bi5hd3dhbi10b3VyKVswXQ=="><path d="M 694.004058 1005.999998 L 694.142029 1142.000000 S 694.142029 1142.000000 694.142029 1142.000000 L 808.000000 1142.000000 S 808.000000 1142.000000 808.000000 1142.000000 L 808.000000 1324.000000" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="774.000000" y="1148.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">TOUR.AWWAN.ORG</text></g><g class="dnBzLihoYXByb3h5ICZsdDstJmd0OyB3d3ctZ29sYW5naWQpWzBd"><path d="M 728.018407 1002.999958 L 728.427979 1092.000000 S 728.427979 1092.000000 728.427979 1092.000000 L 1091.500000 1092.000000 S 1091.500000 1092.000000 1091.500000 1092.000000 L 1091.989247 1274.000014" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="956.000000" y="1098.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">GOLANG-ID.ORG</text></g><g class="dnBzLih2cG4ud2lyZWd1YXJkICZsdDstJmd0OyBoYXByb3h5KVswXQ=="><path d="M 368.995574 618.999998 L 368.678009 906.000000 S 368.678009 906.000000 368.678009 906.000000 L 637.000000 906.000000 S 637.000000 906.000000 637.000000 906.000000 L 637.000000 944.000000" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="378.500000" y="912.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">.INTERNAL ZONE</text></g><g class="dnBzLih2cG4ud2lyZWd1YXJkICZsdDstJmd0OyBzc2hkKVswXQ=="><path d="M 453.989286 623.999986 L 453.625000 760.000000 S 453.625000 760.000000 453.625000 760.000000 L 511.678009 760.000000 S 511.678009 760.000000 511.678009 760.000000 L 511.967802 796.000130" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /></g><g class="KHByaXZhdGVfdXNlciAmbHQ7LSZndDsgdnBzLnZwbi53aXJlZ3VhcmQpWzBd"><path d="M 422.792940 135.332992 L 422.998045 555.000000" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="422.500000" y="351.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">10.8.0.0/24</text></g><g class="dnBzLihoYXByb3h5IC0mZ3Q7IGFuYWx5dGljcy5oYW1pbmVyKVswXQ=="><path d="M 762.988083 995.999964 L 762.713989 1042.000000 S 762.713989 1042.000000 762.713989 1042.000000 L 1373.500000 1042.000000 S 1373.500000 1042.000000 1373.500000 1042.000000 L 1373.993007 1324.000006" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="1187.000000" y="1048.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">ACCESS LOG</text></g><g class="dnBzLmFuYWx5dGljcy4oaGFtaW5lciAmbHQ7LSZndDsgcG9zdGdyZXNxbClbMF0="><path d="M 1373.942863 1387.999592 L 1373.057137 1450.000408" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /></g><g class="dnBzLm1haWwuKG9wZW5zbXRwZCAtJmd0OyBkb3ZlY290KVswXQ=="><path d="M 768.000000 533.000000 L 768.000000 612.000000" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /></g><g class="KGludGVybmV0ICZsdDstJmd0OyB2cHMubWFpbC5vcGVuc210cGQpWzBd"><path d="M 895.037498 134.999824 L 895.375000 171.000000 S 895.375000 171.000000 895.375000 171.000000 L 769.041016 171.000000 S 769.041016 171.000000 769.041016 171.000000 L 769.000540 471.000000" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="769.500000" y="245.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">SMTP</text></g><g class="KGludGVybmV0ICZsdDstJmd0OyB2cHMubWFpbC5kb3ZlY290KVswXQ=="><path d="M 928.987023 134.999979 L 928.708008 221.000000 S 928.708008 221.000000 928.708008 221.000000 L 860.291016 221.000000 S 860.291016 221.000000 860.291016 221.000000 L 860.002867 623.000001" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="860.500000" y="350.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">IMAP</text></g><g class="KGludGVybmV0ICZsdDstJmd0OyB2cHMucmVzY2FjaGVkKVswXQ=="><path d="M 995.016667 134.999965 L 995.375000 221.000000 S 995.375000 221.000000 995.375000 221.000000 L 1085.041016 221.000000 S 1085.041016 221.000000 1085.041016 221.000000 L 1085.000816 418.000000" stroke="#000410" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-start="url(#mk-d2-3837416583-2451250203)" marker-end="url(#mk-d2-3837416583-3488378134)" mask="url(#d2-3837416583)" /><text x="1085.000000" y="237.000000" fill="#0000B8" class="text-mono-italic fill-N2" style="text-anchor:middle;font-size:16px">DNS, DOH, DOT</text></g><mask id="d2-3837416583" maskUnits="userSpaceOnUse" x="-89" y="-89" width="1990" height="1810">
+<rect x="-89" y="-89" width="1990" height="1810" fill="white"></rect>
+<rect x="1357.000000" y="161.000000" width="167" height="21" fill="black"></rect>
+<rect x="226.000000" y="1032.000000" width="120" height="21" fill="black"></rect>
+<rect x="360.000000" y="1082.000000" width="178" height="21" fill="black"></rect>
+<rect x="559.000000" y="1132.000000" width="92" height="21" fill="black"></rect>
+<rect x="705.000000" y="1132.000000" width="138" height="21" fill="black"></rect>
+<rect x="891.000000" y="1082.000000" width="130" height="21" fill="black"></rect>
+<rect x="310.000000" y="896.000000" width="137" height="21" fill="black"></rect>
+<rect x="368.000000" y="335.000000" width="109" height="21" fill="black"></rect>
+<rect x="1136.000000" y="1032.000000" width="102" height="21" fill="black"></rect>
+<rect x="748.000000" y="229.000000" width="43" height="21" fill="black"></rect>
+<rect x="839.000000" y="334.000000" width="43" height="21" fill="black"></rect>
+<rect x="1020.000000" y="221.000000" width="130" height="21" fill="black"></rect>
+</mask></svg></svg>
diff --git a/_content/journal/2025/internal_of_kilabit/index.adoc b/_content/journal/2025/internal_of_kilabit/index.adoc
new file mode 100644
index 0000000..393a077
--- /dev/null
+++ b/_content/journal/2025/internal_of_kilabit/index.adoc
@@ -0,0 +1,193 @@
+= Internal of kilabit.info
+:sectanchors:
+:toc:
+
+The kilabit.info, this website, run several services not just a web server.
+It is my personal websites, my VPN, and my CI/CD, and development
+environment.
+
+In this article we will take a look at the architecture and the stacks
+behind it, and how it works.
+
+== Overview
+
+From the public user point of view, they are five (public) domains that are
+served: kilabit.info, build.kilabit.info, awwan.org, tour.awwan.org, and
+golang-id.org.
+
+From my personal point of view there two other services served: WireGuard
+for Virtual Private Network (VPN) and rescached, for caching and forwarding
+DNS requests and serving custom zones (domains).
+
+Here is the diagram of the most knowns domains and services,
+
+image:diagram.svg[Architecture of kilabit.info]
+
+All of the services is managed using systemd.
+
+The web services (www-kilabit, awwan, www-golangid) are static web server,
+in single binary.
+That means the resources that they serve to user are read from memory.
+No write on disk except the log from HAProxy.
+
+For configuration management, I use
+https://awwan.org[awwan^].
+awwan help me remember what commands I use to setup and manage all services,
+including their configuration.
+Combine with
+https://docs.cloud.google.com/sdk/gcloud[gcloud CLI^],
+it helps me manage the one in Google Cloud too.
+
+Lets take a look more deeper into each of them.
+
+
+== The Virtual Private Server (VPS)
+
+I use
+https://contabo.com/[Contabo^]
+for VPS with 4 CPU cores, 8 GB memory, and 200 GB disk space.
+The server is located in Singapore, the nearest one from my country,
+Indonesia.
+
+I have been using Contabo for 3 years and so far I have no complain.
+
+The VPS run with
+https://archlinux.org/[Arch Linux^]
+updated automatically
+https://build.kilabit.info/karajo/app/#job_sys_update[every week^].
+
+
+== VPN
+
+For VPN, I use
+https://www.wireguard.com/[WireGuard^].
+The VPN protect the access to internal services, especially SSH, where I use
+it to setup and manage all of the services through
+https://awwan.org[awwan^].
+
+Combines with
+https://kilabit.info/project/rescached[rescached^],
+I can have custom .internal domains that are accessible only for me and my
+peers.
+
+
+== mail.kilabit.info
+
+For sending and receiving email, through @kilabit.info, I use
+https://www.opensmtpd.org/[OpenSMTPD^].
+
+For reading and managing the email messages I use
+https://www.dovecot.org/[Dovecot^].
+
+
+== rescached
+
+https://kilabit.info/project/rescached[rescached^]
+is a DNS caching and forwarding that help boost my network name resolution
+and sometimes by pass some restriction.
+
+I also use it to
+https://git.sr.ht/~shulhan/rescached/tree/main/item/_sys/etc/rescached/block.d[block
+ads] by mapping the domains to 127.0.0.1 or 0.0.0.0.
+
+
+== HAProxy
+
+https://www.haproxy.org/[HAproxy] is a proxy and load balancer for TCP and
+HTTP.
+This is the core of all services in the VPN.
+It is one of the _best_ open source software out there.
+
+HAProxy redirect the requests based on domains and/or path to respective
+services, protect the connection using hardened SSL and selection of ciphers
+and ciphersuites, support compression, and many more.
+
+
+== kilabit.info
+
+This is my personal website, written in
+https://asciidoctor.org/[AsciiDoc^]
+and then converted and published using
+https://kilabit.info/project/ciigo[ciigo^].
+
+All of the files, except for static assets, are embedded into a binary and
+then served using ciigo, using Go HTTP module.
+
+The repository of this website is available at
+https://git.sr.ht/~shulhan/kilabit.info[git.sr.ht/~shulhan/kilabit.info^].
+
+
+== build.kilabit.info
+
+The
+https://build.kilabit.info[build.kilabit.info]
+is served by
+https://kilabit.info/project/karajo[karajo^],
+a program that run a worker based on trigger from external HTTP (webhook) or
+periodically by timer.
+
+In my use cases, I used for continuous deployment (CD) of my open source
+https://kilabit.info/project/[projects] and periodically
+build some Arch Linux packages (from AUR) and image for Google Compute
+Engine.
+
+
+== awwan.org
+
+https://awwan.org[awwan.org^]
+is the website that provide information about a software called `awwan`.
+
+awwan is configuration management software, infrastructure as file and
+directory layout.
+In other words, awwan is a command-line interface (CLI) to shell script,
+that can execute multiple lines of commands in local or remote server using
+shell or SSH.
+
+The content of this site is available at
+https://git.sr.ht/~shulhan/awwan/tree/main/item/_wui/doc[this^]
+repository.
+
+
+== tour.awwan.org
+
+The
+https://tour.awwan.org[tour.awwan.org^]
+is the website to learn awwan step by step.
+
+Its run the web user interface when running "awwan serve" command on this
+https://git.sr.ht/~shulhan/awwan/tree/main/item/_tour[sample scripts^].
+
+Since awwan can execute shell command, we must separate it from the host
+system.
+In here we use lightweight container using
+https://www.freedesktop.org/software/systemd/man/latest/systemd-nspawn.html[systemd-nspawn^].
+
+
+== golang-id.org
+
+The
+https://golang-id.org[golang-id.org]
+is the community website for Go programming language in Bahasa Indonesia.
+
+Similar to kilabit.info, this website is written using AsciiDoc, published
+using ciigo.
+All of the files are embedded into single binary.
+
+The source code for this website is available at
+https://git.sr.ht/~shulhan/golang-id-web .
+
+
+== Analytics
+
+Last, we have a service
+https://kilabit.info/project/haminer[haminer^]
+that consume the access log from HAProxy and store it inside a
+PostgreSQL database.
+
+The access log in database then can be aggregated and/or summarized to
+provide analytics for all of the domains and services that we manage.
+
+
+That's it!
+Now you know how I run this whole websites.
+If you have any questions, you can contact me through my email.