<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2752067603524007638</atom:id><lastBuildDate>Fri, 06 Nov 2026 10:07:54 +0000</lastBuildDate><category>freebsd</category><category>linux</category><category>windows</category><category>openbsd</category><category>blogger</category><category>networking</category><title>Website Statis Tutorial Opensource</title><description>unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya</description><link>https://www.unixbsdshell.site/</link><managingEditor>noreply@blogger.com (Iwan Setiawan)</managingEditor><generator>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><language>en-us</language><itunes:explicit>no</itunes:explicit><copyright>https://www.blogger.com/profile/08958087252392329520</copyright><itunes:image href="https://www.google.com/maps/place/WARNET+DAPURNET/@-6.2697727,107.1165375,17z/data=!3m1!4b1!4m6!3m5!1s0x2e69854270602ca7:0x71e63dfb53b7b95!8m2!3d-6.2697727!4d107.1165375!16s%2Fg%2F11fx88pw2p?entry=ttu"/><itunes:keywords>freebsd, openbsd, netbsd, debian, linux, ubuntu, blogger, windows, pfsense, opnsense, dns, web, server, proxy, nginx, apache, ruby, router, video, youtube, skrip, script, command, shell, install, windows</itunes:keywords><itunes:summary>unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya</itunes:summary><itunes:subtitle>Website Statis Tutorial Opensource</itunes:subtitle><itunes:category text="Education"><itunes:category text="Educational Technology"/></itunes:category><itunes:author>Iwan Setiawan</itunes:author><itunes:owner><itunes:email>datainchi@gmail.com</itunes:email><itunes:name>Iwan Setiawan</itunes:name></itunes:owner><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-4235976121247014800</guid><pubDate>Sat, 10 Oct 2026 03:57:00 +0000</pubDate><atom:updated>2026-11-02T21:54:06.391+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><title>Cara Instal Yandex Browser di Ubuntu Desktop</title><description>&lt;p&gt;Yandex Browser adalah peramban web yang cepat, aman, dan serbaguna yang dikembangkan oleh Yandex, sebuah perusahaan multinasional Rusia yang mengkhususkan diri dalam produk dan layanan terkait Internet. Peramban ini memiliki antarmuka yang ramping, alat keamanan bawaan, dan berbagai opsi penyesuaian.&lt;/p&gt;

&lt;p&gt;Fitur utamanya meliputi mode Turbo untuk penjelajahan yang lebih cepat pada koneksi yang lambat, alat penerjemahan terintegrasi, dan fitur privasi tingkat lanjut untuk melindungi data pengguna.&lt;/p&gt;

&lt;p&gt;Untuk &lt;a class="alink" href="https://snapcraft.io/install/yandex-browser/ubuntu" rel="external" target="_blank" title="Install Yandex browser on Ubuntu"&gt;menginstal Yandex Browser&lt;/a&gt; di Ubuntu 24.04, 22.04, atau 20.04, Anda dapat menggunakan repositori APT resmi Yandex, yang menyediakan akses ke versi stabil atau beta terbaru. Selama proses instalasi berlangsung, Browser Yandex dapat mengimpor data dari browser lain yang telah diinstal pada sistem komputer anda. Seperti Google Chrome, mengimpor data dari Firefox memerlukan penutupan sesi browser Mozilla yang aktif:&lt;/p&gt;

&lt;p&gt;Panduan ini akan memandu Anda melalui langkah-langkah untuk menambahkan repositori Yandex dan menginstal peramban.&lt;/p&gt;

&lt;h2 title="Perbarui Sistem Ubuntu Anda Sebelum Nginstal Yandex"&gt; Perbarui Sistem Ubuntu Anda Sebelum Nginstal Yandex&lt;/h2&gt;

&lt;p&gt;Kami akan menggunakan pengelola paket APT Ubuntu untuk menginstal Yandex browser. Jika pembaruan tersedia, sebaiknya jalankan perintah pembaruan sistem untuk penginstalan.&lt;/p&gt;

&lt;p&gt;Sebelum menginstal perangkat lunak baru, sebaiknya pastikan sistem Anda mutakhir. Hal ini menjamin fitur dan pembaruan keamanan terkini serta mengurangi potensi konflik paket selama proses penginstalan.&lt;/p&gt;

&lt;p&gt;Untuk memperbarui sistem Ubuntu, Anda dapat menjalankan perintah berikut di terminal:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns4@iwans:/$ sudo apt update &amp;amp;&amp;amp; sudo apt upgrade
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 title="Instal dependensi Browser Yandex"&gt;Instal dependensi Browser Yandex&lt;/h2&gt;

&lt;p&gt;Setelah sistem Anda diperbarui, langkah berikutnya adalah menginstal serangkaian dependensi yang penting untuk menginstal Yandex Browser dengan sukses. Meskipun sebagian besar paket ini kemungkinan sudah ada di sistem Anda, menjalankan perintah berikut akan memastikan keberadaannya:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns4@iwans:/$ sudo apt install curl apt-transport-https -y
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perintah di atas akan menginstal curl, alat untuk mentransfer data dengan URL, dan apt-transport-https, paket yang memungkinkan pengelola paket mentransfer file dan data melalui https. Jika Anda mengalami masalah di kemudian hari dalam proses instalasi, Anda mungkin ingin meninjau kembali langkah ini untuk memastikan paket-paket ini diinstal dengan benar.&lt;/p&gt;

&lt;h2 title="Mengintegrasikan Kunci Publik"&gt;Mengintegrasikan Kunci Publik&lt;/h2&gt;

&lt;p&gt;Sistem memerlukan kunci untuk memeriksa paket yang akan kami terima menggunakan repositori tambahan Yandex. Ini memastikan paket sistem berada dalam kondisi yang sama seperti saat pengembang merilisnya dan belum dimodifikasi oleh seseorang.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns4@iwans:/$ cd /tmp
ns4@iwans:/tmp$ curl -fsSL https://repo.yandex.ru/yandex-browser/YANDEX-BROWSER-KEY.GPG | gpg --dearmor | sudo tee /usr/share/keyrings/yandex.gpg &amp;gt; /dev/null
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah kunci GPG diimpor, Anda dapat mengimpor repositori Yandex Browser Stabil dan Beta. Harap perhatikan bahwa keduanya berbagi instalasi terpisah, dan Anda dapat memilih untuk mengimpor salah satu atau keduanya, tergantung pada preferensi Anda.&lt;/p&gt;

&lt;p&gt;Untuk mengimpor repositori Yandex Browser Stabil, gunakan perintah berikut:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns4@iwans:/tmp$ echo deb [arch=amd64 signed-by=/usr/share/keyrings/yandex.gpg] http://repo.yandex.ru/yandex-browser/deb stable main | sudo tee /etc/apt/sources.list.d/yandex-stable.list
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Dengan repositori Yandex Browser yang diimpor, saatnya memperbarui daftar paket Anda untuk mencerminkan repositori yang baru diimpor. Ini dapat dilakukan dengan menjalankan pembaruan APT dengan perintah berikut:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns4@iwans:/tmp$ sudo apt update
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 title="Instal browser Yandex di Ubuntu Desktop"&gt;Instal browser Yandex di Ubuntu Desktop&lt;/h2&gt;

&lt;p&gt;Pada bagian ini, sistem Anda siap untuk menginstal Yandex Browser. Bergantung pada repositori yang Anda impor, Anda dapat menginstal versi stabil atau versi beta/pengembangan.&lt;/p&gt;

&lt;p&gt;Untuk menginstal Yandex Browser versi stabil, jalankan perintah berikut:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns4@iwans:/tmp$ sudo apt install yandex-browser-stable
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 title="Hapus Repo Yandex"&gt;Hapus Repo Yandex&lt;/h2&gt;

&lt;p&gt;Saat memasang Yandex Browser, baik versi stabil maupun beta, file source.list tambahan mungkin dibuat secara otomatis. File ini, karena formatnya tidak tepat, dapat memicu serangkaian pesan kesalahan saat menjalankan perintah apt update.&lt;/p&gt;

&lt;p&gt;Untungnya, ada solusi sederhana untuk masalah ini. Anda dapat segera menghapus file-file source.list yang tidak penting ini dengan perintah berikut:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns4@iwans:/tmp$ sudo rm /etc/apt/sources.list.d/yandex-browser*.list
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perintah di atas secara efektif menghapus semua file source.list yang terkait dengan Yandex Browser, terlepas dari apakah Anda telah menginstal versi stabil atau beta. Dengan demikian, perintah ini hanya menyimpan file-file source.list yang Anda impor sebelumnya yaitu, yandex-beta.list dan yandex-stable.list.&lt;/p&gt;

&lt;p&gt;Setelah itu lakukan jalankan perintah untuk memverifikasi Penghapusan File Source.list yang Dihasilkan Secara Otomatis&lt;/p&gt;

&lt;p&gt;Setelah menghapus file-file source.list yang tidak diperlukan, sebaiknya verifikasi bahwa operasi berhasil dan tidak akan terjadi kesalahan terkait di masa mendatang. Verifikasi ini dapat dilakukan dengan mudah dengan menjalankan apt update.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns4@iwans:/tmp$ sudo apt update
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Jika penghapusan berhasil, perintah ini akan berjalan lancar tanpa pesan kesalahan apa pun yang terkait dengan Yandex Browser. Langkah ini secara efektif mengkonfirmasi bahwa sistem Anda kini bebas dari file-file &lt;em&gt;sources.list&lt;/em&gt; yang dibuat secara otomatis.&lt;/p&gt;

&lt;h2 title="Membuka Yandex Browser dengan CLI atau GUI"&gt;Membuka Yandex Browser dengan CLI atau GUI&lt;/h2&gt;

&lt;p&gt;Setelah anda berhasil memasang yandex browser di Desktop Ubuntu, saat kita menjalankan aplikasi yandex tersebut.&lt;/p&gt;

&lt;p&gt;Karena menjalankan yandex browser dengan GUI sangat mudah sekali, sama dengan anda membuka Google Chrome di Windows. Jadi pada artikel ini kami hanya akan membahas cara menkalankan yandex browser dengan Command Line Interface atau orang kulon menyebutnya dengan CLI.&lt;/p&gt;

&lt;p&gt;Buka menu shell CLI Ubuntu, setelah itu anda ketikkan perintah berikut.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns4@iwans:/$ yandex-browser-stable
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 title="Menghapus Instalasi Yandex Browser"&gt;Menghapus Instalasi Yandex Browser&lt;/h2&gt;

&lt;p&gt;Jika Anda perlu menghapus instalasi Yandex Browser, gunakan perintah terminal yang tepat untuk versi yang terinstal.&lt;/p&gt;

&lt;p&gt;Jika Anda telah menginstal versi stabil, gunakan perintah berikut:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns4@iwans:/$ sudo apt remove yandex-browser-stable
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah menghapus Yandex Browser, sebaiknya hapus repositori yang terkait dengan Yandex Browser dari sistem Anda.&lt;/p&gt;

&lt;p&gt;Perintah untuk menghapus repositori stabil adalah:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns4@iwans:/$ sudo rm /etc/apt/sources.list.d/yandex-stable.list
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Dengan Yandex Browser yang berhasil diinstal pada sistem Ubuntu Anda, Anda dapat menikmati fitur-fiturnya yang tangguh dan pengalaman menjelajah yang lebih baik. Memperbarui browser secara berkala melalui repositori APT resmi Yandex memastikan Anda memiliki akses ke fitur-fitur terbaru dan peningkatan keamanan.&lt;/p&gt;

&lt;p&gt;Jelajahi pengaturan dan alat yang dapat disesuaikan yang ditawarkan Yandex Browser untuk pengalaman menjelajah yang lebih personal dan aman.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2026/10/cara-instal-yandex-browser-di-ubuntu.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-8247272641498405289</guid><pubDate>Fri, 02 Oct 2026 08:05:00 +0000</pubDate><atom:updated>2026-11-02T16:01:59.076+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">openbsd</category><title>Panduan Nginstal TOR Network di OpenBSD</title><description>&lt;p&gt;OpenBSD adalah sistem operasi turunan Unix yang berfokus pada keamanan dan kepatuhan terhadap standar. Sistem ini dianggap sebagai salah satu sistem paling aman yang tersedia. Dengan instalasi default-nya, OpenBSD mampu menginstal berbagai aplikasi dengan sangat mudah dan cepat.&lt;/p&gt;

&lt;p&gt;Begitu juga dengan aplikasi TOR, dengan bantuan paket PKG yang dimiliki OpneBSD, aplikasi TOR dapat diinstal hanya dalam hitungan menit saja. Pada artikel ini kami akan mencoba menjelaskan secara rinci tentang proses &lt;a href="https://pestilenz.org/~bauerm/tor-openbsd-howto.html"&gt;instalasi TOR di OpenBSD&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;A. Spesifikasi Sistem&lt;/h2&gt;
&lt;p&gt;Dalam pembuatan artikel ini, kami menggunakan komputer yang tergolong tidak memiliki spesifikasi tinggi.&lt;/p&gt;

&lt;p&gt;Adapun spesifikasi komputer yang kami gunakan sebagai berikut:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;OS: OpenBSD 7.6 amd64&lt;/li&gt;
  &lt;li&gt;IP Address: 192.168.5.3&lt;/li&gt;
  &lt;li&gt;Host: Acer Aspire M1800&lt;/li&gt;
  &lt;li&gt;Uptime: 3 mins&lt;/li&gt;
  &lt;li&gt;Packages: 95 (pkg_info)&lt;/li&gt;
  &lt;li&gt;Shell: ksh v5.2.14 99/07/13.2&lt;/li&gt;
  &lt;li&gt;Terminal: /dev/ttyp0&lt;/li&gt;
  &lt;li&gt;CPU: Intel Core 2 Duo E8400 (2) @ 3.0&lt;/li&gt;
  &lt;li&gt;Memory: 208MiB / 1775MiB&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;B. Tentang TOR&lt;/h2&gt;

&lt;p&gt;Proyek Tor adalah solusi intelijen yang dikembangkan oleh Angkatan Laut AS, untuk melindungi komunikasi intelijen AS secara daring. Namun, saat ini, proyek tersebut terus berfungsi sebagai organisasi sumber terbuka nirlaba yang mempromosikan privasi daring, dan terbuka untuk umum. Jika Anda tidak tahu apa arti istilah "sumber terbuka".&lt;/p&gt;

&lt;p&gt;Sumber terbuka memiliki arti bahwa semua kode sumber proyek dibagikan secara publik. Karena semua kode sumber proyek dibagikan secara terbuka, proyek tersebut dapat dikembangkan lebih cepat oleh banyak relawan, memastikan tidak ada kode berbahaya.&lt;/p&gt;

&lt;p&gt;Singkatnya; jika suatu proyek bersifat sumber terbuka, proyek tersebut berada di bawah kendali semua orang.&lt;/p&gt;

&lt;p&gt;Pengembangan Tor dimulai pada pertengahan 1990-an ketika Laboratorium Penelitian Angkatan Laut AS mulai bereksperimen dengan jaringan anonimitas untuk melindungi komunikasi pemerintah. Peneliti Paul Syverson, Michael G. Reed, dan David Goldschlag mengembangkan onion routing, sebuah teknik yang dirancang untuk menyembunyikan asal dan tujuan komunikasi daring dengan membungkus data dalam beberapa lapisan enkripsi.&lt;/p&gt;

&lt;p&gt;Teknologi ini awalnya ditujukan untuk operasi intelijen yang aman dan melindungi identitas pejabat pemerintah secara daring.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/TZqTc5KuzN0" width="320" youtube-src-id="TZqTc5KuzN0"&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Pada awal 2000-an, pemerintah AS merilis teknologi onion routing ke domain publik untuk membantu menjaga anonimitas tidak hanya bagi petugas pemerintah tetapi juga jurnalis, aktivis hak asasi manusia, dan pengguna internet sehari-hari. Pada tahun 2002, The Onion Routing Project, atau Tor Project, secara resmi didirikan untuk memajukan dan memelihara teknologi ini.&lt;/p&gt;

&lt;p&gt;Tor pada dasarnya didasarkan pada prinsip pengaburan. Untuk lebih memahami struktur kerjanya dan melihat sistem seperti apa yang sebenarnya kita andalkan, mari kita mulai dengan membahas struktur kerja umum. Untuk proses penganoniman pengguna, 3 dari sekitar 6500 server sukarelawan dipilih secara acak.&lt;/p&gt;

&lt;p&gt;Server-server terpilih ini disebut node. Saat terhubung ke jaringan Tor, paket-paket data dienkripsi dan dikirimkan melalui ketiga node ini ke server target. Paket respons server dienkripsi dengan cara yang sama dan dikirimkan ke pengguna, melalui tiga node. Dengan cara ini, semua lalu lintas antara situs web dan Anda dianonimkan.&lt;/p&gt;

&lt;h2&gt;C. Proses Instalasi TOR di OpenBSD&lt;/h2&gt;
&lt;p&gt;Pada OpenBSD secara default melayani dua metode instalasi TOR, yaitu dengan paket PKG dan OpenBSD Ports. Bila kita perhatikan kedua metode ini hampir sama dengan FreeBSD. Dari kedua metode itu sama saja maksud dan tujuannya yaitu untuk menginstal TOR.&lt;/p&gt;

&lt;h3&gt;1. Instal TOR dengan Paket PKG&lt;/h3&gt;

&lt;p&gt;Pada bagian ini kami akan jelaskan cara nginstal TOR dengan paket PKG. Caranya sangat mudah dan banyak desenangi oleh pengguna OpenBSD.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;&lt;span face="Verdana, Geneva, sans-serif"&gt;&lt;span style="font-size: 17px;"&gt;Install TOR&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;&lt;span style="color: #3a3a3a;"&gt;ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;pkg_add -uvi&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;pkg_add tor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;WARNING:&lt;/strong&gt; If you omit the export TORDIR, the following commands will fail or damage your system seriously, because they are executed as root on the root-directory / .&lt;/p&gt;

&lt;h3 id="2-instal-tor-dengan-openbsd-ports"&gt;2. Instal TOR dengan OpenBSD Ports&lt;/h3&gt;

&lt;p&gt;Cara yang kedua ini jarang sekali digunakan oleh para pengguna OpenBSD. Selain tak praktis juga sangat lambat sekali proses instalasinya. Namun, meskipun demikian jika anda menginstal suatu aplikasi dengan OpenBSD Ports semua dependensi yang dibutuhkan oleh aplikasi tersebut ikut diinstal juga. Jadi kalau boleh dikatakan mengisntal dengan Ports lebih disarankan deibandingkan dengan paket PKG.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;&lt;span face="Verdana, Geneva, sans-serif"&gt;&lt;span style="font-size: 17px;"&gt;Install TOR dengan sistem Ports OpenBSD&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;&lt;span style="color: #3a3a3a;"&gt;ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;cd /usr/ports/net/tor&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;make clean=all&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;make&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;make package&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;make install&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h2&gt;D. Proses Konfigurasi TOR di OpenBSD&lt;/h2&gt;

&lt;p&gt;Setelah kita selesai menginstal TOR, baik dengan paket PKG ataupun Ports, langkah berikutnya adalah melakukan konfigurasi terhadapa aplikasi TOR.&lt;/p&gt;

&lt;h3&gt;d.1. Ubah file /etc/tor/torrc /etc/login.conf dan /etc/sysctl.conf&lt;/h3&gt;

&lt;p&gt;File &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/tor/torrc&lt;/code&gt; adalah file konfigurasi utama dari TOR. File ini harus anda sesuaikan agar bisa berjalan dengan sempurna.&lt;/p&gt;

&lt;p&gt;Pada artikel ini kami akan contohkan beberapa script yang harus anda aktifkan (sesuaikan dengan server dan kebutuhan anda).&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;&lt;span face="Verdana, Geneva, sans-serif"&gt;&lt;span style="font-size: 17px;"&gt;File /etc/tor/torrc&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="color: #3a3a3a; font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;SOCKSPort 192.168.5.3:9050
SOCKSPolicy accept 192.168.5.0/24
Log debug file /var/log/tor/debug.log
RunAsDaemon 1
DataDirectory /var/tor
User _tor
Log notice syslog&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Setelah itu anda juga harus mengubah file &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/login.conf&lt;/code&gt;.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;&lt;span face="Verdana, Geneva, sans-serif"&gt;&lt;span style="font-size: 17px;"&gt;File /etc/login.conf&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="color: #3a3a3a; font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;tor:\
    :openfiles-max=13500:\
    :tc=daemon:&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Jangan lupa ketikkan script berikut di file &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/sysctl.conf&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-text highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;kern.maxfiles=16000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3&gt;d.2. Buat File Log&lt;/h3&gt;

&lt;p&gt;File log sangat penting untuk memantau aktifitas TOR. Perintah di bawah ini adalah panduan untuk membuat file log TOR.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;&lt;span face="Verdana, Geneva, sans-serif"&gt;&lt;span style="font-size: 17px;"&gt;Buat file log&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;&lt;span style="color: #3a3a3a;"&gt;ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;mkdir -p /var/log/tor&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;touch /var/log/tor/debug.log&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;chown -R _tor:_tor /var/log/tor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3&gt;d.3. Aktifkan dan Jalankan TOR&lt;/h3&gt;

&lt;p&gt;Setelah semuanya telah atur sesuai dengan petunjuk di atas, anda dapat langsung mengaktifkan dan menjalankan TOR.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;&lt;span face="Verdana, Geneva, sans-serif"&gt;&lt;span style="font-size: 17px;"&gt;Mengaktifkan/Menjalankan Aplikasi TOR&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;&lt;span style="color: #3a3a3a;"&gt;ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;rcctl enable tor&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;rcctl restart tor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h2&gt;E. Periksa TOR&lt;/h2&gt;

&lt;p&gt;Langkah ini sangat penting dan yang paling ditunggu-tunggu oleh anda, karena kita akan melihat hasilnya, apakah TOR yang telah kita instal dan konfigurasi telah berjalan atau belum. Untuk memeriksa TOR apakah sudah berjalan atau belum anda dapat menggunakan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;curl&lt;/code&gt;, seperti contoh di bawah ini.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;&lt;span face="Verdana, Geneva, sans-serif"&gt;&lt;span style="font-size: 17px;"&gt;Test TOR&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;&lt;span style="color: #3a3a3a;"&gt;ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;curl \
      -x socks5h://192.168.5.3:9050 \
      -s https://check.torproject.org/api/ip&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
&lt;/span&gt;&lt;span style="color: #ffa400;"&gt;{"IsTor":true,"IP":"45.141.215.88"}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Pada hasil test di atas IP &lt;code class="language-plaintext highlighter-rouge"&gt;"45.141.215.88"&lt;/code&gt; adalah IP dari TOR Project. Anda juga dapat mengganti alamat &lt;code class="language-plaintext highlighter-rouge"&gt;https://check.torproject.org/api/ip&lt;/code&gt;, dengan alamat lainnya, seperti contoh berikut.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;&lt;span face="Verdana, Geneva, sans-serif"&gt;&lt;span style="font-size: 17px;"&gt;Test TOR&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;&lt;span style="color: #3a3a3a;"&gt;ns5# &lt;/span&gt;&lt;span style="color: red;"&gt;curl \
      -x socks5h://192.168.5.3:9050 \
      -s https://www.inchimediatama.org&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Bila hasilnya seperti yang ditampilkan seperti contoh di atas, artinya TOR anda telah aktif di server OpenBSD. Anda dapat menggunakan TOR untuk digabungkan dengan aplikasi lainnya sebagai proxy ataupun lainnya.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2026/10/panduan-nginstal-tor-network-di-openbsd.html</link><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/TZqTc5KuzN0/default.jpg" width="72"/><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-8615451859429879137</guid><pubDate>Thu, 24 Sep 2026 02:57:00 +0000</pubDate><atom:updated>2026-11-02T16:53:25.726+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>Menambahkan Sertifikat TLS SSL pada database MariaDB dengan OpenSSL</title><description>&lt;p&gt;Secara default, MariaDB mengirimkan data antara server dan klien tanpa mengenkripsinya. Hal ini secara umum dapat diterima ketika server dan klien berjalan pada host yang sama atau dalam jaringan yang keamanannya dijamin melalui cara lain.&lt;/p&gt;

&lt;p&gt;Namun, dalam kasus di mana server dan klien berada pada jaringan terpisah atau berada dalam jaringan berisiko tinggi, kurangnya enkripsi memang menimbulkan masalah keamanan karena pelaku kejahatan berpotensi menguping lalu lintas saat data dikirim melalui jaringan di antara keduanya.&lt;/p&gt;

&lt;p&gt;Untuk mengurangi masalah ini, MariaDB memungkinkan Anda mengenkripsi data saat transit antara server dan klien menggunakan protokol Transport Layer Security (TLS). TLS sebelumnya dikenal sebagai Secure Socket Layer (SSL), tetapi secara tegas protokol SSL merupakan pendahulu TLS dan versi protokol tersebut sekarang dianggap tidak aman.&lt;/p&gt;

&lt;p&gt;Dokumentasi masih sering menggunakan istilah SSL dan untuk alasan kompatibilitas, sistem server dan variabel status terkait TLS masih menggunakan awalan ssl, tetapi secara internal, MariaDB hanya mendukung penerusnya yang aman.&lt;/p&gt;

&lt;p&gt;Dalam tutorial ini, saya akan memberikan petunjuk tentang cara menyiapkan server MariaDB dengan TLS/SSL, dan cara membuat koneksi aman antara server dan klien MariaDB&lt;/p&gt;

&lt;p&gt;dari konsol dan skrip PHP/Python. MariaDB adalah server basis data yang menawarkan fungsionalitas pengganti langsung untuk server MySQL. MariaDB dibuat oleh beberapa penulis asli MySQL, dengan bantuan dari komunitas pengembang perangkat lunak gratis dan sumber terbuka yang lebih luas.&lt;/p&gt;

&lt;p&gt;Selain fungsionalitas inti MySQL, MariaDB menawarkan serangkaian peningkatan fitur yang lengkap, termasuk mesin penyimpanan lain, pengoptimalan server, dan patch.&lt;/p&gt;

&lt;h2 id="1-kompatibilitas"&gt;1. Kompatibilitas&lt;/h2&gt;

&lt;p&gt;Koneksi klien dan server yang terenkripsi menggunakan protokol TLS dengan tujuan agar data yang direplikasi dapat dienkripsi sehingga server master dan slave memerlukan koneksi aman untuk diaktifkan.&lt;/p&gt;

&lt;p&gt;Meskipun prosedur di atas memungkinkan server untuk menggunakan koneksi terenkripsi TLS dengan klien. Perlu diketahui bahwa ini tidak ada paksaan penggunaan untuk mengenkripsi data dengan cara apa pun. Untuk memastikan koneksi dengan klien tertentu (pengguna @host) dienkripsi, profil pengguna basis data harus diedit dengan opsi GRANT khusus TLS.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a target="_blank" href="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/oct-25/oct-25-133.jpg"&gt;
    &lt;img src="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/oct-25/oct-25-133.jpg" class="artikel-img" title="MariaDB dengan OpenSSL" alt="MAria DB dengan SSL" /&gt;
    &lt;/a&gt;
    &lt;figcaption class="teks-gamabr"&gt;
     Pemasangan sertifikat SSL/TLS di MariaDB database server
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Dukungan untuk koneksi terenkripsi TLS sangat bervariasi di berbagai versi server MariaDB dan MySQL. Panduan ini mengasumsikan MariaDB versi 10.2.x terhubung secara dinamis dengan pustaka TLS dari OpenSSL yang mendukung setidaknya TLSv1.2.&lt;/p&gt;

&lt;p&gt;Untuk memeriksa ketersediaan koneksi terenkripsi TLS di server database MariaDB anda, lakukan perintah di bawah ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;SHOW VARIABLES LIKE &lt;span class="s1"&gt;'have_ssl'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
Variable_name             Value
have_ssl                        YES

SHOW VARIABLES LIKE &lt;span class="s1"&gt;'have_openssl'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
Variable_name                Value
have_openssl                   YES
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="2-buat-otoritas-sertifikat-untuk-mariadb"&gt;2. Buat Otoritas Sertifikat untuk MariaDB&lt;/h2&gt;

&lt;p&gt;Sertifikat yang digunakan antara server basis data dan klien tidak boleh dikeluarkan oleh otoritas sertifikat publik atau komersial, karena ini bukan tentang mengamankan layanan publik.&lt;/p&gt;

&lt;p&gt;Tujuannya di sini adalah untuk melindungi data pribadi yang mengalir antara server dan klien pribadi kita sendiri. Oleh karena itu, semua entitas harus mengautentikasi diri mereka sendiri di kedua sisi koneksi dengan sertifikat yang valid yang dikeluarkan oleh otoritas sertifikat pribadi kita sendiri.&lt;/p&gt;

&lt;p&gt;Penggunaan sertifikat OpenSSL pada MariaDB akan sangat oftimal jika dilakukan pada perangkat terpisah, seeprti perangkat penyimpanan flashdisk (alias stik USB terenkripsi) untuk CA. Baiklah tanpa panjang lebar kita langsung saja mulai cara pembuatan sertifikat TLS/SSL. Kita mulai dengan perintah di bawah ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /media/&lt;span class="nv"&gt;$USER&lt;/span&gt;/safe_storage
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="3-buat-direktori-dan-file"&gt;3. Buat Direktori dan file&lt;/h2&gt;

&lt;p&gt;Setelah itu, anda buat direktori bernama &lt;code class="language-plaintext highlighter-rouge"&gt;database-ca&lt;/code&gt; di perangkat penyimpanan aman anda (USB) dengan perintah di bawah ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; database-ca/&lt;span class="o"&gt;{&lt;/span&gt;certreqs,certs,crl,newcerts,private&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /database-ca
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Direktori yang digunakan untuk menyimpan kunci pribadi tidak boleh dapat diakses oleh orang lain, jalankan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;chmod&lt;/code&gt; seperti contoh di bawah ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;chmod &lt;/span&gt;700 private
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Beberapa file data diperlukan untuk melacak sertifikat yang diterbitkan, nomor seri, dan pencabutannya (revocations).&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;touch &lt;/span&gt;database-ca.index
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;00 &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; database-ca.crlnum
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;00 &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; database-ca.serial
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="4-konfigurasi-openssl"&gt;4. Konfigurasi OpenSSL&lt;/h2&gt;

&lt;p&gt;Buat file konfigurasi OpenSSL untuk database CA baru dengan nama &lt;code class="language-plaintext highlighter-rouge"&gt;database_ca.cnf&lt;/code&gt; dengan script seperti contoh berikut ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# OpenSSL configuration for the MariaDB/MySQL Database Clients and Servers&lt;/span&gt;
&lt;span class="c"&gt;# Certification Authority.&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;

&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# This definition doesn't work if HOME isn't defined.&lt;/span&gt;
CA_HOME                 &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
RANDFILE                &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$ENV&lt;/span&gt;::CA_HOME/private/.rnd

&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Default Certification Authority&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; ca &lt;span class="o"&gt;]&lt;/span&gt;
default_ca              &lt;span class="o"&gt;=&lt;/span&gt; database_ca

&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Database Certification Authority&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; database_ca &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="nb"&gt;dir&lt;/span&gt;                     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$ENV&lt;/span&gt;::CA_HOME
certs                   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/certs
serial                  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/database-ca.serial
database                &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/database-ca.index
new_certs_dir           &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/newcerts
certificate             &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/database-ca.cert.pem
private_key             &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/private/database-ca.key.pem
default_days            &lt;span class="o"&gt;=&lt;/span&gt; 368 &lt;span class="c"&gt;# Two years&lt;/span&gt;
crl                     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/database-ca.crl
crl_dir                 &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/crl
crlnumber               &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/database-ca.crlnum
name_opt                &lt;span class="o"&gt;=&lt;/span&gt; multiline, align
cert_opt                &lt;span class="o"&gt;=&lt;/span&gt; no_pubkey
copy_extensions         &lt;span class="o"&gt;=&lt;/span&gt; copy
crl_extensions          &lt;span class="o"&gt;=&lt;/span&gt; crl_ext
default_crl_days        &lt;span class="o"&gt;=&lt;/span&gt; 60
default_md              &lt;span class="o"&gt;=&lt;/span&gt; sha256
preserve                &lt;span class="o"&gt;=&lt;/span&gt; no
email_in_dn             &lt;span class="o"&gt;=&lt;/span&gt; no
policy                  &lt;span class="o"&gt;=&lt;/span&gt; cert_policy
unique_subject          &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;yes&lt;/span&gt;

&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Distinguished Name Policy for the CA&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; ca_policy &lt;span class="o"&gt;]&lt;/span&gt;
organizationName        &lt;span class="o"&gt;=&lt;/span&gt; supplied
commonName              &lt;span class="o"&gt;=&lt;/span&gt; supplied

&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Distinguished Name Policy Server and Client Certificates&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; cert_policy &lt;span class="o"&gt;]&lt;/span&gt;
commonName              &lt;span class="o"&gt;=&lt;/span&gt; supplied

&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# CA Request Options&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; ca_req &lt;span class="o"&gt;]&lt;/span&gt;
default_bits            &lt;span class="o"&gt;=&lt;/span&gt; 4096
default_keyfile         &lt;span class="o"&gt;=&lt;/span&gt; private/mariadatabase-ca.key.pem
encrypt_key             &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;yes
&lt;/span&gt;default_md              &lt;span class="o"&gt;=&lt;/span&gt; sha256
string_mask             &lt;span class="o"&gt;=&lt;/span&gt; utf8only
utf8                    &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;yes
&lt;/span&gt;prompt                  &lt;span class="o"&gt;=&lt;/span&gt; no
req_extensions          &lt;span class="o"&gt;=&lt;/span&gt; database_ca_req_ext
distinguished_name      &lt;span class="o"&gt;=&lt;/span&gt; ca_distinguished_name
subjectAltName          &lt;span class="o"&gt;=&lt;/span&gt; @subject_alt_name

&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# CA Request Extensions&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; database_ca_req_ext &lt;span class="o"&gt;]&lt;/span&gt;
subjectKeyIdentifier    &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;hash&lt;/span&gt;

&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Distinguished Name (DN)&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; ca_distinguished_name &lt;span class="o"&gt;]&lt;/span&gt;
organizationName        &lt;span class="o"&gt;=&lt;/span&gt; example.net
commonName              &lt;span class="o"&gt;=&lt;/span&gt; example.net Database Clients and Servers Certification Authority

&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# CA Certificate Extensions&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; ca_ext &lt;span class="o"&gt;]&lt;/span&gt;
basicConstraints        &lt;span class="o"&gt;=&lt;/span&gt; critical, CA:true
keyUsage                &lt;span class="o"&gt;=&lt;/span&gt; critical, keyCertSign, cRLSign
subjectKeyIdentifier    &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;hash
&lt;/span&gt;subjectAltName          &lt;span class="o"&gt;=&lt;/span&gt; @subject_alt_name
authorityKeyIdentifier  &lt;span class="o"&gt;=&lt;/span&gt; keyid:always
issuerAltName           &lt;span class="o"&gt;=&lt;/span&gt; issuer:copy
authorityInfoAccess     &lt;span class="o"&gt;=&lt;/span&gt; @auth_info_access
crlDistributionPoints   &lt;span class="o"&gt;=&lt;/span&gt; crl_dist

&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# CRL Certificate Extensions&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; crl_ext &lt;span class="o"&gt;]&lt;/span&gt;
authorityKeyIdentifier  &lt;span class="o"&gt;=&lt;/span&gt; keyid:always
issuerAltName           &lt;span class="o"&gt;=&lt;/span&gt; issuer:copy

&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Clients and Servers Certificate Extensions&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; cert_ext &lt;span class="o"&gt;]&lt;/span&gt;
basicConstraints        &lt;span class="o"&gt;=&lt;/span&gt; CA:FALSE
keyUsage                &lt;span class="o"&gt;=&lt;/span&gt; critical, digitalSignature, keyEncipherment
extendedKeyUsage        &lt;span class="o"&gt;=&lt;/span&gt; critical, serverAuth, clientAuth
subjectKeyIdentifier    &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;hash
&lt;/span&gt;authorityKeyIdentifier  &lt;span class="o"&gt;=&lt;/span&gt; keyid:always

&lt;span class="c"&gt;# EOF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah itu anda harus menetapkan file konfigurasi OpenSSL untuk CA database.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OPENSSL_CONF&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;./database-ca.cnf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="5-hasilkan-generate-csr-dan-buat-kunci-baru"&gt;5. Hasilkan (generate) CSR dan Buat Kunci baru&lt;/h2&gt;

&lt;p&gt;Perintah berikut membuat kunci baru dan permintaan penandatanganan sertifikat untuk root.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;openssl req &lt;span class="nt"&gt;-new&lt;/span&gt; &lt;span class="nt"&gt;-out&lt;/span&gt; database-ca.req.pem
Generating a 4096 bit RSA private key
.......................................................................++
.......................................................................++
.......................................................................++
.......................................................................++
writing new private key to &lt;span class="s1"&gt;'private/database-ca.key.pem'&lt;/span&gt;
Enter PEM pass phrase: &lt;span class="k"&gt;********&lt;/span&gt;
Verifying - Enter PEM pass phrase: &lt;span class="k"&gt;********&lt;/span&gt;
&lt;span class="nt"&gt;-----&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="6-tandatangani-sendiri-sertifikat-yang-dibuat"&gt;6. Tandatangani sendiri sertifikat yang dibuat&lt;/h2&gt;

&lt;p&gt;Setelah anda menjalankan perintah generate sertifikat, lanjutkan dengan menandatangani sertifikat yang akan dibuat. Untuk melakukannya anda dapat menjalankan script berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;openssl ca &lt;span class="nt"&gt;-selfsign&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-in&lt;/span&gt; database-ca.req.pem &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-out&lt;/span&gt; database-ca.cert.pem &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-extensions&lt;/span&gt; ca_ext &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-startdate&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%y%m%d000000Z &lt;span class="nt"&gt;-u&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-1day&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-enddate&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%y%m%d000000Z &lt;span class="nt"&gt;-u&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; +5years+1day&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perintah di atas akan membuat tanda tangan yang berlaku selama lima tahun ke depan.&lt;/p&gt;

&lt;h2 id="7-revocation-list-crl"&gt;7. Revocation List (CRL)&lt;/h2&gt;

&lt;p&gt;Kita lanjutkan dengan membuat CRL kosong awal dari CA database yang telah kita buat di atas.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;openssl ca &lt;span class="nt"&gt;-gencrl&lt;/span&gt; &lt;span class="nt"&gt;-out&lt;/span&gt; crl/database-ca.crl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="8-salin-ke-sistem-target"&gt;8. Salin ke Sistem Target&lt;/h2&gt;

&lt;p&gt;CA kini telah siap untuk menandatangani permintaan sertifikat. Salin berkas berikut ke sistem mana pun (server dan klien basis data) yang menginisialisasi atau menerima koneksi menggunakan sertifikat dari CA ini.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Sertifikat CA (CA certificate)&lt;/li&gt;
  &lt;li&gt;Berkas CRL (file CRL)&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;scp database-ca.cert.pem crl/database-ca.crl aiken.example.net:/etc/mysql/ssl/
&lt;span class="nv"&gt;$ &lt;/span&gt;scp database-ca.cert.pem crl/database-ca.crl margaret.example.net:/etc/mysql/ssl/
&lt;span class="nv"&gt;$ &lt;/span&gt;scp database-ca.cert.pem crl/database-ca.crl gannibal.example.net:/etc/mysql/ssl/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perintah di atas dapat anda terapkan juga pada server workstation anda.&lt;/p&gt;

&lt;h2 id="9-permintaan-penandatanganan-sertifikat"&gt;9. Permintaan Penandatanganan Sertifikat&lt;/h2&gt;

&lt;p&gt;Buat permintaan penandatanganan sertifikat di server dan klien mana pun yang terhubung ke server dan klien lainnya. Jalankan perintah berikut untuk membuat permintaan penandatanganan sertifikat.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /etc/mysql/ssl/private
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Kemudian anda buat file konfigurasi OpenSSL &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/mysql/ssl/openssl.cnf&lt;/code&gt; dengan script berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# OpenSSL configuration for generation of MariaDB/MySQL servers and client&lt;/span&gt;
&lt;span class="c"&gt;# certificate requests.&lt;/span&gt;
&lt;span class="c"&gt;# Environment variable '$CN' **MUST** be defined or else OpenSSL aborts.&lt;/span&gt;

CN                          &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$ENV&lt;/span&gt;::CN
HOME                        &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
RANDFILE                    &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$ENV&lt;/span&gt;::HOME/.rnd

&lt;span class="o"&gt;[&lt;/span&gt; req &lt;span class="o"&gt;]&lt;/span&gt;
default_bits                &lt;span class="o"&gt;=&lt;/span&gt; 3072
default_keyfile             &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOME&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/private/&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CN&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;.key.pem
encrypt_key                 &lt;span class="o"&gt;=&lt;/span&gt; no
default_md                  &lt;span class="o"&gt;=&lt;/span&gt; sha256
req_extensions              &lt;span class="o"&gt;=&lt;/span&gt; req_extensions
prompt                      &lt;span class="o"&gt;=&lt;/span&gt; no
distinguished_name          &lt;span class="o"&gt;=&lt;/span&gt; req_distinguished_name

&lt;span class="o"&gt;[&lt;/span&gt; req_extensions &lt;span class="o"&gt;]&lt;/span&gt;
keyUsage                    &lt;span class="o"&gt;=&lt;/span&gt; digitalSignature, keyEncipherment
extendedKeyUsage            &lt;span class="o"&gt;=&lt;/span&gt; serverAuth, clientAuth
subjectKeyIdentifier        &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;hash&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt; req_distinguished_name &lt;span class="o"&gt;]&lt;/span&gt;
commonName                  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CN&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Buat permintaan penandatanganan sertifikat baru dengan script berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /etc/mysql/ssl
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OPENSSL_CONF&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/etc/mysql/ssl/openssl.cnf
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;CN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;aiken.example.net
&lt;span class="nv"&gt;$ &lt;/span&gt;openssl req &lt;span class="nt"&gt;-new&lt;/span&gt; &lt;span class="nt"&gt;-out&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CN&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;.req.pem
Generating a 3072 bit RSA private key
..........................................................................
........................................................................++
................................................................++
writing new private key to &lt;span class="s1"&gt;'./private/aiken.example.net.key.pem
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="10-tanda-tangani-sertifikat"&gt;10. Tanda tangani sertifikat&lt;/h2&gt;

&lt;p&gt;Kembali ke lingkungan otoritas sertifikat yang disimpan pada perangkat aman anda (USB).&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /media/&lt;span class="nv"&gt;$USER&lt;/span&gt;/safe_storage/database-ca
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Salin permintaan penandatanganan sertifikat dari server basis data (database).&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;scp aiken.example.net:/etc/mysql/ssl/aiken.example.net.req.pem certreqs/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Langkah terakhir adalah menandatangani file CSR.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OPENSSL_CONF&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;./database-ca.cnf
&lt;span class="nv"&gt;$ &lt;/span&gt;openssl ca &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-in&lt;/span&gt; ./certreqs/aiken.example.net.req.pem &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-out&lt;/span&gt; ./certs/aiken.example.net.cert.pem &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-extensions&lt;/span&gt; cert_ext &lt;span class="nt"&gt;--policy&lt;/span&gt; cert_policy
Using configuration from ./database-ca.cnf
Enter pass phrase &lt;span class="k"&gt;for&lt;/span&gt; ./private/database-ca.key: &lt;span class="k"&gt;********&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Anda telah mempelajari cara menyiapkan dan memasang sertifikat SSL antara server dan klien MariaDB. Untuk informasi lebih lanjut, lihat situs resmi MariaDB. Periksa juga perintah &lt;code class="language-plaintext highlighter-rouge"&gt;update-ca-certificates&lt;/code&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2026/09/menambahkan-sertifikat-tls-ssl-pada.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-1961907126226888170</guid><pubDate>Sun, 20 Sep 2026 04:37:00 +0000</pubDate><atom:updated>2026-11-03T05:51:47.607+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>Instalasi Lighttpd CGI BIN Dengan Mod Perl Di FreeBSD</title><description>&lt;p&gt;Aplikasi CGI dapat dibaca dan ditulis ke semua bahasa komputer yang berasal dari STDIN dan ditulis ke STDOUT, terlepas dari apakah program tersebut ditafsirkan oleh shell Unix dan dikompilasi oleh C atau C++, atau kombinasi keduanya, misalnya Perl. Program CGI pertama ditulis dalam C dan perlu dikompilasi menjadi file biner yang dapat dieksekusi.&lt;/p&gt;

&lt;p&gt;Oleh karena itu, direktori tempat program CGI yang dikompilasi dieksekusi diberi nama cgi-bin, dan direktori file sumber diberi nama cgi-src. Saat ini sebagian besar server dilengkapi dengan direktori yang telah dikonfigurasi sebelumnya untuk program CGI.&lt;/p&gt;

&lt;p&gt;Interaksi antara browser dan server web diatur oleh HyperText Transfer Protocol (HTTP), yang sekarang menjadi standar Internet resmi. HTTP menggunakan model permintaan dan respons sederhana. Misalnya, klien membuat koneksi TCP ke server dan mengirimkan permintaan, server mengirimkan respons, dan koneksi ditutup. Permintaan dan respons tersebut berbentuk pesan yang ditulis dalam serangkaian baris teks sederhana.&lt;/p&gt;

&lt;p&gt;Pesan permintaan dan respons HTTP memiliki dua bagian. Yang pertama adalah header, yang berisi informasi deskriptif tentang permintaan atau respons. Berbagai jenis header dan kemungkinan isinya ditentukan sepenuhnya oleh protokol HTTP.&lt;/p&gt;

&lt;p&gt;Header diikuti oleh baris kosong, lalu badan pesan. Badan pesan adalah konten pesan yang sebenarnya, seperti halaman HTML atau gambar GIF.&lt;/p&gt;

&lt;h2 id="1-tentang-common-gateway-interface-cgi"&gt;1. Tentang Common Gateway Interface (CGI)&lt;/h2&gt;

&lt;p&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;Common Gateway Interface&lt;/code&gt; atau disingkat &lt;code class="language-plaintext highlighter-rouge"&gt;CGI&lt;/code&gt; merupakan standar untuk menghubungkan berbagai program aplikasi ke halaman web. CGI ibarat program komputer yang bertindak sebagai perantara antara standar HTML yang membuat tampilan web dengan program lain, seperti basis data.&lt;/p&gt;

&lt;p&gt;Hasil yang diperoleh dari proses pencarian dikirim kembali ke halaman web untuk ditampilkan dalam format HTML.&lt;/p&gt;

&lt;p&gt;Pada awalnya CGI merupakan salah satu pendekatan yang digunakan untuk aplikasi pemrograman sisi server. Program CGI yang sering digunakan adalah C++ dan Perl. CGI merupakan bagian dari web server yang dapat berkomunikasi dengan program lain yang ada di server.&lt;/p&gt;

&lt;p&gt;Dengan CGI, web server dapat memanggil program yang dibuat dari berbagai bahasa pemrograman (Common). Interaksi antara pengguna dengan berbagai aplikasi, misalnya basis data, dapat dijembatani oleh CGI (Gateway). Kemampuan CGI ini dapat digunakan untuk IIS Web Server.&lt;/p&gt;

&lt;p&gt;Protokol HTTP membuat klien dan server saling memahami dengan mentransfer semua informasi di antara keduanya menggunakan header, di mana setiap header merupakan pasangan kunci-nilai. Saat Anda mengirimkan formulir, program CGI mencari header yang berisi informasi input, memproses data yang diterima, misalnya, meminta kata kunci yang diberikan melalui formulir ke database, dan saat siap untuk mengembalikan respons ke formulir.&lt;/p&gt;

&lt;p&gt;Klien akan mengirimkan header khusus yang memberi tahu klien jenis informasi apa yang diharapkan, diikuti oleh informasi itu sendiri. Server dapat mengirimkan header tambahan, tetapi ini bersifat opsional. Lihat gambar di bawah ini.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/oct-25/oct-25-68.jpg" target="_blank"&gt;
    &lt;img alt="Schema Lighttpd" class="artikel-img" src="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/oct-25/oct-25-68.jpg" title="Schema Lighttpd" /&gt;
    &lt;/a&gt;
    &lt;figcaption class="teks-gamabr"&gt;
     Diagram Reques dan Response antara Web Browser dan Web Server Lighttpd
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;CGI&lt;/code&gt; sering digunakan sebagai mekanisme untuk memperoleh informasi dari pengguna melalui pengisian formulir, akses ke basis data, atau pembuatan halaman dinamis. Meskipun pada prinsipnya mekanisme CGI tidak memiliki celah keamanan, program atau skrip yang dibuat sebagai CGI dapat memiliki celah keamanan atau tidak sengaja. Celah keamanan potensial yang dapat terjadi dengan CGI meliputi:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Pengguna yang nakal dapat memasang skrip CGI sehingga dapat mengirimkan berkas kata sandi kepada pengunjung yang menjalankan CGI.&lt;/li&gt;
  &lt;li&gt;Program CGI dipanggil berkali-kali sehingga server menjadi terbebani karena harus menjalankan beberapa program CGI yang menghabiskan memori dan siklus CPU dari server web.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="2-menginstal-perl-language"&gt;2. Menginstal Perl Language&lt;/h2&gt;

&lt;p&gt;Karena kita akan mengaktifkan &lt;code class="language-plaintext highlighter-rouge"&gt;mod CGI BIN&lt;/code&gt; pada Lighttpd, yang pertama harus anda lakukan adalah menginstal bahasa Perl terlebih dahulu. Server FreeBSD memiliki sistem paket binernya sendiri. Ini akan memudahkan Anda untuk menginstal dan mengelola perangkat lunak. Dengan sistem paket ini Anda juga dapat mengelola instalasi &lt;code class="language-plaintext highlighter-rouge"&gt;modul Perl&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Ketik perintah berikut untuk menginstal &lt;code class="language-plaintext highlighter-rouge"&gt;Perl5&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns5:~ # pkg install perl5.38-5.38.2_1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perintah di atas akan menginstal Perl5 di server FreeBSD Anda, dan jalur biner ke Perl adalah &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/bin/Perl&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Karena banyaknya versi Perl di repositori paket FreeBSD, Anda harus menentukan versi Perl di berkas &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/make.conf&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns5:~ # ee /etc/make.conf

DEFAULT_VERSIONS+=  perl5=5.30
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="3-mengaktifkan-mod-cgi-on-lighttpd"&gt;3. Mengaktifkan mod CGI on Lighttpd&lt;/h2&gt;

&lt;p&gt;Prinsip CGI dan cara menulis aplikasi CGI bukanlah fokus pembahasan ini. Namun, memahami konfigurasi CGI membantu memahami kode &lt;code class="language-plaintext highlighter-rouge"&gt;mod_cgi&lt;/code&gt; yang akan kita terapkan untuk mengonfigurasi lighttpd agar menjalankan proses CGI.&lt;/p&gt;

&lt;p&gt;Sebelum Anda melanjutkan pembahasan artikel ini, agar lebih mudah mengonfigurasi mod CGI pada Lighttpd, sebaiknya Anda membaca artikel kami sebelumnya.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://unixbsdshell.site/blog/2026/install-wordpress-dengan-web-server-lighttpd/"&gt;"Instalasi dan Konfigurasi FreeBSD Lighttpd Plus Mod OpenSSL"&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Sebelum mengaktifkan &lt;code class="language-plaintext highlighter-rouge"&gt;mod CGI&lt;/code&gt;, pertama-tama kita instal beberapa aplikasi PHP yang dibutuhkan Lighttpd untuk mengaktifkan mod CGI. Ketik perintah ini untuk menginstal dependensi mod CGI.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns5:~ # pkg install php82 mod_php82 php82-mysqli php82-xmlwriter
root@ns5:~ # pkg install php82-gd php82-phar php82-ctype php82-filter php82-iconv php82-curl php82-mysqli php82-pdo php82-tokenizer php82-mbstring php82-session php82-simplexml php82-xml php82-zlib php82-zip php82-dom php82-pdo_mysql php82-ctype
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Oke, sekarang mari kita lanjutkan dengan mengaktifkan mod CGI. Buka file &lt;code class="language-plaintext highlighter-rouge"&gt;"/usr/local/etc/lighttpd/modules.conf"&lt;/code&gt;, dan masukkan &lt;strong&gt;mod_cgi&lt;/strong&gt; di dalam file tersebut.&lt;/p&gt;

&lt;div class="language-text highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;server.modules = (
#  "mod_rewrite",
  "mod_access",
#  "mod_auth",
#  "mod_authn_file",
#  "mod_redirect",
#  "mod_setenv",
"mod_alias",
"mod_cgi",
"mod_fastcgi"
)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Sekarang modul CGI sudah aktif, kita akan menjalankan modul tersebut. Buka berkas &lt;code class="language-plaintext highlighter-rouge"&gt;"/usr/local/etc/lighttpd/conf.d/cgi.conf"&lt;/code&gt; dan hapus semua skrip di dalamnya, lalu ganti dengan skrip di bawah ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$HTTP&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"url"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ &lt;span class="s2"&gt;"/cgi-bin/"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
cgi.assign                 &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="s2"&gt;".pl"&lt;/span&gt;  &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"/usr/local/bin/perl"&lt;/span&gt;,
                               &lt;span class="s2"&gt;".cgi"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"/usr/local/bin/perl"&lt;/span&gt;,
                               &lt;span class="s2"&gt;".rb"&lt;/span&gt;  &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"/usr/bin/ruby"&lt;/span&gt;,
                               &lt;span class="s2"&gt;".erb"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"/usr/bin/eruby"&lt;/span&gt;,
                               &lt;span class="s2"&gt;".py"&lt;/span&gt;  &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"/usr/local/bin/python"&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Dokumen yang diakhiri dengan &lt;code class="language-plaintext highlighter-rouge"&gt;".pl", ".cgi", dan ".py"&lt;/code&gt; akan dianggap sebagai program CGI. Penerjemah untuk program ini akan segera diikuti. Langkah selanjutnya adalah memulai ulang Lighttpd.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns5:~ &lt;span class="c"&gt;# service lighttpd restart&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="4-menjalankan-lighttpd-mod_cgi"&gt;4. Menjalankan Lighttpd mod_cgi&lt;/h2&gt;

&lt;p&gt;Setelah Anda selesai mengonfigurasi semuanya, lakukan pengujian untuk melihat apakah konfigurasi di atas dapat berjalan di server web Lighttpd. Anda membuat folder &lt;code class="language-plaintext highlighter-rouge"&gt;"/usr/local/www/data/cgi-bin"&lt;/code&gt;, lalu membuat file &lt;code class="language-plaintext highlighter-rouge"&gt;"arrays.pl"&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns5:~ &lt;span class="c"&gt;# mkdir -p /usr/local/www/data/cgi-bin&lt;/span&gt;
root@ns5:~ &lt;span class="c"&gt;# cd /usr/local/www/data/cgi-bin&lt;/span&gt;
root@ns5:/usr/local/www/data/cgi-bin &lt;span class="c"&gt;# touch arrays.pl&lt;/span&gt;
root@ns5:/usr/local/www/data/cgi-bin &lt;span class="c"&gt;# chown -R www:www /usr/local/www/data/cgi-bin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada berkas &lt;code class="language-plaintext highlighter-rouge"&gt;"/usr/local/www/data/cgi-bin/arrays.pl&lt;/code&gt;, Anda masukkan skrip berikut ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/perl&lt;/span&gt;
use strict&lt;span class="p"&gt;;&lt;/span&gt;
use warnings&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# initializing arrays&lt;/span&gt;
my @places &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Bangalore'&lt;/span&gt;, &lt;span class="s1"&gt;'Chennai'&lt;/span&gt;, &lt;span class="s1"&gt;'Coimbatore'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
my @prime_numbers &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;2, 3, 5, 7&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
my @books&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$books&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;0] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Harry Potter'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$books&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;1] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Sherlock Holmes'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$books&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;2] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'To Kill a Mocking Bird'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
my @mixed_arr &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Hello'&lt;/span&gt;, 1, &lt;span class="s1"&gt;'q'&lt;/span&gt;, @places, &lt;span class="nv"&gt;$books&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;0]&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# ----- printing entire array -----&lt;/span&gt;
print &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\@&lt;/span&gt;&lt;span class="s2"&gt;places: @places&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\@&lt;/span&gt;&lt;span class="s2"&gt;prime_numbers: @prime_numbers&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\@&lt;/span&gt;&lt;span class="s2"&gt;mixed_arr: @mixed_arr&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c"&gt;# use join to connect array items with preferred characters&lt;/span&gt;
print &lt;span class="s2"&gt;"My favorite books: "&lt;/span&gt;.join&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;', '&lt;/span&gt;, @books&lt;span class="o"&gt;)&lt;/span&gt;.&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# ----- printing individual item -----&lt;/span&gt;
print &lt;span class="s2"&gt;"First item in &lt;/span&gt;&lt;span class="se"&gt;\@&lt;/span&gt;&lt;span class="s2"&gt;places: &lt;/span&gt;&lt;span class="nv"&gt;$places&lt;/span&gt;&lt;span class="s2"&gt;[0]&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"Last  item in &lt;/span&gt;&lt;span class="se"&gt;\@&lt;/span&gt;&lt;span class="s2"&gt;places: &lt;/span&gt;&lt;span class="nv"&gt;$places&lt;/span&gt;&lt;span class="s2"&gt;[-1]&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"Third last item in &lt;/span&gt;&lt;span class="se"&gt;\@&lt;/span&gt;&lt;span class="s2"&gt;mixed_arr: &lt;/span&gt;&lt;span class="nv"&gt;$mixed_arr&lt;/span&gt;&lt;span class="s2"&gt;[-3]&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# ----- printing array slice -----&lt;/span&gt;
print &lt;span class="s2"&gt;"2nd and 3rd item in &lt;/span&gt;&lt;span class="se"&gt;\@&lt;/span&gt;&lt;span class="s2"&gt;prime_numbers: @prime_numbers[1..2]&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# ----- array size -----&lt;/span&gt;
print &lt;span class="s2"&gt;"Index of last item in &lt;/span&gt;&lt;span class="se"&gt;\@&lt;/span&gt;&lt;span class="s2"&gt;places: &lt;/span&gt;&lt;span class="nv"&gt;$#places&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
my &lt;span class="nv"&gt;$arr_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; @places&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"Number of items in &lt;/span&gt;&lt;span class="se"&gt;\@&lt;/span&gt;&lt;span class="s2"&gt;places:    &lt;/span&gt;&lt;span class="nv"&gt;$arr_size&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# ----- manipulating array -----&lt;/span&gt;
&lt;span class="c"&gt;# Add an item, same as $places[$#places + 1]&lt;/span&gt;
&lt;span class="nv"&gt;$places&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;3] &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Salem"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"Manually add item: @places&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# Delete first item and shift left&lt;/span&gt;
&lt;span class="nb"&gt;shift&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;@places&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"shift:             @places&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c"&gt;# Delete last item&lt;/span&gt;
pop&lt;span class="o"&gt;(&lt;/span&gt;@places&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"pop:               @places&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# Add an item at end of array&lt;/span&gt;
push&lt;span class="o"&gt;(&lt;/span&gt;@places, &lt;span class="s2"&gt;"Mysore"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"push:              @places&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c"&gt;# Add an item at beginning of array&lt;/span&gt;
unshift&lt;span class="o"&gt;(&lt;/span&gt;@places, &lt;span class="s2"&gt;"Hyderabad"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"unshift:           @places&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;# change array size by assigning value to $#places&lt;/span&gt;
&lt;span class="c"&gt;# Change no. of items to 2&lt;/span&gt;
&lt;span class="nv"&gt;$#places&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 1&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\$&lt;/span&gt;&lt;span class="s2"&gt;#places = 1       @places&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c"&gt;# Change no. of items to 0&lt;/span&gt;
&lt;span class="nv"&gt;$#places&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\$&lt;/span&gt;&lt;span class="s2"&gt;#places = -1      @places&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Buka peramban web Google Chrome, ketik &lt;strong&gt;"http://192.168.5.2/cgi-bin/arrays.pl"&lt;/strong&gt;, hasilnya seperti yang ditunjukkan pada gambar di bawah ini.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/images/oct-25-69.jpg" target="_blank"&gt;
    &lt;img alt="Test Lighttpd" class="artikel-img" src="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/images/oct-25-69.jpg" title="Test Lighttpd" /&gt;
    &lt;/a&gt;
    &lt;figcaption class="teks-gamabr"&gt;
     Hasil Test Web Server Lighttpd dengan Mod Perl CGI BIN
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Kita lanjutkan dengan menguji file &lt;code class="language-plaintext highlighter-rouge"&gt;.cgi&lt;/code&gt;. Masih di folder &lt;code class="language-plaintext highlighter-rouge"&gt;"/usr/local/www/data/cgi-bin"&lt;/code&gt;, buat file dengan nama &lt;code class="language-plaintext highlighter-rouge"&gt;"cgiperl.cgi".&lt;/code&gt;&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns5:/usr/local/www/data/cgi-bin &lt;span class="c"&gt;# touch cgiperl.cgi&lt;/span&gt;
root@ns5:/usr/local/www/data/cgi-bin &lt;span class="c"&gt;# chown -R www:www cgiperl.cgi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Ketikkan skrip berikut ini kedalam file &lt;code class="language-plaintext highlighter-rouge"&gt;"/usr/local/www/data/cgi-bin/cgiperl.cgi"&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/local/bin/perl&lt;/span&gt;

print &lt;span class="s2"&gt;"Content-type: text/html&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
print &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;htmlcode&lt;/span&gt;&lt;span class="sh"&gt;;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;CGI Perl Example&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;CGI Perl Example&amp;lt;/h1&amp;gt;
&amp;lt;h3&amp;gt;&amp;lt;p&amp;gt;Congratulations on successfully configuring the Perl mod on Apache24!&amp;lt;/p&amp;gt;&amp;lt;h3&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Anda membuka Google Chrome lagi, ketik &lt;code class="language-plaintext highlighter-rouge"&gt;"http://192.168.5.2/cgi-bin/cgiperl.cgi"&lt;/code&gt;. Silakan lihat hasilnya.&lt;/p&gt;

&lt;p&gt;Mengonfigurasi skrip CGI pada server web Lighttpd merupakan proses yang relatif sederhana yang dapat dilakukan dengan mengikuti panduan yang terdapat dalam artikel ini. Mengaktifkan dukungan CGI, membuat skrip CGI, mengonfigurasi Lighttpd untuk mengenali skrip, dan menguji skrip merupakan langkah-langkah penting dalam mengonfigurasi skrip CGI di Lighttpd.&lt;/p&gt;

&lt;p&gt;Dengan langkah-langkah ini, Anda dapat membuat halaman web yang dinamis dan interaktif yang dapat digunakan untuk menyediakan informasi atau layanan kepada pengunjung situs web Anda.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2026/09/instalasi-lighttpd-cgi-bin-dengan-mod.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-1585709024943895913</guid><pubDate>Tue, 08 Sep 2026 06:27:00 +0000</pubDate><atom:updated>2026-11-06T16:49:00.107+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>Mengaktifkan MTA-STS Dengan NGINX Untuk Layanan Mail Server Postfix</title><description>&lt;p&gt;Selalu ada sesuatu yang dibutuhkan ketika datang ke jaringan rumah, tetapi ketika datang ke server yang menghadap publik, ada langkah-langkah tambahan yang harus dilalui. Kedengarannya sangat sulit mengerjakan jaringan pribadi agar bisa diakses secara publik. 
Namun, ketika anda menggunakan layanan Tunnel Broker IPv6 dari Hurricane Electric, semuanya bisa menjadi nyata. Semua layanan internet publik seperti DNS server, web server bahkan mail server bisa anda jalankan dari rumah.&lt;/p&gt;

&lt;p&gt;Tetapi server email yang saya jalankan untuk NMRC yang menjalankan Postfix diperlukan untuk mengimplementasikan &lt;a href="https://datatracker.ietf.org/doc/html/rfc8461"&gt;RFC-8461&lt;/a&gt; alias MTA-STS. 
Meskipun, MTA-STS tidak terlalu dibutuhkan oleh Postfix, tetapi saya ingin melakukannya, dan saya telah memutuskan untuk mendokumentasikan apa yang saya lakukan karena dokumentasi yang ada tampaknya tidak menjawab semua pertanyaan yang saya miliki.
Memang ini bukan dokumentasi lengkap itu sendiri, tetapi ini adalah langkah-langkah yang telah saya kerjakan.&lt;/p&gt;

&lt;p&gt;Pada artikel ini, kita akan melihat konfigurasi server email di bagian tentang kebijakan SMTP dari &lt;code class="language-plaintext highlighter-rouge"&gt;MTA Strict Transport Security (MTA-STS)&lt;/code&gt;. MTA-STS adalah standar yang dikembangkan untuk memungkinkan penggunaan TLS untuk koneksi antar server email. 
Penyedia layanan email utama, seperti Google, telah lama menggunakan kebijakan MTA-STS yang dijelaskan dalam RFC 8461.&lt;/p&gt;

&lt;p&gt;Server yang kami gunakan dalam penulisan artikel ini adalah sistem &lt;code class="language-plaintext highlighter-rouge"&gt;FreeBSD 14.5-PRERELEASE GENERIC amd64&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id="a-tentang-mta-sts"&gt;A. Tentang MTA-STS&lt;/h2&gt;

&lt;p&gt;MTA-STS (Mail Transfer Agent Strict Transport Security) adalah standar untuk meningkatkan SMTP (Protokol Transfer Surat Sederhana). Intinya, ini membantu menutup celah keamanan saat server email berbicara satu sama lain. Penyerang diberikan lubang yang sangat kecil, sehingga vektor serangan tidak mudah dieksploitasi.&lt;/p&gt;

&lt;p&gt;Server surat modern diatur untuk bertukar email melalui saluran terenkripsi untuk mencegah penyadapan dan dapat membaca email teks biasa saat transit melalui Internet. Server email saya mendengarkan koneksi masuk dari server email lain, dan dikonfigurasi sehingga salah satu hal pertama yang dikatakannya selama koneksi server ke server ini adalah ia ingin melanjutkan percakapan saat dienkripsi. 
Ini dilakukan dengan mengenkripsi kata kunci STARTTLS yang memberi tahu server lain untuk mulai menggunakan enkripsi TLS.
Pada dasarnya jenis enkripsi yang sama yang digunakan browser Anda untuk lalu lintas web.&lt;/p&gt;

&lt;p&gt;MTA-STS bekerja berdasarkan TOFU (Trust On First Use), artinya setelah kebijakan dibaca setidaknya satu kali, kebijakan tersebut akan di-cache oleh MTA untuk jangka waktu tertentu. 
Ini secara teknis berarti bahwa penyerang dapat mengalahkan MTA-STS dengan mencegah MTA korban membuat permintaan ke file kebijakan MTA-STS yang dihosting di domain penerima, namun dalam banyak kasus hal ini tidak menjadi perhatian yang berarti. 
Namun, mitigasi untuk ini adalah &lt;a href="https://www.jamieweb.net/blog/securing-inbound-email-transport-with-mta-sts-and-starttls-everywhere/#starttls-everywhere"&gt;STARTTLS-Everywhere&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ini mencegah penyerang meluncurkan serangan &lt;code class="language-plaintext highlighter-rouge"&gt;man-in-the-middle (MITM)&lt;/code&gt; yang cara kerjanya mencegah terjadinya bagian STARTTLS sehingga mereka dapat memaksa lalu lintas tidak terenkripsi yang dapat mereka susupi dengan mudah.&lt;/p&gt;

&lt;p&gt;Jadi mengapa melakukannya?, pertahanan secara mendalam. Jangan salah paham, ini tidak menyelesaikan seluruh masalah dengan cara apa pun, MTA-STS bukan satu-satunya opsi atau pilihan konfigurasi di server email.
Tetapi ini adalah salah satu dari sekian banyak mengamankan server email.&lt;/p&gt;

&lt;p&gt;Mengaktifkan fitur MTA-STS menambahkan sedikit bantuan keamanan untuk email masuk, seperti DMARC memungkinkan sedikit bantuan keamanan untuk email keluar. jadi bagi saya MTA-ST masuk akal dan layak untuk diaktifkan untuk layanan email anda.&lt;/p&gt;

&lt;h2 id="b-nama-domain-untuk-mta-sts"&gt;B. Nama Domain Untuk MTA-STS&lt;/h2&gt;

&lt;p&gt;Kita asumsikan anda telah memiliki nama domain yang dibeli dari penyedia hosting, sebut saja nama domain anda adalah &lt;code class="language-plaintext highlighter-rouge"&gt;example.com&lt;/code&gt;, yang akan dijadikan sebagai domain utama untuk server email.&lt;/p&gt;

&lt;p&gt;Setelah anda memiliki domain, anda harus membuat subdomain untuk server email dan MTA-STS.&lt;/p&gt;

&lt;div class="table-responsive"&gt;
        &lt;table class="table table-striped 
                    table-bordered table-hover"&gt;
            &lt;thead&gt;
                &lt;tr&gt;
                    &lt;th&gt;Subdomain&lt;/th&gt;
                    &lt;th&gt;Penggunaan&lt;/th&gt;
                    &lt;th&gt;Alamat IP&lt;/th&gt;
                &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
                &lt;tr&gt;
                    &lt;td&gt;mail.example.com&lt;/td&gt;
                    &lt;td&gt;Email Server&lt;/td&gt;
                    &lt;td&gt;2001:470:37:61c:4000::2035&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;mta-sts.example.com&lt;/td&gt;
                    &lt;td&gt;MTA-STS&lt;/td&gt;
                    &lt;td&gt;2001:470:37:61c:4000::2035&lt;/td&gt;
                &lt;/tr&gt;


            &lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/div&gt;

&lt;p&gt;Alamat IP yang digunakan adalah alamat yang sama dengan server email, karena mereka berada di host yang sama. Namun sangat disarankan, IP yang digunakan untuk &lt;code class="language-plaintext highlighter-rouge"&gt;server email dan MTA-STS harus beda&lt;/code&gt;. 
Kami menjalankan server email dan MTA-STA di host yang sama. Kami menggunakan IP publik IPv6 dari Hurricane Electric.
Agar lebih jelasnya perhatikan, konfigurasi server DNS yang saya gunakan.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;unixbsdshell.site. 		300	IN	MX	20	mail.unixbsdshell.site.
mail.unixbsdshell.site.		300	IN	AAAA		2001:470:36:61c:4000::2000
mta-sts.unixbsdshell.site.	300	IN	CNAME		mail.unixbsdshell.site.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada konfigurasi server DNS yang saya gunakan, saya menggunakan &lt;code class="language-plaintext highlighter-rouge"&gt;CNAME&lt;/code&gt; untuk host MTA-STS. Jadi alamat IP untuk &lt;code class="language-plaintext highlighter-rouge"&gt;mail.unixbsdshell.site dan mta-sts.unixbsdshell.site&lt;/code&gt; adalah sama yaitu &lt;code class="language-plaintext highlighter-rouge"&gt;2001:470:36:61c:4000::2000&lt;/code&gt;.
Cara kerjanya untuk server email ditanggapi oleh sub domain &lt;code class="language-plaintext highlighter-rouge"&gt;mail.unixbsdshell.site&lt;/code&gt;, sedangkan untuk email masuk akan dienkripsi oleh host &lt;code class="language-plaintext highlighter-rouge"&gt;mta-sts.unixbsdshell.site&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Selain itu, anda juga harus mengatur zona TXT pada server DNS, seperti contoh di bawah ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;_mta-sts.unixbsdshell.site.		300	IN	TXT	&lt;span class="s2"&gt;"v=STSv1; id=20260626T144527"&lt;/span&gt;
_smtp._tls.unixbsdshell.site.		300	IN	TXT 	&lt;span class="s2"&gt;"v=TLSRPTv1; rua=mailto:support@unixbsdshell.site"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Anda tidak perlu menentukan URL atau jalur ke file mta-sts.txt dalam catatan DNS, karena jalur tersebut akan dikerjakan oleh server NGINX nanti.&lt;/p&gt;

&lt;p&gt;Setelah Anda meng-host file kebijakan Anda dan mengatur catatan DNS yang diperlukan, MTA-STS akan diaktifkan untuk domain Anda. Anda dapat menggunakan &lt;a href="https://aykevl.nl/apps/mta-sts/"&gt;validator MTA-STS&lt;/a&gt; untuk memverifikasi konfigurasi Anda.&lt;/p&gt;

&lt;p&gt;MTA-STS secara langsung dilengkapi dengan TLSRPT atau SMTP TLS Reporting yang diatur di &lt;a href="https://tools.ietf.org/html/rfc8460"&gt;RFC8460&lt;/a&gt;, yang merupakan mekanisme pelaporan yang memungkinkan Anda mengumpulkan informasi tentang apakah email berhasil dikirim melalui TLS, serta kesalahan apa pun yang mungkin terjadi, misalnya sertifikat kedaluwarsa.&lt;/p&gt;

&lt;p&gt;TLSRPT bekerja dengan cara yang sangat mirip dengan pelaporan DMARC. Anda menentukan titik akhir pelaporan (URL atau alamat email) melalui catatan DNS, yang kemudian menyebabkan penyedia layanan email mengirimi Anda laporan harian dalam format JSON.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/JIbt0wunTqM" width="320" youtube-src-id="JIbt0wunTqM"&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Sebelum kita lanjutkan ke topik berikutnya, jangan lupa mengubah nama hostname pada server FreeBSD anda. Pada file &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/hosts&lt;/code&gt; ketikkan skrip berikut ini.&lt;/p&gt;

&lt;div class="language-text highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;2001:470:36:61c:4000::2000	mail.unixbsdshell.site		mail
::1				localhost.unixbsdshell.site	localhost
127.0.0.1			localhost.unixbsdshell.site	localhost
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="c-mengaktifkan-mta-sts-untuk-email-masuk-dengan-nginx"&gt;C. Mengaktifkan MTA-STS untuk Email Masuk Dengan NGINX&lt;/h2&gt;

&lt;p&gt;Untuk mengaktifkan MTA-STS untuk email masuk, Anda harus terlebih dahulu membuat dan meng-host file kebijakan. File kebijakan MTA-STS adalah file teks biasa yang harus dapat diakses melalui HTTPS di jalur /.well-known/mta-sts.txtfile di mta-stssubdomain. Misalnya, jalur file kebijakan MTA-STS yang valid adalah https://mta-sts.example.com/.well-known/mta-sts.txt.&lt;/p&gt;

&lt;p&gt;Dalam artikel ini kami tak akan membahas cara mengkonfigurasi NGINX, kita langsung saja ke pengaturan MTA-STS. 
Pada contoh ini file root dari server NGINX kami letakkan di folder &lt;code class="language-plaintext highlighter-rouge"&gt;/var/www/html/unixbsdshell/_site&lt;/code&gt;.
Pada folder tersebut anda buat folder baru bernama &lt;code class="language-plaintext highlighter-rouge"&gt;.well-known&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@mail:~ &lt;span class="c"&gt;# mkdir -p /var/www/html/unixbsdshell/_site/.well-known&lt;/span&gt;
root@mail:~ &lt;span class="c"&gt;# cd /var/www/html/unixbsdshell/_site/.well-known&lt;/span&gt;
root@mail:/var/www/html/unixbsdshell/_site/.well-known &lt;span class="c"&gt;# touch mta-sts.txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perintah di atas adalah untuk membuat folder &lt;code class="language-plaintext highlighter-rouge"&gt;.well-known&lt;/code&gt; dan membuat file &lt;code class="language-plaintext highlighter-rouge"&gt;mta-sts.txt&lt;/code&gt; di folder &lt;code class="language-plaintext highlighter-rouge"&gt;/var/www/html/unixbsdshell/_site/.well-known&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;setelah itu pada file &lt;code class="language-plaintext highlighter-rouge"&gt;/var/www/html/unixbsdshell/_site/.well-known/mta-sts.txt&lt;/code&gt;, anda ketikkan skrip berikut ini.&lt;/p&gt;

&lt;div class="language-text highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;version: STSv1
mode: enforce
mx: mail.unixbsdshell.site
mx: mailhost.unixbsdshell.site
max_age: 604800
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Langkah berikutnya setelah anda selesai membuat file &lt;code class="language-plaintext highlighter-rouge"&gt;mta-sts.txt&lt;/code&gt;, mengubah file konfigurasi NGINX. Pada contoh ini file konfigurasi NGINX tersimpan di folder &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc/nginx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Pada folder &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc/nginx&lt;/code&gt; buka file &lt;code class="language-plaintext highlighter-rouge"&gt;nginx.conf&lt;/code&gt;. Achh..!!! biar jelas saya berikan skrip lengkapnya saja. Di bawah ini adalah contoh skrip lengkap
dari file &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc/nginx/nginx.conf&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;#user  nginx;&lt;/span&gt;
worker_processes auto&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;#error_log  logs/error.log;&lt;/span&gt;
&lt;span class="c"&gt;#error_log  logs/error.log  notice;&lt;/span&gt;
&lt;span class="c"&gt;#error_log  logs/error.log  info;&lt;/span&gt;

pid        /var/run/nginx.pid&lt;span class="p"&gt;;&lt;/span&gt;

events &lt;span class="o"&gt;{&lt;/span&gt;
    worker_connections  1024&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
 
http &lt;span class="o"&gt;{&lt;/span&gt;
    include       mime.types&lt;span class="p"&gt;;&lt;/span&gt;
    default_type  application/octet-stream&lt;span class="p"&gt;;&lt;/span&gt;
log_format main &lt;span class="s1"&gt;'$remote_addr - $remote_user [$time_local] "$request" '&lt;/span&gt;
			&lt;span class="s1"&gt;'$status $body_bytes_sent "$http_referer" '&lt;/span&gt;
			&lt;span class="s1"&gt;'$ssl_protocol $ssl_curve $ssl_cipher'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

access_log  /var/log/nginx/access.log  main&lt;span class="p"&gt;;&lt;/span&gt;
error_log  /var/log/nginx/error.log&lt;span class="p"&gt;;&lt;/span&gt;
	sendfile on&lt;span class="p"&gt;;&lt;/span&gt;
	tcp_nopush on&lt;span class="p"&gt;;&lt;/span&gt;
	types_hash_max_size 2048&lt;span class="p"&gt;;&lt;/span&gt;
	tcp_nodelay on&lt;span class="p"&gt;;&lt;/span&gt;
	keepalive_timeout 65&lt;span class="p"&gt;;&lt;/span&gt;
	underscores_in_headers on&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="c"&gt;# server_tokens off;&lt;/span&gt;

	&lt;span class="nb"&gt;gzip &lt;/span&gt;on&lt;span class="p"&gt;;&lt;/span&gt;
	gzip_vary on&lt;span class="p"&gt;;&lt;/span&gt;
	gzip_proxied any&lt;span class="p"&gt;;&lt;/span&gt;
	gzip_comp_level 6&lt;span class="p"&gt;;&lt;/span&gt;
	gzip_buffers 16 8k&lt;span class="p"&gt;;&lt;/span&gt;
	gzip_http_version 1.1&lt;span class="p"&gt;;&lt;/span&gt;
	gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript&lt;span class="p"&gt;;&lt;/span&gt;

	ssl_protocols TLSv1.3 TLSv1.2&lt;span class="p"&gt;;&lt;/span&gt;
	ssl_stapling_verify on&lt;span class="p"&gt;;&lt;/span&gt;
	ssl_prefer_server_ciphers on&lt;span class="p"&gt;;&lt;/span&gt;

    server &lt;span class="o"&gt;{&lt;/span&gt;
        listen       80&lt;span class="p"&gt;;&lt;/span&gt;
	server_name mta-sts.unixbsdshell.site&lt;span class="p"&gt;;&lt;/span&gt;
	&lt;span class="k"&gt;return &lt;/span&gt;301 https://mta-sts.unixbsdshell.site&lt;span class="nv"&gt;$request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        location / &lt;span class="o"&gt;{&lt;/span&gt;
           root   /var/www/html/unixbsdshell/_site&lt;span class="p"&gt;;&lt;/span&gt;
            index  index.html index.htm&lt;span class="p"&gt;;&lt;/span&gt;     &lt;span class="o"&gt;}&lt;/span&gt;
        error_page   500 502 503 504  /50x.html&lt;span class="p"&gt;;&lt;/span&gt;
        location &lt;span class="o"&gt;=&lt;/span&gt; /50x.html &lt;span class="o"&gt;{&lt;/span&gt;
            root   /var/www/html/unixbsdshell/_site&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt; 
            &lt;span class="o"&gt;}&lt;/span&gt;
server &lt;span class="o"&gt;{&lt;/span&gt;
listen 443 ssl&lt;span class="p"&gt;;&lt;/span&gt;
listen &lt;span class="o"&gt;[&lt;/span&gt;2001:470:36:61c:4000::2000]:443 ssl&lt;span class="p"&gt;;&lt;/span&gt;
	server_name mta-sts.unixbsdshell.site&lt;span class="p"&gt;;&lt;/span&gt;
	index index.html index.htm index.nginx-debian.html&lt;span class="p"&gt;;&lt;/span&gt;

location &lt;span class="o"&gt;=&lt;/span&gt; /.well-known/mta-sts.txt &lt;span class="o"&gt;{&lt;/span&gt;
    root /var/www/html/unixbsdshell/_site&lt;span class="p"&gt;;&lt;/span&gt;
    default_type text/plain&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

        http2 on&lt;span class="p"&gt;;&lt;/span&gt;
	add_header Alt-Svc &lt;span class="s1"&gt;'h3=":443";ma=86400, quic=":443";ma=86400'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        add_header Alt-Svc &lt;span class="s1"&gt;'h2=":443";ma=86400;persist=1'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        add_header Alt-Svc &lt;span class="s1"&gt;'h2=":443";ma=86400'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;        
        ssl_early_data on&lt;span class="p"&gt;;&lt;/span&gt;

ssl_protocols TLSv1.3 TLSv1.2&lt;span class="p"&gt;;&lt;/span&gt;
ssl_session_cache    shared:SSL:1m&lt;span class="p"&gt;;&lt;/span&gt;
ssl_session_timeout  1m&lt;span class="p"&gt;;&lt;/span&gt;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305&lt;span class="p"&gt;;&lt;/span&gt;
ssl_prefer_server_ciphers on&lt;span class="p"&gt;;&lt;/span&gt;
ssl_conf_command Options PrioritizeChaCha&lt;span class="p"&gt;;&lt;/span&gt;	
	location ~&lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="se"&gt;\.&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;jpg|jpeg|png|gif|ico|css|js|ttf&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
		access_log off&lt;span class="p"&gt;;&lt;/span&gt;
		expires 7d&lt;span class="p"&gt;;&lt;/span&gt;
		tcp_nodelay off&lt;span class="p"&gt;;&lt;/span&gt;
            	open_file_cache &lt;span class="nv"&gt;max&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1000 &lt;span class="nv"&gt;inactive&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;120s&lt;span class="p"&gt;;&lt;/span&gt;
            	open_file_cache_valid 45s&lt;span class="p"&gt;;&lt;/span&gt;
            	open_file_cache_min_uses 2&lt;span class="p"&gt;;&lt;/span&gt;
            	open_file_cache_errors off&lt;span class="p"&gt;;&lt;/span&gt;
		add_header Cache-Control &lt;span class="s2"&gt;"public, no-transform"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
		add_header Vary &lt;span class="s2"&gt;"Accept-Encoding"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;

        ssl_certificate /usr/local/etc/letsencrypt/live/unixbsdshell.site/fullchain.pem&lt;span class="p"&gt;;&lt;/span&gt;
        ssl_certificate_key /usr/local/etc/letsencrypt/live/unixbsdshell.site/privkey.pem&lt;span class="p"&gt;;&lt;/span&gt;
        ssl_dhparam /usr/local/etc/letsencrypt/live/unixbsdshell.site/dhparams.pem&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

add_header Strict-Transport-Security &lt;span class="s2"&gt;"max-age=31536000; includeSubDomains; preload"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
add_header X-Frame-Options &lt;span class="s2"&gt;"SAMEORIGIN"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
add_header X-Xss-Protection &lt;span class="s2"&gt;"1; mode=block"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
add_header X-Content-Type-Options &lt;span class="s2"&gt;"nosniff"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
add_header Referrer-Policy &lt;span class="s2"&gt;"no-referrer-when-downgrade"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
add_header Content-Security-Policy &lt;span class="s2"&gt;"upgrade-insecure-requests; style-src https://unixbsdshell.site https://unixbsdshell.site https://*.googleapis.com 'unsafe-inline'; frame-ancestors 'self';"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

add_header Permissions-Policy &lt;span class="s2"&gt;"fullscreen=(self)"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
add_header X-Frog-Unsafe &lt;span class="s2"&gt;"0"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
add_header X-HTTPS-Protocol &lt;span class="nv"&gt;$ssl_protocol&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
add_header X-HTTPS-Cipher &lt;span class="nv"&gt;$ssl_cipher&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
add_header X-HTTPS-Curve &lt;span class="nv"&gt;$ssl_curve&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Skrip di atas, adalah skrip yang saya gunakan, anda dapat menyesuaikannya sesuai kebutuhan dan spesifikasi server yang digunakan.&lt;/p&gt;

&lt;h2 id="d-menguji-mta-sts"&gt;D. Menguji MTA-STS&lt;/h2&gt;

&lt;p&gt;Langkah ini adalah langkah yang sangat menentukan, mungkin anda telah lelah mengutak-atik skrip di atas. Namun demikian hasil kerja anda belum tentu membuahkan hasil. Agar hasil kerja anda dianggap selesai dan dapat digunakan, lakukan pengujian pada server MTA-STS.&lt;/p&gt;

&lt;p&gt;Cara melakukan pengujiannya sangat sederhana, caranya adalah buka web browser Google Chrome atau lainnya dan ketikkan alamat server MTA-STS anda.&lt;/p&gt;

&lt;p&gt;Contoh dalam artikel ini adalah &lt;code class="language-plaintext highlighter-rouge"&gt;https://mta-sts.unixbsdshell.site/.well-known/mta-sts.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Lihat hasilnya, kurang lebih jika tak ada konfigurasi yang salah layar monitor anda akan menampilkan seperti gambar di bawah ini.&lt;/p&gt;

&lt;figure class="figure w-100"&gt;
    &lt;a target="_blank" href="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/mei-26/2026-09-08_09-54-04.png"&gt;
    &lt;img src="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/mei-26/2026-09-08_09-54-04.png" class="img-fluid border" alt="server mta-sts dengan nginx" /&gt;
    &lt;/a&gt;
    &lt;figcaption class="figure-caption text-center"&gt;
     Melakukan pengujian server MTA-STS dengan Menjalankan Google Chrome
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;MTA-STS diperlukan untuk organisasi yang memprioritaskan keamanan dan kepatuhan email. Ini membantu mencegah serangan dunia maya dengan memastikan pesan hanya dikirimkan melalui saluran terenkripsi.&lt;/p&gt;

&lt;p&gt;Sedangkan catatan _mta-sts DNS digunakan untuk memberi sinyal bahwa domain Anda mendukung MTA-STS dan untuk menerbitkan id nilai yang menunjukkan versi kebijakan saat ini.&lt;/p&gt;

&lt;p&gt;Saya berharap adopsi MTA-STS dan pemanfaatan daftar kebijakan STARTTLS-Everywhere akan terus meningkat, namun dukungan untuk keduanya saat ini sangat terbatas, terutama dalam sistem/layanan email berpemilik yang digunakan oleh banyak perusahaan besar dan pemerintah.&lt;/p&gt;

&lt;script type="application/ld+json"&gt;

{      
"@context": "https://schema.org",
"@type": "VideoObject",
"@id": "https://www.youtube.com/@unixbsdshell",
"url": "https://unixbsdshell.site/blog/2026/aktifkan-mta-sts-dengan-nginx-mail-server-postfix/",
"name": "MTA STS Untuk Postfix Dengan NGINX di Server FreeBSD",
"description": "Pada video ini, kita akan melihat konfigurasi server email di bagian tentang kebijakan SMTP dari MTA Strict Transport Security (MTA-STS). MTA-STS adalah standar yang dikembangkan untuk memungkinkan penggunaan TLS untuk koneksi antar server email. Penyedia layanan email utama, seperti Google, telah lama menggunakan kebijakan MTA-STS yang dijelaskan dalam RFC 8461.",
"caption": "MTA STS Untuk Postfix Dengan NGINX di Server FreeBSD",
"uploadDate": "2026-09-08 11:47:21 AM GMT0+700",
"duration": "PT4M23S",
"contentUrl": "https://youtu.be/JIbt0wunTqM",
"thumbnailUrl": "https://i9.ytimg.com/vi_webp/JIbt0wunTqM/mqdefault.webp?v=6a9f9299&amp;sqp=CLzU_tQG&amp;rs=AOn4CLDpUf94-nksak6gy9ek3u8ltrziiw",
"thumbnail": "https://i9.ytimg.com/vi_webp/JIbt0wunTqM/mqdefault.webp?v=6a9f9299&amp;sqp=CLzU_tQG&amp;rs=AOn4CLDpUf94-nksak6gy9ek3u8ltrziiw",
"embedUrl": "https://www.youtube.com/embed/JIbt0wunTqM",
"datePublished": "2026-09-08 11:47:21 AM GMT0+700",
"keywords": "postfix, mta-sts, mta, nginx, email, mail server, sendmail, debian, ubuntu, freebsd, hosting, cloud, private, relay",

"image": {
"@type": "ImageObject",
"caption": ["freebsd"],
"name": "Mengaktifkan MTA-STS Dengan NGINX Untuk Layanan Mail Server Postfix",
"description": "Pada artikel ini, kita akan melihat konfigurasi server email di bagian tentang kebijakan SMTP dari MTA Strict Transport Security (MTA-STS). MTA-STS adalah standar yang dikembangkan untuk memungkinkan penggunaan TLS untuk koneksi antar server email",
"height": 630,
"width": 1200,
"url": "https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/mei-26/2026-09-08_09-54-04.png"
},

"regionsAllowed": {
"@type": "Place",
"name": "ID"
                 },
"publisher": {
"@type": "Organization",
"@id": "https://unixbsdshell.site/#organization",
"name": "WARNET DAPURNET",
"url": "https://share.google/1Qjq0V6RK7Vq3vUze",
"email": "postmaster@unixbsdshell.site",
"identifier": "https://maps.app.goo.gl/CyA3mHMjaXmJQkAG6",
"logo": "https://unixbsdshell.site/img/Logo.png",
  "sameAs" : [
    "https://www.linkedin.com/in/iwan-setiawan-943659164",
    "https://www.youtube.com/@unixbsdshell",
    "https://www.facebook.com/winunixbsd/",
    "https://github.com/unixwinbsd",
    "https://profile.hatena.ne.jp/iwanse1212/profile",
    "https://www.instagram.com/winunixbsd/",
    "https://x.com/iwanset96143401"
  ]
                       },

"director": {
"@type": "Person",
"name": "Iwan Setiawan",
"url": "https://www.blogger.com/profile/08958087252392329520",
"email": "postmaster@unixbsdshell.site",
"identifier": "UNIXBSDSHELL"
                       },
"locationCreated": {
"@type": "Place",
"name": "WARNET DAPURNET",
"address": "Jl. Raya Imam Bonjol  No.86, Kp. Warung bongkok RT.002/RW.01, Telagamurni, Cikarang Barat, Bekasi Regency, West Java 17841",
"url": "https://maps.app.goo.gl/6NsdhaFNGoKWjdmRA",
"photo": "https://maps.app.goo.gl/5e3jR7dbtUypBe2Q8",
"sameAs": "https://maps.app.goo.gl/rSeYom2LbfBQ43E66",
"hasMap": "https://www.google.com/maps/place/WARNET+DAPURNET/@-6.2708061,107.1127987,17z/data=!3m1!4b1!4m6!3m5!1s0x2e69854270602ca7:0x71e63dfb53b7b95!8m2!3d-6.2708061!4d107.1127987!16s%2Fg%2F11fx88pw2p?entry=ttu"
},  

"interactionStatistic": [
    {
      "@type": "InteractionCounter",
      "interactionService": {
        "@type": "WebSite",
        "name": "YouTube",
        "@id": "https://www.youtube.com/@unixbsdshell"
      },
      "interactionType": "https://schema.org/LikeAction",
      "userInteractionCount": "512"
    },
   
    {
      "@type": "InteractionCounter",
      "interactionService": {
        "@type": "WebSite",
        "name": "Facebook",
        "url": "https://www.facebook.com"
      },
      "interactionType": "https://schema.org/LikeAction",
      "userInteractionCount": "1024"
    },
    {
      "@type": "InteractionCounter",
      "interactionType": "https://schema.org/WatchAction",
      "userInteractionCount": "4356"
    }
  ]
}



&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2026/09/mengaktifkan-mta-sts-dengan-nginx-untuk.html</link><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/JIbt0wunTqM/default.jpg" width="72"/><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-5935194235563554941</guid><pubDate>Thu, 03 Sep 2026 06:28:00 +0000</pubDate><atom:updated>2026-11-02T13:31:55.698+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><title>Cara Install DNS Bind9 Dengan Source Code di Debian dan Ubuntu</title><description>&lt;p&gt;Mari kita mulai dengan penjelasan tentang kode sumber. Seseorang tidak dapat memahami open source tanpa terlebih dahulu memahami kode sumber/source code.
Kode Sumber adalah kumpulan instruksi yang dapat dibaca manusia yang ditulis dalam Bahasa Pemrograman yang mendefinisikan bagaimana suatu program atau aplikasi harus berfungsi.&lt;/p&gt;

&lt;p&gt;Kode Sumber penting untuk modifikasi, debugging, dan pemahaman cara kerja suatu program. Ini memungkinkan Pengembang untuk membuat perubahan dan memperbaiki 
kesalahan dan sangat penting untuk peningkatan perangkat lunak.&lt;/p&gt;

&lt;p&gt;Untuk menjalankan program ini, program tersebut harus dikompilasi ke dalam kode mesin menggunakan 
program yang disebut compiler.&lt;/p&gt;

&lt;h2 id="a-tentang-kompilasi"&gt;A. Tentang Kompilasi&lt;/h2&gt;

&lt;p&gt;Kompilasi mengubah bahasa tingkat tinggi menjadi bahasa tingkat rendah seperti kode mesin atau kode byte. Dekompilasi adalah kebalikannya. Proses rekayasa balik program dari kode binernya menjadi kode sumber disebut penguraian, dan tingkat kesulitan penguraian suatu program agak berbeda secara signifikan menurut bahasa pemrograman kode sumbernya.&lt;/p&gt;

&lt;p&gt;Kode C sangat sulit untuk didekompilasi, sementara Java jauh lebih mudah, sebagian karena pengoptimalan kompiler yang jauh lebih sedikit dan sebagian karena metadata, termasuk detail seperti tipe data dan nama metode, tetap utuh selama kompilasi.&lt;/p&gt;

&lt;p&gt;Tantangan dekompilasi dan potensi risiko keamanan yang melekat pada program yang merupakan sumber tertutup mendorong Direktorat Riset Badan Keamanan Nasional AS (NSA) untuk mengembangkan rangkaian alat rekayasa balik dan dekompilasi sumber terbuka yang disebut Ghidra. Bahwa karya ini dikembangkan oleh salah satu agensi keamanan siber terkemuka di dunia dan bahwa mereka merilis dan memeliharanya sebagai perangkat lunak sumber terbuka merupakan kesaksian yang sangat kuat terhadap potensi masalah keamanan yang melekat pada perangkat lunak sumber tertutup dan potensi manfaat keamanan dari perangkat lunak sumber terbuka.&lt;/p&gt;

&lt;p&gt;Anda juga tidak bisa memilih setiap bahasa pemrograman menentukan apakah kompiler atau interpreter digunakan dalam kombinasi dengannya. Saat ini, solusi perantara semakin sering digunakan-Kompilasi tepat waktu (JIT). Jenis terjemahan ini mencoba menggabungkan keunggulan kedua varian (analisis cepat dan eksekusi cepat) dan digunakan di browser, misalnya, untuk menangani JavaScript, PHP, atau Java secara lebih efektif.&lt;/p&gt;

&lt;h2 id="b-kita-mulai-dari-nol"&gt;B. Kita Mulai Dari NOL&lt;/h2&gt;

&lt;p&gt;Kenapa harus dimulai dari NOL, hal ini untuk mempermudah proses pemahaman pembaca. Kita asumsikan server Debian 13 Trixie kita install ulang.
Kita anggap saja, anda telah selesai menginstal ulang Debian di komputer anda, dan memulai menginstal aplikasi.&lt;/p&gt;

&lt;p&gt;Aplikasi pertama yang akan akan anda install, diantaranya adalah DNS server. Dan anda memutuskan untuk menggunakan Bind9 sebagai
caching DNS nya. Baiklah, kita langsung mulai kerjakan prosesnya.&lt;/p&gt;

&lt;h3 id="b1-update-dan-upgrade-paket-apt"&gt;b.1. Update dan Upgrade Paket APT&lt;/h3&gt;

&lt;p&gt;Langkah awal setelah anda mengaktifkan OpenSSH, untuk memudahkan pekerjaan dengan meremotenya ke komputer Windows.
Yang pertama harus dikerjakan adalah mengupdate paket &lt;code class="language-plaintext highlighter-rouge"&gt;APT&lt;/code&gt;, dengan perintah berikut ini.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Update/Upgrade paket apt&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;&lt;span style="color: #3a3a3a;"&gt;root@ns1:~# &lt;/span&gt;&lt;span style="color: red;"&gt;apt-get update -y&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
root@ns1:~# &lt;/span&gt;&lt;span style="color: red;"&gt;apt-get upgrade -y&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Setelah itu anda install &lt;code class="language-plaintext highlighter-rouge"&gt;build-essential&lt;/code&gt;, karena didalam aplikasi tersebut sudah termasuk kompiler GCC yang sangat berguna
untuk mengkompilasi DNS Bind9.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Install build-essential&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;&lt;span style="color: #3a3a3a;"&gt;root@ns1:~# &lt;/span&gt;&lt;span style="color: red;"&gt;apt-get install build-essential -y&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3 id="b2-unduh-file-master-bind9-dari-situs-isc"&gt;b.2. Unduh File Master Bind9 dari Situs ISC&lt;/h3&gt;

&lt;p&gt;Karena untuk mengkompilasi Bind9 anda memerlukan file master, jadi sebelum mulai kompilasi, unduh terlebih dahulu file master tersebut.
Ada banyak sekali situs web yang menyediakan file master Bind9, Github salah satunya. Pada artikel ini anda akan mengunduh file
master tersebut langsung dari situs resminya, yaitu ISC.&lt;/p&gt;

&lt;p&gt;Pada Google Chrome ketikkan &lt;code class="language-plaintext highlighter-rouge"&gt;"https://ftp.isc.org"&lt;/code&gt;, kemudian anda pilih folder &lt;code class="language-plaintext highlighter-rouge"&gt;isc&lt;/code&gt;, lanjutkan dengan mengklik folder &lt;code class="language-plaintext highlighter-rouge"&gt;bind9&lt;/code&gt;.
Pada halaman ini seluruh versi DNS Bind akan ditampilkan, anda pilih saja versi &lt;code class="language-plaintext highlighter-rouge"&gt;9.20.27/&lt;/code&gt;, versi terbaru saat ini.&lt;/p&gt;

&lt;p&gt;Untuk mulai mengunduh, langsung saja klik file &lt;code class="language-plaintext highlighter-rouge"&gt;bind-9.20.27.tar.xz&lt;/code&gt;.&lt;/p&gt;

&lt;figure class="figure w-100"&gt;
    &lt;a target="_blank" href="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/daftar_seluruh_versi_bind.jpg"&gt;
    &lt;img src="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/daftar_seluruh_versi_bind.jpg" class="img-fluid border" alt="Daftar seluruh versi bind" /&gt;
    &lt;/a&gt;
    &lt;figcaption class="figure-caption text-center"&gt;
        Mengunduh DNS Bind Dari Situs Resmi
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Lebih praktis, gunakan saja perintah wget. Biar bisa langsung di ekstark dari server Debian.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Unduh file master Bind&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;&lt;span style="color: #3a3a3a;"&gt;root@ns1:~# &lt;/span&gt;&lt;span style="color: red;"&gt;cd /home&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
root@ns1:/home# &lt;/span&gt;&lt;span style="color: red;"&gt;wget https://ftp.isc.org/isc/bind9/9.20.27/bind-9.20.27.tar.xz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h2 id="instal-bind-dengan-source-code"&gt;Instal Bind Dengan Source Code&lt;/h2&gt;

&lt;p&gt;Untuk dapat mengkompilasi DNS Bind dengan source code, langkah pertama yang harus anda lakukan adalah memiliki file master bind9 tersebut.
File master bind9 danapat anda unduh pada sebsit resmi ISC. Sebelum Anda dapat melakukan kompilasi dan membangun semuanya, Anda memerlukan kompiler C. Hampir setiap versi Linux menyertakan gcc kompiler C dari GNU yang dapat digunakan dengan baik.&lt;/p&gt;

&lt;p&gt;Dalam hal ini anda telah menginstal GCC yang terapat dalam paket &lt;code class="language-plaintext highlighter-rouge"&gt;build-essential&lt;/code&gt; yang telah anda install pada bagian atas. Jadi,
kita lanjutkan saja dengan mengekstrak file &lt;code class="language-plaintext highlighter-rouge"&gt;bind-9.20.27.tar.xz&lt;/code&gt;.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Ekstrak file bind-9.20.27.tar.xz&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="color: #3a3a3a; font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;root@doh:/home# tar -xvf bind-9.20.27.tar.xz&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Folder baru &lt;code class="language-plaintext highlighter-rouge"&gt;bind-9.20.27&lt;/code&gt; akan muncul di folder &lt;code class="language-plaintext highlighter-rouge"&gt;/home&lt;/code&gt;. Setelah itu anda bisa langsung mengkompilasi/menginstal.
Tapi sebelumnya, jalankan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;./configure --help&lt;/code&gt;, untuk melihat opsi atau flags apa saja yang ada untuk digunakan selama proses kompilasi.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Tampilan opsi/flags kompilasi&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span style="font-size: 14.4px;"&gt;&lt;span style="color: #3a3a3a;"&gt;root@doh:/home# &lt;/span&gt;&lt;span style="color: red;"&gt;cd bind-9.20.27&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
root@doh:/home/bind-9.20.27# &lt;/span&gt;&lt;span style="color: red;"&gt;./configure --help&lt;/span&gt;&lt;span style="color: #3a3a3a;"&gt;
&lt;/span&gt;&lt;span style="color: #ffa400;"&gt;'configure' configures BIND 9.20.27 to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print 'checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for '--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or '..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, 'make install' will install all the files in
'/usr/local/bin', '/usr/local/lib' etc.  You can specify
an installation prefix other than '/usr/local' using '--prefix',
for instance '--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/bind]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]

Program names:
  --program-prefix=PREFIX            prepend PREFIX to installed program names
  --program-suffix=SUFFIX            append SUFFIX to installed program names
  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
  --target=TARGET   configure for building compilers for TARGET [HOST]

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-silent-rules   less verbose build output (undo: "make V=1")
  --disable-silent-rules  verbose build output (undo: "make V=0")
  --disable-maintainer-mode
                          disable make rules and dependencies not useful (and
                          sometimes confusing) to the casual installer
  --enable-dependency-tracking
                          do not reject slow dependency extractors
  --disable-dependency-tracking
                          speeds up one-time build
  --disable-largefile     omit support for large files
  --enable-static[=PKGS]  build static libraries [default=no]
  --enable-pic[=PKGS]     try to use only PIC/non-PIC objects [default=use
                          both]
  --enable-shared[=PKGS]  build shared libraries [default=yes]
  --enable-fast-install[=PKGS]
                          optimize for fast installation [default=yes]
  --enable-aix-soname=aix|svr4|both
                          shared library versioning (aka "SONAME") variant to
                          provide on AIX, [default=aix].
  --disable-libtool-lock  avoid locking (might break parallel builds)
  --enable-developer      enable developer build settings
  --enable-warn-error     turn on -Werror when compiling
  --enable-fuzzing=&amp;lt;afl|libfuzzer|ossfuzz&amp;gt;
                          Enable fuzzing using American Fuzzy Lop or libFuzzer
                          (default=no)
  --disable-geoip         support GeoIP2 geolocation ACLs if available
                          [default=yes]
  --disable-doh           disable DNS over HTTPS, removes dependency on
                          libnghttp2 (default is --enable-doh)
  --enable-pthread-rwlock use pthread rwlock instead of internal rwlock
                          implementation
  --enable-fips-mode      enable FIPS mode in OpenSSL library [default=no]
  --disable-tcp-fastopen  disable TCP Fast Open support [default=yes]
  --disable-chroot        disable chroot
  --enable-fixed-rrset    enable fixed rrset ordering [default=no]
  --enable-dnstap         enable dnstap support (requires fstrm, protobuf-c)
  --enable-leak-detection enable the memory leak detection in external
                          libraries (libxml2, libuv, OpenSSL) (disabled by
                          default)
  --enable-singletrace    enable single-query trace logging [default=no]
  --enable-querytrace     enable very verbose query trace logging [default=no]
  --enable-auto-validation
                          turn on DNSSEC validation by default, using the IANA
                          root key [default=yes]
  --enable-dnsrps-dl      DNS Response Policy Service delayed link
                          [default=yes]
  --enable-dnsrps         enable DNS Response Policy Service API
  --enable-tracing        enable User Statically Defined Tracing
  --enable-year2038       support timestamps after 2038
  --enable-full-report    report values of all configure options

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
                          compiler's sysroot if not specified).
  --with-liburcu=FLAVOR   Build with Userspace-RCU variant (developer-only
                          option) (membarrier|qsbr|mb|bp) [default=membarrier])
  --with-python-sys-prefix
                          use Python's sys.prefix and sys.exec_prefix values
  --with-python_prefix    override the default PYTHON_PREFIX
  --with-python_exec_prefix
                          override the default PYTHON_EXEC_PREFIX
  --with-maxminddb=PATH   Build with MaxMind GeoIP2 support (auto|yes|no|path)
                          [default=auto]
  --with-libnghttp2       build with libnghttp2 library [yes|no|auto] (default
                          is auto)
  --with-openssl=DIR      root of the OpenSSL directory
  --with-gssapi=PATH|[/path/]krb5-config
                          Specify path for system-supplied GSSAPI
                          [default=auto]
  --with-lmdb=[PATH]      use LMDB library [default=auto], optionally specify
                          the prefix for lmdb library
  --with-libxml2          build with libxml2 library [yes|no|auto] (default is
                          auto)
  --with-json-c           build with json-c library [yes|no|detect] (default
                          is detect)
  --with-zlib             build with zlib for HTTP compression [default=yes]
  --with-readline=yes|no|libedit|readline
                          specify readline library [default auto]
  --with-libidn2=PATH     enable IDN support using GNU libidn2
                          [yes|no(default)|path]
  --with-cmocka=detect    enable CMocka based tests (default is detect)
  --with-jemalloc=detect  enable jemalloc memory allocator (default is detect)
  --with-dnsrps-libname   DNSRPS provider library name (librpz.so)
  --with-dnsrps-dir       path to DNSRPS provider library
  --with-zonedb=detect    specify default zone database type (default is
                          "qpzone")
  --with-cachedb=detect   specify default cache database type (default is
                          "qpcache")

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L&amp;lt;lib dir&amp;gt; if you have libraries in a
              nonstandard directory &amp;lt;lib dir&amp;gt;
  LIBS        libraries to pass to the linker, e.g. -l&amp;lt;library&amp;gt;
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I&amp;lt;include dir&amp;gt; if
              you have headers in a nonstandard directory &amp;lt;include dir&amp;gt;
  CPP         C preprocessor
  LT_SYS_LIBRARY_PATH
              User-defined run-time library search path.
  PKG_CONFIG  path to pkg-config utility
  PKG_CONFIG_PATH
              directories to add to pkg-config's search path
  PKG_CONFIG_LIBDIR
              path overriding pkg-config's built-in search path
  LIBURCU_CFLAGS
              C compiler flags for LIBURCU, overriding pkg-config
  LIBURCU_LIBS
              linker flags for LIBURCU, overriding pkg-config
  RCU_VERSION version of $RCU_FLAVOR, overriding pkg-config
  PYTHON      the Python interpreter
  MAXMINDDB_CFLAGS
              C compiler flags for MAXMINDDB, overriding pkg-config
  MAXMINDDB_LIBS
              linker flags for MAXMINDDB, overriding pkg-config
  MAXMINDDB_PREFIX
              value of prefix for libmaxminddb, overriding pkg-config
  LIBUV_CFLAGS
              C compiler flags for LIBUV, overriding pkg-config
  LIBUV_LIBS  linker flags for LIBUV, overriding pkg-config
  LIBUV_VERSION
              version of libuv, overriding pkg-config
  LIBNGHTTP2_CFLAGS
              C compiler flags for LIBNGHTTP2, overriding pkg-config
  LIBNGHTTP2_LIBS
              linker flags for LIBNGHTTP2, overriding pkg-config
  OPENSSL_CFLAGS
              C compiler flags for OPENSSL, overriding pkg-config
  OPENSSL_LIBS
              linker flags for OPENSSL, overriding pkg-config
  OPENSSL_VERSION
              version of openssl, overriding pkg-config
  LMDB_CFLAGS C compiler flags for LMDB, overriding pkg-config
  LMDB_LIBS   linker flags for LMDB, overriding pkg-config
  LIBXML2_CFLAGS
              C compiler flags for LIBXML2, overriding pkg-config
  LIBXML2_LIBS
              linker flags for LIBXML2, overriding pkg-config
  JSON_C_CFLAGS
              C compiler flags for JSON_C, overriding pkg-config
  JSON_C_LIBS linker flags for JSON_C, overriding pkg-config
  ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config
  ZLIB_LIBS   linker flags for ZLIB, overriding pkg-config
  READLINE_CFLAGS
              C compiler flags for READLINE, overriding pkg-config
  READLINE_LIBS
              linker flags for READLINE, overriding pkg-config
  LIBCAP_CFLAGS
              C compiler flags for LIBCAP, overriding pkg-config
  LIBCAP_LIBS linker flags for LIBCAP, overriding pkg-config
  DNSTAP_CFLAGS
              C compiler flags for DNSTAP, overriding pkg-config
  DNSTAP_LIBS linker flags for DNSTAP, overriding pkg-config
  SPHINX_BUILD
              path to sphinx-build binary used to build the documentation
  LIBIDN2_CFLAGS
              C compiler flags for LIBIDN2, overriding pkg-config
  LIBIDN2_LIBS
              linker flags for LIBIDN2, overriding pkg-config
  CMOCKA_CFLAGS
              C compiler flags for CMOCKA, overriding pkg-config
  CMOCKA_LIBS linker flags for CMOCKA, overriding pkg-config
  JEMALLOC_CFLAGS
              C compiler flags for JEMALLOC, overriding pkg-config
  JEMALLOC_LIBS
              linker flags for JEMALLOC, overriding pkg-config
  JEMALLOC_VERSION
              version of jemalloc, overriding pkg-config
  DTRACE      path to dtrace binary used to build User Statically Defined
              Tracing probes

Use these variables to override the choices made by 'configure' or to help
it to find libraries and programs with nonstandard names/locations.

Report bugs to &amp;lt;https://gitlab.isc.org/isc-projects/bind9/-/issues/new?issuable_template=Bug&amp;gt;.
BIND home page: &amp;lt;https://www.isc.org/downloads/&amp;gt;.
root@doh:/home/bind-9.20.27#&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/j3BfcjSiCcw" width="320" youtube-src-id="j3BfcjSiCcw"&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Ada banyak sekali pilihan/perintah, yang bisa anda gunakan. Gunakan yang perlu saja, jangan digunakan semuanya.
Biar lebih memudahkan pemahaman, kita mulai konfigurasi secara perlahan. Kita asumsikan DNS Bind9 akan kita tempatkan
di folder &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local&lt;/code&gt; (selama proses konfigurasi, perhatikan kesalahan error-nya).&lt;/p&gt;

&lt;p&gt;Jalankan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;./configure --prefix=/usr/local&lt;/code&gt;.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;configure&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;./configure --prefix=/usr/local&lt;/span&gt;
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking whether C compiler accepts -fno-strict-aliasing... yes
checking whether C compiler accepts -Werror -fno-delete-null-pointer-checks... yes
checking whether C compiler accepts -fdiagnostics-show-option... yes
checking whether the linker accepts -Wl,--export-dynamic... yes
&lt;span style="color: #04ff00;"&gt;checking for pkg-config... no
configure: error: The pkg-config script could not be found or is too old.&lt;/span&gt;
root@doh:/home/bind-9.20.27#
&lt;/pre&gt;

&lt;p&gt;Lihat kesalahannya, perhatikan scipt warna &lt;code class="language-plaintext highlighter-rouge"&gt;Hijau&lt;/code&gt;. Script tersebut mengartikan bahwa dependensi &lt;code class="language-plaintext highlighter-rouge"&gt;pkg-config&lt;/code&gt; belum tersedia atau
belum di install. Solusinya, anda harus menginstal &lt;code class="language-plaintext highlighter-rouge"&gt;pkg-config&lt;/code&gt;.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Install pkg-config&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;apt-get install pkg-config pkgconf&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Setelah itu, anda jalankan lagi perintah &lt;code class="language-plaintext highlighter-rouge"&gt;./configure --prefix=/usr/local&lt;/code&gt;, Lihat kesalahannya.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;configure&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;./configure --prefix=/usr/local&lt;/span&gt;
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking liburcu flavor... liburcu
checking for liburcu &amp;gt;= 0.13.0 liburcu-cds &amp;gt;= 0.13.0... no
checking for liburcu &amp;gt;= 0.10.0 liburcu-cds &amp;gt;= 0.10.0... no
configure: error: Package requirements (liburcu &amp;gt;= 0.10.0 liburcu-cds &amp;gt;= 0.10.0) were not met:

&lt;span style="color: #04ff00;"&gt;Package 'liburcu', required by 'virtual:world', not found
Package 'liburcu-cds', required by 'virtual:world', not found&lt;/span&gt;

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBURCU_CFLAGS
and LIBURCU_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
root@doh:/home/bind-9.20.27#

&lt;/pre&gt;

&lt;p&gt;Kesalahan &lt;code class="language-plaintext highlighter-rouge"&gt;pkg-config&lt;/code&gt; telah teratasi, namun muncul lagi kesalahan &lt;code class="language-plaintext highlighter-rouge"&gt;liburcu dan liburcu-cds&lt;/code&gt;. Solusinya anda install
dependensi &lt;code class="language-plaintext highlighter-rouge"&gt;liburcu&lt;/code&gt;.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Install dependensi liburcu&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;apt-get install liburcu-dev -y&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Jalankan lagi perintah &lt;code class="language-plaintext highlighter-rouge"&gt;./configure --prefix=/usr/local&lt;/code&gt;, Lihat kesalahannya lagi.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Jalankan perintah configure lagi&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;./configure --prefix=/usr/local&lt;/span&gt;
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for pthread_yield_np... no
checking for pthread_setname_np... yes
checking for pthread_set_name_np... no
checking for pthread_np.h... no
&lt;span style="color: #04ff00;"&gt;checking for libuv &amp;gt;= 1.37.0... no
checking for libuv &amp;gt;= 1.34.0 libuv &amp;lt; 1.35.0... no
configure: error: libuv &amp;gt;= 1.34.0 (except 1.35.0 and 1.36.0) not found&lt;/span&gt;
root@doh:/home/bind-9.20.27#

&lt;/pre&gt;

&lt;p&gt;Perhatikan script warna &lt;code class="language-plaintext highlighter-rouge"&gt;Hijau&lt;/code&gt;, ternyata DNS Bind9 membutuhkan dependensi &lt;code class="language-plaintext highlighter-rouge"&gt;libuv&lt;/code&gt;. Install dependensi tersebut, dengan perintah di bawah ini.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Install dependensi libuv&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;apt-get install libuv1-dev libuvc-dev -y&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Memang sangat membosankan, tapi seperti inilah jika menginstall aplikasi dengan source code. Banyak sekali kesalahannya, karena
banyak dependensi yang tidak kita ketahui. Kita lanjutkan lagi dengan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;./configure --prefix=/usr/local&lt;/code&gt;.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Jalankan lagi perintah configure&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;./configure --prefix=/usr/local&lt;/span&gt;
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking whether UV_UDP_MMSG_FREE is declared... yes
checking whether UV_UDP_MMSG_CHUNK is declared... yes
checking whether struct msghdr uses padding for alignment... no
checking whether UV_UDP_RECVMMSG is declared... yes
checking whether UV_UDP_LINUX_RECVERR is declared... yes
&lt;span style="color: #04ff00;"&gt;checking for libnghttp2 &amp;gt;= 1.6.0... no
configure: error: DNS-over-HTTPS support requested, but libnghttp2 not found. Either install libnghttp2 or use --disable-doh.&lt;/span&gt;
root@doh:/home/bind-9.20.27#
&lt;/pre&gt;

&lt;p&gt;Ohâ€¦!!! ternyata Bind9 butuh dependensi &lt;code class="language-plaintext highlighter-rouge"&gt;libnghttp2&lt;/code&gt; untuk mengaktifkan fitur &lt;code class="language-plaintext highlighter-rouge"&gt;DNS Over HTTPS - DOH&lt;/code&gt;.
Agar kesalahan tersebut bisa segera teratasi, install dependensi &lt;code class="language-plaintext highlighter-rouge"&gt;libnghttp2&lt;/code&gt;.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Install dependensi&amp;nbsp;libnghttp2-dev&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;apt-get install libnghttp2-dev libngtcp2-dev&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Lanjutkan dengan menjalankan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;./configure --prefix=/usr/local&lt;/code&gt;, lagi. Masihkan ada yang kurang dependensinya.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Jalankan lagi perintah configure&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# ./configure --prefix=/usr/local
checking build system type... x86_64-pc-linux-gnu
checking for include/openssl/ssl.h in /usr/local/ssl... no
checking for include/openssl/ssl.h in /usr/lib/ssl... no
checking for include/openssl/ssl.h in /usr/ssl... no
checking for include/openssl/ssl.h in /usr/pkg... no
checking for include/openssl/ssl.h in /usr/local... no
checking for include/openssl/ssl.h in /usr... no
checking whether compiling and linking against OpenSSL works... no
configure: error: in '/home/bind-9.20.27':
&lt;span style="color: #04ff00;"&gt;configure: error: OpenSSL/LibreSSL not found&lt;/span&gt;
See 'config.log' for more details
root@doh:/home/bind-9.20.27#
&lt;/pre&gt;

&lt;p&gt;Ohâ€¦!!! ternyata Bind9 juga butuh library &lt;code class="language-plaintext highlighter-rouge"&gt;OpenSSL&lt;/code&gt;. Kita install libarry &lt;code class="language-plaintext highlighter-rouge"&gt;OpenSSL&lt;/code&gt; tersebut dengan perintah berikut ini.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Install library SSL&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;apt-get install openssl libssl-dev libssl3 python3&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Jalankan lagi perintah &lt;code class="language-plaintext highlighter-rouge"&gt;./configure --prefix=/usr/local&lt;/code&gt;, masihkah ada library yang kurang.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Jalankan lagi perintah configure&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# ./configure --prefix=/usr/local
checking build system type... x86_64-pc-linux-gnu
Package '&lt;span style="color: #04ff00;"&gt;&lt;b&gt;libcap&lt;/b&gt;&lt;/span&gt;', required by 'virtual:world', not found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBCAP_CFLAGS
and LIBCAP_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
root@doh:/home/bind-9.20.27#
&lt;/pre&gt;

&lt;p&gt;Saat ini, library &lt;code class="language-plaintext highlighter-rouge"&gt;libcap&lt;/code&gt; yang dibutuhkan Bind9, segera install library/dependnesi &lt;code class="language-plaintext highlighter-rouge"&gt;libcap&lt;/code&gt; tersebut.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Install dependensi libcap&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@ns1:/var/www/html/unixbsdshell# &lt;span style="color: red;"&gt;apt-get install libcap-dev libcap2&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Yo.. Ayoâ€¦ jalankan lagi perintah &lt;code class="language-plaintext highlighter-rouge"&gt;./configure --prefix=/usr/local&lt;/code&gt;, masihkah ada library yang kurang.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Jalankan lagi perintah configure&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;./configure --prefix=/usr/local&lt;/span&gt;
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
config.status: creating util/check-make-install.sh
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
===============================================================================
Configuration summary:
-------------------------------------------------------------------------------
Optional features enabled:
    DNSSEC validation active by default (--enable-auto-validation)
-------------------------------------------------------------------------------
    Library versions:
      OpenSSL:          3.5.7
      libuv:            1.50.0
      Userspace-RCU:    0.15.2
-------------------------------------------------------------------------------
Features disabled or unavailable on this platform:
    Memory allocator: system

    +------------------------------------------+
    |             ==== WARNING ====            |
    |                                          |
    | This is NOT a recommended configuration. |
    | Using the system memory allocator causes |
    | reduced performance and increased memory |
    | fragmentation. Installing the jemalloc   |
    | memory allocator (version &amp;gt;= 4.0.0) is   |
    | strongly recommended.                    |
    +------------------------------------------+

    Allow 'dnstap' packet logging (--enable-dnstap)
    GeoIP2 access control (--enable-geoip)
    GSS-API (--with-gssapi)
    DNS Response Policy Service interface (--enable-dnsrps)
    Allow 'fixed' rrset-order (--enable-fixed-rrset)
    FIPS mode in OpenSSL (--enable-fips-mode)
    Very verbose query trace logging (--enable-querytrace)
    Single-query trace logging (--enable-singletrace)
    CMocka Unit Testing Framework (--with-cmocka)
    XML statistics (--with-libxml2)
    JSON statistics (--with-json-c)
    HTTP zlib compression (--with-zlib)
    LMDB database to store configuration for 'addzone' zones (--with-lmdb)
    IDN support (--with-libidn2)
-------------------------------------------------------------------------------
Configured paths:
    prefix: /usr/local
    sysconfdir: ${prefix}/etc
    localstatedir: ${prefix}/var
-------------------------------------------------------------------------------
Compiler: gcc
    gcc (Debian 14.2.0-19) 14.2.0
    Copyright (C) 2024 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

CFLAGS: -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wno-missing-field-initializers -Wformat -Wshadow -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=format-security -Werror=parentheses -Werror=implicit -Werror=strict-prototypes -Werror=vla -fno-strict-aliasing -fno-delete-null-pointer-checks -fdiagnostics-show-option -g -O2 -I/usr/include/x86_64-linux-gnu  -pthread
CPPFLAGS: -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
LDFLAGS:
-------------------------------------------------------------------------------
For more detail, use --enable-full-report.
===============================================================================
root@doh:/home/bind-9.20.27#&lt;/pre&gt;

&lt;p&gt;Bila tak ada dependensi/library yang kurang tampilan seperti di atas. Itu artinya semua dependensi telah tersedia.
Setelah tak ada kesalahan lagi, anda bisa langsung menjalankan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;maka&lt;/code&gt; dan &lt;code class="language-plaintext highlighter-rouge"&gt;make install&lt;/code&gt;.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Jalankan perintah make dan make install untuk mulai kompilasi&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;make &amp;amp;&amp;amp; make install&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Selamatâ€¦!!!. Sampai sini, anda telah berhasil menginstall Bind9 dengan Source Code.&lt;/p&gt;

&lt;h2 id="c-lengkapi-perintah-configure"&gt;C. Lengkapi perintah Configure&lt;/h2&gt;

&lt;p&gt;Perintah &lt;code class="language-plaintext highlighter-rouge"&gt;configure&lt;/code&gt; diatas masih tergolong sangat sederhana, anda dapat melengkapinya dengan opsi/flags lainnya,
seperti contoh di bawah ini.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Perintah Configure Lengkap&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;./configure --prefix=/usr/local --sbindir=/usr/local/sbin --disable-fips-mode \
--bindir=/usr/local/bin --libdir=/usr/local/lib --includedir=/usr/local/include \
--runstatedir=/var/run/named --localstatedir=/usr/local/var/named \
--enable-developer --enable-geoip --enable-doh --sysconfdir=/usr/local/etc/namedb \
--enable-fixed-rrset --enable-dnstap --enable-leak-detection --enable-singletrace \
--enable-querytrace --enable-auto-validation --enable-dnsrps --enable-year2038 \
--enable-full-report --with-liburcu=membarrier --with-maxminddb=yes --with-libnghttp2=yes \
--with-openssl=/usr/lib,/usr/include --with-readline=readline --with-libidn2=yes --with-cmocka=detect \
--with-jemalloc --with-dnsrps-libname --with-dnsrps-dir --with-json-c=yes \
--mandir=/usr/local/share/man --with-gssapi=auto --with-zonedb=rbtdb --with-cachedb=qpdb  \
--with-python-sys-prefix --with-python_prefix --disable-tracing \
--enable-pthread-rwlock WITH_DEBUG=1 \
LIBURCU_CFLAGS="-I/usr/include" LIBURCU_LIBS="-L/usr/lib -lurcu-common -lurcu -lurcu-memb -lurcu-cds" \
PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig" \
LIBIDN2_CFLAGS="-I/usr/include" \
LIBIDN2_LIBS="-L/usr/lib -liconv -lidn2 -R/usr/lib -L/usr/lib -lunistring -R/usr/local/lib" \
DTRACE="/usr/lib/dtrace /usr/src/usr.bin /usr/bin /usr/src/share/dtrace" \
LMDB_CFLAGS="-I/usr/include" LMDB_LIBS="-L/usr/lib -llmdb"&lt;/pre&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Jalankan perintah make dan make install untuk mulai kompilasi&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;root@doh:/home/bind-9.20.27# &lt;span style="color: red;"&gt;make &amp;amp;&amp;amp; make install&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;Untuk menjalankan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;configure&lt;/code&gt; lengkap seperti contoh di atas, anda membutuhkan dependensi, sebagai berikut.&lt;/p&gt;

&lt;div class="cmd-head" style="background: rgb(231, 239, 3); border: 0px; margin: 0px; padding: 0px 10px;"&gt;Dependensi Yang Dibutuhkan untuk mengkompilasi Bind9&lt;/div&gt;
&lt;pre class="pre-cmd" style="background: rgb(238, 238, 238); border: 1px solid rgb(212, 212, 212); line-height: 12.24px; margin-bottom: 1.5em; margin-top: 0px; max-width: 100%; overflow: auto; padding: 10px;"&gt;apt-get install libmaxminddb0 libmaxminddb-dev
apt-get install libjson-c-dev
apt-get install zlib1g zlib1g-dev
apt-get install libreadline-dev
apt-get install fstrm-bin libfstrm-dev libfstrm0
apt-get install libprotobuf-c-dev libprotobuf-c1 protobuf-c-compiler protobuf-compiler libprotobuf-dev
apt-get install libidn2-0 libidn2-0-dev libidn2-dev
apt-get install libdmalloc-dev libdmalloc5 libjemalloc-dev libjemalloc2
apt-get install cmocka-doc libcmocka-dev libcmocka0
apt-get install liblmdb++-dev liblmdb-dev liblmdb0 lmdb-doc lmdb-utils
apt-get install krb5-k5tls krb5-kdc krb5-locales krb5-multidev libgssapi-krb5-2 libkrb5-dev libkrb5-3
apt-get install libsasl2-2 libsasl2-dev libsasl2-modules libsasl2-modules-db libsasl2-modules-gssapi-mit&lt;/pre&gt;

&lt;p&gt;Anda dapat mengubah perintah &lt;code class="language-plaintext highlighter-rouge"&gt;configure&lt;/code&gt; sesuka hati anda. Yang perlu anda perhatikan kebutuhan akan penggunaan aplikasi
dan dependensi yang tersedia. Dengan menginstall aplikasi dengan source code, kita dapat meningkatkan kemampuan aplikasi tersebut.&lt;/p&gt;

&lt;p&gt;Berbeda dengan menginstall dengan paket APT, yang paket kompilasinya telah ditentukan oleh pengembang. Anda hanya mgnkonfigurasi
dan menjalankannya saja.&lt;/p&gt;

&lt;script type="application/ld+json"&gt;

{      
"@context": "https://schema.org",
"@type": "VideoObject",
"@id": "https://www.youtube.com/@unixbsdshell",
"url": "https://unixbsdshell.site/blog/2026/cara-install-dns-bind9-dengan-source-code-di-debian-ubuntu/",
"name": "Cara Install DNS Bind9 Dengan Source Code di Debian dan Ubuntu",
"description": "Cara Install DNS Bind9 Dengan Source Code di Debian dan Ubuntu",
"caption": "Cara Install DNS Bind9 Dengan Source Code di Debian dan Ubuntu",
"uploadDate": null,
"duration": "PT4M23S",
"contentUrl": "https://youtu.be/j3BfcjSiCcw",
"thumbnailUrl": "https://i9.ytimg.com/vi/j3BfcjSiCcw/mqdefault.jpg?v=6a9944d8&amp;sqp=CPDL5dQG&amp;rs=AOn4CLAv1mjYeH_zsG_yE8NGAeqkfJca4A",
"thumbnail": "https://i9.ytimg.com/vi/j3BfcjSiCcw/mqdefault.jpg?v=6a9944d8&amp;sqp=CPDL5dQG&amp;rs=AOn4CLAv1mjYeH_zsG_yE8NGAeqkfJca4A",
"embedUrl": null,
"datePublished": null,
"keywords": "dns, server, client, linux, debian, ubuntu, bind, bind9, source, kode, sumber terbuka, code",

"image": {
"@type": "ImageObject",
"caption": ["linux"],
"name": "Cara Install DNS Bind9 Dengan Source Code di Debian dan Ubuntu",
"description": "Untuk menginstall bind9 di Linux, program tersebut harus dikompilasi ke dalam kode mesin menggunakan program yang disebut compiler",
"height": 630,
"width": 1200,
"url": "https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/daftar_seluruh_versi_bind.jpg"
},

"regionsAllowed": {
"@type": "Place",
"name": "ID"
                 },
"publisher": {
"@type": "Organization",
"@id": "https://unixbsdshell.site/#organization",
"name": "WARNET DAPURNET",
"url": "https://share.google/1Qjq0V6RK7Vq3vUze",
"email": "postmaster@unixbsdshell.site",
"identifier": "https://maps.app.goo.gl/CyA3mHMjaXmJQkAG6",
"logo": "https://unixbsdshell.site/img/Logo.png",
  "sameAs" : [
    "https://www.linkedin.com/in/iwan-setiawan-943659164",
    "https://www.youtube.com/@unixbsdshell",
    "https://www.facebook.com/winunixbsd/",
    "https://github.com/unixwinbsd",
    "https://profile.hatena.ne.jp/iwanse1212/profile",
    "https://www.instagram.com/winunixbsd/",
    "https://x.com/iwanset96143401"
  ]
                       },

"director": {
"@type": "Person",
"name": "Iwan Setiawan",
"url": "https://www.blogger.com/profile/08958087252392329520",
"email": "postmaster@unixbsdshell.site",
"identifier": "UNIXBSDSHELL"
                       },
"locationCreated": {
"@type": "Place",
"name": "WARNET DAPURNET",
"address": "Jl. Raya Imam Bonjol  No.86, Kp. Warung bongkok RT.002/RW.01, Telagamurni, Cikarang Barat, Bekasi Regency, West Java 17841",
"url": "https://maps.app.goo.gl/6NsdhaFNGoKWjdmRA",
"photo": "https://maps.app.goo.gl/5e3jR7dbtUypBe2Q8",
"sameAs": "https://maps.app.goo.gl/rSeYom2LbfBQ43E66",
"hasMap": "https://www.google.com/maps/place/WARNET+DAPURNET/@-6.2708061,107.1127987,17z/data=!3m1!4b1!4m6!3m5!1s0x2e69854270602ca7:0x71e63dfb53b7b95!8m2!3d-6.2708061!4d107.1127987!16s%2Fg%2F11fx88pw2p?entry=ttu"
},  

"interactionStatistic": [
    {
      "@type": "InteractionCounter",
      "interactionService": {
        "@type": "WebSite",
        "name": "YouTube",
        "@id": "https://www.youtube.com/@unixbsdshell"
      },
      "interactionType": "https://schema.org/LikeAction",
      "userInteractionCount": "512"
    },
   
    {
      "@type": "InteractionCounter",
      "interactionService": {
        "@type": "WebSite",
        "name": "Facebook",
        "url": "https://www.facebook.com"
      },
      "interactionType": "https://schema.org/LikeAction",
      "userInteractionCount": "1024"
    },
    {
      "@type": "InteractionCounter",
      "interactionType": "https://schema.org/WatchAction",
      "userInteractionCount": "4356"
    }
  ]
}



&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2026/09/cara-install-dns-bind9-dengan-source.html</link><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/j3BfcjSiCcw/default.jpg" width="72"/><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-7043163850084934213</guid><pubDate>Sun, 30 Aug 2026 03:02:00 +0000</pubDate><atom:updated>2026-11-03T05:50:17.604+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>Menggunakan phpPgAdmin di FreeBSD dengan Apache24 Web Server</title><description>&lt;p&gt;phpPgAdmin hampir sama dengan PhpMyAdmin, phpPgAdmin digunakan bersama dengan PostgreSQL sedangkan PhpMyAdmin digunakan bersama dengan MySQL, yang berarti phpPgAdmin memungkinkan Anda untuk mengakses dan mengelola database yang diandalkan di situs web dengan lebih mudah jika digunakan bersama dengan browser web. 
Jika kita menggunakan database PostgreSQL, maka phpPgAdmin harus menjadi alat manajemen pilihan yang tidak dapat dipisahkan dari database PostgreSQL.&lt;/p&gt;

&lt;p&gt;Seperti PhpMyAdmin, phpPgAdmin juga berbasis PHP dan digunakan untuk membuat dan mengelola database sesederhana mungkin, bahkan bagi pengguna yang tidak memiliki banyak pengalaman melakukannya.&lt;/p&gt;

&lt;p&gt;Secara tidak langsung, hubungan antara phpPgAdmin dan PostgreSQL sama dengan hubungan antara phpMyAdmin dan MySQL. Lebih spesifiknya, phpPgAdmin adalah utilitas atau perangkat lunak berbasis web yang memungkinkan pengguna untuk mengelola database PostgreSQL dengan sangat mudah. 
Aplikasi phpPgAdmin dapat dibuka di peramban web sebagai halaman biasa dan akan berfungsi sama saja terlepas dari sistem operasi yang digunakan.&lt;/p&gt;

&lt;p&gt;Sesuai namanya, phpPgAdmin ditulis menggunakan PHP dan memiliki berbagai fitur yang mudah digunakan untuk mengelola basis data PostgreSQL. Jika kita pernah menggunakan phpMyAdmin sebelumnya, antarmuka phpPgAdmin akan terasa familier bagi pengguna, karena tampilan dan nuansa GUI grafisnya terinspirasi dari phpMyAdmin.&lt;/p&gt;

&lt;p&gt;Melalui phpPgAdmin, Anda dapat melihat informasi yang tersimpan dalam bentuk tabel, membuat catatan baru, mengedit catatan yang sudah ada, dan menghapus catatan yang tidak lagi diperlukan. 
Selain itu, Anda memiliki fitur penyortiran dan pemfilteran tingkat lanjut yang dapat Anda gunakan. Meski demikian, mungkin kekuatan terbesar phpPgAdmin adalah dukungannya terhadap Structured Query Language (SQL).&lt;/p&gt;

&lt;p&gt;Artikel ini akan mencoba mengulas aplikasi phpPgAdmin lengkap dengan metode instalasi dan konfigurasinya. Saat menulis artikel ini, phpPgAdmin dijalankan pada komputer server FReeBSD 13.2 yang terbukti tangguh dan stabil.&lt;/p&gt;

&lt;h2 id="spesifikasi-sistem"&gt;Spesifikasi Sistem&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;OS: FreeBSD 13.2&lt;/li&gt;
  &lt;li&gt;Domain: unixexplore.com&lt;/li&gt;
  &lt;li&gt;IP Address: 192.168.5.2&lt;/li&gt;
  &lt;li&gt;Apache Version: Apacje24&lt;/li&gt;
  &lt;li&gt;PHP Version: PHP82&lt;/li&gt;
  &lt;li&gt;PHP mods and extensions&lt;/li&gt;
  &lt;li&gt;PHP-FPM&lt;/li&gt;
  &lt;li&gt;Postgresql version: postgresql15&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="1-cara-instalasi-phppgadmin"&gt;1. Cara Instalasi phpPgAdmin&lt;/h2&gt;

&lt;p&gt;Karena phpPgAdmin digunakan untuk mengelola database PostgresQL, tidak ada salahnya untuk memeriksa terlebih dahulu apakah aplikasi PostgresQL telah terinstal di server FreeBSD sebelum melakukan instalasi.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:~ &lt;span class="c"&gt;# service -e&lt;/span&gt;
/etc/rc.d/hostid
/etc/rc.d/devd
/etc/rc.d/resolv
/etc/rc.d/newsyslog
/etc/rc.d/dmesg
/etc/rc.d/os-release
/etc/rc.d/gptboot
/etc/rc.d/linux
/etc/rc.d/syslogd
/etc/rc.d/ntpdate
/etc/rc.d/ntpd
/usr/local/etc/rc.d/openssh
/usr/local/etc/rc.d/postgresql
/usr/local/etc/rc.d/php-fpm
/usr/local/etc/rc.d/apache24
/etc/rc.d/bgfsck
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Dari skrip di atas kita dapat melihat bahwa postgresql, apache24 dan php-fpm telah terinstal, jadi kita langsung melanjutkan dengan menginstal phppgadmin. Gunakan perintah di bawah ini untuk menginstal phpPgAdmin.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:~ &lt;span class="c"&gt;# cd /usr/ports/databases/phppgadmin&lt;/span&gt;
root@ns1:/usr/ports/databases/phppgadmin &lt;span class="c"&gt;# make install clean&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="2-editubah-file-phpini"&gt;2. Edit/Ubah file php.ini&lt;/h2&gt;

&lt;p&gt;Agar modul pgsql PHP dapat berjalan bersama PHP, modul tersebut harus diaktifkan. Edit file &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc/php.ini&lt;/code&gt; dan hapus tanda &lt;code class="language-plaintext highlighter-rouge"&gt;";"&lt;/code&gt; yang ada di bagian depan skrip. 
Untuk mengedit file &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc/php.ini&lt;/code&gt;, kita menggunakan editor &lt;code class="language-plaintext highlighter-rouge"&gt;"ee"&lt;/code&gt;, berikut cara mengaktifkan modul pgsql PHP.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:~ &lt;span class="c"&gt;# ee /usr/local/etc/php.ini&lt;/span&gt;
&lt;span class="nv"&gt;extension&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;pgsql
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perintah di atas akan mengaktifkan modul PHP &lt;code class="language-plaintext highlighter-rouge"&gt;pgsql&lt;/code&gt;.&lt;/p&gt;

&lt;h2 id="3-editubah-file-file-httpdconf"&gt;3. Edit/Ubah File file httpd.conf&lt;/h2&gt;

&lt;p&gt;File httpd.conf merupakan file konfigurasi dari aplikasi apache24, karena phpPgAdmin berjalan di web browser apache24, maka kita harus mengedit file konfigurasi &lt;code class="language-plaintext highlighter-rouge"&gt;httpd.conf&lt;/code&gt; tersebut agar phpPgAdmin dapat dibuka di web browser Google Chrome atau Yandex. 
Pada file &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc/apache24/httpd.conf&lt;/code&gt; tambahkan script &lt;code class="language-plaintext highlighter-rouge"&gt;index.php&lt;/code&gt; pada baris berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;IfModule dir_module&amp;gt;
    DirectoryIndex index.html
&amp;lt;/IfModule&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah menambahkan skrip &lt;code class="language-plaintext highlighter-rouge"&gt;"index.php"&lt;/code&gt;, hasilnya akan seperti di bawah ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;IfModule dir_module&amp;gt;
    DirectoryIndex index.php index.html
&amp;lt;/IfModule&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Kemudian tambahkan skrip berikut ke bagian paling bawah file &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc/apache24/httpd.conf&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;Alias /phpPgAdmin &lt;span class="s2"&gt;"/usr/local/www/phpPgAdmin/"&lt;/span&gt;
&amp;lt;Directory &lt;span class="s2"&gt;"/usr/local/www/phpPgAdmin"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    AllowOverride None
    Options None
    Require all granted
&amp;lt;/Directory&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Karena dalam artikel ini kami menggunakan PHP-FPM, skrip berikut harus dinonaktifkan di file &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc/apache24/httpd.conf&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;#&amp;lt;FilesMatch "\.php$"&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;#    SetHandler application/x-httpd-php&lt;/span&gt;
&lt;span class="c"&gt;#&amp;lt;/FilesMatch&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;#&amp;lt;FilesMatch "\.phps$"&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;#    SetHandler application/x-httpd-php-source&lt;/span&gt;
&lt;span class="c"&gt;#&amp;lt;/FilesMatch&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="4-test-phppgadmin"&gt;4. Test phpPgAdmin&lt;/h2&gt;

&lt;p&gt;Setelah semua konfigurasi di atas selesai dan tidak ada yang terlewat, langkah selanjutnya adalah melakukan TEST pada aplikasi phpPgAdmin.&lt;/p&gt;

&lt;p&gt;Sebelum melakukan uji coba ulang, aplikasi apache24 harus diinstal agar semua modul PHP dan phpPgAdmin dapat dimuat oleh web server apache24.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:~ &lt;span class="c"&gt;# service apache24 restart&lt;/span&gt;
root@ns1:~ &lt;span class="c"&gt;# service php-fpm restart&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Sekarang kita buka web browser Yandex atau Google Chrome, pada menu address bar ketik "http://192.168.5.2:8080/phpPgAdmin/".&lt;/p&gt;

&lt;p&gt;Jika muncul tampilan seperti gambar di atas, berarti aplikasi phpPgAdmin sudah berhasil terinstal di komputer server Anda, dan sekarang kita sudah bisa melakukan pekerjaan PostgreSQL dengan tampilan GUI yang dapat memudahkan kita dalam melakukan edit, tambah, hapus dan lain sebagainya untuk setiap tabel dan database yang ada di PostgreSQL.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2026/08/menggunakan-phppgadmin-di-freebsd.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-5707169117832719883</guid><pubDate>Mon, 24 Aug 2026 08:10:00 +0000</pubDate><atom:updated>2026-11-02T16:50:33.855+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>Menggunakan Perintah killall dan kill Di FreeBSD</title><description>&lt;p&gt;Anda mungkin pernah menghadapi situasi ketika menjalankan sebuah aplikasi, tiba-tiba aplikasi atau sistem Anda menjadi tidak responsif. Solusinya, Anda mencoba untuk me-restart aplikasi tersebut dan Anda harus menutupnya terlebih dahulu.&lt;/p&gt;

&lt;p&gt;Namun, jika aplikasi yang Anda tutup gagal berhenti atau dimatikan sepenuhnya, Anda tidak akan dapat memulainya lagi. Ya, kita semua pernah menghadapi situasi seperti ini setidaknya sekali saat menjalankan sistem komputer. Untuk mengatasi masalah tersebut, Anda harus menghentikan proses aplikasi Anda yang tidak berjalan. Namun sekarang pertanyaannya adalah bagaimana? Dalam artikel ini, Anda akan memahami dua pendekatan berbeda untuk mematikan semua proses pada sistem operasi FreeBSD.&lt;/p&gt;

&lt;h2 id="1-apa-itu-perintah-kill--killall"&gt;1. Apa itu perintah kill &amp;amp; killall&lt;/h2&gt;

&lt;p&gt;Sebelum kita menyelami contoh-contoh spesifik penggunaan perintah kill dan killal, ada baiknya kita memahami konsep dasar kedua perintah ini.&lt;/p&gt;

&lt;p&gt;Ketika aplikasi gagal dihentikan, aplikasi tersebut terus menghabiskan memori dan daya pemrosesan. Untungnya, FreeBSD menyediakan utilitas atau perintah utilitas yang membantu Anda menghentikan proses yang tidak dapat dihentikan. Baiklah, sekarang mari kita bahas dua perintah &lt;a href="https://stackoverflow.com/questions/31608085/which-programs-will-the-killall-command-kill"&gt;kill process Linux&lt;/a&gt; yang berbeda dan perintah killall, dan cara kerjanya.&lt;/p&gt;

&lt;p&gt;kill adalah utilitas baris perintah dasar pada FreeBSD yang dapat mengirim sinyal ke proses untuk menghentikannya. Di FreeBSD, kill secara default mengirimkan sinyal TERM. Sinyal ini meminta proses untuk menghentikan dirinya sendiri dengan baik. Jika suatu proses tidak merespons sinyal TERM, proses tersebut dapat mengirimkan sinyal KILL, yang segera menghentikan proses tersebut.&lt;/p&gt;

&lt;p&gt;killall adalah alat untuk menghentikan proses yang berjalan pada sistem FreeBSD Anda berdasarkan nama. Sementara itu, kill akan menghentikan proses berdasarkan nomor ID Proses (PID). kill dan killall juga dapat mengirim sinyal sistem tertentu ke aplikasi yang akan dihentikan.&lt;/p&gt;

&lt;p&gt;Gunakan killall dan kill bersama dengan alat termasuk Status Proses, ps, untuk mengelola dan menghentikan proses yang macet atau tidak responsif.&lt;/p&gt;

&lt;h2 id="2-sinyal-sistem-freebsd"&gt;2. Sinyal Sistem FreeBSD&lt;/h2&gt;

&lt;p&gt;Pada FreeBSD, sinyal awalnya dirancang untuk memodelkan kejadian luar biasa, seperti upaya pengguna untuk menghentikan program yang tidak berfungsi atau sulit dihentikan. Sinyal tidak dimaksudkan untuk digunakan sebagai mekanisme komunikasi antarproses umum, dan dengan demikian tidak ada upaya yang dilakukan untuk membuatnya andal. Pada sistem sebelumnya, setiap kali sinyal tertangkap, tindakan tersebut disetel ulang ke tindakan default. Pengenalan kontrol pekerjaan menyebabkan penggunaan sinyal menjadi jauh lebih sering dan menciptakan masalah yang lebih parah yang juga diperburuk oleh prosesor yang lebih cepat.&lt;/p&gt;

&lt;p&gt;Jika dua sinyal dikirim secara bersamaan dan dilakukan dengan cepat, sinyal kedua dapat menyebabkan proses berhenti, meskipun pengontrol sinyal telah diatur untuk menangkap sinyal pertama. Pada titik ini, keandalan menjadi diinginkan, sehingga pengembang merancang kerangka kerja baru yang berisi sebagian kemampuan lama sambil mengakomodasi mekanisme baru.&lt;/p&gt;

&lt;p&gt;Sinyal memungkinkan manipulasi suatu proses dari luar domainnya serta memungkinkan proses untuk memanipulasi dirinya sendiri atau menyalin dirinya sendiri. Ada dua jenis sinyal umum:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Sinyal yang menyebabkan penghentian suatu proses dan,&lt;/li&gt;
  &lt;li&gt;Sinyal yang tidak menyebabkan penghentian proses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sinyal yang menyebabkan program berhenti mungkin disebabkan oleh kesalahan yang tidak dapat diperbaiki atau mungkin disebabkan oleh pengguna terminal yang mengetik karakter &lt;code class="language-plaintext highlighter-rouge"&gt;interupsi&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Sinyal digunakan saat suatu proses dihentikan karena ingin mengakses terminal kontrolnya saat berada di latar belakang. Sinyal secara opsional dihasilkan saat suatu proses dilanjutkan setelah dihentikan, saat status proses anak berubah, atau saat input siap di terminal kontrol. Sebagian besar sinyal mengakibatkan penghentian proses penerimaannya jika tidak ada tindakan yang diambil; beberapa sinyal benar-benar menyebabkan proses penerimaan berhenti, atau dibuang begitu saja jika proses tidak meminta sebaliknya. Kecuali untuk sinyal SIGKILL dan SIGSTOP, fungsi sinyal memungkinkan sinyal untuk ditangkap, diabaikan, atau menghasilkan interupsi. Sinyal-sinyal ini didefinisikan dalam berkas&lt;/p&gt;

&lt;div class="table-responsive"&gt;
        &lt;table class="table table-striped 
                    table-bordered table-hover"&gt;
            &lt;thead&gt;
                &lt;tr&gt;
                    &lt;th&gt;Num&lt;/th&gt;
                    &lt;th&gt;Name&lt;/th&gt;
                    &lt;th&gt;Default Action&lt;/th&gt;
                    &lt;th&gt;Description&lt;/th&gt;
                &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
                &lt;tr&gt;
                    &lt;td&gt;1&lt;/td&gt;
                    &lt;td&gt;SIGHUP &lt;/td&gt;
                    &lt;td&gt;terminate process&lt;/td&gt;
                    &lt;td&gt;terminal line hangup&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;2&lt;/td&gt;
                    &lt;td&gt;SIGINT &lt;/td&gt;
                    &lt;td&gt;terminate process&lt;/td&gt;
                    &lt;td&gt;interrupt program&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;3&lt;/td&gt;
                    &lt;td&gt;SIGQUIT &lt;/td&gt;
                    &lt;td&gt;create core image&lt;/td&gt;
                    &lt;td&gt;quit program&lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr&gt;
                    &lt;td&gt;4&lt;/td&gt;
                    &lt;td&gt;SIGILL &lt;/td&gt;
                    &lt;td&gt;create core image&lt;/td&gt;
                    &lt;td&gt;illegal instruction&lt;/td&gt;
                &lt;/tr&gt;


                &lt;tr&gt;
                    &lt;td&gt;5&lt;/td&gt;
                    &lt;td&gt;SIGTRAP &lt;/td&gt;
                    &lt;td&gt;create core image&lt;/td&gt;
                    &lt;td&gt;trace trap&lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr&gt;
                    &lt;td&gt;6&lt;/td&gt;
                    &lt;td&gt;SIGABRT &lt;/td&gt;
                    &lt;td&gt;create core image&lt;/td&gt;
                    &lt;td&gt;abort program (formerly SIGIOT)&lt;/td&gt;
                &lt;/tr&gt;

                &lt;tr&gt;
                    &lt;td&gt;7&lt;/td&gt;
                    &lt;td&gt;SIGEMT &lt;/td&gt;
                    &lt;td&gt;create core image&lt;/td&gt;
                    &lt;td&gt;emulate instruction executed&lt;/td&gt;
                &lt;/tr&gt;


            &lt;/tbody&gt;
        &lt;/table&gt;
    &lt;/div&gt;

&lt;h2 id="3-cara-menggunakan-perintah-kill"&gt;3. Cara Menggunakan Perintah Kill&lt;/h2&gt;

&lt;p&gt;Perintah proses Terminate merupakan utilitas penting yang harus diketahui oleh setiap administrator sistem FreeBSD. Jika Anda gagal menghentikan daemon apa pun, proses kill FreeBSD dan perintah killall FreeBSD akan membantu Anda menghentikan daemon apa pun yang sulit dimatikan.&lt;/p&gt;

&lt;p&gt;Perintah kill dapat menghentikan setiap proses individual sebagaimana ditentukan oleh PID-nya.&lt;/p&gt;

&lt;p&gt;Perintah tersebut berbentuk sebagai berikut:&lt;/p&gt;

&lt;div class="language-text highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;# kill [-s signal_name] pid
# kill -l [exit_status]
# kill -signal_name pid
# kill -signal_number pid
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Utilitas kill mengirimkan sinyal ke proses yang ditentukan oleh nomor pid. Membunuh proses dapat dilakukan oleh pengguna mana pun, tetapi hanya pengguna super yang dapat mengirim sinyal ke proses pengguna lain.&lt;/p&gt;

&lt;p&gt;Pilihannya adalah sebagai berikut:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;s signal_name Nama sinyal simbolis yang menentukan sinyal yang akan dikirim, bukan TERM default.&lt;/li&gt;
  &lt;li&gt;l [exit_status] Jika tidak ada operan yang diberikan, daftarkan nama sinyal; jika tidak, tulis nama sinyal yang sesuai dengan exit_status.&lt;/li&gt;
  &lt;li&gt;signal_name Nama sinyal simbolis yang menentukan sinyal yang akan dikirim, bukan TERM default.&lt;/li&gt;
  &lt;li&gt;signal_number Bilangan bulat desimal non-negatif, yang menentukan sinyal yang akan dikirim, bukan TERM default.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PID berikut memiliki arti khusus:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;1 Jika superuser, siarkan sinyal ke semua proses; jika tidak, siarkan ke semua proses milik pengguna.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Beberapa sinyal yang paling umum digunakan:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;HUP (hang up).&lt;/li&gt;
  &lt;li&gt;INT (interrupt).&lt;/li&gt;
  &lt;li&gt;QUIT (quit).&lt;/li&gt;
  &lt;li&gt;ABRT (abort).&lt;/li&gt;
  &lt;li&gt;KILL (non-catchable, non-ignorable kill).&lt;/li&gt;
  &lt;li&gt;ALRM (alarm clock).&lt;/li&gt;
  &lt;li&gt;TERM (software termination signal).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Di bawah ini kami berikan contoh cara menggunakan perintah kill. Dalam contoh ini kami akan mencoba menghentikan daemon aplikasi Redis.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns7:~ &lt;span class="c"&gt;# ps -auwx | grep redis&lt;/span&gt;
redis 3046   0.0  0.5   34604   9620  -  Ss   07:33     0:00.01 redis-server: /usr/local/bin/redis-server 127.0.0.1:6379 &lt;span class="o"&gt;(&lt;/span&gt;redis-server&lt;span class="o"&gt;)&lt;/span&gt;
root  3048   0.0  0.1   12812   2368  0  S+   07:33     0:00.00 &lt;span class="nb"&gt;grep &lt;/span&gt;redis
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada perintah di atas nomor PID Redis adalah &lt;code class="language-plaintext highlighter-rouge"&gt;3046&lt;/code&gt;, sekarang kita akan memaksa daemon Redis untuk berhenti dengan perintah kill.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns7:~ &lt;span class="c"&gt;# kill -QUIT 3046&lt;/span&gt;
or
root@ns7:~ &lt;span class="c"&gt;# kill -s QUIT 3046&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Jika komputer Anda tidak merespons sinyal Redis, Anda dapat menggunakan HUP untuk menghentikan daemon Redis.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns7:~ &lt;span class="c"&gt;# kill -HUP 3046&lt;/span&gt;
or
root@ns7:~ &lt;span class="c"&gt;# kill -s HUP 3046&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="4-cara-menggunakan-perintah-killall"&gt;4. Cara Menggunakan Perintah Killall&lt;/h2&gt;

&lt;p&gt;Pada FreeBSD, utilitas killall digunakan untuk menghentikan proses yang dipilih berdasarkan nama, bukan pemilihan berdasarkan PID seperti yang dilakukan dengan kill. 
Secara default, killall akan mengirimkan sinyal TERM ke semua proses dengan UID asli yang identik dengan pemanggil killall yang cocok dengan procname. Hanya pengguna super yang diizinkan untuk menghentikan proses apa pun.&lt;/p&gt;

&lt;p&gt;Secara umum, perintah killal dapat ditulis sebagai berikut:&lt;/p&gt;

&lt;div class="language-text highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;# killall procname
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Di bawah ini kami berikan contoh cara menghentikan daemon mysql-server. Seperti yang kita ketahui, pada FreeBSD secara default mysql-server memiliki nama pengguna dan grup yang disebut &lt;code class="language-plaintext highlighter-rouge"&gt;mysql&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Gunakan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;ps -auwx&lt;/code&gt; untuk melihat PID mysql-server yang sedang berjalan.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns7:~ &lt;span class="c"&gt;# ps -auwx | grep mysql&lt;/span&gt;
mysql 6940  78.2 31.5 2304128 563976  -  S    08:16     0:02.67 /usr/local/libexec/mysqld &lt;span class="nt"&gt;--defaults-extra-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/local/etc/mysql/my.cnf &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/local &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/var/
mysql 5785   0.0  0.2   13580   3164  -  Ss   08:16     0:00.05 /bin/sh /usr/local/bin/mysqld_safe &lt;span class="nt"&gt;--defaults-extra-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/local/etc/mysql/my.cnf &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/local &lt;span class="nt"&gt;--data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root  6947   0.0  0.1   12812   2356  0  S+   08:16     0:00.00 &lt;span class="nb"&gt;grep &lt;/span&gt;mysql
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada perintah di atas, daemon mysql-server diberi nama &lt;code class="language-plaintext highlighter-rouge"&gt;mysqld&lt;/code&gt;. Sekarang kita coba untuk mematikan daemon mysql-server dengan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;killall&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns7:~ &lt;span class="c"&gt;# killall mysqld&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Mari kita lihat hasilnya dengan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;ps -auwx&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns7:~ &lt;span class="c"&gt;# ps -auwx | grep mysql&lt;/span&gt;
root  6970   0.0  0.1 12812 2364  0  S+   08:20     0:00.00 &lt;span class="nb"&gt;grep &lt;/span&gt;mysql
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada perintah di atas, daemon mysql-server telah berhasil dimatikan.&lt;/p&gt;

&lt;p&gt;Kita juga dapat mematikan daemon mysql-server dengan menggabungkan &lt;code class="language-plaintext highlighter-rouge"&gt;username&lt;/code&gt; dan &lt;code class="language-plaintext highlighter-rouge"&gt;procname&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns7:~ &lt;span class="c"&gt;# killall -u mysql mysqld&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada perintah di atas &lt;code class="language-plaintext highlighter-rouge"&gt;mysql&lt;/code&gt; adalah nama pengguna &lt;code class="language-plaintext highlighter-rouge"&gt;mysql-server&lt;/code&gt;, dan &lt;code class="language-plaintext highlighter-rouge"&gt;mysqld&lt;/code&gt; adalah daemon &lt;code class="language-plaintext highlighter-rouge"&gt;mysql-server&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Memahami perintah kill dan killall akan sangat membantu seorang administrator sistem dalam menjalankan pekerjaannya. Anda harus menguasai kedua perintah ini, jika ingin mempelajari FreeBSD.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2026/08/menggunakan-perintah-killall-dan-kill.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-6994295571041100846</guid><pubDate>Wed, 15 Apr 2026 02:31:00 +0000</pubDate><atom:updated>2026-11-06T13:55:00.805+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>Cara Menginstal Webmin pada Sistem FreeBSD</title><description>&lt;p&gt;Webmin adalah alat administrasi sistem berbasis web untuk server mirip Unix, dan layanan dengan sekitar 1.000.000 instalasi tahunan di seluruh dunia. Dengan Webmin, anda diharapkan dapat mengkonfigurasi sistem operasi internal, seperti pengguna, kuota disk, layanan, atau berkas konfigurasi, serta memodifikasi dan mengontrol aplikasi sumber terbuka, seperti Server DNS BIND, Server HTTP Apache, PHP, MySQL, dan banyak lagi.&lt;/p&gt;

&lt;p&gt;Dalam artikel ini, kami akan menjelaskan cara menginstal dan menggunakan Webmin pada sistem FreeBSD 13.2 Stable. Seperti aplikasi lainnya, menginstal Webmin pada sistem FreeBSD dapat menggunakan Port dan PKG. Dalam artikel ini, kami akan menjelaskan cara menginstal Webmin menggunakan keduanya. Baiklah, mari kita langsung saja menginstal Webmin.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@router2:~ &lt;span class="c"&gt;# pkg update&lt;/span&gt;
root@router2:~ &lt;span class="c"&gt;# pkg upgrade -y&lt;/span&gt;
root@router2:~ &lt;span class="c"&gt;# pkg install webmin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Saat menggunakan FreeBSD Ports, gunakan sintaksis berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@router2:~ &lt;span class="c"&gt;# cd /usr/ports/sysutils/webmin&lt;/span&gt;
root@router2:~ &lt;span class="c"&gt;# make install clean&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah proses instalasi selesai, ada beberapa perintah baris perintah yang harus Anda ikuti. Perintah ini harus diikuti untuk memastikan Webmin berjalan dengan baik.&lt;/p&gt;

&lt;p&gt;Sekarang kita ikuti instruksi dari gambar di atas. Berdasarkan gambar di atas, Webmin dikonfigurasi dengan berkas &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/lib/webmin/setup.sh&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@router2:~ &lt;span class="c"&gt;# /usr/local/lib/webmin/setup.sh&lt;/span&gt;
&lt;span class="k"&gt;***********************************************************************&lt;/span&gt;
        Welcome to the Webmin setup script, version 2.013
&lt;span class="k"&gt;***********************************************************************&lt;/span&gt;
Webmin is a web-based interface that allows Unix-like operating
systems and common Unix services to be easily administered.

Installing Webmin &lt;span class="k"&gt;in&lt;/span&gt; /usr/local/lib/webmin

&lt;span class="k"&gt;***********************************************************************&lt;/span&gt;
Webmin uses separate directories &lt;span class="k"&gt;for &lt;/span&gt;configuration files and log files.
Unless you want to run multiple versions of Webmin at the same &lt;span class="nb"&gt;time
&lt;/span&gt;you can just accept the defaults.

Config file directory &lt;span class="o"&gt;[&lt;/span&gt;/usr/local/etc/webmin]:
Log file directory &lt;span class="o"&gt;[&lt;/span&gt;/var/db/webmin]:

&lt;span class="k"&gt;***********************************************************************&lt;/span&gt;
Webmin is written entirely &lt;span class="k"&gt;in &lt;/span&gt;Perl. Please enter the full path to the
Perl 5 interpreter on your system.

Full path to perl &lt;span class="o"&gt;(&lt;/span&gt;default /usr/local/bin/perl&lt;span class="o"&gt;)&lt;/span&gt;:

Testing Perl ..
.. &lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="k"&gt;***********************************************************************&lt;/span&gt;
Operating system name:    FreeBSD
Operating system version: 13.2

&lt;span class="k"&gt;***********************************************************************&lt;/span&gt;
Webmin uses its own password protected web server to provide access
to the administration programs. The setup script needs to know :
 - What port to run the web server on. There must not be another
   web server already using this port.
 - The login name required to access the web server.
 - The password required to access the web server.
 - If the web server should use SSL &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;if &lt;/span&gt;your system supports it&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
 - Whether to start webmin at boot time.

Web server port &lt;span class="o"&gt;(&lt;/span&gt;default 10000&lt;span class="o"&gt;)&lt;/span&gt;:
Login name &lt;span class="o"&gt;(&lt;/span&gt;default admin&lt;span class="o"&gt;)&lt;/span&gt;:
Login password: admin
Password again: admin
Use SSL &lt;span class="o"&gt;(&lt;/span&gt;y/n&lt;span class="o"&gt;)&lt;/span&gt;: n

&lt;span class="k"&gt;***********************************************************************&lt;/span&gt;
Creating web server config files ..
.. &lt;span class="k"&gt;done

&lt;/span&gt;Creating access control file ..
.. &lt;span class="k"&gt;done

&lt;/span&gt;Creating start and stop init scripts ..
.. &lt;span class="k"&gt;done

&lt;/span&gt;Creating start and stop init symlinks to scripts ..
.. &lt;span class="k"&gt;done

&lt;/span&gt;Copying config files ..
.. &lt;span class="k"&gt;done

&lt;/span&gt;Changing ownership and permissions ..
.. &lt;span class="k"&gt;done

&lt;/span&gt;Running postinstall scripts ..
.. &lt;span class="k"&gt;done

&lt;/span&gt;Enabling background status collection ..
.. &lt;span class="k"&gt;done

&lt;/span&gt;root@router2:~ &lt;span class="c"&gt;#&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Saat menjalankan file &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/lib/webmin/setup.sh&lt;/code&gt;, kita mengkonfigurasi Webmin dengan nama pengguna admin dan kata sandi admin juga. menggunakan SSL NO dan Webmin berjalan pada port &lt;code class="language-plaintext highlighter-rouge"&gt;10000&lt;/code&gt;. Sekarang coba anda aktifkan Webmin dengan menambahkan perintah berikut ke file &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/rc .conf&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@router2:~ &lt;span class="c"&gt;# ee /etc/rc.conf&lt;/span&gt;
&lt;span class="nv"&gt;webmin_enable&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"YES"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah kita mengaktifkan Webmin di file &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/rc.conf&lt;/code&gt;, jalankan Webmin dengan perintah berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@router2:~ &lt;span class="c"&gt;# service webmin restart&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Jika Webmin sudah aktif di sistem FreeBSD anda, coba jalankan Webmin di Peramban Web browser. Untuk membuka Webmin, Anda dapat menggunakan browserYandex, Chrome, Firefox, dan lainnya. Jalankan Webmin dengan browser Chrome dan pada menu address bar ketik &lt;code class="language-plaintext highlighter-rouge"&gt;http://192.168.9.3:10000/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Alamat IP &lt;code class="language-plaintext highlighter-rouge"&gt;192.168.9.3&lt;/code&gt; adalah alamat IP antarmuka sistem FreeBSD dan port Webmin &lt;code class="language-plaintext highlighter-rouge"&gt;10000&lt;/code&gt; yang telah kita buat sebelumnya, beserta nama pengguna dan kata sandi. Setelah masuk dengan nama pengguna dan kata sandi admin, Webmin akan menampilkan dasboard, yang menunjukkan bahwa Anda telah berhasil menginstal Webmin di FreeBSD.&lt;/p&gt;

&lt;p&gt;Webmin menyediakan beragam fungsi untuk administrasi server, termasuk konfigurasi DNS, manajemen pengguna dan grup, perangkat keras dan perangkat lunak, dan banyak lagi. Webmin memiliki antarmuka yang ramah pengguna dan intuitif, sehingga sangat mudah digunakan, bahkan untuk pengguna pemula. 
Webmin juga mendukung banyak plugin dan modul, yang memungkinkan Anda untuk memperluas fungsinya. Dengan desain grafisnya yang menarik, Webmin akan memudahkan Administrator Sistem dalam mengonfigurasi server.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2026/04/cara-menginstal-webmin-pada-sistem.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-34293645898295399</guid><pubDate>Tue, 01 Jul 2025 14:00:00 +0000</pubDate><atom:updated>2026-11-05T08:44:47.289+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><title>Memahami File Log Apache - Cara Melihat, Menemukan, dan Menganalisis File Log Akses dan Error Log dan Menganalisis File Log Akses dan Error Log</title><description>&lt;p&gt;Pada saat artikel ini ditulis, server HTTP Apache telah digunakan lebih dari 30,8% dari semua web server yang ada. Jika Anda bertanggung jawab untuk mengelola sistem apa pun yang menggunakan Apache, maka Anda pasti akan berinteraksi dengan infrastruktur pencatatannya secara teratur.&lt;/p&gt;

&lt;p&gt;Apache adalah server web sumber terbuka dan elemen penting dalam tumpukan pengembangan web (A dalam LAMP dan WAMP). Selain menyajikan halaman web, Apache juga melacak dan menyimpan catatan (log) aktivitas dan kesalahan server. Log Apache penting untuk memantau dan memecahkan masalah aktivitas server web. Mengetahui cara melihat, menggunakan, dan mengelola berkas log Apache sangat penting bagi administrator server.&lt;/p&gt;

&lt;p&gt;Tutorial ini akan memperkenalkan Anda pada pencatatan di Apache dan bagaimana hal itu dapat membantu Anda mendiagnosis, memecahkan masalah, dan dengan cepat menyelesaikan masalah apa pun yang mungkin Anda hadapi di server Apache Anda.&lt;/p&gt;

&lt;p&gt;Anda akan mempelajari tempat penyimpanan log, cara mengaksesnya, dan cara menyesuaikan keluaran dan lokasi log agar sesuai kebutuhan. Anda juga akan mempelajari cara memusatkan log Apache dalam sistem manajemen log untuk memudahkan pelacakan, pencarian, dan pemfilteran log di seluruh sistem Anda.&lt;/p&gt;

&lt;h2 id="a-apa-itu-file-log-apache"&gt;A. Apa itu File Log Apache?&lt;/h2&gt;

&lt;p&gt;Log Apache adalah berkas teks yang berisi semua informasi tentang apa yang dilakukan server Apache. Log ini memberikan wawasan tentang sumber daya mana yang diakses, kapan diakses, siapa yang mengaksesnya, dan metrik yang terkait dengannya. Log ini juga mencakup informasi tentang kesalahan yang terjadi, proses pemetaan sumber daya, penyelesaian akhir koneksi, dan masih banyak lagi.&lt;/p&gt;

&lt;p&gt;Secara umum, seluruh proses pencatatan Apache terdiri dari beberapa fase. Pertama, Anda perlu menyimpan log di suatu tempat untuk tujuan analisis historis. Kedua, Anda perlu menganalisis log dan menguraikannya untuk mengambil informasi dan metrik yang berguna. Dan terakhir, Anda mungkin ingin membuat grafik data karena representasi visual lebih mudah dianalisis dan dipahami oleh manusia.&lt;/p&gt;

&lt;p&gt;Rekaman semua peristiwa Apache ditempatkan dalam dua berkas teks yang berbeda:&lt;/p&gt;

&lt;h3 id="a1-apa-itu-log-akses-apache"&gt;a.1. Apa itu Log Akses Apache?&lt;/h3&gt;
&lt;p&gt;Log akses Apache adalah berkas teks yang berisi informasi tentang semua permintaan yang diproses oleh server Apache. Anda dapat menemukan informasi seperti waktu permintaan, sumber daya yang diminta, kode respons, waktu yang dibutuhkan untuk merespons, dan alamat IP yang digunakan untuk meminta data.&lt;/p&gt;

&lt;h4 id="a2-lokasi-log-akses-apache"&gt;a.2. Lokasi Log Akses Apache&lt;/h3&gt;
&lt;p&gt;Lokasi log akses server Apache berbeda-beda, bergantung pada sistem operasi yang Anda gunakan.&lt;/p&gt;

&lt;p&gt;secara default sistem operasi Red Hat, CentOS, atau Fedora Linux, log akses Apache dapat ditemukan di 
  &lt;code class="language-plaintext highlighter-rouge"&gt;/var/log/httpd/access_log&lt;/code&gt;. Pada Debian dan Ubuntu, Anda dapat menemukan log Apache di &lt;code class="language-plaintext highlighter-rouge"&gt;/var/log/apache2/access.log&lt;/code&gt;, sedangkan di FreeBSD akan menyimpan log akses server Apache di berkas 
  &lt;code class="language-plaintext highlighter-rouge"&gt;/var/log/httpd-access.log&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Anda dapat mengkonfigurasi lokasinya menggunakan perintah CustomLog, misalnya:&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;CustomLog &lt;span class="s2"&gt;"/var/log/httpd-access.log"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h5 id="a3-apa-itu-error-log-apache"&gt;a.3. Apa itu Error Log Apache?&lt;/h3&gt;
&lt;p&gt;Sejauh ini, kita telah membahas tentang log akses Apache yang memberi kita informasi tentang sumber daya yang diakses. Namun, itu bukan satu-satunya hal yang perlu kita perhatikan. Kita juga harus memperhatikan segala hal yang terkait dengan kesalahan. Faktanya, log kesalahan adalah berkas log terpenting untuk server HTTP Apache.&lt;/p&gt;

&lt;p&gt;Log kesalahan Apache berisi semua kesalahan yang terjadi selama pemrosesan permintaan. Namun, yang terpenting adalah bahwa log kesalahan akan berisi informasi tentang apa yang salah selama permulaan server Apache dan kemungkinan besar juga akan berisi petunjuk tentang cara memperbaiki masalah tersebut.&lt;/p&gt;

&lt;h6 id="a4-lokasi-error-log-apache"&gt;a.4. Lokasi Error Log Apache&lt;/h4&gt;

&lt;p&gt;Tempat penyimpanan log kesalahan Apache berbeda-beda, tergantung pada sistem operasi yang menjalankannya.&lt;/p&gt;

&lt;p&gt;Pada Red Hat, CentOS, atau Fedora Linux, secara default error log dapat ditemukan di &lt;code class="language-plaintext highlighter-rouge"&gt;/var/log/httpd/error_log&lt;/code&gt;. Pada Debian dan Ubuntu, Anda dapat menemukan log Apache di &lt;code class="language-plaintext highlighter-rouge"&gt;/var/log/apache2/error.log&lt;/code&gt;, sedangkan pada FreeBSD akan memiliki log akses server Apache di berkas &lt;code class="language-plaintext highlighter-rouge"&gt;/var/log/httpd-error.log&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Anda dapat mengkonfigurasi lokasinya menggunakan perintah ErrorLog, misalnya:&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ErrorLog &lt;span class="s2"&gt;"/var/log/httpd-error.log"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="b-memulai-file-log-apache"&gt;B. Memulai File Log Apache&lt;/h2&gt;
&lt;p&gt;Salah satu cara paling umum untuk melihat file log Apache adalah melalui perintah tail yang mencetak 10 baris terakhir dari sebuah file log Apache. Saat opsi &lt;code class="language-plaintext highlighter-rouge"&gt;-f&lt;/code&gt; diberikan, perintah tersebut akan memantau berkas dan menampilkan isinya secara langsung.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo tail&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; /var/log/apache2/access.log
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Untuk melihat seluruh isi berkas, Anda dapat menggunakan perintah cat atau membuka berkas dalam editor teks seperti &lt;code class="language-plaintext highlighter-rouge"&gt;nano atau vim&lt;/code&gt;:&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;cat&lt;/span&gt; /var/log/apache2/access.log
atau
&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;nano /var/log/apache2/access.log
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Anda mungkin juga ingin memfilter entri log dalam berkas log berdasarkan istilah tertentu. Dalam kasus seperti itu, Anda harus menggunakan perintah grep. Argumen pertama untuk grep adalah istilah yang ingin Anda cari, sedangkan argumen kedua adalah berkas log yang akan dicari. Dalam contoh di bawah ini, kami memfilter semua baris yang berisi kata GET.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo grep &lt;/span&gt;GET /var/log/apache2/access.log
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="c-memeriksa-format-log-akses-apache"&gt;C. Memeriksa format log akses Apache&lt;/h2&gt;
&lt;p&gt;Log akses mencatat semua permintaan yang diproses oleh server. Anda dapat melihat sumber daya apa yang diminta, status setiap permintaan, dan berapa lama waktu yang dibutuhkan untuk memproses responsnya. Di bagian ini, kita akan membahas lebih dalam tentang cara menyesuaikan informasi yang ditampilkan dalam berkas ini.&lt;/p&gt;

&lt;p&gt;Sebelum Anda dapat memperoleh manfaat dari membaca berkas log, Anda perlu memahami format yang digunakan untuk setiap entri. Perintah CustomLog adalah yang mengontrol lokasi dan format berkas log akses Apache. Perintah ini dapat ditempatkan di berkas konfigurasi server &lt;code class="language-plaintext highlighter-rouge"&gt;(/etc/apache2/apache2.conf)&lt;/code&gt; atau di entri host virtual Anda. Perhatikan bahwa menentukan perintah CustomLog yang sama di kedua berkas dapat menimbulkan masalah.&lt;/p&gt;

&lt;p&gt;Mari kita lihat format umum yang digunakan dalam log akses Apache dan artinya.&lt;/p&gt;

&lt;h3 id="c1-common-log-format"&gt;c.1. Common Log Format&lt;/h3&gt;
&lt;p&gt;Common Log Format adalah format log akses standar yang digunakan oleh banyak server web karena mudah dibaca dan dipahami. Format ini didefinisikan dalam berkas konfigurasi &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/apache2/apache2.conf&lt;/code&gt; melalui perintah LogFormat.&lt;/p&gt;

&lt;p&gt;Saat Anda menjalankan perintah di bawah ini:&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo grep &lt;/span&gt;common /etc/apache2/apache2.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Anda akan melihat output yang ditampilkan oleh perintah di atas.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;LogFormat &lt;span class="s2"&gt;"%h %l %u %t &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;%r&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; %&amp;gt;s %O"&lt;/span&gt; common
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Baris di atas mendefinisikan nama panggilan umum dan mengaitkannya dengan string format log tertentu. Entri log yang dihasilkan oleh format ini akan terlihat seperti ini:&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;127.0.0.1 alice Alice &lt;span class="o"&gt;[&lt;/span&gt;06/May/2021:11:26:42 +0200] &lt;span class="s2"&gt;"GET / HTTP/1.1"&lt;/span&gt; 200 3477
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id="c2-format-log-gabungan"&gt;c.2. Format Log Gabungan&lt;/h3&gt;
&lt;p&gt;Format Log Gabungan sangat mirip dengan format log Umum tetapi berisi beberapa informasi tambahan.&lt;/p&gt;

&lt;p&gt;Format ini juga didefinisikan dalam berkas konfigurasi &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/apache2/apache2.conf&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo grep&lt;/span&gt; &lt;span class="nt"&gt;-w&lt;/span&gt; combined /etc/apache2/apache2.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="d-membuat-format-log-kustom"&gt;D. Membuat format log kustom&lt;/h2&gt;
&lt;p&gt;Anda dapat menentukan format log kustom dalam berkas &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/apache2/apache2.conf&lt;/code&gt; dengan menggunakan perintah LogFormat diikuti oleh format keluaran yang sebenarnya dan nama panggilan yang akan digunakan sebagai pengenal untuk format tersebut. Setelah menentukan format kustom, Anda akan meneruskan nama panggilannya ke perintah CustomLog dan memulai ulang layanan apache2.&lt;/p&gt;

&lt;p&gt;Dalam contoh ini, kita akan membuat format log bernama custom yang terlihat seperti ini:&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;LogFormat &lt;span class="s2"&gt;"%t %H %m %U %q %I %&amp;gt;s %O %{ms}T"&lt;/span&gt; custom
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Buka berkas &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/apache2/apache2.conf&lt;/code&gt; Anda dan tempatkan baris di atas di bawah baris LogFormat lainnya. Ini akan menghasilkan entri log akses dengan detail berikut:&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;%t: tanggal dan waktu permintaan.

%H: protokol permintaan.

%m: metode permintaan.

%U: jalur URL yang diminta.

%q: parameter kueri &lt;span class="o"&gt;(&lt;/span&gt;jika ada&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;

%I: total byte yang diterima termasuk header permintaan.

%&amp;gt;s: kode status HTTP akhir.

%O: jumlah byte yang dikirim dalam respons.

%&lt;span class="o"&gt;{&lt;/span&gt;ms&lt;span class="o"&gt;}&lt;/span&gt;T: waktu yang dibutuhkan untuk menghasilkan respons dalam milidetik.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id="d1-mengubah-lokasi-default-file-log-apache"&gt;d.1. Mengubah lokasi default file log Apache&lt;/h4&gt;
&lt;p&gt;Untuk mengubah lokasi log default Apache, lakukan hal berikut.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a. Buka berkas konfigurasi Apache menggunakan editor teks. Untuk nano, jalankan.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/apache2/apache2.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Temukan script ErrorLog dan ubah path atau jalurnya. Barisnya terlihat seperti berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ErrorLog &lt;span class="s2"&gt;"/var/log/httpd-error.log"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Untuk mengubah lokasi log akses, gunakan perintah CustomLog. Perintah ini terdiri dari setidaknya dua argumen: jalur dengan nama file dan string format log. Misalnya.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;CustomLog /etc/apache/log/access.log combined
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Agar perubahan file log custom tersebut dapat langsung diterapkan, restart server Apache.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart apache2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Menganalisis log server Apache Anda sangat penting untuk memahami lalu lintas yang masuk ke aplikasi Anda, kesalahan yang terjadi, dan kinerja elemen yang dihadapi pengguna. Setelah membaca artikel di atas, anda lebih dari sekadar memahami log server, mengetahui sumber daya apa yang diakses, siapa yang mengaksesnya, dan berapa lama waktu yang dibutuhkan untuk memproses permintaan sangat penting untuk memahami perilaku pengguna web server apache anda.&lt;/p&gt;

&lt;p&gt;Anda juga perlu memastikan bahwa Anda mengetahui setiap kesalahan yang terjadi sehingga Anda dapat bereaksi sesegera mungkin. Menggabungkannya dengan kebutuhan akan infrastruktur terdistribusi untuk menangani sejumlah besar pengguna bersamaan dan menyediakan ketersediaan tinggi, menggunakan alat observabilitas adalah suatu keharusan.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2025/07/memahami-file-log-apache-cara-melihat.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-4945352520004998695</guid><pubDate>Tue, 01 Apr 2025 14:05:00 +0000</pubDate><atom:updated>2026-11-05T09:11:12.047+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">blogger</category><title>Cara Menambahkan Related Links ke Postingan Blogger</title><description>&lt;p&gt;Sebelum anda bertanya, kami akan jawab terlebih dahulu. Di bawah ini adalah contoh gambar dari beberapa Related Link/Related Post yang ada di Blogger.&lt;/p&gt;


&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfQlg7ObMvGNpa4zX4bui1wst216R2datMmWHqwjdzveaLiOjYPOB9wClSOaS7cnokmzm8GzmrGK6FATToLIWQ2slW0z6X_OpFqg-SWUwuCxCCAwbr5lUx1tWKeEffbiG2otVZanT09SR-pya15bBSPa6BNYJfoiQT1npp6JBY4dj84Q/s1600/related-link-blogger.webp" target="_blank"&gt;
    &lt;img rel="image_src" alt="related link blogger" class="artikel-img" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfQlg7ObMvGNpa4zX4bui1wst216R2datMmWHqwjdzveaLiOjYPOB9wClSOaS7cnokmzm8GzmrGK6FATToLIWQ2slW0z6X_OpFqg-SWUwuCxCCAwbr5lUx1tWKeEffbiG2otVZanT09SR-pya15bBSPa6BNYJfoiQT1npp6JBY4dj84Q/s1600/related-link-blogger.webp" title="related link blogger" /&gt;
    &lt;/a&gt;
    &lt;figcaption class="figure-caption text-center"&gt;
     Hasil dari Menu Related Link di Blogger
    &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;Dengan contoh gambar di atas, sudah sangat jelas seperti apa bentuk atau tampilan dari Related link. Bagi yang sudah berpengalaman dengan blogger pasti sudah tak asing lagi dengan gambar di atas. Tapi, bagi blogger pemula pasti bingung, apa itu Related Link dan apa kegunaannya.&lt;/p&gt;

&lt;p&gt;Related link atau Related Post pada blogger dapat membantu meningkatkan lebih banyak tampilan di blog dan juga meningkatkan SEO ON-Page. Anda Mungkin Juga Menyukai Widget Postingan Terkait atau yang disebut "Related Link", yang menampilkan postingan yang paling relevan dengan artikel saat ini di bagian bawah setiap postingan. Related link menggunakan Label postingan untuk menampilkan postingan terkait yang ditautkan dengannya.&lt;/p&gt;

&lt;p&gt;Related link sangat membantu pengunjung untuk menjelajahi konten blog Anda yang relevan dengan posting saat ini yang pada akhirnya mengurangi rasio pentalan dan meningkatkan peringkat situs web Anda di mesin pencari Google.&lt;/p&gt;

&lt;p&gt;Ini membantu pengunjung untuk menjelajahi konten blog Anda yang relevan dengan posting saat ini yang pada akhirnya mengurangi rasio pentalan dan meningkatkan peringkat situs web Anda di Google.&lt;/p&gt;

&lt;h2 title="a-apa-itu-related-link"&gt;A. Apa itu Related Link&lt;/h2&gt;

&lt;p&gt;Banyak pemilik blog mencurahkan banyak waktu untuk mendapatkan lalu lintas mengalir ke situs dan blog mereka. Namun, mendapatkan lalu lintas untuk tetap berada di blog adalah pertanyaan yang sulit dan apakah untuk tujuan khusus ini tautan Related link dapat sangat membantu.&lt;/p&gt;

&lt;p&gt;Widget Related link atau Related Post salah satu teknik bagian dari pembuatan tautan internal di Blogger. Dengan adanya Related link sangat membantu meningkatkan tampilan halaman. Dengan ini, rasio pentalan pembaca anda menurun. Banyak desain widget Related link dengan beragam tampilan gaya dan corak. Ada yang menggunakan Related link dengan thumbnail, Related link dengan gaya daftar, dan widget Related link berwarna sedang tren saat ini.&lt;/p&gt;

&lt;p&gt;Related link adalah tautan dan thumbnail ke postingan blog terkait lainnya yang ditampilkan bersama dengan satu posting utama. Ini adalah salah satu fitur penting dari desain web untuk amal, bisnis, dan blog yang membantu blogger meningkatkan tampilan halaman dan aspek optimasi mesin pencari (SEO) mereka. Pengunjung postingan tersebut tentu tertarik untuk mengetahui lebih banyak tentang topik tersebut.&lt;/p&gt;

&lt;p&gt;Related link dapat membantu mereka untuk mengeksplorasi lebih banyak tentang topik dari blog yang sama, sehingga membantu meningkatkan tampilan halaman. Dengan bantuan panduan pembuatan tautan SEO, blog anda dapat menyediakan tautan ke posting terkait, yang dengannya blog anda dapat memperoleh manfaat dari aspek SEO.&lt;/p&gt;

&lt;p&gt;Related link bekerja dengan bahasa Javascript, karena mengambil URL postingan dari label posting Saat Ini dan Menampilkannya di tiap halaman blogger. Kita dapat Menambahkan ini Di Bawah Setiap postingan untuk mendapatkan Postingan Serupa agar pembaca dapat membaca dan terlibat lebih banyak. Script Related link sangat ringan sehingga dimuat lebih cepat. Anda dapat menempelkan script Javascript Related link di template blogger anda.&lt;/p&gt;

&lt;h2 title="b-mengapa-related-linkrelated-post-sangat-penting"&gt;B. Mengapa Related Link/Related Post Sangat Penting&lt;/h2&gt;

&lt;p&gt;Penggunaan tautan sering dipandang sebagai bagian penting dari strategi SEO Anda, dan memang demikian. Ada aspek penting lainnya untuk menambahkan tautan ke blog Anda, yang sering kali tampaknya mengambil kursi belakang untuk mendorong peringkat tertinggi. Jika Anda berpikir kembali mengapa Anda memulai blog Anda di tempat pertama, kemungkinan besar karena Anda ingin berbagi pemikiran, pengalaman, pengetahuan, keahlian, dan sumber daya yang Anda temukan dengan orang lain yang tertarik pada hal yang sama. Jika Anda merasa telah kehilangan pandangan tentang kemurnian visi awal Anda untuk blog Anda, ini bisa menjadi saat yang tepat untuk meninjau kembali beberapa prinsip yang mendefinisikan blog yang hebat.&lt;/p&gt;

&lt;p&gt;Mungkin anda bertanya tanya, seberapa penting menerapkan Related link di Blogger. Penting atau tidak penting, ada banyak manfaat yang di dapat oleh para pemilik blog. Tak ada keharusan atau kewajiban untuk menerapkannya di blogger. Tapi kita ambil segi positifnya saja. Meskipun banyak aspek yang diujur oleh Google, Related link ikut menyumbang peningkatan peringkat anda di mesin pencari Google.&lt;/p&gt;

&lt;p&gt;Terkadang Anda mungkin ingin melakukan sesuatu yang ekstra dan menarik dengan blog Anda untuk menarik pengunjung baru dan mendapatkan lebih banyak lalu lintas untuk pendapatan tambahan. Membuat pengunjung blog Anda untuk tinggal dalam jangka waktu yang lama adalah pekerjaan yang sulit tetapi itu sangat berguna untuk blog Anda, ini akan membantu Anda mengurangi rasio pentalan Anda dengan sangat cepat, semakin banyak pengunjung akan tetap berada di situs Anda, semakin besar peluang untuk mendapatkan pendapatan yang baik melalui iklan dan adsense.&lt;/p&gt;

&lt;div&gt;
&lt;iframe class='audiomp3' frameborder='0' allow="autoplay" height="300px" src="https://drive.google.com/file/d/1yM02CKnw2odKx1BGs0-b63KSgsd6ubio/preview" width="100%"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 title="c-menambahkan-script-related-linkrelated-post-di-blogger"&gt;C. Menambahkan Script Related Link/Related Post di Blogger&lt;/h2&gt;
&lt;p&gt;Sperti telah kita bahas pada bagian di atas, script related post terdiri dari tag blogger, CSS dan Javascript. Agar Related Post dapat tampilan ditiap halaman postingan, anda harus menambahkan beberapa script tersebut ke dalam kode blogger yang ada di template blogger anda.&lt;/p&gt;

&lt;p&gt;Di bawah ini adalah beberapa contoh script related link/related psot yang bisa anda terapkan pada blogger anda.&lt;/p&gt;

&lt;h3 title="1-contoh-script-ke-1"&gt;1. Contoh Script KE-1&lt;/h3&gt;
&lt;p&gt;Untuk meletakkan script related link anda harus berada di tampilan editor halaman postingan Blogger, kemudian anda klik tanda "Pensil" yang ada di pojok kanan atas halaman editor postingan tersebut. Ikuti petunjuk di bawah ini untuk menempatkan scriptnya.&lt;/p&gt;

&lt;p&gt;Perlu anda ketahui, pada contoh ini, kita menggunakan template blogger default "contempo". Tujuannya adalah biar anda mudah mengikuti dan mempraktekkannya.&lt;/p&gt;

&lt;p&gt;Setelah anda mengganti template blogger anda dengan template default blogger, lanjutkan dengan mengetikkan script di bawah ini dan letakkan di bagian atas dari kode &lt;code class="language-plaintext highlighter-rouge"&gt;&amp;lt;/head&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;b:if &lt;span class="nv"&gt;cond&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:blog.pageType == &amp;amp;quot;item&amp;amp;quot;'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&amp;lt;style &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/css'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;#related-posts { &lt;/span&gt;
    float:left&lt;span class="p"&gt;;&lt;/span&gt;
    width:auto&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="c"&gt;#related-posts h2 { &lt;/span&gt;
    margin-top: 10px&lt;span class="p"&gt;;&lt;/span&gt;
    background:none&lt;span class="p"&gt;;&lt;/span&gt;padding:3px&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="c"&gt;#related-posts .related_img { &lt;/span&gt;
    margin:5px&lt;span class="p"&gt;;&lt;/span&gt;
    border:4px solid &lt;span class="c"&gt;#f2f2f2;&lt;/span&gt;
    width:105px&lt;span class="p"&gt;;&lt;/span&gt;height:105px&lt;span class="p"&gt;;&lt;/span&gt;
    transition:all 300ms ease-in-out&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;-webkit-transition&lt;/span&gt;:all 300ms ease-in-out&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;-moz-transition&lt;/span&gt;:all 300ms ease-in-out&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;-o-transition&lt;/span&gt;:all 300ms ease-in-out&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;-ms-transition&lt;/span&gt;:all 300ms ease-in-out&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="c"&gt;#related-title {&lt;/span&gt;
    color: &lt;span class="c"&gt;#222;&lt;/span&gt;
    line-height: 16px&lt;span class="p"&gt;;&lt;/span&gt;
    padding: 0 10px&lt;span class="p"&gt;;&lt;/span&gt;
    text-align: center&lt;span class="p"&gt;;&lt;/span&gt;
    text-shadow: 0 2px 2px &lt;span class="c"&gt;#fff;&lt;/span&gt;
    width: 100px&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="c"&gt;#related-posts .related_img:hover{ &lt;/span&gt;
    opacity:.7&lt;span class="p"&gt;;&lt;/span&gt;
    filter:alpha&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;opacity&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;70&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;-moz-opacity&lt;/span&gt;:.7&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nt"&gt;-khtml-opacity&lt;/span&gt;:.7
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="c"&gt;#related-title:hover { &lt;/span&gt;
    text-decoration: underline&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="o"&gt;}&lt;/span&gt;
&amp;lt;/style&amp;gt;
&amp;lt;script &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/javascript'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
//&amp;lt;&lt;span class="o"&gt;![&lt;/span&gt;CDATA[
&lt;span class="nv"&gt;imgr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;new Array&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;imgr[0]&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjja63nUZqiq17kKK6pBmqAX-9m1lblgffBt_fMzi63DGOEpfuLhhRbS9D8TGZpGYrqb98og9NydZY3rgvIwzqKx6Mom7jT9w2rR6O6xW55oQQsn33H-UlMsGN9lroLoAMjK7Qt2apldeQq/s1600/no-thumbnail.png"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;showRandomImg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;aBold&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;summaryPost&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;400&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;summaryTitle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;20&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;numposts1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;12&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;numposts2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;function &lt;/span&gt;removeHtmlTag&lt;span class="o"&gt;(&lt;/span&gt;strx,chop&lt;span class="o"&gt;){&lt;/span&gt;var &lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;strx.split&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;i&amp;lt;s.length&lt;span class="p"&gt;;&lt;/span&gt;i++&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;s[i].indexOf&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&amp;gt;"&lt;/span&gt;&lt;span class="o"&gt;)!=&lt;/span&gt;&lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="o"&gt;){&lt;/span&gt;s[i]&lt;span class="o"&gt;=&lt;/span&gt;s[i].substring&lt;span class="o"&gt;(&lt;/span&gt;s[i].indexOf&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&amp;gt;"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;+1,s[i].length&lt;span class="o"&gt;)}}&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s.join&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s.substring&lt;span class="o"&gt;(&lt;/span&gt;0,chop-1&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;return &lt;/span&gt;s&lt;span class="o"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;function &lt;/span&gt;showrecentposts1&lt;span class="o"&gt;(&lt;/span&gt;json&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="nv"&gt;j&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;showRandomImg&lt;span class="o"&gt;)&lt;/span&gt;?Math.floor&lt;span class="o"&gt;((&lt;/span&gt;imgr.length+1&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;Math.random&lt;span class="o"&gt;())&lt;/span&gt;:0&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;img&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;new Array&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;numposts2&amp;lt;&lt;span class="o"&gt;=&lt;/span&gt;json.feed.entry.length&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="nv"&gt;maxpost&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;numposts2&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;maxpost&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;json.feed.entry.length&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;i&amp;lt;maxpost&lt;span class="p"&gt;;&lt;/span&gt;i++&lt;span class="o"&gt;){&lt;/span&gt;var &lt;span class="nv"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;json.feed.entry[i]&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;posttitle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;entry.title.&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;var pcm&lt;span class="p"&gt;;&lt;/span&gt;var posturl&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;json.feed.entry.length&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;k&amp;lt;entry.link.length&lt;span class="p"&gt;;&lt;/span&gt;k++&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;entry.link[k].rel&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;'alternate'&lt;/span&gt;&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="nv"&gt;posturl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;entry.link[k].href&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nb"&gt;break&lt;/span&gt;&lt;span class="o"&gt;}}&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;k&amp;lt;entry.link.length&lt;span class="p"&gt;;&lt;/span&gt;k++&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;entry.link[k].rel&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;'replies'&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;entry.link[k].type&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;'text/html'&lt;/span&gt;&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="nv"&gt;pcm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;entry.link[k].title.split&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;" "&lt;/span&gt;&lt;span class="o"&gt;)[&lt;/span&gt;0]&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nb"&gt;break&lt;/span&gt;&lt;span class="o"&gt;}}&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"content"&lt;/span&gt;&lt;span class="k"&gt;in &lt;/span&gt;entry&lt;span class="o"&gt;){&lt;/span&gt;var &lt;span class="nv"&gt;postcontent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;entry.content.&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"summary"&lt;/span&gt;&lt;span class="k"&gt;in &lt;/span&gt;entry&lt;span class="o"&gt;){&lt;/span&gt;var &lt;span class="nv"&gt;postcontent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;entry.summary.&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else &lt;/span&gt;var &lt;span class="nv"&gt;postcontent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;postdate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;entry.published.&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;j&amp;gt;imgr.length-1&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;j&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;img[i]&lt;span class="o"&gt;=&lt;/span&gt;imgr[j]&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postcontent&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s.indexOf&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;img"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s.indexOf&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"src=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;,a&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s.indexOf&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;,b+5&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s.substr&lt;span class="o"&gt;(&lt;/span&gt;b+5,c-b-5&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;((&lt;/span&gt;a!&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="o"&gt;)&amp;amp;&amp;amp;(&lt;/span&gt;b!&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="o"&gt;)&amp;amp;&amp;amp;(&lt;/span&gt;c!&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="o"&gt;)&amp;amp;&amp;amp;(&lt;/span&gt;d!&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;img[i]&lt;span class="o"&gt;=&lt;/span&gt;d&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;month&lt;/span&gt;&lt;span class="o"&gt;=[&lt;/span&gt;1,2,3,4,5,6,7,8,9,10,11,12]&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;month2&lt;/span&gt;&lt;span class="o"&gt;=[&lt;/span&gt;&lt;span class="s2"&gt;"Jan"&lt;/span&gt;,&lt;span class="s2"&gt;"Feb"&lt;/span&gt;,&lt;span class="s2"&gt;"Mar"&lt;/span&gt;,&lt;span class="s2"&gt;"Apr"&lt;/span&gt;,&lt;span class="s2"&gt;"May"&lt;/span&gt;,&lt;span class="s2"&gt;"Jun"&lt;/span&gt;,&lt;span class="s2"&gt;"Jul"&lt;/span&gt;,&lt;span class="s2"&gt;"Aug"&lt;/span&gt;,&lt;span class="s2"&gt;"Sep"&lt;/span&gt;,&lt;span class="s2"&gt;"Oct"&lt;/span&gt;,&lt;span class="s2"&gt;"Nov"&lt;/span&gt;,&lt;span class="s2"&gt;"Dec"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;day&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postdate.split&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"-"&lt;/span&gt;&lt;span class="o"&gt;)[&lt;/span&gt;2].substring&lt;span class="o"&gt;(&lt;/span&gt;0,2&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;m&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postdate.split&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"-"&lt;/span&gt;&lt;span class="o"&gt;)[&lt;/span&gt;1]&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postdate.split&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"-"&lt;/span&gt;&lt;span class="o"&gt;)[&lt;/span&gt;0]&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;u2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;u2&amp;lt;month.length&lt;span class="p"&gt;;&lt;/span&gt;u2++&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;parseInt&lt;span class="o"&gt;(&lt;/span&gt;m&lt;span class="o"&gt;)==&lt;/span&gt;month[u2]&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;month2[u2]&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nb"&gt;break&lt;/span&gt;&lt;span class="o"&gt;}}&lt;/span&gt;var &lt;span class="nv"&gt;daystr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;day+&lt;span class="s1"&gt;' '&lt;/span&gt;+m+&lt;span class="s1"&gt;' '&lt;/span&gt;+y&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;pcm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;a href="'&lt;/span&gt;+posturl+&lt;span class="s1"&gt;'"&amp;gt;'&lt;/span&gt;+pcm+&lt;span class="s1"&gt;' comments&amp;lt;/a&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;trtd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;div class="col_maskolis"&amp;gt;&amp;lt;h2 class="posttitle"&amp;gt;&amp;lt;a href="'&lt;/span&gt;+posturl+&lt;span class="s1"&gt;'"&amp;gt;'&lt;/span&gt;+posttitle+&lt;span class="s1"&gt;'&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;&amp;lt;a href="'&lt;/span&gt;+posturl+&lt;span class="s1"&gt;'"&amp;gt;&amp;lt;img class="related_img" src="'&lt;/span&gt;+img[i]+&lt;span class="s1"&gt;'"/&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;div class="clear"&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;document.write&lt;span class="o"&gt;(&lt;/span&gt;trtd&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;j++&lt;span class="o"&gt;}}&lt;/span&gt;var &lt;span class="nv"&gt;relatedTitles&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;new Array&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;relatedTitlesNum&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;relatedUrls&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;new Array&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;thumburl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;new Array&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;function &lt;/span&gt;related_results_labels_thumbs&lt;span class="o"&gt;(&lt;/span&gt;json&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;i&amp;lt;json.feed.entry.length&lt;span class="p"&gt;;&lt;/span&gt;i++&lt;span class="o"&gt;){&lt;/span&gt;var &lt;span class="nv"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;json.feed.entry[i]&lt;span class="p"&gt;;&lt;/span&gt;relatedTitles[relatedTitlesNum]&lt;span class="o"&gt;=&lt;/span&gt;entry.title.&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;try&lt;span class="o"&gt;{&lt;/span&gt;thumburl[relatedTitlesNum]&lt;span class="o"&gt;=&lt;/span&gt;entry.gform_foot.url&lt;span class="o"&gt;}&lt;/span&gt;catch&lt;span class="o"&gt;(&lt;/span&gt;error&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;entry.content.&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s.indexOf&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;img"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s.indexOf&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"src=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;,a&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s.indexOf&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;,b+5&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s.substr&lt;span class="o"&gt;(&lt;/span&gt;b+5,c-b-5&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;((&lt;/span&gt;a!&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="o"&gt;)&amp;amp;&amp;amp;(&lt;/span&gt;b!&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="o"&gt;)&amp;amp;&amp;amp;(&lt;/span&gt;c!&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="o"&gt;)&amp;amp;&amp;amp;(&lt;/span&gt;d!&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="o"&gt;)){&lt;/span&gt;thumburl[relatedTitlesNum]&lt;span class="o"&gt;=&lt;/span&gt;d&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else &lt;/span&gt;thumburl[relatedTitlesNum]&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjja63nUZqiq17kKK6pBmqAX-9m1lblgffBt_fMzi63DGOEpfuLhhRbS9D8TGZpGYrqb98og9NydZY3rgvIwzqKx6Mom7jT9w2rR6O6xW55oQQsn33H-UlMsGN9lroLoAMjK7Qt2apldeQq/s1600/no-thumbnail.png'&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;k&amp;lt;entry.link.length&lt;span class="p"&gt;;&lt;/span&gt;k++&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;entry.link[k].rel&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;'alternate'&lt;/span&gt;&lt;span class="o"&gt;){&lt;/span&gt;relatedUrls[relatedTitlesNum]&lt;span class="o"&gt;=&lt;/span&gt;entry.link[k].href&lt;span class="p"&gt;;&lt;/span&gt;relatedTitlesNum++&lt;span class="o"&gt;}}}}&lt;/span&gt;&lt;span class="k"&gt;function &lt;/span&gt;removeRelatedDuplicates_thumbs&lt;span class="o"&gt;(){&lt;/span&gt;var &lt;span class="nv"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;new Array&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;tmp2&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;new Array&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;tmp3&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;new Array&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;i&amp;lt;relatedUrls.length&lt;span class="p"&gt;;&lt;/span&gt;i++&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(!&lt;/span&gt;contains_thumbs&lt;span class="o"&gt;(&lt;/span&gt;tmp,relatedUrls[i]&lt;span class="o"&gt;)){&lt;/span&gt;tmp.length+&lt;span class="o"&gt;=&lt;/span&gt;1&lt;span class="p"&gt;;&lt;/span&gt;tmp[tmp.length-1]&lt;span class="o"&gt;=&lt;/span&gt;relatedUrls[i]&lt;span class="p"&gt;;&lt;/span&gt;tmp2.length+&lt;span class="o"&gt;=&lt;/span&gt;1&lt;span class="p"&gt;;&lt;/span&gt;tmp3.length+&lt;span class="o"&gt;=&lt;/span&gt;1&lt;span class="p"&gt;;&lt;/span&gt;tmp2[tmp2.length-1]&lt;span class="o"&gt;=&lt;/span&gt;relatedTitles[i]&lt;span class="p"&gt;;&lt;/span&gt;tmp3[tmp3.length-1]&lt;span class="o"&gt;=&lt;/span&gt;thumburl[i]&lt;span class="o"&gt;}}&lt;/span&gt;&lt;span class="nv"&gt;relatedTitles&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;tmp2&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;relatedUrls&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;tmp&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;thumburl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;tmp3&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;function &lt;/span&gt;contains_thumbs&lt;span class="o"&gt;(&lt;/span&gt;a,e&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;j&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;j&amp;lt;a.length&lt;span class="p"&gt;;&lt;/span&gt;j++&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;a[j]&lt;span class="o"&gt;==&lt;/span&gt;e&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;function &lt;/span&gt;printRelatedLabels_thumbs&lt;span class="o"&gt;(){&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;i&amp;lt;relatedUrls.length&lt;span class="p"&gt;;&lt;/span&gt;i++&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;((&lt;/span&gt;relatedUrls[i]&lt;span class="o"&gt;==&lt;/span&gt;currentposturl&lt;span class="o"&gt;)||(!(&lt;/span&gt;relatedTitles[i]&lt;span class="o"&gt;))){&lt;/span&gt;relatedUrls.splice&lt;span class="o"&gt;(&lt;/span&gt;i,1&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;relatedTitles.splice&lt;span class="o"&gt;(&lt;/span&gt;i,1&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;thumburl.splice&lt;span class="o"&gt;(&lt;/span&gt;i,1&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;i--&lt;span class="o"&gt;}}&lt;/span&gt;var &lt;span class="nv"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Math.floor&lt;span class="o"&gt;((&lt;/span&gt;relatedTitles.length-1&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;Math.random&lt;span class="o"&gt;())&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;var &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;relatedTitles.length&amp;gt;0&lt;span class="o"&gt;)&lt;/span&gt;document.write&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;h2&amp;gt;'&lt;/span&gt;+relatedpoststitle+&lt;span class="s1"&gt;'&amp;lt;/h2&amp;gt;'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;document.write&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;div style="clear: both;"/&amp;gt;'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;i&amp;lt;relatedTitles.length&amp;amp;&amp;amp;i&amp;lt;20&amp;amp;&amp;amp;i&amp;lt;maxresults&lt;span class="o"&gt;){&lt;/span&gt;document.write&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;a style="text-decoration:none;margin:0 4px 10px 0;float:left;'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;i!&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;document.write&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'"'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;else &lt;/span&gt;document.write&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'"'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;document.write&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;' href="'&lt;/span&gt;+relatedUrls[r]+&lt;span class="s1"&gt;'"&amp;gt;&amp;lt;img class="related_img" src="'&lt;/span&gt;+thumburl[r]+&lt;span class="s1"&gt;'"/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;div id="related-title"&amp;gt;'&lt;/span&gt;+relatedTitles[r]+&lt;span class="s1"&gt;'&amp;lt;/div&amp;gt;&amp;lt;/a&amp;gt;'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;r&amp;lt;relatedTitles.length-1&lt;span class="o"&gt;){&lt;/span&gt;r++&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="o"&gt;}&lt;/span&gt;i++&lt;span class="o"&gt;}&lt;/span&gt;document.write&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;relatedUrls.splice&lt;span class="o"&gt;(&lt;/span&gt;0,relatedUrls.length&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;thumburl.splice&lt;span class="o"&gt;(&lt;/span&gt;0,thumburl.length&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;relatedTitles.splice&lt;span class="o"&gt;(&lt;/span&gt;0,relatedTitles.length&lt;span class="o"&gt;)}&lt;/span&gt;
//]]&amp;gt;
&amp;lt;/script&amp;gt;
&amp;lt;/b:if&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah itu, anda letakkan script ini, di bawah kode &lt;code class="language-plaintext highlighter-rouge"&gt;&amp;lt;data:post.body/&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;b:if &lt;span class="nv"&gt;cond&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:blog.pageType == &amp;amp;quot;item&amp;amp;quot;'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&amp;lt;div &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'related-posts'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&amp;lt;b:loop &lt;span class="nv"&gt;values&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:post.labels'&lt;/span&gt; &lt;span class="nv"&gt;var&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'label'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&amp;lt;b:if &lt;span class="nv"&gt;cond&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:label.isLast != &amp;amp;quot;true&amp;amp;quot;'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&amp;lt;/b:if&amp;gt;
&amp;lt;b:if &lt;span class="nv"&gt;cond&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:blog.pageType == &amp;amp;quot;item&amp;amp;quot;'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&amp;lt;script &lt;span class="nb"&gt;expr&lt;/span&gt;:src&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;amp;quot;/feeds/posts/default/-/&amp;amp;quot; + data:label.name + &amp;amp;quot;?alt=json-in-script&amp;amp;amp;callback=related_results_labels_thumbs&amp;amp;amp;max-results=6&amp;amp;quot;'&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/javascript'&lt;/span&gt;/&amp;gt;&amp;lt;/b:if&amp;gt;&amp;lt;/b:loop&amp;gt;
&amp;lt;script &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/javascript'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
var &lt;span class="nv"&gt;currentposturl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;&amp;lt;data:post.url/&amp;gt;&amp;amp;quot&lt;span class="p"&gt;;;&lt;/span&gt;
var &lt;span class="nv"&gt;maxresults&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;6&lt;span class="p"&gt;;&lt;/span&gt;
var &lt;span class="nv"&gt;relatedpoststitle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;&amp;lt;b&amp;gt;Related Posts:&amp;lt;/b&amp;gt;&amp;amp;quot&lt;span class="p"&gt;;;&lt;/span&gt;
removeRelatedDuplicates_thumbs&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
printRelatedLabels_thumbs&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&amp;lt;/script&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/b:if&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 title="2-contoh-script-ke-2"&gt;2. Contoh Script KE-2&lt;/h3&gt;

&lt;p&gt;Setelah anda berhasil membuat Relatedlink/related post dengan script ke-1, kita lanjutkan dengan contoh script ke-2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Letakkan script berikut, di atas kode &amp;lt;/head&amp;gt; di template blogger anda.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;&lt;span class="nb"&gt;link &lt;/span&gt;&lt;span class="nv"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css'&lt;/span&gt; &lt;span class="nv"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'stylesheet'&lt;/span&gt;/&amp;gt;
&amp;lt;script &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js'&lt;/span&gt;/&amp;gt;
    
&amp;lt;b:if &lt;span class="nv"&gt;cond&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:blog.pageType == &amp;amp;quot;item&amp;amp;quot;'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&amp;lt;style &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/css'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
.related-postspace&lt;span class="o"&gt;{&lt;/span&gt;position:relative&lt;span class="p"&gt;;&lt;/span&gt;margin:0&lt;span class="p"&gt;;&lt;/span&gt;padding:20px 0&lt;span class="o"&gt;}&lt;/span&gt;.related-postspace h4&lt;span class="o"&gt;{&lt;/span&gt;margin:0 0 15px 0&lt;span class="p"&gt;;&lt;/span&gt;font-weight:700&lt;span class="p"&gt;;&lt;/span&gt;font-size:18px&lt;span class="p"&gt;;&lt;/span&gt;padding:0 0 20px 0&lt;span class="p"&gt;;&lt;/span&gt;border-bottom:1px solid rgba&lt;span class="o"&gt;(&lt;/span&gt;0,0,0,0.05&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;text-align:center&lt;span class="o"&gt;}&lt;/span&gt;.related-post-simple-2,.related-post-simple-2 li&lt;span class="o"&gt;{&lt;/span&gt;list-style:none&lt;span class="p"&gt;;&lt;/span&gt;margin:0&lt;span class="p"&gt;;&lt;/span&gt;padding:5px&lt;span class="o"&gt;}&lt;/span&gt;.related-post-simple-2 li&lt;span class="o"&gt;{&lt;/span&gt;overflow:hidden&lt;span class="p"&gt;;&lt;/span&gt;margin:0 auto 10px auto&lt;span class="p"&gt;;&lt;/span&gt;transition:all .3s&lt;span class="o"&gt;}&lt;/span&gt;.related-post-simple-2 li:hover .related-post-item-title&lt;span class="o"&gt;{&lt;/span&gt;color:#e74c3c&lt;span class="o"&gt;}&lt;/span&gt;.related-post-simple-2 .related-post-item-thumbnail&lt;span class="o"&gt;{&lt;/span&gt;border-radius: 2px&lt;span class="p"&gt;;&lt;/span&gt; width: 120px&lt;span class="p"&gt;;&lt;/span&gt; height: 80px&lt;span class="p"&gt;;&lt;/span&gt; max-width: none&lt;span class="p"&gt;;&lt;/span&gt; max-height: none&lt;span class="p"&gt;;&lt;/span&gt; background-color: transparent&lt;span class="p"&gt;;&lt;/span&gt; object-fit: cover&lt;span class="p"&gt;;&lt;/span&gt; border: none&lt;span class="p"&gt;;&lt;/span&gt; float: left&lt;span class="p"&gt;;&lt;/span&gt; margin: 2px 15px 0 0&lt;span class="p"&gt;;&lt;/span&gt; padding: 0&lt;span class="p"&gt;;&lt;/span&gt; transition: box-shadow 0.3s ease 0s&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nt"&gt;-webkit-box-shadow&lt;/span&gt;: 0 2px 2px 0 rgba&lt;span class="o"&gt;(&lt;/span&gt;0,0,0,0.14&lt;span class="o"&gt;)&lt;/span&gt;, 0 1px 5px 0 rgba&lt;span class="o"&gt;(&lt;/span&gt;0,0,0,0.12&lt;span class="o"&gt;)&lt;/span&gt;, 0 3px 1px &lt;span class="nt"&gt;-2px&lt;/span&gt; rgba&lt;span class="o"&gt;(&lt;/span&gt;0,0,0,0.2&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; box-shadow: 0 2px 2px 0 rgba&lt;span class="o"&gt;(&lt;/span&gt;0,0,0,0.14&lt;span class="o"&gt;)&lt;/span&gt;, 0 1px 5px 0 rgba&lt;span class="o"&gt;(&lt;/span&gt;0,0,0,0.12&lt;span class="o"&gt;)&lt;/span&gt;, 0 3px 1px &lt;span class="nt"&gt;-2px&lt;/span&gt; rgba&lt;span class="o"&gt;(&lt;/span&gt;0,0,0,0.2&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}}&lt;/span&gt;.related-post-simple-2 .related-post-item-title&lt;span class="o"&gt;{&lt;/span&gt;color:#222&lt;span class="p"&gt;;&lt;/span&gt;font-size:16px&lt;span class="p"&gt;;&lt;/span&gt;font-weight:700&lt;span class="o"&gt;}&lt;/span&gt;.related-post-simple-2 .related-post-item-title:hover&lt;span class="o"&gt;{&lt;/span&gt;color:#e74c3c&lt;span class="o"&gt;}&lt;/span&gt;.related-post-simple-2 .related-post-item-summary&lt;span class="o"&gt;{&lt;/span&gt;display:block&lt;span class="p"&gt;;&lt;/span&gt;font-size:13px&lt;span class="p"&gt;;&lt;/span&gt;margin:5px auto 0 auto&lt;span class="p"&gt;;&lt;/span&gt;color:#999&lt;span class="o"&gt;}&lt;/span&gt;.related-post-simple-2 .related-post-item-summary .related-post-item-more&lt;span class="o"&gt;{&lt;/span&gt;display:none&lt;span class="o"&gt;}&lt;/span&gt;
@media screen and &lt;span class="o"&gt;(&lt;/span&gt;max-width:750px&lt;span class="o"&gt;){&lt;/span&gt;
.related-post-simple-2 li&lt;span class="o"&gt;{&lt;/span&gt;width:100%&lt;span class="p"&gt;;&lt;/span&gt;float:none&lt;span class="o"&gt;}&lt;/span&gt;
.related-post-simple-2,.related-post-simple-2 li&lt;span class="o"&gt;{&lt;/span&gt;padding:5px 0&lt;span class="o"&gt;}&lt;/span&gt;
.related-post-simple-2 .related-post-item-summary&lt;span class="o"&gt;{&lt;/span&gt;display:none&lt;span class="o"&gt;}}&lt;/span&gt;  
&amp;lt;/style&amp;gt;  
&amp;lt;/b:if&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Lanjutkan dengan menuliskan script berikut ini, di bawah kode &lt;code class="language-plaintext highlighter-rouge"&gt;&amp;lt;data:post.body/&amp;gt;.&lt;/code&gt;&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'related-postspace'&lt;/span&gt; &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'dtostrelated-post'&lt;/span&gt;/&amp;gt;
         &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'clear'&lt;/span&gt;/&amp;gt;
            &amp;lt;script &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/javascript'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
               var labelArray &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&amp;lt;b:if &lt;span class="nv"&gt;cond&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:post.labels'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;lt;b:loop &lt;span class="nv"&gt;values&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:post.labels'&lt;/span&gt; &lt;span class="nv"&gt;var&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'label'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
                         &amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;&amp;lt;data:label.name/&amp;gt;&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;&amp;lt;b:if &lt;span class="nv"&gt;cond&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:label.isLast != &amp;amp;quot;true&amp;amp;quot;'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;,&amp;lt;/b:if&amp;gt;
                     &amp;lt;/b:loop&amp;gt;&amp;lt;/b:if&amp;gt;]&lt;span class="p"&gt;;&lt;/span&gt;
               var relatedPostConfig &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                     homePage: &amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;&amp;lt;data:blog.homepageUrl/&amp;gt;&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;,
                     widgetTitle: &amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;&amp;amp;lt&lt;span class="p"&gt;;&lt;/span&gt;h4&amp;amp;gt&lt;span class="p"&gt;;&lt;/span&gt;Related Posts&amp;amp;lt&lt;span class="p"&gt;;&lt;/span&gt;/h4&amp;amp;gt&lt;span class="p"&gt;;&lt;/span&gt;&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;,
                     numPosts: 5,
                     summaryLength: 160,
                     titleLength: &amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;auto&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;,
                     thumbnailSizew: 120,
                     thumbnailSizeh: 80,
                     noImage: &amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7nv7P6lLgCP5CE02EqdYcbXn4vz4aAAZmkwdNzUizi6ajH1afEm3dQsFR3vKj-kLa7se7kNibQZfs94CA9dcFkZSwUNAOrniF_2expwsai1I27uUK0IdHKPr0XTHgt1AngVGjjwddjII/s1600/noimage1.png&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;,
                     containerId: &amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;dtostrelated-post&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;,
                     newTabLink: &lt;span class="nb"&gt;false&lt;/span&gt;,
                     moreText: &amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;Read More&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;,
                     widgetStyle: 2,
                     callBack: &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
               &lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &amp;lt;/script&amp;gt;
            &amp;lt;script &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/javascript'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
               //&amp;lt;&lt;span class="o"&gt;![&lt;/span&gt;CDATA[
               /&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; Related Post Widget &lt;span class="k"&gt;*&lt;/span&gt;/
               var randomRelatedIndex,showRelatedPost&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;n,m,k&lt;span class="o"&gt;){&lt;/span&gt;var &lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;={&lt;/span&gt;widgetTitle:&lt;span class="s2"&gt;"&amp;lt;h4&amp;gt;Recommended&amp;lt;/h4&amp;gt;"&lt;/span&gt;,widgetStyle:1,homePage:&lt;span class="s2"&gt;"https://blogger.com"&lt;/span&gt;,numPosts:7,summaryLength:370,titleLength:&lt;span class="s2"&gt;"auto"&lt;/span&gt;,thumbnailSizew:150,thumbnailSizeh:100,noImage:&lt;span class="s2"&gt;"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAA3NCSVQICAjb4U/gAAAADElEQVQImWOor68HAAL+AX7vOF2TAAAAAElFTkSuQmCC"&lt;/span&gt;,containerId:&lt;span class="s2"&gt;"related-post"&lt;/span&gt;,newTabLink:false,moreText:&lt;span class="s2"&gt;"Baca Selengkapnya"&lt;/span&gt;,callBack:function&lt;span class="o"&gt;(){}}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var f &lt;span class="k"&gt;in &lt;/span&gt;relatedPostConfig&lt;span class="o"&gt;){&lt;/span&gt;d[f]&lt;span class="o"&gt;=(&lt;/span&gt;relatedPostConfig[f]&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s2"&gt;"undefined"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;?d[f]:relatedPostConfig[f]&lt;span class="o"&gt;}&lt;/span&gt;var &lt;span class="nv"&gt;j&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;a&lt;span class="o"&gt;){&lt;/span&gt;var &lt;span class="nv"&gt;b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;m.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"script"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;b.type&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"text/javascript"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;b.src&lt;span class="o"&gt;=&lt;/span&gt;a&lt;span class="p"&gt;;&lt;/span&gt;k.appendChild&lt;span class="o"&gt;(&lt;/span&gt;b&lt;span class="o"&gt;)}&lt;/span&gt;,o&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;b,a&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;return &lt;/span&gt;Math.floor&lt;span class="o"&gt;(&lt;/span&gt;Math.random&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;a-b+1&lt;span class="o"&gt;))&lt;/span&gt;+b&lt;span class="o"&gt;}&lt;/span&gt;,l&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;a&lt;span class="o"&gt;){&lt;/span&gt;var &lt;span class="nv"&gt;p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;a.length,c,b&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;p&lt;/span&gt;&lt;span class="o"&gt;===&lt;/span&gt;0&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;--p&lt;/span&gt;&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="nv"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Math.floor&lt;span class="o"&gt;(&lt;/span&gt;Math.random&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;p+1&lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;a[p]&lt;span class="p"&gt;;&lt;/span&gt;a[p]&lt;span class="o"&gt;=&lt;/span&gt;a[c]&lt;span class="p"&gt;;&lt;/span&gt;a[c]&lt;span class="o"&gt;=&lt;/span&gt;b&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;return &lt;/span&gt;a&lt;span class="o"&gt;}&lt;/span&gt;,e&lt;span class="o"&gt;=(&lt;/span&gt;typeof &lt;span class="nv"&gt;labelArray&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;labelArray.length&amp;gt;0&lt;span class="o"&gt;)&lt;/span&gt;?&lt;span class="s2"&gt;"/-/"&lt;/span&gt;+l&lt;span class="o"&gt;(&lt;/span&gt;labelArray&lt;span class="o"&gt;)[&lt;/span&gt;0]:&lt;span class="s2"&gt;""&lt;/span&gt;,h&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;b&lt;span class="o"&gt;){&lt;/span&gt;var &lt;span class="nv"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;b.feed.openSearch&lt;span class="nv"&gt;$totalResults&lt;/span&gt;.&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="nt"&gt;-d&lt;/span&gt;.numPosts,a&lt;span class="o"&gt;=&lt;/span&gt;o&lt;span class="o"&gt;(&lt;/span&gt;1,&lt;span class="o"&gt;(&lt;/span&gt;c&amp;gt;0?c:1&lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;j&lt;span class="o"&gt;(&lt;/span&gt;d.homePage.replace&lt;span class="o"&gt;(&lt;/span&gt;/&lt;span class="se"&gt;\/&lt;/span&gt;&lt;span class="nv"&gt;$/&lt;/span&gt;,&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;+&lt;span class="s2"&gt;"/feeds/posts/summary"&lt;/span&gt;+e+&lt;span class="s2"&gt;"?alt=json-in-script&amp;amp;orderby=updated&amp;amp;start-index="&lt;/span&gt;+a+&lt;span class="s2"&gt;"&amp;amp;max-results="&lt;/span&gt;+d.numPosts+&lt;span class="s2"&gt;"&amp;amp;callback=showRelatedPost"&lt;/span&gt;&lt;span class="o"&gt;)}&lt;/span&gt;,g&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;z&lt;span class="o"&gt;){&lt;/span&gt;var &lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;document.getElementById&lt;span class="o"&gt;(&lt;/span&gt;d.containerId&lt;span class="o"&gt;)&lt;/span&gt;,x&lt;span class="o"&gt;=&lt;/span&gt;l&lt;span class="o"&gt;(&lt;/span&gt;z.feed.entry&lt;span class="o"&gt;)&lt;/span&gt;,A&lt;span class="o"&gt;=&lt;/span&gt;d.widgetStyle,c&lt;span class="o"&gt;=&lt;/span&gt;d.widgetTitle+&lt;span class="s1"&gt;'&amp;lt;ul class="related-post-simple-'&lt;/span&gt;+A+&lt;span class="s1"&gt;'"&amp;gt;'&lt;/span&gt;,b&lt;span class="o"&gt;=&lt;/span&gt;d.newTabLink?&lt;span class="s1"&gt;' target="_blank"'&lt;/span&gt;:&lt;span class="s2"&gt;""&lt;/span&gt;,y&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;span style="display:block;clear:both;"&amp;gt;&amp;lt;/span&amp;gt;'&lt;/span&gt;,v,t,w,r,u&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(!&lt;/span&gt;s&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;q&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0&lt;span class="p"&gt;;&lt;/span&gt;q&amp;lt;d.numPosts&lt;span class="p"&gt;;&lt;/span&gt;q++&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;q&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;x.length&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="nb"&gt;break&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="nv"&gt;t&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;x[q].title.&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;w&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;d.titleLength!&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s2"&gt;"auto"&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;d.titleLength&amp;lt;t.length&lt;span class="o"&gt;)&lt;/span&gt;?t.substring&lt;span class="o"&gt;(&lt;/span&gt;0,d.titleLength&lt;span class="o"&gt;)&lt;/span&gt;+&lt;span class="s2"&gt;"&amp;amp;hellip;"&lt;/span&gt;:t&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s2"&gt;"media&lt;/span&gt;&lt;span class="nv"&gt;$thumbnail&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;in &lt;/span&gt;x[q]&amp;amp;&amp;amp;d.thumbnailSizew!&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;?x[q].media&lt;span class="nv"&gt;$thumbnail&lt;/span&gt;.url.replace&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'s72'&lt;/span&gt;, &lt;span class="s1"&gt;'s200'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;:d.noImage&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;u&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s2"&gt;"summary"&lt;/span&gt; &lt;span class="k"&gt;in &lt;/span&gt;x[q]&amp;amp;&amp;amp;d.summaryLength&amp;gt;0&lt;span class="o"&gt;)&lt;/span&gt;?x[q].summary.&lt;span class="nv"&gt;$t&lt;/span&gt;.replace&lt;span class="o"&gt;(&lt;/span&gt;/&amp;lt;br ?&lt;span class="se"&gt;\/&lt;/span&gt;?&amp;gt;/g,&lt;span class="s2"&gt;" "&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;.replace&lt;span class="o"&gt;(&lt;/span&gt;/&amp;lt;.&lt;span class="k"&gt;*&lt;/span&gt;?&amp;gt;/g,&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;.replace&lt;span class="o"&gt;(&lt;/span&gt;/[&amp;lt;&lt;span class="o"&gt;&amp;gt;]&lt;/span&gt;/g,&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;.substring&lt;span class="o"&gt;(&lt;/span&gt;0,d.summaryLength&lt;span class="o"&gt;)&lt;/span&gt;+&lt;span class="s2"&gt;"&amp;amp;hellip;"&lt;/span&gt;:&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var &lt;span class="nv"&gt;p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0,a&lt;span class="o"&gt;=&lt;/span&gt;x[q].link.length&lt;span class="p"&gt;;&lt;/span&gt;p&amp;lt;a&lt;span class="p"&gt;;&lt;/span&gt;p++&lt;span class="o"&gt;){&lt;/span&gt;&lt;span class="nv"&gt;v&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;x[q].link[p].rel&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s2"&gt;"alternate"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;?x[q].link[p].href:&lt;span class="s2"&gt;"#"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;A&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;2&lt;span class="o"&gt;){&lt;/span&gt;c+&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;li&amp;gt;&amp;lt;img alt="" class="related-post-item-thumbnail" src="'&lt;/span&gt;+r+&lt;span class="s1"&gt;'" width="'&lt;/span&gt;+d.thumbnailSizew+&lt;span class="s1"&gt;'" height="'&lt;/span&gt;+d.thumbnailSizeh+&lt;span class="s1"&gt;'"&amp;gt;&amp;lt;a class="related-post-item-title" title="'&lt;/span&gt;+t+&lt;span class="s1"&gt;'" href="'&lt;/span&gt;+v+&lt;span class="s1"&gt;'"'&lt;/span&gt;+b+&lt;span class="s2"&gt;"&amp;gt;"&lt;/span&gt;+w+&lt;span class="s1"&gt;'&amp;lt;/a&amp;gt;&amp;lt;span class="related-post-item-summary"&amp;gt;&amp;lt;span class="related-post-item-summary-text"&amp;gt;'&lt;/span&gt;+u+&lt;span class="s1"&gt;'&amp;lt;/span&amp;gt; &amp;lt;a href="'&lt;/span&gt;+v+&lt;span class="s1"&gt;'" class="related-post-item-more"'&lt;/span&gt;+b+&lt;span class="s2"&gt;"&amp;gt;"&lt;/span&gt;+d.moreText+&lt;span class="s2"&gt;"&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;"&lt;/span&gt;+y+&lt;span class="s2"&gt;"&amp;lt;/li&amp;gt;"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;A&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;3||A&lt;span class="o"&gt;==&lt;/span&gt;4&lt;span class="o"&gt;){&lt;/span&gt;c+&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;li class="related-post-item" tabindex="0"&amp;gt;&amp;lt;a class="related-post-item-title" href="'&lt;/span&gt;+v+&lt;span class="s1"&gt;'"'&lt;/span&gt;+b+&lt;span class="s1"&gt;'&amp;gt;&amp;lt;img alt="" class="related-post-item-thumbnail" src="'&lt;/span&gt;+r+&lt;span class="s1"&gt;'" width="'&lt;/span&gt;+d.thumbnailSizew+&lt;span class="s1"&gt;'" height="'&lt;/span&gt;+d.thumbnailSizeh+&lt;span class="s1"&gt;'"&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;div class="related-post-item-tooltip"&amp;gt;&amp;lt;a class="related-post-item-title" title="'&lt;/span&gt;+t+&lt;span class="s1"&gt;'" href="'&lt;/span&gt;+v+&lt;span class="s1"&gt;'"'&lt;/span&gt;+b+&lt;span class="s2"&gt;"&amp;gt;"&lt;/span&gt;+w+&lt;span class="s2"&gt;"&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;"&lt;/span&gt;+y+&lt;span class="s2"&gt;"&amp;lt;/li&amp;gt;"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;A&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;5&lt;span class="o"&gt;){&lt;/span&gt;c+&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;li class="related-post-item" tabindex="0"&amp;gt;&amp;lt;a class="related-post-item-wrapper" href="'&lt;/span&gt;+v+&lt;span class="s1"&gt;'" title="'&lt;/span&gt;+t+&lt;span class="s1"&gt;'"'&lt;/span&gt;+b+&lt;span class="s1"&gt;'&amp;gt;&amp;lt;img alt="" class="related-post-item-thumbnail" src="'&lt;/span&gt;+r+&lt;span class="s1"&gt;'" width="'&lt;/span&gt;+d.thumbnailSizew+&lt;span class="s1"&gt;'" height="'&lt;/span&gt;+d.thumbnailSizeh+&lt;span class="s1"&gt;'"&amp;gt;&amp;lt;span class="related-post-item-tooltip"&amp;gt;'&lt;/span&gt;+w+&lt;span class="s2"&gt;"&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;"&lt;/span&gt;+y+&lt;span class="s2"&gt;"&amp;lt;/li&amp;gt;"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;A&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;6&lt;span class="o"&gt;){&lt;/span&gt;c+&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;li&amp;gt;&amp;lt;a class="related-post-item-title" title="'&lt;/span&gt;+t+&lt;span class="s1"&gt;'" href="'&lt;/span&gt;+v+&lt;span class="s1"&gt;'"'&lt;/span&gt;+b+&lt;span class="s2"&gt;"&amp;gt;"&lt;/span&gt;+w+&lt;span class="s1"&gt;'&amp;lt;/a&amp;gt;&amp;lt;div class="related-post-item-tooltip"&amp;gt;&amp;lt;img alt="" class="related-post-item-thumbnail" src="'&lt;/span&gt;+r+&lt;span class="s1"&gt;'" width="'&lt;/span&gt;+d.thumbnailSizew+&lt;span class="s1"&gt;'" height="'&lt;/span&gt;+d.thumbnailSizeh+&lt;span class="s1"&gt;'"&amp;gt;&amp;lt;span class="related-post-item-summary"&amp;gt;&amp;lt;span class="related-post-item-summary-text"&amp;gt;'&lt;/span&gt;+u+&lt;span class="s2"&gt;"&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;"&lt;/span&gt;+y+&lt;span class="s2"&gt;"&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;c+&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;li&amp;gt;&amp;lt;a title="'&lt;/span&gt;+t+&lt;span class="s1"&gt;'" href="'&lt;/span&gt;+v+&lt;span class="s1"&gt;'"'&lt;/span&gt;+b+&lt;span class="s2"&gt;"&amp;gt;"&lt;/span&gt;+w+&lt;span class="s2"&gt;"&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;"&lt;/span&gt;&lt;span class="o"&gt;}}}}}&lt;/span&gt;s.innerHTML&lt;span class="o"&gt;=&lt;/span&gt;c+&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;/ul&amp;gt;"&lt;/span&gt;+y&lt;span class="p"&gt;;&lt;/span&gt;d.callBack&lt;span class="o"&gt;()}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;randomRelatedIndex&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;h&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;showRelatedPost&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;g&lt;span class="p"&gt;;&lt;/span&gt;j&lt;span class="o"&gt;(&lt;/span&gt;d.homePage.replace&lt;span class="o"&gt;(&lt;/span&gt;/&lt;span class="se"&gt;\/&lt;/span&gt;&lt;span class="nv"&gt;$/&lt;/span&gt;,&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;+&lt;span class="s2"&gt;"/feeds/posts/summary"&lt;/span&gt;+e+&lt;span class="s2"&gt;"?alt=json-in-script&amp;amp;orderby=updated&amp;amp;max-results=0&amp;amp;callback=randomRelatedIndex"&lt;/span&gt;&lt;span class="o"&gt;)})(&lt;/span&gt;window,document,document.getElementsByTagName&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"head"&lt;/span&gt;&lt;span class="o"&gt;)[&lt;/span&gt;0]&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
               //]]&amp;gt;
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Sekarang coba anda buka halaamn postingan blogger anda dan lihat hasilnya. Jika anda tak salah dalam copy/paste script ke-2 tersebut hasilnya bisa langsung anda lihat.&lt;/p&gt;

&lt;h3 title="3-contoh-script-ke-3-related-link-di-bagian-tengah-postingan"&gt;3. Contoh Script KE-3 (Related Link di bagian tengah postingan)&lt;/h3&gt;

&lt;p&gt;Pada contoh script ke-3 ini kita akan membuat Related link/post di bagian tengah artikel. Caranya sama saja, yang anda ganti scriptnya saja.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Letakkan script ini, di atas kode &amp;lt;/head&amp;gt; di template blogger anda.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;style &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/css'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
/&lt;span class="k"&gt;*&lt;/span&gt;Articles Related to Middle of Posts&lt;span class="k"&gt;*&lt;/span&gt;/ 
.arpianz&lt;span class="o"&gt;{&lt;/span&gt;background:#FFF&lt;span class="p"&gt;;&lt;/span&gt;position:relative&lt;span class="p"&gt;;&lt;/span&gt;display:inline-block&lt;span class="p"&gt;;&lt;/span&gt;border:2px solid &lt;span class="c"&gt;#DDD;margin:22px 0} &lt;/span&gt;
.arpianz h4&lt;span class="o"&gt;{&lt;/span&gt;background:#393939&lt;span class="p"&gt;;&lt;/span&gt;font-family:Poppins,sans-serif&lt;span class="p"&gt;;&lt;/span&gt;color:#fff&lt;span class="p"&gt;;&lt;/span&gt;font-size:12px&lt;span class="p"&gt;;&lt;/span&gt;font-weight:700&lt;span class="p"&gt;;&lt;/span&gt;position:absolute&lt;span class="p"&gt;;&lt;/span&gt;top:-21px&lt;span class="p"&gt;;&lt;/span&gt;left:2.5%&lt;span class="p"&gt;;&lt;/span&gt;padding:8px 18px&lt;span class="p"&gt;;&lt;/span&gt;border:1px solid &lt;span class="c"&gt;#DDD;border-radius:5px;text-transform:uppercase} &lt;/span&gt;
.arpianz h4:before&lt;span class="o"&gt;{&lt;/span&gt;content: &amp;amp;#39&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="se"&gt;\f&lt;/span&gt;043&amp;amp;#39&lt;span class="p"&gt;;;&lt;/span&gt;right: 10px&lt;span class="p"&gt;;&lt;/span&gt;bottom: 0&lt;span class="p"&gt;;&lt;/span&gt;font-family:FontAwesome&lt;span class="p"&gt;;&lt;/span&gt;font-style: normal&lt;span class="p"&gt;;&lt;/span&gt;font-weight: 400&lt;span class="p"&gt;;&lt;/span&gt;margin: 0 10px 0 0&lt;span class="p"&gt;;&lt;/span&gt;color: &lt;span class="c"&gt;#fff;} &lt;/span&gt;
.arpianz ul&lt;span class="o"&gt;{&lt;/span&gt;padding:12px 41px 0&lt;span class="p"&gt;;&lt;/span&gt;list-style:none&lt;span class="o"&gt;}&lt;/span&gt; 
.arpianz ul a:before&lt;span class="o"&gt;{&lt;/span&gt;font-family:fontawesome&lt;span class="p"&gt;;&lt;/span&gt;content:&amp;amp;#39&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="se"&gt;\2&lt;/span&gt;5b6&amp;amp;#39&lt;span class="p"&gt;;;&lt;/span&gt;padding-right:10px&lt;span class="o"&gt;}&lt;/span&gt; 
.arpianz li&lt;span class="o"&gt;{&lt;/span&gt;border-radius:5px&lt;span class="p"&gt;;&lt;/span&gt;border-bottom:1px solid rgba&lt;span class="o"&gt;(&lt;/span&gt;227,227,227,0.33&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;line-height:1.7em&lt;span class="o"&gt;}&lt;/span&gt; 
.arpianz li:hover &lt;span class="o"&gt;{&lt;/span&gt;text-decoration: underline&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&amp;lt;/style&amp;gt;
    
&amp;lt;b:if &lt;span class="nv"&gt;cond&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:blog.pageType == &amp;amp;quot;item&amp;amp;quot;'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
&amp;lt;script &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/javascript'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
//&amp;lt;&lt;span class="o"&gt;![&lt;/span&gt;CDATA[ 
// Articles Related to Middle of Posts by Technical Arp 
var arpianz &lt;span class="o"&gt;=&lt;/span&gt; new Array&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; var arpianzNum &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt; var relatedUrls &lt;span class="o"&gt;=&lt;/span&gt; new Array&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;function &lt;/span&gt;related_results_labels&lt;span class="o"&gt;(&lt;/span&gt;json&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;var i &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt; i &amp;lt; json.feed.entry.length&lt;span class="p"&gt;;&lt;/span&gt; i++&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; var entry &lt;span class="o"&gt;=&lt;/span&gt; json.feed.entry[i]&lt;span class="p"&gt;;&lt;/span&gt; arpianz[arpianzNum] &lt;span class="o"&gt;=&lt;/span&gt; entry.title.&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;var k &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt; k &amp;lt; entry.link.length&lt;span class="p"&gt;;&lt;/span&gt; k++&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;entry.link[k].rel &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;'alternate'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;relatedUrls[arpianzNum] &lt;span class="o"&gt;=&lt;/span&gt; entry.link[k].href&lt;span class="p"&gt;;&lt;/span&gt; arpianzNum++&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;}}}}&lt;/span&gt; &lt;span class="k"&gt;function &lt;/span&gt;removeRelatedDuplicates&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; var tmp &lt;span class="o"&gt;=&lt;/span&gt; new Array&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; var tmp2 &lt;span class="o"&gt;=&lt;/span&gt; new Array&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var i &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt; i &amp;lt; relatedUrls.length&lt;span class="p"&gt;;&lt;/span&gt; i++&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(!&lt;/span&gt;contains&lt;span class="o"&gt;(&lt;/span&gt;tmp, relatedUrls[i]&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; tmp.length +&lt;span class="o"&gt;=&lt;/span&gt; 1&lt;span class="p"&gt;;&lt;/span&gt; tmp[tmp.length - 1] &lt;span class="o"&gt;=&lt;/span&gt; relatedUrls[i]&lt;span class="p"&gt;;&lt;/span&gt; tmp2.length +&lt;span class="o"&gt;=&lt;/span&gt; 1&lt;span class="p"&gt;;&lt;/span&gt; tmp2[tmp2.length - 1] &lt;span class="o"&gt;=&lt;/span&gt; arpianz[i]&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;}}&lt;/span&gt; arpianz &lt;span class="o"&gt;=&lt;/span&gt; tmp2&lt;span class="p"&gt;;&lt;/span&gt; relatedUrls &lt;span class="o"&gt;=&lt;/span&gt; tmp&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;function &lt;/span&gt;contains&lt;span class="o"&gt;(&lt;/span&gt;a, e&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;var j &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt; j &amp;lt; a.length&lt;span class="p"&gt;;&lt;/span&gt; j++&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;a[j]&lt;span class="o"&gt;==&lt;/span&gt;e&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;function &lt;/span&gt;printRelatedLabels&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; var r &lt;span class="o"&gt;=&lt;/span&gt; Math.floor&lt;span class="o"&gt;((&lt;/span&gt;arpianz.length - 1&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; Math.random&lt;span class="o"&gt;())&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; var i &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt; document.write&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;ul&amp;gt;'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;i &amp;lt; arpianz.length &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; i &amp;lt; 20&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; document.write&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;li&amp;gt;&amp;lt;a href="'&lt;/span&gt; + relatedUrls[r] + &lt;span class="s1"&gt;'"&amp;gt;'&lt;/span&gt; + arpianz[r] + &lt;span class="s1"&gt;'&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;r &amp;lt; arpianz.length - 1&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; r++&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; r &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; i++&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; document.write&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'&amp;lt;/ul&amp;gt;'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; 
//]]&amp;gt; 
&amp;lt;/script&amp;gt; 
&amp;lt;/b:if&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Letakkan script berikut ini, di bawah kode &lt;data:post .body=""&gt;&lt;/data:post&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;div &lt;span class="nb"&gt;expr&lt;/span&gt;:id&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;amp;quot;post1&amp;amp;quot; + data:post.id'&lt;/span&gt;/&amp;gt;
&amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'arpianz'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
&amp;lt;b:if &lt;span class="nv"&gt;cond&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:post.labels'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
&amp;lt;b:loop &lt;span class="nv"&gt;values&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:post.labels'&lt;/span&gt; &lt;span class="nv"&gt;var&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'label'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
&amp;lt;b:if &lt;span class="nv"&gt;cond&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'data:blog.pageType == &amp;amp;quot;item&amp;amp;quot;'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
&amp;lt;script &lt;span class="nb"&gt;expr&lt;/span&gt;:src&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;amp;quot;/feeds/posts/default/-/&amp;amp;quot; + data:label.name + &amp;amp;quot;?alt=json-in-script&amp;amp;amp;callback=related_results_labels&amp;amp;amp;max-results=8&amp;amp;quot;'&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/javascript'&lt;/span&gt;/&amp;gt; 
&amp;lt;/b:if&amp;gt; 
&amp;lt;/b:loop&amp;gt; 
&amp;lt;/b:if&amp;gt; 
&amp;lt;h4&amp;gt;Also Read&amp;lt;/h4&amp;gt; 
&amp;lt;script &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/javascript'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
removeRelatedDuplicates&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
printRelatedLabels&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&amp;lt;/script&amp;gt; 
&amp;lt;/div&amp;gt; 
&amp;lt;div &lt;span class="nb"&gt;expr&lt;/span&gt;:id&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'&amp;amp;quot;post2&amp;amp;quot; + data:post.id'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;lt;p&amp;gt;&amp;lt;data:post.body/&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt; 
&amp;lt;script &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'text/javascript'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
var &lt;span class="nv"&gt;obj0&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;document.getElementById&lt;span class="o"&gt;(&lt;/span&gt;&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;post1&amp;lt;data:post.id/&amp;gt;&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
var &lt;span class="nv"&gt;obj1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;document.getElementById&lt;span class="o"&gt;(&lt;/span&gt;&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;post2&amp;lt;data:post.id/&amp;gt;&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
var &lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;obj1.innerHTML&lt;span class="p"&gt;;&lt;/span&gt; 
var &lt;span class="nv"&gt;t&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s.substr&lt;span class="o"&gt;(&lt;/span&gt;0,s.length/2&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
var &lt;span class="nv"&gt;r&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;t.lastIndexOf&lt;span class="o"&gt;(&lt;/span&gt;&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;&amp;amp;lt&lt;span class="p"&gt;;&lt;/span&gt;br&amp;amp;gt&lt;span class="p"&gt;;&lt;/span&gt;&amp;amp;quot&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;r&amp;amp;gt&lt;span class="p"&gt;;&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;obj0.innerHTML&lt;span class="o"&gt;=&lt;/span&gt;s.substr&lt;span class="o"&gt;(&lt;/span&gt;0,r&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;obj1.innerHTML&lt;span class="o"&gt;=&lt;/span&gt;s.substr&lt;span class="o"&gt;(&lt;/span&gt;r+4&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; 
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Sampai sini mungkin anda sudah paham cara pembuatan Related link di blogger. Jika anda berminat dan ingin blogger anda terdapat Related link seperti yang kita praktekkan di atas, anda dapat mencobanya. Kami sarankan anda menyesuaikan template anda dengan memilih salah satu dari 3 contoh script di atas.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2025/04/cara-menambahkan-related-links-ke.html</link><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfQlg7ObMvGNpa4zX4bui1wst216R2datMmWHqwjdzveaLiOjYPOB9wClSOaS7cnokmzm8GzmrGK6FATToLIWQ2slW0z6X_OpFqg-SWUwuCxCCAwbr5lUx1tWKeEffbiG2otVZanT09SR-pya15bBSPa6BNYJfoiQT1npp6JBY4dj84Q/s72-c/related-link-blogger.webp" width="72"/><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-4212116360814462036</guid><pubDate>Sun, 02 Feb 2025 15:05:00 +0000</pubDate><atom:updated>2026-11-01T15:53:53.341+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">openbsd</category><title>Cara Instal i2pd di OpenBSD - Client Untuk Jaringan Anonymous I2P</title><description>&lt;p&gt;Keamanan sangat penting di era digital ini. Protokol jaringan seperti Invisible Internet Protocol atau I2P, lapisan jaringan yang memungkinkan Anda tetap anonim di Internet. Dengan I2P, permintaan Anda melewati beberapa node komputer jaringan. Hal ini mempersulit pelacakan pengguna asli dan membantu menjaga anonimitas. Karena I2P terkadang Anda juga dapat mengakses situs yang disensor pemerintah secara anonim.&lt;/p&gt;

&lt;p&gt;I2pd atau daemon i2p adalah klien i2p sumber terbuka berbasis C++. Ini adalah lapisan jaringan anonim di mana komunikasi dienkripsi dan alamat IP pengguna tidak diungkapkan. Dimulai pada tahun 2014 oleh tim &lt;a href="https://github.com/PurpleI2P/i2pd"&gt;PURPRLEI2P&lt;/a&gt; dan pertama kali dirilis pada tahun 2015. Teknologi ini dirancang agar lebih aman, andal, dan berkinerja lebih baik daripada I2P.&lt;/p&gt;

&lt;p&gt;Pada artikel sebelumnya, kami telah menulis tentang I2P yang dijalankan di sistem OpenBSD. Mungkin anda bertanya, apa bedanya I2P dan I2PD. Baiklah, agar memperjelas pembahasan di atas, kami akan coba uraikan antara I2P dan I2PD.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/openbsd/ports/blob/master/net/i2p/pkg/DESCR"&gt;I2P&lt;/a&gt; adalah jaringan overlay anonim, jaringan dalam jaringan. Jaringan ini dimaksudkan untuk melindungi komunikasi dari pengawasan dan pemantauan oleh pihak ketiga seperti ISP. I2P digunakan oleh banyak orang yang peduli dengan privasi mereka: aktivis, orang-orang yang tertindas, jurnalis dan &lt;a href="https://nasional.kompas.com/read/2022/08/15/01000021/apa-itu-whistleblower-dan-contoh-kasusnya?page=all"&gt;whistleblower&lt;/a&gt;, serta orang kebanyakan. Tidak ada jaringan yang bisa "benar-benar anonim". Tujuan berkelanjutan dari I2P adalah untuk membuat serangan semakin sulit dilakukan. Anonimitasnya akan semakin kuat seiring dengan meningkatnya ukuran jaringan dan dengan tinjauan akademis yang berkelanjutan.&lt;/p&gt;

&lt;p&gt;Sedangkan, &lt;a href="https://github.com/openbsd/ports/blob/master/net/i2p/pkg/DESCR"&gt;I2PD&lt;/a&gt; adalah klien berfitur lengkap untuk jaringan I2P yang ditulis dalam C++. I2P (Invisible Internet Project) adalah lapisan jaringan anonim universal. Semua komunikasi melalui I2P bersifat anonim dan dienkripsi ujung ke ujung. Peserta tidak mengungkapkan alamat IP asli mereka satu sama lain. Aplikasi peer-to-peer (mata uang kripto, berbagi berkas) dan klien-ke-server (situs web, pengirim pesan instan, server obrolan) didukung.&lt;/p&gt;

&lt;h2 id="spesifikasi-sistem"&gt;Spesifikasi Sistem&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;root@ns2.datainchi.com&lt;/li&gt;
  &lt;li&gt;OS: OpenBSD 7.6 amd64&lt;/li&gt;
  &lt;li&gt;Host: Acer Aspire M1800&lt;/li&gt;
  &lt;li&gt;Uptime: 8 mins&lt;/li&gt;
  &lt;li&gt;Packages: 42 (pkg_info)&lt;/li&gt;
  &lt;li&gt;Shell: ksh v5.2.14 99/07/13.2&lt;/li&gt;
  &lt;li&gt;Terminal: /dev/ttyp0&lt;/li&gt;
  &lt;li&gt;CPU: Intel Core 2 Duo E8400 (2) @ 3.000GHz&lt;/li&gt;
  &lt;li&gt;Memory: 35MiB / 1775MiB&lt;/li&gt;
  &lt;li&gt;IP Address: 192.168.5.3&lt;/li&gt;
  &lt;li&gt;Versi I2PD: i2pd-2.53.1p0&lt;/li&gt;
  &lt;li&gt;Versi I2P: i2p-2.6.1&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="a-proses-instalasi-i2pd"&gt;A. Proses Instalasi i2pd&lt;/h2&gt;

&lt;p&gt;Setelah anda mengetahu sedikit tentang i2pd dan sistem yang digunakan, kita langsung saja dengan menginstal i2pd. Uuupsâ€¦. nati dulu, sebelum anda menginstal i2pd, ada beberapa dependensi yang harus anda instal terlebih dahulu.&lt;/p&gt;

&lt;h3 id="1-instal-i2p"&gt;1. Instal I2P&lt;/h3&gt;

&lt;p&gt;Dependensi yang pertama yang harus anda instal adalah &lt;code class="language-plaintext highlighter-rouge"&gt;I2P&lt;/code&gt;. Pada artikel ini kami tidak akan menjelaskan cara instal I2P di OpenBSD. Anda baca saja proses instalasi di artikel sebelumnya.&lt;/p&gt;

&lt;h3 id="2-instal-cmake-boost-miniupnpc"&gt;2. Instal cmake boost miniupnpc&lt;/h3&gt;

&lt;p&gt;Dependensi berikutnya yang harus anda instal adalah cmake boost &lt;code class="language-plaintext highlighter-rouge"&gt;miniupnpc&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns2# pkg_add cmake boost miniupnpc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id="3-instal-i2pd"&gt;3. Instal I2PD&lt;/h3&gt;

&lt;p&gt;Setelah semua dependensi di atas telah anda instal semua, kita lanjutkan dengan menginstal i2pd.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns2# pkg_add i2pd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="b-proses-konfigurasi-i2pd"&gt;B. Proses Konfigurasi i2pd&lt;/h2&gt;

&lt;p&gt;Bagian ini merupakan bagian yang sangat penting, karena kita akan mengutak atik file i2pd agar dapat berjalan di server OpenBSD. File konfigurasi utama i2pd berada di &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/i2pd/i2pd.conf&lt;/code&gt;.
Silahkan anda buka file tersebut dan ubah sesuai kebutuhan atau spesifikasi sistem OpenBSD anda. Supaya lebih gampang, anda ikuti panduan di bawah ini saja.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;## Configuration file for a typical i2pd user&lt;/span&gt;
&lt;span class="c"&gt;## See https://i2pd.readthedocs.io/en/latest/user-guide/configuration/&lt;/span&gt;
&lt;span class="c"&gt;## for more options you can use in this file.&lt;/span&gt;

&lt;span class="c"&gt;## Lines that begin with "## " try to explain what's going on. Lines&lt;/span&gt;
&lt;span class="c"&gt;## that begin with just "#" are disabled commands: you can enable them&lt;/span&gt;
&lt;span class="c"&gt;## by removing the "#" symbol.&lt;/span&gt;

&lt;span class="c"&gt;## Tunnels config file&lt;/span&gt;
&lt;span class="c"&gt;## Default: ~/.i2pd/tunnels.conf or /var/lib/i2pd/tunnels.conf&lt;/span&gt;
&lt;span class="c"&gt;# tunconf = /var/lib/i2pd/tunnels.conf&lt;/span&gt;

&lt;span class="c"&gt;## Tunnels config files path&lt;/span&gt;
&lt;span class="c"&gt;## Use that path to store separated tunnels in different config files.&lt;/span&gt;
&lt;span class="c"&gt;## Default: ~/.i2pd/tunnels.d or /var/lib/i2pd/tunnels.d&lt;/span&gt;
&lt;span class="c"&gt;# tunnelsdir = /var/lib/i2pd/tunnels.d&lt;/span&gt;

&lt;span class="c"&gt;## Path to certificates used for verifying .su3, families&lt;/span&gt;
&lt;span class="c"&gt;## Default: ~/.i2pd/certificates or /var/lib/i2pd/certificates&lt;/span&gt;
&lt;span class="c"&gt;# certsdir = /var/lib/i2pd/certificates&lt;/span&gt;

&lt;span class="c"&gt;## Where to write pidfile (default: /run/i2pd.pid, not used in Windows)&lt;/span&gt;
&lt;span class="c"&gt;# pidfile = /run/i2pd.pid&lt;/span&gt;

&lt;span class="c"&gt;## Logging configuration section&lt;/span&gt;
&lt;span class="c"&gt;## By default logs go to stdout with level 'info' and higher&lt;/span&gt;
&lt;span class="c"&gt;## For Windows OS by default logs go to file with level 'warn' and higher&lt;/span&gt;
&lt;span class="c"&gt;##&lt;/span&gt;
&lt;span class="c"&gt;## Logs destination (valid values: stdout, file, syslog)&lt;/span&gt;
&lt;span class="c"&gt;##  * stdout - print log entries to stdout&lt;/span&gt;
&lt;span class="c"&gt;##  * file - log entries to a file&lt;/span&gt;
&lt;span class="c"&gt;##  * syslog - use syslog, see man 3 syslog&lt;/span&gt;
&lt;span class="c"&gt;# log = file&lt;/span&gt;
&lt;span class="c"&gt;## Path to logfile (default: autodetect)&lt;/span&gt;
&lt;span class="c"&gt;# logfile = /var/log/i2pd/i2pd.log&lt;/span&gt;
&lt;span class="c"&gt;## Log messages above this level (debug, info, *warn, error, critical, none)&lt;/span&gt;
&lt;span class="c"&gt;## If you set it to none, logging will be disabled&lt;/span&gt;
&lt;span class="c"&gt;# loglevel = warn&lt;/span&gt;
&lt;span class="c"&gt;## Write full CLF-formatted date and time to log (default: write only time)&lt;/span&gt;
&lt;span class="c"&gt;# logclftime = true&lt;/span&gt;

&lt;span class="c"&gt;## Daemon mode. Router will go to background after start. Ignored on Windows&lt;/span&gt;
&lt;span class="c"&gt;## (default: true)&lt;/span&gt;
daemon &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;

&lt;span class="c"&gt;## Specify a family, router belongs to (default - none)&lt;/span&gt;
&lt;span class="c"&gt;# family =&lt;/span&gt;

&lt;span class="c"&gt;## Network interface to bind to&lt;/span&gt;
&lt;span class="c"&gt;## Updates address4/6 options if they are not set&lt;/span&gt;
&lt;span class="c"&gt;# ifname =&lt;/span&gt;
&lt;span class="c"&gt;## You can specify different interfaces for IPv4 and IPv6&lt;/span&gt;
&lt;span class="c"&gt;# ifname4 =&lt;/span&gt;
&lt;span class="c"&gt;# ifname6 =&lt;/span&gt;

&lt;span class="c"&gt;## Local address to bind transport sockets to&lt;/span&gt;
&lt;span class="c"&gt;## Overrides host option if:&lt;/span&gt;
&lt;span class="c"&gt;## For ipv4: if ipv4 = true and nat = false&lt;/span&gt;
&lt;span class="c"&gt;## For ipv6: if 'host' is not set or ipv4 = true&lt;/span&gt;
&lt;span class="c"&gt;# address4 =&lt;/span&gt;
&lt;span class="c"&gt;# address6 =&lt;/span&gt;

&lt;span class="c"&gt;## External IPv4 or IPv6 address to listen for connections&lt;/span&gt;
&lt;span class="c"&gt;## By default i2pd sets IP automatically&lt;/span&gt;
&lt;span class="c"&gt;## Sets published NTCP2v4/SSUv4 address to 'host' value if nat = true&lt;/span&gt;
&lt;span class="c"&gt;## Sets published NTCP2v6/SSUv6 address to 'host' value if ipv4 = false&lt;/span&gt;
&lt;span class="c"&gt;# host = 1.2.3.4&lt;/span&gt;

&lt;span class="c"&gt;## Port to listen for connections&lt;/span&gt;
&lt;span class="c"&gt;## By default i2pd picks random port. You MUST pick a random number too,&lt;/span&gt;
&lt;span class="c"&gt;## don't just uncomment this&lt;/span&gt;
port &lt;span class="o"&gt;=&lt;/span&gt; 4567

&lt;span class="c"&gt;## Enable communication through ipv4 (default: true)&lt;/span&gt;
ipv4 &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;span class="c"&gt;## Enable communication through ipv6 (default: false)&lt;/span&gt;
ipv6 &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;false&lt;/span&gt;

&lt;span class="c"&gt;## Bandwidth configuration&lt;/span&gt;
&lt;span class="c"&gt;## L limit bandwidth to 32 KB/sec, O - to 256 KB/sec, P - to 2048 KB/sec,&lt;/span&gt;
&lt;span class="c"&gt;## X - unlimited&lt;/span&gt;
&lt;span class="c"&gt;## Default is L (regular node) and X if floodfill mode enabled.&lt;/span&gt;
&lt;span class="c"&gt;## If you want to share more bandwidth without floodfill mode, uncomment&lt;/span&gt;
&lt;span class="c"&gt;## that line and adjust value to your possibilities. Value can be set to&lt;/span&gt;
&lt;span class="c"&gt;## integer in kilobytes, it will apply that limit and flag will be used&lt;/span&gt;
&lt;span class="c"&gt;## from next upper limit (example: if you set 4096 flag will be X, but real&lt;/span&gt;
&lt;span class="c"&gt;## limit will be 4096 KB/s). Same can be done when floodfill mode is used,&lt;/span&gt;
&lt;span class="c"&gt;## but keep in mind that low values may be negatively evaluated by Java&lt;/span&gt;
&lt;span class="c"&gt;## router algorithms.&lt;/span&gt;
&lt;span class="c"&gt;# bandwidth = L&lt;/span&gt;
&lt;span class="c"&gt;## Max % of bandwidth limit for transit. 0-100 (default: 100)&lt;/span&gt;
&lt;span class="c"&gt;# share = 100&lt;/span&gt;

&lt;span class="c"&gt;## Router will not accept transit tunnels, disabling transit traffic completely&lt;/span&gt;
&lt;span class="c"&gt;## (default: false)&lt;/span&gt;
&lt;span class="c"&gt;# notransit = true&lt;/span&gt;

&lt;span class="c"&gt;## Router will be floodfill (default: false)&lt;/span&gt;
&lt;span class="c"&gt;## Note: that mode uses much more network connections and CPU!&lt;/span&gt;
&lt;span class="c"&gt;# floodfill = true&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;ntcp2]
&lt;span class="c"&gt;## Enable NTCP2 transport (default: true)&lt;/span&gt;
&lt;span class="c"&gt;# enabled = true&lt;/span&gt;
&lt;span class="c"&gt;## Publish address in RouterInfo (default: true)&lt;/span&gt;
&lt;span class="c"&gt;# published = true&lt;/span&gt;
&lt;span class="c"&gt;## Port for incoming connections (default is global port option value)&lt;/span&gt;
&lt;span class="c"&gt;# port = 4567&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;ssu2]
&lt;span class="c"&gt;## Enable SSU2 transport (default: true)&lt;/span&gt;
&lt;span class="c"&gt;# enabled = true&lt;/span&gt;
&lt;span class="c"&gt;## Publish address in RouterInfo (default: true)&lt;/span&gt;
&lt;span class="c"&gt;# published = true&lt;/span&gt;
&lt;span class="c"&gt;## Port for incoming connections (default is global port option value)&lt;/span&gt;
&lt;span class="c"&gt;# port = 4567&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;http]
&lt;span class="c"&gt;## Web Console settings&lt;/span&gt;
&lt;span class="c"&gt;## Enable the Web Console (default: true)&lt;/span&gt;
enabled &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;span class="c"&gt;## Address and port service will listen on (default: 127.0.0.1:7070)&lt;/span&gt;
address &lt;span class="o"&gt;=&lt;/span&gt; 192.168.5.3
port &lt;span class="o"&gt;=&lt;/span&gt; 7070
&lt;span class="c"&gt;## Path to web console (default: /)&lt;/span&gt;
&lt;span class="c"&gt;# webroot = /&lt;/span&gt;
&lt;span class="c"&gt;## Enable Web Console authentication (default: false)&lt;/span&gt;
&lt;span class="c"&gt;## You should not use Web Console via public networks without additional encryption.&lt;/span&gt;
&lt;span class="c"&gt;## HTTP authentication is not encryption layer!&lt;/span&gt;
&lt;span class="c"&gt;# auth = true&lt;/span&gt;
&lt;span class="c"&gt;# user = i2pd&lt;/span&gt;
&lt;span class="c"&gt;# pass = changeme&lt;/span&gt;
&lt;span class="c"&gt;## Select webconsole language&lt;/span&gt;
&lt;span class="c"&gt;## Currently supported english (default), afrikaans, armenian, chinese, czech, french,&lt;/span&gt;
&lt;span class="c"&gt;## german, italian, polish, portuguese, russian, spanish, turkish, turkmen, ukrainian&lt;/span&gt;
&lt;span class="c"&gt;## and uzbek languages&lt;/span&gt;
&lt;span class="c"&gt;# lang = english&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;httpproxy]
&lt;span class="c"&gt;## Enable the HTTP proxy (default: true)&lt;/span&gt;
enabled &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;span class="c"&gt;## Address and port service will listen on (default: 127.0.0.1:4444)&lt;/span&gt;
address &lt;span class="o"&gt;=&lt;/span&gt; 192.168.5.3
port &lt;span class="o"&gt;=&lt;/span&gt; 4444
&lt;span class="c"&gt;## Optional keys file for proxy local destination (default: http-proxy-keys.dat)&lt;/span&gt;
&lt;span class="c"&gt;# keys = http-proxy-keys.dat&lt;/span&gt;
&lt;span class="c"&gt;## Enable address helper for adding .i2p domains with "jump URLs" (default: true)&lt;/span&gt;
&lt;span class="c"&gt;## You should disable this feature if your i2pd HTTP Proxy is public,&lt;/span&gt;
&lt;span class="c"&gt;## because anyone could spoof the short domain via addresshelper and forward other users to phishing links&lt;/span&gt;
&lt;span class="c"&gt;# addresshelper = true&lt;/span&gt;
&lt;span class="c"&gt;## Address of a proxy server inside I2P, which is used to visit regular Internet&lt;/span&gt;
outproxy &lt;span class="o"&gt;=&lt;/span&gt; http://false.i2p
&lt;span class="c"&gt;## httpproxy section also accepts I2CP parameters, like "inbound.length" etc.&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;socksproxy]
&lt;span class="c"&gt;## Enable the SOCKS proxy (default: true)&lt;/span&gt;
&lt;span class="c"&gt;# enabled = true&lt;/span&gt;
&lt;span class="c"&gt;## Address and port service will listen on (default: 127.0.0.1:4447)&lt;/span&gt;
address &lt;span class="o"&gt;=&lt;/span&gt; 192.168.5.3
port &lt;span class="o"&gt;=&lt;/span&gt; 4447
&lt;span class="c"&gt;## Optional keys file for proxy local destination (default: socks-proxy-keys.dat)&lt;/span&gt;
&lt;span class="c"&gt;# keys = socks-proxy-keys.dat&lt;/span&gt;
&lt;span class="c"&gt;## Socks outproxy. Example below is set to use Tor for all connections except i2p&lt;/span&gt;
&lt;span class="c"&gt;## Enable using of SOCKS outproxy (works only with SOCKS4, default: false)&lt;/span&gt;
&lt;span class="c"&gt;# outproxy.enabled = false&lt;/span&gt;
&lt;span class="c"&gt;## Address and port of outproxy&lt;/span&gt;
outproxy &lt;span class="o"&gt;=&lt;/span&gt; 192.168.5.3
outproxyport &lt;span class="o"&gt;=&lt;/span&gt; 9050
&lt;span class="c"&gt;## socksproxy section also accepts I2CP parameters, like "inbound.length" etc.&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;sam]
&lt;span class="c"&gt;## Enable the SAM bridge (default: true)&lt;/span&gt;
&lt;span class="c"&gt;# enabled = false&lt;/span&gt;
&lt;span class="c"&gt;## Address and ports service will listen on (default: 127.0.0.1:7656, udp: 7655)&lt;/span&gt;
&lt;span class="c"&gt;# address = 127.0.0.1&lt;/span&gt;
&lt;span class="c"&gt;# port = 7656&lt;/span&gt;
&lt;span class="c"&gt;# portudp = 7655&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;bob]
&lt;span class="c"&gt;## Enable the BOB command channel (default: false)&lt;/span&gt;
&lt;span class="c"&gt;# enabled = false&lt;/span&gt;
&lt;span class="c"&gt;## Address and port service will listen on (default: 127.0.0.1:2827)&lt;/span&gt;
&lt;span class="c"&gt;# address = 127.0.0.1&lt;/span&gt;
&lt;span class="c"&gt;# port = 2827&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;i2cp]
&lt;span class="c"&gt;## Enable the I2CP protocol (default: false)&lt;/span&gt;
&lt;span class="c"&gt;# enabled = false&lt;/span&gt;
&lt;span class="c"&gt;## Address and port service will listen on (default: 127.0.0.1:7654)&lt;/span&gt;
address &lt;span class="o"&gt;=&lt;/span&gt; 192.168.5.3
port &lt;span class="o"&gt;=&lt;/span&gt; 7654

&lt;span class="o"&gt;[&lt;/span&gt;i2pcontrol]
&lt;span class="c"&gt;## Enable the I2PControl protocol (default: false)&lt;/span&gt;
&lt;span class="c"&gt;# enabled = false&lt;/span&gt;
&lt;span class="c"&gt;## Address and port service will listen on (default: 127.0.0.1:7650)&lt;/span&gt;
address &lt;span class="o"&gt;=&lt;/span&gt; 192.168.5.3
port &lt;span class="o"&gt;=&lt;/span&gt; 7650
&lt;span class="c"&gt;## Authentication password (default: itoopie)&lt;/span&gt;
&lt;span class="c"&gt;# password = itoopie&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;precomputation]
&lt;span class="c"&gt;## Enable or disable elgamal precomputation table&lt;/span&gt;
&lt;span class="c"&gt;## By default, enabled on i386 hosts&lt;/span&gt;
&lt;span class="c"&gt;# elgamal = true&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;upnp]
&lt;span class="c"&gt;## Enable or disable UPnP: automatic port forwarding (enabled by default in WINDOWS, ANDROID)&lt;/span&gt;
&lt;span class="c"&gt;# enabled = false&lt;/span&gt;
&lt;span class="c"&gt;## Name i2pd appears in UPnP forwardings list (default: I2Pd)&lt;/span&gt;
&lt;span class="c"&gt;# name = I2Pd&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;meshnets]
&lt;span class="c"&gt;## Enable connectivity over the Yggdrasil network  (default: false)&lt;/span&gt;
&lt;span class="c"&gt;# yggdrasil = false&lt;/span&gt;
&lt;span class="c"&gt;## You can bind address from your Yggdrasil subnet 300::/64&lt;/span&gt;
&lt;span class="c"&gt;## The address must first be added to the network interface&lt;/span&gt;
&lt;span class="c"&gt;# yggaddress =&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;reseed]
&lt;span class="c"&gt;## Options for bootstrapping into I2P network, aka reseeding&lt;/span&gt;
&lt;span class="c"&gt;## Enable reseed data verification (default: true)&lt;/span&gt;
verify &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;span class="c"&gt;## URLs to request reseed data from, separated by comma&lt;/span&gt;
&lt;span class="c"&gt;## Default: "mainline" I2P Network reseeds&lt;/span&gt;
&lt;span class="c"&gt;# urls = https://reseed.i2p-projekt.de/,https://i2p.mooo.com/netDb/,https://netdb.i2p2.no/&lt;/span&gt;
&lt;span class="c"&gt;## Reseed URLs through the Yggdrasil, separated by comma&lt;/span&gt;
&lt;span class="c"&gt;# yggurls = http://[324:71e:281a:9ed3::ace]:7070/&lt;/span&gt;
&lt;span class="c"&gt;## Path to local reseed data file (.su3) for manual reseeding&lt;/span&gt;
&lt;span class="c"&gt;# file = /path/to/i2pseeds.su3&lt;/span&gt;
&lt;span class="c"&gt;## or HTTPS URL to reseed from&lt;/span&gt;
&lt;span class="c"&gt;# file = https://legit-website.com/i2pseeds.su3&lt;/span&gt;
&lt;span class="c"&gt;## Path to local ZIP file or HTTPS URL to reseed from&lt;/span&gt;
&lt;span class="c"&gt;# zipfile = /path/to/netDb.zip&lt;/span&gt;
&lt;span class="c"&gt;## If you run i2pd behind a proxy server, set proxy server for reseeding here&lt;/span&gt;
&lt;span class="c"&gt;## Should be http://address:port or socks://address:port&lt;/span&gt;
&lt;span class="c"&gt;# proxy = http://127.0.0.1:8118&lt;/span&gt;
&lt;span class="c"&gt;## Minimum number of known routers, below which i2pd triggers reseeding (default: 25)&lt;/span&gt;
&lt;span class="c"&gt;# threshold = 25&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;addressbook]
&lt;span class="c"&gt;## AddressBook subscription URL for initial setup&lt;/span&gt;
&lt;span class="c"&gt;## Default: reg.i2p at "mainline" I2P Network&lt;/span&gt;
&lt;span class="c"&gt;# defaulturl = http://shx5vqsw7usdaunyzr2qmes2fq37oumybpudrd4jjj4e4vk4uusa.b32.i2p/hosts.txt&lt;/span&gt;
&lt;span class="c"&gt;## Optional subscriptions URLs, separated by comma&lt;/span&gt;
&lt;span class="c"&gt;# subscriptions = http://reg.i2p/hosts.txt,http://identiguy.i2p/hosts.txt,http://stats.i2p/cgi-bin/newhosts.txt,http://rus.i2p/hosts.txt&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;limits]
&lt;span class="c"&gt;## Maximum active transit sessions (default: 5000)&lt;/span&gt;
&lt;span class="c"&gt;## This value is doubled if floodfill mode is enabled!&lt;/span&gt;
&lt;span class="c"&gt;# transittunnels = 5000&lt;/span&gt;
&lt;span class="c"&gt;## Limit number of open file descriptors (0 - use system limit)&lt;/span&gt;
&lt;span class="c"&gt;# openfiles = 0&lt;/span&gt;
&lt;span class="c"&gt;## Maximum size of corefile in Kb (0 - use system limit)&lt;/span&gt;
&lt;span class="c"&gt;# coresize = 0&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;trust]
&lt;span class="c"&gt;## Enable explicit trust options. (default: false)&lt;/span&gt;
&lt;span class="c"&gt;# enabled = true&lt;/span&gt;
&lt;span class="c"&gt;## Make direct I2P connections only to routers in specified Family.&lt;/span&gt;
&lt;span class="c"&gt;# family = MyFamily&lt;/span&gt;
&lt;span class="c"&gt;## Make direct I2P connections only to routers specified here. Comma separated list of base64 identities.&lt;/span&gt;
&lt;span class="c"&gt;# routers =&lt;/span&gt;
&lt;span class="c"&gt;## Should we hide our router from other routers? (default: false)&lt;/span&gt;
&lt;span class="c"&gt;# hidden = true&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;exploratory]
&lt;span class="c"&gt;## Exploratory tunnels settings with default values&lt;/span&gt;
&lt;span class="c"&gt;# inbound.length = 2&lt;/span&gt;
&lt;span class="c"&gt;# inbound.quantity = 3&lt;/span&gt;
&lt;span class="c"&gt;# outbound.length = 2&lt;/span&gt;
&lt;span class="c"&gt;# outbound.quantity = 3&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;persist]
&lt;span class="c"&gt;## Save peer profiles on disk (default: true)&lt;/span&gt;
&lt;span class="c"&gt;# profiles = true&lt;/span&gt;
&lt;span class="c"&gt;## Save full addresses on disk (default: true)&lt;/span&gt;
&lt;span class="c"&gt;# addressbook = true&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;cpuext]
&lt;span class="c"&gt;## Use CPU AES-NI instructions set when work with cryptography when available (default: true)&lt;/span&gt;
&lt;span class="c"&gt;# aesni = true&lt;/span&gt;
&lt;span class="c"&gt;## Force usage of CPU instructions set, even if they not found (default: false)&lt;/span&gt;
&lt;span class="c"&gt;## DO NOT TOUCH that option if you really don't know what are you doing!&lt;/span&gt;
&lt;span class="c"&gt;# force = false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah itu anda buat file log untuk &lt;code class="language-plaintext highlighter-rouge"&gt;i2pd&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns2# &lt;span class="nb"&gt;touch&lt;/span&gt; /var/lib/i2pd/i2pd.log
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id="1-aktifkan-i2pd"&gt;1. Aktifkan I2PD&lt;/h3&gt;

&lt;p&gt;Kemudian kita lanjutkan dengan mengaktifkan i2pd.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;ns2# rcctl &lt;span class="nb"&gt;enable &lt;/span&gt;i2pd
ns2# rcctl restart i2pd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id="2-membuat-boot-i2pd"&gt;2. Membuat Boot I2PD&lt;/h3&gt;

&lt;p&gt;Pada bagian ini, Anda dapat memulai &lt;code class="language-plaintext highlighter-rouge"&gt;I2Pd&lt;/code&gt; secara manual, tetapi tidak akan mulai secara otomatis
saat sistem di-boot. Bagian ini menjelaskan cara melakukannya. Hal pertama yang harus dilakukan adalah membuat kelas login baru untuk menambah jumlah file yang dapat dibuka I2Pd secara bersamaan.&lt;/p&gt;

&lt;p&gt;Secara default, OpenBSD membatasi jumlah ini ke nilai yang terlalu rendah agar I2Pd dapat bekerja dengan baik.
Gejala jumlah yang terlalu kecil meliputi kesulitan menghubungkan ke situs web dan penggunaan CPU yang tinggi.
Jika Anda menggunakan OpenBSD 7.5 atau yang atau OpenBSD terbaru, cukup tambahkan baris berikut di file &lt;code class="language-plaintext highlighter-rouge"&gt;/etc/login.conf.d/i2pd&lt;/code&gt; untuk membuat kelas login.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;i2pd:&lt;span class="se"&gt;\&lt;/span&gt;
    :openfiles-cur&lt;span class="o"&gt;=&lt;/span&gt;102400:&lt;span class="se"&gt;\&lt;/span&gt;
    :openfiles-max&lt;span class="o"&gt;=&lt;/span&gt;102400:&lt;span class="se"&gt;\&lt;/span&gt;
    :tc&lt;span class="o"&gt;=&lt;/span&gt;daemon:
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id="3-menjalankan-i2pd"&gt;3. Menjalankan I2PD&lt;/h3&gt;

&lt;p&gt;Setelah anda mengaktifkan &lt;code class="language-plaintext highlighter-rouge"&gt;i2pd&lt;/code&gt;, kita lanjutkan dengan menjalankan &lt;code class="language-plaintext highlighter-rouge"&gt;i2pd&lt;/code&gt;. 
Untuk menjalankan &lt;code class="language-plaintext highlighter-rouge"&gt;i2pd&lt;/code&gt; kita gunakan web browser Google Chrome atau lainnya. 
Pada menu address bar anda ketikkan &lt;code class="language-plaintext highlighter-rouge"&gt;http://192.168.5.3:7070/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Bila konfigurasi di atas tak ada yang anda lewatkan, pada layar monitor anda akan menu &lt;code class="language-plaintext highlighter-rouge"&gt;i2pd&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I2PD dapat menjadi alat yang sangat berguna jika Anda ingin tetap anonim di internet dan meningkatkan keamanan Anda saat menjelajah. Alat ini memiliki semua fitur I2P dan menyempurnakannya. Alat ini lebih aman, terenkripsi secara kriptografi, dan lebih berkinerja karena dibuat di C++. Jika Anda memiliki beberapa situs yang disensor di negara Anda, I2PD dapat membantu Anda mengaksesnya secara anonim juga.&lt;/p&gt;

&lt;p&gt;Karena itu, alat ini bermanfaat bagi orang-orang seperti jurnalis, kantor berita, atau pengguna umum yang menginginkan privasi. Alat ini sangat fleksibel dan dapat digunakan dalam berbagai aplikasi. Kami sarankan untuk mengunjungi situs resminya dan menganalisis pro dan kontra penggunaannya. Alat ini tentu dapat meningkatkan privasi dan anonimitas, tetapi Anda tidak boleh bergantung padanya. 
I2PD masih dalam tahap pengembangan dan terus diperbarui untuk ditingkatkan.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2025/02/cara-instal-i2pd-di-openbsd-client.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-1645030250519968517</guid><pubDate>Sat, 02 Mar 2024 13:40:00 +0000</pubDate><atom:updated>2026-11-01T15:46:17.331+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">networking</category><title>Keuntungan dan kerugian serat optik - FO</title><description>&lt;p&gt;Serat optik semakin berkembang dalam industri telekomunikasi dan komunikasi data karena manfaatnya yang tak tertandingi: kecepatan yang lebih tinggi dengan redaman yang lebih rendah, kekebalan yang lebih rendah terhadap gangguan elektromagnetik (EMI), ukuran yang lebih kecil, dan kapasitas informasi yang lebih besar. Di sisi lain, permintaan bandwidth yang konstan juga telah menyebabkan peningkatan permintaan serat optik yang signifikan. Mari kita lihat jenis kabel serat optik yang paling umum, jelajahi kelebihan dan kekurangan serat optik, dan pelajari kiat-kiat untuk memilih kabel serat optik.&lt;/p&gt;

&lt;h2 id="1-apa-itu-serat-optik"&gt;1. Apa itu serat optik?&lt;/h2&gt;

&lt;p&gt;Serat optik menggunakan pulsa cahaya, bukan pulsa listrik, untuk mengirimkan informasi, sehingga menyediakan bandwidth ratusan kali lebih banyak daripada sistem listrik tradisional. Kabel serat optik dapat dilindungi dengan jaket dan selubung agar tahan terhadap kondisi lingkungan yang keras. Oleh karena itu, serat optik banyak digunakan dalam bisnis komersial, pemerintahan, militer, dan banyak industri lainnya untuk transmisi suara, video, dan data.&lt;/p&gt;

&lt;h2 id="2-jenis-umum-kabel-serat-optik"&gt;2. Jenis Umum Kabel Serat Optik&lt;/h2&gt;
&lt;p&gt;Secara umum, ada tiga jenis kabel serat optik: dua serat kaca - kabel optik mode tunggal dan kabel optik multi-mode, dan serat optik plastik (POF).&lt;/p&gt;

&lt;h3 id="a-kabel-optik-mode-tunggal"&gt;a. Kabel optik mode tunggal&lt;/h3&gt;

&lt;p&gt;&lt;code class="language-plaintext highlighter-rouge"&gt;Mode&lt;/code&gt; pada kabel serat optik mengacu pada jalur yang dilalui cahaya. Serat mode tunggal memiliki diameter inti yang lebih kecil, yaitu 9 mikron (tepatnya 8,3 mikron) dan hanya memungkinkan satu panjang gelombang dan jalur transmisi cahaya, yang sangat mengurangi pantulan cahaya dan mengurangi redaman. Sedikit lebih mahal daripada kabel multimode, kabel serat optik mode tunggal sering digunakan untuk koneksi jaringan jarak jauh.&lt;/p&gt;

&lt;h3 id="b-kabel-optik-multimode"&gt;b. Kabel optik multimode&lt;/h3&gt;

&lt;p&gt;Serat optik multimode memiliki diameter inti yang lebih besar daripada serat optik mode tunggal, yang memungkinkan transmisi beberapa jalur dan berbagai panjang gelombang cahaya. Serat optik multimode tersedia dalam dua ukuran: 50 mikron dan 62,5 mikron. Serat ini biasanya digunakan dalam jarak pendek, termasuk aplikasi kabel patch seperti serat ke desktop atau panel patch ke peralatan, aplikasi data dan audio/video pada jaringan area lokal. Menurut distribusi indeks bias serat, serat multimode dapat dibagi menjadi dua jenis: serat multimode indeks langkah vs serat multimode indeks bertingkat.&lt;/p&gt;

&lt;h3 id="c-serat-optik-plastik-pof"&gt;c. Serat Optik Plastik (POF)&lt;/h3&gt;

&lt;p&gt;POF adalah serat optik indeks langkah inti besar dengan diameter tipikal 1 mm. Ukurannya yang besar memudahkan penyambungan sejumlah besar cahaya dari sumber dan konektor yang tidak memerlukan akurasi tinggi. Jadi biaya konektor tipikal adalah 10-20% sama dengan fiberglass, dan terminasinya sederhana. Karena terbuat dari plastik, ia lebih tahan lama dan dapat dipasang dalam hitungan menit dengan peralatan dan pelatihan minimal. Untuk aplikasi yang tidak memerlukan lebar pita besar dalam jarak jauh, POF menjadi lebih kompetitif, menjadikannya pilihan yang baik untuk LAN desktop dan tautan pendek berkecepatan rendah.&lt;/p&gt;

&lt;h2 id="3-kelebihan-dan-kekurangan-serat-optik"&gt;3. Kelebihan dan kekurangan serat optik&lt;/h2&gt;

&lt;p&gt;Meskipun serat optik memiliki keunggulan kecepatan dan lebar pita dibanding kabel tembaga, penting untuk dicatat bahwa serat optik juga memiliki beberapa kelemahan. Berikut ini adalah kelebihan dan kekurangan serat optik.&lt;/p&gt;

&lt;h3 id="a-keuntungan-serat-optik"&gt;a. Keuntungan serat optik&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Bandwidth Lebih Tinggi &amp;amp; Kecepatan Lebih Tinggi: Kabel serat optik mendukung bandwidth dan kecepatan yang sangat tinggi. Banyaknya informasi yang dapat ditransmisikan per unit kabel serat optik merupakan keuntungan yang paling signifikan.&lt;/li&gt;
  &lt;li&gt;Murah: Bermil-mil kabel serat optik dapat diproduksi dengan biaya yang lebih murah daripada kabel tembaga yang panjangnya setara. Dengan banyaknya pemasok yang bersaing untuk mendapatkan pangsa pasar, harga kabel serat optik pasti akan turun.&lt;/li&gt;
  &lt;li&gt;Lebih tipis dan ringan: Serat optik lebih tipis dan dapat diregangkan hingga diameter yang lebih kecil daripada kabel tembaga. Serat optik lebih kecil dan ringan daripada kabel tembaga, sehingga lebih cocok untuk area yang membutuhkan ruang.&lt;/li&gt;
  &lt;li&gt;Bandwidth Lebih Tinggi: Karena serat optik jauh lebih tipis daripada kabel tembaga, lebih banyak serat dapat dibundel ke dalam diameter kabel tertentu. Hal ini memungkinkan lebih banyak saluran telepon untuk melewati kabel yang sama atau saluran yang lebih besar untuk melewati kabel ke kotak TV kabel Anda.&lt;/li&gt;
  &lt;li&gt;Lebih sedikit penurunan sinyal: Kehilangan sinyal pada serat optik lebih sedikit daripada pada kabel tembaga.&lt;/li&gt;
  &lt;li&gt;Sinyal cahaya: Tidak seperti sinyal listrik yang dibawa melalui kabel tembaga, sinyal cahaya dari satu serat tidak memengaruhi sinyal dari serat lain dalam kabel serat optik yang sama. Ini berarti panggilan telepon atau penerimaan TV lebih jelas.&lt;/li&gt;
  &lt;li&gt;Umur panjang: Serat optik biasanya memiliki siklus hidup lebih panjang, lebih dari 100 tahun.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="b-kekurangan-serat-optik"&gt;b. Kekurangan serat optik&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Daya rendah: Sumber pemancar cahaya terbatas pada daya rendah. Meskipun pemancar daya tinggi tersedia untuk meningkatkan konsumsi daya, ini akan menambah biaya tambahan.&lt;/li&gt;
  &lt;li&gt;Kerapuhan: Serat optik cukup rapuh dan lebih rentan terhadap kerusakan daripada kabel tembaga. Sebaiknya hindari puntiran atau pembengkokan kabel serat optik yang berlebihan.&lt;/li&gt;
  &lt;li&gt;Jarak: Jarak antara pemancar dan penerima harus pendek, atau diperlukan repeater untuk memperkuat sinyal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="4-bagaimana-cara-memilih-kabel-serat-optik-yang-tepat"&gt;4. Bagaimana cara memilih kabel serat optik yang tepat?&lt;/h2&gt;

&lt;p&gt;Kabel serat optik telah memperoleh banyak momentum dalam jaringan komunikasi dan ada sejumlah besar pemasok yang bersaing untuk produksi dan pasokan kabel serat optik. Saat memilih serat optik, Anda harus memulai dengan pemasok tepercaya dan kemudian mempertimbangkan kriteria pemilihan mereka. Berikut adalah panduan untuk menjernihkan sebagian kebingungan saat memilih kabel serat optik.&lt;/p&gt;

&lt;h3 id="a-periksa-kualifikasi-pabrikan"&gt;a. Periksa kualifikasi pabrikan&lt;/h3&gt;
&lt;p&gt;Produsen kabel serat optik besar harus memperoleh sertifikasi sistem mutu ISO9001, sertifikasi sistem perlindungan lingkungan internasional ISO4001, ROHS, sertifikasi dari lembaga nasional dan internasional terkait seperti Kementerian Perindustrian Informasi, sertifikasi UL, dll.&lt;/p&gt;

&lt;h3 id="b-mode-optik-mode-tunggal-atau-multimode"&gt;b. Mode optik: mode tunggal atau multimode&lt;/h3&gt;
&lt;p&gt;Seperti yang ditunjukkan di atas, serat mode tunggal sering digunakan untuk jarak jauh, sedangkan serat multimode biasanya digunakan untuk jarak pendek. Selain itu, biaya sistem dan pemasangan bervariasi menurut mode serat yang berbeda. Anda mungkin ingin merujuk ke Serat Mode Tunggal vs. Serat Multimode: Apa Perbedaannya? lalu putuskan mode serat mana yang Anda butuhkan.&lt;/p&gt;

&lt;h3 id="c-selongsong-kabel-optik-ofnr-ofnp-atau-lszh"&gt;c. Selongsong kabel optik: OFNR, OFNP atau LSZH&lt;/h3&gt;
&lt;p&gt;Jenis standar selubung kabel optik adalah OFNR, yang merupakan singkatan dari &lt;code class="language-plaintext highlighter-rouge"&gt;Fiber Optic Non-conductive Riser&lt;/code&gt;. Selain itu, serat optik juga tersedia dengan OFNP atau selubung plenum, yang cocok untuk digunakan di lingkungan plenum seperti plafon gantung atau lantai yang ditinggikan. Pilihan selubung lainnya adalah LSZH. &lt;br /&gt;
Kependekan dari &lt;code class="language-plaintext highlighter-rouge"&gt;Low Smoke Zero Halogen&lt;/code&gt;, terbuat dari senyawa khusus yang mengeluarkan sedikit asap dan tidak beracun jika terjadi kebakaran. Oleh karena itu, selalu tanyakan kepada otoritas kode kebakaran setempat untuk mengonfirmasi persyaratan pemasangan sebelum memilih jenis selubung.&lt;/p&gt;

&lt;h3 id="d-internal-fiber-optic-design-tight-package-or-breakout-or-assembly-or-loose-tube"&gt;d. Internal fiber optic design: Tight Package or Breakout or Assembly or Loose Tube&lt;/h3&gt;
&lt;p&gt;Kabel tight package juga dikenal sebagai kabel tipe distribusi, yang memiliki semua serat pendukung di bawah satu selubung dengan elemen yang tahan lama untuk instalasi Chassis to Chassis dan Pipe to Class. Kabel breakout optik atau kabel fan out berlaku untuk aplikasi perangkat ke perangkat dengan keunggulan ketangguhan dan daya tahan. Perakitan atau desain kabel zip sering digunakan untuk membuat kabel patch optik dan kabel breakout pendek. Sementara desain loose tube merupakan standar Telco yang digunakan dalam industri telekomunikasi.&lt;/p&gt;

&lt;h3 id="e-internal-vs-eksternal"&gt;e. Internal vs Eksternal&lt;/h3&gt;
&lt;p&gt;Pilihannya sangat bergantung pada aplikasi Anda. Perbedaan utama antara kabel serat optik dalam dan luar ruangan adalah pemblokiran air. Kabel luar ruangan dirancang untuk melindungi serat dari paparan kelembapan selama bertahun-tahun. Namun, kini ada kabel dengan fitur eksterior dan desain interior yang tahan air. Misalnya, di lingkungan kampus, Anda dapat membeli kabel dengan dua selubung: selubung luar PE yang tahan terhadap kelembapan, dan selubung dalam PVC yang bersertifikat UL untuk ketahanan api.&lt;/p&gt;

&lt;h3 id="f-jumlah-serat"&gt;f. Jumlah serat&lt;/h3&gt;
&lt;p&gt;Baik kabel optik dalam maupun luar ruangan memiliki berbagai pilihan jumlah serat mulai dari 4 hingga 144 serat. Jika permintaan serat Anda melebihi kisaran ini, Anda dapat menyesuaikan jumlah serat untuk kabel optik dalam maupun luar ruangan. Sangat disarankan agar Anda membeli serat pengganti jika Anda tidak membuat kabel patch optik atau menghubungkan tautan sederhana dengan dua serat.&lt;/p&gt;

&lt;p&gt;Serat optik menawarkan koneksi internet yang cepat, konstan, dan stabil yang memungkinkan Anda mentransfer data dalam jumlah besar melalui jarak yang sangat jauh. Ketika kebutuhan data menjadi sangat besar, kabel optik merupakan jalur paling pasti menuju fleksibilitas dan stabilitas jaringan.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2024/03/keuntungan-dan-kerugian-serat-optik-fo.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-4203340034256424451</guid><pubDate>Mon, 26 Feb 2024 05:05:00 +0000</pubDate><atom:updated>2026-11-02T09:46:49.720+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">windows</category><title>Solusi Kesalahan Kode 0xc1900101 Selama Instalasi atau Pemutakhiran Windows 11</title><description>&lt;p&gt;Saat memasang Windows 11, maupun saat memperbarui ke versi baru atau memasang pembaruan di Windows Update, pengguna mungkin mengalami berbagai kesalahan, yang kodenya dimulai dengan 0xc1900101 dan mungkin berisi kode dan deskripsi tambahan.&lt;/p&gt;

&lt;p&gt;Panduan ini memberikan perincian tentang penyebab paling umum dari kesalahan tersebut dan metode yang dapat membantu memperbaikinya.&lt;/p&gt;

&lt;h2 id="a-kemungkinan-penyebab-error-0xc1900101-dan-cara-memperbaikinya"&gt;A. Kemungkinan Penyebab Error 0xC1900101 dan Cara Memperbaikinya&lt;/h2&gt;

&lt;p&gt;Kesalahan dengan kode 0xC1900101 memiliki berbagai kode dan deskripsi tambahan, khususnya:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;0xC1900101 - 0x2000C: kesalahan selama fase instalasi SAFE_OS selama operasi APPLY_IMAGE.&lt;/li&gt;
  &lt;li&gt;0xC1900101 - 0x20017: kesalahan pada tahap instalasi SAFE_OS selama operasi BOOT.&lt;/li&gt;
  &lt;li&gt;0xC1900101 - 0x30018: kesalahan pada tahap instalasi FIRST_BOOT selama operasi SYSPREP.&lt;/li&gt;
  &lt;li&gt;0xC1900101 - 0x3000D: kesalahan pada tahap instalasi FIRST_BOOT selama operasi MIGRATE_DATA.&lt;/li&gt;
  &lt;li&gt;0xC1900101 - 0x4000D: kesalahan pada fase pengaturan SECOND_BOOT selama operasi MIGRATE_DATA.&lt;/li&gt;
  &lt;li&gt;0xC1900101 - 0x40017: kesalahan pada tahap pengaturan SECOND_BOOT selama operasi BOOT.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Meskipun situs &lt;a href="https://support.microsoft.com/en-us/windows/get-help-with-windows-upgrade-and-installation-errors-ea144c24-513d-a60e-40df-31ff78b3158a"&gt;web resmi Microsoft&lt;/a&gt; menyatakan bahwa kesalahan 0xc1900101 biasanya disebabkan oleh driver, ini mungkin saja terjadi, tetapi bukan satu-satunya alasan.&lt;/p&gt;

&lt;p&gt;Berikut ini adalah kemungkinan penyebab dan cara untuk memperbaiki berbagai kesalahan 0xC1900101 secara berurutan:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Tidak ada cukup ruang pada partisi disk sistem untuk melakukan instalasi pembaruan (terutama dalam kasus kode tambahan 0x2000C). Solusinya adalah mengosongkan cukup ruang, saya sarankan lebih dari 20 GB, karena kesalahan biasanya terjadi saat menginstal pembaruan komponen besar dan versi baru Windows. Anda dapat mulai membersihkan dengan menggunakan alat bawaan sistem.&lt;/li&gt;
  &lt;li&gt;Kehadiran driver perangkat yang tidak ditandatangani atau tidak didukung (termasuk yang virtual) oleh versi baru OS, serta driver yang diinstal oleh program: antivirus pihak ketiga, alat untuk memodifikasi koneksi jaringan, dan lainnya. Solusi: hapus driver, program, antivirus pihak ketiga yang sesuai, lepaskan perangkat periferal yang tidak diperlukan dari komputer. Jika sebelumnya Anda telah menginstal driver perangkat menggunakan program pihak ketiga, saya sarankan menginstalnya dari situs web resmi produsen motherboard atau laptop untuk model perangkat Anda.&lt;/li&gt;
  &lt;li&gt;Dampak layanan pihak ketiga dan proses latar belakang. Anda dapat mencoba memperbarui dengan mem-boot ke mode boot bersih.&lt;/li&gt;
  &lt;li&gt;Masalah dengan konfigurasi partisi pada disk, sering kali terjadi ketika ada beberapa partisi dengan bootloader (dari sistem saat ini dan sebelumnya), partisi dengan bootloader pada disk fisik yang terpisah. Solusi yang mungkin adalah memindahkan partisi dengan bootloader ke disk sistem dan membuang partisi EFI yang tidak digunakan.&lt;/li&gt;
  &lt;li&gt;Kerusakan file sistem pada OS Windows saat ini. Solusinya adalah menjalankan baris perintah sebagai administrator dan menjalankan perintah secara berurutan:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;dism /online /cleanup-image /restorehealth
sfc /scannow
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Masalah dengan sistem berkas pada partisi sistem disk. Coba periksa disk untuk kesalahan:
jalankan command prompt sebagai administrator, jalankan perintah.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;chkdsk C: /f
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Masalah dengan perangkat dan driver: buka pengelola perangkat (klik kanan pada tombol &lt;code class="language-plaintext highlighter-rouge"&gt;Start&lt;/code&gt; - &lt;code class="language-plaintext highlighter-rouge"&gt;Device Manager&lt;/code&gt;) dan pastikan tidak ada perangkat yang mengalami kesalahan dalam daftar; jika ada, perbaiki dengan melihat deskripsi kesalahan pada properti perangkat dan temukan solusinya.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Metode yang dijelaskan di atas mungkin berhasil, tetapi tidak selalu. Jika masalah tidak terpecahkan dalam kasus Anda, Anda dapat mencoba beberapa opsi tambahan dari bagian berikutnya.&lt;/p&gt;

&lt;h2 id="b-informasi-tambahan"&gt;B. Informasi Tambahan&lt;/h2&gt;

&lt;p&gt;Jika tidak ada alasan yang jelas untuk kesalahan tersebut, saya sarankan Anda mempelajari log pembaruan Windows, mungkin Anda akan menemukan di sana apa sebenarnya yang menyebabkan kegagalan selama pembaruan dan instalasi. Informasi terperinci tentang lokasi berkas log tersedia di situs web resmi Microsoft.&lt;/p&gt;

&lt;p&gt;Jika log tidak membantu atau Anda tidak dapat mengetahuinya, berikut adalah beberapa cara "umum" untuk menginstal Windows 11 atau versi barunya dengan kesalahan 0xC1900101:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Periksa apakah instalasi berfungsi jika Anda menonaktifkan Secure Boot di BIOS/UEFI.&lt;/li&gt;
  &lt;li&gt;Unduh citra ISO dari sistem yang ingin Anda tingkatkan, pasang ke dalam sistem (klik kanan pada citra ISO - "Pasang"), putuskan sambungan dari Internet dan jalankan berkas setup.exe dari citra yang sudah dipasang. Lakukan instalasi tanpa koneksi Internet dan tanpa mencari serta menginstal pembaruan tambahan.&lt;/li&gt;
  &lt;li&gt;Jika Anda memiliki beberapa drive pada komputer, lepaskan sambungan fisik semuanya kecuali drive sistem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sebagai upaya terakhir, Anda dapat menginstal versi baru sistem dengan melakukan instalasi bersih dari flash drive - opsi ini dalam sebagian besar kasus (kecuali untuk masalah dengan disk atau peralatan lain) berjalan tanpa kesalahan.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2024/02/solusi-kesalahan-kode-0xc1900101-selama.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-7386663683415735824</guid><pubDate>Thu, 25 Jan 2024 05:00:00 +0000</pubDate><atom:updated>2026-11-02T09:46:35.511+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">windows</category><title>MengKonfigurasi Calm Window Manager</title><description>&lt;p&gt;CWM (Calm Window Manager) adalah pengelola window manager minimalis untuk Sistem Windows X. Meskipun pada dasarnya dikembangkan sebagai bagian dari sistem dasar OpenBSD, versi portabelnya tersedia pada sistem operasi mirip Unix lainnya.&lt;/p&gt;

&lt;p&gt;Calm Window Manager adalah pengelola window manager yang berorientasi pada penggunaan papan ketik keyboard berukuran kecil dan mudah digunakan. Meskipun tidak memiliki fungsi desktop virtual yang eksplisit. cwm dapat ditiru dengan menggunakan mekanisme window groups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Calm Window Manager mencakup beberapa menu, diantaranya adalah:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;menu exec (meluncurkan aplikasi).&lt;/li&gt;
  &lt;li&gt;menu jendela (mencari aplikasi yang sedang berjalan).&lt;/li&gt;
  &lt;li&gt;menu ssh to (memulai sesi Secure Shell).&lt;/li&gt;
  &lt;li&gt;menu exec wm (beralih ke pengelola jendela yang berbeda).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Semua menu ini beroperasi dengan cara "cari saat Anda mengetik".
Meskipun saya pemakai OpenBSD, dan BSD secara umum, upaya pertama saya dalam open source sebenarnya adalah dengan linux. Karena saya masih sangat muda saat itu, yang benar-benar saya pedulikan hanyalah gnome vs kde. Saya segera belajar tentang pentingnya baris perintah, dan secara bertahap beralih menjadi lebih tertarik pada pengelola jendela yang lebih minimalis. Mencoba wm seperti fluxbox, openbox, dan ratpoison, saya dengan cepat menjadi terobsesi dengan yang minimalis.&lt;/p&gt;

&lt;p&gt;Saya akhirnya memutuskan untuk menggunakan &lt;code class="language-plaintext highlighter-rouge"&gt;i3wm&lt;/code&gt; di thinkpad saya untuk sementara waktu, tetapi sejak itu beralih ke ssh masuk ke server saya dari chromebook. Namun, saya baru-baru ini mencoba pengelola jendela yang tenang, dan sejak itu jatuh cinta.&lt;/p&gt;

&lt;p&gt;Saya baru saja mulai menggunakan CWM, pada akhirnya, CWM cukup mudah dikonfigurasi dan menyediakan fungsionalitas yang hebat. Saya dengan cepat mulai menggunakannya sebagai pengelola jendela sehari-hari saat bekerja. Saya akan memposting pembaruan saya saat saya menemukan cara yang lebih baik untuk memanfaatkan CWM.&lt;/p&gt;

&lt;p&gt;Perlu diingat bahwa ini adalah cara favorit saya untuk menggunakan wm ini, dan konfigurasi Anda bisa jadi sangat berbeda. Anda dapat membaca tentang cara untuk tetap mengikuti perkembangan dengan mengompilasi cwm dari sumber &lt;a href="https://github.com/pguerin3/cwmrc/tree/main"&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Skrip dari file konfigurasi &lt;code class="language-plaintext highlighter-rouge"&gt;~/.cwmrc&lt;/code&gt; yang digunakan seperti terlihat di bawah ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="c"&gt;# Override terminal default&lt;/span&gt;
&lt;span class="nb"&gt;command &lt;/span&gt;term &lt;span class="s2"&gt;"xfce4-terminal"&lt;/span&gt;

&lt;span class="c"&gt;# Set default font for menus&lt;/span&gt;
fontname &lt;span class="s2"&gt;"sans-serif:pixelsize=14:bold"&lt;/span&gt;

&lt;span class="c"&gt;# Inherit current selected group&lt;/span&gt;
sticky &lt;span class="nb"&gt;yes&lt;/span&gt;

&lt;span class="c"&gt;# Color things up&lt;/span&gt;
borderwidth 2
color activeborder   &lt;span class="s2"&gt;"#444444"&lt;/span&gt;
color inactiveborder &lt;span class="s2"&gt;"#111111"&lt;/span&gt;

&lt;span class="c"&gt;# Application menu&lt;/span&gt;
&lt;span class="nb"&gt;command &lt;/span&gt;chrome      google-chrome
&lt;span class="nb"&gt;command &lt;/span&gt;xterm       xfce4-terminal

&lt;span class="c"&gt;# Groupings&lt;/span&gt;
autogroup 1     &lt;span class="s2"&gt;"Terminal,terminal"&lt;/span&gt;
autogroup 2     &lt;span class="s2"&gt;"Google Chrome"&lt;/span&gt;

&lt;span class="c"&gt;# Unbind some keys that are used in bash and tmux&lt;/span&gt;
unbind-key M-period
unbind-key M-Left
unbind-key M-Right
unbind-key M-Up
unbind-key M-Down

&lt;span class="c"&gt;# Use Alt + num to focus on only specific group&lt;/span&gt;
bind-key M-1 group-only-1
bind-key M-2 group-only-2
bind-key M-3 group-only-3

&lt;span class="c"&gt;# Add window to group&lt;/span&gt;
bind-key CMS-1 window-movetogroup-1
bind-key CMS-2 window-movetogroup-2
bind-key CMS-3 window-movetogroup-3
bind-key M-m menu-cmd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;figure class="gbr-artikel"&gt;
            &lt;a target="_blank" href="/assets/images/2024/MengKonfigurasi Calm Window Manager.jpg"&gt;
            &lt;img src="/assets/images/2024/MengKonfigurasi Calm Window Manager.jpg" class="artikel-img" alt="Calm Windows Manager" /&gt;
            &lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Untuk versi portabel CWM yang dapat diinstal di Linux (dan juga BSD) sudah ada. Debian (dan turunannya), Gentoo, Void Linux, Alpine Linux, NixOS, Fedora semuanya memilikinya di repositori resmi mereka. Di Arch Linux, versi ini hanya tersedia di AUR.&lt;/p&gt;

&lt;p&gt;Penggunaan CWM sangat sederhana namun sungguh menakjubkan, dan setidaknya menyenangkan untuk digunakan meskipun awalnya membuat frustrasi atau tidak intuitif untuk digunakan. Namun, jika Anda terus menggunakannya hingga memahami dasar-dasarnya dan membiasakan diri Anda untuk terus menggunakan fungsi-fungsi CWM akan sangat jelas sekali manfaatnya. Setelah membutuhkan setidaknya beberapa menit untuk menyesuaikan dengan tampilan dan menu CWM, anda pasti dapat dengan mudah menggunakannnya.&lt;/p&gt;

&lt;p&gt;Saya menganggap cwm mirip dengan UNIX secara umum dalam dua hal, yang pertama adalah CWM tidak menyesuaikan dengan anda tetapi sebaliknya (anda harus menyesuaikan dengan CWM, dan yang kedua adalah ia sulit dipelajari tetapi mudah digunakan.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2024/01/mengkonfigurasi-calm-window-manager.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-656283632502496843</guid><pubDate>Wed, 27 Dec 2023 22:45:00 +0000</pubDate><atom:updated>2026-11-02T09:48:47.223+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">windows</category><title>Cara mengunduh Visual C++ Redistributable 2005-2022</title><description>&lt;p&gt;Paket Microsoft Visual C++ Redistributable menginstal komponen runtime dari pustaka Visual C++ yang diperlukan untuk menjalankan aplikasi yang dikembangkan dengan Visual C++ pada komputer tanpa Visual C++ yang terinstal. Metode integrasinya adalah SVCPACK (T13) dan juga dapat diinstal pada sistem aktif.&lt;/p&gt;

&lt;p&gt;Paket Microsoft Visual C++ yang didistribusikan (Visual C++ Redistributable) berisi komponen yang diperlukan untuk menjalankan game dan program yang dikembangkan menggunakan versi Visual Studio yang sesuai dan, sebagai aturan, diperlukan untuk kesalahan seperti "Program tidak dapat diluncurkan" karena sistem tidak mendeteksi file DLL dengan nama yang dimulai dengan msvcr atau msvcp. Paling sering, komponen Visual Studio 2012, 2013, dan 2015 diperlukan, tetapi Anda dapat mengunduh dan menginstal paket Visual C++ redistributable versi 2005-2022.&lt;/p&gt;

&lt;h2 id="unduh-paket-visual-c-yang-dapat-didistribusikan-ulang-dari-situs-web-microsoft"&gt;Unduh paket Visual C++ yang dapat didistribusikan ulang dari situs web Microsoft&lt;/h2&gt;

&lt;p&gt;Cara pertama untuk mengunduh komponen Visual C++ adalah cara resmi dan, karenanya, cara yang paling aman. Komponen berikut tersedia untuk diunduh (beberapa di antaranya dapat diunduh dengan berbagai cara).
Visual Studio 2015-2022-Saat menginstal kit ini, semua komponen Visual C++ 2015, 2017, 2019, dan 2022 yang dapat didistribusikan ulang diinstal dalam satu berkas penginstal.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Visual Studio 2013 (Visual C++ 12.0).&lt;/li&gt;
  &lt;li&gt;Visual Studio 2012 (Visual C++ 11.0).&lt;/li&gt;
  &lt;li&gt;Visual Studio 2010 SP1.&lt;/li&gt;
  &lt;li&gt;Visual Studio 2008 SP1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Urutan pemuatan komponen adalah sebagai berikut:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Buka &lt;a href="https://learn.microsoft.com/ru-ru/cpp/windows/latest-supported-vc-redist"&gt;halaman resmi Microsoft&lt;/a&gt; dan pilih komponen yang ingin Anda unduh.&lt;/li&gt;
  &lt;li&gt;Untuk Visual C++ 2015-2022, cukup unduh dan instal langsung file vc_redist.x86.exe dan vc_redist.x64.exe untuk sistem x64, opsi x86 saja untuk sistem 32-bit atau vc_redist.arm64.exe untuk perangkat dengan prosesor ARM.&lt;/li&gt;
  &lt;li&gt;Untuk komponen Visual C++ 2013, unduh berkas penginstal dari bagian "Paket Microsoft Visual C++ Redistributable untuk Visual Studio 2013".&lt;/li&gt;
  &lt;li&gt;Untuk beberapa komponen (misalnya, untuk versi Visual C++ 2012), Anda akan diminta untuk masuk dengan akun Microsoft Anda. Namun, Anda tidak perlu melakukan ini - nanti di artikel ini, saya akan memberikan tautan untuk mengunduh langsung dari situs Microsoft tanpa harus masuk.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/ags-23/Versi%20terbaru%20Microsoft%20Visual%20C%20plus%20plus%20Redistributable.png" target="_blank"&gt;
    &lt;img alt="Microsoft Visual C++ Redistributable" class="artikel-img" src="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/ags-23/Versi%20terbaru%20Microsoft%20Visual%20C%20plus%20plus%20Redistributable.png" title="Microsoft Visual C++ Redistributable" /&gt;
    &lt;/a&gt;
    &lt;figcaption class="teks-gamabr"&gt;
     Versi terbaru Microsoft Visual C++ Redistributable Yang ada di situs Resmi Microsoft
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Halaman terpisah untuk mengunduh paket Microsoft Visual C++ yang dapat didistribusikan ulang juga tersedia di situs web Microsoft:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://support.microsoft.com/ru-ru/help/3179560/update-for-visual-c-2013-and-visual-c-redistributable-package"&gt;Visual C++ 2013&lt;/a&gt; (di bagian kedua halaman terdapat tautan langsung untuk mengunduh versi x86 dan x64)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.microsoft.com/ru-ru/download/details.aspx?id=26999"&gt;Visual C++ 2010&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.microsoft.com/ru-ru/download/details.aspx?id=26368"&gt;Visual C++ 2008&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://go.microsoft.com/fwlink/?LinkId=746572"&gt;Visual C++ 2017 (x64)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Visual C++ 2015 - halaman unduhan &lt;a href="https://www.microsoft.com/ru-ru/download/details.aspx?id=53840"&gt;pertama&lt;/a&gt; dan &lt;a href="https://www.microsoft.com/ru-ru/download/details.aspx?id=52685"&gt;kedua&lt;/a&gt; di situs web resmi&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Setelah mengunduh komponen Visual C++ yang diperlukan, jalankan file yang diunduh dan lakukan seluruh proses instalasi.&lt;/p&gt;

&lt;h2 id="winget"&gt;Winget&lt;/h2&gt;
&lt;p&gt;Windows 11 dan 10 memiliki pengelola paket Winget bawaan yang memungkinkan Anda mengunduh dan menginstal program serta komponen dari sumber tepercaya menggunakan antarmuka baris perintah. Cukup ikuti langkah-langkah berikut:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Jalankan command prompt, Windows PowerShell, atau Windows Terminal sebagai administrator: Anda dapat melakukannya dari menu dengan mengklik kanan tombol "Start".&lt;/li&gt;
  &lt;li&gt;Masukkan perintah berikut ini&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;winget search vcredist
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah itu, tekan Enter. Hasilnya, Anda akan melihat daftar komponen &lt;a href="https://remontka.pro/visual-c-redistributable-download-methods/#"&gt;Visual C++ Redistributable&lt;/a&gt; yang tersedia untuk diinstal.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Pilih komponen yang perlu Anda instal, salin ID-nya dari kolom yang sesuai, dan masukkan perintah di bawah ini.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;winget &lt;span class="nb"&gt;install &lt;/span&gt;copyed_id
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Hasilnya, berkas terkait akan diunduh secara otomatis dan instalasinya akan dimulai secara otomatis.&lt;/p&gt;

&lt;h3 id="perhatian"&gt;Perhatian!!!&lt;/h3&gt;
&lt;p&gt;Sebelum menginstal paket ini, sebaiknya nonaktifkan program antivirus, karena selama instalasi program antivirus dapat bersumpah dan mengenali file tersebut sebagai "Trojan", tetapi tidak semua program antivirus menerima file exe seperti Trojan, tetapi ini adalah fenomena yang cukup normal, karena spesialis anti-virus selalu bersumpah pada kunci yang diretas dan program yang memiliki "pil" yang dijahit (pengobatan dari aktivasi). Setelah instalasi, Anda dapat mengaktifkan kembali program anti-virus.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2023/12/cara-mengunduh-visual-c-redistributable.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author><enclosure length="15222904" type="application/octet-stream" url="https://go.microsoft.com/fwlink/?LinkId=746572"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>Paket Microsoft Visual C++ Redistributable menginstal komponen runtime dari pustaka Visual C++ yang diperlukan untuk menjalankan aplikasi yang dikembangkan dengan Visual C++ pada komputer tanpa Visual C++ yang terinstal. Metode integrasinya adalah SVCPACK (T13) dan juga dapat diinstal pada sistem aktif. Paket Microsoft Visual C++ yang didistribusikan (Visual C++ Redistributable) berisi komponen yang diperlukan untuk menjalankan game dan program yang dikembangkan menggunakan versi Visual Studio yang sesuai dan, sebagai aturan, diperlukan untuk kesalahan seperti "Program tidak dapat diluncurkan" karena sistem tidak mendeteksi file DLL dengan nama yang dimulai dengan msvcr atau msvcp. Paling sering, komponen Visual Studio 2012, 2013, dan 2015 diperlukan, tetapi Anda dapat mengunduh dan menginstal paket Visual C++ redistributable versi 2005-2022. Unduh paket Visual C++ yang dapat didistribusikan ulang dari situs web Microsoft Cara pertama untuk mengunduh komponen Visual C++ adalah cara resmi dan, karenanya, cara yang paling aman. Komponen berikut tersedia untuk diunduh (beberapa di antaranya dapat diunduh dengan berbagai cara). Visual Studio 2015-2022-Saat menginstal kit ini, semua komponen Visual C++ 2015, 2017, 2019, dan 2022 yang dapat didistribusikan ulang diinstal dalam satu berkas penginstal. Visual Studio 2013 (Visual C++ 12.0). Visual Studio 2012 (Visual C++ 11.0). Visual Studio 2010 SP1. Visual Studio 2008 SP1 Urutan pemuatan komponen adalah sebagai berikut: Buka halaman resmi Microsoft dan pilih komponen yang ingin Anda unduh. Untuk Visual C++ 2015-2022, cukup unduh dan instal langsung file vc_redist.x86.exe dan vc_redist.x64.exe untuk sistem x64, opsi x86 saja untuk sistem 32-bit atau vc_redist.arm64.exe untuk perangkat dengan prosesor ARM. Untuk komponen Visual C++ 2013, unduh berkas penginstal dari bagian "Paket Microsoft Visual C++ Redistributable untuk Visual Studio 2013". Untuk beberapa komponen (misalnya, untuk versi Visual C++ 2012), Anda akan diminta untuk masuk dengan akun Microsoft Anda. Namun, Anda tidak perlu melakukan ini - nanti di artikel ini, saya akan memberikan tautan untuk mengunduh langsung dari situs Microsoft tanpa harus masuk. Versi terbaru Microsoft Visual C++ Redistributable Yang ada di situs Resmi Microsoft Halaman terpisah untuk mengunduh paket Microsoft Visual C++ yang dapat didistribusikan ulang juga tersedia di situs web Microsoft: Visual C++ 2013 (di bagian kedua halaman terdapat tautan langsung untuk mengunduh versi x86 dan x64) Visual C++ 2010 Visual C++ 2008 Visual C++ 2017 (x64) Visual C++ 2015 - halaman unduhan pertama dan kedua di situs web resmi Setelah mengunduh komponen Visual C++ yang diperlukan, jalankan file yang diunduh dan lakukan seluruh proses instalasi. Winget Windows 11 dan 10 memiliki pengelola paket Winget bawaan yang memungkinkan Anda mengunduh dan menginstal program serta komponen dari sumber tepercaya menggunakan antarmuka baris perintah. Cukup ikuti langkah-langkah berikut: Jalankan command prompt, Windows PowerShell, atau Windows Terminal sebagai administrator: Anda dapat melakukannya dari menu dengan mengklik kanan tombol "Start". Masukkan perintah berikut ini winget search vcredist Setelah itu, tekan Enter. Hasilnya, Anda akan melihat daftar komponen Visual C++ Redistributable yang tersedia untuk diinstal. Pilih komponen yang perlu Anda instal, salin ID-nya dari kolom yang sesuai, dan masukkan perintah di bawah ini. winget install copyed_id Hasilnya, berkas terkait akan diunduh secara otomatis dan instalasinya akan dimulai secara otomatis. Perhatian!!! Sebelum menginstal paket ini, sebaiknya nonaktifkan program antivirus, karena selama instalasi program antivirus dapat bersumpah dan mengenali file tersebut sebagai "Trojan", tetapi tidak semua program antivirus menerima file exe seperti Trojan, tetapi ini adalah fenomena yang cukup normal, karena spesialis anti-virus selalu bersumpah pada kunci yang diretas dan program yang memiliki "pil" yang dijahit (pengobatan dari aktivasi). Setelah instalasi, Anda dapat mengaktifkan kembali program anti-virus.unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya</itunes:subtitle><itunes:author>Iwan Setiawan</itunes:author><itunes:summary>Paket Microsoft Visual C++ Redistributable menginstal komponen runtime dari pustaka Visual C++ yang diperlukan untuk menjalankan aplikasi yang dikembangkan dengan Visual C++ pada komputer tanpa Visual C++ yang terinstal. Metode integrasinya adalah SVCPACK (T13) dan juga dapat diinstal pada sistem aktif. Paket Microsoft Visual C++ yang didistribusikan (Visual C++ Redistributable) berisi komponen yang diperlukan untuk menjalankan game dan program yang dikembangkan menggunakan versi Visual Studio yang sesuai dan, sebagai aturan, diperlukan untuk kesalahan seperti "Program tidak dapat diluncurkan" karena sistem tidak mendeteksi file DLL dengan nama yang dimulai dengan msvcr atau msvcp. Paling sering, komponen Visual Studio 2012, 2013, dan 2015 diperlukan, tetapi Anda dapat mengunduh dan menginstal paket Visual C++ redistributable versi 2005-2022. Unduh paket Visual C++ yang dapat didistribusikan ulang dari situs web Microsoft Cara pertama untuk mengunduh komponen Visual C++ adalah cara resmi dan, karenanya, cara yang paling aman. Komponen berikut tersedia untuk diunduh (beberapa di antaranya dapat diunduh dengan berbagai cara). Visual Studio 2015-2022-Saat menginstal kit ini, semua komponen Visual C++ 2015, 2017, 2019, dan 2022 yang dapat didistribusikan ulang diinstal dalam satu berkas penginstal. Visual Studio 2013 (Visual C++ 12.0). Visual Studio 2012 (Visual C++ 11.0). Visual Studio 2010 SP1. Visual Studio 2008 SP1 Urutan pemuatan komponen adalah sebagai berikut: Buka halaman resmi Microsoft dan pilih komponen yang ingin Anda unduh. Untuk Visual C++ 2015-2022, cukup unduh dan instal langsung file vc_redist.x86.exe dan vc_redist.x64.exe untuk sistem x64, opsi x86 saja untuk sistem 32-bit atau vc_redist.arm64.exe untuk perangkat dengan prosesor ARM. Untuk komponen Visual C++ 2013, unduh berkas penginstal dari bagian "Paket Microsoft Visual C++ Redistributable untuk Visual Studio 2013". Untuk beberapa komponen (misalnya, untuk versi Visual C++ 2012), Anda akan diminta untuk masuk dengan akun Microsoft Anda. Namun, Anda tidak perlu melakukan ini - nanti di artikel ini, saya akan memberikan tautan untuk mengunduh langsung dari situs Microsoft tanpa harus masuk. Versi terbaru Microsoft Visual C++ Redistributable Yang ada di situs Resmi Microsoft Halaman terpisah untuk mengunduh paket Microsoft Visual C++ yang dapat didistribusikan ulang juga tersedia di situs web Microsoft: Visual C++ 2013 (di bagian kedua halaman terdapat tautan langsung untuk mengunduh versi x86 dan x64) Visual C++ 2010 Visual C++ 2008 Visual C++ 2017 (x64) Visual C++ 2015 - halaman unduhan pertama dan kedua di situs web resmi Setelah mengunduh komponen Visual C++ yang diperlukan, jalankan file yang diunduh dan lakukan seluruh proses instalasi. Winget Windows 11 dan 10 memiliki pengelola paket Winget bawaan yang memungkinkan Anda mengunduh dan menginstal program serta komponen dari sumber tepercaya menggunakan antarmuka baris perintah. Cukup ikuti langkah-langkah berikut: Jalankan command prompt, Windows PowerShell, atau Windows Terminal sebagai administrator: Anda dapat melakukannya dari menu dengan mengklik kanan tombol "Start". Masukkan perintah berikut ini winget search vcredist Setelah itu, tekan Enter. Hasilnya, Anda akan melihat daftar komponen Visual C++ Redistributable yang tersedia untuk diinstal. Pilih komponen yang perlu Anda instal, salin ID-nya dari kolom yang sesuai, dan masukkan perintah di bawah ini. winget install copyed_id Hasilnya, berkas terkait akan diunduh secara otomatis dan instalasinya akan dimulai secara otomatis. Perhatian!!! Sebelum menginstal paket ini, sebaiknya nonaktifkan program antivirus, karena selama instalasi program antivirus dapat bersumpah dan mengenali file tersebut sebagai "Trojan", tetapi tidak semua program antivirus menerima file exe seperti Trojan, tetapi ini adalah fenomena yang cukup normal, karena spesialis anti-virus selalu bersumpah pada kunci yang diretas dan program yang memiliki "pil" yang dijahit (pengobatan dari aktivasi). Setelah instalasi, Anda dapat mengaktifkan kembali program anti-virus.unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya</itunes:summary><itunes:keywords>freebsd, openbsd, netbsd, debian, linux, ubuntu, blogger, windows, pfsense, opnsense, dns, web, server, proxy, nginx, apache, ruby, router, video, youtube, skrip, script, command, shell, install, windows</itunes:keywords></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-2492925941625003350</guid><pubDate>Tue, 28 Nov 2023 02:25:00 +0000</pubDate><atom:updated>2026-11-02T09:46:16.101+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>Unduh Video Youtube Dengan Youtube dl CMD di FreeBSD</title><description>&lt;p&gt;Pernahkah Anda setidaknya sekali dalam hidup Anda memiliki keinginan untuk menyimpan video atau audio favorit Anda dari Internet di komputer Anda? Tetapi bagaimana mungkin situs web tersebut tidak memiliki tombol Unduh yang berharga? Untuk kasus seperti itulah utilitas lintas platform gratis youtube-dl ditujukan: utilitas ini memungkinkan Anda mengunduh file audio dan video, hanya mengetahui alamat halaman tempat file tersebut berada.&lt;/p&gt;

&lt;p&gt;Aplikasi youtube-dl adalah program baris perintah kecil untuk mengunduh video dari YouTube.com, metacafe.com, google videos, photobucket videos, yahoo video, dailymotion, dan lainnya. youtube-dl adalah utilitas berbasis Python untuk mengunduh video dari berbagai situs web. Aplikasi ini dapat dijalankan di sistem operasi Linux, FreeBSD, atau Windows.&lt;/p&gt;

&lt;p&gt;Artikel ini akan membahas cara menggunakan youtube-dl, kapabilitas apa yang disediakan utilitas ini kepada pengguna, dan fungsi bermanfaat apa yang disediakan oleh pengembang. Dalam penulisan artikel ini, kami menggunakan sistem operasi FreeBSD.&lt;/p&gt;

&lt;h2 id="1-proses-instal-youtube-dl"&gt;1. Proses Instal Youtube dl&lt;/h2&gt;

&lt;p&gt;Pada sistem operasi FreeBSD, instalasi youtube-dl dapat dilakukan dengan beberapa cara. Cara tercepat adalah dengan menggunakan paket PKG, tetapi dengan PKG tidak semua pustaka dependen terinstal secara lengkap. Cara terbaik adalah dengan menggunakan sistem port FreeBSD.&lt;/p&gt;

&lt;p&gt;Sebagai langkah pertama, instal dependensi Youtube dl.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns6:~ &lt;span class="c"&gt;# pkg install tex-xetex tex-formats texlive-base ghc hs-pandoc rtmpdump&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah semua dependensi di atas terpasang, lanjutkan dengan menginstal aplikasi Youtube dl.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns6:~ &lt;span class="c"&gt;# cd /usr/ports/www/youtube_dl&lt;/span&gt;
root@ns6:/usr/ports/www/youtube_dl &lt;span class="c"&gt;# make config&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/img/instal_dependensi.jpg" target="_blank"&gt;
    &lt;img alt="centang opsi ffmpeg" class="artikel-img" src="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/img/instal_dependensi.jpg" title="centang opsi ffmpeg" /&gt;
    &lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Jika Anda ingin menggunakan konversi audio mp3, pastikan &lt;code class="language-plaintext highlighter-rouge"&gt;multimedia/ffmpeg&lt;/code&gt; dibuat dengan opsi &lt;code class="language-plaintext highlighter-rouge"&gt;"LAME"&lt;/code&gt; yang harus anda aktifkan. Gunakan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;make clean&lt;/code&gt; untuk memulai instalasi.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns6:/usr/ports/www/youtube_dl &lt;span class="c"&gt;# make install clean&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="2-cara-download-dengan-youtube-dl"&gt;2. Cara Download dengan Youtube dl&lt;/h2&gt;

&lt;p&gt;Untuk berhasil menggunakan utilitas ini, Anda harus menulis perintah dengan benar di terminal. Sintaks utilitasnya sederhana:&lt;/p&gt;

&lt;p&gt;youtube-dl [OPTIONS] URL [URLâ€¦]&lt;/p&gt;

&lt;p&gt;Opsi utama:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;-h, â€“help: Cetak teks bantuan ini dan keluar.&lt;/li&gt;
  &lt;li&gt;â€“version: Cetak versi program dan keluar.&lt;/li&gt;
  &lt;li&gt;-U, â€“update: Perbarui program ini ke versi terbaru.&lt;/li&gt;
  &lt;li&gt;-i, â€“ignore-errors: Lanjutkan pada kesalahan unduhan.&lt;/li&gt;
  &lt;li&gt;â€“abort-on-error: Batalkan pengunduhan video selanjutnya.&lt;/li&gt;
  &lt;li&gt;â€“dump-user-agent: Menampilkan identifikasi browser saat ini.&lt;/li&gt;
  &lt;li&gt;â€“list-extractors: Daftar semua ekstraktor yang didukung.&lt;/li&gt;
  &lt;li&gt;â€“extractor-descriptions: Deskripsi keluaran dari semua ekstraktor yang didukung.&lt;/li&gt;
  &lt;li&gt;â€“force-generic-extractor: Paksa ekstraksi untuk menggunakan ekstraktor generik.&lt;/li&gt;
  &lt;li&gt;â€“default-search: Gunakan awalan ini untuk URL yang tidak memenuhi syarat.&lt;/li&gt;
  &lt;li&gt;â€“ignore-config: Jangan membaca berkas konfigurasi.&lt;/li&gt;
  &lt;li&gt;â€“config-location: Jalur Lokasi berkas konfigurasi.&lt;/li&gt;
  &lt;li&gt;â€“flat-playlist: Jangan mengekstrak video dari daftar putar, daftarkan saja.&lt;/li&gt;
  &lt;li&gt;â€“mark-watched: Tandai video yang sudah ditonton (hanya YouTube).&lt;/li&gt;
  &lt;li&gt;â€“no-mark-watched: Jangan tandai video yang telah ditonton (hanya YouTube).&lt;/li&gt;
  &lt;li&gt;â€“no-color: Jangan memancarkan kode warna dalam output.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Untuk mengunduh video, langkah pertama kita adalah membuat folder unduhan &lt;code class="language-plaintext highlighter-rouge"&gt;/tmp/YTDownload&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns6:~ &lt;span class="c"&gt;# mkdir -p /tmp/YTDownload&lt;/span&gt;
root@ns6:~ &lt;span class="c"&gt;# cd /tmp/YTDownload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Kemudian buka situs web YouTube, dan salin URL di menu bilah alamat, seperti yang ditunjukkan di bawah ini.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/img/salin_alamat_url_untuk_persiapan_download.jpg" target="_blank"&gt;
    &lt;img alt="Persiapan unduh" class="artikel-img" src="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/img/salin_alamat_url_untuk_persiapan_download.jpg" title="Persiapan unduh" /&gt;
    &lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;setelahitu, Jalankan perintah berikut di terminal putty.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/img/run_via_cmd_command.jpg" target="_blank"&gt;
    &lt;img alt="Jalankan terminal shell dengan putty" class="artikel-img" src="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/img/run_via_cmd_command.jpg" title="Jalankan terminal shell dengan putty" /&gt;
    &lt;/a&gt;
&lt;/figure&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns6:/tmp/YTDownload &lt;span class="c"&gt;# youtube-dl 'https://www.youtube.com/watch?v=dMoCmLnak4w'&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;youtube] dMoCmLnak4w: Downloading webpage
&lt;span class="o"&gt;[&lt;/span&gt;dashsegments] Total fragments: 1
&lt;span class="o"&gt;[&lt;/span&gt;download] Destination: Satu Keluarga Diserang Pria Bersenjata Tajam Terekam CCTV - LIS 21_11-dMoCmLnak4w.f136.mp4
&lt;span class="o"&gt;[&lt;/span&gt;download] 100% of 9.07MiB &lt;span class="k"&gt;in &lt;/span&gt;00:06
&lt;span class="o"&gt;[&lt;/span&gt;dashsegments] Total fragments: 1
&lt;span class="o"&gt;[&lt;/span&gt;download] Destination: Satu Keluarga Diserang Pria Bersenjata Tajam Terekam CCTV - LIS 21_11-dMoCmLnak4w.f140.m4a
&lt;span class="o"&gt;[&lt;/span&gt;download] 100% of 1022.10KiB &lt;span class="k"&gt;in &lt;/span&gt;00:00
&lt;span class="o"&gt;[&lt;/span&gt;ffmpeg] Merging formats into &lt;span class="s2"&gt;"Satu Keluarga Diserang Pria Bersenjata Tajam Terekam CCTV - LIS 21_11-dMoCmLnak4w.mp4"&lt;/span&gt;
Deleting original file Satu Keluarga Diserang Pria Bersenjata Tajam Terekam CCTV - LIS 21_11-dMoCmLnak4w.f136.mp4 &lt;span class="o"&gt;(&lt;/span&gt;pass &lt;span class="nt"&gt;-k&lt;/span&gt; to keep&lt;span class="o"&gt;)&lt;/span&gt;
Deleting original file Satu Keluarga Diserang Pria Bersenjata Tajam Terekam CCTV - LIS 21_11-dMoCmLnak4w.f140.m4a &lt;span class="o"&gt;(&lt;/span&gt;pass &lt;span class="nt"&gt;-k&lt;/span&gt; to keep&lt;span class="o"&gt;)&lt;/span&gt;
root@ns6:/tmp/YTDownload &lt;span class="c"&gt;#&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Utilitas youtube-dl akan berguna bagi siapa saja yang ingin mengunduh musik dan video dari situs yang tidak menyediakan fungsi unduh. Utilitas ini memiliki banyak pengaturan yang fleksibel dan hanya memiliki satu kekurangan, tampilan grafis yang buruk.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2023/11/unduh-video-youtube-dengan-youtube-dl.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-2934306025308263602</guid><pubDate>Tue, 10 Oct 2023 02:05:00 +0000</pubDate><atom:updated>2026-11-02T08:07:37.357+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>Sistem boot BSD dan Proses Inisialisasi</title><description>&lt;p&gt;Dalam artikel ini, proses boot dan inisialisasi sistem BSD akan dibahas secara berurutan - dari mesin yang dinyalakan hingga prompt baris perintah. Mirip dengan bagaimana hal ini dilakukan untuk Linux dalam manuskrip terkenal Greg O'Keefe, From PowerUp To Bash - ide yang menjadi dasar karya ini.&lt;/p&gt;

&lt;p&gt;Pembahasan ini didasarkan pada contoh DragonFlyBSD, tetapi hampir semua yang dijelaskan juga berlaku untuk FreeBSD, dan mungkin juga sistem BSD lainnya.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Apa Itu Sistem Startup
Proses startup sistem dibagi menjadi dua tahap, yang hanya saling terhubung secara tidak langsung - pemuatan dan inisialisasinya sendiri.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Dengan memuat sistem operasi, yang kami maksud adalah meluncurkan program khusus yang disebut citra kernel sistem (atau kernel) untuk dieksekusi. Citra kernel hampir merupakan berkas biner yang dapat dieksekusi biasa. Dan kekhususan peluncurannya hanya jika ada program lain yang diluncurkan di bawah kendali OS tertentu, yang membaca dari sistem berkas yang dianggap asli oleh OS ini, maka kernel harus diluncurkan seolah-olah dengan sendirinya, tanpa sistem operasi apa pun (karena kernel adalah sistem operasi), dan dari media yang tidak dikenal oleh sistem (karena kernel itu sendiri belum dimuat). Bukan kebetulan bahwa dalam literatur berbahasa Inggris ada metafora yang diterima secara umum untuk proses boot yang disebut bootstrapping, yang secara alegoris dapat diterjemahkan sebagai "menarik diri Anda dengan bootstrap." Dan meskipun dalam kehidupan nyata tidak semua orang berhasil dalam hal ini, di dunia sistem POSIX prosedur ini dilakukan secara teratur - dan, sebagai suatu peraturan, berhasil.&lt;/p&gt;

&lt;p&gt;Citra kernel sistem berisi semua yang diperlukan untuk bootstrapping murni. Akan tetapi, ini hanya dapat dilakukan dengan cara ini dari media tanpa sistem berkas. Oleh karena itu, sejauh yang saya ketahui, pengaktifan kernel langsung hanya digunakan saat melakukan booting dari disket. Selama pengaktifan OS normal dari hard drive, beberapa kekuatan eksternal juga ikut serta dalam hal ini - program khusus yang disebut bootloader. Program ini memuat kernel sistem, bertanggung jawab untuk menentukan perangkat keras, memuat modul objek (modul kernel yang dapat dimuat), dan memasang sistem berkas root (dalam mode "hanya-baca"). Sementara itu, kernel memulai proses sistem (yaitu, tidak terkait dengan berkas yang dapat dieksekusi) yang mengelola memori virtual, buffer, halaman memori, dll., hingga ke swapper, dan setelah selesai - proses init "normal" pertama (yaitu, terkait dengan berkas yang dapat dieksekusi pada disk) (/sbin/init).&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/images/Unix_system_startup_procedure.jpg" target="_blank"&gt;
    &lt;img rel="image_src" alt="Sistem boot freebsd" class="artikel-img" src="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/images/Unix_system_startup_procedure.jpg" title="Sistem boot freebsd" /&gt;
    &lt;/a&gt;
    &lt;figcaption class="figure-caption text-center"&gt;
     Diagram UNIX Start UP Procedure
    &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;p&gt;Setelah itu, sistem inisialisasi mulai bekerja. Perannya adalah memastikan, melalui skrip startup yang sesuai (juga dikenal sebagai skrip inisialisasi), pemasangan sistem berkas (dan pemasangan ulang root dalam mode "baca/tulis"), peluncuran layanan sistem utama, atau daemon, pemanggilan perintah untuk mendapatkan terminal (proses getty) dan otorisasi pengguna (login). Akhir dari startup sistem ditandai dengan undangan untuk otorisasi.&lt;/p&gt;

&lt;p&gt;Secara visual, tahap boot dan inisialisasi berbeda dalam satu atau beberapa tampilan visual dari pesan yang ditampilkan. Dalam DragonFlyBSD, misalnya, pesan progres boot ditampilkan dalam karakter putih radikal, yang digantikan oleh karakter putih yang diredam pada tahap inisialisasi.&lt;/p&gt;

&lt;p&gt;Pemuatan dan inisialisasi adalah hal pertama yang dilihat pengguna di OS mana pun. Namun, pengguna sistem yang sesuai dengan POSIX mendapatkan kesenangan ini jauh lebih jarang daripada "jendela". Mode operasi normal mesin Unix rumahan adalah menyalakannya di pagi hari dan mematikannya di malam hari. (Namun, setiap orang memiliki ide mereka sendiri tentang "pagi" dan "sore"). Dan mesin Unix yang berfungsi tidak boleh dimatikan sama sekali - sampai rusak secara fisik. Dan kebutuhan untuk me-restart sistem saat bekerja di Linux atau BSD sangat jarang muncul. Sebenarnya, hanya setelah membangun ulang dan menginstal ulang kernel baru (atau memindahkan partisi root - tetapi ini sudah merupakan kasus yang luar biasa) - dalam semua kasus konfigurasi ulang sistem lainnya, Anda dapat melakukannya tanpanya.&lt;/p&gt;

&lt;p&gt;Jadi, apa yang menjadi perhatian pengguna tentang bagaimana sistem melakukan booting dan berapa lama waktu yang dibutuhkan? Namun, terkadang beberapa tindakan diperlukan untuk mengonfigurasi kedua tahap proses ini. Karena saat sistem melakukan booting, tidak hanya layar booting dan mungkin menu dengan opsi booting yang ditampilkan, tetapi juga modul kernel yang sesuai dengan perangkat keras yang tersedia dimuat, sistem berkas dipasang, skrip inisialisasi dimulai, terminal virtual dibuka, dan seterusnya. Tentu saja, dari semua tindakan ini, hanya pemuatan kernel yang sebenarnya yang mutlak diperlukan; semua hal lainnya dapat dilakukan nanti. Namun, bukankah lebih baik mengonfigurasi sistem sehingga segera setelah prosedur booting selesai, Anda mendapatkan sistem yang sepenuhnya siap digunakan, daripada harus membawanya ke kondisi ini secara manual nanti?.&lt;/p&gt;

&lt;p&gt;Selain itu, memahami proses pemuatan dan inisialisasi tidak akan berlebihan jika harus menghentikan proses ini secara manual. Dan kebutuhan untuk intervensi semacam itu - sayangnya - muncul dari waktu ke waktu dalam situasi daruratâ€¦&lt;/p&gt;

&lt;p&gt;Jadi, mari kita bahas tahap-tahap utama memulai dan menginisialisasi DragonFly dan melihat apa yang perlu dikonfigurasi di dalamnya, serta di mana dan bagaimana (dan yang terpenting, mengapa) Anda dapat mengganggunya.&lt;/p&gt;

&lt;h2 id="2-mengenai-booting-dan-bootloader"&gt;2. Mengenai booting dan bootloader&lt;/h2&gt;

&lt;p&gt;Sebaiknya pelajari startup sistem dari tahap pertama, yaitu pemuatan yang sebenarnya. Seperti yang telah disebutkan, tahap-tahap ini dikontrol oleh program khusus, yang dalam bahasa Rusia disebut bootloader. Meskipun dalam bahasa Inggris ada dua istilah yang digunakan, yaitu loader dan boot manager (yang, seperti yang akan kita lihat seiring waktu, adalah hal yang sedikit berbeda, tetapi sekarang ini tidak penting).&lt;/p&gt;

&lt;p&gt;Faktanya, setiap bootloader mencakup dua atau bahkan tiga bagian yang relatif independen, meskipun didistribusikan sebagai satu paket, seperti Lilo atau GRUB. Untuk memverifikasi ini, mari kita bayangkan bagaimana sebuah mesin melakukan booting pada level "perangkat keras", jadi untuk berbicara (yaitu komputer pribadi yang kompatibel dengan Intel, pada arsitektur lain semuanya sedikit berbeda).&lt;/p&gt;

&lt;p&gt;Pertama-tama, setelah menyalakan daya, program yang di-flash ke ROM komputer (BIOS) diluncurkan. Ia memeriksa perangkat keras, lalu menemukan drive yang terpasang dalam pengaturan BIOS sebagai perangkat boot pertama (lebih spesifiknya, hard drive), di dalamnya - blok fisik pertama yang memuat apa yang disebut master boot record (MBR - Master Boot Record).&lt;/p&gt;

&lt;p&gt;Konten MBR, pertama-tama, adalah tabel partisi disk - empat partisi identik, yang salah satunya pernah kita instal DragonFly. Dan kedua, beberapa kode yang mengendalikan BIOS setelah operasinya selesai. Dalam MBR standar, yang ditulis ke hard drive yang "baru diinstal" atau dipulihkan setelah perintah DOS FDISK /mbr, kode ini hanya dapat menemukan partisi fisik pertama pada disk (partisi primer) dan mentransfer kontrol ke sektor boot-nya. Yang cukup untuk mem-boot sistem operasi seperti DOS atau Windows 9X/ME dari partisi pertama (atau satu-satunya). Namun dalam kasus lain, itu jelas tidak cukup - misalnya, jika beberapa sistem operasi diinstal pada satu disk, yang tentu saja tidak dapat dimuat dalam satu partisi.&lt;/p&gt;

&lt;p&gt;Oleh karena itu, setiap bootloader harus menyertakan program yang ditulis dalam MBR. Karena volume yang terakhir hanya 512 KB (ukuran blok disk fisik), yang sebagian sudah ditempati oleh tabel partisi, tidak mungkin untuk menyertakan fungsi yang sangat kaya dalam program ini. Biasanya, ia mampu mengidentifikasi semua partisi primer yang digunakan, mencantumkannya, dan memungkinkan pengguna memilih partisi untuk melakukan boot, lalu mentransfer kontrol ke sektor boot dari partisi yang dipilih.&lt;/p&gt;

&lt;p&gt;Seperti MBR, sektor boot partisi (Boot Record, bukan lagi Master!) berisi informasi tentang tata letaknya (Label Disk), tergantung pada skema yang digunakan dalam sistem operasi tertentu dan kode kontrol yang menggantikan program yang ditulis dalam MBR. Dan kode ini adalah komponen kedua dari bootloader. Benar, kemampuannya juga tidak bisa kaya - lagipula, ukuran sektor boot partisi sama 512 KB. Dan karena itu, ia diberi satu fungsi: untuk mentransfer kontrol ke program yang terletak di luar sektor boot. Yang, pada kenyataannya, harus mengenali partisi root dari sistem operasi dan sistem file yang dibawanya, setelah itu, secara langsung atau tidak langsung, ia memuat kernelnya.&lt;/p&gt;

&lt;p&gt;Mudah ditebak bahwa dua komponen pertama dari bootloader, pada dasarnya, tidak ada hubungannya dengan sistem operasi apa pun dan sama sekali bukan bagian dari sistem file. Tetapi dengan yang ketiga ada beberapa opsi. Ia dapat menjadi bagian dari hierarki berkas sistem operasi yang dapat di-boot, seperti Lilo, atau mewakili sesuatu seperti mini-OS independen, seperti GRUB (bukan kebetulan bahwa sangat disarankan untuk menginstalnya pada partisi disknya sendiri, tidak dipasang secara default di root sistem operasi yang di-boot). Dan bagaimana dengan perangkat boot pahlawan kita, DragonFlyBSD?.&lt;/p&gt;

&lt;h2 id="3-tahapan-booting"&gt;3. Tahapan Booting&lt;/h2&gt;

&lt;p&gt;Dalam sistem operasi ini, program yang umum untuk semua sistem operasi dari keluarga BSD digunakan untuk mem-boot sistem. Program ini memiliki namanya sendiri, dan, yang menarik, nama ini adalah BSD Loader (meskipun, seperti yang akan dijelaskan nanti, ini agak sembarangan). Saya harus mengakui bahwa selama beberapa tahun berkomunikasi dengan FreeBSD dan sesekali berkenalan dengan saudara-saudaranya (OpenBSD dan bahkan NetBSD), entah bagaimana saya tidak pernah punya alasan untuk mencari tahu struktur bootloader mereka. Yah, ia memuat sistem asli dengan sempurna dan luar biasa (misalnya, FreeBSD). Ia juga memuat sistem BSD lainnya, bahkan lebih baik. Fakta bahwa ia dapat memuat Linux tanpa usaha apa pun adalah hal yang hebat. Dan fakta bahwa ia juga dapat memuat Windows - ini hanyalah aplikasi gratisâ€¦â€¦&lt;/p&gt;

&lt;p&gt;Bagaimana saya bisa tetap dalam ketidaktahuan yang membahagiakan jika, dalam beberapa hal, sehubungan dengan menginstal FreeBSD pada laptop Toshiba, saya tidak perlu menggali sedikit dengan opsi BSD Loader. Dan kemudian ternyata ini adalah program dengan kemampuan interaktif yang hebat, dan sebagai tambahan ia memiliki kemungkinan untuk dikonfigurasi. Tentu saja, ini tidak dapat dibandingkan dengan GRUB, tetapi jika Anda tidak bereksperimen dengan beberapa sistem operasi pada beberapa hard drive, fungsi pemuatan sudah lebih dari cukup. Yang akan saya coba tunjukkan di bawah ini menggunakan contoh sistem operasi DragonFlyBSD. Namun, hampir semua yang dikatakan berlaku untuk semua sistem BSD lainnya (dan untuk FreeBSD, dan tanpa syarat "hampir").&lt;/p&gt;

&lt;p&gt;Fitur utama bootloader DragonFly (meskipun hampir semua yang disebutkan berlaku untuk semua sistem BSD lainnya, dan untuk FreeBSD, tanpa klausa "hampir"), yang membedakannya dari Lilo dan, pada tingkat yang lebih rendah, dari GRUB, adalah bahwa ia tidak menyamarkan berbagai komponennya, termasuk empat program (hampir) independen.Bagian pertama dari bootloader (yang disebut boot0) adalah program yang ditulis selama instalasi sistem di sektor boot disk tempat mesin di-boot sesuai dengan pengaturan BIOS. Biasanya ini adalah Master pada saluran IDE pertama (kita tidak akan berbicara tentang disk SCSI di sini), tetapi mungkin ada variasi (misalnya, jika ada RAID ATA perangkat keras atau pengontrol ATA tambahan).&lt;/p&gt;

&lt;p&gt;Program ini bertanggung jawab atas tahap pertama fase boot, yang membaca tabel partisi dari disk primer, menampilkan daftarnya (jika ada lebih dari satu partisi), menunggu beberapa saat hingga pengguna memilih (secara default, partisi yang dipilih pada sesi sebelumnya akan dapat di-boot) dan setelah itu (atau setelah periode tunggu yang tetap) mentransfer kontrol ke kode yang ditulis di sektor boot dari partisi yang dipilih (atau default). Partisi dipilih dengan menekan tombol F1 - F4. Jika ada dua disk, menekan tombol F5 akan mentransfer kontrol ke sektor boot dari disk kedua, dan kemudian peristiwa akan mengalir tergantung pada apa yang tertulis di dalamnya: disk fisik kedua boot0it sendiri tidak dapat membaca partisi.&lt;/p&gt;

&lt;p&gt;Daftar partisi yang akan dipilih menyertakan nama-nama partisi sesuai dengan pengenal jenis sistem berkas, misalnya:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;F1 : DOS&lt;/li&gt;
  &lt;li&gt;F2 : Linux&lt;/li&gt;
  &lt;li&gt;F3 : BSD&lt;/li&gt;
  &lt;li&gt;F5 : Drive 1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hingga saat ini, BSD Loader tidak dapat mengenali partisi logis dalam Extended DOS atau mem-boot sistem operasi apa pun dari partisi tersebut. Namun, situasinya tampaknya telah berubah sekarang - ini dapat disimpulkan dari laporan tentang kemungkinan menginstal DragonFlyBSD pada partisi extended (satu-satunya sistem BSD yang mampu melakukan ini, sejauh yang saya ketahui). Tetapi apakah mungkin membayangkan menginstal sistem tanpa kemungkinan mem-boot-nya dengan alat standar?&lt;/p&gt;

&lt;p&gt;Pada prinsipnya, keberadaan bagian pertama dari bootloader BSD tidaklah wajib - ia dapat dengan mudah digantikan oleh bootloader Linux (Lilo yang sama, yang mentransfer kontrol ke sektor boot segmen BSD "sepanjang rantai") atau GRUB multisistem, yang dapat bekerja secara langsung dengan file sistem dan memuat kernel dari beberapa sistem operasi.&lt;/p&gt;

&lt;p&gt;Bagian kedua (boot1) terletak di sektor boot partisi primer yang berisi sistem BSD (segmen BSD). Artinya, boot0 dan boot1 terletak tidak hanya di luar sistem file, tetapi juga, pada kenyataannya, di luar segmen BSD itu sendiri. Bagian ketiga (boot2) sudah ada di dalam segmen, tetapi tidak termasuk dalam bagian logis mana pun.&lt;/p&gt;

&lt;p&gt;Bagian kedua dan ketiga dari bootloader pada dasarnya adalah satu program, yang hanya dipisahkan oleh batasan ukuran sektor boot partisi (512 byte). Jadi, tugas boot1 hanyalah mengenali segmen BSD, menemukannya di boot2, dan mentransfer kontrol ke sana. Dan yang terakhir berkewajiban, setelah menunggu beberapa saat, untuk mengenali sistem berkas root, menemukannya, dan menjalankan berkas biner yang dapat dieksekusi: /boot/loader, yang membentuk bagian keempat dari bootloader; secara tegas, istilah BSD loader hanya merujuk pada program ini.&lt;/p&gt;

&lt;p&gt;Jadi, dapat dilihat bahwa tiga bagian pertama dari bootloader BSD (boot0, boot1, dan boot2) berada di luar sistem berkas dari sistem operasi BSD yang terpasang. Kita hanya dapat mengaksesnya dengan meluncurkan loader - berkas yang dapat dieksekusi biasa yang ditempatkan di direktori /boot khusus dari sistem berkas root.&lt;/p&gt;

&lt;p&gt;Memang benar bahwa di direktori &lt;code class="language-plaintext highlighter-rouge"&gt;/boot&lt;/code&gt; (ini adalah lokasi "default" loader), bersama dengan file yang dapat dieksekusi, Anda juga dapat melihat file dengan nama boot0, boot1, dan boot2. Namun, file-file ini hanyalah salinan kode terkait yang terletak (dan dieksekusi) di luar sistem file BSD. Tujuannya adalah untuk memulihkan kemampuan boot setelah situasi darurat.&lt;/p&gt;

&lt;p&gt;Tugas loader adalah memuat kernel dan sekumpulan modul default dengan cepat, setelah itu menampilkan menu dengan logo proyek, yang dapat dikenali oleh capung (menggantikan iblis dengan garpu rumput dari FreeBSD). Menu tersebut berisi item-item berikut:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Boot DragonFly [default] : boot kernel normal dengan semua modul yang diperlukan (siapa dan di mana menginstalnya akan dijelaskan lebih lanjut nanti) memasang sistem berkas dan mengeksekusi skrip startup yang ditentukan.&lt;/li&gt;
  &lt;li&gt;Boot DragonFly with ACPI disabled : hal yang sama, hanya dengan modul acpi dinonaktifkan, yang terkadang mungkin diperlukan pada beberapa laptop.&lt;/li&gt;
  &lt;li&gt;Boot DragonFly in Safe Mode : boot dalam mode aman, yaitu tanpa menghubungkan modul.&lt;/li&gt;
  &lt;li&gt;Boot DragonFly in single user mode : boot dalam mode pengguna tunggal, di mana hanya sistem berkas root yang dipasang (dan hanya untuk membaca), dan tahap inisialisasi diabaikan.&lt;/li&gt;
  &lt;li&gt;Boot DragonFly with verbose logging : boot normal, tetapi dengan pesan yang bertele-tele.&lt;/li&gt;
  &lt;li&gt;Escape to loader prompt : keluar ke baris perintah bootloader.&lt;/li&gt;
  &lt;li&gt;Reboot : Baiklah, kami mengetahui hal ini seperti punggung tangan kami, hanya saja lebih baik.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Jika Anda tidak membuat pilihan apa pun, opsi default akan mulai dimuat dalam sepuluh detik. Untuk menghindari hal ini (dan memberi Anda lebih banyak waktu untuk berpikir), cukup tekan bilah spasi - hitungan mundur akan berhenti dan tidak dimuat hingga Anda membuat pilihan yang jelas.&lt;/p&gt;

&lt;p&gt;Setelah pemilihan atau kedaluwarsa undang-undang pembatasan, proses deteksi perangkat keras yang agak lama dimulai, di mana banyak pesan kernel, berbeda dari pesan normal, ditampilkan di layar dalam simbol "warna" putih terang. Pesan-pesan ini sangat menarik, tetapi tidak mudah dilihat. Namun, ini tidak menakutkan - Anda dapat melihatnya nanti dengan perintah dmesg. Setelah ini, sistem berkas root dipasang dan proses boot dimulai darinya (menggunakan berkas yang dapat dieksekusi biasa /sbin/init), dan skrip startup diproses. Untuk menandakan hal ini, warna putih terang dari pesan kernel berubah menjadi abu-abu biasa - tahap boot yang kita minati hari ini telah berakhir.&lt;/p&gt;

&lt;h2 id="4-kontrol-interaktif-dari-proses-boot"&gt;4. Kontrol interaktif dari proses boot&lt;/h2&gt;

&lt;p&gt;Pertanyaan yang muncul adalah: dapatkah pengguna memengaruhi proses boot? Jawabannya adalah ya. Selama pengoperasian sistem boot, pengguna memiliki kebebasan untuk memilih tiga kali: memilih partisi boot pada tahap boot0 awal, memilih kontrol interaktif pada tahap boot2, dan memilih mode boot segera setelah memulai loader. Dan dalam semua kasus ini, pengguna dapat melakukan intervensi dalam proses secara manual. Mengapa? Ini adalah pertanyaan lain, dan saya harap jawabannya akan jelas dalam presentasi berikut.&lt;/p&gt;

&lt;p&gt;Dengan pilihan partisi boot, semuanya menjadi jelas: memungkinkan Anda untuk mem-boot salah satu sistem operasi, jika beberapa di antaranya diinstal pada mesin tertentu. Namun pada tahap boot2, dimungkinkan untuk menghentikan eksekusinya, atau lebih tepatnya, mencegah peluncurannya oleh loader. Untuk melakukan ini, dalam jeda antara memilih untuk mem-boot dari partisi BSD dan munculnya pesan tentang memuat kernel dan modul (jeda ini ditunjukkan dengan munculnya simbol berkedip di layar _), Anda perlu menekan tombol apa saja. Sebagai tanggapan akan ada pesan seperti berikut:&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; BSD/i386 BOOT
 Default: 0:ad&lt;span class="o"&gt;(&lt;/span&gt;0,a&lt;span class="o"&gt;)&lt;/span&gt;/boot/loader
 boot:
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Dan dalam pesan tersebut, Anda dapat menentukan opsi boot selain yang default. Misalnya, Anda dapat melakukan boot langsung dari berkas citra kernel sistem. Ini mungkin masuk akal setelah membangun ulang kernel, jika kernel yang baru ternyata dikonfigurasi secara tidak tepat untuk melakukan boot (tetapi, sayangnya, cukup untuk dikompilasi).&lt;/p&gt;

&lt;p&gt;Untuk melakukan ini, Anda perlu membuat jalur ke kernel lama dalam citra dan kemiripan versi default. Yaitu, tentukan:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;nomor disk pada mesin sesuai dengan BIOS (0- yang pertama dari yang tersedia, 1- yang kedua, dan seterusnya, terlepas dari urutan koneksi);&lt;/li&gt;
  &lt;li&gt;antarmukanya - dalam contoh adit melambangkan disk ATA (untuk disk SCSI akan menjadi da, untuk disket - fd);&lt;/li&gt;
  &lt;li&gt;nomor pada saluran IDE (0 - master, 1 - slave);&lt;/li&gt;
  &lt;li&gt;partisi dalam pengertian yang digunakan oleh Label BSD, yaitu, bagian dari irisan yang dicadangkan untuk sistem berkas root BSD ( a; Nama berkas citra kernel lama adalah /kernel.old).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Jika ada beberapa partisi primer dengan tipe yang berbeda pada disk, maka partisi tipe non-BSD akan dilewati, dan huruf a (jelas, citra kernel hanya dapat berada pada sistem berkas root) akan merujuk ke subbagian pertama dari segmen dengan pengenal 165 (bahkan jika itu adalah yang keempat pada disk).&lt;/p&gt;

&lt;p&gt;Jika Anda tidak yakin dengan nama berkas yang tepat (dan mungkin ada beberapa; sebelum menginstal setiap kernel baru yang belum diuji, disarankan untuk membuat salinan dari yang lama, yang diketahui berfungsi), Anda dapat memasukkan tanda tanya pada baris perintah, yang jawabannya akan menjadi daftar direktori root (tetapi tidak lebih dalam: boot2 tidak akan dapat melihat konten subdirektori, bahkan dalam sistem berkas yang sama, pada tahap ini).&lt;/p&gt;

&lt;p&gt;Namun, prosedur yang sama - memuat kernel lama - dapat (dan harus, karena (jauh lebih sederhana) dilakukan melalui loader, dengan mempertimbangkan kemampuan interaktif yang sedang kita bahas sekarang.&lt;/p&gt;

&lt;p&gt;Menu loader menawarkan pilihan mode yang cukup untuk situasi standar, tetapi jelas tidak mencakup semua mode non-standar (untuk itulah mode tersebut). Secara khusus, opsi untuk memuat kernel lama tidak disediakan dalam menu. Untungnya, item menu kedua terakhir memecahkan masalah ini (dan banyak lainnya).&lt;/p&gt;

&lt;p&gt;Jadi, dengan memilih item menu keenam - Escape to loader prompt - kita menemukan diri kita dalam lingkungan penerjemah perintah loader. Ia memiliki antarmuka seperti shell - perintah dengan opsi dan argumennya dimasukkan setelah prompt, yang terlihat seperti,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dalam hal kemudahan kerja interaktif, GRUB tentu saja bukan salah satunya: ia tidak memiliki pelengkapan otomatis, tidak ada riwayat perintah, kemungkinan penyuntingan terbatas pada tombol Backspaceloader. Namun, ia menjalankan fungsi utamanya dengan baik - memasukkan dan menjalankan perintah bawaan.&lt;/p&gt;

&lt;p&gt;Selain itu, ada cukup banyak perintah seperti itu - daftar lengkapnya dapat diperoleh dengan memasukkan tanda tanya pada baris perintah. Bantuan juga tersedia - perintah bantuan akan memberikan petunjuk singkat help??? - informasi lebih rinci tentang penggunaan argumen perintah. Namun, sintaks perintah juga mirip dengan shell, jadi seharusnya tidak ada kesulitan dengan ini.&lt;/p&gt;

&lt;p&gt;Perintah bawaan loader dapat dibagi menjadi tiga bagian sesuai dengan tujuannya:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;untuk memperoleh informasi.&lt;/li&gt;
  &lt;li&gt;untuk mengonfigurasi bootloader.&lt;/li&gt;
  &lt;li&gt;sebenarnya untuk mengelola proses pemuatan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dari kelompok perintah pertama, kami menyoroti yang berikut: ls, lsdev, lsmod, show, more. Yang pertama dimaksudkan untuk melihat sistem berkas root dan subdirektorinya, meskipun hanya yang tidak terletak di subbagian terpisah. Akan tetapi, karena semua berkas yang diperlukan untuk memuat terletak di subdirektori root itu sendiri (di /boot, /dev, /modules), batasan ini tidak signifikan. Varian ls -l dari perintah tersebut menampilkan daftar berkas (dan direktori) yang menunjukkan ukurannya; tanpa opsi ini, direktori hanya ditandai dengan huruf.&lt;/p&gt;

&lt;p&gt;Perintah lsdev mencantumkan perangkat disk yang ada di mesin, partisi primer dan subpartisinya (yang terakhir hanya untuk partisi yang ditandai menurut aturan label BSD). Opsi -v memberikan detail keluaran.&lt;/p&gt;

&lt;p&gt;Perintah lsmod menyediakan tampilan modul loader yang dimuat sebelum menu (atau baris perintah) muncul. Seperti pada kasus sebelumnya, ada opsi verbose - -v.&lt;/p&gt;

&lt;p&gt;Perintah show melakukan fungsi yang sama, tetapi berkenaan dengan variabel loader. Tanpa argumen, perintah ini mencetak nilai dari semua variabel yang ditentukan. Jika nama variabel ditentukan sebagai argumen, hanya nilainya yang ditampilkan. Beberapa argumen, dipisahkan dengan titik koma, diperbolehkan.&lt;/p&gt;

&lt;p&gt;Nah, perintah ini melakukan lebih banyak fungsi yang sama seperti namanya di antara utilitas Unix. Perintah ini memungkinkan melihat isi file teks, yaitu, berada di penerjemah perintah loader, kita dapat membiasakan diri dengan pengaturan yang penting untuk pemuatan (dan lainnya).&lt;/p&gt;

&lt;p&gt;Perintah konfigurasi memungkinkan Anda untuk menentukan atau menghapus variabel bootloader, memuat atau menghapus modul kernel. Seperti yang telah disebutkan, kernel itu sendiri dengan serangkaian modul dan variabel yang telah ditetapkan sebelumnya dimuat sebelum menu loader dan command interpreter. Jadi, dengan menggunakan perintah yang sesuai, rangkaian yang telah ditetapkan sebelumnya ini dapat sedikit disesuaikan (atau diubah sepenuhnya). Ini mungkin diperlukan jika konfigurasi kernel default tidak dimuat karena suatu alasan (kasus yang umum adalah konflik antara sistem penghemat daya laptop dan modul sistem ACPI), untuk tujuan debugging, atau hanya untuk memuaskan rasa ingin tahu.&lt;/p&gt;

&lt;p&gt;Pertama, mari kita lihat perintah manajemen modul. Ini adalah sepasang perintah load untuk membongkar dan menghapus modul. Yang pertama digunakan dengan argumen, yang dapat dicari (menggunakan ls) di direktori /modules jika perlu; nama dalam argumen diberikan tanpa sufiks *.ko. Perintah unload dengan argumen serupa akan menghapus modul yang ditentukan, tanpa argumen; itu akan menghapus semua modul sepenuhnya, memungkinkan Anda untuk mulai mengonfigurasi dari awal.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2023/10/sistem-boot-bsd-dan-proses-inisialisasi.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-6631538976614412811</guid><pubDate>Mon, 28 Aug 2023 02:30:00 +0000</pubDate><atom:updated>2026-11-02T08:20:27.013+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><title>Membuat Gnome Keyring di Ubuntu Desktop</title><description>&lt;p&gt;Gnome Keyring, yang terkadang juga disebut &lt;strong&gt;Kata Sandi dan Kunci&lt;/strong&gt;, adalah pengelola default semua rahasia Anda selama sesi Desktop Ubuntu Anda berlangsung. Ini adalah bagian integral dari sistem Desktop Ubuntu dan karenanya terinstal secara default.&lt;/p&gt;

&lt;p&gt;Keyring adalah penyimpanan basis data milik profil pengguna Anda. Keyring dienkripsi dengan frasa sandi login Anda dan dikaitkan dengan sesi Anda. Setelah Anda keluar, keyring dan semua yang ada di dalamnya ditutup.&lt;/p&gt;

&lt;p&gt;Saat Anda log on berikutnya, keyring akan didekripsi dan setiap kredensial login akan tersedia lagi, sementara Anda hanya perlu mengingat kata sandi Desktop Ubuntu Anda. Ini berarti bahwa semua kata sandi, frasa sandi, yang digunakan oleh aplikasi atau koneksi jaringan apa pun selama sesi desktop dikelola dan diingat dalam keyring.&lt;/p&gt;

&lt;p&gt;Meskipun memiliki solusi terintegrasi di desktop Anda untuk mengelola rahasia Anda itu mudah, solusi tersebut tetap merupakan solusi lokal yang terbatas pada sistem desktop Ubuntu Anda.&lt;/p&gt;

&lt;p&gt;Gnome Keyring tidak tersedia di platform dan sistem lain dan bahkan tidak mudah untuk mentransfer atau bahkan menyinkronkan key-ring Anda ke sistem Desktop Ubuntu lain yang mungkin Anda gunakan.&lt;/p&gt;

&lt;div class="row"&gt;
    &lt;div class="col col-10 offset-1"&gt;
        &lt;figure class="figure"&gt;
            &lt;a target="_blank" href="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/img/nop-25-0019.jpg"&gt;
            &lt;img src="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/img/nop-25-0019.jpg" class="img-fluid border" alt="Gnome keyring" /&gt;
            &lt;/a&gt;
        &lt;/figure&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Produk Mozilla Firefox dan Thunderbird menggunakan penyimpanan kata sandi dan sertifikat mereka sendiri. Oleh karena itu kredensial login untuk situs web dan server email tidak dikelola oleh Gnome Keyring.&lt;/p&gt;

&lt;p&gt;Gnome Keyring juga mengelola akses ke kunci SSH dan sertifikat serta kunci TLS (x.509) Anda. Sayangnya agen Gnome Keyring ini tidak lagi kompatibel dengan versi OpenSSH yang lebih baru.&lt;/p&gt;

&lt;h2 id="a-menonaktifkan-ssh-gnome-keyring"&gt;A. Menonaktifkan SSH Gnome-Keyring&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Ia tidak menangani format kunci SSH yang lebih baru (ed22519, dll).&lt;/li&gt;
  &lt;li&gt;Ia memuat semua kunci di ~/.ssh secara otomatis saat memulai.&lt;/li&gt;
  &lt;li&gt;Anda tidak dapat menghapus kunci ini, bahkan dengan ssh-add -D, dan&lt;/li&gt;
  &lt;li&gt;Agen tidak mematuhi batasan penting tertentu pada kunci yang ditambahkan, seperti opsi -c, untuk memastikan saya harus mengonfirmasi penggunaan kunci yang dimuat.&lt;/li&gt;
  &lt;li&gt;Agen dimulai secara otomatis pada setiap login oleh file desktop gnome-keyring-ssh.desktop di folder konfigurasi sistem /etc/xdg/autostart/. Anda dapat menonaktifkannya dengan menyalin file desktop ke folder konfigurasi pengguna ~/.config/autostart dan kemudian menambahkan perintah konfigurasi untuk menonaktifkan autostart.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Karena konfigurasi khusus pengguna lebih diutamakan daripada pengaturan di seluruh sistem, hanya file desktop pribadi Anda yang akan digunakan.&lt;/p&gt;

&lt;p&gt;Salin berkas desktop:&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.config/autostart
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cp&lt;/span&gt; /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Tambahkan baris berikut ini untuk menonaktifkan &lt;code class="language-plaintext highlighter-rouge"&gt;autostart&lt;/code&gt;:&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'X-GNOME-Autostart-enabled=false'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.config/autostart/gnome-keyring-ssh.desktop
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Ini akan aktif pada login Anda berikutnya. Untuk sesi Anda saat ini, mulai ulang (alias "ganti") Gnome Keyring Daemon yang sudah berjalan, tanpa bagian agen.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;/usr/bin/gnome-keyring-daemon &lt;span class="nt"&gt;--replace&lt;/span&gt; &lt;span class="nt"&gt;--components&lt;/span&gt; keyring,pkcs11
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="b-keepassxc"&gt;B. KeePassXC&lt;/h2&gt;

&lt;p&gt;Hal terbaik yang dapat dilakukan komputer adalah menyimpan informasi.&lt;/p&gt;

&lt;p&gt;Anda tidak perlu membuang waktu mencoba mengingat dan mengetik kata sandi. KeePassXC dapat menyimpan kata sandi Anda dengan aman dan mengetiknya secara otomatis ke situs web dan aplikasi sehari-hari Anda.&lt;/p&gt;

&lt;p&gt;KeePassXC mungkin merupakan satu-satunya program perangkat lunak dan basis data pribadi yang paling penting.&lt;/p&gt;

&lt;p&gt;Pada dasarnya, program ini dirancang sebagai penyimpanan kata sandi yang aman, tetapi dapat digunakan untuk informasi apa pun yang perlu dirahasiakan. Seperti:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;nomor rekening bank,&lt;/li&gt;
  &lt;li&gt;informasi kartu kredit,&lt;/li&gt;
  &lt;li&gt;kode PIN berbagai perangkat dan kartu ATM Anda,&lt;/li&gt;
  &lt;li&gt;dan lain-lain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Setiap informasi yang perlu dirahasiakan harus disimpan dalam basis data KeePass.&lt;/p&gt;

&lt;p&gt;Selain berjalan di Desktop Ubuntu kita, format basis data KeePass dapat dibaca oleh aplikasi yang berjalan di platform berikut:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Seluruh sistem Linux dan Unix&lt;/li&gt;
  &lt;li&gt;Mac OSX&lt;/li&gt;
  &lt;li&gt;Windows&lt;/li&gt;
  &lt;li&gt;Android&lt;/li&gt;
  &lt;li&gt;Windows Phones&lt;/li&gt;
  &lt;li&gt;Windows Mobile&lt;/li&gt;
  &lt;li&gt;Blackberry&lt;/li&gt;
  &lt;li&gt;Mobile Phones (running Java Mobile Edition, e.g, Symbian)&lt;/li&gt;
  &lt;li&gt;iPhone and iPad&lt;/li&gt;
  &lt;li&gt;Chrome OS&lt;/li&gt;
  &lt;li&gt;Palm OS&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="c-proses-instalasi"&gt;C. Proses Instalasi&lt;/h2&gt;

&lt;p&gt;Untuk mendapatkan versi terbaru yang tersedia, PPA (Personal Package Archive) berikut dapat ditambahkan terlebih dahulu.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;add-apt-repository ppa:phoerious/keepassxc
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah itu, jalankan perintah berikut ini&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;keepassxc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Mungkin hanya ini yang dapat kami jelaskan tentang proses pembuatan Gnome Keyring di Desktop Ubuntu. Anda dapat membaca artikel lainnya, agar memperoleh pemahaman yang lebih jelas tentang Gnome Keyring.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2023/08/membuat-gnome-keyring-di-ubuntu-desktop.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-4655983732157252188</guid><pubDate>Fri, 11 Aug 2023 23:15:00 +0000</pubDate><atom:updated>2026-11-06T17:07:54.693+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>FreeBSD Cara Install XMRIG dan CPUMiner Untuk Mining Crypto</title><description>&lt;p&gt;Artikel ini akan menjelaskan cara menginstal dan mengonfigurasi XMRIG dan CPUMiner menggunakan sistem FreeBSD. XMRIG dan CPUMiner adalah aplikasi yang umum digunakan oleh para penambang untuk menambang koin mata uang kripto.&lt;/p&gt;

&lt;h2 id="1-tentang-xmrig-dan-cpuminer"&gt;1. Tentang XMRIG dan CPUMiner&lt;/h2&gt;

&lt;p&gt;Pada awalnya, aplikasi ini sering digunakan untuk menambang koin Monero, namun lama-kelamaan seiring makin banyaknya koin baru yang bermunculan, XMRIG tidak hanya digunakan untuk menambang koin Monero saja. Banyak koin lain yang berbasis algoritma CryptoNight yang dapat ditambang dengan XMRIG.&lt;/p&gt;

&lt;p&gt;XMRig merupakan penambang Monero (XMR) dengan performa tinggi. Penambangan dengan XMRIG dapat dilakukan dengan hanya menggunakan CPU saja atau dapat juga dilakukan dengan bantuan VGA Card seperti NVIDIA-GPU/AMD-GPU. Meskipun hasil yang diperoleh dengan menambang dengan CPU sangat kecil dibandingkan dengan menggunakan NVIDIA-GPU/AMD-GPU, namun masih banyak penambang yang menambang menggunakan CPU.&lt;/p&gt;

&lt;p&gt;XMRIG dapat dijalankan di hampir semua aplikasi seperti Windows, FreeBSD, DragonflyBSD, Linux, dan macOS. Secara umum, penambang lebih memilih menggunakan XMRIG dengan sistem Ubuntu Linux dan Microsoft Windows.&lt;/p&gt;

&lt;p&gt;XMRIG merupakan aplikasi sumber terbuka dengan kinerja yang sangat tinggi dan kemampuan membaca hash yang maksimal sehingga dapat digunakan untuk berbagai koin dengan platform penambang CPU/GPU terintegrasi RandomX, KawPow, CryptoNight, dan GhostRider serta benchmark RandomX. Tidak hanya itu, XMRig CPU Miner dapat digunakan untuk menambang varian CryptoNight dengan CPU. Miner memungkinkan Anda untuk menyiapkan failover backup pool, konfigurasi CPU otomatis yang cerdas, dan bersifat sumber terbuka. Biaya default adalah 5%, tetapi dapat disesuaikan menjadi 1%.&lt;/p&gt;


&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/images/Install_xmrif_xmr_on_freebsd.jpg" target="_blank"&gt;
    &lt;img alt="FreeBSD Cara Install XMRIG dan CPUMiner Untuk Mining Crypto" class="artikel-img lazyload" data-src="https://gitlab.com/unixbsdshell/unixbsdshell.gitlab.io/-/raw/main/images/Install_xmrif_xmr_on_freebsd.jpg" src='data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' title="FreeBSD Cara Install XMRIG dan CPUMiner Untuk Mining Crypto" /&gt;
    &lt;/a&gt;
    &lt;figcaption class="figure-caption text-center"&gt;
     Cara Install XMRIG dan CPUMiner Untuk Mining Crypto
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Sementara itu, CPUMiner merupakan program perangkat lunak yang digunakan untuk menghasilkan mata uang kripto menggunakan unit pemrosesan pusat (CPU). CPU dan perangkat lunak khusus diperlukan untuk menambang beberapa mata uang kripto, berkat kecepatan pemrosesannya.&lt;/p&gt;

&lt;p&gt;Ada berbagai program perangkat lunak yang dikembangkan untuk tujuan penambangan, dengan masing-masing menawarkan fitur yang berbeda kepada para penambang. Ada dua model penambangan utama: penambangan solo atau berpartisipasi dalam pool penambangan. Opsi terakhir direkomendasikan karena dapat membantu meraup hasil yang lebih baik dan berbagi upaya penambangan dengan pengguna lain.&lt;/p&gt;

&lt;p&gt;CPUminer merupakan program klien sederhana yang melakukan Pooled Mining atau penambangan solo. Program menerima data blok yang diusulkan dari server, yang mencoba menebak nilai nonce yang akan menghasilkan blok yang valid. Jika hash blok dengan sedikitnya 32 bit nol berturut-turut ditemukan, data blok yang berisi nilai nonce yang ditebak dikirim kembali ke server. Jika digunakan dalam mode Pooled Mining, blok ini disebut "shares" karena server seharusnya mengkredit akun pengguna terdaftar, sesuai dengan jumlah share yang disumbangkan pengguna, dan akhirnya mentransfer sejumlah koin ke alamat pengguna yang menambang di pool.&lt;/p&gt;

&lt;p&gt;CPU Miner sebagian besar telah digantikan oleh fork cgminer Con Kolivas (dengan dukungan GPU) dan fork BFGMiner Luke-Jr (dengan dukungan FPGA).&lt;/p&gt;

&lt;h2 id="2-instalasi-xmrig"&gt;2. Instalasi XMRIG&lt;/h2&gt;

&lt;p&gt;Pada sistem FreeBSD, proses instalasi XMRIG menggunakan CPU tidaklah terlalu rumit. Kesulitan bagi para penambang akan muncul ketika menambang XMRIG menggunakan VGA Card, karena selain harus menginstal program XMRIG, penambang juga harus menginstal driver VGA Card sesuai dengan merek VGA tersebut.&lt;/p&gt;

&lt;p&gt;Berikut ini adalah cara menginstal XMRIG pada sistem FreeBSD.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:~ # pkg update
root@ns1:~ # pkg upgrade
root@ns1:~ # pkg install git libuv openssl automake libtool autoconf
root@ns1:~ # pkg install cmake hwloc libmicrohttpd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Skrip di atas adalah untuk memperbarui sistem perangkat lunak FreeBSD dan menginstal repositori yang dibutuhkan oleh XMRIG agar dapat berjalan di FreeBSD. Untuk menginstal XMRIG, Anda harus mengunduh berkas induk XMRIG, Anda dapat mengunduhnya dari situs web resmi &lt;code class="language-plaintext highlighter-rouge"&gt;XMRIG atau Github&lt;/code&gt;. Dalam artikel ini, kami akan mengunduh berkas induk XMRIG dari Github, dan akan meletakkannya di folder &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc&lt;/code&gt;. Ikuti langkah-langkah di bawah ini untuk menginstal XMRIG.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:~ &lt;span class="c"&gt;# cd /usr/local/etc&lt;/span&gt;
root@ns1:/usr/local/etc &lt;span class="c"&gt;# git clone https://github.com/xmrig/xmrig.git&lt;/span&gt;
Cloning into &lt;span class="s1"&gt;'xmrig'&lt;/span&gt;...
remote: Enumerating objects: 27868, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
remote: Counting objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;202/202&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
remote: Compressing objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;119/119&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
remote: Total 27868 &lt;span class="o"&gt;(&lt;/span&gt;delta 99&lt;span class="o"&gt;)&lt;/span&gt;, reused 153 &lt;span class="o"&gt;(&lt;/span&gt;delta 82&lt;span class="o"&gt;)&lt;/span&gt;, pack-reused 27666
Receiving objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;27868/27868&lt;span class="o"&gt;)&lt;/span&gt;, 13.22 MiB | 9.00 MiB/s, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Resolving deltas: 100% &lt;span class="o"&gt;(&lt;/span&gt;20409/20409&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
root@ns1:/usr/local/etc &lt;span class="c"&gt;# cd xmrig&lt;/span&gt;
root@ns1:/usr/local/etc/xmrig &lt;span class="c"&gt;# mkdir build &amp;amp;&amp;amp; cd build&lt;/span&gt;
root@ns1:/usr/local/etc/xmrig/build &lt;span class="c"&gt;# cmake ..&lt;/span&gt;
root@ns1:/usr/local/etc/xmrig/build &lt;span class="c"&gt;# make -j4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Script &lt;code class="language-plaintext highlighter-rouge"&gt;make -j4&lt;/code&gt; berarti jumlah thread prosesor yang digunakan, karena pada instalasi ini saya menggunakan prosesor dengan 4 thread, jadi tulis &lt;code class="language-plaintext highlighter-rouge"&gt;-j4&lt;/code&gt;. Jika Anda menggunakan prosesor dengan 8 thread, scriptnya adalah &lt;code class="language-plaintext highlighter-rouge"&gt;make -j8&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Jika instalasi di atas gagal, gunakan metode lain.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:/usr/local/etc &lt;span class="c"&gt;# cd xmrig&lt;/span&gt;
root@ns1:/usr/local/etc/xmrig &lt;span class="c"&gt;# cd build&lt;/span&gt;
root@ns1:/usr/local/etc/xmrig/build &lt;span class="c"&gt;# cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..&lt;/span&gt;
root@ns1:/usr/local/etc/xmrig/build &lt;span class="c"&gt;# make -j4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah instalasi selesai, Anda diminta untuk membuat file json. File json adalah file yang berisi alamat koin, pengguna pool penambangan, dan lain-lain. Kami sarankan Anda membuat 3 file jason. Berikut ini adalah panduan untuk membuat 3 file jason dengan folder yang berbeda.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:~ &lt;span class="c"&gt;# touch /usr/local/etc/xmrig/build/config.json&lt;/span&gt;
root@ns1:~ &lt;span class="c"&gt;# touch /root/.xmrig.json&lt;/span&gt;
root@ns1:~ &lt;span class="c"&gt;# mkdir /root/.config&lt;/span&gt;
root@ns1:~ &lt;span class="c"&gt;# touch /root/.config/xmrig.json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada skrip di atas kita membuat 3 file json, yaitu &lt;code class="language-plaintext highlighter-rouge"&gt;config.json, .xmrig.json dan xmrig.json&lt;/code&gt;. 
Setelah Anda membuat file json, masukkan skrip di bawah ini pada file &lt;code class="language-plaintext highlighter-rouge"&gt;xmrig.json&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"autosave"&lt;/span&gt;: &lt;span class="nb"&gt;true&lt;/span&gt;,
    &lt;span class="s2"&gt;"donate-level"&lt;/span&gt;: 1,
    &lt;span class="s2"&gt;"cpu"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="s2"&gt;"enabled"&lt;/span&gt;: &lt;span class="nb"&gt;true&lt;/span&gt;,
        &lt;span class="s2"&gt;"huge-pages"&lt;/span&gt;: &lt;span class="nb"&gt;true&lt;/span&gt;,
        &lt;span class="s2"&gt;"hw-aes"&lt;/span&gt;: null,
        &lt;span class="s2"&gt;"priority"&lt;/span&gt;: null,
        &lt;span class="s2"&gt;"asm"&lt;/span&gt;: &lt;span class="nb"&gt;true&lt;/span&gt;,
        &lt;span class="s2"&gt;"max-threads-hint"&lt;/span&gt;: 100,
        &lt;span class="s2"&gt;"max-cpu-usage"&lt;/span&gt;: 100,
        &lt;span class="s2"&gt;"yield"&lt;/span&gt;: &lt;span class="nb"&gt;false&lt;/span&gt;,
        &lt;span class="s2"&gt;"init"&lt;/span&gt;: &lt;span class="nt"&gt;-1&lt;/span&gt;,
        &lt;span class="s2"&gt;"*"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="s2"&gt;"intensity"&lt;/span&gt;: 2,
            &lt;span class="s2"&gt;"threads"&lt;/span&gt;: 8,
            &lt;span class="s2"&gt;"affinity"&lt;/span&gt;: &lt;span class="nt"&gt;-1&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;,
    &lt;span class="s2"&gt;"opencl"&lt;/span&gt;: &lt;span class="nb"&gt;true&lt;/span&gt;,
    &lt;span class="s2"&gt;"cuda"&lt;/span&gt;: &lt;span class="nb"&gt;true&lt;/span&gt;,
    &lt;span class="s2"&gt;"pools"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;
        &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="s2"&gt;"coin"&lt;/span&gt;: &lt;span class="s2"&gt;"monero"&lt;/span&gt;,
            &lt;span class="s2"&gt;"algo"&lt;/span&gt;: &lt;span class="s2"&gt;"cn/gpu"&lt;/span&gt;,
            &lt;span class="s2"&gt;"url"&lt;/span&gt;: &lt;span class="s2"&gt;"168.235.86.33:3393"&lt;/span&gt;,
            &lt;span class="s2"&gt;"user"&lt;/span&gt;: &lt;span class="s2"&gt;"SK_QzApkbVGsAxyQykaWSnEF.umaroh1976"&lt;/span&gt;,
            &lt;span class="s2"&gt;"pass"&lt;/span&gt;: &lt;span class="s2"&gt;"x"&lt;/span&gt;,
            &lt;span class="s2"&gt;"tls"&lt;/span&gt;: &lt;span class="nb"&gt;false&lt;/span&gt;,
            &lt;span class="s2"&gt;"keepalive"&lt;/span&gt;: &lt;span class="nb"&gt;true&lt;/span&gt;,
            &lt;span class="s2"&gt;"nicehash"&lt;/span&gt;: &lt;span class="nb"&gt;false&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Script di atas hanya contoh, Anda dapat menyesuaikannya tergantung pada pool penambangan yang akan Anda gunakan. Pada script di atas saya menggunakan pool penambangan dari &lt;code class="language-plaintext highlighter-rouge"&gt;autofaucet.org&lt;/code&gt;. Jika Anda menggunakan pool penambangan lain, yang perlu Anda ganti adalah script yang berwarna merah.&lt;/p&gt;

&lt;p&gt;Sekarang Anda dapat melakukan penambangan. Berikut ini adalah cara menambang XMRIG, ikuti script di bawah ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:~ &lt;span class="c"&gt;# cd /usr/local/etc/xmrig/build&lt;/span&gt;
root@ns1:/usr/local/etc/xmrig/build &lt;span class="c"&gt;# ./xmrig&lt;/span&gt;
 &lt;span class="k"&gt;*&lt;/span&gt; ABOUT        XMRig/6.20.0 clang/14.0.5
 &lt;span class="k"&gt;*&lt;/span&gt; LIBS         libuv/1.46.0 OpenSSL/1.1.1u hwloc/1.11.13
 &lt;span class="k"&gt;*&lt;/span&gt; HUGE PAGES   supported
 &lt;span class="k"&gt;*&lt;/span&gt; 1GB PAGES    unavailable
 &lt;span class="k"&gt;*&lt;/span&gt; CPU          Intel&lt;span class="o"&gt;(&lt;/span&gt;R&lt;span class="o"&gt;)&lt;/span&gt; Core&lt;span class="o"&gt;(&lt;/span&gt;TM&lt;span class="o"&gt;)&lt;/span&gt;2 Duo CPU E8400 @ 3.00GHz &lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt; 64-bit &lt;span class="nt"&gt;-AES&lt;/span&gt;
                L2:6.0 MB L3:0.0 MB 2C/2T NUMA:1
 &lt;span class="k"&gt;*&lt;/span&gt; MEMORY       1.1/1.7 GB &lt;span class="o"&gt;(&lt;/span&gt;65%&lt;span class="o"&gt;)&lt;/span&gt;
                DIMM0: 1 GB DDR2 @ 667 MHz                       
                DIMM1: 1 GB DDR2 @ 667 MHz                       
 &lt;span class="k"&gt;*&lt;/span&gt; MOTHERBOARD  Acer - MMCP73VEM
 &lt;span class="k"&gt;*&lt;/span&gt; DONATE       1%
 &lt;span class="k"&gt;*&lt;/span&gt; ASSEMBLY     auto:none
 &lt;span class="k"&gt;*&lt;/span&gt; POOL &lt;span class="c"&gt;#1      168.235.86.33:3393 coin Monero&lt;/span&gt;
 &lt;span class="k"&gt;*&lt;/span&gt; COMMANDS     hashrate, pause, resume, results, connection
&lt;span class="o"&gt;[&lt;/span&gt;2023-08-03 13:31:24.966]  config   configuration saved to: &lt;span class="s2"&gt;"/usr/local/etc/xmrig/build/config.json"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Script &lt;code class="language-plaintext highlighter-rouge"&gt;./xmrig&lt;/code&gt; (merah) adalah untuk memulai penambangan.&lt;/p&gt;

&lt;h3 id="3-proses-instalasi-cpuminer"&gt;3. Proses Instalasi CPUMiner&lt;/h3&gt;

&lt;p&gt;Untuk menginstal CPUMiner di FreeBSD, kita harus mengunduh berkas induk CPUMiner. Dalam artikel ini kita akan mengunduh berkas induk CPUMiner dari Github. Ikuti langkah-langkah berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:~ &lt;span class="c"&gt;# cd /usr/local/etc&lt;/span&gt;
root@ns1:/usr/local/etc &lt;span class="c"&gt;# git clone https://github.com/pooler/cpuminer.git&lt;/span&gt;
Cloning into &lt;span class="s1"&gt;'cpuminer'&lt;/span&gt;...
remote: Enumerating objects: 1529, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
remote: Total 1529 &lt;span class="o"&gt;(&lt;/span&gt;delta 0&lt;span class="o"&gt;)&lt;/span&gt;, reused 0 &lt;span class="o"&gt;(&lt;/span&gt;delta 0&lt;span class="o"&gt;)&lt;/span&gt;, pack-reused 1529
Receiving objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;1529/1529&lt;span class="o"&gt;)&lt;/span&gt;, 628.14 KiB | 1.36 MiB/s, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Resolving deltas: 100% &lt;span class="o"&gt;(&lt;/span&gt;995/995&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada skrip di atas, berkas yang diunduh disimpan di folder &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc&lt;/code&gt;. Setelah proses pengunduhan selesai, langkah selanjutnya adalah menginstal CPUMiner. Ikuti skrip di bawah ini untuk menjalankan proses instalasi CPUMiner.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:~ &lt;span class="c"&gt;# cd /usr/local/etc&lt;/span&gt;
root@ns1:/usr/local/etc &lt;span class="c"&gt;# cd cpuminer&lt;/span&gt;
root@ns1:/usr/local/etc/cpuminer &lt;span class="c"&gt;# ./autogen.sh&lt;/span&gt;
root@ns1:/usr/local/etc/cpuminer &lt;span class="c"&gt;# ./configure&lt;/span&gt;
root@ns1:/usr/local/etc/cpuminer &lt;span class="c"&gt;# make&lt;/span&gt;
root@ns1:/usr/local/etc/cpuminer &lt;span class="c"&gt;# make install&lt;/span&gt;
Making &lt;span class="nb"&gt;install &lt;/span&gt;&lt;span class="k"&gt;in &lt;/span&gt;compat
Making &lt;span class="nb"&gt;install &lt;/span&gt;&lt;span class="k"&gt;in &lt;/span&gt;jansson
 ./install-sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'/usr/local/bin'&lt;/span&gt;
  /usr/bin/install &lt;span class="nt"&gt;-c&lt;/span&gt; minerd &lt;span class="s1"&gt;'/usr/local/bin'&lt;/span&gt;
 ./install-sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'/usr/local/share/man/man1'&lt;/span&gt;
 /usr/bin/install &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; 644 minerd.1 &lt;span class="s1"&gt;'/usr/local/share/man/man1'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Untuk memulai penambangan, Anda dapat menjalankan file skrip &lt;code class="language-plaintext highlighter-rouge"&gt;./minerd&lt;/code&gt;. Berikut ini adalah contoh cara memulai penambangan dengan CPUMiner dengan pool penambangan &lt;code class="language-plaintext highlighter-rouge"&gt;mining-dutch.nl&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:~ &lt;span class="c"&gt;# cd /usr/local/etc/cpuminer&lt;/span&gt;
root@ns7:/usr/local/etc/cpuminer &lt;span class="c"&gt;# ./minerd --url=stratum+tcp://singapore.mining-dutch.nl:8888 --userpass=umaroh1076.worker1:d=128000&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:14] Binding thread 1 to cpu 1
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:14] Binding thread 0 to cpu 0
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:14] Starting Stratum on stratum+tcp://singapore.mining-dutch.nl:8888
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:14] 2 miner threads started, using &lt;span class="s1"&gt;'scrypt'&lt;/span&gt; algorithm.
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:20] Stratum requested work restart
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:21] thread 1: 4104 hashes, 6.19 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:21] thread 0: 4104 hashes, 5.07 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:30] Stratum requested work restart
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:30] thread 1: 43248 hashes, 4.90 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:30] thread 0: 44592 hashes, 5.15 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:31] Stratum requested work restart
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:31] thread 1: 4560 hashes, 6.33 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:31] thread 0: 3816 hashes, 5.09 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:44] Stratum requested work restart
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:44] thread 1: 85968 hashes, 6.34 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:44] thread 0: 69912 hashes, 5.17 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:46] Stratum requested work restart
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:46] thread 1: 10044 hashes, 6.34 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:46] thread 0: 8256 hashes, 5.21 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:49] Stratum requested work restart
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:49] thread 0: 15984 hashes, 4.67 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:49] thread 1: 21708 hashes, 6.33 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:55] Stratum requested work restart
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:55] thread 0: 24804 hashes, 4.63 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:56:55] thread 1: 33924 hashes, 6.33 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:57:08] Stratum requested work restart
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:57:08] thread 0: 63096 hashes, 4.69 khash/s
&lt;span class="o"&gt;[&lt;/span&gt;2024-01-10 06:57:08] thread 1: 85104 hashes, 6.33 khash/s
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada script &lt;strong&gt;â€“url=http://myminingpool.com:9332 â€“userpass=my.worker:password&lt;/strong&gt;, Anda harus mengubahnya sesuai dengan nama mining pool yang Anda gunakan.&lt;/p&gt;

&lt;p&gt;Jika Anda fokus untuk menjadi penambang mata uang kripto, disarankan untuk menggunakan VGA Card untuk menambang. Karena dengan VGA Card jumlah koin yang diperoleh lebih cepat karena hash yang dihasilkan oleh VGA Card lebih tinggi dibandingkan dengan CPU Processor.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2023/08/freebsd-cara-install-xmrig-dan-cpuminer.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-8328488239355096870</guid><pubDate>Fri, 11 Aug 2023 23:15:00 +0000</pubDate><atom:updated>2026-11-03T05:58:56.570+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>Tutorial FreeBSD - Menyiapkan Apache mod OpenSSL untuk HTTPS</title><description>&lt;p&gt;Server web Apache sudah ada sejak bertahun-tahun lalu, dan kini penggunanya terus bertambah. mod_ssl memberikan keamanan yang lebih baik untuk server web Apache dan dapat diinstal di hampir semua versi Apache dan semua sistem operasi seperti FreeBSD, Linux, MacOS, dan Windows.&lt;/p&gt;

&lt;p&gt;Secure Sockets Layer Protocol atau yang sering disebut SSL merupakan protokol keamanan yang dapat diletakkan di antara protokol lapisan jaringan TCP/IP dan protokol lapisan aplikasi HTTP. Mod SSL pada Apache menyediakan komunikasi yang aman antara klien dan server, Mod ini akan melakukan autentikasi dan menggunakan tanda tangan digital untuk integritas dan enkripsi untuk privasi. Saat ini ada dua versi SSL yang masih digunakan, yaitu versi 2 dan versi 3.&lt;/p&gt;

&lt;p&gt;SSL/TLS menggunakan Public Key Cryptography (PKC), yang dikenal sebagai Asymmetric PKC Cryptography. Kriptografi kunci publik digunakan dalam situasi di mana klien dan server tidak berbagi rahasia yang sama, misalnya antara browser dan server web, tetapi keduanya ingin membangun sistem keamanan dengan saluran tepercaya untuk komunikasi mereka.&lt;/p&gt;

&lt;p&gt;Kriptografi Kunci Publik atau PKC mendefinisikan sebuah algoritma yang menggunakan dua kunci, yang masing-masing kunci dapat digunakan untuk mengenkripsi sebuah pesan. Jika satu kunci digunakan untuk mengenkripsi sebuah pesan, maka kunci lainnya harus digunakan untuk mendekripsinya. Proses ini dilakukan untuk menerima pesan yang aman dengan hanya menerbitkan satu kunci (kunci publik) dan merahasiakan kunci lainnya (kunci privat).&lt;/p&gt;

&lt;p&gt;Kunci publik dapat dienkripsi oleh siapa saja, tetapi hanya pemilik kunci privat yang dapat membacanya. Misalnya, Mary mengirimkan pesan privat kepada pemilik pasangan kunci (misalnya server web Anda), maka pesan dari Mary akan dienkripsi menggunakan kunci publik yang diterbitkan oleh server Anda. Hanya Anda yang dapat mendekripsinya menggunakan kunci privat yang sesuai.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://pbs.twimg.com/media/GEvRQ5Xa0AA2OJV?format=jpg&amp;amp;name=large" target="_blank"&gt;
    &lt;img alt="Apache mod_SSL" class="artikel-img" src="https://pbs.twimg.com/media/GEvRQ5Xa0AA2OJV?format=jpg&amp;amp;name=large" title="Apache mod_SSL" /&gt;
    &lt;/a&gt;
    &lt;figcaption class="teks-gamabr"&gt;
     Symmetric Cryptography
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Panduan dalam artikel ini akan membantu Anda mengaktifkan mod SSL untuk situs web yang dilayani di server web Apache. Isi artikel ini hanya berfokus pada pembuatan SSL di Apache dengan aplikasi OpenSSL.&lt;/p&gt;

&lt;h2 id="1-cara-install-openssl"&gt;1. Cara Install OpenSSL&lt;/h2&gt;

&lt;p&gt;OpenSSL adalah utilitas untuk protokol Transport Layer Security (TLS) dan Secure Sockets Layer (SSL). OpenSSL adalah aplikasi gratis dan merupakan pustaka kriptografi yang paling banyak digunakan. Tujuan utama pembuatan aplikasi adalah untuk mengamankan koneksi di server dan dalam perangkat lunak Anda.&lt;/p&gt;

&lt;p&gt;Proses instalasi OpenSSL di FreeBSD cukup mudah, tidak ada pengaturan Start up rc.d, tetapi pengaturan dan implementasinya agak rumit dan terkadang membingungkan. Silakan gunakan langkah-langkah dalam panduan artikel ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns3:~ &lt;span class="c"&gt;# pkg install perl5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah Anda menginstal Perl, Anda dapat langsung menginstal OpenSSL. Kami sarankan untuk menggunakan port sistem FreeBSD, agar proses instalasi lebih sempurna.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns3:~ &lt;span class="c"&gt;# cd /usr/ports/security/openssl&lt;/span&gt;
root@ns3:/usr/ports/security/openssl &lt;span class="c"&gt;# make config&lt;/span&gt;
root@ns3:/usr/ports/security/openssl &lt;span class="c"&gt;# make install clean&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Di FreeBSD terdapat banyak aplikasi yang mirip dengan OpenSSL, seperti ca_root_nss, LibreSSL, dan lain-lain. Agar FreeBSD secara default menggunakan keamanan OpenSSL untuk mengenkripsi dan mendekripsi, di /etc/make.conf Anda mengetik perintah berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;DEFAULT_VERSIONS+&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;ssl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;openssl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="2-buat-file-servercrt-dan-serverkey"&gt;2. Buat file server.crt dan server.key&lt;/h2&gt;

&lt;p&gt;Langkah pertama yang harus Anda lakukan agar Apache dapat terhubung ke OpenSSL adalah membuat file server.key dan server.crt. Untuk melakukannya, pertama-tama kita membuat folder SSL.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns3:~ &lt;span class="c"&gt;# cd /usr/local/etc/apache24&lt;/span&gt;
root@ns3:/usr/local/etc/apache24 &lt;span class="c"&gt;# mkdir -p ssl&lt;/span&gt;
root@ns3:/usr/local/etc/apache24 &lt;span class="c"&gt;# cd ssl&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Buat &lt;code class="language-plaintext highlighter-rouge"&gt;server.key&lt;/code&gt; menggunakan openssl.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns3:/usr/local/etc/apache24/ssl &lt;span class="c"&gt;# openssl genrsa -des3 -out server.key 1024&lt;/span&gt;
Generating RSA private key, 1024 bit long modulus &lt;span class="o"&gt;(&lt;/span&gt;2 primes&lt;span class="o"&gt;)&lt;/span&gt;
..+++++
.............................................+++++
e is 65537 &lt;span class="o"&gt;(&lt;/span&gt;0x010001&lt;span class="o"&gt;)&lt;/span&gt;
Enter pass phrase &lt;span class="k"&gt;for &lt;/span&gt;server.key:
Verifying - Enter pass phrase &lt;span class="k"&gt;for &lt;/span&gt;server.key:
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perintah di atas akan membuat file &lt;code class="language-plaintext highlighter-rouge"&gt;server.key&lt;/code&gt; dan akan meminta kata sandi. Pastikan untuk mengingat kata sandi ini. Anda akan memerlukannya saat memulai Apache Anda berikutnya.&lt;/p&gt;

&lt;p&gt;Selanjutnya, buat file permintaan sertifikat, yaitu &lt;code class="language-plaintext highlighter-rouge"&gt;server.csr&lt;/code&gt;, proses pembuatan file ini akan menggunakan file &lt;code class="language-plaintext highlighter-rouge"&gt;server.key&lt;/code&gt; di atas.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns3:/usr/local/etc/apache24/ssl &lt;span class="c"&gt;# openssl req -new -key server.key -out server.csr&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Langkah terakhir adalah membuat sertifikat ssl yang ditandatangani sendiri &lt;code class="language-plaintext highlighter-rouge"&gt;(server.crt)&lt;/code&gt; menggunakan file &lt;code class="language-plaintext highlighter-rouge"&gt;server.key&lt;/code&gt; dan &lt;code class="language-plaintext highlighter-rouge"&gt;server.csr&lt;/code&gt; di atas.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns3:/usr/local/etc/apache24/ssl &lt;span class="c"&gt;# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id="3-mengktifkan-mod-ssl"&gt;3. Mengktifkan mod SSL&lt;/h2&gt;

&lt;p&gt;Petunjuk di bawah ini akan memandu Anda untuk mengaktifkan mode SSL di Apache. Tujuannya adalah agar OpenSSL dan Apache dapat berkomunikasi satu sama lain untuk mengamankan server web Anda.&lt;/p&gt;

&lt;p&gt;Di hampir semua sistem operasi, file konfigurasi Apache disebut &lt;code class="language-plaintext highlighter-rouge"&gt;httpd.conf&lt;/code&gt;, satu-satunya perbedaan adalah lokasi file tersebut. Di FreeBSD, file ini berada di direktori &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc/apache24&lt;/code&gt;, buka file tersebut dan aktifkan skrip SSL di dalam file tersebut, seperti pada contoh di bawah ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;LoadModule ssl_module libexec/apache24/mod_ssl.so
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
Include etc/apache24/extra/httpd-ssl.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada skrip di atas, kita mengaktifkan file &lt;code class="language-plaintext highlighter-rouge"&gt;httpd-ssl.conf&lt;/code&gt;. Buka file tersebut dan hapus semua isi skrip, lalu masukkan skrip di bawah ini ke dalam file &lt;code class="language-plaintext highlighter-rouge"&gt;/usr/local/etc/apache24/extra/httpd-ssl.conf&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;Listen 443

SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES

SSLHonorCipherOrder on 

SSLProtocol all &lt;span class="nt"&gt;-SSLv3&lt;/span&gt;
SSLProxyProtocol all &lt;span class="nt"&gt;-SSLv3&lt;/span&gt;

SSLPassPhraseDialog  &lt;span class="nb"&gt;builtin
&lt;/span&gt;SSLSessionCache        &lt;span class="s2"&gt;"shmcb:/var/run/ssl_scache(512000)"&lt;/span&gt;
SSLSessionCacheTimeout  300

&amp;lt;VirtualHost _default_:443&amp;gt;
DocumentRoot &lt;span class="s2"&gt;"/usr/local/www/apache24/data"&lt;/span&gt;
ServerName www.datainchi.com:443
ServerAdmin datainchi@gmail.com
ErrorLog &lt;span class="s2"&gt;"/var/log/httpd-error.log"&lt;/span&gt;
TransferLog &lt;span class="s2"&gt;"/var/log/httpd-access.log"&lt;/span&gt;

SSLEngine on

SSLCertificateFile &lt;span class="s2"&gt;"/usr/local/etc/apache24/ssl/server.crt"&lt;/span&gt;
SSLCertificateKeyFile &lt;span class="s2"&gt;"/usr/local/etc/apache24/ssl/server.key"&lt;/span&gt;

&amp;lt;FilesMatch &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\.&lt;/span&gt;&lt;span class="s2"&gt;(cgi|shtml|phtml|php)$"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    SSLOptions +StdEnvVars
&amp;lt;/FilesMatch&amp;gt;
&amp;lt;Directory &lt;span class="s2"&gt;"/usr/local/www/apache24/cgi-bin"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    SSLOptions +StdEnvVars
&amp;lt;/Directory&amp;gt;

BrowserMatch &lt;span class="s2"&gt;"MSIE [2-5]"&lt;/span&gt; nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
CustomLog &lt;span class="s2"&gt;"/var/log/httpd-ssl_request.log"&lt;/span&gt; &lt;span class="s2"&gt;"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;%r&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; %b"&lt;/span&gt;

&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perhatikan skrip berwarna biru, skrip tersebut adalah file OpenSSL yang telah kita buat sebelumnya. Untuk menguji semua konfigurasi di atas, mulai ulang server apache.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns3:~ &lt;span class="c"&gt;# service apache24 restart&lt;/span&gt;
Performing sanity check on apache24 configuration:
Syntax OK
Stopping apache24.
Waiting &lt;span class="k"&gt;for &lt;/span&gt;PIDS: 36862.
Performing sanity check on apache24 configuration:
Syntax OK
Starting apache24.
Apache/2.4.58 mod_ssl &lt;span class="o"&gt;(&lt;/span&gt;Pass Phrase Dialog&lt;span class="o"&gt;)&lt;/span&gt;
Some of your private key files are encrypted &lt;span class="k"&gt;for &lt;/span&gt;security reasons.
In order to &lt;span class="nb"&gt;read &lt;/span&gt;them you have to provide the pass phrases.

Private key www.datainchi.com:443:0 &lt;span class="o"&gt;(&lt;/span&gt;/usr/local/etc/apache24/ssl/server.key&lt;span class="o"&gt;)&lt;/span&gt;
Enter pass phrase:

OK: Pass Phrase Dialog successful.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Anda akan diminta memasukkan password, ketik password dari file OpenSSL yang Anda buat di atas.&lt;/p&gt;

&lt;p&gt;Langkah terakhir selanjutnya adalah membuka web browser &lt;strong&gt;Google Chrome&lt;/strong&gt; dan ketik perintah &lt;code class="language-plaintext highlighter-rouge"&gt;https://192.168.5.2/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Tutorial ini menunjukkan instalasi dasar dan penggunaan mod_ssl pada server apache dengan OpenSSL. Meskipun perintahnya sangat sederhana, kemampuannya dalam melindungi server web sangat andal dan telah terbukti, karena banyak orang menggunakan OpenSSL sebagai sistem keamanan SSL pada server Apache.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2023/08/tutorial-freebsd-menyiapkan-apache-mod.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-7810626100449639861</guid><pubDate>Fri, 17 Feb 2023 07:00:00 +0000</pubDate><atom:updated>2026-11-06T16:54:04.983+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>Cara Belajar Membuat Blog dengan Go Hugo Bagian 2</title><description>&lt;p&gt;Pada bagian pertama, kita telah mempelajari cara membuat blog sederhana; dalam pembahasan kali ini, kita akan belajar membuat tema dasar untuk mempercantik tampilan blog tersebut. Ada banyak tema Hugo yang bisa kita gunakan, namun tema-tema siap pakai sering kali cukup kompleks dengan beragam fitur yang memerlukan waktu untuk dikonfigurasi dengan benar. Sebaiknya kita memahami cara kerja sebuah tema sebelum mulai membedah kode buatan orang lain yang ada di dalam tema tersebut.&lt;/p&gt;

&lt;p&gt;Dalam artikel ini, kita akan membuat tema sendiri. Meskipun tema yang kita buat sangat sederhana, hal terpenting adalah kita memahami struktur kode di dalamnya; barulah setelah itu kita bisa membandingkannya dengan tema-tema buatan orang lain yang banyak tersedia di internet.&lt;/p&gt;

&lt;h2 id="1-membuat-tema-hugo"&gt;1. Membuat Tema Hugo&lt;/h2&gt;

&lt;p&gt;Kita dapat membuat tema dengan cara membuat direktori baru di dalam folder &lt;code class="language-plaintext highlighter-rouge"&gt;"themes"&lt;/code&gt; situs Anda, namun Hugo memiliki generator tema bawaan yang membuat semua komponen yang diperlukan untuk tema tersebut. Jalankan perintah berikut dari direktori akar situs Hugo Anda untuk membuat tema baru bernama &lt;code class="language-plaintext highlighter-rouge"&gt;"basic"&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-console highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;root@ns1:~ #&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /var/blog/blogspot
&lt;span class="gp"&gt;root@ns1:/var/blog/blogspot #&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;hugo new theme basic
&lt;span class="go"&gt;Creating theme at /var/blog/blogspot/themes/basic
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah tema &lt;code class="language-plaintext highlighter-rouge"&gt;"basic"&lt;/code&gt; berhasil dibuat, struktur tema akan terbentuk di dalam folder &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes/basic&lt;/code&gt;. Berikut adalah struktur tema yang kita buat menggunakan perintah di atas.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://gitea.com/UnixBSDShell/OpenBSD-Web-APP/raw/branch/main/img/oct-25-90.jpg" target="_blank"&gt;
    &lt;img alt="Dashboar Hugo Bag 2" class="artikel-img" src="https://gitea.com/UnixBSDShell/OpenBSD-Web-APP/raw/branch/main/img/oct-25-90.jpg" title="Dashboar Hugo Bag 2" /&gt;
    &lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Langkah berikutnya adalah memindahkan beberapa berkas dari folder &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/layouts&lt;/code&gt; ke folder &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;
&lt;code&gt;root@ns1:/var/blog/blogspot # mkdir -p /var/blog/blogspot/themes/basic/layouts/_default
root@ns1:/var/blog/blogspot # mv /var/blog/blogspot/layouts/index.html /var/blog/blogspot/themes/basic/layouts/index.html
root@ns1:/var/blog/blogspot # mv /var/blog/blogspot/layouts/_default/single.html /var/blog/blogspot/themes/basic/layouts/_default/single.html
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah itu, kita mengedit file &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/config.toml&lt;/code&gt; dan menambahkan perintah &lt;code class="language-plaintext highlighter-rouge"&gt;theme = "basic"&lt;/code&gt; di bagian akhir skrip. Berikut adalah contoh lengkap file &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/hugo.toml&lt;/code&gt; setelah diedit.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;baseURL = 'https://datainchi.com/'
languageCode = 'en-us'
title = 'Exploring the Operating Sistem of Linux'
theme = "basic"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Jalankan server Gohugo kami dengan mengetikkan perintah berikut.&lt;/p&gt;

&lt;div class="language-sh highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:/var/blog/blogspot &lt;span class="c"&gt;# hugo server --bind=192.168.17.7 --baseURL=http://192.168.17.7 --port=8999&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Buka Google Chrome dan ketik &lt;code class="language-plaintext highlighter-rouge"&gt;"http://192.168.17.7:8999/"&lt;/code&gt;, lalu tampilan blog dari server GoHugo kita akan muncul.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://gitea.com/UnixBSDShell/OpenBSD-Web-APP/raw/branch/main/img/oct-25-91.jpg" target="_blank"&gt;
    &lt;img alt="Dashboar Hugo Bagian 2" class="artikel-img" src="https://gitea.com/UnixBSDShell/OpenBSD-Web-APP/raw/branch/main/img/oct-25-91.jpg" title="Dashboar Hugo Bagian 2" /&gt;
    &lt;/a&gt;
&lt;/figure&gt;

&lt;h2 id="2-menggunakan-blok-konten-dan-partial"&gt;2. Menggunakan Blok Konten dan Partial&lt;/h2&gt;

&lt;p&gt;Baik tata letak halaman beranda maupun tata letak halaman tunggal sama-sama memuat kerangka skrip HTML. Kerangka tersebut akan menjadi lebih kompleks begitu kita menambahkan &lt;em&gt;header&lt;/em&gt;, &lt;em&gt;footer&lt;/em&gt;, dan navigasi. Alih-alih menduplikasi kode tersebut di berbagai tempat, Hugo menyediakan satu lokasi khusus untuk menempatkan kerangka tersebut sehingga semua tata letak lainnya dapat dibangun berdasarkan kode itu. Saat kita membuat sebuah tema, tema tersebut dibuat untuk memperindah tampilan blog kita.&lt;/p&gt;

&lt;p&gt;Bukalah berkas &lt;code class="language-plaintext highlighter-rouge"&gt;"/var/blog/blogspot/themes/basic/layouts/_default/baseof.html"&lt;/code&gt; dan perhatikan kode skrip di dalamnya. Sesuai dengan namanya, berkas ini akan menjadi "basis" bagi setiap tata letak lain yang akan kita buat. Berikut adalah isi dari berkas &lt;code class="language-plaintext highlighter-rouge"&gt;"/var/blog/blogspot/themes/basic/layouts/_default/baseof.html"&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-console highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;root@ns1:/var/blog/blogspot #&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;touch&lt;/span&gt; /var/blog/blogspot/themes/basic/layouts/_default/baseof.html
&lt;span class="gp"&gt;root@ns1:/var/blog/blogspot #&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ee /var/blog/blogspot/themes/basic/layouts/_default/baseof.html
&lt;span class="gp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;    {{- partial "head.html" . -}}
&lt;/span&gt;&lt;span class="gp"&gt;    &amp;lt;body&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;        {{- partial "header.html" . -}}
&lt;/span&gt;&lt;span class="gp"&gt;        &amp;lt;div id="content"&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;        {{- block "main" . }}{{- end }}
&lt;/span&gt;&lt;span class="gp"&gt;        &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;        {{- partial "footer.html" . -}}
&lt;/span&gt;&lt;span class="gp"&gt;    &amp;lt;/body&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Bagian pertama yang tercantum dalam file &lt;code class="language-plaintext highlighter-rouge"&gt;baseof.html&lt;/code&gt; adalah file &lt;code class="language-plaintext highlighter-rouge"&gt;head.html&lt;/code&gt;, yang terletak di folder &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes/basic/layouts/partials&lt;/code&gt;. File ini akan memuat kode yang biasanya muncul di bagian &lt;em&gt;head&lt;/em&gt; sebuah situs web atau blog. Masukkan skrip di bawah ini ke dalam file &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes/basic/layouts/partials/head.html&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;head&amp;gt;
&amp;lt;meta charset="utf-8"&amp;gt;
&amp;lt;meta name="viewport" content="width=device-width, initial-scale=1"&amp;gt;
&amp;lt;title&amp;gt;{{ .Site.Title }}&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Referensi parsial berikutnya adalah file &lt;code class="language-plaintext highlighter-rouge"&gt;header.html&lt;/code&gt;; file ini akan menyimpan bagian header halaman Anda. Di sinilah Anda akan menempatkan banner dan navigasi. Tambahkan kode berikut ke dalam file &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes/basic/layouts/partials/header.html&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;header&amp;gt;
&amp;lt;h1&amp;gt;{{ .Site.Title }}&amp;lt;/h1&amp;gt;
&amp;lt;/header&amp;gt;
&amp;lt;nav&amp;gt;
&amp;lt;a href="/"&amp;gt;Home&amp;lt;/a&amp;gt;
&amp;lt;a href="/about"&amp;gt;About Us&amp;lt;/a&amp;gt;
&amp;lt;a href="/resume"&amp;gt;Privacy Policy&amp;lt;/a&amp;gt;
&amp;lt;a href="/contact"&amp;gt;Disclaimer&amp;lt;/a&amp;gt;
&amp;lt;/nav&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Terakhir, kita akan membuat folder untuk tata letak Footer; ketik skrip di bawah ini pada file &lt;code class="language-plaintext highlighter-rouge"&gt;"/var/blog/blogspot/themes/basic/layouts/partials/footer.html"&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;footer&amp;gt;
&amp;lt;small&amp;gt;Copyright {{now.Format "2006"}} Exploring the Operating Sistem of Linux.&amp;lt;/small&amp;gt;
&amp;lt;/footer&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Langkah berikutnya adalah menentukan blok-blok pada tata letak halaman beranda blog yang akan kita buat. Buka file &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes/basic/layouts/index.html&lt;/code&gt;, hapus isi skripnya, lalu ganti dengan skrip di bawah ini.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;{{ define "main" }}
{{ .Content }}
{{ end }}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Saat server GoHugo melakukan proses &lt;em&gt;build&lt;/em&gt; pada blog yang kita buat, server tersebut akan menghasilkan halaman beranda dengan menggabungkan berkas konten &lt;strong&gt;(/var/blog/blogspot/content/_index.md)&lt;/strong&gt; dan berkas tata letak (&lt;em&gt;layout&lt;/em&gt;), yang kemudian memanfaatkan berkas &lt;code class="language-plaintext highlighter-rouge"&gt;baseof&lt;/code&gt;. Sebagian atau seluruh konten digabungkan untuk membentuk satu halaman utuh.&lt;/p&gt;

&lt;p&gt;Berkas tata letak &lt;code class="language-plaintext highlighter-rouge"&gt;index.html&lt;/code&gt; hanya memengaruhi halaman beranda blog yang kita buat; oleh karena itu, ubahlah kode skrip pada berkas &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes/basic/layouts/_default/single.html&lt;/code&gt; agar tata letak halaman tunggal (&lt;em&gt;single page&lt;/em&gt;) berfungsi dengan cara yang sama. Berikut adalah isi skrip dari berkas &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes/basic/layouts/_default/single.html&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;{{ define "main" }}
&amp;lt;h2&amp;gt;{{ .Title }}&amp;lt;/h2&amp;gt;
{{ .Content }}
{{ end }}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah itu, jalankan server GoHugo dengan mengetikkan skrip di bawah ini.&lt;/p&gt;

&lt;div class="language-sh highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:/var/blog/blogspot &lt;span class="c"&gt;# hugo server --bind=192.168.17.7 --baseURL=http://192.168.17.7 --port=8999&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Kita dapat melihat hasilnya dengan membuka peramban web Google Chrome dan mengetikkan &lt;code class="language-plaintext highlighter-rouge"&gt;"http://192.168.17.7:8999/"&lt;/code&gt;, tampilannya akan seperti yang terlihat pada gambar di bawah ini.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/feb-23/2026-09-15_08-41-31%20copy.jpg" target="_blank"&gt;
    &lt;img alt="Dashboard Hugo Bagian 2" class="artikel-img" src="https://raw.githubusercontent.com/unixbsdshell/unixbsdshell.github.io/refs/heads/main/img/feb-23/2026-09-15_08-41-31%20copy.jpg" title="Dashboard Hugo Bagian 2" /&gt;
    &lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Tampilan di atas masih terlihat kacau dan tidak rapi. Kita akan merapikan tampilan gambar tersebut menggunakan CSS.&lt;/p&gt;

&lt;h2 id="3-mengatur-tema-dengan-css"&gt;3. Mengatur Tema dengan CSS&lt;/h2&gt;

&lt;p&gt;Selain file tata letak (&lt;em&gt;layout&lt;/em&gt;), file tema juga memuat gambar, skrip, dan &lt;em&gt;style sheet&lt;/em&gt; yang mengatur aspek visual situs blog, seperti warna, jenis huruf (&lt;em&gt;font&lt;/em&gt;), dan penempatan konten. Aset-aset ini ditempatkan di dalam direktori &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/static&lt;/code&gt;. Di dalam folder tersebut, terdapat folder CSS dan folder JS.&lt;/p&gt;

&lt;p&gt;Sebelum mulai menggunakan CSS, mari kita tambahkan struktur pada tata letak agar kita memiliki kendali lebih besar atas lebar halaman. Hal ini akan bermanfaat saat situs ditampilkan di perangkat dengan layar lebih besar. Ubah file &lt;code class="language-plaintext highlighter-rouge"&gt;baseof&lt;/code&gt; dengan membungkus seluruh konten di dalam elemen &lt;code class="language-plaintext highlighter-rouge"&gt;div&lt;/code&gt; yang memiliki kelas &lt;code class="language-plaintext highlighter-rouge"&gt;container&lt;/code&gt;, serta ubah tag &lt;code class="language-plaintext highlighter-rouge"&gt;div&lt;/code&gt; yang ada di sekeliling blok utama menjadi tag &lt;code class="language-plaintext highlighter-rouge"&gt;main&lt;/code&gt; HTML. Penggunaan tag &lt;code class="language-plaintext highlighter-rouge"&gt;main&lt;/code&gt; akan memudahkan teknologi bantu (&lt;em&gt;assistive technologies&lt;/em&gt;) dalam mengenali konten utama situs blog, sedangkan &lt;code class="language-plaintext highlighter-rouge"&gt;div&lt;/code&gt; dengan kelas &lt;code class="language-plaintext highlighter-rouge"&gt;container&lt;/code&gt; memungkinkan kita mengatur lebar situs pada layar monitor yang lebih besar saat kita menerapkan CSS nantinya.&lt;/p&gt;

&lt;p&gt;Buka dan edit file &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes/basic/layouts/_default/baseof.html&lt;/code&gt; agar kodenya menjadi seperti di bawah ini.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
{{- partial "head.html" . -}}
&amp;lt;body&amp;gt;
&amp;lt;div class="container"&amp;gt;
{{- partial "header.html" . -}}
&amp;lt;main&amp;gt;
{{- block "main" . }}{{- end }}
&amp;lt;/main&amp;gt;
{{- partial "footer.html" . -}}
&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah itu, kita lanjutkan dengan membuat file stylesheet CSS. Di dalam folder &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes/basic/static/css&lt;/code&gt;, kita membuat file bernama "style.css" dan mengetikkan skrip di bawah ini ke dalam file &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes/basic/static/css/style.css&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:/var/blog/blogspot # mkdir -p /var/blog/blogspot/themes/basic/static/css
root@ns1:/var/blog/blogspot # ee /var/blog/blogspot/themes/basic/static/css/style.css

.container {
margin: 0 auto;
width: 80%;
}

nav, footer {
background-color: #333;
color: #fff;
text-align: center;
}

nav {
display: flex;
flex-direction: column;
}
nav &amp;gt; a {
flex: 1;
text-align: center;
text-decoration: none;
color: #fff;
}
@media only screen and (min-width: 768px) {
nav { flex-direction: row; }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Sebagai langkah terakhir, kita mengedit file &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/themes/basic/layouts/partials/head.html&lt;/code&gt; dan mengetikkan skrip berikut di dalam file tersebut.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;head&amp;gt;
&amp;lt;meta charset="utf-8"&amp;gt;
&amp;lt;meta name="viewport" content="width=device-width, initial-scale=1"&amp;gt;
&amp;lt;title&amp;gt;{{ .Site.Title }}&amp;lt;/title&amp;gt;
&amp;lt;link rel="stylesheet" href="{{ "css/style.css" | relURL }}"&amp;gt;
&amp;lt;/head&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Kemudian, kita jalankan server Gohugo.&lt;/p&gt;

&lt;div class="language-sh highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:/var/blog/blogspot &lt;span class="c"&gt;# hugo server --bind=192.168.17.7 --baseURL=http://192.168.17.7 --port=8999&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Untuk melihat hasilnya, kita buka peramban web Yandex atau Google Chrome dan ketik &lt;code class="language-plaintext highlighter-rouge"&gt;"http://192.168.5.2:8999/"&lt;/code&gt;, lalu tampilannya akan muncul seperti pada gambar di bawah ini.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://gitea.com/UnixBSDShell/OpenBSD-Web-APP/raw/branch/main/img/oct-25-93.jpg" target="_blank"&gt;
    &lt;img alt="Dashboards Hugo Bagian 2" class="artikel-img" src="https://gitea.com/UnixBSDShell/OpenBSD-Web-APP/raw/branch/main/img/oct-25-93.jpg" title="Dashboards Hugo Bagian 2" /&gt;
    &lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Kini tampilan blog kita menjadi sedikit lebih rapi dan terlihat lebih manis serta enak dipandang. Kita akhiri pembahasan bagian kedua ini sampai di sini. Semoga pengetahuan Anda bertambah melalui artikel bagian kedua ini. Kita akan melanjutkan pembahasan ke bagian ketiga, dengan skrip yang lebih rumit dan tentunya lebih menantang.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2023/02/cara-belajar-membuat-blog-dengan-go_01739115071.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-4176761937248301634</guid><pubDate>Thu, 16 Feb 2023 01:45:00 +0000</pubDate><atom:updated>2026-11-06T16:52:25.734+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">freebsd</category><title>Cara Belajar Membuat Blog dengan Go Hugo Bagian 1</title><description>&lt;p&gt;Menulis konten teknis adalah sebuah keterampilan. Seperti halnya keterampilan lain, satu-satunya cara untuk meningkatkannya adalah dengan berlatih. Cara mudah untuk menulis dan membagikan konten teknis adalah dengan membuat blog dan berbagi pengalaman teknologi Anda dengan orang lain di internet.&lt;/p&gt;

&lt;p&gt;Banyak orang beranggapan bahwa membuat situs web atau blog sendiri memerlukan keahlian teknis (seperti pengetahuan tentang server basis data, server web, atau sistem manajemen konten seperti WordPress atau Joomla) serta investasi finansial untuk membeli domain atau membayar layanan hosting VPS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Idealnya, kita sebaiknya memiliki tiga tujuan saat membuat dan mengelola blog sendiri:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;No/Low-Cost : Gratis atau berbiaya rendah&lt;/li&gt;
  &lt;li&gt;Productive : Mudah ditulis, disunting, dan dipelihara&lt;/li&gt;
  &lt;li&gt;Cloud Native : Memanfaatkan layanan cloud publik untuk hosting, yang memungkinkan skalabilitas tanpa batas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Untuk mewujudkan ketiga hal di atas, kita dapat menggunakan teknologi berikut guna mencapai tujuan tersebut:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Markdown&lt;/strong&gt; - Bahasa markup yang dapat dibaca secara alami, mudah ditulis, dan dapat dikonversi dengan mudah ke HTML.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Hugo&lt;/strong&gt; - Generator situs statis yang ditulis dalam bahasa Go yang memungkinkan konten dalam format Markdown dirender menjadi halaman web HTML.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;GitHub Pages&lt;/strong&gt; - Sebuah layanan GitHub yang menampung konten web (seperti halaman web HTML) yang tersimpan di dalam repositori GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dalam postingan ini, kami akan menunjukkan cara membuat blog sendiri secara gratis menggunakan ketiga teknologi tersebut. Pada artikel ini, kami menggunakan sistem FreeBSD 13.2 untuk membangun blog yang dapat dipublikasikan secara daring melalui internet.&lt;/p&gt;

&lt;p&gt;Anda juga dapat mempraktikkan materi dalam artikel ini secara langsung menggunakan sistem Linux seperti Ubuntu, CentOS, atau Debian maupun sistem operasi Windows dan macOS.&lt;/p&gt;

&lt;h2 id="1-system-specifications"&gt;1. System Specifications&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;OS: FreeBSD 14.5-PRERELEASE&lt;/li&gt;
  &lt;li&gt;Hostname: ns6&lt;/li&gt;
  &lt;li&gt;Domain: datainchi.com&lt;/li&gt;
  &lt;li&gt;IPv4: 192.168.17.7&lt;/li&gt;
  &lt;li&gt;IPv6: 2001:470:36:61c:4000::2003&lt;/li&gt;
  &lt;li&gt;Golang version: go1.26.4&lt;/li&gt;
  &lt;li&gt;GoHugo version: hugo v0.166.0+withdeploy freebsd/amd64&lt;/li&gt;
  &lt;li&gt;Port Gohugo: 8999&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="2-membuat-proyek-baru"&gt;2. Membuat Proyek Baru&lt;/h2&gt;

&lt;p&gt;Sebagai langkah awal dalam membuat blog menggunakan Hugo, kita perlu menyiapkan nama proyek baru. Proyek ini akan kita gunakan sebagai folder untuk menyimpan seluruh data blog. Ikuti langkah-langkah di bawah ini untuk membuat proyek blog dengan GoHugo.&lt;/p&gt;

&lt;div class="language-console highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="gp"&gt;root@ns1:~ #&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /var
&lt;span class="gp"&gt;root@ns1:/var #&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; blog
&lt;span class="gp"&gt;root@ns1:/var #&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;blog
&lt;span class="gp"&gt;root@ns1:/var/blog #&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;hugo new site blogspot
&lt;span class="go"&gt;Congratulations! Your new Hugo site is created in /var/blog/blogspot.

Tinggal beberapa langkah lagi dan Anda siap untuk memulai dan memiliki blog sendiri:

1. Download a theme into the same-named folder.
   Choose a theme from https://themes.gohugo.io/ or
&lt;/span&gt;&lt;span class="gp"&gt;   create your own with the "hugo new theme &amp;lt;THEMENAME&amp;gt;&lt;/span&gt;&lt;span class="s2"&gt;" command.
&lt;/span&gt;&lt;span class="go"&gt;2. Perhaps you want to add some content. You can add single files
&lt;/span&gt;&lt;span class="gp"&gt;   with "hugo new &amp;lt;SECTIONNAME&amp;gt;&lt;/span&gt;/&amp;lt;FILENAME&amp;gt;.&amp;lt;FORMAT&amp;gt;&lt;span class="s2"&gt;".
&lt;/span&gt;&lt;span class="go"&gt;3. Start the built-in live server via "hugo server".

Visit https://gohugo.io/ for quickstart guide and full documentation.
&lt;/span&gt;&lt;span class="gp"&gt;root@ns1:/var/blog #&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada skrip di atas, kita membuat proyek bernama &lt;code class="language-plaintext highlighter-rouge"&gt;"blogspot"&lt;/code&gt; yang ditempatkan di dalam folder &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog&lt;/code&gt;, sementara skrip &lt;code class="language-plaintext highlighter-rouge"&gt;"hugo new site blogspot"&lt;/code&gt; membuat blog menggunakan Gohugo dan folder untuk menyimpan data bagi semua blog kita diberi nama "blogspot".&lt;/p&gt;

&lt;p&gt;Dengan skrip tersebut, kita kini memiliki blog sendiri bernama "blogspot" yang siap untuk disunting atau dimodifikasi, misalnya untuk menyusun struktur data, menulis artikel, dan sebagainya.&lt;/p&gt;

&lt;p&gt;Sekarang, mari kita lihat isi folder &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:/var/blog # cd blogspot
root@ns1:/var/blog/blogspot # ls
archetypes	assets		config.toml	content		data		layouts		public		static		themes
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Jika kita menggambarkannya, tampilannya akan seperti berikut:&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;blogspot/
+-- archetypes
 |     Â¦
 |     +-- default.md
+-- config.toml
+-- content
+-- data
+-- layouts
+-- static
+-- themes
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Langkah berikutnya, hapus isi file &lt;code class="language-plaintext highlighter-rouge"&gt;"/var/blog/blogspot/hugo.toml"&lt;/code&gt; dan ganti dengan skrip di bawah ini.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;baseURL = 'https://datainchi.com/'
languageCode = 'en-us'
tittle = "Exploring the Operating Sistem of Linux"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Anda dapat menyesuaikan isi file &lt;strong&gt;"/var/blog/blogspot/hugo.toml"&lt;/strong&gt; dengan spesifikasi mesin server yang sedang Anda gunakan.&lt;/p&gt;

&lt;p&gt;Hal ini dikarenakan dalam artikel ini, kami menggunakan domain &lt;strong&gt;"datainchi.com"&lt;/strong&gt; pada bagian &lt;code class="language-plaintext highlighter-rouge"&gt;baseURL&lt;/code&gt; sesuai dengan nama domain yang kami gunakan.&lt;/p&gt;

&lt;h2 id="3-membuat-home-page"&gt;3. Membuat Home Page&lt;/h2&gt;

&lt;p&gt;Pada sub-bab ini, kita akan membahas cara membuat tata letak untuk halaman beranda serta tata letak lainnya untuk halaman-halaman blog kita. Kita akan menempatkan tata letak halaman beranda ini di dalam folder &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/layouts/index.html&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Berikut adalah skrip yang harus Anda ketik di dalam berkas &lt;code class="language-plaintext highlighter-rouge"&gt;"/var/blog/blogspot/layouts/index.html"&lt;/code&gt;.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns6:/var/blog/blogspot # touch /var/blog/blogspot/layouts/index.html
root@ns6:/var/blog/blogspot # ee /var/blog/blogspot/layouts/index.html
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en-US"&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset="utf-8"&amp;gt;
&amp;lt;title&amp;gt;{{ .Site.Title }}&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;{{ .Site.Title}}&amp;lt;/h1&amp;gt;
{{ .Content }}
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Skrip  {{ .Content }}  menampilkan konten halaman beranda, yang berasal dari blog yang telah kita buat dan diambil dari folder &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/content&lt;/code&gt; yang kita buat sebelumnya.&lt;/p&gt;

&lt;p&gt;Untuk halaman beranda situs, Hugo akan mencari konten di dalam file bernama &lt;code class="language-plaintext highlighter-rouge"&gt;_index.md&lt;/code&gt; di direktori konten. 
Nama file khusus inilah yang digunakan Hugo untuk menemukan konten bagi semua halaman indeks, seperti halaman beranda serta daftar konten misalnya tag, kategori, atau kumpulan lainnya yang akan kita buat.&lt;/p&gt;

&lt;p&gt;Langkah berikutnya adalah membuat file &lt;code class="language-plaintext highlighter-rouge"&gt;"/var/blog/blogspot/content/_index.md"&lt;/code&gt;. Kita dapat memasukkan konten Markdown yang valid ke dalam file ini. 
Ketik skrip berikut di dalam file tersebut.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns6:/var/blog/blogspot # touch /var/blog/blogspot/content/_index.md
root@ns6:/var/blog/blogspot # ee /var/blog/blogspot/content/_index.md

Exploring the Operating Sistem of Linux
Think Globally For Linux because Linux is for human life. Datainchi Born to explore Linux

* About Us
* Sitemap
* FeedRSS
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah kita membuat file konten di &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/content/_index.md&lt;/code&gt;, langkah selanjutnya adalah menjalankan GoHugo. Ketik perintah berikut untuk menjalankan server GoHugo.&lt;/p&gt;

&lt;div class="language-sh highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:/var/blog/blogspot &lt;span class="c"&gt;# hugo server --bind=192.168.17.7 --baseURL=http://192.168.17.7 --port=8999&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Skrip di atas digunakan untuk menjalankan server Gohugo. Dalam skrip tersebut, kita menjalankan Gohugo pada alamat IP &lt;strong&gt;192.168.17.7 dengan port 8999&lt;/strong&gt;, sesuai dengan spesifikasi sistem yang telah kita tentukan dalam pembahasan di subbab 1 di atas.&lt;/p&gt;

&lt;p&gt;Langkah berikutnya adalah menguji apakah Gohugo dapat dibuka menggunakan peramban web. Buka peramban web Yandex atau Google Chrome, lalu ketik &lt;code class="language-plaintext highlighter-rouge"&gt;"http://192.168.17.7:8999/"&lt;/code&gt; pada bilah alamat; hasilnya akan tampak seperti berikut:&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://gitea.com/UnixBSDShell/OpenBSD-Web-APP/raw/branch/main/img/oct-25-88.jpg" target="_blank"&gt;
    &lt;img alt="Dashboard Hugo" class="artikel-img" src="https://gitea.com/UnixBSDShell/OpenBSD-Web-APP/raw/branch/main/img/oct-25-88.jpg" title="Dashboard Hugo" /&gt;
    &lt;/a&gt;
&lt;/figure&gt;

&lt;h2 id="4-membuat-konten-dengan-archetypes"&gt;4. Membuat Konten dengan Archetypes&lt;/h2&gt;

&lt;p&gt;Saat Anda membuat konten menggunakan file &lt;code class="language-plaintext highlighter-rouge"&gt;/var/blog/blogspot/content/_index.md&lt;/code&gt;, itu berarti Anda membuat file konten tersebut secara manual. Kita bisa meminta Hugo untuk membuat halaman konten yang sudah memuat &lt;em&gt;placeholder&lt;/em&gt; konten.&lt;/p&gt;

&lt;p&gt;Dengan cara ini, kita tidak perlu memulai dari nol saat membuat konten. Hugo menggunakan &lt;em&gt;Archetype&lt;/em&gt; untuk menentukan konten bawaan ini. Ketik perintah di bawah ini untuk mulai membuat konten menggunakan &lt;em&gt;archetype&lt;/em&gt;.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:/var/blog/blogspot # hugo new about.md
Content "/var/blog/blogspot/content/about.md" created
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Skrip di atas akan menghasilkan file konten &lt;strong&gt;"about.md"&lt;/strong&gt; yang terletak di &lt;code class="language-plaintext highlighter-rouge"&gt;"/var/blog/blogspot/content/about.md"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Setelah itu, buka file tersebut, hapus seluruh isinya, lalu ganti dengan skrip di bawah ini.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;date = '2025-05-30T09:34:02+07:00'
draft = true
title = 'About'

Think Globally For Linux because Linux is for human life. Datainchi Born to explore Linux
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah itu, kita lanjutkan dengan membuat folder baru bernama &lt;code class="language-plaintext highlighter-rouge"&gt;_default&lt;/code&gt;. Ketik skrip berikut untuk membuat folder tersebut.&lt;/p&gt;

&lt;div class="language-sh highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:/var/blog/blogspot &lt;span class="c"&gt;# mkdir -p /var/blog/blogspot/layouts/_default&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Kita lanjutkan dengan menyalin file &lt;code class="language-plaintext highlighter-rouge"&gt;index.html&lt;/code&gt;; berikut adalah skrip yang kita ketik untuk menyalin file tersebut.&lt;/p&gt;

&lt;div class="language-sh highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:/var/blog/blogspot &lt;span class="c"&gt;# cp layouts/index.html layouts/_default/single.html&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Kemudian, hapus semua skrip di dalam file &lt;code class="language-plaintext highlighter-rouge"&gt;"/var/blog/blogspot/layouts/_default/single.html"&lt;/code&gt; dan ganti dengan skrip di bawah ini.&lt;/p&gt;

&lt;div class="language-plaintext highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en-US"&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset="utf-8"&amp;gt;
&amp;lt;title&amp;gt;{{ .Site.Title }}&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;{{ .Site.Title}}&amp;lt;/h1&amp;gt;
&amp;lt;h2&amp;gt;{{ .Title }}&amp;lt;/h2&amp;gt;
{{ .Content }}
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Jalankan server GoHugo.&lt;/p&gt;

&lt;div class="language-sh highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;root@ns1:/var/blog/blogspot &lt;span class="c"&gt;# hugo server --bind=192.168.17.7 --baseURL=http://192.168.17.7 --port=8999&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Kita dapat melihat hasilnya dengan membuka peramban web Google Chrome dan mengetikkan &lt;code class="language-plaintext highlighter-rouge"&gt;"http://192.168.17.7:8999/about/"&lt;/code&gt;.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://gitea.com/UnixBSDShell/OpenBSD-Web-APP/raw/branch/main/img/oct-25-89.jpg" target="_blank"&gt;
    &lt;img alt="Dashboard Hugo2" class="artikel-img" src="https://gitea.com/UnixBSDShell/OpenBSD-Web-APP/raw/branch/main/img/oct-25-89.jpg" title="Dashboard Hugo2" /&gt;
    &lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Sepertinya cukup cukup pembahasan pada part 1 disini, kita lanjutkan ke part 2 dengan pembahasan yang lebih sulit tentunya dari part 1. Semoga artikel pada part 1 ini menjadi bahan referensi kita semua agar tetap semangat dan terus mempelajari GoHugo sebagai aplikasi pembuatan Blog Statis.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2023/02/cara-belajar-membuat-blog-dengan-go.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2752067603524007638.post-1530689671044666800</guid><pubDate>Sun, 22 Jan 2023 14:00:00 +0000</pubDate><atom:updated>2026-11-01T06:17:25.644+07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><title>Panduan Install ClamAV Antivirus Engine di Fedora</title><description>&lt;p&gt;ClamAV adalah perangkat antivirus tangguh yang menawarkan perlindungan penting bagi sistem Fedora Linux terhadap perangkat lunak berbahaya, termasuk virus dan trojan. Berikut ini adalah beberapa fitur utama ClamAV:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Perlindungan Serbaguna: ClamAV dengan tekun melindungi dari berbagai bentuk malware, menyediakan lingkungan yang aman bagi sistem Fedora Linux Anda.&lt;/li&gt;
  &lt;li&gt;Pembaruan Rutin: Dengan pembaruan basis data yang sering, ClamAV memastikan sistem Anda terlindungi dari ancaman terbaru yang diketahui, meningkatkan lanskap keamanan Anda.&lt;/li&gt;
  &lt;li&gt;Antarmuka Baris Perintah: ClamAV beroperasi melalui antarmuka baris perintah yang mudah dipahami, membuatnya mudah diakses dan dinavigasi bagi pengguna yang terbiasa dengan perintah terminal.&lt;/li&gt;
  &lt;li&gt;Opsi Pemindaian: Perangkat ini menawarkan opsi pemindaian yang fleksibel, yang memungkinkan pengguna untuk memeriksa file, direktori, dan area sistem yang rentan terhadap infeksi secara menyeluruh.&lt;/li&gt;
  &lt;li&gt;Opensource: ClamAV adalah proyek sumber terbuka yang mengundang kontribusi dari komunitas, yang mengarah pada peningkatan berkelanjutan dan fitur yang diperbarui.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dalam tutorial ini, kami akan menunjukkan cara menginstal ClamAV di Fedora Linux. ClamAV adalah mesin antivirus sumber terbuka serbaguna yang dirancang terutama untuk mendeteksi trojan, virus, malware, dan ancaman jahat lainnya. Anti virus ini sangat efektif dalam memindai lampiran email dan lalu lintas web gateway. Fleksibilitas ClamAV menjadikannya pilihan yang sangat baik bagi pengguna Fedora Linux yang ingin meningkatkan postur keamanan sistem mereka.&lt;/p&gt;

&lt;p&gt;Artikel ini mengasumsikan setidaknya anda memiliki pengetahuan dasar tentang Linux, tahu cara menggunakan baris perintah shell. Instalasinya cukup sederhana dan mengasumsikan anda menjalankannya di akun root, jika tidak, anda mungkin perlu menambahkan &lt;code class="language-plaintext highlighter-rouge"&gt;sudo&lt;/code&gt; ke perintah untuk mendapatkan hak akses root.&lt;/p&gt;

&lt;figure class="gbr-artikel"&gt;
    &lt;a href="https://raw.githubusercontent.com/unixwinbsd/unixbsdshell.github.io/refs/heads/main/img/nop-25/nop-25-021.jpg" target="_blank"&gt;
    &lt;img alt="Calamav anti virus" class="artikel-img" src="https://raw.githubusercontent.com/unixwinbsd/unixbsdshell.github.io/refs/heads/main/img/nop-25/nop-25-021.jpg" title="Calamav anti virus" /&gt;
    &lt;/a&gt;
    &lt;figcaption class="teks-gamabr"&gt;
     Calamav anti virus
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="a-install-clamav-dengan-perintah-dnf-command"&gt;A. Install ClamAV dengan perintah DNF Command&lt;/h2&gt;

&lt;p&gt;Perintah pertama yang harus anda jalankan adalah melakukan pembaruan sistem Fedora. Untuk menghindari konflik selama instalasi ClamAV, anda pastikan semua paket sudah mutakhir dan versi terbaru.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;dnf clean all
&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;dnf update
&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# dnf upgrade &lt;span class="nt"&gt;--refresh&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Secara default, ClamAV tersedia di repositori standar. Fedora berfokus pada rilis upstream, sehingga versi yang disediakan umumnya mutakhir dan kompatibel dengan distribusi Linux lainnya. Untuk menginstal ClamAV dan antarmuka GUI-nya pada sistem berbasis rpm seperti fedora, cukup gunakan dnf dan tjalankan perintah berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;clamav clamd clamav-update
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perintah diatas akan menginstal paket inti ClamAV beserta dependensi yang diperlukan dan paket clamav-update, yang bertanggung jawab untuk memperbarui basis data virus. Setelah proses instalasi selesai, Anda dapat memverifikasi bahwa ClamAV berhasil diinstal dengan memeriksa versinya. Jalankan perintah berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;clamscan &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Jika ClamAV terinstal dengan benar, Anda akan melihat informasi versi Clamav akan ditampilkan pada menu terminal shell anda.&lt;/p&gt;

&lt;h2 id="b-update-clamav-database"&gt;B. Update ClamAV database&lt;/h2&gt;

&lt;p&gt;Dalam menjalankan fungsinya, Clamav menggunakan database yang dapat membaca dan menhalau virus. Database tersebut akan selalu berubah tiap bulan atau tahun. Oleh karena itu anda harus selalu mengupdate database Clamav ke versi terbarunya. Hal ini untuk lebih meningkatkan kinerja dan performa Calamav dalam menghalau virus-virus jahat yang selalu mengintai sistem anda.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl stop clamav-freshclam
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Sekarang anda dapat langsung menjalankan perintah update database Clamav.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;freshclam
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setelah database diperbarui, mulai layanan &lt;code class="language-plaintext highlighter-rouge"&gt;clamav-freshclam&lt;/code&gt; dan aktifkan untuk berjalan secara otomatis saat sistem melakukan boot.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;clamav-freshclam &lt;span class="nt"&gt;--now&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Penting bagi anda, jika suatu hari nanti anda tidak ingin mengkatifkan Clamav. Anda bisa mematikan fungsi clamav tanpa harus menghapusnya.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl disable clamav-freshclam &lt;span class="nt"&gt;--now&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id="b1-otomatis-update"&gt;b.1. Otomatis Update&lt;/h3&gt;

&lt;p&gt;Untuk memastikan instalasi ClamAV anda tetap mengikuti berada dalam versi database terkini, sebaiknya anda menyiapkan pembaruan otomatis (biar gak capek). Anda dapat melakukannya dengan mengonfigurasi file crontab untuk menjalankan freshclam secara berkala.&lt;/p&gt;

&lt;p&gt;Buka berkas crontab dan diedit scriptnya seperti contoh di bawah ini.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;crontab &lt;span class="nt"&gt;-e&lt;/span&gt;

0 2 &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; /usr/bin/freshclam &lt;span class="nt"&gt;--quiet&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Dengan pekerjaan cron ini, ClamAV akan secara otomatis memperbarui definisi virusnya setiap hari pada waktu yang ditentukan.&lt;/p&gt;

&lt;h2 id="c-konfigurasi-clamav"&gt;C. Konfigurasi ClamAV&lt;/h2&gt;

&lt;p&gt;Dengan ClamAV yang telah terinstal di sistem Fedora anda, saatnya mengoknfigurasinya agar Clamav dapat langsung kerja dan kerja untuk melakukan perlindungan yang optimal pada sistem anda. Untuk melakukan hal tersebut anda harus mengedit file konfigurasi utama Clamav yaitu "freshclam.conf".&lt;/p&gt;

&lt;h3 id="c1-edit-file-freshclamconf"&gt;c.1. Edit file freshclam.conf&lt;/h3&gt;

&lt;p&gt;File &lt;code class="language-plaintext highlighter-rouge"&gt;freshclam.conf&lt;/code&gt; berisi pengaturan konfigurasi untuk komponen freshclam, yang bertanggung jawab untuk memperbarui basis data virus. Untuk mengedit berkas ini, gunakan perintah berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/freshclam.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Pada script file tersebut, anda dapat menyesuaikan berbagai pengaturan seperti frekuensi pembaruan, mirror basis data, dan pengaturan proxy. Pastikan untuk menghapus komentar dan mengubah opsi yang diperlukan berdasarkan kebutuhan anda.&lt;/p&gt;

&lt;h3 id="c2-edit-file-clamdconf"&gt;c.2. Edit file clamd.conf&lt;/h3&gt;

&lt;p&gt;File &lt;code class="language-plaintext highlighter-rouge"&gt;clamd.conf&lt;/code&gt; digunakan untuk mengkonfigurasi daemon clamd, yang menyediakan pemindaian dan pemantauan secara real-time. Buka file tersebut dengan perintah berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/clamd.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Script pada file ini harus anda konfigurasi seperti opsi pengaturan pemindaian, lokasi berkas log, dan ukuran berkas maksimum untuk pemindaian. Sesuaikan pengaturan sesuai kebutuhan anda, setelah itu simpan perubahan tersebut.&lt;/p&gt;

&lt;h3 id="c3-systemd-clamav"&gt;c.3. systemd Clamav&lt;/h3&gt;

&lt;p&gt;ClamAV juga menawarkan pemindaian saat diakses, yang secara otomatis memindai berkas saat berkas diakses atau dimodifikasi. Untuk mengaktifkan pemindaian saat diakses, Anda perlu mengkonfigurasi daemon clamd agar berjalan sebagai layanan. Ikuti langkah-langkah berikut.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/systemd/system/clamd.service

&lt;span class="o"&gt;[&lt;/span&gt;Unit]
&lt;span class="nv"&gt;Description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ClamAV Antivirus Daemon
&lt;span class="nv"&gt;After&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;network.target

&lt;span class="o"&gt;[&lt;/span&gt;Service]
&lt;span class="nv"&gt;Type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;forking
&lt;span class="nv"&gt;ExecStart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/sbin/clamd
&lt;span class="nv"&gt;Restart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;on-failure

&lt;span class="o"&gt;[&lt;/span&gt;Install]
&lt;span class="nv"&gt;WantedBy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;multi-user.target
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Simapan hasil peubahan dan jalankan ulang Clamav.&lt;/p&gt;

&lt;div class="language-bash highlighter-rouge"&gt;&lt;div class="highlight"&gt;&lt;pre class="highlight"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;root@ns1 ~]# &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; &lt;span class="nt"&gt;--now&lt;/span&gt; clamd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Dengan pemindaian akses yang dikonfigurasi, ClamAV akan secara aktif memantau dan memindai berkas secara real-time, memberikan lapisan perlindungan tambahan pada komputer anda.&lt;/p&gt;

&lt;p&gt;Pada artikel ini, anda tak perlu melakukan scan manual anti virus Clamav, karena semuanya telah dikerjakan secara otomatis oleh systemd dan crontab. Anda dapat membaca artikel lainnya tentang cara melakukan scan antivirus dengan Clamav.&lt;/p&gt;

&lt;p&gt;Selamat! Anda telah berhasil menginstal ClamAV. Terima kasih telah menggunakan tutorial ini untuk menginstal ClamAV pada sistem Fedora.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;unixbsdshell adalah Website Statis Tutorial Opensource dan Channel Youtube yang berfokus pada sistem UNIX, seperti FreeBSD, OpenBSD, NetBSD, dan lainnya&lt;/div&gt;</description><link>https://www.unixbsdshell.site/2026/10/blog-post.html</link><thr:total>0</thr:total><author>datainchi@gmail.com (Iwan Setiawan)</author></item></channel></rss>