website-zarif/posts/automatic-deploy-jekyll-website/index.html

3574 lines
61 KiB
HTML
Raw Normal View History

2023-08-30 20:07:11 +03:00
<!doctype html>
<!-- `site.alt_lang` can specify a language different from the UI -->
<html lang="my"
data-mode="dark"
>
<!-- The Head -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f7f7f7">
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1b1b1e">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta
name="viewport"
content="width=device-width, user-scalable=no initial-scale=1, shrink-to-fit=no, viewport-fit=cover"
>
<!-- it's a local file path -->
<!-- Begin Jekyll SEO tag v2.8.0 -->
<meta name="generator" content="Jekyll v4.3.2" />
<meta property="og:title" content="Automatic Deploy Jekyll Website Menggunakan Gitea Webhook" />
<meta property="og:locale" content="my" />
<meta name="description" content="Ringkasan Projek" />
<meta property="og:description" content="Ringkasan Projek" />
<link rel="canonical" href="https://blog.zarifhomelab.com/posts/automatic-deploy-jekyll-website/" />
<meta property="og:url" content="https://blog.zarifhomelab.com/posts/automatic-deploy-jekyll-website/" />
<meta property="og:site_name" content="Zarif Rani" />
<meta property="og:image" content="https://blog.zarifhomelab.com/assets/post-image/2023-07-06/devices-mockup.png" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2023-07-06T00:29:26-05:00" />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:image" content="https://blog.zarifhomelab.com/assets/post-image/2023-07-06/devices-mockup.png" />
<meta property="twitter:title" content="Automatic Deploy Jekyll Website Menggunakan Gitea Webhook" />
<meta name="twitter:site" content="@twitter_username" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2023-07-06T13:50:26-05:00","datePublished":"2023-07-06T00:29:26-05:00","description":"Ringkasan Projek","headline":"Automatic Deploy Jekyll Website Menggunakan Gitea Webhook","image":{"lqip":"data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA","url":"https://blog.zarifhomelab.com/assets/post-image/2023-07-06/devices-mockup.png","@type":"imageObject"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://blog.zarifhomelab.com/posts/automatic-deploy-jekyll-website/"},"url":"https://blog.zarifhomelab.com/posts/automatic-deploy-jekyll-website/"}</script>
<!-- End Jekyll SEO tag -->
<title>Automatic Deploy Jekyll Website Menggunakan Gitea Webhook | Zarif Rani
</title>
<!--
The Favicons for Web, Android, Microsoft, and iOS (iPhone and iPad) Apps
Generated by: https://realfavicongenerator.net/
-->
<link rel="apple-touch-icon" sizes="180x180" href="/assets/img/favicons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/img/favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/assets/img/favicons/favicon-16x16.png">
<link rel="manifest" href="/assets/img/favicons/site.webmanifest">
<link rel="shortcut icon" href="/assets/img/favicons/favicon.ico">
<meta name="apple-mobile-web-app-title" content="Zarif Rani">
<meta name="application-name" content="Zarif Rani">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-config" content="/assets/img/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" href="/assets/lib/fonts/main.css">
<!-- GA -->
<!-- Bootstrap -->
<link rel="stylesheet" href="/assets/lib/bootstrap/bootstrap.min.css">
<!-- Font Awesome -->
<link rel="stylesheet" href="/assets/lib/fontawesome-free/css/all.min.css">
<link rel="stylesheet" href="/assets/css/style.css">
<link rel="stylesheet" href="/assets/lib/tocbot/tocbot.min.css">
<!-- Manific Popup -->
<link rel="stylesheet" href="/assets/lib/magnific-popup/magnific-popup.css">
<!-- JavaScript -->
<!-- A placeholder to allow defining custom metadata -->
</head>
<body>
<!-- The Side Bar -->
<div id="sidebar" class="d-flex flex-column align-items-end">
<div class="profile-wrapper">
<a href="/" id="avatar" class="rounded-circle">
<img src="/assets/non-post-image/avatar.webp" width="112" height="112" alt="avatar" onerror="this.style.display='none'">
</a>
<div class="site-title">
<a href="/">Zarif Rani</a>
</div>
<div class="site-subtitle fst-italic">Bloging dan Dokumentasi</div>
</div>
<!-- .profile-wrapper -->
<ul class="nav flex-column flex-grow-1 w-100 ps-0">
<!-- home -->
<li class="nav-item">
<a href="/" class="nav-link">
<i class="fa-fw fas fa-home"></i>
<span>LAMAN UTAMA</span>
</a>
</li>
<!-- the real tabs -->
<li class="nav-item">
<a href="/categories/" class="nav-link">
<i class="fa-fw fas fa-stream"></i>
<span>KATEGORI</span>
</a>
</li>
<!-- .nav-item -->
<li class="nav-item">
<a href="/tags/" class="nav-link">
<i class="fa-fw fas fa-tags"></i>
<span>TAG</span>
</a>
</li>
<!-- .nav-item -->
<li class="nav-item">
<a href="/archives/" class="nav-link">
<i class="fa-fw fas fa-archive"></i>
<span>ARKIB</span>
</a>
</li>
<!-- .nav-item -->
<li class="nav-item">
<a href="/about/" class="nav-link">
<i class="fa-fw fas fa-info-circle"></i>
<span>TENTANG</span>
</a>
</li>
<!-- .nav-item -->
</ul>
<!-- ul.nav.flex-column -->
<div class="sidebar-bottom d-flex flex-wrap align-items-center w-100">
<a
href="https://www.instagram.com/firaz.fat/"
aria-label="instagram"
target="_blank"
rel="noopener noreferrer"
>
<i class="fab fa-instagram"></i>
</a>
<a
href="https://facebook.com/zarif.fathurrahman"
aria-label="facebook"
target="_blank"
rel="noopener noreferrer"
>
<i class="fab fa-facebook"></i>
</a>
<a
href="javascript:location.href = 'mailto:' + ['zariffathurrahman59','gmail.com'].join('@')"
aria-label="email"
>
<i class="fas fa-envelope"></i>
</a>
<a
href="/feed.xml"
aria-label="rss"
>
<i class="fas fa-rss"></i>
</a>
</div>
<!-- .sidebar-bottom -->
</div>
<!-- #sidebar -->
<div id="main-wrapper" class="d-flex justify-content-center">
<div id="main" class="container px-xxl-5">
<!-- The Top Bar -->
<div id="topbar-wrapper">
<div
id="topbar"
class="container d-flex align-items-center justify-content-between h-100"
>
<span id="breadcrumb">
<span>
<a href="/">
Laman utama
</a>
</span>
<span>Automatic Deploy Jekyll Website Menggunakan Gitea Webhook</span>
</span>
<!-- endof #breadcrumb -->
<i id="sidebar-trigger" class="fas fa-bars fa-fw"></i>
<div id="topbar-title">
Pos
</div>
<i id="search-trigger" class="fas fa-search fa-fw"></i>
<span id="search-wrapper" class="align-items-center">
<i class="fas fa-search fa-fw"></i>
<input
class="form-control"
id="search-input"
type="search"
aria-label="search"
autocomplete="off"
placeholder="Cari..."
>
</span>
<span id="search-cancel">Batal</span>
</div>
</div>
<div class="row">
<!-- core -->
<div id="core-wrapper" class="col-12 col-lg-11 col-xl-9 pe-xl-4">
<div class="post px-1 px-md-2">
<!-- Refactor the HTML structure -->
<!--
In order to allow a wide table to scroll horizontally,
we suround the markdown table with `<div class="table-wrapper">` and `</div>`
-->
<!--
Fixed kramdown code highlight rendering:
https://github.com/penibelst/jekyll-compress-html/issues/101
https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901
-->
<!-- Change the icon of checkbox -->
<!-- images -->
<!-- CDN URL -->
<!-- Add image path -->
<!-- take out classes -->
<!-- lazy-load images <https://github.com/aFarkas/lazysizes#readme> -->
<!-- add image placeholder -->
<!-- Bypass the HTML-proofer test -->
<!-- make sure the `<img>` is wrapped by `<a>` -->
<!-- create the image wrapper -->
<!-- combine -->
<!-- take out classes -->
<!-- lazy-load images <https://github.com/aFarkas/lazysizes#readme> -->
<!-- add image placeholder -->
<!-- Bypass the HTML-proofer test -->
<!-- make sure the `<img>` is wrapped by `<a>` -->
<!-- create the image wrapper -->
<!-- combine -->
<!-- take out classes -->
<!-- lazy-load images <https://github.com/aFarkas/lazysizes#readme> -->
<!-- add image placeholder -->
<!-- Bypass the HTML-proofer test -->
<!-- make sure the `<img>` is wrapped by `<a>` -->
<!-- create the image wrapper -->
<!-- combine -->
<!-- Add header for code snippets -->
<!-- Create heading anchors -->
<!-- return -->
<h1 data-toc-skip>Automatic Deploy Jekyll Website Menggunakan Gitea Webhook</h1>
<div class="post-meta text-muted">
<!-- published date -->
<span>
Diterbitkan
<!--
Date format snippet
See: ${JS_ROOT}/utils/locale-dateime.js
-->
<em
class=""
data-ts="1688621366"
data-df="DD/MM/YYYY"
data-bs-toggle="tooltip" data-bs-placement="bottom"
>
06/07/2023
</em>
</span>
<!-- lastmod date -->
<span>
Diperbarui
<!--
Date format snippet
See: ${JS_ROOT}/utils/locale-dateime.js
-->
<em
class=""
data-ts="1688669426"
data-df="DD/MM/YYYY"
data-bs-toggle="tooltip" data-bs-placement="bottom"
>
06/07/2023
</em>
</span>
<div class="mt-3 mb-3">
<a href="/assets/post-image/2023-07-06/devices-mockup.png" class="popup img-link preview-img"><img data-src="/assets/post-image/2023-07-06/devices-mockup.png" alt="Preview Image" width="1200" height="630" data-lqip="true" src="data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA" class="lazyload" data-proofer-ignore></a></div>
<div class="d-flex justify-content-between">
<!-- author(s) -->
<span>
Oleh
<em>
<a href="https://www.instagram.com/firaz.fat/">Zarif Fathurrahman Rani</a>
</em>
</span>
<div>
<!-- read time -->
<!-- Calculate the post's reading time, and display the word count in tooltip -->
<!-- words per minute -->
<!-- return element -->
<span
class="readtime"
data-bs-toggle="tooltip"
data-bs-placement="bottom"
title="760 kata"
>
<em>4 minit</em> baca</span>
</div>
</div> <!-- .d-flex -->
</div> <!-- .post-meta -->
<div class="post-content">
<h2 id="ringkasan-projek"><span class="me-2">Ringkasan Projek</span><a href="#ringkasan-projek" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h2>
<p>Jekyll adalah satu alat utuk membina website. Jekyll membolehkan kita untuk membina static html file dan static html file tersebut boleh diguna pakai oleh webserver aplikasi untuk diservekan. Tapi kita memerlukan satu cara untuk hantar static file tersebut ke webserver. Perkara ini boleh dicapai dengan menggunakan cloud repository seperti Github, Gitlab atau Gitea. Static html file tersebut diuploadkan ke cloud repository dan larikan git pull ke webserver setiap kali repository tersebut update. Tapi ini agak melecehkan kerana kita perlu ssh login ke webserver tersebut dan git pull secara manual. Pos ini akan membantu kita untuk automatic git pull static html file ke webserver setiap kali repository update menggunakan webhook daripada Gitea.</p>
<h2 id="setup-files-dan-folders"><span class="me-2">Setup files dan folders</span><a href="#setup-files-dan-folders" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h2>
<h5 id="1-bina-tiga-gitea-repository"><span class="me-2">1. Bina tiga Gitea repository</span><a href="#1-bina-tiga-gitea-repository" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<ul>
<li><code class="language-plaintext highlighter-rouge">chirpy-starter</code></li>
<li><code class="language-plaintext highlighter-rouge">_site</code></li>
<li><code class="language-plaintext highlighter-rouge">docker-php-nginx</code></li>
</ul>
<h5 id="2-clone-chirpy-starter-daripada-official-repository"><span class="me-2">2. Clone chirpy-starter daripada official repository</span><a href="#2-clone-chirpy-starter-daripada-official-repository" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
</pre></td><td class="rouge-code"><pre>git clone https://github.com/cotes2020/chirpy-starter.git
<span class="nb">cd </span>chirpy-starter
<span class="nb">rm</span> <span class="nt">-rf</span> .git
</pre></td></tr></tbody></table></code></div></div>
<h5 id="3-bina-docker-composeyml-file-seperti-di-bawah-dalam-chirpy-starter-yang-telah-diclonekan"><span class="me-2">3. Bina <code class="language-plaintext highlighter-rouge">docker-compose.yml</code> file seperti di bawah dalam chirpy-starter yang telah diclonekan.</span><a href="#3-bina-docker-composeyml-file-seperti-di-bawah-dalam-chirpy-starter-yang-telah-diclonekan" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-yaml highlighter-rouge"><div class="code-header">
<span data-label-text="YAML"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="rouge-code"><pre><span class="na">version</span><span class="pi">:</span> <span class="s2">"</span><span class="s">3"</span>
<span class="na">services</span><span class="pi">:</span>
<span class="na">drafts</span><span class="pi">:</span> <span class="c1"># enable posts in _draft folder</span>
<span class="na">command</span><span class="pi">:</span> <span class="s">jekyll serve --drafts</span>
<span class="na">image</span><span class="pi">:</span> <span class="s">jekyll/jekyll:latest</span>
<span class="na">volumes</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">.:/srv/jekyll</span>
<span class="na">ports</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">4000:4000</span>
<span class="na">site</span><span class="pi">:</span>
<span class="na">command</span><span class="pi">:</span> <span class="s">jekyll serve</span>
<span class="na">image</span><span class="pi">:</span> <span class="s">jekyll/jekyll:latest</span>
<span class="na">volumes</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">.:/srv/jekyll</span>
<span class="na">ports</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">4000:4000</span>
<span class="na">build</span><span class="pi">:</span>
<span class="na">command</span><span class="pi">:</span> <span class="s">jekyll build</span>
<span class="na">image</span><span class="pi">:</span> <span class="s">jekyll/jekyll:latest</span>
<span class="na">volumes</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">.:/srv/jekyll</span>
</pre></td></tr></tbody></table></code></div></div>
<h5 id="4-tambahkan-webhookphp-file"><span class="me-2">4. Tambahkan <code class="language-plaintext highlighter-rouge">webhook.php</code> file</span><a href="#4-tambahkan-webhookphp-file" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<blockquote class="prompt-warning">
<p>Ubah $REMOTE_REPO kepada remote repo ssh _site anda.</p>
</blockquote>
<div class="language-php highlighter-rouge"><div class="code-header">
<span data-label-text="PHP"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
</pre></td><td class="rouge-code"><pre><span class="cp">&lt;?php</span>
<span class="nv">$secret_key</span> <span class="o">=</span> <span class="s1">'123'</span><span class="p">;</span>
<span class="c1">// check for POST request</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'REQUEST_METHOD'</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">'POST'</span><span class="p">)</span> <span class="p">{</span>
<span class="nb">error_log</span><span class="p">(</span><span class="s1">'FAILED - not POST - '</span><span class="mf">.</span> <span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'REQUEST_METHOD'</span><span class="p">]);</span>
<span class="k">exit</span><span class="p">();</span>
<span class="p">}</span>
<span class="c1">// get content type</span>
<span class="nv">$content_type</span> <span class="o">=</span> <span class="k">isset</span><span class="p">(</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'CONTENT_TYPE'</span><span class="p">])</span> <span class="o">?</span> <span class="nb">strtolower</span><span class="p">(</span><span class="nb">trim</span><span class="p">(</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'CONTENT_TYPE'</span><span class="p">]))</span> <span class="o">:</span> <span class="s1">''</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$content_type</span> <span class="o">!=</span> <span class="s1">'application/json'</span><span class="p">)</span> <span class="p">{</span>
<span class="nb">error_log</span><span class="p">(</span><span class="s1">'FAILED - not application/json - '</span><span class="mf">.</span> <span class="nv">$content_type</span><span class="p">);</span>
<span class="k">exit</span><span class="p">();</span>
<span class="p">}</span>
<span class="c1">// get payload</span>
<span class="nv">$payload</span> <span class="o">=</span> <span class="nb">trim</span><span class="p">(</span><span class="nb">file_get_contents</span><span class="p">(</span><span class="s2">"php://input"</span><span class="p">));</span>
<span class="k">if</span> <span class="p">(</span><span class="k">empty</span><span class="p">(</span><span class="nv">$payload</span><span class="p">))</span> <span class="p">{</span>
<span class="nb">error_log</span><span class="p">(</span><span class="s1">'FAILED - no payload'</span><span class="p">);</span>
<span class="k">exit</span><span class="p">();</span>
<span class="p">}</span>
<span class="c1">// get header signature</span>
<span class="nv">$header_signature</span> <span class="o">=</span> <span class="k">isset</span><span class="p">(</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'HTTP_X_GITEA_SIGNATURE'</span><span class="p">])</span> <span class="o">?</span> <span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'HTTP_X_GITEA_SIGNATURE'</span><span class="p">]</span> <span class="o">:</span> <span class="s1">''</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="k">empty</span><span class="p">(</span><span class="nv">$header_signature</span><span class="p">))</span> <span class="p">{</span>
<span class="nb">error_log</span><span class="p">(</span><span class="s1">'FAILED - header signature missing'</span><span class="p">);</span>
<span class="k">exit</span><span class="p">();</span>
<span class="p">}</span>
<span class="c1">// calculate payload signature</span>
<span class="nv">$payload_signature</span> <span class="o">=</span> <span class="nb">hash_hmac</span><span class="p">(</span><span class="s1">'sha256'</span><span class="p">,</span> <span class="nv">$payload</span><span class="p">,</span> <span class="nv">$secret_key</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>
<span class="c1">// check payload signature against header signature</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$header_signature</span> <span class="o">!==</span> <span class="nv">$payload_signature</span><span class="p">)</span> <span class="p">{</span>
<span class="nb">error_log</span><span class="p">(</span><span class="s1">'FAILED - payload signature'</span><span class="p">);</span>
<span class="k">exit</span><span class="p">();</span>
<span class="p">}</span>
<span class="c1">// convert json to array</span>
<span class="nv">$decoded</span> <span class="o">=</span> <span class="nb">json_decode</span><span class="p">(</span><span class="nv">$payload</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>
<span class="c1">// check for json decode errors</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">json_last_error</span><span class="p">()</span> <span class="o">!==</span> <span class="no">JSON_ERROR_NONE</span><span class="p">)</span> <span class="p">{</span>
<span class="nb">error_log</span><span class="p">(</span><span class="s1">'FAILED - json decode - '</span><span class="mf">.</span> <span class="nb">json_last_error</span><span class="p">());</span>
<span class="k">exit</span><span class="p">();</span>
<span class="p">}</span>
<span class="c1">// success, do something</span>
<span class="c1">// Set Variables</span>
<span class="nv">$LOCAL_ROOT</span> <span class="o">=</span> <span class="s2">"/var/www/html"</span><span class="p">;</span>
<span class="nv">$LOCAL_REPO_NAME</span> <span class="o">=</span> <span class="s2">"_site"</span><span class="p">;</span>
<span class="nv">$LOCAL_REPO</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{</span><span class="nv">$LOCAL_ROOT</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="nv">$LOCAL_REPO_NAME</span><span class="si">}</span><span class="s2">"</span><span class="p">;</span>
<span class="nv">$REMOTE_REPO</span> <span class="o">=</span> <span class="s2">"ssh://git@gitea-url:22/zarif59/_site.git"</span><span class="p">;</span>
<span class="nv">$BRANCH</span> <span class="o">=</span> <span class="s2">"master"</span><span class="p">;</span>
<span class="k">if</span><span class="p">(</span> <span class="nb">file_exists</span><span class="p">(</span><span class="nv">$LOCAL_REPO</span><span class="p">)</span> <span class="p">)</span> <span class="p">{</span>
<span class="c1">// If there is already a repo, just run a git pull to grab the latest changes</span>
<span class="nb">shell_exec</span><span class="p">(</span><span class="s2">"cd </span><span class="si">{</span><span class="nv">$LOCAL_REPO</span><span class="si">}</span><span class="s2"> &amp;&amp; git pull"</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="c1">// If the repo does not exist, then clone it into the parent directory</span>
<span class="nb">shell_exec</span><span class="p">(</span><span class="s2">"cd </span><span class="si">{</span><span class="nv">$LOCAL_ROOT</span><span class="si">}</span><span class="s2"> &amp;&amp; git clone </span><span class="si">{</span><span class="nv">$REMOTE_REPO</span><span class="si">}</span><span class="s2">"</span><span class="p">);</span>
<span class="p">}</span>
</pre></td></tr></tbody></table></code></div></div>
<h5 id="5-mula-menulis-pos-anda"><span class="me-2">5. Mula menulis pos anda.</span><a href="#5-mula-menulis-pos-anda" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<p><a href="https://chirpy.cotes.page/posts/write-a-new-post/">Writing a New Post</a></p>
<h5 id="6-build-jekyll-site"><span class="me-2">6. Build jekyll site.</span><a href="#6-build-jekyll-site" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>docker-compose up build
</pre></td></tr></tbody></table></code></div></div>
<h5 id="7-upload-chirpy-starter-folder-ke-gitea-repository"><span class="me-2">7. Upload <code class="language-plaintext highlighter-rouge">chirpy-starter</code> folder ke Gitea repository.</span><a href="#7-upload-chirpy-starter-folder-ke-gitea-repository" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<blockquote class="prompt-warning">
<p>comment _site kepada #_site dalam file .gitignore</p>
</blockquote>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
</pre></td><td class="rouge-code"><pre>git init
git checkout <span class="nt">-b</span> main
git commit <span class="nt">-m</span> <span class="s2">"first commit"</span>
git remote add origin http://gitea-url/zarif/chirpy-starter.git
git push <span class="nt">-u</span> origin main
</pre></td></tr></tbody></table></code></div></div>
<h5 id="8-upload-_site-folder"><span class="me-2">8. Upload <code class="language-plaintext highlighter-rouge">_site</code> folder.</span><a href="#8-upload-_site-folder" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>git subtree push <span class="nt">--prefix</span> _site/ http://gitea-url/zarif/_site.git master
</pre></td></tr></tbody></table></code></div></div>
<!-- image gitea here -->
<h2 id="setup-webhook-di-gitea-repository"><span class="me-2">Setup webhook di Gitea repository</span><a href="#setup-webhook-di-gitea-repository" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h2>
<ol>
<li>
<p>Pergi ke <code class="language-plaintext highlighter-rouge">_site</code> repository -&gt; <code class="language-plaintext highlighter-rouge">setting</code> -&gt; <code class="language-plaintext highlighter-rouge">Webhooks</code>.</p>
</li>
<li>
<p>Letakkan blog url dan /webhook.php di belakang. Seperti ini <code class="language-plaintext highlighter-rouge">http://blog-url.com/webhook.php</code>.</p>
</li>
<li>
<p>Letakkan <code class="language-plaintext highlighter-rouge">123</code> pada <code class="language-plaintext highlighter-rouge">secret</code>.</p>
</li>
</ol>
<p><a href="/assets/post-image/2023-07-06/webhook.webp" class="popup img-link "><img data-src="/assets/post-image/2023-07-06/webhook.webp" alt="/assets/post-image/2023-07-06/webhook.webp" class="lazyload" data-proofer-ignore></a></p>
<h2 id="bina-resource-untuk-blog-docker-container"><span class="me-2">Bina resource untuk blog docker container</span><a href="#bina-resource-untuk-blog-docker-container" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h2>
<h5 id="1-dapatkan-resource-file-di-github-page-saya"><span class="me-2">1. Dapatkan resource file di Github page saya</span><a href="#1-dapatkan-resource-file-di-github-page-saya" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
</pre></td><td class="rouge-code"><pre>git clone https://github.com/zarif59/docker-php-nginx.git
<span class="nb">cd </span>docker-php-nginx
<span class="nb">rm</span> <span class="nt">-rf</span> .git
</pre></td></tr></tbody></table></code></div></div>
<h5 id="2-ubah-gitea-url-dalam-dockerfile"><span class="me-2">2. Ubah gitea-url dalam <code class="language-plaintext highlighter-rouge">Dockerfile</code></span><a href="#2-ubah-gitea-url-dalam-dockerfile" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
</pre></td><td class="rouge-code"><pre><span class="nb">cd </span>docker-php-nginx
nano Dockerfile
</pre></td></tr></tbody></table></code></div></div>
<h5 id="3-generate-ssh-key-pair"><span class="me-2">3. Generate ssh key pair</span><a href="#3-generate-ssh-key-pair" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>ssh-keygen <span class="nt">-t</span> ed25519 <span class="nt">-C</span> <span class="s2">"your_email@example.com"</span> <span class="nt">-f</span> id_webhook
</pre></td></tr></tbody></table></code></div></div>
<h5 id="4-upload-docker-php-nginx-ke-gitea-repository"><span class="me-2">4. Upload <code class="language-plaintext highlighter-rouge">docker-php-nginx</code> ke Gitea repository</span><a href="#4-upload-docker-php-nginx-ke-gitea-repository" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
</pre></td><td class="rouge-code"><pre>git init
git checkout <span class="nt">-b</span> main
git commit <span class="nt">-m</span> <span class="s2">"first commit"</span>
git remote add origin http://gitea-url/zarif/docker-php-nginx.git
git push <span class="nt">-u</span> origin main
</pre></td></tr></tbody></table></code></div></div>
<h2 id="deploy-blog-website-anda"><span class="me-2">Deploy blog website anda</span><a href="#deploy-blog-website-anda" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h2>
<h5 id="1-tambahkan-id_webhookpub-di-gitea-_site-repository"><span class="me-2">1. Tambahkan <code class="language-plaintext highlighter-rouge">id_webhook.pub</code> di Gitea _site repository</span><a href="#1-tambahkan-id_webhookpub-di-gitea-_site-repository" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<ol>
<li>
<p>Pergi ke <code class="language-plaintext highlighter-rouge">_site</code> repository -&gt; <code class="language-plaintext highlighter-rouge">setting</code> -&gt; <code class="language-plaintext highlighter-rouge">Deploy Keys</code>.</p>
</li>
<li>
<p>Tambahkan id_webhook.pub yang telah di-generatekan didalam folder <code class="language-plaintext highlighter-rouge">docker-php-nginx</code>.</p>
</li>
</ol>
<p><a href="/assets/post-image/2023-07-06/id_webhook.webp" class="popup img-link "><img data-src="/assets/post-image/2023-07-06/id_webhook.webp" alt="/assets/post-image/2023-07-06/id_webhook.webp" class="lazyload" data-proofer-ignore></a></p>
<h5 id="2-ssh-ke-webserver"><span class="me-2">2. ssh ke webserver</span><a href="#2-ssh-ke-webserver" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>ssh yourname@blog-url.com
</pre></td></tr></tbody></table></code></div></div>
<h5 id="3-dapatkan-docker-php-nginx"><span class="me-2">3. Dapatkan <code class="language-plaintext highlighter-rouge">docker-php-nginx</code></span><a href="#3-dapatkan-docker-php-nginx" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>git pull http://gitea-url/zarif/docker-php-nginx.git
</pre></td></tr></tbody></table></code></div></div>
<h5 id="4-bina-docker-image"><span class="me-2">4. Bina docker image</span><a href="#4-bina-docker-image" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
</pre></td><td class="rouge-code"><pre><span class="nb">cd </span>docker-php-nginx
docker build <span class="nt">-t</span> blog/zarif:v1 <span class="nb">.</span>
</pre></td></tr></tbody></table></code></div></div>
<h5 id="5-bina-blog-docker-container"><span class="me-2">5. Bina blog docker container</span><a href="#5-bina-blog-docker-container" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<div class="language-bash highlighter-rouge"><div class="code-header">
<span data-label-text="Shell"><i class="fas fa-code fa-fw small"></i></span>
<button aria-label="copy" data-title-succeed="Disalin!"><i class="far fa-clipboard"></i></button></div><div class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>docker-compose up <span class="nt">-d</span>
</pre></td></tr></tbody></table></code></div></div>
<h5 id="5-layari-blog-website"><span class="me-2">5. Layari blog website</span><a href="#5-layari-blog-website" class="anchor text-muted"><i class="fas fa-hashtag"></i></a></h5>
<p><code class="language-plaintext highlighter-rouge">http://blog-url.com:8080</code></p>
</div>
<div class="post-tail-wrapper text-muted">
<!-- categories -->
<div class="post-meta mb-3">
<i class="far fa-folder-open fa-fw me-1"></i>
<a href='/categories/homelab/'>homelab</a>,
<a href='/categories/development/'>development</a>
</div>
<!-- tags -->
<div class="post-tags">
<i class="fa fa-tags fa-fw me-1"></i>
<a href="/tags/docker/"
class="post-tag no-text-decoration" >docker</a>
<a href="/tags/server/"
class="post-tag no-text-decoration" >server</a>
<a href="/tags/jekyll/"
class="post-tag no-text-decoration" >jekyll</a>
<a href="/tags/git/"
class="post-tag no-text-decoration" >git</a>
<a href="/tags/webhook/"
class="post-tag no-text-decoration" >webhook</a>
<a href="/tags/gitea/"
class="post-tag no-text-decoration" >gitea</a>
</div>
<div class="post-tail-bottom
d-flex justify-content-between align-items-center mt-3 pt-5 pb-2">
<div class="license-wrapper">
Pos ini dilesenkan di bawah
<a href="https://creativecommons.org/licenses/by/4.0/">
CC BY 4.0
</a>
oleh penulis.
</div>
<!-- Post sharing snippet -->
<div class="share-wrapper">
<span class="share-label text-muted me-1">Kongsikan</span>
<span class="share-icons">
<a
href="https://twitter.com/intent/tweet?text=Automatic%20Deploy%20Jekyll%20Website%20Menggunakan%20Gitea%20Webhook%20-%20Zarif%20Rani&url=https%3A%2F%2Fblog.zarifhomelab.com%2Fposts%2Fautomatic-deploy-jekyll-website%2F"
data-bs-toggle="tooltip"
data-bs-placement="top"
title="Twitter"
target="_blank"
rel="noopener"
aria-label="Twitter"
>
<i class="fa-fw fab fa-twitter"></i>
</a>
<a
href="https://www.facebook.com/sharer/sharer.php?title=Automatic%20Deploy%20Jekyll%20Website%20Menggunakan%20Gitea%20Webhook%20-%20Zarif%20Rani&u=https%3A%2F%2Fblog.zarifhomelab.com%2Fposts%2Fautomatic-deploy-jekyll-website%2F"
data-bs-toggle="tooltip"
data-bs-placement="top"
title="Facebook"
target="_blank"
rel="noopener"
aria-label="Facebook"
>
<i class="fa-fw fab fa-facebook-square"></i>
</a>
<a
href="https://t.me/share/url?url=https%3A%2F%2Fblog.zarifhomelab.com%2Fposts%2Fautomatic-deploy-jekyll-website%2F&text=Automatic%20Deploy%20Jekyll%20Website%20Menggunakan%20Gitea%20Webhook%20-%20Zarif%20Rani"
data-bs-toggle="tooltip"
data-bs-placement="top"
title="Telegram"
target="_blank"
rel="noopener"
aria-label="Telegram"
>
<i class="fa-fw fab fa-telegram"></i>
</a>
<i
id="copy-link"
class="fa-fw fas fa-link small"
data-bs-toggle="tooltip"
data-bs-placement="top"
title="Salin Pautan"
data-title-succeed="Pautan disalin!"
>
</i>
</span>
</div>
</div><!-- .post-tail-bottom -->
</div><!-- div.post-tail-wrapper -->
</div>
</div>
<!-- #core-wrapper -->
<!-- panel -->
<div id="panel-wrapper" class="col-xl-3 ps-2 text-muted">
<div class="access">
<!-- Get the last 5 posts from lastmod list. -->
<div id="access-lastmod" class="post">
<div class="panel-heading">Pos dikemaskini</div>
<ul class="post-content list-unstyled ps-0 pb-1 ms-1 mt-2">
<li class="text-truncate lh-lg">
<a href="/posts/quotes/">Quotes</a>
</li>
<li class="text-truncate lh-lg">
<a href="/posts/internalmed/">Internal Medicine</a>
</li>
<li class="text-truncate lh-lg">
<a href="/posts/pengalam-ramadan-di-mesir/">Pengalaman Ramadan di Mesir</a>
</li>
<li class="text-truncate lh-lg">
<a href="/posts/home-media/">Home Media Stack</a>
</li>
<li class="text-truncate lh-lg">
<a href="/posts/automatic-deploy-jekyll-website/">Automatic Deploy Jekyll Website Menggunakan Gitea Webhook</a>
</li>
</ul>
</div>
<!-- #access-lastmod -->
<!-- The trending tags list -->
<div id="access-tags">
<div class="panel-heading">Tag popular</div>
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
<a class="post-tag btn btn-outline-primary" href="/tags/how-to/">how-to</a>
<a class="post-tag btn btn-outline-primary" href="/tags/server/">server</a>
<a class="post-tag btn btn-outline-primary" href="/tags/docker/">docker</a>
<a class="post-tag btn btn-outline-primary" href="/tags/medic/">medic</a>
<a class="post-tag btn btn-outline-primary" href="/tags/mesir/">mesir</a>
<a class="post-tag btn btn-outline-primary" href="/tags/alex/">alex</a>
<a class="post-tag btn btn-outline-primary" href="/tags/dns/">dns</a>
<a class="post-tag btn btn-outline-primary" href="/tags/kedihupan/">kedihupan</a>
<a class="post-tag btn btn-outline-primary" href="/tags/cdn/">cdn</a>
<a class="post-tag btn btn-outline-primary" href="/tags/gitea/">gitea</a>
</div>
</div>
</div>
<div id="toc-wrapper" class="ps-0 pe-4 mb-5">
<div class="panel-heading ps-3 pt-2 mb-2">Kandungan</div>
<nav id="toc"></nav>
</div>
</div>
</div>
<!-- tail -->
<div class="row">
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-3 pe-xl-4 mt-5">
<!--
Recommend the other 3 posts according to the tags and categories of the current post,
if the number is not enough, use the other latest posts to supplement.
-->
<!-- The total size of related posts -->
<!-- An random integer that bigger than 0 -->
<!-- Equals to TAG_SCORE / {max_categories_hierarchy} -->
<!-- Fill with the other newlest posts -->
<div id="related-posts" class="mb-2 mb-sm-4">
<h3 class="pt-2 mb-4 ms-1" data-toc-skip>
Pos Lain
</h3>
<div class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-4 mb-4">
<div class="col">
<a href="/posts/gitea/" class="card post-preview h-100">
<div class="card-body">
<!--
Date format snippet
See: ${JS_ROOT}/utils/locale-dateime.js
-->
<em
class="small"
data-ts="1657528166"
data-df="DD/MM/YYYY"
>
11/07/2022
</em>
<h4 class="pt-0 my-2" data-toc-skip>Gitea</h4>
<div class="text-muted small">
<p>
Fungsi
Gitea adalah git repo yang mudah untuk di larikan. Berperanan sebagai storan file file code seperti github.
Environment
Ubuntu 22.04 LTS
Docker 20.10.12
Install docker
sudo apt in...
</p>
</div>
</div>
</a>
</div>
<div class="col">
<a href="/posts/laravel-docker/" class="card post-preview h-100">
<div class="card-body">
<!--
Date format snippet
See: ${JS_ROOT}/utils/locale-dateime.js
-->
<em
class="small"
data-ts="1657700966"
data-df="DD/MM/YYYY"
>
13/07/2022
</em>
<h4 class="pt-0 my-2" data-toc-skip>Laravel PHP Docker</h4>
<div class="text-muted small">
<p>
Environment
Ubuntu 22.04 LTS
Docker 20.10.12
Install docker
sudo apt install docker.io
sudo apt install docker-compose
Struktur folder
laravel_docker
│ docker-compose.yaml
└───apach...
</p>
</div>
</div>
</a>
</div>
<div class="col">
<a href="/posts/mini-internet/" class="card post-preview h-100">
<div class="card-body">
<!--
Date format snippet
See: ${JS_ROOT}/utils/locale-dateime.js
-->
<em
class="small"
data-ts="1657700966"
data-df="DD/MM/YYYY"
>
13/07/2022
</em>
<h4 class="pt-0 my-2" data-toc-skip>Mini Internet</h4>
<div class="text-muted small">
<p>
Ringkasan Projek
Bina lab persekitaran maya seperti gambar rajah di bawah.
Install Oracle VirtualBox
Muat turun dan install Oracle VirtualBox di Downloads Oracle VM VirtualBox
Tonton vi...
</p>
</div>
</div>
</a>
</div>
</div>
<!-- .card-deck -->
</div>
<!-- #related-posts -->
<!-- Navigation buttons at the bottom of the post. -->
<div class="post-navigation d-flex justify-content-between">
<a
href="/posts/home-media/"
class="btn btn-outline-primary"
prompt="Sebelum"
>
<p>Home Media Stack</p>
</a>
<a
href="/posts/dermatology/"
class="btn btn-outline-primary"
prompt="Seterusnya"
>
<p>Dermatology</p>
</a>
</div>
<!-- The comments switcher -->
<!-- The Disqus lazy loading. -->
<div id="disqus_thread" class="pt-2 pb-2">
<p class="text-center text-muted small">Comments powered by <a href="https://disqus.com/">Disqus</a>.</p>
</div>
<script type="text/javascript">
var disqus_config = function () {
this.page.url = 'https://blog.zarifhomelab.com/posts/automatic-deploy-jekyll-website/';
this.page.identifier = '/posts/automatic-deploy-jekyll-website/';
};
/* Lazy loading */
var disqus_observer = new IntersectionObserver(
function (entries) {
if (entries[0].isIntersecting) {
(function () {
var d = document,
s = d.createElement('script');
s.src = 'https://blogzarifhomr.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
disqus_observer.disconnect();
}
},
{ threshold: [0] }
);
disqus_observer.observe(document.querySelector('#disqus_thread'));
/* Auto switch theme */
function reloadDisqus() {
if (event.source === window && event.data && event.data.direction === ModeToggle.ID) {
/* Disqus hasn't been loaded */
if (typeof DISQUS === 'undefined') {
return;
}
if (document.readyState == 'complete') {
DISQUS.reset({ reload: true, config: disqus_config });
}
}
}
if (document.querySelector('.mode-toggle')) {
window.addEventListener('message', reloadDisqus);
}
</script>
</div>
</div>
<!-- The Search results -->
<div id="search-result-wrapper" class="d-flex justify-content-center unloaded">
<div class="col-11 post-content">
<div id="search-hints">
<!-- The trending tags list -->
<div id="access-tags">
<div class="panel-heading">Tag popular</div>
<div class="d-flex flex-wrap mt-3 mb-1 me-3">
<a class="post-tag btn btn-outline-primary" href="/tags/how-to/">how-to</a>
<a class="post-tag btn btn-outline-primary" href="/tags/server/">server</a>
<a class="post-tag btn btn-outline-primary" href="/tags/docker/">docker</a>
<a class="post-tag btn btn-outline-primary" href="/tags/medic/">medic</a>
<a class="post-tag btn btn-outline-primary" href="/tags/mesir/">mesir</a>
<a class="post-tag btn btn-outline-primary" href="/tags/alex/">alex</a>
<a class="post-tag btn btn-outline-primary" href="/tags/dns/">dns</a>
<a class="post-tag btn btn-outline-primary" href="/tags/kedihupan/">kedihupan</a>
<a class="post-tag btn btn-outline-primary" href="/tags/cdn/">cdn</a>
<a class="post-tag btn btn-outline-primary" href="/tags/gitea/">gitea</a>
</div>
</div>
</div>
<div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div>
</div>
</div>
</div>
</div>
<!-- The Footer -->
<footer>
<div class="container px-lg-4">
<div class="d-flex justify-content-center align-items-center text-muted mx-md-3">
<p>Dikuasakan oleh <a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll</a> dengan tema <a href="https://github.com/cotes2020/jekyll-theme-chirpy" target="_blank" rel="noopener">Chirpy</a>.
</p>
<p>©
2023
<a href="https://www.instagram.com/firaz.fat/">Zarif Fathurrahman Rani</a>.
<span
data-bs-toggle="tooltip"
data-bs-placement="top"
title="Kecuali jika dinyatakan, Pos blog di situs ini dilesenkan di bawah Creative Commons Attribution 4.0 International License (CC BY 4.0) oleh penulis."
>Sebagian kandungan dilindungi.</span>
</p>
</div>
</div>
</footer>
<div id="mask"></div>
<button id="back-to-top" aria-label="back-to-top" class="btn btn-lg btn-box-shadow">
<i class="fas fa-angle-up"></i>
</button>
<div
id="notification"
class="toast"
role="alert"
aria-live="assertive"
aria-atomic="true"
data-bs-animation="true"
data-bs-autohide="false"
>
<div class="toast-header">
<button
type="button"
class="btn-close ms-auto"
data-bs-dismiss="toast"
aria-label="Close"
></button>
</div>
<div class="toast-body text-center pt-0">
<p class="px-2 mb-3">Kandungan baharu tersedia.</p>
<button type="button" class="btn btn-primary" aria-label="Update">
Kemas kini
</button>
</div>
</div>
<!-- JS selector for site. -->
<!-- commons -->
<!-- layout specified -->
<!-- image lazy-loading & popup & clipboard -->
<script src="/assets/lib/jquery/jquery.min.js"></script>
<script src="/assets/lib/bootstrap/bootstrap.bundle.min.js"></script>
<script src="/assets/lib/simple-jekyll-search/simple-jekyll-search.min.js"></script>
<script src="/assets/lib/lazysizes/lazysizes.min.js"></script>
<script src="/assets/lib/magnific-popup/jquery.magnific-popup.min.js"></script>
<script src="/assets/lib/clipboard/clipboard.min.js"></script>
<script src="/assets/lib/dayjs/dayjs.min.js"></script>
<script src="/assets/lib/dayjs/locale/en.min.js"></script>
<script src="/assets/lib/dayjs/plugin/relativeTime.min.js"></script>
<script src="/assets/lib/dayjs/plugin/localizedFormat.min.js"></script>
<script src="/assets/lib/tocbot/tocbot.min.js"></script>
<script defer src="/assets/js/dist/post.min.js"></script>
<!--
Jekyll Simple Search loader
See: <https://github.com/christian-fei/Simple-Jekyll-Search>
-->
<script>
/* Note: dependent library will be loaded in `js-selector.html` */
SimpleJekyllSearch({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('search-results'),
json: '/assets/js/data/search.json',
searchResultTemplate: '<div class="px-1 px-sm-2 px-lg-4 px-xl-0"> <a href="{url}">{title}</a> <div class="post-meta d-flex flex-column flex-sm-row text-muted mt-1 mb-1"> {categories} {tags} </div> <p>{snippet}</p></div>',
noResultsText: '<p class="mt-5"></p>',
templateMiddleware: function(prop, value, template) {
if (prop === 'categories') {
if (value === '') {
return `${value}`;
} else {
return `<div class="me-sm-4"><i class="far fa-folder fa-fw"></i>${value}</div>`;
}
}
if (prop === 'tags') {
if (value === '') {
return `${value}`;
} else {
return `<div><i class="fa fa-tag fa-fw"></i>${value}</div>`;
}
}
}
});
</script>
</body>
</html>