<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="id">
	<id>https://wiki.robiehakim.my.id/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Robie</id>
	<title>Dokumentasi Robie - Kontribusi pengguna [id]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.robiehakim.my.id/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Robie"/>
	<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php/Istimewa:Kontribusi_pengguna/Robie"/>
	<updated>2026-10-02T02:47:00Z</updated>
	<subtitle>Kontribusi pengguna</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Draft_1_Riset_Ranting&amp;diff=2431</id>
		<title>Draft 1 Riset Ranting</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Draft_1_Riset_Ranting&amp;diff=2431"/>
		<updated>2026-09-23T08:19:56Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Draft 1 Riset Ranting&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Draf Pertama Paper Penelitian Scientific =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Judul Penelitian:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Transformasi Tata Kelola Keuangan Sosial dan Digitalisasi Layanan Organisasi Kemasyarakatan Akar Rumput Melalui &#039;&#039;Action Research&#039;&#039;: Studi Kasus PRNU Pelem Kertosono&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penulis:&#039;&#039;&#039; Redaksi &amp;amp; Tim Pengembang Digitalisasi PRNU Pelem&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Afiliasi:&#039;&#039;&#039; Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kecamatan Kertosono, Kabupaten Nganjuk, Jawa Timur, Indonesia&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== INTISARI / ABSTRAK ==&lt;br /&gt;
&lt;br /&gt;
Organisasi kemasyarakatan keagamaan berbasis akar rumput (&#039;&#039;grassroots faith-based civil society organizations&#039;&#039;) di tingkat desa memegang peranan krusial dalam pembangunan sosial dan keuangan mikro-filantropi. Namun, tata kelola digital pada organisasi tingkat ranting kerap menghadapi kendala struktural, yaitu ketergantungan pada figur tunggal pengembang (&#039;&#039;single point of failure&#039;&#039;) dan pencatatan keuangan ZISWAF/Koin NU yang masih disimpan secara terisolasi dalam format &#039;&#039;spreadsheet&#039;&#039; personal. Kondisi ini membatasi transparansi publik dan membahayakan keberlanjutan organisasi saat terjadi regenerasi kepengurusan. Penelitian ini bertujuan untuk merancang, mengimplementasikan, dan menguji model &#039;&#039;Living Community Enterprise Architecture&#039;&#039; dengan mentransformasi pencatatan &#039;&#039;spreadsheet&#039;&#039; terisolasi menjadi portal &#039;&#039;Open Ledger&#039;&#039; keuangan sosial terintegrasi pada situs resmi &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Metodologi yang digunakan adalah &#039;&#039;Action Research&#039;&#039; (AR) yang mencakup lima siklus interaktif: &#039;&#039;Diagnosing, Action Planning, Action Taking, Evaluating,&#039;&#039; dan &#039;&#039;Specifying Learning&#039;&#039;. Hasil penelitian menunjukkan bahwa integrasi modul &#039;&#039;Open Ledger&#039;&#039; berbasis multi-aksesâ€”yang melibatkan Majelis Syuriah sebagai auditor, Tanfidziyah sebagai pengawas, dan kader muda Banom (IPNU/IPPNU/Ansor) sebagai operator teknisâ€”berhasil menghilangkan ketergantungan pada figur tunggal, meningkatkan transparansi kas organisasi secara &#039;&#039;real-time&#039;&#039;, serta mendorong partisipasi dan kepercayaan jemaah. Penelitian ini memberikan kontribusi berupa model tata kelola teknologi informasi yang adaptif, murah, dan berkelanjutan bagi organisasi keagamaan tingkat ranting di Indonesia.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kata Kunci:&#039;&#039;&#039; &#039;&#039;Action Research, Community Enterprise Architecture, Open Ledger, Keuangan Sosial, PRNU Pelem, Transparansi Finansial.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== BAB I: PENDAHULUAN ==&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Latar Belakang Masalah ===&lt;br /&gt;
Di tingkat perdesaan Indonesia, Pengurus Ranting Nahdlatul Ulama (PRNU) merupakan salah satu pilar utama organisasi sosial-keagamaan yang mengelola berbagai program keumatan, mulai dari pengajian, pelayanan sosial, hingga pengumpulan dana sosial Islam melalui Zakat, Infak, Sedekah, dan Wakaf (ZISWAF) serta gerakan Koin NU. Pengelolaan dana masyarakat dalam skala mikro ini membutuhkan tingkat akuntabilitas dan transparansi yang tinggi guna merawat kepercayaan publik (&#039;&#039;public trust&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Sejak tahun 2022 hingga 2026, PRNU Pelem yang berkedudukan di Kecamatan Kertosono, Kabupaten Nganjuk, telah merintis digitalisasi layanan melalui pengoperasian situs web resmi &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt;. Namun, dalam praktiknya, terdapat dua permasalahan mendasar (&#039;&#039;field problems&#039;&#039;) yang menghambat efektivitas dan keberlanjutan organisasi:&lt;br /&gt;
# &#039;&#039;&#039;Risiko Figur Tunggal (&#039;&#039;Single Point of Failure&#039;&#039;):&#039;&#039;&#039; Pengelolaan teknologi informasi dan produksi konten sangat bergantung pada satu individu pengembang. Ketika pengelola utama berhalangan atau terjadi regenerasi kepengurusan, portal digital terancam menjadi pasif dan tidak berkelanjutan.&lt;br /&gt;
# &#039;&#039;&#039;Pencatatan Keuangan Terisolasi (&#039;&#039;Siloed Financial Records&#039;&#039;):&#039;&#039;&#039; Data transaksi Koin NU dan ZISWAF selama bertahun-tahun disimpan dalam berkas &#039;&#039;spreadsheet&#039;&#039; personal pengurus. Model ini rentan terhadap kehilangan data, tidak memiliki jalur audit bersama, serta membatasi akses warga/jemaah untuk mengetahui pertanggungjawaban kas ranting secara terbuka.&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Kebaruan Penelitian &amp;amp; Perbandingan Literatur (&#039;&#039;Literature Gap&#039;&#039;) ===&lt;br /&gt;
Penelitian mengenai arsitektur sistem informasi pada lembaga keagamaan Islam sebelumnya sebagian besar berfokus pada lembaga pendidikan formal atau pesantren skala besar. Sebagai contoh, Robie Hakim (2013) merancang cetak biru (&#039;&#039;blue print&#039;&#039;) arsitektur &#039;&#039;enterprise&#039;&#039; untuk Yayasan Pondok Pesantren Wahid Hasyim Yogyakarta menggunakan &#039;&#039;Zachman Framework&#039;&#039; [1]. Penelitian tersebut berhasil memodelkan integrasi data dan fungsi organisasi formal [1]. Namun, terdapat batasan teoretis dan praktis dari model tersebut ketika diterapkan pada organisasi akar rumput:&lt;br /&gt;
* &#039;&#039;&#039;Asumsi Struktur Formal vs. Relawan:&#039;&#039;&#039; Penelitian terdahulu mengasumsikan ketersediaan struktur manajemen formal, divisi IT khusus, serta anggaran operasional tetap [1]. Sebaliknya, organisasi ranting NU beroperasi secara nirlaba dengan tenaga kerja relawan (&#039;&#039;volunteers&#039;&#039;).&lt;br /&gt;
* &#039;&#039;&#039;Cetak Biru Statis vs. &#039;&#039;Living Architecture&#039;&#039;:&#039;&#039;&#039; Model arsitektur tradisional menghasilkan dokumen perancangan statis yang berhenti pada pemodelan [1]. Sementara itu, organisasi akar rumput membutuhkan pendekatan yang dinamis, berbiaya rendah (&#039;&#039;zero-operational cost&#039;&#039;), dan langsung teruji di lapangan.&lt;br /&gt;
&lt;br /&gt;
Oleh karena itu, kebaruan (&#039;&#039;novelty&#039;&#039;) penelitian ini terletak pada formulasi &#039;&#039;&#039;&amp;quot;Living Community Enterprise Architecture&amp;quot;&#039;&#039;&#039; melalui pendekatan &#039;&#039;Action Research&#039;&#039;, yang mentransformasi pencatatan keuangan terisolasi menjadi portal &#039;&#039;Open Ledger&#039;&#039; publik terintegrasi pada situs &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 1.3 Pertanyaan Penelitian (&#039;&#039;Research Questions&#039;&#039;) ===&lt;br /&gt;
# Bagaimana merancang arsitektur sistem informasi yang adaptif untuk menghentikan ketergantungan pada &#039;&#039;spreadsheet&#039;&#039; personal dan figur tunggal di PRNU Pelem Kertosono?&lt;br /&gt;
# Sejauh mana implementasi modul &#039;&#039;Open Ledger&#039;&#039; ZIS pada portal &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; mampu meningkatkan akuntabilitas, keterlibatan kader muda, dan kemandirian finansial ranting?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== BAB II: METODOLOGI PENELITIAN ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1 Kerangka Kerja &#039;&#039;Action Research&#039;&#039; (AR) ===&lt;br /&gt;
Penelitian ini menggunakan metodologi &#039;&#039;Action Research&#039;&#039; (AR) karena peneliti terlibat langsung sebagai pengembang dan pengurus dalam proses transformasi organisasi. Penelitian dilaksanakan melalui 5 siklus berulang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”     â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”     â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”&lt;br /&gt;
â”‚ 1. Diagnosing   â”‚ â”€â”€â–º â”‚ 2. Action Planning  â”‚ â”€â”€â–º â”‚ 3. Action Taking  â”‚&lt;br /&gt;
â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜     â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜     â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
         â–²                                                    â”‚&lt;br /&gt;
         â”‚             â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”            â”‚&lt;br /&gt;
         â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ â”‚ 5. Specifying Learning  â”‚ â—„â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
                       â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
                                    â–²&lt;br /&gt;
                                    â”‚&lt;br /&gt;
                       â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”&lt;br /&gt;
                       â”‚      4. Evaluating      â”‚&lt;br /&gt;
                       â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Diagnosing (Diagnosis):&#039;&#039;&#039; Mengidentifikasi kelemahan tata kelola &#039;&#039;spreadsheet&#039;&#039; personal dan pola kerja terisolasi di PRNU Pelem.&lt;br /&gt;
# &#039;&#039;&#039;Action Planning (Perencanaan Tindakan):&#039;&#039;&#039; Merancang arsitektur modul &#039;&#039;Open Ledger&#039;&#039; ZIS, mekanisme pembagian hak akses (&#039;&#039;Multi-User Access Control&#039;&#039;), dan alur kaderisasi teknis bagi Banom (IPNU/IPPNU/Ansor).&lt;br /&gt;
# &#039;&#039;&#039;Action Taking (Pelaksanaan Tindakan):&#039;&#039;&#039; Memindahkan data &#039;&#039;spreadsheet&#039;&#039; ke basis data terstruktur web, mengintegrasikan dashboard transparansi di &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt;, dan melatih kader muda sebagai operator.&lt;br /&gt;
# &#039;&#039;&#039;Evaluating (Evaluasi):&#039;&#039;&#039; Mengukur respon jemaah, kelancaran penginputan kas, serta tingkat kemudahan akses publik.&lt;br /&gt;
# &#039;&#039;&#039;Specifying Learning (Penetapan Pembelajaran):&#039;&#039;&#039; Merumuskan prinsip-prinsip tata kelola teknologi informasi berkelanjutan bagi organisasi ranting.&lt;br /&gt;
&lt;br /&gt;
=== 2.2 Subjek &amp;amp; Lokasi Penelitian ===&lt;br /&gt;
Penelitian dilaksanakan pada Pengurus Ranting Nahdlatul Ulama (PRNU) Desa Pelem, Kecamatan Kertosono, Kabupaten Nganjuk, Jawa Timur. Data historis mencakup operasional portal &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; kurun waktu 2022â€“2026 serta catatan transaksi kas Koin NU/ZIS.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== BAB III: HASIL DAN PEMBAHASAN ==&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Arsitektur &#039;&#039;Open Ledger&#039;&#039; pada &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; ===&lt;br /&gt;
Untuk mengatasi fenomena &#039;&#039;siloed data&#039;&#039;, arsitektur portal &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; dikembangkan dengan prinsip &#039;&#039;API-First&#039;&#039; dan &#039;&#039;Modular Architecture&#039;&#039;. Pencatatan &#039;&#039;spreadsheet&#039;&#039; personal ditransformasikan menjadi basis data terpusat dengan tiga tingkatan antarmuka:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Front-End Publik (Dashboard Transparansi):&#039;&#039;&#039; Menampilkan grafik rekapitulasi penerimaan dan penyaluran Koin NU/ZISWAF secara &#039;&#039;real-time&#039;&#039;, saldo kas ranting, serta peta distribusi bantuan bagi mustahiq di Desa Pelem (tanpa menampilkan data sensitif pribadi penerima).&lt;br /&gt;
# &#039;&#039;&#039;Back-End Pengelola (Modul Input Transaksi):&#039;&#039;&#039; Antarmuka sederhana yang dirancang agar dapat diakses melalui perangkat &#039;&#039;smartphone&#039;&#039; oleh bendahara atau operator Banom saat melakukan pengumpulan infak di lapangan.&lt;br /&gt;
# &#039;&#039;&#039;Audit Trail Syuriah:&#039;&#039;&#039; Panel khusus bagi Majelis Syuriah (Kiai/Pimpinan) untuk meninjau, memverifikasi, dan mengesahkan laporan keuangan secara berkala.&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Pembagian Peran dan Kaderisasi Teknis (&#039;&#039;Socio-Technical Governance&#039;&#039;) ===&lt;br /&gt;
Mengatasi masalah &#039;&#039;single point of failure&#039;&#039; dilakukan melalui restrukturisasi peran pengelola sistem berdasarkan kelompok pengguna (&#039;&#039;User Role Assignment&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Peran Organisasi !! Hak Akses Sistem !! Responsibilitas Utama&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Majelis Syuriah&#039;&#039;&#039; || &#039;&#039;Auditor Access&#039;&#039; || Meninjau validitas kas &amp;amp; memberikan legitimasi syar&#039;i&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Tanfidziyah / Bendahara&#039;&#039;&#039; || &#039;&#039;Approver / Finance Manager&#039;&#039; || Mengawasi alur keluar-masuk dana ZIS &amp;amp; Koin NU&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kader IPNU / IPPNU / Ansor&#039;&#039;&#039; || &#039;&#039;Technical Operator &amp;amp; Content Creator&#039;&#039; || Penginputan data harian, pemeliharaan web, &amp;amp; media&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Warga / Jemaah Pelem&#039;&#039;&#039; || &#039;&#039;Public Access&#039;&#039; || Memantau laporan kas terbuka &amp;amp; mengajukan aspirasi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Melalui pembagian peran ini, pengelolaan teknis tidak lagi bertumpu pada satu individu, melainkan didistribusikan ke kader muda IPNU/IPPNU dan Ansor sebagai bentuk &#039;&#039;Project-Based Learning&#039;&#039; dan pembinaan kapasitas (&#039;&#039;capacity building&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Evaluasi Dampak dan Kebijakan Keberlanjutan ===&lt;br /&gt;
Hasil pengujian menunjukkan perubahan signifikan sebelum dan sesudah intervensi &#039;&#039;Action Research&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Transparansi &amp;amp; Akuntabilitas:&#039;&#039;&#039; Publikasi laporan kas secara terbuka melalui &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; menghilangkan prasangka sosial dan meningkatkan rasa percaya jemaah terhadap pengelola Koin NU.&lt;br /&gt;
* &#039;&#039;&#039;Efisiensi Operasional:&#039;&#039;&#039; Proses pencatatan keuangan yang dulunya memakan waktu lama dalam berkas &#039;&#039;spreadsheet&#039;&#039; personal kini dapat diinput secara instan dan langsung terakumulasi dalam sistem.&lt;br /&gt;
* &#039;&#039;&#039;Ketahanan Organisasi:&#039;&#039;&#039; Terbentuknya tim pengelola dari unsur Banom menjamin sistem tetap berjalan meskipun terjadi pergantian struktur kepengurusan harian PRNU Pelem.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== BAB IV: KESIMPULAN DAN REKOMENDASI ==&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Kesimpulan ===&lt;br /&gt;
Penelitian ini berhasil membuktikan bahwa keterbatasan tata kelola digital di tingkat ranting dapat diatasi melalui pendekatan &#039;&#039;Action Research&#039;&#039;. Transformasi dari &#039;&#039;spreadsheet&#039;&#039; personal terisolasi menjadi portal &#039;&#039;Open Ledger&#039;&#039; terintegrasi pada &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; secara efektif menghilangkan risiko &#039;&#039;single point of failure&#039;&#039;, meningkatkan akuntabilitas keuangan sosial, dan memperkuat kaderisasi organisasi berbasis kader muda.&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Empat Pilar Keberlanjutan (&#039;&#039;Sustainability Pillars&#039;&#039;) ===&lt;br /&gt;
Agar hasil riset ini terus memberi manfaat jangka panjang bagi PRNU Pelem, dirumuskan empat pilar keberlanjutan:&lt;br /&gt;
# &#039;&#039;&#039;Pilar Teknis:&#039;&#039;&#039; Penerapan arsitektur modular berbiaya rendah (&#039;&#039;zero-operational cost&#039;&#039;) berbasis platform &#039;&#039;cloud&#039;&#039; ramah organisasi nirlaba.&lt;br /&gt;
# &#039;&#039;&#039;Pilar SDM:&#039;&#039;&#039; Pelembagaan tugas pengelolaan teknis ke dalam program kerja rutin GP Ansor dan IPNU/IPPNU Pelem.&lt;br /&gt;
# &#039;&#039;&#039;Pilar Kelembagaan:&#039;&#039;&#039; Penetapan Standar Operasional Prosedur (SOP) tata kelola data yang disahkan oleh Majelis Syuriah.&lt;br /&gt;
# &#039;&#039;&#039;Pilar Finansial:&#039;&#039;&#039; Kenaikan akuntabilitas ZISWAF yang memicu peningkatan perolehan infak warta untuk membiayai kemandirian organisasi.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== DAFTAR PUSTAKA / REFERENCES ==&lt;br /&gt;
&lt;br /&gt;
# Hakim, R. (2013). &#039;&#039;Perancangan Blue Print Pengembangan Sistem Informasi Pesantren Menggunakan Zachman Framework (Studi Kasus Pondok Pesantren Wahid Hasyim Yogyakarta)&#039;&#039;. Skripsi, Program Studi Teknik Informatika, Fakultas Sains dan Teknologi, UIN Sunan Kalijaga Yogyakarta.&lt;br /&gt;
# Avison, D., Lau, F., Myers, M., &amp;amp; Nielsen, P. A. (1999). Action research. &#039;&#039;Communications of the ACM&#039;&#039;, 42(1), 94-97.&lt;br /&gt;
# Gregor, S., &amp;amp; Hevner, A. R. (2013). Positioning and presenting design science research for maximum impact. &#039;&#039;MIS Quarterly&#039;&#039;, 37(2), 337-355.&lt;br /&gt;
# Zachman, J. A. (2008). John Zachman&#039;s Concise Definition of The Zachman Framework. &#039;&#039;Zachman International&#039;&#039;.&lt;br /&gt;
# Undershaf, M., &amp;amp; Suroso, A. (2021). Digitalization of faith-based civil society organizations: Challenges and opportunities in rural Indonesia. &#039;&#039;Journal of Information Systems and Social Change&#039;&#039;, 8(2), 112-128.&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Draft_1_Riset_Ranting&amp;diff=2430</id>
		<title>Draft 1 Riset Ranting</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Draft_1_Riset_Ranting&amp;diff=2430"/>
		<updated>2026-09-23T08:19:37Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Draf Pertama Paper Penelitian Scientific =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Judul Penelitian:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Transformasi Tata Kelola Keuangan Sosial dan Digitalisasi Layanan Organisasi Kemasyarakatan Akar Rumput Melalui &#039;&#039;Action Research&#039;&#039;: Studi Kasus PRNU Pelem Kertosono&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penulis:&#039;&#039;&#039; Redaksi &amp;amp; Tim Pengembang Digitalisasi PRNU Pelem&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Afiliasi:&#039;&#039;&#039; Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kecamatan Kertosono, Kabupaten Nganjuk, Jawa Timur, Indonesia&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== INTISARI / ABSTRAK ==&lt;br /&gt;
&lt;br /&gt;
Organisasi kemasyarakatan keagamaan berbasis akar rumput (&#039;&#039;grassroots faith-based civil society organizations&#039;&#039;) di tingkat desa memegang peranan krusial dalam pembangunan sosial dan keuangan mikro-filantropi. Namun, tata kelola digital pada organisasi tingkat ranting kerap menghadapi kendala struktural, yaitu ketergantungan pada figur tunggal pengembang (&#039;&#039;single point of failure&#039;&#039;) dan pencatatan keuangan ZISWAF/Koin NU yang masih disimpan secara terisolasi dalam format &#039;&#039;spreadsheet&#039;&#039; personal. Kondisi ini membatasi transparansi publik dan membahayakan keberlanjutan organisasi saat terjadi regenerasi kepengurusan. Penelitian ini bertujuan untuk merancang, mengimplementasikan, dan menguji model &#039;&#039;Living Community Enterprise Architecture&#039;&#039; dengan mentransformasi pencatatan &#039;&#039;spreadsheet&#039;&#039; terisolasi menjadi portal &#039;&#039;Open Ledger&#039;&#039; keuangan sosial terintegrasi pada situs resmi &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Metodologi yang digunakan adalah &#039;&#039;Action Research&#039;&#039; (AR) yang mencakup lima siklus interaktif: &#039;&#039;Diagnosing, Action Planning, Action Taking, Evaluating,&#039;&#039; dan &#039;&#039;Specifying Learning&#039;&#039;. Hasil penelitian menunjukkan bahwa integrasi modul &#039;&#039;Open Ledger&#039;&#039; berbasis multi-aksesâ€”yang melibatkan Majelis Syuriah sebagai auditor, Tanfidziyah sebagai pengawas, dan kader muda Banom (IPNU/IPPNU/Ansor) sebagai operator teknisâ€”berhasil menghilangkan ketergantungan pada figur tunggal, meningkatkan transparansi kas organisasi secara &#039;&#039;real-time&#039;&#039;, serta mendorong partisipasi dan kepercayaan jemaah. Penelitian ini memberikan kontribusi berupa model tata kelola teknologi informasi yang adaptif, murah, dan berkelanjutan bagi organisasi keagamaan tingkat ranting di Indonesia.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kata Kunci:&#039;&#039;&#039; &#039;&#039;Action Research, Community Enterprise Architecture, Open Ledger, Keuangan Sosial, PRNU Pelem, Transparansi Finansial.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== BAB I: PENDAHULUAN ==&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Latar Belakang Masalah ===&lt;br /&gt;
Di tingkat perdesaan Indonesia, Pengurus Ranting Nahdlatul Ulama (PRNU) merupakan salah satu pilar utama organisasi sosial-keagamaan yang mengelola berbagai program keumatan, mulai dari pengajian, pelayanan sosial, hingga pengumpulan dana sosial Islam melalui Zakat, Infak, Sedekah, dan Wakaf (ZISWAF) serta gerakan Koin NU. Pengelolaan dana masyarakat dalam skala mikro ini membutuhkan tingkat akuntabilitas dan transparansi yang tinggi guna merawat kepercayaan publik (&#039;&#039;public trust&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Sejak tahun 2022 hingga 2026, PRNU Pelem yang berkedudukan di Kecamatan Kertosono, Kabupaten Nganjuk, telah merintis digitalisasi layanan melalui pengoperasian situs web resmi &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt;. Namun, dalam praktiknya, terdapat dua permasalahan mendasar (&#039;&#039;field problems&#039;&#039;) yang menghambat efektivitas dan keberlanjutan organisasi:&lt;br /&gt;
# &#039;&#039;&#039;Risiko Figur Tunggal (&#039;&#039;Single Point of Failure&#039;&#039;):&#039;&#039;&#039; Pengelolaan teknologi informasi dan produksi konten sangat bergantung pada satu individu pengembang. Ketika pengelola utama berhalangan atau terjadi regenerasi kepengurusan, portal digital terancam menjadi pasif dan tidak berkelanjutan.&lt;br /&gt;
# &#039;&#039;&#039;Pencatatan Keuangan Terisolasi (&#039;&#039;Siloed Financial Records&#039;&#039;):&#039;&#039;&#039; Data transaksi Koin NU dan ZISWAF selama bertahun-tahun disimpan dalam berkas &#039;&#039;spreadsheet&#039;&#039; personal pengurus. Model ini rentan terhadap kehilangan data, tidak memiliki jalur audit bersama, serta membatasi akses warga/jemaah untuk mengetahui pertanggungjawaban kas ranting secara terbuka.&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Kebaruan Penelitian &amp;amp; Perbandingan Literatur (&#039;&#039;Literature Gap&#039;&#039;) ===&lt;br /&gt;
Penelitian mengenai arsitektur sistem informasi pada lembaga keagamaan Islam sebelumnya sebagian besar berfokus pada lembaga pendidikan formal atau pesantren skala besar. Sebagai contoh, Robie Hakim (2013) merancang cetak biru (&#039;&#039;blue print&#039;&#039;) arsitektur &#039;&#039;enterprise&#039;&#039; untuk Yayasan Pondok Pesantren Wahid Hasyim Yogyakarta menggunakan &#039;&#039;Zachman Framework&#039;&#039; [1]. Penelitian tersebut berhasil memodelkan integrasi data dan fungsi organisasi formal [1]. Namun, terdapat batasan teoretis dan praktis dari model tersebut ketika diterapkan pada organisasi akar rumput:&lt;br /&gt;
* &#039;&#039;&#039;Asumsi Struktur Formal vs. Relawan:&#039;&#039;&#039; Penelitian terdahulu mengasumsikan ketersediaan struktur manajemen formal, divisi IT khusus, serta anggaran operasional tetap [1]. Sebaliknya, organisasi ranting NU beroperasi secara nirlaba dengan tenaga kerja relawan (&#039;&#039;volunteers&#039;&#039;).&lt;br /&gt;
* &#039;&#039;&#039;Cetak Biru Statis vs. &#039;&#039;Living Architecture&#039;&#039;:&#039;&#039;&#039; Model arsitektur tradisional menghasilkan dokumen perancangan statis yang berhenti pada pemodelan [1]. Sementara itu, organisasi akar rumput membutuhkan pendekatan yang dinamis, berbiaya rendah (&#039;&#039;zero-operational cost&#039;&#039;), dan langsung teruji di lapangan.&lt;br /&gt;
&lt;br /&gt;
Oleh karena itu, kebaruan (&#039;&#039;novelty&#039;&#039;) penelitian ini terletak pada formulasi &#039;&#039;&#039;&amp;quot;Living Community Enterprise Architecture&amp;quot;&#039;&#039;&#039; melalui pendekatan &#039;&#039;Action Research&#039;&#039;, yang mentransformasi pencatatan keuangan terisolasi menjadi portal &#039;&#039;Open Ledger&#039;&#039; publik terintegrasi pada situs &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 1.3 Pertanyaan Penelitian (&#039;&#039;Research Questions&#039;&#039;) ===&lt;br /&gt;
# Bagaimana merancang arsitektur sistem informasi yang adaptif untuk menghentikan ketergantungan pada &#039;&#039;spreadsheet&#039;&#039; personal dan figur tunggal di PRNU Pelem Kertosono?&lt;br /&gt;
# Sejauh mana implementasi modul &#039;&#039;Open Ledger&#039;&#039; ZIS pada portal &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; mampu meningkatkan akuntabilitas, keterlibatan kader muda, dan kemandirian finansial ranting?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== BAB II: METODOLOGI PENELITIAN ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1 Kerangka Kerja &#039;&#039;Action Research&#039;&#039; (AR) ===&lt;br /&gt;
Penelitian ini menggunakan metodologi &#039;&#039;Action Research&#039;&#039; (AR) karena peneliti terlibat langsung sebagai pengembang dan pengurus dalam proses transformasi organisasi. Penelitian dilaksanakan melalui 5 siklus berulang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”     â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”     â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”&lt;br /&gt;
â”‚ 1. Diagnosing   â”‚ â”€â”€â–º â”‚ 2. Action Planning  â”‚ â”€â”€â–º â”‚ 3. Action Taking  â”‚&lt;br /&gt;
â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜     â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜     â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
         â–²                                                    â”‚&lt;br /&gt;
         â”‚             â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”            â”‚&lt;br /&gt;
         â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ â”‚ 5. Specifying Learning  â”‚ â—„â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
                       â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
                                    â–²&lt;br /&gt;
                                    â”‚&lt;br /&gt;
                       â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”&lt;br /&gt;
                       â”‚      4. Evaluating      â”‚&lt;br /&gt;
                       â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Diagnosing (Diagnosis):&#039;&#039;&#039; Mengidentifikasi kelemahan tata kelola &#039;&#039;spreadsheet&#039;&#039; personal dan pola kerja terisolasi di PRNU Pelem.&lt;br /&gt;
# &#039;&#039;&#039;Action Planning (Perencanaan Tindakan):&#039;&#039;&#039; Merancang arsitektur modul &#039;&#039;Open Ledger&#039;&#039; ZIS, mekanisme pembagian hak akses (&#039;&#039;Multi-User Access Control&#039;&#039;), dan alur kaderisasi teknis bagi Banom (IPNU/IPPNU/Ansor).&lt;br /&gt;
# &#039;&#039;&#039;Action Taking (Pelaksanaan Tindakan):&#039;&#039;&#039; Memindahkan data &#039;&#039;spreadsheet&#039;&#039; ke basis data terstruktur web, mengintegrasikan dashboard transparansi di &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt;, dan melatih kader muda sebagai operator.&lt;br /&gt;
# &#039;&#039;&#039;Evaluating (Evaluasi):&#039;&#039;&#039; Mengukur respon jemaah, kelancaran penginputan kas, serta tingkat kemudahan akses publik.&lt;br /&gt;
# &#039;&#039;&#039;Specifying Learning (Penetapan Pembelajaran):&#039;&#039;&#039; Merumuskan prinsip-prinsip tata kelola teknologi informasi berkelanjutan bagi organisasi ranting.&lt;br /&gt;
&lt;br /&gt;
=== 2.2 Subjek &amp;amp; Lokasi Penelitian ===&lt;br /&gt;
Penelitian dilaksanakan pada Pengurus Ranting Nahdlatul Ulama (PRNU) Desa Pelem, Kecamatan Kertosono, Kabupaten Nganjuk, Jawa Timur. Data historis mencakup operasional portal &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; kurun waktu 2022â€“2026 serta catatan transaksi kas Koin NU/ZIS.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== BAB III: HASIL DAN PEMBAHASAN ==&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Arsitektur &#039;&#039;Open Ledger&#039;&#039; pada &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; ===&lt;br /&gt;
Untuk mengatasi fenomena &#039;&#039;siloed data&#039;&#039;, arsitektur portal &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; dikembangkan dengan prinsip &#039;&#039;API-First&#039;&#039; dan &#039;&#039;Modular Architecture&#039;&#039;. Pencatatan &#039;&#039;spreadsheet&#039;&#039; personal ditransformasikan menjadi basis data terpusat dengan tiga tingkatan antarmuka:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Front-End Publik (Dashboard Transparansi):&#039;&#039;&#039; Menampilkan grafik rekapitulasi penerimaan dan penyaluran Koin NU/ZISWAF secara &#039;&#039;real-time&#039;&#039;, saldo kas ranting, serta peta distribusi bantuan bagi mustahiq di Desa Pelem (tanpa menampilkan data sensitif pribadi penerima).&lt;br /&gt;
# &#039;&#039;&#039;Back-End Pengelola (Modul Input Transaksi):&#039;&#039;&#039; Antarmuka sederhana yang dirancang agar dapat diakses melalui perangkat &#039;&#039;smartphone&#039;&#039; oleh bendahara atau operator Banom saat melakukan pengumpulan infak di lapangan.&lt;br /&gt;
# &#039;&#039;&#039;Audit Trail Syuriah:&#039;&#039;&#039; Panel khusus bagi Majelis Syuriah (Kiai/Pimpinan) untuk meninjau, memverifikasi, dan mengesahkan laporan keuangan secara berkala.&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Pembagian Peran dan Kaderisasi Teknis (&#039;&#039;Socio-Technical Governance&#039;&#039;) ===&lt;br /&gt;
Mengatasi masalah &#039;&#039;single point of failure&#039;&#039; dilakukan melalui restrukturisasi peran pengelola sistem berdasarkan kelompok pengguna (&#039;&#039;User Role Assignment&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Peran Organisasi !! Hak Akses Sistem !! Responsibilitas Utama&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Majelis Syuriah&#039;&#039;&#039; || &#039;&#039;Auditor Access&#039;&#039; || Meninjau validitas kas &amp;amp; memberikan legitimasi syar&#039;i&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Tanfidziyah / Bendahara&#039;&#039;&#039; || &#039;&#039;Approver / Finance Manager&#039;&#039; || Mengawasi alur keluar-masuk dana ZIS &amp;amp; Koin NU&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Kader IPNU / IPPNU / Ansor&#039;&#039;&#039; || &#039;&#039;Technical Operator &amp;amp; Content Creator&#039;&#039; || Penginputan data harian, pemeliharaan web, &amp;amp; media&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Warga / Jemaah Pelem&#039;&#039;&#039; || &#039;&#039;Public Access&#039;&#039; || Memantau laporan kas terbuka &amp;amp; mengajukan aspirasi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Melalui pembagian peran ini, pengelolaan teknis tidak lagi bertumpu pada satu individu, melainkan didistribusikan ke kader muda IPNU/IPPNU dan Ansor sebagai bentuk &#039;&#039;Project-Based Learning&#039;&#039; dan pembinaan kapasitas (&#039;&#039;capacity building&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Evaluasi Dampak dan Kebijakan Keberlanjutan ===&lt;br /&gt;
Hasil pengujian menunjukkan perubahan signifikan sebelum dan sesudah intervensi &#039;&#039;Action Research&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Transparansi &amp;amp; Akuntabilitas:&#039;&#039;&#039; Publikasi laporan kas secara terbuka melalui &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; menghilangkan prasangka sosial dan meningkatkan rasa percaya jemaah terhadap pengelola Koin NU.&lt;br /&gt;
* &#039;&#039;&#039;Efisiensi Operasional:&#039;&#039;&#039; Proses pencatatan keuangan yang dulunya memakan waktu lama dalam berkas &#039;&#039;spreadsheet&#039;&#039; personal kini dapat diinput secara instan dan langsung terakumulasi dalam sistem.&lt;br /&gt;
* &#039;&#039;&#039;Ketahanan Organisasi:&#039;&#039;&#039; Terbentuknya tim pengelola dari unsur Banom menjamin sistem tetap berjalan meskipun terjadi pergantian struktur kepengurusan harian PRNU Pelem.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== BAB IV: KESIMPULAN DAN REKOMENDASI ==&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Kesimpulan ===&lt;br /&gt;
Penelitian ini berhasil membuktikan bahwa keterbatasan tata kelola digital di tingkat ranting dapat diatasi melalui pendekatan &#039;&#039;Action Research&#039;&#039;. Transformasi dari &#039;&#039;spreadsheet&#039;&#039; personal terisolasi menjadi portal &#039;&#039;Open Ledger&#039;&#039; terintegrasi pada &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; secara efektif menghilangkan risiko &#039;&#039;single point of failure&#039;&#039;, meningkatkan akuntabilitas keuangan sosial, dan memperkuat kaderisasi organisasi berbasis kader muda.&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Empat Pilar Keberlanjutan (&#039;&#039;Sustainability Pillars&#039;&#039;) ===&lt;br /&gt;
Agar hasil riset ini terus memberi manfaat jangka panjang bagi PRNU Pelem, dirumuskan empat pilar keberlanjutan:&lt;br /&gt;
# &#039;&#039;&#039;Pilar Teknis:&#039;&#039;&#039; Penerapan arsitektur modular berbiaya rendah (&#039;&#039;zero-operational cost&#039;&#039;) berbasis platform &#039;&#039;cloud&#039;&#039; ramah organisasi nirlaba.&lt;br /&gt;
# &#039;&#039;&#039;Pilar SDM:&#039;&#039;&#039; Pelembagaan tugas pengelolaan teknis ke dalam program kerja rutin GP Ansor dan IPNU/IPPNU Pelem.&lt;br /&gt;
# &#039;&#039;&#039;Pilar Kelembagaan:&#039;&#039;&#039; Penetapan Standar Operasional Prosedur (SOP) tata kelola data yang disahkan oleh Majelis Syuriah.&lt;br /&gt;
# &#039;&#039;&#039;Pilar Finansial:&#039;&#039;&#039; Kenaikan akuntabilitas ZISWAF yang memicu peningkatan perolehan infak warta untuk membiayai kemandirian organisasi.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== DAFTAR PUSTAKA / REFERENCES ==&lt;br /&gt;
&lt;br /&gt;
# Hakim, R. (2013). &#039;&#039;Perancangan Blue Print Pengembangan Sistem Informasi Pesantren Menggunakan Zachman Framework (Studi Kasus Pondok Pesantren Wahid Hasyim Yogyakarta)&#039;&#039;. Skripsi, Program Studi Teknik Informatika, Fakultas Sains dan Teknologi, UIN Sunan Kalijaga Yogyakarta.&lt;br /&gt;
# Avison, D., Lau, F., Myers, M., &amp;amp; Nielsen, P. A. (1999). Action research. &#039;&#039;Communications of the ACM&#039;&#039;, 42(1), 94-97.&lt;br /&gt;
# Gregor, S., &amp;amp; Hevner, A. R. (2013). Positioning and presenting design science research for maximum impact. &#039;&#039;MIS Quarterly&#039;&#039;, 37(2), 337-355.&lt;br /&gt;
# Zachman, J. A. (2008). John Zachman&#039;s Concise Definition of The Zachman Framework. &#039;&#039;Zachman International&#039;&#039;.&lt;br /&gt;
# Undershaf, M., &amp;amp; Suroso, A. (2021). Digitalization of faith-based civil society organizations: Challenges and opportunities in rural Indonesia. &#039;&#039;Journal of Information Systems and Social Change&#039;&#039;, 8(2), 112-128.&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Draft_1_Riset_Ranting&amp;diff=2429</id>
		<title>Draft 1 Riset Ranting</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Draft_1_Riset_Ranting&amp;diff=2429"/>
		<updated>2026-09-23T08:10:33Z</updated>

		<summary type="html">&lt;p&gt;Robie: ←Membuat halaman berisi &amp;#039;# Draf Pertama Paper Penelitian Scientific  **Judul Penelitian:**   Transformasi Tata Kelola Keuangan Sosial dan Digitalisasi Layanan Organisasi Kemasyarakatan Akar Rumput Melalui *Action Research*: Studi Kasus PRNU Pelem Kertosono  **Penulis:** Redaksi &amp;amp; Tim Pengembang Digitalisasi PRNU Pelem   **Afiliasi:** Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kecamatan Kertosono, Kabupaten Nganjuk, Jawa Timur, Indonesia    ---  ## INTISARI / ABSTRAK  Organisasi kemas...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Draf Pertama Paper Penelitian Scientific&lt;br /&gt;
&lt;br /&gt;
**Judul Penelitian:**  &lt;br /&gt;
Transformasi Tata Kelola Keuangan Sosial dan Digitalisasi Layanan Organisasi Kemasyarakatan Akar Rumput Melalui *Action Research*: Studi Kasus PRNU Pelem Kertosono&lt;br /&gt;
&lt;br /&gt;
**Penulis:** Redaksi &amp;amp; Tim Pengembang Digitalisasi PRNU Pelem  &lt;br /&gt;
**Afiliasi:** Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kecamatan Kertosono, Kabupaten Nganjuk, Jawa Timur, Indonesia  &lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## INTISARI / ABSTRAK&lt;br /&gt;
&lt;br /&gt;
Organisasi kemasyarakatan keagamaan berbasis akar rumput (*grassroots faith-based civil society organizations*) di tingkat desa memegang peranan krusial dalam pembangunan sosial dan keuangan mikro-filantropi. Namun, tata kelola digital pada organisasi tingkat ranting kerap menghadapi kendala struktural, yaitu ketergantungan pada figur tunggal pengembang (*single point of failure*) dan pencatatan keuangan ZISWAF/Koin NU yang masih disimpan secara terisolasi dalam format *spreadsheet* personal. Kondisi ini membatasi transparansi publik dan membahayakan keberlanjutan organisasi saat terjadi regenerasi kepengurusan. Penelitian ini bertujuan untuk merancang, mengimplementasikan, dan menguji model *Living Community Enterprise Architecture* dengan mentransformasi pencatatan *spreadsheet* terisolasi menjadi portal *Open Ledger* keuangan sosial terintegrasi pada situs resmi `rantingnupelem.or.id`. &lt;br /&gt;
&lt;br /&gt;
Metodologi yang digunakan adalah *Action Research* (AR) yang mencakup lima siklus interaktif: *Diagnosing, Action Planning, Action Taking, Evaluating,* dan *Specifying Learning*. Hasil penelitian menunjukkan bahwa integrasi modul *Open Ledger* berbasis multi-aksesâ€”yang melibatkan Majelis Syuriah sebagai auditor, Tanfidziyah sebagai pengawas, dan kader muda Banom (IPNU/IPPNU/Ansor) sebagai operator teknisâ€”berhasil menghilangkan ketergantungan pada figur tunggal, meningkatkan transparansi kas organisasi secara *real-time*, serta mendorong partisipasi dan kepercayaan jemaah. Penelitian ini memberikan kontribusi berupa model tata kelola teknologi informasi yang adaptif, murah, dan berkelanjutan bagi organisasi keagamaan tingkat ranting di Indonesia.&lt;br /&gt;
&lt;br /&gt;
**Kata Kunci:** *Action Research, Community Enterprise Architecture, Open Ledger, Keuangan Sosial, PRNU Pelem, Transparansi Finansial.*&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## BAB I: PENDAHULUAN&lt;br /&gt;
&lt;br /&gt;
### 1.1 Latar Belakang Masalah&lt;br /&gt;
Di tingkat perdesaan Indonesia, Pengurus Ranting Nahdlatul Ulama (PRNU) merupakan salah satu pilar utama organisasi sosial-keagamaan yang mengelola berbagai program keumatan, mulai dari pengajian, pelayanan sosial, hingga pengumpulan dana sosial Islam melalui Zakat, Infak, Sedekah, dan Wakaf (ZISWAF) serta gerakan Koin NU. Pengelolaan dana masyarakat dalam skala mikro ini membutuhkan tingkat akuntabilitas dan transparansi yang tinggi guna merawat kepercayaan publik (*public trust*).&lt;br /&gt;
&lt;br /&gt;
Sejak tahun 2022 hingga 2026, PRNU Pelem yang berkedudukan di Kecamatan Kertosono, Kabupaten Nganjuk, telah merintis digitalisasi layanan melalui pengoperasian situs web resmi `rantingnupelem.or.id`. Namun, dalam praktiknya, terdapat dua permasalahan mendasar (*field problems*) yang menghambat efektivitas dan keberlanjutan organisasi:&lt;br /&gt;
1. **Risiko Figur Tunggal (*Single Point of Failure*):** Pengelolaan teknologi informasi dan produksi konten sangat bergantung pada satu individu pengembang. Ketika pengelola utama berhalangan atau terjadi regenerasi kepengurusan, portal digital terancam menjadi pasif dan tidak berkelanjutan.&lt;br /&gt;
2. **Pencatatan Keuangan Terisolasi (*Siloed Financial Records*):** Data transaksi Koin NU dan ZISWAF selama bertahun-tahun disimpan dalam berkas *spreadsheet* personal pengurus. Model ini rentan terhadap kehilangan data, tidak memiliki jalur audit bersama, serta membatasi akses warga/jemaah untuk mengetahui pertanggungjawaban kas ranting secara terbuka.&lt;br /&gt;
&lt;br /&gt;
### 1.2 Kebaruan Penelitian &amp;amp; Perbandingan Literatur (*Literature Gap*)&lt;br /&gt;
Penelitian mengenai arsitektur sistem informasi pada lembaga keagamaan Islam sebelumnya sebagian besar berfokus pada lembaga pendidikan formal atau pesantren skala besar. Sebagai contoh, Robie Hakim (2013) merancang cetak biru (*blue print*) arsitektur *enterprise* untuk Yayasan Pondok Pesantren Wahid Hasyim Yogyakarta menggunakan *Zachman Framework* [1]. Penelitian tersebut berhasil memodelkan integrasi data dan fungsi organisasi formal [1]. Namun, terdapat batasan teoretis dan praktis dari model tersebut ketika diterapkan pada organisasi akar rumput:&lt;br /&gt;
* **Asumsi Struktur Formal vs. Relawan:** Penelitian terdahulu mengasumsikan ketersediaan struktur manajemen formal, divisi IT khusus, serta anggaran operasional tetap [1]. Sebaliknya, organisasi ranting NU beroperasi secara nirlaba dengan tenaga kerja relawan (*volunteers*).&lt;br /&gt;
* **Cetak Biru Statis vs. *Living Architecture*:** Model arsitektur tradisional menghasilkan dokumen perancangan statis yang berhenti pada pemodelan [1]. Sementara itu, organisasi akar rumput membutuhkan pendekatan yang dinamis, berbiaya rendah (*zero-operational cost*), dan langsung teruji di lapangan.&lt;br /&gt;
&lt;br /&gt;
Oleh karena itu, kebaruan (*novelty*) penelitian ini terletak pada formulasi **&amp;quot;Living Community Enterprise Architecture&amp;quot;** melalui pendekatan *Action Research*, yang mentransformasi pencatatan keuangan terisolasi menjadi portal *Open Ledger* publik terintegrasi pada situs `rantingnupelem.or.id`.&lt;br /&gt;
&lt;br /&gt;
### 1.3 Pertanyaan Penelitian (*Research Questions*)&lt;br /&gt;
1. Bagaimana merancang arsitektur sistem informasi yang adaptif untuk menghentikan ketergantungan pada *spreadsheet* personal dan figur tunggal di PRNU Pelem Kertosono?&lt;br /&gt;
2. Sejauh mana implementasi modul *Open Ledger* ZIS pada portal `rantingnupelem.or.id` mampu meningkatkan akuntabilitas, keterlibatan kader muda, dan kemandirian finansial ranting?&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## BAB II: METODOLOGI PENELITIAN&lt;br /&gt;
&lt;br /&gt;
### 2.1 Kerangka Kerja *Action Research* (AR)&lt;br /&gt;
Penelitian ini menggunakan metodologi *Action Research* (AR) karena peneliti terlibat langsung sebagai pengembang dan pengurus dalam proses transformasi organisasi. Penelitian dilaksanakan melalui 5 siklus berulang:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”     â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”     â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”&lt;br /&gt;
â”‚ 1. Diagnosing   â”‚ â”€â”€â–º â”‚ 2. Action Planning  â”‚ â”€â”€â–º â”‚ 3. Action Taking  â”‚&lt;br /&gt;
â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜     â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜     â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
         â–²                                                    â”‚&lt;br /&gt;
         â”‚             â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”            â”‚&lt;br /&gt;
         â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ â”‚ 5. Specifying Learning  â”‚ â—„â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
                       â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
                                    â–²&lt;br /&gt;
                                    â”‚&lt;br /&gt;
                       â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”&lt;br /&gt;
                       â”‚      4. Evaluating      â”‚&lt;br /&gt;
                       â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
1. **Diagnosing (Diagnosis):** Mengidentifikasi kelemahan tata kelola *spreadsheet* personal dan pola kerja terisolasi di PRNU Pelem.&lt;br /&gt;
2. **Action Planning (Perencanaan Tindakan):** Merancang arsitektur modul *Open Ledger* ZIS, mekanisme pembagian hak akses (*Multi-User Access Control*), dan alur kaderisasi teknis bagi Banom (IPNU/IPPNU/Ansor).&lt;br /&gt;
3. **Action Taking (Pelaksanaan Tindakan):** Memindahkan data *spreadsheet* ke basis data terstruktur web, mengintegrasikan dashboard transparansi di `rantingnupelem.or.id`, dan melatih kader muda sebagai operator.&lt;br /&gt;
4. **Evaluating (Evaluasi):** Mengukur respon jemaah, kelancaran penginputan kas, serta tingkat kemudahan akses publik.&lt;br /&gt;
5. **Specifying Learning (Penetapan Pembelajaran):** Merumuskan prinsip-prinsip tata kelola teknologi informasi berkelanjutan bagi organisasi ranting.&lt;br /&gt;
&lt;br /&gt;
### 2.2 Subjek &amp;amp; Lokasi Penelitian&lt;br /&gt;
Penelitian dilaksanakan pada Pengurus Ranting Nahdlatul Ulama (PRNU) Desa Pelem, Kecamatan Kertosono, Kabupaten Nganjuk, Jawa Timur. Data historis mencakup operasional portal `rantingnupelem.or.id` kurun waktu 2022â€“2026 serta catatan transaksi kas Koin NU/ZIS.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## BAB III: HASIL DAN PEMBAHASAN&lt;br /&gt;
&lt;br /&gt;
### 3.1 Arsitektur *Open Ledger* pada `rantingnupelem.or.id`&lt;br /&gt;
Untuk mengatasi fenomena *siloed data*, arsitektur portal `rantingnupelem.or.id` dikembangkan dengan prinsip *API-First* dan *Modular Architecture*. Pencatatan *spreadsheet* personal ditransformasikan menjadi basis data terpusat dengan tiga tingkatan antarmuka:&lt;br /&gt;
&lt;br /&gt;
1. **Front-End Publik (Dashboard Transparansi):** Menampilkan grafik rekapitulasi penerimaan dan penyaluran Koin NU/ZISWAF secara *real-time*, saldo kas ranting, serta peta distribusi bantuan bagi mustahiq di Desa Pelem (tanpa menampilkan data sensitif pribadi penerima).&lt;br /&gt;
2. **Back-End Pengelola (Modul Input Transaksi):** Antarmuka sederhana yang dirancang agar dapat diakses melalui perangkat *smartphone* oleh bendahara atau operator Banom saat melakukan pengumpulan infak di lapangan.&lt;br /&gt;
3. **Audit Trail Syuriah:** Panel khusus bagi Majelis Syuriah (Kiai/Pimpinan) untuk meninjau, memverifikasi, dan mengesahkan laporan keuangan secara berkala.&lt;br /&gt;
&lt;br /&gt;
### 3.2 Pembagian Peran dan Kaderisasi Teknis (*Socio-Technical Governance*)&lt;br /&gt;
Mengatasi masalah *single point of failure* dilakukan melalui restrukturisasi peran pengelola sistem berdasarkan kelompok pengguna (*User Role Assignment*):&lt;br /&gt;
&lt;br /&gt;
| Peran Organisasi | Hak Akses Sistem | Responsibilitas Utama |&lt;br /&gt;
| :--- | :--- | :--- |&lt;br /&gt;
| **Majelis Syuriah** | *Auditor Access* | Meninjau validitas kas &amp;amp; memberikan legitimasi syar&#039;i |&lt;br /&gt;
| **Tanfidziyah / Bendahara** | *Approver / Finance Manager* | Mengawasi alur keluar-masuk dana ZIS &amp;amp; Koin NU |&lt;br /&gt;
| **Kader IPNU / IPPNU / Ansor** | *Technical Operator &amp;amp; Content Creator* | Penginputan data harian, pemeliharaan web, &amp;amp; media |&lt;br /&gt;
| **Warga / Jemaah Pelem** | *Public Access* | Memantau laporan kas terbuka &amp;amp; mengajukan aspirasi |&lt;br /&gt;
&lt;br /&gt;
Melalui pembagian peran ini, pengelolaan teknis tidak lagi bertumpu pada satu individu, melainkan didistribusikan ke kader muda IPNU/IPPNU dan Ansor sebagai bentuk *Project-Based Learning* dan pembinaan kapasitas (*capacity building*).&lt;br /&gt;
&lt;br /&gt;
### 3.3 Evaluasi Dampak dan Kebijakan Keberlanjutan&lt;br /&gt;
Hasil pengujian menunjukkan perubahan signifikan sebelum dan sesudah intervensi *Action Research*:&lt;br /&gt;
&lt;br /&gt;
* **Transparansi &amp;amp; Akuntabilitas:** Publikasi laporan kas secara terbuka melalui `rantingnupelem.or.id` menghilangkan prasangka sosial dan meningkatkan rasa percaya jemaah terhadap pengelola Koin NU.&lt;br /&gt;
* **Efisiensi Operasional:** Proses pencatatan keuangan yang dulunya memakan waktu lama dalam berkas *spreadsheet* personal kini dapat diinput secara instan dan langsung terakumulasi dalam sistem.&lt;br /&gt;
* **Ketahanan Organisasi:** Terbentuknya tim pengelola dari unsur Banom menjamin sistem tetap berjalan meskipun terjadi pergantian struktur kepengurusan harian PRNU Pelem.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## BAB IV: KESIMPULAN DAN REKOMENDASI&lt;br /&gt;
&lt;br /&gt;
### 4.1 Kesimpulan&lt;br /&gt;
Penelitian ini berhasil membuktikan bahwa keterbatasan tata kelola digital di tingkat ranting dapat diatasi melalui pendekatan *Action Research*. Transformasi dari *spreadsheet* personal terisolasi menjadi portal *Open Ledger* terintegrasi pada `rantingnupelem.or.id` secara efektif menghilangkan risiko *single point of failure*, meningkatkan akuntabilitas keuangan sosial, dan memperkuat kaderisasi organisasi berbasis kader muda.&lt;br /&gt;
&lt;br /&gt;
### 4.2 Empat Pilar Keberlanjutan (*Sustainability Pillars*)&lt;br /&gt;
Agar hasil riset ini terus memberi manfaat jangka panjang bagi PRNU Pelem, dirumuskan empat pilar keberlanjutan:&lt;br /&gt;
1. **Pilar Teknis:** Penerapan arsitektur modular berbiaya rendah (*zero-operational cost*) berbasis platform *cloud* ramah organisasi nirlaba.&lt;br /&gt;
2. **Pilar SDM:** Pelembagaan tugas pengelolaan teknis ke dalam program kerja rutin GP Ansor dan IPNU/IPPNU Pelem.&lt;br /&gt;
3. **Pilar Kelembagaan:** Penetapan Standar Operasional Prosedur (SOP) tata kelola data yang disahkan oleh Majelis Syuriah.&lt;br /&gt;
4. **Pilar Finansial:** Kenaikan akuntabilitas ZISWAF yang memicu peningkatan perolehan infak warta untuk membiayai kemandirian organisasi.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## DAFTAR PUSTAKA / REFERENCES&lt;br /&gt;
&lt;br /&gt;
1. Hakim, R. (2013). *Perancangan Blue Print Pengembangan Sistem Informasi Pesantren Menggunakan Zachman Framework (Studi Kasus Pondok Pesantren Wahid Hasyim Yogyakarta)*. Skripsi, Program Studi Teknik Informatika, Fakultas Sains dan Teknologi, UIN Sunan Kalijaga Yogyakarta.&lt;br /&gt;
2. Avison, D., Lau, F., Myers, M., &amp;amp; Nielsen, P. A. (1999). Action research. *Communications of the ACM*, 42(1), 94-97.&lt;br /&gt;
3. Gregor, S., &amp;amp; Hevner, A. R. (2013). Positioning and presenting design science research for maximum impact. *MIS Quarterly*, 37(2), 337-355.&lt;br /&gt;
4. Zachman, J. A. (2008). John Zachman&#039;s Concise Definition of The Zachman Framework. *Zachman International*.&lt;br /&gt;
5. Undershaf, M., &amp;amp; Suroso, A. (2021). Digitalization of faith-based civil society organizations: Challenges and opportunities in rural Indonesia. *Journal of Information Systems and Social Change*, 8(2), 112-128.&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Riset_PRNU_Pelem_Kertosono&amp;diff=2428</id>
		<title>Riset PRNU Pelem Kertosono</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Riset_PRNU_Pelem_Kertosono&amp;diff=2428"/>
		<updated>2026-09-23T08:09:54Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Panduan Strategis Roadmap Riset &amp;amp; Implementasi Tata Kelola Digital =&lt;br /&gt;
&#039;&#039;&#039;Studi Kasus: Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kertosono&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📋 1. Konteks &amp;amp; Background ==&lt;br /&gt;
* &#039;&#039;&#039;Objek Organisasi:&#039;&#039;&#039; Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kecamatan Kertosono.&lt;br /&gt;
* &#039;&#039;&#039;Basis Portal Digital:&#039;&#039;&#039; &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; (Dikelola 2022–2026).&lt;br /&gt;
* &#039;&#039;&#039;Pendekatan Metodologi:&#039;&#039;&#039; &#039;&#039;Action Research&#039;&#039; (AR) / &#039;&#039;Design Science Research&#039;&#039; (DSR).&lt;br /&gt;
* &#039;&#039;&#039;Landasan Baseline:&#039;&#039;&#039; Membandingkan Arsitektur Statis (Robie Hakim, 2013) dengan Arsitektur Dinamis Organisasi Akar Rumput (&#039;&#039;Living Grassroots Enterprise Architecture&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ⚠️ 2. Permasalahan Utama (&#039;&#039;Research Gap &amp;amp; Field Problem&#039;&#039;) ==&lt;br /&gt;
# &#039;&#039;&#039;Single Point of Failure (Ketergantungan Figur):&#039;&#039;&#039; Pengelolaan sistem dan konten digital berpusat pada satu individu, berisiko lumpuh saat terjadi pergantian kepengurusan.&lt;br /&gt;
# &#039;&#039;&#039;Pencatatan Finansial Terisolasi:&#039;&#039;&#039; Transaksi Koin NU dan ZISWAF disimpan dalam &#039;&#039;spreadsheet&#039;&#039; personal pengurus, membatasi transparansi publik dan akuntabilitas sosial.&lt;br /&gt;
# &#039;&#039;&#039;Portal Web Pasif:&#039;&#039;&#039; Website hanya berfungsi sebagai portal berita/konten, belum terintegrasi dengan alur kerja operasional keorganisasian dan pelayanan jemaah.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🎯 3. Target Hasil (&#039;&#039;Expected Outputs&#039;&#039;) ==&lt;br /&gt;
* &#039;&#039;&#039;Luaran Akademis:&#039;&#039;&#039; Paper ilmiah bereputasi terindeks &#039;&#039;&#039;SINTA 2/3&#039;&#039;&#039; atau &#039;&#039;&#039;Scopus&#039;&#039;&#039; (Bidang &#039;&#039;Information Systems / IT for Development&#039;&#039;).&lt;br /&gt;
* &#039;&#039;&#039;Luaran Keorganisasian:&#039;&#039;&#039; Sistem &#039;&#039;Open Ledger&#039;&#039; ZIS &amp;amp; Portal Keorganisasian Terintegrasi di &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; dengan skema tata kelola keberlanjutan (&#039;&#039;sustainable governance&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🗺️ 4. Roadmap Pelaksanaan 5 Fase (Awal sampai Finish) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Fase 1: Persiapan &amp;amp; Target] ──► [Fase 2: Data &amp;amp; Literatur] ──► [Fase 3: Artefak &amp;amp; Siklus AR]&lt;br /&gt;
                                                                        │&lt;br /&gt;
[Fase 5: Submission &amp;amp; Review] ◄── [Fase 4: Penulisan IMRaD] ────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fase 1: Persiapan &amp;amp; Penetapan Target (Minggu 1–2) ===&lt;br /&gt;
* [ ] Menentukan target jurnal publikasi (SINTA 2/3 seperti &#039;&#039;Jurnal Sistem Informasi Bisnis&#039;&#039; atau Scopus &#039;&#039;IT in Developing Countries&#039;&#039;).&lt;br /&gt;
* [ ] Merumuskan pertanyaan penelitian (&#039;&#039;Research Questions&#039;&#039;):&lt;br /&gt;
#* &#039;&#039;Bagaimana merancang arsitektur sistem informasi transparan untuk menghentikan ketergantungan pada spreadsheet personal dan figur tunggal di Ranting NU?&#039;&#039;&lt;br /&gt;
#* &#039;&#039;Sejauh mana implementasi Open Ledger ZIS pada website rantingnupelem.or.id meningkatkan kepercayaan warga dan kemandirian finansial organisasi?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Fase 2: Inventarisasi Data &amp;amp; Studi Literatur (Minggu 3–4) ===&lt;br /&gt;
* [ ] Inventarisasi data historis pengoperasian website &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; (2022–2026).&lt;br /&gt;
* [ ] Merapikan dan meng-anonimkan data struktur &#039;&#039;spreadsheet&#039;&#039; ZIS/Koin NU yang sedang berjalan.&lt;br /&gt;
* [ ] Melakukan kajian literatur (10–15 jurnal bereputasi 2020–2026) terkait &#039;&#039;Community Enterprise Architecture&#039;&#039;, &#039;&#039;Social Accountability&#039;&#039;, dan &#039;&#039;Action Research&#039;&#039; pada CSOs.&lt;br /&gt;
&lt;br /&gt;
=== Fase 3: Pengembangan Artefak &amp;amp; Siklus Action Research (Minggu 5–8) ===&lt;br /&gt;
* [ ] &#039;&#039;&#039;Diagnosing:&#039;&#039;&#039; Memetakan alur kas ZIS dan kebutuhan transparansi publik warga Pelem.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Action Planning:&#039;&#039;&#039; Merancang modul &#039;&#039;Open Ledger&#039;&#039; ZIS dan &#039;&#039;Multi-User Access Control&#039;&#039; di portal &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Action Taking:&#039;&#039;&#039; &lt;br /&gt;
** Memindahkan pencatatan &#039;&#039;spreadsheet&#039;&#039; ke basis data terstruktur web.&lt;br /&gt;
** Membagi peran sistem: Syuriah (&#039;&#039;Auditor&#039;&#039;), Tanfidziyah (&#039;&#039;Pengawas/Bendahara&#039;&#039;), Banom IPNU/Ansor (&#039;&#039;Operator Teknis&#039;&#039;).&lt;br /&gt;
* [ ] &#039;&#039;&#039;Evaluating &amp;amp; Learning:&#039;&#039;&#039; Mengamati tingkat penerimaan pengurus/kiai dan respon jemaah terhadap transparansi laporan keuangan digital.&lt;br /&gt;
&lt;br /&gt;
=== Fase 4: Penulisan Draf Paper / IMRaD Drafting (Minggu 9–12) ===&lt;br /&gt;
* [ ] &#039;&#039;&#039;Introduction:&#039;&#039;&#039; Menyajikan realitas organisasi akar rumput, problem &#039;&#039;spreadsheet&#039;&#039; personal, dan &#039;&#039;research gap&#039;&#039; dari arsitektur terdahulu.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Research Method:&#039;&#039;&#039; Menjelaskan siklus &#039;&#039;Action Research&#039;&#039; dan keterlibatan aktif pengembang di lapangan.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Results &amp;amp; Discussion:&#039;&#039;&#039; Menampilkan diagram arsitektur sistem baru, perbandingan sebelum vs sesudah (2022–2025 vs 2026), serta analisis keberlanjutan.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Conclusion:&#039;&#039;&#039; Merumuskan kontribusi teoretis dan praktis bagi pengembangan organisasi CSOs berbasis keagamaan di Indonesia.&lt;br /&gt;
&lt;br /&gt;
=== Fase 5: Submission &amp;amp; Proses Peer Review (Minggu 13+) ===&lt;br /&gt;
* [ ] Menyesuaikan format draf (&#039;&#039;formatting&#039;&#039;) sesuai &#039;&#039;Author Guidelines&#039;&#039; jurnal target.&lt;br /&gt;
* [ ] Melakukan &#039;&#039;submission&#039;&#039; artikel melalui sistem OJS (&#039;&#039;Open Journal System&#039;&#039;).&lt;br /&gt;
* [ ] Merespon catatan reviewer dan melakukan revisi draf (&#039;&#039;revisions&#039;&#039;) hingga dinyatakan &#039;&#039;Accepted&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🏛️ 5. Pilar Keberlanjutan Organisasi (&#039;&#039;Sustainability Pillars&#039;&#039;) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pilar !! Strategi Implementasi pada PRNU Pelem&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1. Teknis&#039;&#039;&#039; || Arsitektur &#039;&#039;Modular / Microservices&#039;&#039;, &#039;&#039;API-First&#039;&#039;, dan biaya server efisien (&#039;&#039;Zero-Operational Cost&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2. SDM / Kaderisasi&#039;&#039;&#039; || Pengelolaan teknis diserahterimakan kepada kader muda &#039;&#039;&#039;IPNU/IPPNU &amp;amp; Ansor Pelem&#039;&#039;&#039; sebagai media &#039;&#039;Project-Based Learning&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;3. Kelembagaan&#039;&#039;&#039; || Mendapat legitimasi kultural dari &#039;&#039;&#039;Majelis Syuriah (Kiai)&#039;&#039;&#039; dan penetapan SOP tata kelola data terbuka&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;4. Finansial&#039;&#039;&#039; || Transparansi Koin NU meningkatkan &#039;&#039;trust&#039;&#039; jemaah, memicu kenaikan perolehan dana infak untuk kas mandiri ranting&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🚀 6. Action Items Pertama (Mulai Hari Ini) ==&lt;br /&gt;
# &#039;&#039;&#039;Dokumentasikan Struktur Kas:&#039;&#039;&#039; Salin skema kolom/kategori pada &#039;&#039;spreadsheet&#039;&#039; ZIS saat ini sebagai data baseline.&lt;br /&gt;
# &#039;&#039;&#039;Catat Statistik Web:&#039;&#039;&#039; Ekspor data pengakses dan daftar konten &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; kurun waktu 2022–2026.&lt;br /&gt;
# &#039;&#039;&#039;Mulai Susun Bab 1:&#039;&#039;&#039; Tuliskan 3 paragraf latar belakang yang memuat problematika riil pengorganisasian di Desa Pelem.&lt;br /&gt;
[[Kategori:Ranting]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Riset_PRNU_Pelem_Kertosono&amp;diff=2427</id>
		<title>Riset PRNU Pelem Kertosono</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Riset_PRNU_Pelem_Kertosono&amp;diff=2427"/>
		<updated>2026-09-23T07:26:16Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Riset PRNU Pelem Kertosono&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Panduan Strategis Roadmap Riset &amp;amp; Implementasi Tata Kelola Digital =&lt;br /&gt;
&#039;&#039;&#039;Studi Kasus: Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kertosono&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📋 1. Konteks &amp;amp; Background ==&lt;br /&gt;
* &#039;&#039;&#039;Objek Organisasi:&#039;&#039;&#039; Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kecamatan Kertosono.&lt;br /&gt;
* &#039;&#039;&#039;Basis Portal Digital:&#039;&#039;&#039; &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; (Dikelola 2022–2026).&lt;br /&gt;
* &#039;&#039;&#039;Pendekatan Metodologi:&#039;&#039;&#039; &#039;&#039;Action Research&#039;&#039; (AR) / &#039;&#039;Design Science Research&#039;&#039; (DSR).&lt;br /&gt;
* &#039;&#039;&#039;Landasan Baseline:&#039;&#039;&#039; Membandingkan Arsitektur Statis (Robie Hakim, 2013) dengan Arsitektur Dinamis Organisasi Akar Rumput (&#039;&#039;Living Grassroots Enterprise Architecture&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ⚠️ 2. Permasalahan Utama (&#039;&#039;Research Gap &amp;amp; Field Problem&#039;&#039;) ==&lt;br /&gt;
# &#039;&#039;&#039;Single Point of Failure (Ketergantungan Figur):&#039;&#039;&#039; Pengelolaan sistem dan konten digital berpusat pada satu individu, berisiko lumpuh saat terjadi pergantian kepengurusan.&lt;br /&gt;
# &#039;&#039;&#039;Pencatatan Finansial Terisolasi:&#039;&#039;&#039; Transaksi Koin NU dan ZISWAF disimpan dalam &#039;&#039;spreadsheet&#039;&#039; personal pengurus, membatasi transparansi publik dan akuntabilitas sosial.&lt;br /&gt;
# &#039;&#039;&#039;Portal Web Pasif:&#039;&#039;&#039; Website hanya berfungsi sebagai portal berita/konten, belum terintegrasi dengan alur kerja operasional keorganisasian dan pelayanan jemaah.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🎯 3. Target Hasil (&#039;&#039;Expected Outputs&#039;&#039;) ==&lt;br /&gt;
* &#039;&#039;&#039;Luaran Akademis:&#039;&#039;&#039; Paper ilmiah bereputasi terindeks &#039;&#039;&#039;SINTA 2/3&#039;&#039;&#039; atau &#039;&#039;&#039;Scopus&#039;&#039;&#039; (Bidang &#039;&#039;Information Systems / IT for Development&#039;&#039;).&lt;br /&gt;
* &#039;&#039;&#039;Luaran Keorganisasian:&#039;&#039;&#039; Sistem &#039;&#039;Open Ledger&#039;&#039; ZIS &amp;amp; Portal Keorganisasian Terintegrasi di &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; dengan skema tata kelola keberlanjutan (&#039;&#039;sustainable governance&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🗺️ 4. Roadmap Pelaksanaan 5 Fase (Awal sampai Finish) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Fase 1: Persiapan &amp;amp; Target] ──► [Fase 2: Data &amp;amp; Literatur] ──► [Fase 3: Artefak &amp;amp; Siklus AR]&lt;br /&gt;
                                                                        │&lt;br /&gt;
[Fase 5: Submission &amp;amp; Review] ◄── [Fase 4: Penulisan IMRaD] ────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fase 1: Persiapan &amp;amp; Penetapan Target (Minggu 1–2) ===&lt;br /&gt;
* [ ] Menentukan target jurnal publikasi (SINTA 2/3 seperti &#039;&#039;Jurnal Sistem Informasi Bisnis&#039;&#039; atau Scopus &#039;&#039;IT in Developing Countries&#039;&#039;).&lt;br /&gt;
* [ ] Merumuskan pertanyaan penelitian (&#039;&#039;Research Questions&#039;&#039;):&lt;br /&gt;
#* &#039;&#039;Bagaimana merancang arsitektur sistem informasi transparan untuk menghentikan ketergantungan pada spreadsheet personal dan figur tunggal di Ranting NU?&#039;&#039;&lt;br /&gt;
#* &#039;&#039;Sejauh mana implementasi Open Ledger ZIS pada website rantingnupelem.or.id meningkatkan kepercayaan warga dan kemandirian finansial organisasi?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Fase 2: Inventarisasi Data &amp;amp; Studi Literatur (Minggu 3–4) ===&lt;br /&gt;
* [ ] Inventarisasi data historis pengoperasian website &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; (2022–2026).&lt;br /&gt;
* [ ] Merapikan dan meng-anonimkan data struktur &#039;&#039;spreadsheet&#039;&#039; ZIS/Koin NU yang sedang berjalan.&lt;br /&gt;
* [ ] Melakukan kajian literatur (10–15 jurnal bereputasi 2020–2026) terkait &#039;&#039;Community Enterprise Architecture&#039;&#039;, &#039;&#039;Social Accountability&#039;&#039;, dan &#039;&#039;Action Research&#039;&#039; pada CSOs.&lt;br /&gt;
&lt;br /&gt;
=== Fase 3: Pengembangan Artefak &amp;amp; Siklus Action Research (Minggu 5–8) ===&lt;br /&gt;
* [ ] &#039;&#039;&#039;Diagnosing:&#039;&#039;&#039; Memetakan alur kas ZIS dan kebutuhan transparansi publik warga Pelem.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Action Planning:&#039;&#039;&#039; Merancang modul &#039;&#039;Open Ledger&#039;&#039; ZIS dan &#039;&#039;Multi-User Access Control&#039;&#039; di portal &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Action Taking:&#039;&#039;&#039; &lt;br /&gt;
** Memindahkan pencatatan &#039;&#039;spreadsheet&#039;&#039; ke basis data terstruktur web.&lt;br /&gt;
** Membagi peran sistem: Syuriah (&#039;&#039;Auditor&#039;&#039;), Tanfidziyah (&#039;&#039;Pengawas/Bendahara&#039;&#039;), Banom IPNU/Ansor (&#039;&#039;Operator Teknis&#039;&#039;).&lt;br /&gt;
* [ ] &#039;&#039;&#039;Evaluating &amp;amp; Learning:&#039;&#039;&#039; Mengamati tingkat penerimaan pengurus/kiai dan respon jemaah terhadap transparansi laporan keuangan digital.&lt;br /&gt;
&lt;br /&gt;
=== Fase 4: Penulisan Draf Paper / IMRaD Drafting (Minggu 9–12) ===&lt;br /&gt;
* [ ] &#039;&#039;&#039;Introduction:&#039;&#039;&#039; Menyajikan realitas organisasi akar rumput, problem &#039;&#039;spreadsheet&#039;&#039; personal, dan &#039;&#039;research gap&#039;&#039; dari arsitektur terdahulu.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Research Method:&#039;&#039;&#039; Menjelaskan siklus &#039;&#039;Action Research&#039;&#039; dan keterlibatan aktif pengembang di lapangan.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Results &amp;amp; Discussion:&#039;&#039;&#039; Menampilkan diagram arsitektur sistem baru, perbandingan sebelum vs sesudah (2022–2025 vs 2026), serta analisis keberlanjutan.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Conclusion:&#039;&#039;&#039; Merumuskan kontribusi teoretis dan praktis bagi pengembangan organisasi CSOs berbasis keagamaan di Indonesia.&lt;br /&gt;
&lt;br /&gt;
=== Fase 5: Submission &amp;amp; Proses Peer Review (Minggu 13+) ===&lt;br /&gt;
* [ ] Menyesuaikan format draf (&#039;&#039;formatting&#039;&#039;) sesuai &#039;&#039;Author Guidelines&#039;&#039; jurnal target.&lt;br /&gt;
* [ ] Melakukan &#039;&#039;submission&#039;&#039; artikel melalui sistem OJS (&#039;&#039;Open Journal System&#039;&#039;).&lt;br /&gt;
* [ ] Merespon catatan reviewer dan melakukan revisi draf (&#039;&#039;revisions&#039;&#039;) hingga dinyatakan &#039;&#039;Accepted&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🏛️ 5. Pilar Keberlanjutan Organisasi (&#039;&#039;Sustainability Pillars&#039;&#039;) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pilar !! Strategi Implementasi pada PRNU Pelem&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1. Teknis&#039;&#039;&#039; || Arsitektur &#039;&#039;Modular / Microservices&#039;&#039;, &#039;&#039;API-First&#039;&#039;, dan biaya server efisien (&#039;&#039;Zero-Operational Cost&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2. SDM / Kaderisasi&#039;&#039;&#039; || Pengelolaan teknis diserahterimakan kepada kader muda &#039;&#039;&#039;IPNU/IPPNU &amp;amp; Ansor Pelem&#039;&#039;&#039; sebagai media &#039;&#039;Project-Based Learning&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;3. Kelembagaan&#039;&#039;&#039; || Mendapat legitimasi kultural dari &#039;&#039;&#039;Majelis Syuriah (Kiai)&#039;&#039;&#039; dan penetapan SOP tata kelola data terbuka&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;4. Finansial&#039;&#039;&#039; || Transparansi Koin NU meningkatkan &#039;&#039;trust&#039;&#039; jemaah, memicu kenaikan perolehan dana infak untuk kas mandiri ranting&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🚀 6. Action Items Pertama (Mulai Hari Ini) ==&lt;br /&gt;
# &#039;&#039;&#039;Dokumentasikan Struktur Kas:&#039;&#039;&#039; Salin skema kolom/kategori pada &#039;&#039;spreadsheet&#039;&#039; ZIS saat ini sebagai data baseline.&lt;br /&gt;
# &#039;&#039;&#039;Catat Statistik Web:&#039;&#039;&#039; Ekspor data pengakses dan daftar konten &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; kurun waktu 2022–2026.&lt;br /&gt;
# &#039;&#039;&#039;Mulai Susun Bab 1:&#039;&#039;&#039; Tuliskan 3 paragraf latar belakang yang memuat problematika riil pengorganisasian di Desa Pelem.&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Riset_PRNU_Pelem_Kertosono&amp;diff=2426</id>
		<title>Riset PRNU Pelem Kertosono</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Riset_PRNU_Pelem_Kertosono&amp;diff=2426"/>
		<updated>2026-09-23T07:26:08Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Panduan Strategis Roadmap Riset &amp;amp; Implementasi Tata Kelola Digital =&lt;br /&gt;
&#039;&#039;&#039;Studi Kasus: Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kertosono&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 📋 1. Konteks &amp;amp; Background ==&lt;br /&gt;
* &#039;&#039;&#039;Objek Organisasi:&#039;&#039;&#039; Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kecamatan Kertosono.&lt;br /&gt;
* &#039;&#039;&#039;Basis Portal Digital:&#039;&#039;&#039; &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; (Dikelola 2022–2026).&lt;br /&gt;
* &#039;&#039;&#039;Pendekatan Metodologi:&#039;&#039;&#039; &#039;&#039;Action Research&#039;&#039; (AR) / &#039;&#039;Design Science Research&#039;&#039; (DSR).&lt;br /&gt;
* &#039;&#039;&#039;Landasan Baseline:&#039;&#039;&#039; Membandingkan Arsitektur Statis (Robie Hakim, 2013) dengan Arsitektur Dinamis Organisasi Akar Rumput (&#039;&#039;Living Grassroots Enterprise Architecture&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ⚠️ 2. Permasalahan Utama (&#039;&#039;Research Gap &amp;amp; Field Problem&#039;&#039;) ==&lt;br /&gt;
# &#039;&#039;&#039;Single Point of Failure (Ketergantungan Figur):&#039;&#039;&#039; Pengelolaan sistem dan konten digital berpusat pada satu individu, berisiko lumpuh saat terjadi pergantian kepengurusan.&lt;br /&gt;
# &#039;&#039;&#039;Pencatatan Finansial Terisolasi:&#039;&#039;&#039; Transaksi Koin NU dan ZISWAF disimpan dalam &#039;&#039;spreadsheet&#039;&#039; personal pengurus, membatasi transparansi publik dan akuntabilitas sosial.&lt;br /&gt;
# &#039;&#039;&#039;Portal Web Pasif:&#039;&#039;&#039; Website hanya berfungsi sebagai portal berita/konten, belum terintegrasi dengan alur kerja operasional keorganisasian dan pelayanan jemaah.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🎯 3. Target Hasil (&#039;&#039;Expected Outputs&#039;&#039;) ==&lt;br /&gt;
* &#039;&#039;&#039;Luaran Akademis:&#039;&#039;&#039; Paper ilmiah bereputasi terindeks &#039;&#039;&#039;SINTA 2/3&#039;&#039;&#039; atau &#039;&#039;&#039;Scopus&#039;&#039;&#039; (Bidang &#039;&#039;Information Systems / IT for Development&#039;&#039;).&lt;br /&gt;
* &#039;&#039;&#039;Luaran Keorganisasian:&#039;&#039;&#039; Sistem &#039;&#039;Open Ledger&#039;&#039; ZIS &amp;amp; Portal Keorganisasian Terintegrasi di &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; dengan skema tata kelola keberlanjutan (&#039;&#039;sustainable governance&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🗺️ 4. Roadmap Pelaksanaan 5 Fase (Awal sampai Finish) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Fase 1: Persiapan &amp;amp; Target] ──► [Fase 2: Data &amp;amp; Literatur] ──► [Fase 3: Artefak &amp;amp; Siklus AR]&lt;br /&gt;
                                                                        │&lt;br /&gt;
[Fase 5: Submission &amp;amp; Review] ◄── [Fase 4: Penulisan IMRaD] ────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fase 1: Persiapan &amp;amp; Penetapan Target (Minggu 1–2) ===&lt;br /&gt;
* [ ] Menentukan target jurnal publikasi (SINTA 2/3 seperti &#039;&#039;Jurnal Sistem Informasi Bisnis&#039;&#039; atau Scopus &#039;&#039;IT in Developing Countries&#039;&#039;).&lt;br /&gt;
* [ ] Merumuskan pertanyaan penelitian (&#039;&#039;Research Questions&#039;&#039;):&lt;br /&gt;
#* &#039;&#039;Bagaimana merancang arsitektur sistem informasi transparan untuk menghentikan ketergantungan pada spreadsheet personal dan figur tunggal di Ranting NU?&#039;&#039;&lt;br /&gt;
#* &#039;&#039;Sejauh mana implementasi Open Ledger ZIS pada website rantingnupelem.or.id meningkatkan kepercayaan warga dan kemandirian finansial organisasi?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Fase 2: Inventarisasi Data &amp;amp; Studi Literatur (Minggu 3–4) ===&lt;br /&gt;
* [ ] Inventarisasi data historis pengoperasian website &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; (2022–2026).&lt;br /&gt;
* [ ] Merapikan dan meng-anonimkan data struktur &#039;&#039;spreadsheet&#039;&#039; ZIS/Koin NU yang sedang berjalan.&lt;br /&gt;
* [ ] Melakukan kajian literatur (10–15 jurnal bereputasi 2020–2026) terkait &#039;&#039;Community Enterprise Architecture&#039;&#039;, &#039;&#039;Social Accountability&#039;&#039;, dan &#039;&#039;Action Research&#039;&#039; pada CSOs.&lt;br /&gt;
&lt;br /&gt;
=== Fase 3: Pengembangan Artefak &amp;amp; Siklus Action Research (Minggu 5–8) ===&lt;br /&gt;
* [ ] &#039;&#039;&#039;Diagnosing:&#039;&#039;&#039; Memetakan alur kas ZIS dan kebutuhan transparansi publik warga Pelem.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Action Planning:&#039;&#039;&#039; Merancang modul &#039;&#039;Open Ledger&#039;&#039; ZIS dan &#039;&#039;Multi-User Access Control&#039;&#039; di portal &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Action Taking:&#039;&#039;&#039; &lt;br /&gt;
** Memindahkan pencatatan &#039;&#039;spreadsheet&#039;&#039; ke basis data terstruktur web.&lt;br /&gt;
** Membagi peran sistem: Syuriah (&#039;&#039;Auditor&#039;&#039;), Tanfidziyah (&#039;&#039;Pengawas/Bendahara&#039;&#039;), Banom IPNU/Ansor (&#039;&#039;Operator Teknis&#039;&#039;).&lt;br /&gt;
* [ ] &#039;&#039;&#039;Evaluating &amp;amp; Learning:&#039;&#039;&#039; Mengamati tingkat penerimaan pengurus/kiai dan respon jemaah terhadap transparansi laporan keuangan digital.&lt;br /&gt;
&lt;br /&gt;
=== Fase 4: Penulisan Draf Paper / IMRaD Drafting (Minggu 9–12) ===&lt;br /&gt;
* [ ] &#039;&#039;&#039;Introduction:&#039;&#039;&#039; Menyajikan realitas organisasi akar rumput, problem &#039;&#039;spreadsheet&#039;&#039; personal, dan &#039;&#039;research gap&#039;&#039; dari arsitektur terdahulu.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Research Method:&#039;&#039;&#039; Menjelaskan siklus &#039;&#039;Action Research&#039;&#039; dan keterlibatan aktif pengembang di lapangan.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Results &amp;amp; Discussion:&#039;&#039;&#039; Menampilkan diagram arsitektur sistem baru, perbandingan sebelum vs sesudah (2022–2025 vs 2026), serta analisis keberlanjutan.&lt;br /&gt;
* [ ] &#039;&#039;&#039;Conclusion:&#039;&#039;&#039; Merumuskan kontribusi teoretis dan praktis bagi pengembangan organisasi CSOs berbasis keagamaan di Indonesia.&lt;br /&gt;
&lt;br /&gt;
=== Fase 5: Submission &amp;amp; Proses Peer Review (Minggu 13+) ===&lt;br /&gt;
* [ ] Menyesuaikan format draf (&#039;&#039;formatting&#039;&#039;) sesuai &#039;&#039;Author Guidelines&#039;&#039; jurnal target.&lt;br /&gt;
* [ ] Melakukan &#039;&#039;submission&#039;&#039; artikel melalui sistem OJS (&#039;&#039;Open Journal System&#039;&#039;).&lt;br /&gt;
* [ ] Merespon catatan reviewer dan melakukan revisi draf (&#039;&#039;revisions&#039;&#039;) hingga dinyatakan &#039;&#039;Accepted&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🏛️ 5. Pilar Keberlanjutan Organisasi (&#039;&#039;Sustainability Pillars&#039;&#039;) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pilar !! Strategi Implementasi pada PRNU Pelem&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1. Teknis&#039;&#039;&#039; || Arsitektur &#039;&#039;Modular / Microservices&#039;&#039;, &#039;&#039;API-First&#039;&#039;, dan biaya server efisien (&#039;&#039;Zero-Operational Cost&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;2. SDM / Kaderisasi&#039;&#039;&#039; || Pengelolaan teknis diserahterimakan kepada kader muda &#039;&#039;&#039;IPNU/IPPNU &amp;amp; Ansor Pelem&#039;&#039;&#039; sebagai media &#039;&#039;Project-Based Learning&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;3. Kelembagaan&#039;&#039;&#039; || Mendapat legitimasi kultural dari &#039;&#039;&#039;Majelis Syuriah (Kiai)&#039;&#039;&#039; dan penetapan SOP tata kelola data terbuka&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;4. Finansial&#039;&#039;&#039; || Transparansi Koin NU meningkatkan &#039;&#039;trust&#039;&#039; jemaah, memicu kenaikan perolehan dana infak untuk kas mandiri ranting&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 🚀 6. Action Items Pertama (Mulai Hari Ini) ==&lt;br /&gt;
# &#039;&#039;&#039;Dokumentasikan Struktur Kas:&#039;&#039;&#039; Salin skema kolom/kategori pada &#039;&#039;spreadsheet&#039;&#039; ZIS saat ini sebagai data baseline.&lt;br /&gt;
# &#039;&#039;&#039;Catat Statistik Web:&#039;&#039;&#039; Ekspor data pengakses dan daftar konten &amp;lt;nowiki&amp;gt;rantingnupelem.or.id&amp;lt;/nowiki&amp;gt; kurun waktu 2022–2026.&lt;br /&gt;
# &#039;&#039;&#039;Mulai Susun Bab 1:&#039;&#039;&#039; Tuliskan 3 paragraf latar belakang yang memuat problematika riil pengorganisasian di Desa Pelem.&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Riset_PRNU_Pelem_Kertosono&amp;diff=2425</id>
		<title>Riset PRNU Pelem Kertosono</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Riset_PRNU_Pelem_Kertosono&amp;diff=2425"/>
		<updated>2026-09-23T07:24:42Z</updated>

		<summary type="html">&lt;p&gt;Robie: ←Membuat halaman berisi &amp;#039;# Panduan Strategis Roadmap Riset &amp;amp; Implementasi Tata Kelola Digital ## Studi Kasus: Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kertosono  ---  ## 📋 1. Konteks &amp;amp; Background * **Objek Organisasi:** Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kecamatan Kertosono. * **Basis Portal Digital:** `rantingnupelem.or.id` (Dikelola 2022–2026). * **Pendekatan Metodologi:** *Action Research* (AR) / *Design Science Research* (DSR). * **Landasan Baseline:** Membandi...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Panduan Strategis Roadmap Riset &amp;amp; Implementasi Tata Kelola Digital&lt;br /&gt;
## Studi Kasus: Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kertosono&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## 📋 1. Konteks &amp;amp; Background&lt;br /&gt;
* **Objek Organisasi:** Pengurus Ranting Nahdlatul Ulama (PRNU) Pelem, Kecamatan Kertosono.&lt;br /&gt;
* **Basis Portal Digital:** `rantingnupelem.or.id` (Dikelola 2022–2026).&lt;br /&gt;
* **Pendekatan Metodologi:** *Action Research* (AR) / *Design Science Research* (DSR).&lt;br /&gt;
* **Landasan Baseline:** Membandingkan Arsitektur Statis (Robie Hakim, 2013) dengan Arsitektur Dinamis Organisasi Akar Rumput (*Living Grassroots Enterprise Architecture*).&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## ⚠️ 2. Permasalahan Utama (*Research Gap &amp;amp; Field Problem*)&lt;br /&gt;
1. **Single Point of Failure (Ketergantungan Figur):** Pengelolaan sistem dan konten digital berpusat pada satu individu, berisiko lumpuh saat terjadi pergantian kepengurusan.&lt;br /&gt;
2. **Pencatatan Finansial Terisolasi:** Transaksi Koin NU dan ZISWAF disimpan dalam *spreadsheet* personal pengurus, membatasi transparansi publik dan akuntabilitas sosial.&lt;br /&gt;
3. **Portal Web Pasif:** Website hanya berfungsi sebagai portal berita/konten, belum terintegrasi dengan alur kerja operasional keorganisasian dan pelayanan jemaah.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## 🎯 3. Target Hasil (*Expected Outputs*)&lt;br /&gt;
* **Luaran Akademis:** Paper ilmiah bereputasi terindeks **SINTA 2/3** atau **Scopus** (Bidang *Information Systems / IT for Development*).&lt;br /&gt;
* **Luaran Keorganisasian:** Sistem *Open Ledger* ZIS &amp;amp; Portal Keorganisasian Terintegrasi di `rantingnupelem.or.id` dengan skema tata kelola keberlanjutan (*sustainable governance*).&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## 🗺️ 4. Roadmap Pelaksanaan 5 Fase (Awal sampai Finish)&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
[Fase 1: Persiapan &amp;amp; Target] ──► [Fase 2: Data &amp;amp; Literatur] ──► [Fase 3: Artefak &amp;amp; Siklus AR]&lt;br /&gt;
                                                                        │&lt;br /&gt;
[Fase 5: Submission &amp;amp; Review] ◄── [Fase 4: Penulisan IMRaD] ────────────┘&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
### **Fase 1: Persiapan &amp;amp; Penetapan Target (Minggu 1–2)**&lt;br /&gt;
* [ ] Menentukan target jurnal publikasi (SINTA 2/3 seperti *Jurnal Sistem Informasi Bisnis* atau Scopus *IT in Developing Countries*).&lt;br /&gt;
* [ ] Merumuskan pertanyaan penelitian (*Research Questions*):&lt;br /&gt;
  1. *Bagaimana merancang arsitektur sistem informasi transparan untuk menghentikan ketergantungan pada spreadsheet personal dan figur tunggal di Ranting NU?*&lt;br /&gt;
  2. *Sejauh mana implementasi Open Ledger ZIS pada website rantingnupelem.or.id meningkatkan kepercayaan warga dan kemandirian finansial organisasi?*&lt;br /&gt;
&lt;br /&gt;
### **Fase 2: Inventarisasi Data &amp;amp; Studi Literatur (Minggu 3–4)**&lt;br /&gt;
* [ ] Inventarisasi data historis pengoperasian website `rantingnupelem.or.id` (2022–2026).&lt;br /&gt;
* [ ] Merapikan dan meng-anonimkan data struktur *spreadsheet* ZIS/Koin NU yang sedang berjalan.&lt;br /&gt;
* [ ] Melakukan kajian literatur (10–15 jurnal bereputasi 2020–2026) terkait *Community Enterprise Architecture*, *Social Accountability*, dan *Action Research* pada CSOs.&lt;br /&gt;
&lt;br /&gt;
### **Fase 3: Pengembangan Artefak &amp;amp; Siklus Action Research (Minggu 5–8)**&lt;br /&gt;
* [ ] **Diagnosing:** Memetakan alur kas ZIS dan kebutuhan transparansi publik warga Pelem.&lt;br /&gt;
* [ ] **Action Planning:** Merancang modul *Open Ledger* ZIS dan *Multi-User Access Control* di portal `rantingnupelem.or.id`.&lt;br /&gt;
* [ ] **Action Taking:** &lt;br /&gt;
  * Memindahkan pencatatan *spreadsheet* ke basis data terstruktur web.&lt;br /&gt;
  * Membagi peran sistem: Syuriah (*Auditor*), Tanfidziyah (*Pengawas/Bendahara*), Banom IPNU/Ansor (*Operator Teknis*).&lt;br /&gt;
* [ ] **Evaluating &amp;amp; Learning:** Mengamati tingkat penerimaan pengurus/kiai dan respon jemaah terhadap transparansi laporan keuangan digital.&lt;br /&gt;
&lt;br /&gt;
### **Fase 4: Penulisan Draf Paper / IMRaD Drafting (Minggu 9–12)**&lt;br /&gt;
* [ ] **Introduction:** Menyajikan realitas organisasi akar rumput, problem *spreadsheet* personal, dan *research gap* dari arsitektur terdahulu.&lt;br /&gt;
* [ ] **Research Method:** Menjelaskan siklus *Action Research* dan keterlibatan aktif pengembang di lapangan.&lt;br /&gt;
* [ ] **Results &amp;amp; Discussion:** Menampilkan diagram arsitektur sistem baru, perbandingan sebelum vs sesudah (2022–2025 vs 2026), serta analisis keberlanjutan.&lt;br /&gt;
* [ ] **Conclusion:** Merumuskan kontribusi teoretis dan praktis bagi pengembangan organisasi CSOs berbasis keagamaan di Indonesia.&lt;br /&gt;
&lt;br /&gt;
### **Fase 5: Submission &amp;amp; Proses Peer Review (Minggu 13+)**&lt;br /&gt;
* [ ] Menyesuaikan format draf (*formatting*) sesuai *Author Guidelines* jurnal target.&lt;br /&gt;
* [ ] Melakukan *submission* artikel melalui sistem OJS (*Open Journal System*).&lt;br /&gt;
* [ ] Merespon catatan reviewer dan melakukan revisi draf (*revisions*) hingga dinyatakan *Accepted*.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## 🏛️ 5. Pilar Keberlanjutan Organisasi (*Sustainability Pillars*)&lt;br /&gt;
&lt;br /&gt;
| Pilar | Strategi Implementasi pada PRNU Pelem |&lt;br /&gt;
| :--- | :--- |&lt;br /&gt;
| **1. Teknis** | Arsitektur *Modular / Microservices*, *API-First*, dan biaya server efisien (*Zero-Operational Cost*) |&lt;br /&gt;
| **2. SDM / Kaderisasi** | Pengelolaan teknis diserahterimakan kepada kader muda **IPNU/IPPNU &amp;amp; Ansor Pelem** sebagai media *Project-Based Learning* |&lt;br /&gt;
| **3. Kelembagaan** | Mendapat legitimasi kultural dari **Majelis Syuriah (Kiai)** dan penetapan SOP tata kelola data terbuka |&lt;br /&gt;
| **4. Finansial** | Transparansi Koin NU meningkatkan *trust* jemaah, memicu kenaikan perolehan dana infak untuk kas mandiri ranting |&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## 🚀 6. Action Items Pertama (Mulai Hari Ini)&lt;br /&gt;
1. **Dokumentasikan Struktur Kas:** Salin skema kolom/kategori pada *spreadsheet* ZIS saat ini sebagai data baseline.&lt;br /&gt;
2. **Catat Statistik Web:** Ekspor data pengakses dan daftar konten `rantingnupelem.or.id` kurun waktu 2022–2026.&lt;br /&gt;
3. **Mulai Susun Bab 1:** Tuliskan 3 paragraf latar belakang yang memuat problematika riil pengorganisasian di Desa Pelem.&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Belajar_Linux_Foundation&amp;diff=2424</id>
		<title>Belajar Linux Foundation</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Belajar_Linux_Foundation&amp;diff=2424"/>
		<updated>2026-09-23T02:32:41Z</updated>

		<summary type="html">&lt;p&gt;Robie: ←Membuat halaman berisi &amp;#039;akses ke https://training.linuxfoundation.org/training/introduction-to-linux/&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;akses ke https://training.linuxfoundation.org/training/introduction-to-linux/&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Deploy_Aplikasi&amp;diff=2423</id>
		<title>Deploy Aplikasi</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Deploy_Aplikasi&amp;diff=2423"/>
		<updated>2026-09-02T08:31:35Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Deploy Aplikasi&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Panduan Lengkap Pengembangan Aplikasi Profesional =&lt;br /&gt;
== Dari Persiapan, Eksekusi, hingga Pasca-Pembuatan ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FASE 1 — PERSIAPAN (Pre-Development) ==&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Discovery &amp;amp; Requirement Gathering ===&lt;br /&gt;
* &#039;&#039;&#039;Stakeholder Interview&#039;&#039;&#039;: Wawancara dengan pemilik produk/klien untuk menggali kebutuhan bisnis (business needs).&lt;br /&gt;
* &#039;&#039;&#039;User Research&#039;&#039;&#039;: Mengenali target pengguna melalui survei, persona, dan &#039;&#039;user journey mapping&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Competitive Analysis&#039;&#039;&#039;: Membandingkan dengan aplikasi sejenis (benchmarking).&lt;br /&gt;
&lt;br /&gt;
=== 1.2 PRD (Product Requirement Document) ===&lt;br /&gt;
Dokumen inti yang menjadi acuan seluruh tim. Isinya mencakup:&lt;br /&gt;
* Latar belakang &amp;amp; tujuan produk (&#039;&#039;Problem Statement &amp;amp; Goals&#039;&#039;)&lt;br /&gt;
* Target pengguna (&#039;&#039;User Persona&#039;&#039;)&lt;br /&gt;
* Ruang lingkup (&#039;&#039;Scope&#039;&#039;) — in-scope &amp;amp; out-of-scope&lt;br /&gt;
* User Stories / Use Case (format: &amp;quot;Sebagai [peran], saya ingin [aksi], agar [manfaat]&amp;quot;)&lt;br /&gt;
* Functional Requirements (fitur yang harus ada)&lt;br /&gt;
* Non-Functional Requirements (performa, keamanan, skalabilitas, ketersediaan/&#039;&#039;uptime&#039;&#039;)&lt;br /&gt;
* Acceptance Criteria per fitur&lt;br /&gt;
* Metrik keberhasilan (KPI/OKR)&lt;br /&gt;
* Timeline &amp;amp; milestone&lt;br /&gt;
&lt;br /&gt;
=== 1.3 UI/UX Design ===&lt;br /&gt;
* &#039;&#039;&#039;Wireframe&#039;&#039;&#039; — kerangka kasar tata letak.&lt;br /&gt;
* &#039;&#039;&#039;Mockup / High-Fidelity Design&#039;&#039;&#039; — desain visual detail (biasanya di Figma).&lt;br /&gt;
* &#039;&#039;&#039;Prototype&#039;&#039;&#039; — simulasi interaktif untuk &#039;&#039;usability testing&#039;&#039; awal.&lt;br /&gt;
* &#039;&#039;&#039;Design System&#039;&#039;&#039; — komponen UI standar (warna, tipografi, spacing) agar konsisten.&lt;br /&gt;
&lt;br /&gt;
=== 1.4 Perencanaan Teknis ===&lt;br /&gt;
* &#039;&#039;&#039;Tech Stack Selection&#039;&#039;&#039; — pemilihan bahasa, framework, dan tools.&lt;br /&gt;
* &#039;&#039;&#039;System Architecture Design&#039;&#039;&#039; — arsitektur sistem (monolith, microservices, serverless).&lt;br /&gt;
* &#039;&#039;&#039;Database Schema Design&#039;&#039;&#039; — ERD (Entity Relationship Diagram) dan normalisasi data.&lt;br /&gt;
* &#039;&#039;&#039;API Contract / API Specification&#039;&#039;&#039; — desain endpoint, biasanya dengan standar OpenAPI/Swagger.&lt;br /&gt;
* &#039;&#039;&#039;Software Requirement Specification (SRS)&#039;&#039;&#039; — dokumen teknis turunan dari PRD.&lt;br /&gt;
* &#039;&#039;&#039;Risk Assessment&#039;&#039;&#039; — identifikasi risiko teknis &amp;amp; mitigasinya.&lt;br /&gt;
* &#039;&#039;&#039;Resource Planning&#039;&#039;&#039; — alokasi tim (PM, Backend, Frontend, QA, DevOps, UI/UX).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FASE 2 — EKSEKUSI (Development) ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1 Setup Fondasi ===&lt;br /&gt;
* &#039;&#039;&#039;Version Control Setup&#039;&#039;&#039; — inisialisasi repository (Git) dengan strategi branching (Git Flow / Trunk-Based Development).&lt;br /&gt;
* &#039;&#039;&#039;Project Scaffolding&#039;&#039;&#039; — struktur folder &amp;amp; boilerplate awal.&lt;br /&gt;
* &#039;&#039;&#039;CI/CD Pipeline Setup&#039;&#039;&#039; — otomatisasi build, test, dan deploy (misal GitHub Actions, GitLab CI, Jenkins).&lt;br /&gt;
* &#039;&#039;&#039;Environment Setup&#039;&#039;&#039; — pemisahan environment: Development → Staging → Production.&lt;br /&gt;
&lt;br /&gt;
=== 2.2 Implementasi Backend ===&lt;br /&gt;
# &#039;&#039;&#039;Database Implementation&#039;&#039;&#039; — membuat skema, migrasi (&#039;&#039;migration&#039;&#039;), dan seeding data.&lt;br /&gt;
# &#039;&#039;&#039;API Development&#039;&#039;&#039; — implementasi endpoint sesuai kontrak (REST/GraphQL/gRPC).&lt;br /&gt;
# &#039;&#039;&#039;Business Logic Layer&#039;&#039;&#039; — implementasi aturan bisnis inti.&lt;br /&gt;
# &#039;&#039;&#039;Authentication &amp;amp; Authorization&#039;&#039;&#039; — login, JWT/OAuth2, role-based access control (RBAC).&lt;br /&gt;
# &#039;&#039;&#039;Integrasi Pihak Ketiga (Third-Party Integration)&#039;&#039;&#039; — payment gateway, notifikasi, dsb.&lt;br /&gt;
# &#039;&#039;&#039;Error Handling &amp;amp; Logging&#039;&#039;&#039; — penanganan error terstruktur dan pencatatan log.&lt;br /&gt;
# &#039;&#039;&#039;Unit Testing&#039;&#039;&#039; — pengujian fungsi/modul secara terisolasi.&lt;br /&gt;
# &#039;&#039;&#039;API Documentation&#039;&#039;&#039; — dokumentasi otomatis (Swagger/Postman Collection).&lt;br /&gt;
&lt;br /&gt;
=== 2.3 Implementasi Frontend ===&lt;br /&gt;
# &#039;&#039;&#039;Component-Based Development&#039;&#039;&#039; — membangun UI berbasis komponen reusable.&lt;br /&gt;
# &#039;&#039;&#039;State Management&#039;&#039;&#039; — pengelolaan data di sisi klien (Redux, Zustand, Context API, dsb).&lt;br /&gt;
# &#039;&#039;&#039;API Integration&#039;&#039;&#039; — menghubungkan frontend dengan backend (fetch/axios, React Query).&lt;br /&gt;
# &#039;&#039;&#039;Responsive Design&#039;&#039;&#039; — memastikan tampilan optimal di berbagai perangkat (&#039;&#039;mobile-first&#039;&#039;).&lt;br /&gt;
# &#039;&#039;&#039;Accessibility (a11y)&#039;&#039;&#039; — memastikan aplikasi dapat digunakan semua kalangan (standar WCAG).&lt;br /&gt;
# &#039;&#039;&#039;Cross-Browser Testing&#039;&#039;&#039; — memastikan kompatibilitas di berbagai browser.&lt;br /&gt;
# &#039;&#039;&#039;Performance Optimization&#039;&#039;&#039; — lazy loading, code splitting, image optimization.&lt;br /&gt;
&lt;br /&gt;
=== 2.4 Quality Assurance (Paralel dengan Development) ===&lt;br /&gt;
* &#039;&#039;&#039;Code Review&#039;&#039;&#039; — peer review sebelum merge (&#039;&#039;pull request&#039;&#039;).&lt;br /&gt;
* &#039;&#039;&#039;Static Code Analysis&#039;&#039;&#039; — linting &amp;amp; code quality check (ESLint, SonarQube).&lt;br /&gt;
* &#039;&#039;&#039;Integration Testing&#039;&#039;&#039; — menguji interaksi antar-modul (frontend-backend, backend-database).&lt;br /&gt;
* &#039;&#039;&#039;Test-Driven Development (TDD)&#039;&#039;&#039; &#039;&#039;(opsional, tergantung metodologi)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Sprint Review &amp;amp; Retrospective&#039;&#039;&#039; &#039;&#039;(jika menggunakan Agile/Scrum)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FASE 3 — PASCA PEMBUATAN (Post-Development) ==&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Pre-Release Testing ===&lt;br /&gt;
* &#039;&#039;&#039;System Testing&#039;&#039;&#039; — pengujian aplikasi secara utuh end-to-end.&lt;br /&gt;
* &#039;&#039;&#039;User Acceptance Testing (UAT)&#039;&#039;&#039; — pengujian oleh calon pengguna/klien terhadap acceptance criteria di PRD.&lt;br /&gt;
* &#039;&#039;&#039;Regression Testing&#039;&#039;&#039; — memastikan fitur lama tidak rusak akibat perubahan baru.&lt;br /&gt;
* &#039;&#039;&#039;Security Testing / Penetration Testing&#039;&#039;&#039; — mengecek celah keamanan (SQL Injection, XSS, CSRF, dsb).&lt;br /&gt;
* &#039;&#039;&#039;Load Testing&#039;&#039;&#039; — menguji performa sistem pada beban normal-tinggi (jumlah user simultan tertentu).&lt;br /&gt;
* &#039;&#039;&#039;Stress Test&#039;&#039;&#039; — menguji batas maksimum sistem hingga &#039;&#039;breaking point&#039;&#039;, untuk mengetahui:&lt;br /&gt;
** Kapasitas maksimum server (concurrent users/requests)&lt;br /&gt;
** Titik kegagalan sistem (&#039;&#039;failure point&#039;&#039;)&lt;br /&gt;
** Perilaku sistem saat overload (&#039;&#039;graceful degradation&#039;&#039; vs &#039;&#039;crash&#039;&#039;)&lt;br /&gt;
** Kecepatan pemulihan setelah beban tinggi (&#039;&#039;recovery time&#039;&#039;)&lt;br /&gt;
** Tools umum: JMeter, k6, Locust, Gatling&lt;br /&gt;
* &#039;&#039;&#039;Spike Testing&#039;&#039;&#039; — menguji respons sistem terhadap lonjakan trafik mendadak.&lt;br /&gt;
* &#039;&#039;&#039;Soak Testing (Endurance Testing)&#039;&#039;&#039; — menguji stabilitas sistem dalam durasi panjang untuk mendeteksi &#039;&#039;memory leak&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Chaos Engineering&#039;&#039;&#039; &#039;&#039;(opsional, level lanjut)&#039;&#039; — sengaja &amp;quot;merusak&amp;quot; sebagian sistem untuk menguji ketahanan (misal Netflix Chaos Monkey).&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Deployment ===&lt;br /&gt;
* &#039;&#039;&#039;Deployment Strategy&#039;&#039;&#039; — pemilihan metode rilis:&lt;br /&gt;
** Blue-Green Deployment&lt;br /&gt;
** Canary Release&lt;br /&gt;
** Rolling Update&lt;br /&gt;
* &#039;&#039;&#039;Rollback Plan&#039;&#039;&#039; — rencana cadangan jika deployment gagal.&lt;br /&gt;
* &#039;&#039;&#039;Go-Live Checklist&#039;&#039;&#039; — daftar verifikasi sebelum rilis resmi.&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Monitoring &amp;amp; Maintenance ===&lt;br /&gt;
* &#039;&#039;&#039;Application Performance Monitoring (APM)&#039;&#039;&#039; — memantau performa real-time (New Relic, Datadog, Grafana).&lt;br /&gt;
* &#039;&#039;&#039;Logging &amp;amp; Alerting System&#039;&#039;&#039; — sistem notifikasi otomatis saat terjadi anomali.&lt;br /&gt;
* &#039;&#039;&#039;Uptime Monitoring&#039;&#039;&#039; — memastikan ketersediaan layanan (SLA).&lt;br /&gt;
* &#039;&#039;&#039;Bug Tracking &amp;amp; Hotfix&#039;&#039;&#039; — penanganan cepat untuk isu kritikal pasca-rilis.&lt;br /&gt;
* &#039;&#039;&#039;Post-Mortem / Incident Report&#039;&#039;&#039; — evaluasi insiden jika terjadi kegagalan sistem.&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Evaluasi &amp;amp; Iterasi ===&lt;br /&gt;
* &#039;&#039;&#039;User Feedback Collection&#039;&#039;&#039; — pengumpulan masukan pengguna (survei, analytics, review).&lt;br /&gt;
* &#039;&#039;&#039;Analytics &amp;amp; Data Tracking&#039;&#039;&#039; — memantau perilaku pengguna (Google Analytics, Mixpanel).&lt;br /&gt;
* &#039;&#039;&#039;Technical Debt Review&#039;&#039;&#039; — evaluasi bagian kode yang perlu direfaktor.&lt;br /&gt;
* &#039;&#039;&#039;Documentation Update&#039;&#039;&#039; — pembaruan dokumentasi teknis &amp;amp; user manual.&lt;br /&gt;
* &#039;&#039;&#039;Sprint Planning Berikutnya&#039;&#039;&#039; — perencanaan iterasi/fitur selanjutnya berdasarkan feedback dan roadmap.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Ringkasan Alur Kerja ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PERSIAPAN → PRD → UI/UX Design → System Architecture&lt;br /&gt;
      ↓&lt;br /&gt;
EKSEKUSI → Setup (Git, CI/CD) → Backend Dev + Frontend Dev (paralel)&lt;br /&gt;
      → Code Review → Unit &amp;amp; Integration Testing&lt;br /&gt;
      ↓&lt;br /&gt;
PASCA → UAT → Security Testing → Load Testing → STRESS TEST&lt;br /&gt;
      → Deployment (Blue-Green/Canary) → Monitoring&lt;br /&gt;
      → Feedback → Iterasi Berikutnya&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Catatan Tambahan ==&lt;br /&gt;
* Jika menggunakan metodologi &#039;&#039;&#039;Agile/Scrum&#039;&#039;&#039;, seluruh fase Eksekusi biasanya dipecah menjadi &#039;&#039;sprint&#039;&#039; 1-2 minggu dengan &#039;&#039;daily standup&#039;&#039;, &#039;&#039;sprint review&#039;&#039;, dan &#039;&#039;sprint retrospective&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Definition of Done (DoD)&#039;&#039;&#039; dan &#039;&#039;&#039;Definition of Ready (DoR)&#039;&#039;&#039; sebaiknya disepakati di awal agar seluruh tim punya standar yang sama kapan sebuah task dianggap &amp;quot;selesai&amp;quot; atau &amp;quot;siap dikerjakan&amp;quot;.&lt;br /&gt;
* Semua dokumen (PRD, SRS, API Contract, Test Plan) sebaiknya disimpan di satu sumber kebenaran (&#039;&#039;single source of truth&#039;&#039;) seperti Confluence/Notion agar mudah diakses tim.&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Deploy_Aplikasi&amp;diff=2422</id>
		<title>Deploy Aplikasi</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Deploy_Aplikasi&amp;diff=2422"/>
		<updated>2026-09-02T08:31:20Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Panduan Lengkap Pengembangan Aplikasi Profesional =&lt;br /&gt;
== Dari Persiapan, Eksekusi, hingga Pasca-Pembuatan ==&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FASE 1 — PERSIAPAN (Pre-Development) ==&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Discovery &amp;amp; Requirement Gathering ===&lt;br /&gt;
* &#039;&#039;&#039;Stakeholder Interview&#039;&#039;&#039;: Wawancara dengan pemilik produk/klien untuk menggali kebutuhan bisnis (business needs).&lt;br /&gt;
* &#039;&#039;&#039;User Research&#039;&#039;&#039;: Mengenali target pengguna melalui survei, persona, dan &#039;&#039;user journey mapping&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Competitive Analysis&#039;&#039;&#039;: Membandingkan dengan aplikasi sejenis (benchmarking).&lt;br /&gt;
&lt;br /&gt;
=== 1.2 PRD (Product Requirement Document) ===&lt;br /&gt;
Dokumen inti yang menjadi acuan seluruh tim. Isinya mencakup:&lt;br /&gt;
* Latar belakang &amp;amp; tujuan produk (&#039;&#039;Problem Statement &amp;amp; Goals&#039;&#039;)&lt;br /&gt;
* Target pengguna (&#039;&#039;User Persona&#039;&#039;)&lt;br /&gt;
* Ruang lingkup (&#039;&#039;Scope&#039;&#039;) — in-scope &amp;amp; out-of-scope&lt;br /&gt;
* User Stories / Use Case (format: &amp;quot;Sebagai [peran], saya ingin [aksi], agar [manfaat]&amp;quot;)&lt;br /&gt;
* Functional Requirements (fitur yang harus ada)&lt;br /&gt;
* Non-Functional Requirements (performa, keamanan, skalabilitas, ketersediaan/&#039;&#039;uptime&#039;&#039;)&lt;br /&gt;
* Acceptance Criteria per fitur&lt;br /&gt;
* Metrik keberhasilan (KPI/OKR)&lt;br /&gt;
* Timeline &amp;amp; milestone&lt;br /&gt;
&lt;br /&gt;
=== 1.3 UI/UX Design ===&lt;br /&gt;
* &#039;&#039;&#039;Wireframe&#039;&#039;&#039; — kerangka kasar tata letak.&lt;br /&gt;
* &#039;&#039;&#039;Mockup / High-Fidelity Design&#039;&#039;&#039; — desain visual detail (biasanya di Figma).&lt;br /&gt;
* &#039;&#039;&#039;Prototype&#039;&#039;&#039; — simulasi interaktif untuk &#039;&#039;usability testing&#039;&#039; awal.&lt;br /&gt;
* &#039;&#039;&#039;Design System&#039;&#039;&#039; — komponen UI standar (warna, tipografi, spacing) agar konsisten.&lt;br /&gt;
&lt;br /&gt;
=== 1.4 Perencanaan Teknis ===&lt;br /&gt;
* &#039;&#039;&#039;Tech Stack Selection&#039;&#039;&#039; — pemilihan bahasa, framework, dan tools.&lt;br /&gt;
* &#039;&#039;&#039;System Architecture Design&#039;&#039;&#039; — arsitektur sistem (monolith, microservices, serverless).&lt;br /&gt;
* &#039;&#039;&#039;Database Schema Design&#039;&#039;&#039; — ERD (Entity Relationship Diagram) dan normalisasi data.&lt;br /&gt;
* &#039;&#039;&#039;API Contract / API Specification&#039;&#039;&#039; — desain endpoint, biasanya dengan standar OpenAPI/Swagger.&lt;br /&gt;
* &#039;&#039;&#039;Software Requirement Specification (SRS)&#039;&#039;&#039; — dokumen teknis turunan dari PRD.&lt;br /&gt;
* &#039;&#039;&#039;Risk Assessment&#039;&#039;&#039; — identifikasi risiko teknis &amp;amp; mitigasinya.&lt;br /&gt;
* &#039;&#039;&#039;Resource Planning&#039;&#039;&#039; — alokasi tim (PM, Backend, Frontend, QA, DevOps, UI/UX).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FASE 2 — EKSEKUSI (Development) ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1 Setup Fondasi ===&lt;br /&gt;
* &#039;&#039;&#039;Version Control Setup&#039;&#039;&#039; — inisialisasi repository (Git) dengan strategi branching (Git Flow / Trunk-Based Development).&lt;br /&gt;
* &#039;&#039;&#039;Project Scaffolding&#039;&#039;&#039; — struktur folder &amp;amp; boilerplate awal.&lt;br /&gt;
* &#039;&#039;&#039;CI/CD Pipeline Setup&#039;&#039;&#039; — otomatisasi build, test, dan deploy (misal GitHub Actions, GitLab CI, Jenkins).&lt;br /&gt;
* &#039;&#039;&#039;Environment Setup&#039;&#039;&#039; — pemisahan environment: Development → Staging → Production.&lt;br /&gt;
&lt;br /&gt;
=== 2.2 Implementasi Backend ===&lt;br /&gt;
# &#039;&#039;&#039;Database Implementation&#039;&#039;&#039; — membuat skema, migrasi (&#039;&#039;migration&#039;&#039;), dan seeding data.&lt;br /&gt;
# &#039;&#039;&#039;API Development&#039;&#039;&#039; — implementasi endpoint sesuai kontrak (REST/GraphQL/gRPC).&lt;br /&gt;
# &#039;&#039;&#039;Business Logic Layer&#039;&#039;&#039; — implementasi aturan bisnis inti.&lt;br /&gt;
# &#039;&#039;&#039;Authentication &amp;amp; Authorization&#039;&#039;&#039; — login, JWT/OAuth2, role-based access control (RBAC).&lt;br /&gt;
# &#039;&#039;&#039;Integrasi Pihak Ketiga (Third-Party Integration)&#039;&#039;&#039; — payment gateway, notifikasi, dsb.&lt;br /&gt;
# &#039;&#039;&#039;Error Handling &amp;amp; Logging&#039;&#039;&#039; — penanganan error terstruktur dan pencatatan log.&lt;br /&gt;
# &#039;&#039;&#039;Unit Testing&#039;&#039;&#039; — pengujian fungsi/modul secara terisolasi.&lt;br /&gt;
# &#039;&#039;&#039;API Documentation&#039;&#039;&#039; — dokumentasi otomatis (Swagger/Postman Collection).&lt;br /&gt;
&lt;br /&gt;
=== 2.3 Implementasi Frontend ===&lt;br /&gt;
# &#039;&#039;&#039;Component-Based Development&#039;&#039;&#039; — membangun UI berbasis komponen reusable.&lt;br /&gt;
# &#039;&#039;&#039;State Management&#039;&#039;&#039; — pengelolaan data di sisi klien (Redux, Zustand, Context API, dsb).&lt;br /&gt;
# &#039;&#039;&#039;API Integration&#039;&#039;&#039; — menghubungkan frontend dengan backend (fetch/axios, React Query).&lt;br /&gt;
# &#039;&#039;&#039;Responsive Design&#039;&#039;&#039; — memastikan tampilan optimal di berbagai perangkat (&#039;&#039;mobile-first&#039;&#039;).&lt;br /&gt;
# &#039;&#039;&#039;Accessibility (a11y)&#039;&#039;&#039; — memastikan aplikasi dapat digunakan semua kalangan (standar WCAG).&lt;br /&gt;
# &#039;&#039;&#039;Cross-Browser Testing&#039;&#039;&#039; — memastikan kompatibilitas di berbagai browser.&lt;br /&gt;
# &#039;&#039;&#039;Performance Optimization&#039;&#039;&#039; — lazy loading, code splitting, image optimization.&lt;br /&gt;
&lt;br /&gt;
=== 2.4 Quality Assurance (Paralel dengan Development) ===&lt;br /&gt;
* &#039;&#039;&#039;Code Review&#039;&#039;&#039; — peer review sebelum merge (&#039;&#039;pull request&#039;&#039;).&lt;br /&gt;
* &#039;&#039;&#039;Static Code Analysis&#039;&#039;&#039; — linting &amp;amp; code quality check (ESLint, SonarQube).&lt;br /&gt;
* &#039;&#039;&#039;Integration Testing&#039;&#039;&#039; — menguji interaksi antar-modul (frontend-backend, backend-database).&lt;br /&gt;
* &#039;&#039;&#039;Test-Driven Development (TDD)&#039;&#039;&#039; &#039;&#039;(opsional, tergantung metodologi)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Sprint Review &amp;amp; Retrospective&#039;&#039;&#039; &#039;&#039;(jika menggunakan Agile/Scrum)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FASE 3 — PASCA PEMBUATAN (Post-Development) ==&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Pre-Release Testing ===&lt;br /&gt;
* &#039;&#039;&#039;System Testing&#039;&#039;&#039; — pengujian aplikasi secara utuh end-to-end.&lt;br /&gt;
* &#039;&#039;&#039;User Acceptance Testing (UAT)&#039;&#039;&#039; — pengujian oleh calon pengguna/klien terhadap acceptance criteria di PRD.&lt;br /&gt;
* &#039;&#039;&#039;Regression Testing&#039;&#039;&#039; — memastikan fitur lama tidak rusak akibat perubahan baru.&lt;br /&gt;
* &#039;&#039;&#039;Security Testing / Penetration Testing&#039;&#039;&#039; — mengecek celah keamanan (SQL Injection, XSS, CSRF, dsb).&lt;br /&gt;
* &#039;&#039;&#039;Load Testing&#039;&#039;&#039; — menguji performa sistem pada beban normal-tinggi (jumlah user simultan tertentu).&lt;br /&gt;
* &#039;&#039;&#039;Stress Test&#039;&#039;&#039; — menguji batas maksimum sistem hingga &#039;&#039;breaking point&#039;&#039;, untuk mengetahui:&lt;br /&gt;
** Kapasitas maksimum server (concurrent users/requests)&lt;br /&gt;
** Titik kegagalan sistem (&#039;&#039;failure point&#039;&#039;)&lt;br /&gt;
** Perilaku sistem saat overload (&#039;&#039;graceful degradation&#039;&#039; vs &#039;&#039;crash&#039;&#039;)&lt;br /&gt;
** Kecepatan pemulihan setelah beban tinggi (&#039;&#039;recovery time&#039;&#039;)&lt;br /&gt;
** Tools umum: JMeter, k6, Locust, Gatling&lt;br /&gt;
* &#039;&#039;&#039;Spike Testing&#039;&#039;&#039; — menguji respons sistem terhadap lonjakan trafik mendadak.&lt;br /&gt;
* &#039;&#039;&#039;Soak Testing (Endurance Testing)&#039;&#039;&#039; — menguji stabilitas sistem dalam durasi panjang untuk mendeteksi &#039;&#039;memory leak&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Chaos Engineering&#039;&#039;&#039; &#039;&#039;(opsional, level lanjut)&#039;&#039; — sengaja &amp;quot;merusak&amp;quot; sebagian sistem untuk menguji ketahanan (misal Netflix Chaos Monkey).&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Deployment ===&lt;br /&gt;
* &#039;&#039;&#039;Deployment Strategy&#039;&#039;&#039; — pemilihan metode rilis:&lt;br /&gt;
** Blue-Green Deployment&lt;br /&gt;
** Canary Release&lt;br /&gt;
** Rolling Update&lt;br /&gt;
* &#039;&#039;&#039;Rollback Plan&#039;&#039;&#039; — rencana cadangan jika deployment gagal.&lt;br /&gt;
* &#039;&#039;&#039;Go-Live Checklist&#039;&#039;&#039; — daftar verifikasi sebelum rilis resmi.&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Monitoring &amp;amp; Maintenance ===&lt;br /&gt;
* &#039;&#039;&#039;Application Performance Monitoring (APM)&#039;&#039;&#039; — memantau performa real-time (New Relic, Datadog, Grafana).&lt;br /&gt;
* &#039;&#039;&#039;Logging &amp;amp; Alerting System&#039;&#039;&#039; — sistem notifikasi otomatis saat terjadi anomali.&lt;br /&gt;
* &#039;&#039;&#039;Uptime Monitoring&#039;&#039;&#039; — memastikan ketersediaan layanan (SLA).&lt;br /&gt;
* &#039;&#039;&#039;Bug Tracking &amp;amp; Hotfix&#039;&#039;&#039; — penanganan cepat untuk isu kritikal pasca-rilis.&lt;br /&gt;
* &#039;&#039;&#039;Post-Mortem / Incident Report&#039;&#039;&#039; — evaluasi insiden jika terjadi kegagalan sistem.&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Evaluasi &amp;amp; Iterasi ===&lt;br /&gt;
* &#039;&#039;&#039;User Feedback Collection&#039;&#039;&#039; — pengumpulan masukan pengguna (survei, analytics, review).&lt;br /&gt;
* &#039;&#039;&#039;Analytics &amp;amp; Data Tracking&#039;&#039;&#039; — memantau perilaku pengguna (Google Analytics, Mixpanel).&lt;br /&gt;
* &#039;&#039;&#039;Technical Debt Review&#039;&#039;&#039; — evaluasi bagian kode yang perlu direfaktor.&lt;br /&gt;
* &#039;&#039;&#039;Documentation Update&#039;&#039;&#039; — pembaruan dokumentasi teknis &amp;amp; user manual.&lt;br /&gt;
* &#039;&#039;&#039;Sprint Planning Berikutnya&#039;&#039;&#039; — perencanaan iterasi/fitur selanjutnya berdasarkan feedback dan roadmap.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Ringkasan Alur Kerja ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PERSIAPAN → PRD → UI/UX Design → System Architecture&lt;br /&gt;
      ↓&lt;br /&gt;
EKSEKUSI → Setup (Git, CI/CD) → Backend Dev + Frontend Dev (paralel)&lt;br /&gt;
      → Code Review → Unit &amp;amp; Integration Testing&lt;br /&gt;
      ↓&lt;br /&gt;
PASCA → UAT → Security Testing → Load Testing → STRESS TEST&lt;br /&gt;
      → Deployment (Blue-Green/Canary) → Monitoring&lt;br /&gt;
      → Feedback → Iterasi Berikutnya&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Catatan Tambahan ==&lt;br /&gt;
* Jika menggunakan metodologi &#039;&#039;&#039;Agile/Scrum&#039;&#039;&#039;, seluruh fase Eksekusi biasanya dipecah menjadi &#039;&#039;sprint&#039;&#039; 1-2 minggu dengan &#039;&#039;daily standup&#039;&#039;, &#039;&#039;sprint review&#039;&#039;, dan &#039;&#039;sprint retrospective&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Definition of Done (DoD)&#039;&#039;&#039; dan &#039;&#039;&#039;Definition of Ready (DoR)&#039;&#039;&#039; sebaiknya disepakati di awal agar seluruh tim punya standar yang sama kapan sebuah task dianggap &amp;quot;selesai&amp;quot; atau &amp;quot;siap dikerjakan&amp;quot;.&lt;br /&gt;
* Semua dokumen (PRD, SRS, API Contract, Test Plan) sebaiknya disimpan di satu sumber kebenaran (&#039;&#039;single source of truth&#039;&#039;) seperti Confluence/Notion agar mudah diakses tim.&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Deploy_Aplikasi&amp;diff=2421</id>
		<title>Deploy Aplikasi</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Deploy_Aplikasi&amp;diff=2421"/>
		<updated>2026-09-02T08:29:44Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Panduan Lengkap Pengembangan Aplikasi Profesional&lt;br /&gt;
### Dari Persiapan, Eksekusi, hingga Pasca-Pembuatan&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## FASE 1 — PERSIAPAN (Pre-Development)&lt;br /&gt;
&lt;br /&gt;
### 1.1 Discovery &amp;amp; Requirement Gathering&lt;br /&gt;
- **Stakeholder Interview**: Wawancara dengan pemilik produk/klien untuk menggali kebutuhan bisnis (business needs).&lt;br /&gt;
- **User Research**: Mengenali target pengguna melalui survei, persona, dan *user journey mapping*.&lt;br /&gt;
- **Competitive Analysis**: Membandingkan dengan aplikasi sejenis (benchmarking).&lt;br /&gt;
&lt;br /&gt;
### 1.2 PRD (Product Requirement Document)&lt;br /&gt;
Dokumen inti yang menjadi acuan seluruh tim. Isinya mencakup:&lt;br /&gt;
- **Latar belakang &amp;amp; tujuan produk (Problem Statement &amp;amp; Goals)**&lt;br /&gt;
- **Target pengguna (User Persona)**&lt;br /&gt;
- **Ruang lingkup (Scope) — in-scope &amp;amp; out-of-scope**&lt;br /&gt;
- **User Stories / Use Case** (format: &amp;quot;Sebagai [peran], saya ingin [aksi], agar [manfaat]&amp;quot;)&lt;br /&gt;
- **Functional Requirements** (fitur yang harus ada)&lt;br /&gt;
- **Non-Functional Requirements** (performa, keamanan, skalabilitas, ketersediaan/*uptime*)&lt;br /&gt;
- **Acceptance Criteria** per fitur&lt;br /&gt;
- **Metrik keberhasilan (KPI/OKR)**&lt;br /&gt;
- **Timeline &amp;amp; milestone**&lt;br /&gt;
&lt;br /&gt;
### 1.3 UI/UX Design&lt;br /&gt;
- **Wireframe** — kerangka kasar tata letak.&lt;br /&gt;
- **Mockup / High-Fidelity Design** — desain visual detail (biasanya di Figma).&lt;br /&gt;
- **Prototype** — simulasi interaktif untuk *usability testing* awal.&lt;br /&gt;
- **Design System** — komponen UI standar (warna, tipografi, spacing) agar konsisten.&lt;br /&gt;
&lt;br /&gt;
### 1.4 Perencanaan Teknis&lt;br /&gt;
- **Tech Stack Selection** — pemilihan bahasa, framework, dan tools.&lt;br /&gt;
- **System Architecture Design** — arsitektur sistem (monolith, microservices, serverless).&lt;br /&gt;
- **Database Schema Design** — ERD (Entity Relationship Diagram) dan normalisasi data.&lt;br /&gt;
- **API Contract / API Specification** — desain endpoint, biasanya dengan standar **OpenAPI/Swagger**.&lt;br /&gt;
- **Software Requirement Specification (SRS)** — dokumen teknis turunan dari PRD.&lt;br /&gt;
- **Risk Assessment** — identifikasi risiko teknis &amp;amp; mitigasinya.&lt;br /&gt;
- **Resource Planning** — alokasi tim (PM, Backend, Frontend, QA, DevOps, UI/UX).&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## FASE 2 — EKSEKUSI (Development)&lt;br /&gt;
&lt;br /&gt;
### 2.1 Setup Fondasi&lt;br /&gt;
- **Version Control Setup** — inisialisasi repository (Git) dengan strategi branching (**Git Flow / Trunk-Based Development**).&lt;br /&gt;
- **Project Scaffolding** — struktur folder &amp;amp; boilerplate awal.&lt;br /&gt;
- **CI/CD Pipeline Setup** — otomatisasi build, test, dan deploy (misal GitHub Actions, GitLab CI, Jenkins).&lt;br /&gt;
- **Environment Setup** — pemisahan environment: **Development → Staging → Production**.&lt;br /&gt;
&lt;br /&gt;
### 2.2 Implementasi Backend&lt;br /&gt;
1. **Database Implementation** — membuat skema, migrasi (*migration*), dan seeding data.&lt;br /&gt;
2. **API Development** — implementasi endpoint sesuai kontrak (REST/GraphQL/gRPC).&lt;br /&gt;
3. **Business Logic Layer** — implementasi aturan bisnis inti.&lt;br /&gt;
4. **Authentication &amp;amp; Authorization** — login, JWT/OAuth2, role-based access control (RBAC).&lt;br /&gt;
5. **Integrasi Pihak Ketiga (Third-Party Integration)** — payment gateway, notifikasi, dsb.&lt;br /&gt;
6. **Error Handling &amp;amp; Logging** — penanganan error terstruktur dan pencatatan log.&lt;br /&gt;
7. **Unit Testing** — pengujian fungsi/modul secara terisolasi.&lt;br /&gt;
8. **API Documentation** — dokumentasi otomatis (Swagger/Postman Collection).&lt;br /&gt;
&lt;br /&gt;
### 2.3 Implementasi Frontend&lt;br /&gt;
1. **Component-Based Development** — membangun UI berbasis komponen reusable.&lt;br /&gt;
2. **State Management** — pengelolaan data di sisi klien (Redux, Zustand, Context API, dsb).&lt;br /&gt;
3. **API Integration** — menghubungkan frontend dengan backend (fetch/axios, React Query).&lt;br /&gt;
4. **Responsive Design** — memastikan tampilan optimal di berbagai perangkat (*mobile-first*).&lt;br /&gt;
5. **Accessibility (a11y)** — memastikan aplikasi dapat digunakan semua kalangan (WCAG standar).&lt;br /&gt;
6. **Cross-Browser Testing** — memastikan kompatibilitas di berbagai browser.&lt;br /&gt;
7. **Performance Optimization** — lazy loading, code splitting, image optimization.&lt;br /&gt;
&lt;br /&gt;
### 2.4 Quality Assurance (Paralel dengan Development)&lt;br /&gt;
- **Code Review** — peer review sebelum merge (*pull request*).&lt;br /&gt;
- **Static Code Analysis** — linting &amp;amp; code quality check (ESLint, SonarQube).&lt;br /&gt;
- **Integration Testing** — menguji interaksi antar-modul (frontend-backend, backend-database).&lt;br /&gt;
- **Test-Driven Development (TDD)** *(opsional, tergantung metodologi)*.&lt;br /&gt;
- **Sprint Review &amp;amp; Retrospective** *(jika menggunakan Agile/Scrum)*.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## FASE 3 — PASCA PEMBUATAN (Post-Development)&lt;br /&gt;
&lt;br /&gt;
### 3.1 Pre-Release Testing&lt;br /&gt;
- **System Testing** — pengujian aplikasi secara utuh end-to-end.&lt;br /&gt;
- **User Acceptance Testing (UAT)** — pengujian oleh calon pengguna/klien terhadap acceptance criteria di PRD.&lt;br /&gt;
- **Regression Testing** — memastikan fitur lama tidak rusak akibat perubahan baru.&lt;br /&gt;
- **Security Testing / Penetration Testing** — mengecek celah keamanan (SQL Injection, XSS, CSRF, dsb).&lt;br /&gt;
- **Load Testing** — menguji performa sistem pada beban normal-tinggi (jumlah user simultan tertentu).&lt;br /&gt;
- **Stress Test** — menguji batas maksimum sistem hingga *breaking point*, untuk mengetahui:&lt;br /&gt;
  - Kapasitas maksimum server (concurrent users/requests)&lt;br /&gt;
  - Titik kegagalan sistem (*failure point*)&lt;br /&gt;
  - Perilaku sistem saat overload (*graceful degradation* vs *crash*)&lt;br /&gt;
  - Kecepatan pemulihan setelah beban tinggi (*recovery time*)&lt;br /&gt;
  - Tools umum: **JMeter, k6, Locust, Gatling**&lt;br /&gt;
- **Spike Testing** — menguji respons sistem terhadap lonjakan trafik mendadak.&lt;br /&gt;
- **Soak Testing (Endurance Testing)** — menguji stabilitas sistem dalam durasi panjang untuk mendeteksi *memory leak*.&lt;br /&gt;
- **Chaos Engineering** *(opsional, level lanjut)* — sengaja &amp;quot;merusak&amp;quot; sebagian sistem untuk menguji ketahanan (misal Netflix Chaos Monkey).&lt;br /&gt;
&lt;br /&gt;
### 3.2 Deployment&lt;br /&gt;
- **Deployment Strategy** — pemilihan metode rilis:&lt;br /&gt;
  - **Blue-Green Deployment**&lt;br /&gt;
  - **Canary Release**&lt;br /&gt;
  - **Rolling Update**&lt;br /&gt;
- **Rollback Plan** — rencana cadangan jika deployment gagal.&lt;br /&gt;
- **Go-Live Checklist** — daftar verifikasi sebelum rilis resmi.&lt;br /&gt;
&lt;br /&gt;
### 3.3 Monitoring &amp;amp; Maintenance&lt;br /&gt;
- **Application Performance Monitoring (APM)** — memantau performa real-time (New Relic, Datadog, Grafana).&lt;br /&gt;
- **Logging &amp;amp; Alerting System** — sistem notifikasi otomatis saat terjadi anomali.&lt;br /&gt;
- **Uptime Monitoring** — memastikan ketersediaan layanan (SLA).&lt;br /&gt;
- **Bug Tracking &amp;amp; Hotfix** — penanganan cepat untuk isu kritikal pasca-rilis.&lt;br /&gt;
- **Post-Mortem / Incident Report** — evaluasi insiden jika terjadi kegagalan sistem.&lt;br /&gt;
&lt;br /&gt;
### 3.4 Evaluasi &amp;amp; Iterasi&lt;br /&gt;
- **User Feedback Collection** — pengumpulan masukan pengguna (survei, analytics, review).&lt;br /&gt;
- **Analytics &amp;amp; Data Tracking** — memantau perilaku pengguna (Google Analytics, Mixpanel).&lt;br /&gt;
- **Technical Debt Review** — evaluasi bagian kode yang perlu direfaktor.&lt;br /&gt;
- **Documentation Update** — pembaruan dokumentasi teknis &amp;amp; user manual.&lt;br /&gt;
- **Sprint Planning Berikutnya** — perencanaan iterasi/fitur selanjutnya berdasarkan feedback dan roadmap.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## Ringkasan Alur Kerja&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
PERSIAPAN → PRD → UI/UX Design → System Architecture&lt;br /&gt;
      ↓&lt;br /&gt;
EKSEKUSI → Setup (Git, CI/CD) → Backend Dev + Frontend Dev (paralel)&lt;br /&gt;
      → Code Review → Unit &amp;amp; Integration Testing&lt;br /&gt;
      ↓&lt;br /&gt;
PASCA → UAT → Security Testing → Load Testing → STRESS TEST&lt;br /&gt;
      → Deployment (Blue-Green/Canary) → Monitoring&lt;br /&gt;
      → Feedback → Iterasi Berikutnya&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
### Catatan Tambahan&lt;br /&gt;
- Jika menggunakan metodologi **Agile/Scrum**, seluruh fase Eksekusi biasanya dipecah menjadi *sprint* 1-2 minggu dengan *daily standup*, *sprint review*, dan *sprint retrospective*.&lt;br /&gt;
- **Definition of Done (DoD)** dan **Definition of Ready (DoR)** sebaiknya disepakati di awal agar seluruh tim punya standar yang sama kapan sebuah task dianggap &amp;quot;selesai&amp;quot; atau &amp;quot;siap dikerjakan&amp;quot;.&lt;br /&gt;
- Semua dokumen (PRD, SRS, API Contract, Test Plan) sebaiknya disimpan di satu sumber kebenaran (*single source of truth*) seperti Confluence/Notion agar mudah diakses tim.&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Deploy_Aplikasi&amp;diff=2420</id>
		<title>Deploy Aplikasi</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Deploy_Aplikasi&amp;diff=2420"/>
		<updated>2026-09-02T08:24:25Z</updated>

		<summary type="html">&lt;p&gt;Robie: ←Membuat halaman berisi &amp;#039; Tes&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tes&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Install_Opencode_CLI&amp;diff=2419</id>
		<title>Install Opencode CLI</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Install_Opencode_CLI&amp;diff=2419"/>
		<updated>2026-08-10T02:40:42Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ketikan perintah berikut&lt;br /&gt;
 curl -fsSL https://opencode.ai/install | bash (enter)&lt;br /&gt;
&lt;br /&gt;
Progress yang akan terlihat seperti berikut&lt;br /&gt;
 Installing opencode version: 1.18.15&lt;br /&gt;
 ■■■■■■■■■･････････････････････････････････････････  19%&lt;br /&gt;
&lt;br /&gt;
lalu tunggu hingga proses instalasi selesai&lt;br /&gt;
[[Kategori:AI]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Install_Opencode_CLI&amp;diff=2418</id>
		<title>Install Opencode CLI</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Install_Opencode_CLI&amp;diff=2418"/>
		<updated>2026-08-10T02:40:20Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Install Opencode CLI&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ketikan perintah berikut&lt;br /&gt;
 curl -fsSL https://opencode.ai/install | bash (enter)&lt;br /&gt;
&lt;br /&gt;
Progress yang akan terlihat seperti berikut&lt;br /&gt;
 Installing opencode version: 1.18.15&lt;br /&gt;
 ■■■■■■■■■･････････････････････････････････････････  19%&lt;br /&gt;
&lt;br /&gt;
lalu tunggu hingga proses instalasi selesai&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Install_Opencode_CLI&amp;diff=2417</id>
		<title>Install Opencode CLI</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Install_Opencode_CLI&amp;diff=2417"/>
		<updated>2026-08-10T02:38:21Z</updated>

		<summary type="html">&lt;p&gt;Robie: ←Membuat halaman berisi &amp;#039;Ketikan perintah berikut  curl -fsSL https://opencode.ai/install | bash (enter)  Progress yang akan terlihat seperti berikut  Installing opencode version: 1.18.15  ■■■■■■■■■･････････････････････････････････････････  19%  lalu tunggu hingga proses instalasi selesai&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ketikan perintah berikut&lt;br /&gt;
 curl -fsSL https://opencode.ai/install | bash (enter)&lt;br /&gt;
&lt;br /&gt;
Progress yang akan terlihat seperti berikut&lt;br /&gt;
 Installing opencode version: 1.18.15&lt;br /&gt;
 ■■■■■■■■■･････････････････････････････････････････  19%&lt;br /&gt;
&lt;br /&gt;
lalu tunggu hingga proses instalasi selesai&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Manajemen_Proses_dan_Service_di_Debian_12&amp;diff=2416</id>
		<title>Manajemen Proses dan Service di Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Manajemen_Proses_dan_Service_di_Debian_12&amp;diff=2416"/>
		<updated>2026-08-05T04:31:49Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Manajemen Proses dan Service di Debian 12&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apa itu Proses dan Service? =&lt;br /&gt;
&lt;br /&gt;
Bayangkan sebuah &#039;&#039;&#039;dapur restoran&#039;&#039;&#039; yang sedang ramai. Ada banyak pekerja sedang memasak: ada yang menggoreng, mengiris bawang, merebus sup. Semua pekerja itu bekerja bersamaan dan diatur oleh kepala dapur.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proses&#039;&#039;&#039; = program yang sedang berjalan di server (seperti satu pekerja yang sedang bekerja).&lt;br /&gt;
* &#039;&#039;&#039;PID (Process ID)&#039;&#039;&#039; = nomor identitas setiap proses (seperti kartu nama pekerja).&lt;br /&gt;
* &#039;&#039;&#039;Service (Layanan)&#039;&#039;&#039; = proses yang berjalan terus-menerus di belakang, siap melayani kapan saja (seperti juru masak yang selalu standby).&lt;br /&gt;
* &#039;&#039;&#039;Daemon&#039;&#039;&#039; = sebutan untuk service yang berjalan di latar belakang. Nama daemon biasanya berakhiran &amp;quot;d&amp;quot;, contoh: sshd, vsftpd, smbd.&lt;br /&gt;
* &#039;&#039;&#039;systemd&#039;&#039;&#039; = sistem yang mengatur semua service di Debian modern (seperti kepala dapur).&lt;br /&gt;
&lt;br /&gt;
== Proses vs Service ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Proses !! Service&lt;br /&gt;
|-&lt;br /&gt;
| Berjalan saat ada perintah || Berjalan terus di latar belakang&lt;br /&gt;
|-&lt;br /&gt;
| Berhenti saat perintah selesai || Tetap berjalan walau tidak dipakai&lt;br /&gt;
|-&lt;br /&gt;
| Contoh: ping, nano, curl || Contoh: ssh, apache2, mariadb&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Teori: Cara Linux Mengelola Proses =&lt;br /&gt;
&lt;br /&gt;
== 1. Foreground dan Background ==&lt;br /&gt;
* &#039;&#039;&#039;Foreground&#039;&#039;&#039; = proses yang berjalan di layar dan kita lihat langsung (contoh: nano).&lt;br /&gt;
* &#039;&#039;&#039;Background&#039;&#039;&#039; = proses yang berjalan di belakang tanpa tampilan, terminal tetap bisa dipakai (contoh: backup).&lt;br /&gt;
&lt;br /&gt;
Untuk menjalankan proses di latar belakang, tambahkan simbol &amp;amp; di akhir perintah:&lt;br /&gt;
 #sleep 100 &amp;amp; (enter)&lt;br /&gt;
&lt;br /&gt;
## 2. PID dan Sinyal&lt;br /&gt;
Setiap proses punya PID. Kita bisa mengirim &amp;quot;sinyal&amp;quot; ke proses lewat PID-nya:&lt;br /&gt;
* Sinyal 1 (HUP) = restart proses.&lt;br /&gt;
* Sinyal 9 (KILL) = paksa mati.&lt;br /&gt;
* Sinyal 15 (TERM) = minta berhenti dengan sopan.&lt;br /&gt;
&lt;br /&gt;
= Praktik: Manajemen Proses dan Service di Debian 12 =&lt;br /&gt;
&lt;br /&gt;
== 1. Melihat Proses yang Berjalan ==&lt;br /&gt;
&lt;br /&gt;
=== 1.1 ps - Daftar Proses ===&lt;br /&gt;
Melihat semua proses di server:&lt;br /&gt;
 #ps aux (enter)&lt;br /&gt;
&lt;br /&gt;
Penjelasan kolom:&lt;br /&gt;
* &#039;&#039;&#039;USER&#039;&#039;&#039; = pemilik proses&lt;br /&gt;
* &#039;&#039;&#039;PID&#039;&#039;&#039; = nomor proses&lt;br /&gt;
* &#039;&#039;&#039;%CPU / %MEM&#039;&#039;&#039; = pemakaian CPU dan RAM&lt;br /&gt;
* &#039;&#039;&#039;COMMAND&#039;&#039;&#039; = nama program&lt;br /&gt;
&lt;br /&gt;
Untuk melihat proses tertentu (misal ssh):&lt;br /&gt;
 #ps aux | grep ssh (enter)&lt;br /&gt;
&lt;br /&gt;
=== 1.2 top - Monitor Proses Real-time ===&lt;br /&gt;
 #top (enter)&lt;br /&gt;
&lt;br /&gt;
Tampilan berubah terus menerus. Kolom PID dan %CPU memudahkan kita melihat proses mana yang &amp;quot;nakal&amp;quot; (memakan sumber daya). Tekan &#039;&#039;&#039;q&#039;&#039;&#039; untuk keluar.&lt;br /&gt;
&lt;br /&gt;
Jika terinstall htop (lebih bagus tampilannya):&lt;br /&gt;
 #htop (enter)&lt;br /&gt;
&lt;br /&gt;
== 2. Menjalankan dan Menghentikan Proses ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1 Menjalankan Proses di Background ===&lt;br /&gt;
Jalankan perintah di latar belakang:&lt;br /&gt;
 #sleep 300 &amp;amp; (enter)&lt;br /&gt;
 [1] 4321&lt;br /&gt;
&lt;br /&gt;
Angka [1] = nomor job, 4321 = PID.&lt;br /&gt;
&lt;br /&gt;
=== 2.2 Melihat Daftar Job ===&lt;br /&gt;
 #jobs (enter)&lt;br /&gt;
 [1]+  Running    sleep 300 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
=== 2.3 Memindahkan Proses ke Foreground ===&lt;br /&gt;
 #fg (enter)&lt;br /&gt;
&lt;br /&gt;
=== 2.4 Menghentikan Proses ===&lt;br /&gt;
Paksa mati dengan PID:&lt;br /&gt;
 #kill -9 4321 (enter)&lt;br /&gt;
&lt;br /&gt;
Minta berhenti dengan sopan:&lt;br /&gt;
 #kill 4321 (enter)&lt;br /&gt;
&lt;br /&gt;
Cek proses sudah hilang:&lt;br /&gt;
 #ps aux | grep sleep (enter)&lt;br /&gt;
&lt;br /&gt;
## 3. Manajemen Service dengan systemctl&lt;br /&gt;
systemctl adalah perintah utama untuk mengelola service.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Melihat Status Service ===&lt;br /&gt;
 #systemctl status ssh (enter)&lt;br /&gt;
&lt;br /&gt;
Perhatikan bagian &#039;&#039;&#039;Active: active (running)&#039;&#039;&#039; artinya service berjalan normal. Jika ada kata &#039;&#039;&#039;failed&#039;&#039;&#039; atau &#039;&#039;&#039;inactive&#039;&#039;&#039;, service bermasalah/mati.&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Menjalankan dan Menghentikan Service ===&lt;br /&gt;
Menjalankan service:&lt;br /&gt;
 #systemctl start ssh (enter)&lt;br /&gt;
&lt;br /&gt;
Menghentikan service:&lt;br /&gt;
 #systemctl stop ssh (enter)&lt;br /&gt;
&lt;br /&gt;
Merestart (mengulang) service:&lt;br /&gt;
 #systemctl restart ssh (enter)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Service Saat Boot ===&lt;br /&gt;
Melihat daftar service yang berjalan saat server dinyalakan:&lt;br /&gt;
 #systemctl list-unit-files --state=enabled (enter)&lt;br /&gt;
&lt;br /&gt;
Mengatur service agar ikut berjalan saat boot:&lt;br /&gt;
 #systemctl enable ssh (enter)&lt;br /&gt;
&lt;br /&gt;
Mengatur service agar tidak berjalan saat boot:&lt;br /&gt;
 #systemctl disable ssh (enter)&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Melihat Semua Service yang Berjalan ===&lt;br /&gt;
 #systemctl list-units --type=service --state=running (enter)&lt;br /&gt;
&lt;br /&gt;
## 4. Melihat Log (Catatan) Service&lt;br /&gt;
Setiap service mencatat aktivitasnya di log. Untuk melihat log:&lt;br /&gt;
 #journalctl -u ssh (enter)&lt;br /&gt;
&lt;br /&gt;
Melihat log terakhir (10 baris):&lt;br /&gt;
 #journalctl -u ssh -n 10 (enter)&lt;br /&gt;
&lt;br /&gt;
Melihat log secara real-time (terus bertambah):&lt;br /&gt;
 #journalctl -u ssh -f (enter)&lt;br /&gt;
&lt;br /&gt;
Tekan ctrl+c untuk berhenti.&lt;br /&gt;
&lt;br /&gt;
Melihat log semua service:&lt;br /&gt;
 #journalctl (enter)&lt;br /&gt;
&lt;br /&gt;
## 5. Contoh Praktik Nyata&lt;br /&gt;
Mari praktik mengelola service FTP yang sudah pernah kita install:&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Cek service vsftpd ===&lt;br /&gt;
 #systemctl status vsftpd (enter)&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Hentikan service ===&lt;br /&gt;
 #systemctl stop vsftpd (enter)&lt;br /&gt;
 #systemctl status vsftpd (enter)&lt;br /&gt;
&lt;br /&gt;
Sekarang statusnya &#039;&#039;&#039;inactive (dead)&#039;&#039;&#039; dan FTP tidak bisa diakses.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 Jalankan lagi ===&lt;br /&gt;
 #systemctl start vsftpd (enter)&lt;br /&gt;
 #systemctl status vsftpd (enter)&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Lihat log-nya ===&lt;br /&gt;
 #journalctl -u vsftpd -n 20 (enter)&lt;br /&gt;
&lt;br /&gt;
= Kesimpulan =&lt;br /&gt;
* &#039;&#039;&#039;Proses&#039;&#039;&#039; = program yang berjalan, punya PID.&lt;br /&gt;
* &#039;&#039;&#039;Service&#039;&#039;&#039; = proses yang selalu berjalan di latar belakang.&lt;br /&gt;
* &#039;&#039;&#039;ps / top&#039;&#039;&#039; = melihat proses, &#039;&#039;&#039;kill&#039;&#039;&#039; = menghentikannya.&lt;br /&gt;
* &#039;&#039;&#039;systemctl&#039;&#039;&#039; = perintah utama mengelola service (start, stop, restart, enable, disable, status).&lt;br /&gt;
* &#039;&#039;&#039;journalctl&#039;&#039;&#039; = melihat catatan/log service.&lt;br /&gt;
&lt;br /&gt;
= Tugas Praktek Individu =&lt;br /&gt;
Kerjakan di server Debian 12 masing-masing, lalu tulis laporan dengan screenshot.&lt;br /&gt;
&lt;br /&gt;
1. Jalankan perintah sleep 100 &amp;amp; dan catat PID-nya.&lt;br /&gt;
&lt;br /&gt;
2. Gunakan ps aux untuk mencari proses sleep tersebut.&lt;br /&gt;
&lt;br /&gt;
3. Matikan prosesnya dengan kill -9 beserta PID-nya, lalu buktikan sudah hilang dengan ps aux | grep sleep.&lt;br /&gt;
&lt;br /&gt;
4. Gunakan systemctl status untuk melihat status service ssh dan vsftpd.&lt;br /&gt;
&lt;br /&gt;
5. Restart service ssh, lalu catat hasilnya.&lt;br /&gt;
&lt;br /&gt;
6. Hentikan service vsftpd, buktikan statusnya inactive, lalu jalankan kembali.&lt;br /&gt;
&lt;br /&gt;
7. Gunakan journalctl -u ssh -n 10 untuk melihat 10 log terakhir SSH.&lt;br /&gt;
&lt;br /&gt;
8. Gunakan journalctl -u vsftpd -f dan amati apa yang bertambah saat kamu mencoba login FTP (hentikan dengan ctrl+c).&lt;br /&gt;
&lt;br /&gt;
9. Buat daftar (dengan perintah) service apa saja yang sedang running di servermu.&lt;br /&gt;
&lt;br /&gt;
10. Tulis kesimpulan: perbedaan cara melihat proses (ps/top) dengan cara melihat service (systemctl).&lt;br /&gt;
&lt;br /&gt;
Kumpulkan laporan sesuai format yang ditentukan guru.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Manajemen_Proses_dan_Service_di_Debian_12&amp;diff=2415</id>
		<title>Manajemen Proses dan Service di Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Manajemen_Proses_dan_Service_di_Debian_12&amp;diff=2415"/>
		<updated>2026-08-05T04:31:31Z</updated>

		<summary type="html">&lt;p&gt;Robie: /* Tugas Praktek Individu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apa itu Proses dan Service? =&lt;br /&gt;
&lt;br /&gt;
Bayangkan sebuah &#039;&#039;&#039;dapur restoran&#039;&#039;&#039; yang sedang ramai. Ada banyak pekerja sedang memasak: ada yang menggoreng, mengiris bawang, merebus sup. Semua pekerja itu bekerja bersamaan dan diatur oleh kepala dapur.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Proses&#039;&#039;&#039; = program yang sedang berjalan di server (seperti satu pekerja yang sedang bekerja).&lt;br /&gt;
* &#039;&#039;&#039;PID (Process ID)&#039;&#039;&#039; = nomor identitas setiap proses (seperti kartu nama pekerja).&lt;br /&gt;
* &#039;&#039;&#039;Service (Layanan)&#039;&#039;&#039; = proses yang berjalan terus-menerus di belakang, siap melayani kapan saja (seperti juru masak yang selalu standby).&lt;br /&gt;
* &#039;&#039;&#039;Daemon&#039;&#039;&#039; = sebutan untuk service yang berjalan di latar belakang. Nama daemon biasanya berakhiran &amp;quot;d&amp;quot;, contoh: sshd, vsftpd, smbd.&lt;br /&gt;
* &#039;&#039;&#039;systemd&#039;&#039;&#039; = sistem yang mengatur semua service di Debian modern (seperti kepala dapur).&lt;br /&gt;
&lt;br /&gt;
== Proses vs Service ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Proses !! Service&lt;br /&gt;
|-&lt;br /&gt;
| Berjalan saat ada perintah || Berjalan terus di latar belakang&lt;br /&gt;
|-&lt;br /&gt;
| Berhenti saat perintah selesai || Tetap berjalan walau tidak dipakai&lt;br /&gt;
|-&lt;br /&gt;
| Contoh: ping, nano, curl || Contoh: ssh, apache2, mariadb&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Teori: Cara Linux Mengelola Proses =&lt;br /&gt;
&lt;br /&gt;
== 1. Foreground dan Background ==&lt;br /&gt;
* &#039;&#039;&#039;Foreground&#039;&#039;&#039; = proses yang berjalan di layar dan kita lihat langsung (contoh: nano).&lt;br /&gt;
* &#039;&#039;&#039;Background&#039;&#039;&#039; = proses yang berjalan di belakang tanpa tampilan, terminal tetap bisa dipakai (contoh: backup).&lt;br /&gt;
&lt;br /&gt;
Untuk menjalankan proses di latar belakang, tambahkan simbol &amp;amp; di akhir perintah:&lt;br /&gt;
 #sleep 100 &amp;amp; (enter)&lt;br /&gt;
&lt;br /&gt;
## 2. PID dan Sinyal&lt;br /&gt;
Setiap proses punya PID. Kita bisa mengirim &amp;quot;sinyal&amp;quot; ke proses lewat PID-nya:&lt;br /&gt;
* Sinyal 1 (HUP) = restart proses.&lt;br /&gt;
* Sinyal 9 (KILL) = paksa mati.&lt;br /&gt;
* Sinyal 15 (TERM) = minta berhenti dengan sopan.&lt;br /&gt;
&lt;br /&gt;
= Praktik: Manajemen Proses dan Service di Debian 12 =&lt;br /&gt;
&lt;br /&gt;
== 1. Melihat Proses yang Berjalan ==&lt;br /&gt;
&lt;br /&gt;
=== 1.1 ps - Daftar Proses ===&lt;br /&gt;
Melihat semua proses di server:&lt;br /&gt;
 #ps aux (enter)&lt;br /&gt;
&lt;br /&gt;
Penjelasan kolom:&lt;br /&gt;
* &#039;&#039;&#039;USER&#039;&#039;&#039; = pemilik proses&lt;br /&gt;
* &#039;&#039;&#039;PID&#039;&#039;&#039; = nomor proses&lt;br /&gt;
* &#039;&#039;&#039;%CPU / %MEM&#039;&#039;&#039; = pemakaian CPU dan RAM&lt;br /&gt;
* &#039;&#039;&#039;COMMAND&#039;&#039;&#039; = nama program&lt;br /&gt;
&lt;br /&gt;
Untuk melihat proses tertentu (misal ssh):&lt;br /&gt;
 #ps aux | grep ssh (enter)&lt;br /&gt;
&lt;br /&gt;
=== 1.2 top - Monitor Proses Real-time ===&lt;br /&gt;
 #top (enter)&lt;br /&gt;
&lt;br /&gt;
Tampilan berubah terus menerus. Kolom PID dan %CPU memudahkan kita melihat proses mana yang &amp;quot;nakal&amp;quot; (memakan sumber daya). Tekan &#039;&#039;&#039;q&#039;&#039;&#039; untuk keluar.&lt;br /&gt;
&lt;br /&gt;
Jika terinstall htop (lebih bagus tampilannya):&lt;br /&gt;
 #htop (enter)&lt;br /&gt;
&lt;br /&gt;
== 2. Menjalankan dan Menghentikan Proses ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1 Menjalankan Proses di Background ===&lt;br /&gt;
Jalankan perintah di latar belakang:&lt;br /&gt;
 #sleep 300 &amp;amp; (enter)&lt;br /&gt;
 [1] 4321&lt;br /&gt;
&lt;br /&gt;
Angka [1] = nomor job, 4321 = PID.&lt;br /&gt;
&lt;br /&gt;
=== 2.2 Melihat Daftar Job ===&lt;br /&gt;
 #jobs (enter)&lt;br /&gt;
 [1]+  Running    sleep 300 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
=== 2.3 Memindahkan Proses ke Foreground ===&lt;br /&gt;
 #fg (enter)&lt;br /&gt;
&lt;br /&gt;
=== 2.4 Menghentikan Proses ===&lt;br /&gt;
Paksa mati dengan PID:&lt;br /&gt;
 #kill -9 4321 (enter)&lt;br /&gt;
&lt;br /&gt;
Minta berhenti dengan sopan:&lt;br /&gt;
 #kill 4321 (enter)&lt;br /&gt;
&lt;br /&gt;
Cek proses sudah hilang:&lt;br /&gt;
 #ps aux | grep sleep (enter)&lt;br /&gt;
&lt;br /&gt;
## 3. Manajemen Service dengan systemctl&lt;br /&gt;
systemctl adalah perintah utama untuk mengelola service.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Melihat Status Service ===&lt;br /&gt;
 #systemctl status ssh (enter)&lt;br /&gt;
&lt;br /&gt;
Perhatikan bagian &#039;&#039;&#039;Active: active (running)&#039;&#039;&#039; artinya service berjalan normal. Jika ada kata &#039;&#039;&#039;failed&#039;&#039;&#039; atau &#039;&#039;&#039;inactive&#039;&#039;&#039;, service bermasalah/mati.&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Menjalankan dan Menghentikan Service ===&lt;br /&gt;
Menjalankan service:&lt;br /&gt;
 #systemctl start ssh (enter)&lt;br /&gt;
&lt;br /&gt;
Menghentikan service:&lt;br /&gt;
 #systemctl stop ssh (enter)&lt;br /&gt;
&lt;br /&gt;
Merestart (mengulang) service:&lt;br /&gt;
 #systemctl restart ssh (enter)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Service Saat Boot ===&lt;br /&gt;
Melihat daftar service yang berjalan saat server dinyalakan:&lt;br /&gt;
 #systemctl list-unit-files --state=enabled (enter)&lt;br /&gt;
&lt;br /&gt;
Mengatur service agar ikut berjalan saat boot:&lt;br /&gt;
 #systemctl enable ssh (enter)&lt;br /&gt;
&lt;br /&gt;
Mengatur service agar tidak berjalan saat boot:&lt;br /&gt;
 #systemctl disable ssh (enter)&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Melihat Semua Service yang Berjalan ===&lt;br /&gt;
 #systemctl list-units --type=service --state=running (enter)&lt;br /&gt;
&lt;br /&gt;
## 4. Melihat Log (Catatan) Service&lt;br /&gt;
Setiap service mencatat aktivitasnya di log. Untuk melihat log:&lt;br /&gt;
 #journalctl -u ssh (enter)&lt;br /&gt;
&lt;br /&gt;
Melihat log terakhir (10 baris):&lt;br /&gt;
 #journalctl -u ssh -n 10 (enter)&lt;br /&gt;
&lt;br /&gt;
Melihat log secara real-time (terus bertambah):&lt;br /&gt;
 #journalctl -u ssh -f (enter)&lt;br /&gt;
&lt;br /&gt;
Tekan ctrl+c untuk berhenti.&lt;br /&gt;
&lt;br /&gt;
Melihat log semua service:&lt;br /&gt;
 #journalctl (enter)&lt;br /&gt;
&lt;br /&gt;
## 5. Contoh Praktik Nyata&lt;br /&gt;
Mari praktik mengelola service FTP yang sudah pernah kita install:&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Cek service vsftpd ===&lt;br /&gt;
 #systemctl status vsftpd (enter)&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Hentikan service ===&lt;br /&gt;
 #systemctl stop vsftpd (enter)&lt;br /&gt;
 #systemctl status vsftpd (enter)&lt;br /&gt;
&lt;br /&gt;
Sekarang statusnya &#039;&#039;&#039;inactive (dead)&#039;&#039;&#039; dan FTP tidak bisa diakses.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 Jalankan lagi ===&lt;br /&gt;
 #systemctl start vsftpd (enter)&lt;br /&gt;
 #systemctl status vsftpd (enter)&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Lihat log-nya ===&lt;br /&gt;
 #journalctl -u vsftpd -n 20 (enter)&lt;br /&gt;
&lt;br /&gt;
= Kesimpulan =&lt;br /&gt;
* &#039;&#039;&#039;Proses&#039;&#039;&#039; = program yang berjalan, punya PID.&lt;br /&gt;
* &#039;&#039;&#039;Service&#039;&#039;&#039; = proses yang selalu berjalan di latar belakang.&lt;br /&gt;
* &#039;&#039;&#039;ps / top&#039;&#039;&#039; = melihat proses, &#039;&#039;&#039;kill&#039;&#039;&#039; = menghentikannya.&lt;br /&gt;
* &#039;&#039;&#039;systemctl&#039;&#039;&#039; = perintah utama mengelola service (start, stop, restart, enable, disable, status).&lt;br /&gt;
* &#039;&#039;&#039;journalctl&#039;&#039;&#039; = melihat catatan/log service.&lt;br /&gt;
&lt;br /&gt;
= Tugas Praktek Individu =&lt;br /&gt;
Kerjakan di server Debian 12 masing-masing, lalu tulis laporan dengan screenshot.&lt;br /&gt;
&lt;br /&gt;
1. Jalankan perintah sleep 100 &amp;amp; dan catat PID-nya.&lt;br /&gt;
&lt;br /&gt;
2. Gunakan ps aux untuk mencari proses sleep tersebut.&lt;br /&gt;
&lt;br /&gt;
3. Matikan prosesnya dengan kill -9 beserta PID-nya, lalu buktikan sudah hilang dengan ps aux | grep sleep.&lt;br /&gt;
&lt;br /&gt;
4. Gunakan systemctl status untuk melihat status service ssh dan vsftpd.&lt;br /&gt;
&lt;br /&gt;
5. Restart service ssh, lalu catat hasilnya.&lt;br /&gt;
&lt;br /&gt;
6. Hentikan service vsftpd, buktikan statusnya inactive, lalu jalankan kembali.&lt;br /&gt;
&lt;br /&gt;
7. Gunakan journalctl -u ssh -n 10 untuk melihat 10 log terakhir SSH.&lt;br /&gt;
&lt;br /&gt;
8. Gunakan journalctl -u vsftpd -f dan amati apa yang bertambah saat kamu mencoba login FTP (hentikan dengan ctrl+c).&lt;br /&gt;
&lt;br /&gt;
9. Buat daftar (dengan perintah) service apa saja yang sedang running di servermu.&lt;br /&gt;
&lt;br /&gt;
10. Tulis kesimpulan: perbedaan cara melihat proses (ps/top) dengan cara melihat service (systemctl).&lt;br /&gt;
&lt;br /&gt;
Kumpulkan laporan sesuai format yang ditentukan guru.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Install_File_Server_di_Debian_12&amp;diff=2414</id>
		<title>Install File Server di Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Install_File_Server_di_Debian_12&amp;diff=2414"/>
		<updated>2026-08-05T04:30:01Z</updated>

		<summary type="html">&lt;p&gt;Robie: /* Tugas Praktek Individu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apa itu File Server? =&lt;br /&gt;
&lt;br /&gt;
Bayangkan sebuah &#039;&#039;&#039;lemari arsip&#039;&#039;&#039; di ruang guru yang bisa dipakai semua orang. Semua guru boleh menyimpan dan mengambil dokumen dari lemari itu, asalkan punya kunci.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;File Server&#039;&#039;&#039; = komputer yang menyediakan tempat penyimpanan file bersama yang bisa diakses banyak komputer lewat jaringan.&lt;br /&gt;
* &#039;&#039;&#039;Share (Berbagi)&#039;&#039;&#039; = folder di server yang dibagikan agar bisa diakses komputer lain.&lt;br /&gt;
* &#039;&#039;&#039;Samba&#039;&#039;&#039; = aplikasi di Linux yang membuat Linux bisa berbagi file dengan komputer Windows, seolah-olah Linux adalah komputer Windows.&lt;br /&gt;
&lt;br /&gt;
Dengan Samba, siswa yang komputernya Windows bisa langsung membuka folder di server Linux dan bertukar file, sama seperti berbagi folder antar komputer Windows.&lt;br /&gt;
&lt;br /&gt;
== Kenapa memakai Samba? ==&lt;br /&gt;
* Linux bisa berbagi file dengan Windows secara mudah.&lt;br /&gt;
* Bisa mengatur siapa yang boleh membaca, menulis, atau hanya melihat.&lt;br /&gt;
* Banyak dipakai di kantor, sekolah, dan warnet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nama Layanan !! Tugas !! Port&lt;br /&gt;
|-&lt;br /&gt;
| SMB || Berbagi file dan printer || 445&lt;br /&gt;
|-&lt;br /&gt;
| NetBIOS || Menemukan komputer di jaringan || 139 / 137&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Praktik: Install File Server dengan Samba di Debian 12 =&lt;br /&gt;
&lt;br /&gt;
== 1. Persiapan ==&lt;br /&gt;
Pastikan server sudah dapat IP dan terhubung internet.&lt;br /&gt;
&lt;br /&gt;
Cek IP:&lt;br /&gt;
 #ip a (enter)&lt;br /&gt;
&lt;br /&gt;
Cek internet:&lt;br /&gt;
 #ping google.com (enter)&lt;br /&gt;
&lt;br /&gt;
Update sistem:&lt;br /&gt;
 #apt update (enter)&lt;br /&gt;
&lt;br /&gt;
== 2. Install Samba ==&lt;br /&gt;
 #apt install -y samba (enter)&lt;br /&gt;
&lt;br /&gt;
Cek hasil instalasi:&lt;br /&gt;
 #samba --version (enter)&lt;br /&gt;
&lt;br /&gt;
== 3. Backup File Konfigurasi ==&lt;br /&gt;
Buat salinan file konfigurasi dulu supaya aman:&lt;br /&gt;
 #cp /etc/samba/smb.conf /etc/samba/smb.conf.bak (enter)&lt;br /&gt;
&lt;br /&gt;
== 4. Konfigurasi Samba ==&lt;br /&gt;
Buka file konfigurasi:&lt;br /&gt;
 #nano /etc/samba/smb.conf (enter)&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Ubah Kelompok Kerja (Opsional) ===&lt;br /&gt;
Cari baris (biasanya di bagian **[global]**):&lt;br /&gt;
 mind max protocol = SMB2&lt;br /&gt;
&lt;br /&gt;
Jika tidak ada, abaikan. Biarkan pengaturan lain seperti semula.&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Buat Folder Share Baru ===&lt;br /&gt;
Tambahkan blok berikut di bagian paling bawah file (letakkan setelah blok [printers] atau di akhir):&lt;br /&gt;
&lt;br /&gt;
 [file-bersama]&lt;br /&gt;
    path = /srv/file-bersama&lt;br /&gt;
    browseable = yes&lt;br /&gt;
    public = yes&lt;br /&gt;
    writable = yes&lt;br /&gt;
    create mask = 0664&lt;br /&gt;
    directory mask = 0775&lt;br /&gt;
&lt;br /&gt;
Penjelasan tiap baris:&lt;br /&gt;
* **[file-bersama]** = nama yang akan terlihat oleh komputer lain.&lt;br /&gt;
* **path** = letak folder asli di server.&lt;br /&gt;
* **browseable = yes** = folder terlihat saat dibuka lewat jaringan.&lt;br /&gt;
* **public = yes** = boleh dilihat tanpa login.&lt;br /&gt;
* **writable = yes** = boleh menulis/menambah file.&lt;br /&gt;
* **create mask / directory mask** = izin file/folder yang baru dibuat.&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 5. Buat Folder di Server ==&lt;br /&gt;
Buat folder sesuai path yang kita atur:&lt;br /&gt;
 #mkdir -p /srv/file-bersama (enter)&lt;br /&gt;
&lt;br /&gt;
Atur izin agar semua user bisa membaca dan menulis:&lt;br /&gt;
 #chmod 777 /srv/file-bersama (enter)&lt;br /&gt;
&lt;br /&gt;
== 6. Buat User Samba ==&lt;br /&gt;
Samba punya username dan password sendiri (terpisah dari user Linux).&lt;br /&gt;
&lt;br /&gt;
Buat user Linux dulu (misal: siswa1):&lt;br /&gt;
 #adduser siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Isi password Linux 2 kali, lalu enter untuk sisanya.&lt;br /&gt;
&lt;br /&gt;
Daftarkan user tersebut ke Samba:&lt;br /&gt;
 #smbpasswd -a siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Akan diminta password (boleh sama atau berbeda dengan password Linux), isi 2 kali.&lt;br /&gt;
&lt;br /&gt;
Aktifkan user Samba:&lt;br /&gt;
 #smbpasswd -e siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
== 7. Restart dan Cek Samba ==&lt;br /&gt;
 #systemctl restart smbd (enter)&lt;br /&gt;
 #systemctl status smbd (enter)&lt;br /&gt;
&lt;br /&gt;
Jika muncul tulisan &#039;&#039;&#039;active (running)&#039;&#039;&#039; artinya berhasil.&lt;br /&gt;
&lt;br /&gt;
== 8. Tes dari Terminal (di Server) ==&lt;br /&gt;
Cek bahwa share sudah terdaftar:&lt;br /&gt;
 #smbclient -L localhost (enter)&lt;br /&gt;
&lt;br /&gt;
Masukkan password siswa1. Akan muncul daftar share termasuk &#039;&#039;&#039;file-bersama&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 9. Tes dari Windows ==&lt;br /&gt;
Buka Windows, lalu:&lt;br /&gt;
&lt;br /&gt;
# Cara 1: Melalui Run&lt;br /&gt;
Tekan tombol &#039;&#039;&#039;Win + R&#039;&#039;&#039;, ketikkan:&lt;br /&gt;
 \\192.168.20.8 (enter)   (ganti dengan IP server kamu)&lt;br /&gt;
&lt;br /&gt;
# Cara 2: Melalui File Explorer&lt;br /&gt;
Ketikkan di kolom alamat:&lt;br /&gt;
 \\192.168.20.8 (enter)&lt;br /&gt;
&lt;br /&gt;
Kemudian:&lt;br /&gt;
1. Akan muncul folder &#039;&#039;&#039;file-bersama&#039;&#039;&#039;.&lt;br /&gt;
2. Klik folder tersebut, lalu login dengan username dan password &#039;&#039;&#039;Samba&#039;&#039;&#039; (yang dibuat di Langkah 6).&lt;br /&gt;
3. Jika berhasil, kamu bisa mengisi folder, menghapus, dan mengambil file.&lt;br /&gt;
&lt;br /&gt;
== 10. Upload Test File ==&lt;br /&gt;
Untuk memastikan bisa menulis:&lt;br /&gt;
 # Dari Windows: drag and drop sebuah file ke folder file-bersama.&lt;br /&gt;
 # Di server, cek file tersebut muncul dengan cara:&lt;br /&gt;
   #ls -l /srv/file-bersama (enter)&lt;br /&gt;
&lt;br /&gt;
Jika file muncul, artinya File Server sudah berfungsi.&lt;br /&gt;
&lt;br /&gt;
= Kesimpulan =&lt;br /&gt;
* &#039;&#039;&#039;File Server&#039;&#039;&#039; = tempat penyimpanan file bersama yang bisa diakses banyak komputer.&lt;br /&gt;
* &#039;&#039;&#039;Samba&#039;&#039;&#039; = aplikasi yang membuat Linux berbagi file dengan Windows.&lt;br /&gt;
* Konfigurasi ada di /etc/samba/smb.conf.&lt;br /&gt;
* Folder share diatur lewat blok **[nama-share]** dengan path.&lt;br /&gt;
* User Samba diatur terpisah dengan perintah smbpasswd.&lt;br /&gt;
&lt;br /&gt;
= Tugas Praktek Individu =&lt;br /&gt;
Kerjakan di server Debian 12 masing-masing, lalu tulis laporan lengkap dengan screenshot.&lt;br /&gt;
&lt;br /&gt;
1. Install Samba di Debian 12.&lt;br /&gt;
&lt;br /&gt;
2. Buat folder /srv/file-bersama dan beri izin 777.&lt;br /&gt;
&lt;br /&gt;
3. Buat share bernama **[file-bersama]** yang writable (boleh ditulis).&lt;br /&gt;
&lt;br /&gt;
4. Buat 2 user Linux (user1 dan user2) lalu daftarkan keduanya ke Samba.&lt;br /&gt;
&lt;br /&gt;
5. Dari Windows, buka \\IP-server dan pastikan folder file-bersama terlihat.&lt;br /&gt;
&lt;br /&gt;
6. Upload 1 file dari Windows, lalu cek kemunculannya di server dengan ls -l.&lt;br /&gt;
&lt;br /&gt;
7. Login sebagai user1 dan user2, pastikan keduanya bisa mengakses.&lt;br /&gt;
&lt;br /&gt;
8. Ubah salah satu share menjadi public = no, amati apa yang terjadi saat diakses tanpa login.&lt;br /&gt;
&lt;br /&gt;
9. Catat langkah-langkah di laporan dan jelaskan arti baris path, writable, dan create mask.&lt;br /&gt;
&lt;br /&gt;
Kumpulkan laporan sesuai format yang ditentukan guru.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Install_Email_Server_di_Debian_12&amp;diff=2411</id>
		<title>Install Email Server di Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Install_Email_Server_di_Debian_12&amp;diff=2411"/>
		<updated>2026-08-05T04:03:44Z</updated>

		<summary type="html">&lt;p&gt;Robie: /* 2. Install Postfix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apa itu Email Server? =&lt;br /&gt;
&lt;br /&gt;
Bayangkan &#039;&#039;&#039;kantor pos&#039;&#039;&#039;. Kamu menulis surat, memasukkannya ke amplop, lalu menyerahkannya ke petugas pos. Petugas itulah yang bertugas mengantar surat ke alamat tujuan.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email Server&#039;&#039;&#039; = kantor pos digital yang bertugas &#039;&#039;&#039;mengirim dan menerima&#039;&#039;&#039; email.&lt;br /&gt;
* &#039;&#039;&#039;Surat&#039;&#039;&#039; = isi email (teks, lampiran file).&lt;br /&gt;
* &#039;&#039;&#039;Alamat email&#039;&#039;&#039; = alamat rumah penerima, contoh: siswa1@smekta.sch.id.&lt;br /&gt;
* &#039;&#039;&#039;Mail Client&#039;&#039;&#039; = aplikasi yang dipakai untuk menulis dan membaca email (seperti kamu sebagai pengirim/penerima surat).&lt;br /&gt;
&lt;br /&gt;
== Dua Layanan Utama dalam Email Server ==&lt;br /&gt;
Untuk membuat email server yang lengkap, butuh 2 aplikasi yang bekerja berpasangan:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Aplikasi !! Tugas !! Analogi !! Port&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Postfix&#039;&#039;&#039; || Mengirim email (SMTP) || Petugas pos yang mengantar surat || 25&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Dovecot&#039;&#039;&#039; || Menyimpan dan membaca email (IMAP/POP3) || Gudang penyimpanan surat || 143 / 110&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SMTP&#039;&#039;&#039; = protokol untuk &#039;&#039;mengirim&#039;&#039; email (dipakai Postfix).&lt;br /&gt;
* &#039;&#039;&#039;IMAP&#039;&#039;&#039; = protokol untuk &#039;&#039;membaca&#039;&#039; email dari server (dipakai Dovecot).&lt;br /&gt;
* &#039;&#039;&#039;POP3&#039;&#039;&#039; = protokol lama untuk &#039;&#039;mengunduh&#039;&#039; email lalu menghapusnya dari server.&lt;br /&gt;
&lt;br /&gt;
Pada praktik ini kita akan:&lt;br /&gt;
&lt;br /&gt;
1. Install &#039;&#039;&#039;Postfix&#039;&#039;&#039; (mengirim email).&lt;br /&gt;
&lt;br /&gt;
2. Install &#039;&#039;&#039;Dovecot&#039;&#039;&#039; (membaca email).&lt;br /&gt;
&lt;br /&gt;
3. Buat user pemilik email.&lt;br /&gt;
&lt;br /&gt;
4. Mengirim email antar user dalam satu server.&lt;br /&gt;
&lt;br /&gt;
= Praktik: Install Email Server di Debian 12 =&lt;br /&gt;
&lt;br /&gt;
== 1. Persiapan ==&lt;br /&gt;
Pastikan server sudah dapat IP dan terhubung internet.&lt;br /&gt;
&lt;br /&gt;
Cek IP:&lt;br /&gt;
 #ip a (enter)&lt;br /&gt;
&lt;br /&gt;
Cek internet:&lt;br /&gt;
 #ping google.com (enter)&lt;br /&gt;
&lt;br /&gt;
Update sistem:&lt;br /&gt;
 #apt update (enter)&lt;br /&gt;
&lt;br /&gt;
== 2. Install Postfix ==&lt;br /&gt;
 #apt install -y postfix (enter)&lt;br /&gt;
&lt;br /&gt;
Selama instalasi akan muncul jendela konfigurasi. Isi sebagai berikut:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Langkah 1&#039;&#039;&#039; - Pilih konfigurasi: pilih &#039;&#039;&#039;Internet Site&#039;&#039;&#039; lalu tekan enter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Langkah 2&#039;&#039;&#039; - System mail name: ketik domain kamu, contoh &#039;&#039;&#039;smekta.sch.id&#039;&#039;&#039; lalu tekan enter.&lt;br /&gt;
&lt;br /&gt;
Jika jendela tidak muncul atau terlewat, kita tetap bisa mengaturnya di bagian konfigurasi nanti.&lt;br /&gt;
&lt;br /&gt;
Cek hasil instalasi:&lt;br /&gt;
 #postconf mail_version (enter)&lt;br /&gt;
&lt;br /&gt;
== 3. Konfigurasi Postfix ==&lt;br /&gt;
Buka file konfigurasi utama Postfix:&lt;br /&gt;
 #nano /etc/postfix/main.cf (enter)&lt;br /&gt;
&lt;br /&gt;
Pastikan beberapa baris berikut ada dan sesuai:&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Nama Domain ===&lt;br /&gt;
Cari dan pastikan baris ini:&lt;br /&gt;
 myhostname = smekta.sch.id&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Terima Email untuk Domain Ini ===&lt;br /&gt;
Cari dan pastikan:&lt;br /&gt;
 mydestination = $myhostname, smekta.sch.id, localhost.smekta.sch.id, localhost&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Batas Ukuran Email ===&lt;br /&gt;
Tambahkan di bagian paling bawah file:&lt;br /&gt;
 mailbox_size_limit = 0&lt;br /&gt;
 message_size_limit = 10240000&lt;br /&gt;
&lt;br /&gt;
Artinya: kapasitas email tidak dibatasi (0), dan ukuran satu email maksimal 10 MB.&lt;br /&gt;
&lt;br /&gt;
Simpan: tekan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 4. Restart dan Cek Postfix ==&lt;br /&gt;
 #systemctl restart postfix (enter)&lt;br /&gt;
 #systemctl status postfix (enter)&lt;br /&gt;
&lt;br /&gt;
Jika muncul tulisan &#039;&#039;&#039;active (running)&#039;&#039;&#039; artinya berhasil.&lt;br /&gt;
&lt;br /&gt;
== 5. Install Dovecot ==&lt;br /&gt;
 #apt install -y dovecot-imapd dovecot-pop3d (enter)&lt;br /&gt;
&lt;br /&gt;
Cek hasil instalasi:&lt;br /&gt;
 #dovecot --version (enter)&lt;br /&gt;
&lt;br /&gt;
== 6. Konfigurasi Dovecot ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Aktifkan Protokol IMAP ===&lt;br /&gt;
Buka file konfigurasi:&lt;br /&gt;
 #nano /etc/dovecot/dovecot.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 protocols = imap pop3 lmtp submission&lt;br /&gt;
&lt;br /&gt;
Jika diawali tanda pagar (#), hapus tanda pagarnya:&lt;br /&gt;
 protocols = imap pop3 lmtp submission&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Izinkan Login dengan Password Biasa ===&lt;br /&gt;
Buka file:&lt;br /&gt;
 #nano /etc/dovecot/conf.d/10-auth.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 disable_plaintext_auth = yes&lt;br /&gt;
&lt;br /&gt;
Ubah menjadi:&lt;br /&gt;
 disable_plaintext_auth = no&lt;br /&gt;
&lt;br /&gt;
Artinya: client boleh login menggunakan password biasa (untuk latihan di jaringan lokal).&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 6.3 Pastikan Mailbox di Folder User ===&lt;br /&gt;
Buka file:&lt;br /&gt;
 #nano /etc/dovecot/conf.d/10-mail.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 mail_location = mbox:~/mail:INBOX=/var/mail/%u&lt;br /&gt;
&lt;br /&gt;
Ubah menjadi (agar email disimpan di folder user, bukan di memori):&lt;br /&gt;
 mail_location = maildir:~/Maildir&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 7. Restart dan Cek Dovecot ==&lt;br /&gt;
 #systemctl restart dovecot (enter)&lt;br /&gt;
 #systemctl status dovecot (enter)&lt;br /&gt;
&lt;br /&gt;
Jika muncul tulisan &#039;&#039;&#039;active (running)&#039;&#039;&#039; artinya berhasil.&lt;br /&gt;
&lt;br /&gt;
== 8. Buat User Pemilik Email ==&lt;br /&gt;
Setiap user di Linux otomatis bisa punya alamat email, contoh: siswa1@smekta.sch.id&lt;br /&gt;
&lt;br /&gt;
Buat user siswa1 (seperti materi Manajemen User):&lt;br /&gt;
 #adduser siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Isi password 2 kali, lalu tekan enter untuk pertanyaan selanjutnya.&lt;br /&gt;
&lt;br /&gt;
Buat user kedua untuk latihan kirim email:&lt;br /&gt;
 #adduser siswa2 (enter)&lt;br /&gt;
&lt;br /&gt;
== 9. Tes Kirim Email dari Terminal ==&lt;br /&gt;
Install aplikasi mail untuk tes:&lt;br /&gt;
 #apt install -y mailutils (enter)&lt;br /&gt;
&lt;br /&gt;
Kirim email dari siswa1 ke siswa2:&lt;br /&gt;
 #echo &amp;quot;Halo siswa2, ini email pertama dari siswa1&amp;quot; | mail -s &amp;quot;Email Percobaan&amp;quot; siswa2@smekta.sch.id (enter)&lt;br /&gt;
&lt;br /&gt;
Jika tidak ada error, email terkirim. Cek status antrean email:&lt;br /&gt;
 #mailq (enter)&lt;br /&gt;
&lt;br /&gt;
Jika antrean kosong, artinya email sudah berhasil dikirim.&lt;br /&gt;
&lt;br /&gt;
== 10. Cek Email Masuk ==&lt;br /&gt;
Buka email sebagai siswa2 dengan login user dulu:&lt;br /&gt;
 #su - siswa2 (enter)&lt;br /&gt;
&lt;br /&gt;
Cek daftar email:&lt;br /&gt;
 #mail (enter)&lt;br /&gt;
&lt;br /&gt;
Akan muncul daftar email. Untuk membaca email, ketik nomornya lalu enter. Untuk keluar, ketik &#039;&#039;&#039;q&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Kembali ke root:&lt;br /&gt;
 #exit (enter)&lt;br /&gt;
&lt;br /&gt;
= Kesimpulan =&lt;br /&gt;
* Email server butuh &#039;&#039;&#039;Postfix&#039;&#039;&#039; (mengirim/SMTP) dan &#039;&#039;&#039;Dovecot&#039;&#039;&#039; (membaca/IMAP).&lt;br /&gt;
* Alamat email mengikuti pola: user@nama-domain.&lt;br /&gt;
* Konfigurasi Postfix ada di /etc/postfix/main.cf.&lt;br /&gt;
* Konfigurasi Dovecot ada di /etc/dovecot/ dan folder conf.d/.&lt;br /&gt;
* Email antar user dalam server yang sama bisa langsung dikirim tanpa internet.&lt;br /&gt;
&lt;br /&gt;
= Tugas Praktek Individu =&lt;br /&gt;
Kerjakan di server Debian 12 masing-masing, lalu tulis laporan langkah beserta screenshotnya.&lt;br /&gt;
&lt;br /&gt;
1. Install Postfix dan konfigurasi domain menjadi &#039;&#039;&#039;nama-kelas.sch.id&#039;&#039;&#039; (misal: tkj2.sch.id).&lt;br /&gt;
&lt;br /&gt;
2. Ubah mydestination agar menerima email untuk domain tersebut.&lt;br /&gt;
&lt;br /&gt;
3. Install Dovecot dan aktifkan protokol IMAP.&lt;br /&gt;
&lt;br /&gt;
4. Buat 3 user: user1, user2, user3.&lt;br /&gt;
&lt;br /&gt;
5. Kirim email dari user1 ke user2 dengan subjek &#039;&#039;&#039;&amp;quot;Tugas Email Server&amp;quot;&#039;&#039;&#039; dan isi berisi nama lengkap dan kelasmu.&lt;br /&gt;
&lt;br /&gt;
6. Cek email yang masuk ke user2 menggunakan perintah mail.&lt;br /&gt;
&lt;br /&gt;
7. Balas email dari user2 ke user1.&lt;br /&gt;
&lt;br /&gt;
8. Catat hasil `mailq` dan `systemctl status postfix` (apakah running).&lt;br /&gt;
&lt;br /&gt;
9. Tulis kesimpulan: apa perbedaan peran Postfix dan Dovecot?&lt;br /&gt;
&lt;br /&gt;
Kumpulkan laporan sesuai format yang ditentukan guru.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Install_Email_Server_di_Debian_12&amp;diff=2410</id>
		<title>Install Email Server di Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Install_Email_Server_di_Debian_12&amp;diff=2410"/>
		<updated>2026-08-05T04:02:38Z</updated>

		<summary type="html">&lt;p&gt;Robie: /* Dua Layanan Utama dalam Email Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apa itu Email Server? =&lt;br /&gt;
&lt;br /&gt;
Bayangkan &#039;&#039;&#039;kantor pos&#039;&#039;&#039;. Kamu menulis surat, memasukkannya ke amplop, lalu menyerahkannya ke petugas pos. Petugas itulah yang bertugas mengantar surat ke alamat tujuan.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email Server&#039;&#039;&#039; = kantor pos digital yang bertugas &#039;&#039;&#039;mengirim dan menerima&#039;&#039;&#039; email.&lt;br /&gt;
* &#039;&#039;&#039;Surat&#039;&#039;&#039; = isi email (teks, lampiran file).&lt;br /&gt;
* &#039;&#039;&#039;Alamat email&#039;&#039;&#039; = alamat rumah penerima, contoh: siswa1@smekta.sch.id.&lt;br /&gt;
* &#039;&#039;&#039;Mail Client&#039;&#039;&#039; = aplikasi yang dipakai untuk menulis dan membaca email (seperti kamu sebagai pengirim/penerima surat).&lt;br /&gt;
&lt;br /&gt;
== Dua Layanan Utama dalam Email Server ==&lt;br /&gt;
Untuk membuat email server yang lengkap, butuh 2 aplikasi yang bekerja berpasangan:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Aplikasi !! Tugas !! Analogi !! Port&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Postfix&#039;&#039;&#039; || Mengirim email (SMTP) || Petugas pos yang mengantar surat || 25&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Dovecot&#039;&#039;&#039; || Menyimpan dan membaca email (IMAP/POP3) || Gudang penyimpanan surat || 143 / 110&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SMTP&#039;&#039;&#039; = protokol untuk &#039;&#039;mengirim&#039;&#039; email (dipakai Postfix).&lt;br /&gt;
* &#039;&#039;&#039;IMAP&#039;&#039;&#039; = protokol untuk &#039;&#039;membaca&#039;&#039; email dari server (dipakai Dovecot).&lt;br /&gt;
* &#039;&#039;&#039;POP3&#039;&#039;&#039; = protokol lama untuk &#039;&#039;mengunduh&#039;&#039; email lalu menghapusnya dari server.&lt;br /&gt;
&lt;br /&gt;
Pada praktik ini kita akan:&lt;br /&gt;
&lt;br /&gt;
1. Install &#039;&#039;&#039;Postfix&#039;&#039;&#039; (mengirim email).&lt;br /&gt;
&lt;br /&gt;
2. Install &#039;&#039;&#039;Dovecot&#039;&#039;&#039; (membaca email).&lt;br /&gt;
&lt;br /&gt;
3. Buat user pemilik email.&lt;br /&gt;
&lt;br /&gt;
4. Mengirim email antar user dalam satu server.&lt;br /&gt;
&lt;br /&gt;
= Praktik: Install Email Server di Debian 12 =&lt;br /&gt;
&lt;br /&gt;
== 1. Persiapan ==&lt;br /&gt;
Pastikan server sudah dapat IP dan terhubung internet.&lt;br /&gt;
&lt;br /&gt;
Cek IP:&lt;br /&gt;
 #ip a (enter)&lt;br /&gt;
&lt;br /&gt;
Cek internet:&lt;br /&gt;
 #ping google.com (enter)&lt;br /&gt;
&lt;br /&gt;
Update sistem:&lt;br /&gt;
 #apt update (enter)&lt;br /&gt;
&lt;br /&gt;
== 2. Install Postfix ==&lt;br /&gt;
 #apt install -y postfix (enter)&lt;br /&gt;
&lt;br /&gt;
Selama instalasi akan muncul jendela konfigurasi. Isi sebagai berikut:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Langkah 1&#039;&#039;&#039; - Pilih konfigurasi: pilih &#039;&#039;&#039;Internet Site&#039;&#039;&#039; lalu tekan enter.&lt;br /&gt;
&#039;&#039;&#039;Langkah 2&#039;&#039;&#039; - System mail name: ketik domain kamu, contoh &#039;&#039;&#039;smekta.sch.id&#039;&#039;&#039; lalu tekan enter.&lt;br /&gt;
&lt;br /&gt;
Jika jendela tidak muncul atau terlewat, kita tetap bisa mengaturnya di bagian konfigurasi nanti.&lt;br /&gt;
&lt;br /&gt;
Cek hasil instalasi:&lt;br /&gt;
 #postconf mail_version (enter)&lt;br /&gt;
&lt;br /&gt;
== 3. Konfigurasi Postfix ==&lt;br /&gt;
Buka file konfigurasi utama Postfix:&lt;br /&gt;
 #nano /etc/postfix/main.cf (enter)&lt;br /&gt;
&lt;br /&gt;
Pastikan beberapa baris berikut ada dan sesuai:&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Nama Domain ===&lt;br /&gt;
Cari dan pastikan baris ini:&lt;br /&gt;
 myhostname = smekta.sch.id&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Terima Email untuk Domain Ini ===&lt;br /&gt;
Cari dan pastikan:&lt;br /&gt;
 mydestination = $myhostname, smekta.sch.id, localhost.smekta.sch.id, localhost&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Batas Ukuran Email ===&lt;br /&gt;
Tambahkan di bagian paling bawah file:&lt;br /&gt;
 mailbox_size_limit = 0&lt;br /&gt;
 message_size_limit = 10240000&lt;br /&gt;
&lt;br /&gt;
Artinya: kapasitas email tidak dibatasi (0), dan ukuran satu email maksimal 10 MB.&lt;br /&gt;
&lt;br /&gt;
Simpan: tekan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 4. Restart dan Cek Postfix ==&lt;br /&gt;
 #systemctl restart postfix (enter)&lt;br /&gt;
 #systemctl status postfix (enter)&lt;br /&gt;
&lt;br /&gt;
Jika muncul tulisan &#039;&#039;&#039;active (running)&#039;&#039;&#039; artinya berhasil.&lt;br /&gt;
&lt;br /&gt;
== 5. Install Dovecot ==&lt;br /&gt;
 #apt install -y dovecot-imapd dovecot-pop3d (enter)&lt;br /&gt;
&lt;br /&gt;
Cek hasil instalasi:&lt;br /&gt;
 #dovecot --version (enter)&lt;br /&gt;
&lt;br /&gt;
== 6. Konfigurasi Dovecot ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Aktifkan Protokol IMAP ===&lt;br /&gt;
Buka file konfigurasi:&lt;br /&gt;
 #nano /etc/dovecot/dovecot.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 protocols = imap pop3 lmtp submission&lt;br /&gt;
&lt;br /&gt;
Jika diawali tanda pagar (#), hapus tanda pagarnya:&lt;br /&gt;
 protocols = imap pop3 lmtp submission&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Izinkan Login dengan Password Biasa ===&lt;br /&gt;
Buka file:&lt;br /&gt;
 #nano /etc/dovecot/conf.d/10-auth.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 disable_plaintext_auth = yes&lt;br /&gt;
&lt;br /&gt;
Ubah menjadi:&lt;br /&gt;
 disable_plaintext_auth = no&lt;br /&gt;
&lt;br /&gt;
Artinya: client boleh login menggunakan password biasa (untuk latihan di jaringan lokal).&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 6.3 Pastikan Mailbox di Folder User ===&lt;br /&gt;
Buka file:&lt;br /&gt;
 #nano /etc/dovecot/conf.d/10-mail.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 mail_location = mbox:~/mail:INBOX=/var/mail/%u&lt;br /&gt;
&lt;br /&gt;
Ubah menjadi (agar email disimpan di folder user, bukan di memori):&lt;br /&gt;
 mail_location = maildir:~/Maildir&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 7. Restart dan Cek Dovecot ==&lt;br /&gt;
 #systemctl restart dovecot (enter)&lt;br /&gt;
 #systemctl status dovecot (enter)&lt;br /&gt;
&lt;br /&gt;
Jika muncul tulisan &#039;&#039;&#039;active (running)&#039;&#039;&#039; artinya berhasil.&lt;br /&gt;
&lt;br /&gt;
== 8. Buat User Pemilik Email ==&lt;br /&gt;
Setiap user di Linux otomatis bisa punya alamat email, contoh: siswa1@smekta.sch.id&lt;br /&gt;
&lt;br /&gt;
Buat user siswa1 (seperti materi Manajemen User):&lt;br /&gt;
 #adduser siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Isi password 2 kali, lalu tekan enter untuk pertanyaan selanjutnya.&lt;br /&gt;
&lt;br /&gt;
Buat user kedua untuk latihan kirim email:&lt;br /&gt;
 #adduser siswa2 (enter)&lt;br /&gt;
&lt;br /&gt;
== 9. Tes Kirim Email dari Terminal ==&lt;br /&gt;
Install aplikasi mail untuk tes:&lt;br /&gt;
 #apt install -y mailutils (enter)&lt;br /&gt;
&lt;br /&gt;
Kirim email dari siswa1 ke siswa2:&lt;br /&gt;
 #echo &amp;quot;Halo siswa2, ini email pertama dari siswa1&amp;quot; | mail -s &amp;quot;Email Percobaan&amp;quot; siswa2@smekta.sch.id (enter)&lt;br /&gt;
&lt;br /&gt;
Jika tidak ada error, email terkirim. Cek status antrean email:&lt;br /&gt;
 #mailq (enter)&lt;br /&gt;
&lt;br /&gt;
Jika antrean kosong, artinya email sudah berhasil dikirim.&lt;br /&gt;
&lt;br /&gt;
== 10. Cek Email Masuk ==&lt;br /&gt;
Buka email sebagai siswa2 dengan login user dulu:&lt;br /&gt;
 #su - siswa2 (enter)&lt;br /&gt;
&lt;br /&gt;
Cek daftar email:&lt;br /&gt;
 #mail (enter)&lt;br /&gt;
&lt;br /&gt;
Akan muncul daftar email. Untuk membaca email, ketik nomornya lalu enter. Untuk keluar, ketik &#039;&#039;&#039;q&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Kembali ke root:&lt;br /&gt;
 #exit (enter)&lt;br /&gt;
&lt;br /&gt;
= Kesimpulan =&lt;br /&gt;
* Email server butuh &#039;&#039;&#039;Postfix&#039;&#039;&#039; (mengirim/SMTP) dan &#039;&#039;&#039;Dovecot&#039;&#039;&#039; (membaca/IMAP).&lt;br /&gt;
* Alamat email mengikuti pola: user@nama-domain.&lt;br /&gt;
* Konfigurasi Postfix ada di /etc/postfix/main.cf.&lt;br /&gt;
* Konfigurasi Dovecot ada di /etc/dovecot/ dan folder conf.d/.&lt;br /&gt;
* Email antar user dalam server yang sama bisa langsung dikirim tanpa internet.&lt;br /&gt;
&lt;br /&gt;
= Tugas Praktek Individu =&lt;br /&gt;
Kerjakan di server Debian 12 masing-masing, lalu tulis laporan langkah beserta screenshotnya.&lt;br /&gt;
&lt;br /&gt;
1. Install Postfix dan konfigurasi domain menjadi &#039;&#039;&#039;nama-kelas.sch.id&#039;&#039;&#039; (misal: tkj2.sch.id).&lt;br /&gt;
&lt;br /&gt;
2. Ubah mydestination agar menerima email untuk domain tersebut.&lt;br /&gt;
&lt;br /&gt;
3. Install Dovecot dan aktifkan protokol IMAP.&lt;br /&gt;
&lt;br /&gt;
4. Buat 3 user: user1, user2, user3.&lt;br /&gt;
&lt;br /&gt;
5. Kirim email dari user1 ke user2 dengan subjek &#039;&#039;&#039;&amp;quot;Tugas Email Server&amp;quot;&#039;&#039;&#039; dan isi berisi nama lengkap dan kelasmu.&lt;br /&gt;
&lt;br /&gt;
6. Cek email yang masuk ke user2 menggunakan perintah mail.&lt;br /&gt;
&lt;br /&gt;
7. Balas email dari user2 ke user1.&lt;br /&gt;
&lt;br /&gt;
8. Catat hasil `mailq` dan `systemctl status postfix` (apakah running).&lt;br /&gt;
&lt;br /&gt;
9. Tulis kesimpulan: apa perbedaan peran Postfix dan Dovecot?&lt;br /&gt;
&lt;br /&gt;
Kumpulkan laporan sesuai format yang ditentukan guru.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Install_Email_Server_di_Debian_12&amp;diff=2409</id>
		<title>Install Email Server di Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Install_Email_Server_di_Debian_12&amp;diff=2409"/>
		<updated>2026-08-05T04:00:09Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Install Email Server di Debian 12&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apa itu Email Server? =&lt;br /&gt;
&lt;br /&gt;
Bayangkan &#039;&#039;&#039;kantor pos&#039;&#039;&#039;. Kamu menulis surat, memasukkannya ke amplop, lalu menyerahkannya ke petugas pos. Petugas itulah yang bertugas mengantar surat ke alamat tujuan.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email Server&#039;&#039;&#039; = kantor pos digital yang bertugas &#039;&#039;&#039;mengirim dan menerima&#039;&#039;&#039; email.&lt;br /&gt;
* &#039;&#039;&#039;Surat&#039;&#039;&#039; = isi email (teks, lampiran file).&lt;br /&gt;
* &#039;&#039;&#039;Alamat email&#039;&#039;&#039; = alamat rumah penerima, contoh: siswa1@smekta.sch.id.&lt;br /&gt;
* &#039;&#039;&#039;Mail Client&#039;&#039;&#039; = aplikasi yang dipakai untuk menulis dan membaca email (seperti kamu sebagai pengirim/penerima surat).&lt;br /&gt;
&lt;br /&gt;
== Dua Layanan Utama dalam Email Server ==&lt;br /&gt;
Untuk membuat email server yang lengkap, butuh 2 aplikasi yang bekerja berpasangan:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Aplikasi !! Tugas !! Analogi !! Port&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Postfix&#039;&#039;&#039; || Mengirim email (SMTP) || Petugas pos yang mengantar surat || 25&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Dovecot&#039;&#039;&#039; || Menyimpan dan membaca email (IMAP/POP3) || Gudang penyimpanan surat || 143 / 110&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SMTP&#039;&#039;&#039; = protokol untuk &#039;&#039;mengirim&#039;&#039; email (dipakai Postfix).&lt;br /&gt;
* &#039;&#039;&#039;IMAP&#039;&#039;&#039; = protokol untuk &#039;&#039;membaca&#039;&#039; email dari server (dipakai Dovecot).&lt;br /&gt;
* &#039;&#039;&#039;POP3&#039;&#039;&#039; = protokol lama untuk &#039;&#039;mengunduh&#039;&#039; email lalu menghapusnya dari server.&lt;br /&gt;
&lt;br /&gt;
Pada praktik ini kita akan:&lt;br /&gt;
1. Install &#039;&#039;&#039;Postfix&#039;&#039;&#039; (mengirim email).&lt;br /&gt;
2. Install &#039;&#039;&#039;Dovecot&#039;&#039;&#039; (membaca email).&lt;br /&gt;
3. Buat user pemilik email.&lt;br /&gt;
4. Mengirim email antar user dalam satu server.&lt;br /&gt;
&lt;br /&gt;
= Praktik: Install Email Server di Debian 12 =&lt;br /&gt;
&lt;br /&gt;
== 1. Persiapan ==&lt;br /&gt;
Pastikan server sudah dapat IP dan terhubung internet.&lt;br /&gt;
&lt;br /&gt;
Cek IP:&lt;br /&gt;
 #ip a (enter)&lt;br /&gt;
&lt;br /&gt;
Cek internet:&lt;br /&gt;
 #ping google.com (enter)&lt;br /&gt;
&lt;br /&gt;
Update sistem:&lt;br /&gt;
 #apt update (enter)&lt;br /&gt;
&lt;br /&gt;
== 2. Install Postfix ==&lt;br /&gt;
 #apt install -y postfix (enter)&lt;br /&gt;
&lt;br /&gt;
Selama instalasi akan muncul jendela konfigurasi. Isi sebagai berikut:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Langkah 1&#039;&#039;&#039; - Pilih konfigurasi: pilih &#039;&#039;&#039;Internet Site&#039;&#039;&#039; lalu tekan enter.&lt;br /&gt;
&#039;&#039;&#039;Langkah 2&#039;&#039;&#039; - System mail name: ketik domain kamu, contoh &#039;&#039;&#039;smekta.sch.id&#039;&#039;&#039; lalu tekan enter.&lt;br /&gt;
&lt;br /&gt;
Jika jendela tidak muncul atau terlewat, kita tetap bisa mengaturnya di bagian konfigurasi nanti.&lt;br /&gt;
&lt;br /&gt;
Cek hasil instalasi:&lt;br /&gt;
 #postconf mail_version (enter)&lt;br /&gt;
&lt;br /&gt;
== 3. Konfigurasi Postfix ==&lt;br /&gt;
Buka file konfigurasi utama Postfix:&lt;br /&gt;
 #nano /etc/postfix/main.cf (enter)&lt;br /&gt;
&lt;br /&gt;
Pastikan beberapa baris berikut ada dan sesuai:&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Nama Domain ===&lt;br /&gt;
Cari dan pastikan baris ini:&lt;br /&gt;
 myhostname = smekta.sch.id&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Terima Email untuk Domain Ini ===&lt;br /&gt;
Cari dan pastikan:&lt;br /&gt;
 mydestination = $myhostname, smekta.sch.id, localhost.smekta.sch.id, localhost&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Batas Ukuran Email ===&lt;br /&gt;
Tambahkan di bagian paling bawah file:&lt;br /&gt;
 mailbox_size_limit = 0&lt;br /&gt;
 message_size_limit = 10240000&lt;br /&gt;
&lt;br /&gt;
Artinya: kapasitas email tidak dibatasi (0), dan ukuran satu email maksimal 10 MB.&lt;br /&gt;
&lt;br /&gt;
Simpan: tekan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 4. Restart dan Cek Postfix ==&lt;br /&gt;
 #systemctl restart postfix (enter)&lt;br /&gt;
 #systemctl status postfix (enter)&lt;br /&gt;
&lt;br /&gt;
Jika muncul tulisan &#039;&#039;&#039;active (running)&#039;&#039;&#039; artinya berhasil.&lt;br /&gt;
&lt;br /&gt;
== 5. Install Dovecot ==&lt;br /&gt;
 #apt install -y dovecot-imapd dovecot-pop3d (enter)&lt;br /&gt;
&lt;br /&gt;
Cek hasil instalasi:&lt;br /&gt;
 #dovecot --version (enter)&lt;br /&gt;
&lt;br /&gt;
== 6. Konfigurasi Dovecot ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Aktifkan Protokol IMAP ===&lt;br /&gt;
Buka file konfigurasi:&lt;br /&gt;
 #nano /etc/dovecot/dovecot.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 protocols = imap pop3 lmtp submission&lt;br /&gt;
&lt;br /&gt;
Jika diawali tanda pagar (#), hapus tanda pagarnya:&lt;br /&gt;
 protocols = imap pop3 lmtp submission&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Izinkan Login dengan Password Biasa ===&lt;br /&gt;
Buka file:&lt;br /&gt;
 #nano /etc/dovecot/conf.d/10-auth.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 disable_plaintext_auth = yes&lt;br /&gt;
&lt;br /&gt;
Ubah menjadi:&lt;br /&gt;
 disable_plaintext_auth = no&lt;br /&gt;
&lt;br /&gt;
Artinya: client boleh login menggunakan password biasa (untuk latihan di jaringan lokal).&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 6.3 Pastikan Mailbox di Folder User ===&lt;br /&gt;
Buka file:&lt;br /&gt;
 #nano /etc/dovecot/conf.d/10-mail.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 mail_location = mbox:~/mail:INBOX=/var/mail/%u&lt;br /&gt;
&lt;br /&gt;
Ubah menjadi (agar email disimpan di folder user, bukan di memori):&lt;br /&gt;
 mail_location = maildir:~/Maildir&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 7. Restart dan Cek Dovecot ==&lt;br /&gt;
 #systemctl restart dovecot (enter)&lt;br /&gt;
 #systemctl status dovecot (enter)&lt;br /&gt;
&lt;br /&gt;
Jika muncul tulisan &#039;&#039;&#039;active (running)&#039;&#039;&#039; artinya berhasil.&lt;br /&gt;
&lt;br /&gt;
== 8. Buat User Pemilik Email ==&lt;br /&gt;
Setiap user di Linux otomatis bisa punya alamat email, contoh: siswa1@smekta.sch.id&lt;br /&gt;
&lt;br /&gt;
Buat user siswa1 (seperti materi Manajemen User):&lt;br /&gt;
 #adduser siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Isi password 2 kali, lalu tekan enter untuk pertanyaan selanjutnya.&lt;br /&gt;
&lt;br /&gt;
Buat user kedua untuk latihan kirim email:&lt;br /&gt;
 #adduser siswa2 (enter)&lt;br /&gt;
&lt;br /&gt;
== 9. Tes Kirim Email dari Terminal ==&lt;br /&gt;
Install aplikasi mail untuk tes:&lt;br /&gt;
 #apt install -y mailutils (enter)&lt;br /&gt;
&lt;br /&gt;
Kirim email dari siswa1 ke siswa2:&lt;br /&gt;
 #echo &amp;quot;Halo siswa2, ini email pertama dari siswa1&amp;quot; | mail -s &amp;quot;Email Percobaan&amp;quot; siswa2@smekta.sch.id (enter)&lt;br /&gt;
&lt;br /&gt;
Jika tidak ada error, email terkirim. Cek status antrean email:&lt;br /&gt;
 #mailq (enter)&lt;br /&gt;
&lt;br /&gt;
Jika antrean kosong, artinya email sudah berhasil dikirim.&lt;br /&gt;
&lt;br /&gt;
== 10. Cek Email Masuk ==&lt;br /&gt;
Buka email sebagai siswa2 dengan login user dulu:&lt;br /&gt;
 #su - siswa2 (enter)&lt;br /&gt;
&lt;br /&gt;
Cek daftar email:&lt;br /&gt;
 #mail (enter)&lt;br /&gt;
&lt;br /&gt;
Akan muncul daftar email. Untuk membaca email, ketik nomornya lalu enter. Untuk keluar, ketik &#039;&#039;&#039;q&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Kembali ke root:&lt;br /&gt;
 #exit (enter)&lt;br /&gt;
&lt;br /&gt;
= Kesimpulan =&lt;br /&gt;
* Email server butuh &#039;&#039;&#039;Postfix&#039;&#039;&#039; (mengirim/SMTP) dan &#039;&#039;&#039;Dovecot&#039;&#039;&#039; (membaca/IMAP).&lt;br /&gt;
* Alamat email mengikuti pola: user@nama-domain.&lt;br /&gt;
* Konfigurasi Postfix ada di /etc/postfix/main.cf.&lt;br /&gt;
* Konfigurasi Dovecot ada di /etc/dovecot/ dan folder conf.d/.&lt;br /&gt;
* Email antar user dalam server yang sama bisa langsung dikirim tanpa internet.&lt;br /&gt;
&lt;br /&gt;
= Tugas Praktek Individu =&lt;br /&gt;
Kerjakan di server Debian 12 masing-masing, lalu tulis laporan langkah beserta screenshotnya.&lt;br /&gt;
&lt;br /&gt;
1. Install Postfix dan konfigurasi domain menjadi &#039;&#039;&#039;nama-kelas.sch.id&#039;&#039;&#039; (misal: tkj2.sch.id).&lt;br /&gt;
&lt;br /&gt;
2. Ubah mydestination agar menerima email untuk domain tersebut.&lt;br /&gt;
&lt;br /&gt;
3. Install Dovecot dan aktifkan protokol IMAP.&lt;br /&gt;
&lt;br /&gt;
4. Buat 3 user: user1, user2, user3.&lt;br /&gt;
&lt;br /&gt;
5. Kirim email dari user1 ke user2 dengan subjek &#039;&#039;&#039;&amp;quot;Tugas Email Server&amp;quot;&#039;&#039;&#039; dan isi berisi nama lengkap dan kelasmu.&lt;br /&gt;
&lt;br /&gt;
6. Cek email yang masuk ke user2 menggunakan perintah mail.&lt;br /&gt;
&lt;br /&gt;
7. Balas email dari user2 ke user1.&lt;br /&gt;
&lt;br /&gt;
8. Catat hasil `mailq` dan `systemctl status postfix` (apakah running).&lt;br /&gt;
&lt;br /&gt;
9. Tulis kesimpulan: apa perbedaan peran Postfix dan Dovecot?&lt;br /&gt;
&lt;br /&gt;
Kumpulkan laporan sesuai format yang ditentukan guru.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Install_Email_Server_di_Debian_12&amp;diff=2408</id>
		<title>Install Email Server di Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Install_Email_Server_di_Debian_12&amp;diff=2408"/>
		<updated>2026-08-05T03:59:57Z</updated>

		<summary type="html">&lt;p&gt;Robie: /* Tugas Praktek Individu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apa itu Email Server? =&lt;br /&gt;
&lt;br /&gt;
Bayangkan &#039;&#039;&#039;kantor pos&#039;&#039;&#039;. Kamu menulis surat, memasukkannya ke amplop, lalu menyerahkannya ke petugas pos. Petugas itulah yang bertugas mengantar surat ke alamat tujuan.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email Server&#039;&#039;&#039; = kantor pos digital yang bertugas &#039;&#039;&#039;mengirim dan menerima&#039;&#039;&#039; email.&lt;br /&gt;
* &#039;&#039;&#039;Surat&#039;&#039;&#039; = isi email (teks, lampiran file).&lt;br /&gt;
* &#039;&#039;&#039;Alamat email&#039;&#039;&#039; = alamat rumah penerima, contoh: siswa1@smekta.sch.id.&lt;br /&gt;
* &#039;&#039;&#039;Mail Client&#039;&#039;&#039; = aplikasi yang dipakai untuk menulis dan membaca email (seperti kamu sebagai pengirim/penerima surat).&lt;br /&gt;
&lt;br /&gt;
== Dua Layanan Utama dalam Email Server ==&lt;br /&gt;
Untuk membuat email server yang lengkap, butuh 2 aplikasi yang bekerja berpasangan:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Aplikasi !! Tugas !! Analogi !! Port&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Postfix&#039;&#039;&#039; || Mengirim email (SMTP) || Petugas pos yang mengantar surat || 25&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Dovecot&#039;&#039;&#039; || Menyimpan dan membaca email (IMAP/POP3) || Gudang penyimpanan surat || 143 / 110&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;SMTP&#039;&#039;&#039; = protokol untuk &#039;&#039;mengirim&#039;&#039; email (dipakai Postfix).&lt;br /&gt;
* &#039;&#039;&#039;IMAP&#039;&#039;&#039; = protokol untuk &#039;&#039;membaca&#039;&#039; email dari server (dipakai Dovecot).&lt;br /&gt;
* &#039;&#039;&#039;POP3&#039;&#039;&#039; = protokol lama untuk &#039;&#039;mengunduh&#039;&#039; email lalu menghapusnya dari server.&lt;br /&gt;
&lt;br /&gt;
Pada praktik ini kita akan:&lt;br /&gt;
1. Install &#039;&#039;&#039;Postfix&#039;&#039;&#039; (mengirim email).&lt;br /&gt;
2. Install &#039;&#039;&#039;Dovecot&#039;&#039;&#039; (membaca email).&lt;br /&gt;
3. Buat user pemilik email.&lt;br /&gt;
4. Mengirim email antar user dalam satu server.&lt;br /&gt;
&lt;br /&gt;
= Praktik: Install Email Server di Debian 12 =&lt;br /&gt;
&lt;br /&gt;
== 1. Persiapan ==&lt;br /&gt;
Pastikan server sudah dapat IP dan terhubung internet.&lt;br /&gt;
&lt;br /&gt;
Cek IP:&lt;br /&gt;
 #ip a (enter)&lt;br /&gt;
&lt;br /&gt;
Cek internet:&lt;br /&gt;
 #ping google.com (enter)&lt;br /&gt;
&lt;br /&gt;
Update sistem:&lt;br /&gt;
 #apt update (enter)&lt;br /&gt;
&lt;br /&gt;
== 2. Install Postfix ==&lt;br /&gt;
 #apt install -y postfix (enter)&lt;br /&gt;
&lt;br /&gt;
Selama instalasi akan muncul jendela konfigurasi. Isi sebagai berikut:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Langkah 1&#039;&#039;&#039; - Pilih konfigurasi: pilih &#039;&#039;&#039;Internet Site&#039;&#039;&#039; lalu tekan enter.&lt;br /&gt;
&#039;&#039;&#039;Langkah 2&#039;&#039;&#039; - System mail name: ketik domain kamu, contoh &#039;&#039;&#039;smekta.sch.id&#039;&#039;&#039; lalu tekan enter.&lt;br /&gt;
&lt;br /&gt;
Jika jendela tidak muncul atau terlewat, kita tetap bisa mengaturnya di bagian konfigurasi nanti.&lt;br /&gt;
&lt;br /&gt;
Cek hasil instalasi:&lt;br /&gt;
 #postconf mail_version (enter)&lt;br /&gt;
&lt;br /&gt;
== 3. Konfigurasi Postfix ==&lt;br /&gt;
Buka file konfigurasi utama Postfix:&lt;br /&gt;
 #nano /etc/postfix/main.cf (enter)&lt;br /&gt;
&lt;br /&gt;
Pastikan beberapa baris berikut ada dan sesuai:&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Nama Domain ===&lt;br /&gt;
Cari dan pastikan baris ini:&lt;br /&gt;
 myhostname = smekta.sch.id&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Terima Email untuk Domain Ini ===&lt;br /&gt;
Cari dan pastikan:&lt;br /&gt;
 mydestination = $myhostname, smekta.sch.id, localhost.smekta.sch.id, localhost&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Batas Ukuran Email ===&lt;br /&gt;
Tambahkan di bagian paling bawah file:&lt;br /&gt;
 mailbox_size_limit = 0&lt;br /&gt;
 message_size_limit = 10240000&lt;br /&gt;
&lt;br /&gt;
Artinya: kapasitas email tidak dibatasi (0), dan ukuran satu email maksimal 10 MB.&lt;br /&gt;
&lt;br /&gt;
Simpan: tekan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 4. Restart dan Cek Postfix ==&lt;br /&gt;
 #systemctl restart postfix (enter)&lt;br /&gt;
 #systemctl status postfix (enter)&lt;br /&gt;
&lt;br /&gt;
Jika muncul tulisan &#039;&#039;&#039;active (running)&#039;&#039;&#039; artinya berhasil.&lt;br /&gt;
&lt;br /&gt;
== 5. Install Dovecot ==&lt;br /&gt;
 #apt install -y dovecot-imapd dovecot-pop3d (enter)&lt;br /&gt;
&lt;br /&gt;
Cek hasil instalasi:&lt;br /&gt;
 #dovecot --version (enter)&lt;br /&gt;
&lt;br /&gt;
== 6. Konfigurasi Dovecot ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Aktifkan Protokol IMAP ===&lt;br /&gt;
Buka file konfigurasi:&lt;br /&gt;
 #nano /etc/dovecot/dovecot.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 protocols = imap pop3 lmtp submission&lt;br /&gt;
&lt;br /&gt;
Jika diawali tanda pagar (#), hapus tanda pagarnya:&lt;br /&gt;
 protocols = imap pop3 lmtp submission&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Izinkan Login dengan Password Biasa ===&lt;br /&gt;
Buka file:&lt;br /&gt;
 #nano /etc/dovecot/conf.d/10-auth.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 disable_plaintext_auth = yes&lt;br /&gt;
&lt;br /&gt;
Ubah menjadi:&lt;br /&gt;
 disable_plaintext_auth = no&lt;br /&gt;
&lt;br /&gt;
Artinya: client boleh login menggunakan password biasa (untuk latihan di jaringan lokal).&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 6.3 Pastikan Mailbox di Folder User ===&lt;br /&gt;
Buka file:&lt;br /&gt;
 #nano /etc/dovecot/conf.d/10-mail.conf (enter)&lt;br /&gt;
&lt;br /&gt;
Cari baris:&lt;br /&gt;
 mail_location = mbox:~/mail:INBOX=/var/mail/%u&lt;br /&gt;
&lt;br /&gt;
Ubah menjadi (agar email disimpan di folder user, bukan di memori):&lt;br /&gt;
 mail_location = maildir:~/Maildir&lt;br /&gt;
&lt;br /&gt;
Simpan dengan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 7. Restart dan Cek Dovecot ==&lt;br /&gt;
 #systemctl restart dovecot (enter)&lt;br /&gt;
 #systemctl status dovecot (enter)&lt;br /&gt;
&lt;br /&gt;
Jika muncul tulisan &#039;&#039;&#039;active (running)&#039;&#039;&#039; artinya berhasil.&lt;br /&gt;
&lt;br /&gt;
== 8. Buat User Pemilik Email ==&lt;br /&gt;
Setiap user di Linux otomatis bisa punya alamat email, contoh: siswa1@smekta.sch.id&lt;br /&gt;
&lt;br /&gt;
Buat user siswa1 (seperti materi Manajemen User):&lt;br /&gt;
 #adduser siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Isi password 2 kali, lalu tekan enter untuk pertanyaan selanjutnya.&lt;br /&gt;
&lt;br /&gt;
Buat user kedua untuk latihan kirim email:&lt;br /&gt;
 #adduser siswa2 (enter)&lt;br /&gt;
&lt;br /&gt;
== 9. Tes Kirim Email dari Terminal ==&lt;br /&gt;
Install aplikasi mail untuk tes:&lt;br /&gt;
 #apt install -y mailutils (enter)&lt;br /&gt;
&lt;br /&gt;
Kirim email dari siswa1 ke siswa2:&lt;br /&gt;
 #echo &amp;quot;Halo siswa2, ini email pertama dari siswa1&amp;quot; | mail -s &amp;quot;Email Percobaan&amp;quot; siswa2@smekta.sch.id (enter)&lt;br /&gt;
&lt;br /&gt;
Jika tidak ada error, email terkirim. Cek status antrean email:&lt;br /&gt;
 #mailq (enter)&lt;br /&gt;
&lt;br /&gt;
Jika antrean kosong, artinya email sudah berhasil dikirim.&lt;br /&gt;
&lt;br /&gt;
== 10. Cek Email Masuk ==&lt;br /&gt;
Buka email sebagai siswa2 dengan login user dulu:&lt;br /&gt;
 #su - siswa2 (enter)&lt;br /&gt;
&lt;br /&gt;
Cek daftar email:&lt;br /&gt;
 #mail (enter)&lt;br /&gt;
&lt;br /&gt;
Akan muncul daftar email. Untuk membaca email, ketik nomornya lalu enter. Untuk keluar, ketik &#039;&#039;&#039;q&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Kembali ke root:&lt;br /&gt;
 #exit (enter)&lt;br /&gt;
&lt;br /&gt;
= Kesimpulan =&lt;br /&gt;
* Email server butuh &#039;&#039;&#039;Postfix&#039;&#039;&#039; (mengirim/SMTP) dan &#039;&#039;&#039;Dovecot&#039;&#039;&#039; (membaca/IMAP).&lt;br /&gt;
* Alamat email mengikuti pola: user@nama-domain.&lt;br /&gt;
* Konfigurasi Postfix ada di /etc/postfix/main.cf.&lt;br /&gt;
* Konfigurasi Dovecot ada di /etc/dovecot/ dan folder conf.d/.&lt;br /&gt;
* Email antar user dalam server yang sama bisa langsung dikirim tanpa internet.&lt;br /&gt;
&lt;br /&gt;
= Tugas Praktek Individu =&lt;br /&gt;
Kerjakan di server Debian 12 masing-masing, lalu tulis laporan langkah beserta screenshotnya.&lt;br /&gt;
&lt;br /&gt;
1. Install Postfix dan konfigurasi domain menjadi &#039;&#039;&#039;nama-kelas.sch.id&#039;&#039;&#039; (misal: tkj2.sch.id).&lt;br /&gt;
&lt;br /&gt;
2. Ubah mydestination agar menerima email untuk domain tersebut.&lt;br /&gt;
&lt;br /&gt;
3. Install Dovecot dan aktifkan protokol IMAP.&lt;br /&gt;
&lt;br /&gt;
4. Buat 3 user: user1, user2, user3.&lt;br /&gt;
&lt;br /&gt;
5. Kirim email dari user1 ke user2 dengan subjek &#039;&#039;&#039;&amp;quot;Tugas Email Server&amp;quot;&#039;&#039;&#039; dan isi berisi nama lengkap dan kelasmu.&lt;br /&gt;
&lt;br /&gt;
6. Cek email yang masuk ke user2 menggunakan perintah mail.&lt;br /&gt;
&lt;br /&gt;
7. Balas email dari user2 ke user1.&lt;br /&gt;
&lt;br /&gt;
8. Catat hasil `mailq` dan `systemctl status postfix` (apakah running).&lt;br /&gt;
&lt;br /&gt;
9. Tulis kesimpulan: apa perbedaan peran Postfix dan Dovecot?&lt;br /&gt;
&lt;br /&gt;
Kumpulkan laporan sesuai format yang ditentukan guru.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Perintah_Dasar_Linux&amp;diff=2406</id>
		<title>Perintah Dasar Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Perintah_Dasar_Linux&amp;diff=2406"/>
		<updated>2026-08-05T03:49:04Z</updated>

		<summary type="html">&lt;p&gt;Robie: /* Latihan (Prasyarat) = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Perintah Dasar Linux =&lt;br /&gt;
&lt;br /&gt;
Halaman ini berisi kumpulan perintah Linux yang paling sering dipakai saat bekerja di CLI (Command Line Interface / Terminal). Kuasai semua perintah di halaman ini, karena hampir semua materi selanjutnya (install server, konfigurasi, backup, dll.) pasti memakai perintah-perintah ini.&lt;br /&gt;
&lt;br /&gt;
== Cara Memakai Terminal ==&lt;br /&gt;
* Buka aplikasi terminal, lalu ketik perintah dan tekan &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
* Tampilan di terminal biasanya: &#039;&#039;&#039;root@nama-server:~#&#039;&#039;&#039; atau &#039;&#039;&#039;user@nama:~$&#039;&#039;&#039;.&lt;br /&gt;
* Simbol &#039;&#039;&#039;#&#039;&#039;&#039; berarti kita sebagai root (admin), simbol &#039;&#039;&#039;$&#039;&#039;&#039; berarti user biasa.&lt;br /&gt;
* Setiap perintah punya pilihan/bantuan: ketik &#039;&#039;&#039;nama-perintah --help&#039;&#039;&#039; untuk melihatnya.&lt;br /&gt;
&lt;br /&gt;
= 1. Menjelajah Folder (Navigasi) =&lt;br /&gt;
&lt;br /&gt;
== pwd - Tunjukkan Lokasi Saat Ini ==&lt;br /&gt;
Menampilkan folder (direktori) tempat kita berada sekarang.&lt;br /&gt;
 #pwd (enter)&lt;br /&gt;
 /root&lt;br /&gt;
&lt;br /&gt;
== ls - Lihat Isi Folder ==&lt;br /&gt;
Menampilkan daftar file dan folder.&lt;br /&gt;
 #ls (enter)&lt;br /&gt;
 Documents  download  gambar  script.sh&lt;br /&gt;
&lt;br /&gt;
Pilihan yang sering dipakai:&lt;br /&gt;
* ls -l (detail: ukuran, pemilik, tanggal)&lt;br /&gt;
* ls -a (termasuk file tersembunyi, awalan titik)&lt;br /&gt;
* ls -la (gabungan keduanya)&lt;br /&gt;
* ls -lh (ukuran dibaca manusia: K, M, G)&lt;br /&gt;
&lt;br /&gt;
== cd - Pindah Folder ==&lt;br /&gt;
Memindahkan posisi kita ke folder lain.&lt;br /&gt;
 #cd /var/www/html (enter)&lt;br /&gt;
 #pwd (enter)&lt;br /&gt;
 /var/www/html&lt;br /&gt;
&lt;br /&gt;
Cara singkat:&lt;br /&gt;
* cd .. (naik satu folder ke atas)&lt;br /&gt;
* cd / (ke folder paling atas / root filesystem)&lt;br /&gt;
* cd ~ (ke folder rumah user)&lt;br /&gt;
* cd - (kembali ke folder sebelumnya)&lt;br /&gt;
&lt;br /&gt;
== Perbedaan Path ==&lt;br /&gt;
* Path mutlak: dimulai dari / (contoh: /etc/ssh/sshd_config)&lt;br /&gt;
* Path relatif: dari folder sekarang (contoh: images/logo.png)&lt;br /&gt;
&lt;br /&gt;
= 2. Melihat dan Mengedit Isi File =&lt;br /&gt;
&lt;br /&gt;
== cat - Tampilkan Isi File ==&lt;br /&gt;
 #cat /etc/os-release (enter)&lt;br /&gt;
 PRETTY_NAME=&amp;quot;Debian GNU/Linux 12 (bookworm)&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
Melihat versi Linux yang dipakai.&lt;br /&gt;
&lt;br /&gt;
== less - Baca File Panjang Per Halaman ==&lt;br /&gt;
 #less /etc/passwd (enter)&lt;br /&gt;
Gunakan tombol spasi (turun), b (naik), q (keluar).&lt;br /&gt;
&lt;br /&gt;
== head dan tail - Lihat Awal/Akhir File ==&lt;br /&gt;
 #head -5 /etc/passwd (enter)&lt;br /&gt;
 #tail -5 /etc/passwd (enter)&lt;br /&gt;
* head = 10 baris pertama (bisa diatur: head -5)&lt;br /&gt;
* tail = 10 baris terakhir (tail -5)&lt;br /&gt;
&lt;br /&gt;
Untuk melihat isi file yang terus bertambah (seperti log):&lt;br /&gt;
 #tail -f /var/log/syslog (enter)&lt;br /&gt;
Tekan ctrl+c untuk menghentikan.&lt;br /&gt;
&lt;br /&gt;
== echo - Tampilkan Teks ==&lt;br /&gt;
 #echo &amp;quot;Halo Dunia&amp;quot; (enter)&lt;br /&gt;
 Halo Dunia&lt;br /&gt;
&lt;br /&gt;
== nano - Editor Teks di Terminal ==&lt;br /&gt;
 #nano file.txt (enter)&lt;br /&gt;
Cara menyimpan: &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= 3. Membuat dan Mengelola File &amp;amp; Folder =&lt;br /&gt;
&lt;br /&gt;
== touch - Buat File Kosong ==&lt;br /&gt;
 #touch file_baru.txt (enter)&lt;br /&gt;
&lt;br /&gt;
== mkdir - Buat Folder ==&lt;br /&gt;
 #mkdir folder_baru (enter)&lt;br /&gt;
&lt;br /&gt;
== cp - Salin File/Folder ==&lt;br /&gt;
 #cp file_baru.txt salinan.txt (enter)&lt;br /&gt;
Salin folder beserta isinya:&lt;br /&gt;
 #cp -r folder_baru folder_salinan (enter)&lt;br /&gt;
&lt;br /&gt;
== mv - Pindah atau Ganti Nama ==&lt;br /&gt;
Ganti nama file:&lt;br /&gt;
 #mv salinan.txt file_terbaru.txt (enter)&lt;br /&gt;
Pindah ke folder lain:&lt;br /&gt;
 #mv file_terbaru.txt folder_baru/ (enter)&lt;br /&gt;
&lt;br /&gt;
== rm - Hapus File/Folder ==&lt;br /&gt;
Hapus file:&lt;br /&gt;
 #rm file_baru.txt (enter)&lt;br /&gt;
Hapus folder beserta isinya (hati-hati!):&lt;br /&gt;
 #rm -r folder_baru (enter)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peringatan:&#039;&#039;&#039; file yang dihapus dengan rm tidak bisa dikembalikan. Selalu pikir 2 kali!&lt;br /&gt;
&lt;br /&gt;
= 4. Mencari File dan Teks =&lt;br /&gt;
&lt;br /&gt;
== which - Cari Lokasi Program ==&lt;br /&gt;
Menunjukkan di mana aplikasi terpasang.&lt;br /&gt;
 #which nano (enter)&lt;br /&gt;
 /usr/bin/nano&lt;br /&gt;
&lt;br /&gt;
== find - Cari File ==&lt;br /&gt;
Cari file berdasarkan nama dari folder /var:&lt;br /&gt;
 #find /var -name &amp;quot;*.log&amp;quot; (enter)&lt;br /&gt;
&lt;br /&gt;
== grep - Cari Teks dalam File ==&lt;br /&gt;
Cari kata &amp;quot;root&amp;quot; dalam file /etc/passwd:&lt;br /&gt;
 #grep root /etc/passwd (enter)&lt;br /&gt;
Menggabungkan dengan perintah lain (mencari dari hasil perintah sebelumnya):&lt;br /&gt;
 #ls -la | grep ssh (enter)&lt;br /&gt;
&lt;br /&gt;
Tanda | (dibaca &amp;quot;pipe&amp;quot;) artinya hasil perintah kiri diteruskan ke perintah kanan.&lt;br /&gt;
&lt;br /&gt;
== history - Riwayat Perintah ==&lt;br /&gt;
Melihat semua perintah yang pernah kita ketik:&lt;br /&gt;
 #history (enter)&lt;br /&gt;
Ulangi perintah nomor tertentu:&lt;br /&gt;
 #!nomor (enter)&lt;br /&gt;
Tekan tombol panah atas/bawah untuk melihat riwayat.&lt;br /&gt;
&lt;br /&gt;
= 5. Hak Akses dan User =&lt;br /&gt;
&lt;br /&gt;
== whoami - Siapa Saya ==&lt;br /&gt;
 #whoami (enter)&lt;br /&gt;
 root&lt;br /&gt;
&lt;br /&gt;
== sudo - Jalankan Sebagai Admin ==&lt;br /&gt;
Menjalankan perintah sebagai root (untuk user biasa):&lt;br /&gt;
 sudo apt update (enter)&lt;br /&gt;
&lt;br /&gt;
== Mengelola User dan Hak Akses ==&lt;br /&gt;
Materi lengkapnya ada di halaman [[Manajemen User dan Hak Akses Linux Debian 12]]. Ringkasan perintahnya:&lt;br /&gt;
* adduser nama-user (buat user)&lt;br /&gt;
* passwd nama-user (ubah password)&lt;br /&gt;
* chmod 755 nama-file (ubah hak akses, r=4, w=2, x=1)&lt;br /&gt;
* chown user:grup nama-file (ubah pemilik)&lt;br /&gt;
* userdel -r nama-user (hapus user)&lt;br /&gt;
&lt;br /&gt;
= 6. Informasi Sistem =&lt;br /&gt;
&lt;br /&gt;
== uname - Info Kernel ==&lt;br /&gt;
 #uname -a (enter)&lt;br /&gt;
 Linux latihan 6.1.0-... x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
== free - Lihat RAM ==&lt;br /&gt;
 #free -h (enter)&lt;br /&gt;
Kolom total = kapasitas RAM, used = terpakai, available = yang bisa dipakai.&lt;br /&gt;
&lt;br /&gt;
== df - Lihat Kapasitas Disk ==&lt;br /&gt;
 #df -h (enter)&lt;br /&gt;
Menampilkan penggunaan penyimpanan seluruh partisi.&lt;br /&gt;
&lt;br /&gt;
== du - Ukuran Folder/File ==&lt;br /&gt;
Ukuran isi folder:&lt;br /&gt;
 #du -sh nama_folder (enter)&lt;br /&gt;
* -s = ringkas, -h = dibaca manusia (K/M/G)&lt;br /&gt;
&lt;br /&gt;
== hostname - Nama Komputer ==&lt;br /&gt;
 #hostname (enter)&lt;br /&gt;
&lt;br /&gt;
== uptime - Lama Server Menyala ==&lt;br /&gt;
 #uptime (enter)&lt;br /&gt;
&lt;br /&gt;
== ip a - Lihat IP Address ==&lt;br /&gt;
 #ip a (enter)&lt;br /&gt;
Cari bagian inet, misalnya inet 192.168.20.8/24 (itulah IP server).&lt;br /&gt;
&lt;br /&gt;
= 7. Proses dan Layanan =&lt;br /&gt;
&lt;br /&gt;
== ps - Daftar Proses ==&lt;br /&gt;
 #ps aux (enter)&lt;br /&gt;
&lt;br /&gt;
== top/htop - Monitor Proses Real-time ==&lt;br /&gt;
 #top (enter)&lt;br /&gt;
Tekan q untuk keluar. Jika ada htop: #htop (enter)&lt;br /&gt;
&lt;br /&gt;
== kill - Matikan Proses ==&lt;br /&gt;
Matikan proses dengan ID (lihat di ps/top, kolom PID):&lt;br /&gt;
 #kill -9 1234 (enter)&lt;br /&gt;
Angka -9 artinya paksa mati.&lt;br /&gt;
&lt;br /&gt;
== systemctl - Kelola Layanan ==&lt;br /&gt;
Melihat status layanan:&lt;br /&gt;
 #systemctl status ssh (enter)&lt;br /&gt;
Menjalankan/menghentikan/merestart layanan:&lt;br /&gt;
 #systemctl start ssh (enter)&lt;br /&gt;
 #systemctl stop ssh (enter)&lt;br /&gt;
 #systemctl restart ssh (enter)&lt;br /&gt;
Agar layanan ikut jalan saat reboot:&lt;br /&gt;
 #systemctl enable ssh (enter)&lt;br /&gt;
&lt;br /&gt;
= 8. Jaringan dan Internet =&lt;br /&gt;
&lt;br /&gt;
== ping - Tes Koneksi ==&lt;br /&gt;
 #ping google.com (enter)&lt;br /&gt;
Jika balasan &amp;quot;64 bytes from...&amp;quot; muncul, berarti ada internet. Hentikan dengan ctrl+c.&lt;br /&gt;
&lt;br /&gt;
== curl dan wget - Ambil Data dari Internet ==&lt;br /&gt;
Melihat isi website dari terminal:&lt;br /&gt;
 #curl https://example.com (enter)&lt;br /&gt;
Mengunduh file:&lt;br /&gt;
 #wget https://example.com/file.zip (enter)&lt;br /&gt;
&lt;br /&gt;
= 9. Arsip (Zip/Tar) =&lt;br /&gt;
&lt;br /&gt;
== Membuat dan Membuka Arsip ==&lt;br /&gt;
Buat arsip zip:&lt;br /&gt;
 #zip -r backup.zip nama_folder (enter)&lt;br /&gt;
Buka arsip zip:&lt;br /&gt;
 #unzip backup.zip (enter)&lt;br /&gt;
&lt;br /&gt;
Buat arsip tar.gz (umum di Linux):&lt;br /&gt;
 #tar -czvf backup.tar.gz nama_folder (enter)&lt;br /&gt;
Buka arsip tar.gz:&lt;br /&gt;
 #tar -xzvf backup.tar.gz (enter)&lt;br /&gt;
&lt;br /&gt;
= 10. Bantuan dan Dokumentasi ==&lt;br /&gt;
&lt;br /&gt;
== man - Manual Perintah ==&lt;br /&gt;
 #man ls (enter)&lt;br /&gt;
Tekan q untuk keluar.&lt;br /&gt;
&lt;br /&gt;
== --help - Bantuan Singkat ==&lt;br /&gt;
 #ls --help (enter)&lt;br /&gt;
&lt;br /&gt;
= Latihan (Prasyarat) ==&lt;br /&gt;
Kerjakan urut, pastikan tidak ada langkah yang gagal:&lt;br /&gt;
&lt;br /&gt;
1. Cek lokasi sekarang dengan pwd.&lt;br /&gt;
&lt;br /&gt;
2. Masuk ke /var/www, lalu lihat isinya dengan ls -la.&lt;br /&gt;
&lt;br /&gt;
3. Kembali ke folder rumah dengan cd ~.&lt;br /&gt;
&lt;br /&gt;
4. Buat folder bernama latihan-1, lalu pindah ke dalamnya.&lt;br /&gt;
&lt;br /&gt;
5. Buat file teks latihan.txt dengan touch, lalu isi dengan nano (ketik nama dan kelasmu).&lt;br /&gt;
&lt;br /&gt;
6. Lihat isi file dengan cat, lalu buat salinannya dengan cp.&lt;br /&gt;
&lt;br /&gt;
7. Cek ukuran folder latihan-1 dengan du -sh.&lt;br /&gt;
&lt;br /&gt;
8. Cari file latihan.txt dengan find dari folder rumah.&lt;br /&gt;
&lt;br /&gt;
9. Lihat RAM (free -h) dan disk (df -h), catat hasilnya.&lt;br /&gt;
&lt;br /&gt;
10. Tes koneksi internet dengan ping google.com (hentikan dengan ctrl+c).&lt;br /&gt;
&lt;br /&gt;
11. Buat arsip zip dari folder latihan-1, lalu hapus folder aslinya.&lt;br /&gt;
&lt;br /&gt;
12. Buka kembali arsipnya dengan unzip.&lt;br /&gt;
&lt;br /&gt;
Jika semua langkah selesai tanpa error, kamu sudah siap mengikuti materi selanjutnya.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Install_FTP_Server_di_Debian_12&amp;diff=2404</id>
		<title>Install FTP Server di Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Install_FTP_Server_di_Debian_12&amp;diff=2404"/>
		<updated>2026-08-05T03:44:42Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Install FTP Server di Debian 12&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apa itu FTP Server? =&lt;br /&gt;
&lt;br /&gt;
Bayangkan kamu dan teman-temanmu ingin bertukar file (foto, tugas, video). Kalau dikirim satu-satu lewat WA atau USB, lama dan ribet. Nah, &#039;&#039;&#039;FTP Server&#039;&#039;&#039; itu seperti &#039;&#039;&#039;loker penyimpanan file bersama&#039;&#039;&#039; yang bisa diakses banyak komputer sekaligus lewat jaringan.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FTP&#039;&#039;&#039; (File Transfer Protocol) = aturan/protokol untuk mengirim dan menerima file antara komputer client dan server lewat jaringan.&lt;br /&gt;
* &#039;&#039;&#039;FTP Server&#039;&#039;&#039; = komputer yang &#039;&#039;menyediakan&#039;&#039; tempat penyimpanan file (seperti loker).&lt;br /&gt;
* &#039;&#039;&#039;FTP Client&#039;&#039;&#039; = komputer yang &#039;&#039;mengambil&#039;&#039; dan &#039;&#039;meletakkan&#039;&#039; file (seperti siswa yang memakai loker).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Analogi loker:&#039;&#039;&#039;&lt;br /&gt;
* Loker besar di ruang kelas = &#039;&#039;&#039;FTP Server&#039;&#039;&#039;&lt;br /&gt;
* Siswa yang menyimpan/mengambil buku = &#039;&#039;&#039;FTP Client&#039;&#039;&#039;&lt;br /&gt;
* Aturan memakai loker (nomor loker, kunci) = &#039;&#039;&#039;Protokol FTP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Kelebihan FTP ==&lt;br /&gt;
* Bisa bertukar banyak file sekaligus.&lt;br /&gt;
* Bisa diakses dari komputer mana saja asalkan satu jaringan.&lt;br /&gt;
* Semua anggota bisa memakai file yang sama (berbagi file).&lt;br /&gt;
&lt;br /&gt;
== Cara Kerja Singkat ==&lt;br /&gt;
* FTP memakai &#039;&#039;&#039;port 21&#039;&#039;&#039; untuk perintah/koneksi (control).&lt;br /&gt;
* &#039;&#039;&#039;port 20&#039;&#039;&#039; untuk mengirim data.&lt;br /&gt;
* Client harus &#039;&#039;&#039;login&#039;&#039;&#039; (username + password) sebelum boleh mengakses file.&lt;br /&gt;
&lt;br /&gt;
== FTP vs FTPS vs SFTP ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nama !! Arti !! Koneksi&lt;br /&gt;
|-&lt;br /&gt;
| FTP || Biasa, tanpa pengaman || Tidak dienkripsi&lt;br /&gt;
|-&lt;br /&gt;
| FTPS || FTP + SSL || Dienkripsi&lt;br /&gt;
|-&lt;br /&gt;
| SFTP || Lewat SSH || Dienkripsi (paling aman)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Untuk praktik di kelas kita pakai &#039;&#039;&#039;FTP biasa&#039;&#039;&#039; karena paling sederhana.&lt;br /&gt;
&lt;br /&gt;
= Praktik: Install FTP Server di Debian 12 =&lt;br /&gt;
&lt;br /&gt;
Aplikasi FTP server yang kita pakai adalah &#039;&#039;&#039;vsftpd&#039;&#039;&#039; (Very Secure FTP Daemon). Dipilih karena ringan, aman, dan banyak dipakai.&lt;br /&gt;
&lt;br /&gt;
== 1. Persiapan ==&lt;br /&gt;
Pastikan server sudah dapat IP dan terhubung internet (sama seperti praktik sebelumnya).&lt;br /&gt;
&lt;br /&gt;
Cek IP:&lt;br /&gt;
 #ip a (enter)&lt;br /&gt;
&lt;br /&gt;
Cek internet:&lt;br /&gt;
 #ping google.com (enter)&lt;br /&gt;
&lt;br /&gt;
Update sistem:&lt;br /&gt;
 #apt update (enter)&lt;br /&gt;
&lt;br /&gt;
== 2. Install vsftpd ==&lt;br /&gt;
 #apt install -y vsftpd (enter)&lt;br /&gt;
&lt;br /&gt;
Cek hasil instalasi:&lt;br /&gt;
 #vsftpd -v (enter)&lt;br /&gt;
&lt;br /&gt;
== 3. Backup File Konfigurasi ==&lt;br /&gt;
Buat salinan dulu supaya aman kalau salah ubah:&lt;br /&gt;
 #cp /etc/vsftpd.conf /etc/vsftpd.conf.bak (enter)&lt;br /&gt;
&lt;br /&gt;
== 4. Konfigurasi vsftpd ==&lt;br /&gt;
Buka file konfigurasi:&lt;br /&gt;
 #nano /etc/vsftpd.conf (enter)&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Matikan akses anonymous ===&lt;br /&gt;
Cari baris:&lt;br /&gt;
 #anonymous_enable=YES&lt;br /&gt;
&lt;br /&gt;
Ubah menjadi:&lt;br /&gt;
 anonymous_enable=NO&lt;br /&gt;
&lt;br /&gt;
Artinya: hanya user yang punya akun yang boleh masuk (lebih aman).&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Izinkan user lokal ===&lt;br /&gt;
Cari baris:&lt;br /&gt;
 #local_enable=YES&lt;br /&gt;
&lt;br /&gt;
Hapus tanda pagar (#):&lt;br /&gt;
 local_enable=YES&lt;br /&gt;
&lt;br /&gt;
=== 4.3 Izinkan menulis/upload ===&lt;br /&gt;
Cari baris:&lt;br /&gt;
 #write_enable=YES&lt;br /&gt;
&lt;br /&gt;
Hapus tanda pagar (#):&lt;br /&gt;
 write_enable=YES&lt;br /&gt;
&lt;br /&gt;
=== 4.4 Kunci user di rumahnya sendiri ===&lt;br /&gt;
Cari baris:&lt;br /&gt;
 #chroot_local_user=YES&lt;br /&gt;
&lt;br /&gt;
Ubah menjadi:&lt;br /&gt;
 chroot_local_user=YES&lt;br /&gt;
 allow_writeable_chroot=YES&lt;br /&gt;
&lt;br /&gt;
Artinya: user yang login hanya bisa melihat folder miliknya sendiri (/home/nama-user), tidak bisa masuk ke folder lain di server. Kata &amp;quot;chroot&amp;quot; artinya &amp;quot;dikunci dalam kotak&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Simpan konfigurasi: tekan &#039;&#039;&#039;ctrl+x&#039;&#039;&#039;, lalu &#039;&#039;&#039;y&#039;&#039;&#039;, lalu &#039;&#039;&#039;enter&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 5. Buat User FTP ==&lt;br /&gt;
Buat akun untuk latihan (misal: siswa1):&lt;br /&gt;
 #adduser siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Isi password, lalu tekan enter untuk pertanyaan berikutnya.&lt;br /&gt;
&lt;br /&gt;
== 6. Restart dan Cek Status ==&lt;br /&gt;
 #systemctl restart vsftpd (enter)&lt;br /&gt;
 #systemctl status vsftpd (enter)&lt;br /&gt;
&lt;br /&gt;
Jika muncul tulisan &#039;&#039;&#039;active (running)&#039;&#039;&#039; artinya berhasil.&lt;br /&gt;
&lt;br /&gt;
== 7. Pengujian ==&lt;br /&gt;
&lt;br /&gt;
=== Cara 1: dari Windows menggunakan CMD ===&lt;br /&gt;
Buka CMD di Windows, ketikkan (ganti IP dengan IP server kamu):&lt;br /&gt;
 ftp 192.168.20.8 (enter)&lt;br /&gt;
&lt;br /&gt;
Masukkan username dan password:&lt;br /&gt;
 User (192.168.20.8:(none)): siswa1 (enter)&lt;br /&gt;
 331 Please specify the password.&lt;br /&gt;
 Password: ******** (enter)&lt;br /&gt;
&lt;br /&gt;
Jika muncul &#039;&#039;&#039;230 Login successful&#039;&#039;&#039; artinya berhasil.&lt;br /&gt;
&lt;br /&gt;
=== Cara 2: menggunakan FileZilla ===&lt;br /&gt;
1. Install FileZilla di Windows.&lt;br /&gt;
2. Isi kolom:&lt;br /&gt;
   Host : 192.168.20.8&lt;br /&gt;
   Username : siswa1&lt;br /&gt;
   Password : (password siswa1)&lt;br /&gt;
   Port : 21&lt;br /&gt;
3. Klik tombol &#039;&#039;&#039;Quickconnect&#039;&#039;&#039;.&lt;br /&gt;
4. Sebelah kiri folder Windows, sebelah kanan folder server.&lt;br /&gt;
5. Untuk mengirim file ke server, cukup &#039;&#039;&#039;drag and drop&#039;&#039;&#039; dari kiri ke kanan.&lt;br /&gt;
&lt;br /&gt;
= Kesimpulan =&lt;br /&gt;
* FTP dipakai untuk bertukar file dalam jaringan.&lt;br /&gt;
* Di Debian, aplikasi FTP server-nya bernama &#039;&#039;&#039;vsftpd&#039;&#039;&#039;.&lt;br /&gt;
* Konfigurasi utama ada di /etc/vsftpd.conf.&lt;br /&gt;
* Setiap user punya folder sendiri di /home/nama-user.&lt;br /&gt;
&lt;br /&gt;
= Latihan =&lt;br /&gt;
1. Buat 2 user (misal: siswa1 dan siswa2), lalu login bergantian.&lt;br /&gt;
2. Upload 1 file dari Windows ke server, lalu download lagi.&lt;br /&gt;
3. Coba login dengan password yang salah, amati pesan errornya.&lt;br /&gt;
4. (Tantangan) Aktifkan anonymous_enable=YES, amati perbedaannya, lalu matikan lagi!&lt;br /&gt;
&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Manajemen_User_dan_Hak_Akses_Linux_Debian_12&amp;diff=2403</id>
		<title>Manajemen User dan Hak Akses Linux Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Manajemen_User_dan_Hak_Akses_Linux_Debian_12&amp;diff=2403"/>
		<updated>2026-08-05T03:44:23Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Manajemen User dan Hak Akses Linux Debian 12&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apa itu User dan Hak Akses? =&lt;br /&gt;
&lt;br /&gt;
Bayangkan sebuah &#039;&#039;&#039;asrama&#039;&#039;&#039; dengan banyak kamar. Setiap penghuni punya kunci kamar sendiri, dan tidak semua orang boleh masuk ke semua kamar.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;User (Pengguna)&#039;&#039;&#039; = penghuni asrama (orang yang punya akun di server).&lt;br /&gt;
* &#039;&#039;&#039;Password&#039;&#039;&#039; = kunci kamar untuk membuktikan siapa kita.&lt;br /&gt;
* &#039;&#039;&#039;Hak Akses (Permission)&#039;&#039;&#039; = aturan siapa yang boleh masuk kamar mana dan boleh melakukan apa.&lt;br /&gt;
* &#039;&#039;&#039;Root (Administrator)&#039;&#039;&#039; = pemilik asrama, boleh masuk ke semua kamar dan mengatur semuanya.&lt;br /&gt;
&lt;br /&gt;
Di Linux, setiap user punya folder rumah sendiri (biasanya di /home/nama-user). Hak akses menentukan apakah file/folder bisa &#039;&#039;&#039;dibaca (r = read)&#039;&#039;&#039;, &#039;&#039;&#039;ditulis (w = write)&#039;&#039;&#039;, atau &#039;&#039;&#039;dijalankan (x = execute)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Teori: Cara Linux Mencatat Hak Akses =&lt;br /&gt;
&lt;br /&gt;
== 1. Tiga Tipe Pengguna (Pemilik) ==&lt;br /&gt;
Setiap file/folder di Linux punya 3 kelompok pemilik:&lt;br /&gt;
* &#039;&#039;&#039;u&#039;&#039;&#039; = user (pemilik file)&lt;br /&gt;
* &#039;&#039;&#039;g&#039;&#039;&#039; = group (grup yang punya file)&lt;br /&gt;
* &#039;&#039;&#039;o&#039;&#039;&#039; = others (pengguna lain di luar pemilik dan grup)&lt;br /&gt;
&lt;br /&gt;
== 2. Tiga Jenis Izin ==&lt;br /&gt;
* &#039;&#039;&#039;r (read)&#039;&#039;&#039; = bisa melihat/membuka isi = angka 4&lt;br /&gt;
* &#039;&#039;&#039;w (write)&#039;&#039;&#039; = bisa mengubah/menghapus = angka 2&lt;br /&gt;
* &#039;&#039;&#039;x (execute)&#039;&#039;&#039; = bisa menjalankan = angka 1&lt;br /&gt;
&lt;br /&gt;
Angka-angka ini digabung menjadi satu nilai:&lt;br /&gt;
* rwx = 4+2+1 = &#039;&#039;&#039;7&#039;&#039;&#039; (bebas semua)&lt;br /&gt;
* rw- = 4+2 = &#039;&#039;&#039;6&#039;&#039;&#039; (baca dan tulis)&lt;br /&gt;
* r-x = 4+1 = &#039;&#039;&#039;5&#039;&#039;&#039; (baca dan jalankan)&lt;br /&gt;
* r-- = &#039;&#039;&#039;4&#039;&#039;&#039; (hanya baca)&lt;br /&gt;
* --- = &#039;&#039;&#039;0&#039;&#039;&#039; (tidak boleh apa-apa)&lt;br /&gt;
&lt;br /&gt;
Contoh notasi hak akses:&lt;br /&gt;
 -rwxr-xr-- &lt;br /&gt;
&lt;br /&gt;
Bagian pertama (-) menandakan file biasa (d untuk folder). Lalu dibaca per 3:&lt;br /&gt;
* rwx (pemilik): boleh baca, tulis, jalankan&lt;br /&gt;
* r-x (grup): boleh baca dan jalankan&lt;br /&gt;
* r-- (lainnya): hanya boleh baca&lt;br /&gt;
&lt;br /&gt;
Cara singkat menuliskannya dalam angka: &#039;&#039;&#039;754&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Praktik: Manajemen User dan Hak Akses di Debian 12 =&lt;br /&gt;
&lt;br /&gt;
== 1. Persiapan ==&lt;br /&gt;
Login sebagai root, lalu cek dulu siapa user aktif:&lt;br /&gt;
 #whoami (enter)&lt;br /&gt;
&lt;br /&gt;
Jika hasilnya &amp;quot;root&amp;quot;, berarti kamu admin. Lanjut update sistem:&lt;br /&gt;
 #apt update (enter)&lt;br /&gt;
&lt;br /&gt;
== 2. Melihat Daftar User ==&lt;br /&gt;
Untuk melihat daftar semua user di server:&lt;br /&gt;
 #cat /etc/passwd (enter)&lt;br /&gt;
&lt;br /&gt;
Untuk melihat user yang baru saja login:&lt;br /&gt;
 #who (enter)&lt;br /&gt;
&lt;br /&gt;
Untuk melihat siapa sedang online:&lt;br /&gt;
 #w (enter)&lt;br /&gt;
&lt;br /&gt;
== 3. Membuat User Baru ==&lt;br /&gt;
Buat user bernama siswa1:&lt;br /&gt;
 #adduser siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Akan diminta:&lt;br /&gt;
* password baru (isi 2 kali)&lt;br /&gt;
* pertanyaan tambahan (cukup tekan enter)&lt;br /&gt;
&lt;br /&gt;
Cek apakah user berhasil dibuat:&lt;br /&gt;
 #cat /etc/passwd (enter)&lt;br /&gt;
&lt;br /&gt;
Cek folder rumah siswa1:&lt;br /&gt;
 #ls /home (enter)&lt;br /&gt;
&lt;br /&gt;
== 4. Mengganti Password User ==&lt;br /&gt;
Ubah password siswa1:&lt;br /&gt;
 #passwd siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Isi password baru 2 kali.&lt;br /&gt;
&lt;br /&gt;
== 5. Melihat dan Mengubah Hak Akses ==&lt;br /&gt;
Buat file latihan:&lt;br /&gt;
 #cd /home/siswa1 (enter)&lt;br /&gt;
 #echo &amp;quot;Latihan hak akses&amp;quot; &amp;gt; file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Lihat hak aksesnya:&lt;br /&gt;
 #ls -l file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Akan muncul seperti ini:&lt;br /&gt;
 -rw-r--r-- 1 root root 19 ... file_latihan.txt&lt;br /&gt;
&lt;br /&gt;
Artinya: pemilik root boleh baca-tulis (rw-), grup dan lainnya hanya baca (r--).&lt;br /&gt;
&lt;br /&gt;
Ubah pemilik file menjadi siswa1:&lt;br /&gt;
 #chown siswa1 file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Ubah grup file menjadi siswa1:&lt;br /&gt;
 #chown siswa1:siswa1 file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Cek lagi:&lt;br /&gt;
 #ls -l file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
== 6. Mencoba Ubah Hak Akses dengan Angka ==&lt;br /&gt;
Berikan hak penuh ke pemilik, baca+tulis ke grup, hanya baca ke lainnya (764):&lt;br /&gt;
 #chmod 764 file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Cek hasilnya:&lt;br /&gt;
 #ls -l file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Berikan semua izin kepada semua orang (777):&lt;br /&gt;
 #chmod 777 file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peringatan:&#039;&#039;&#039; angka 777 membuat semua orang bisa mengubah file. Untuk latihan boleh, tapi di server sungguhan berbahaya!&lt;br /&gt;
&lt;br /&gt;
== 7. Membuat Group dan Menambah Anggota ==&lt;br /&gt;
Buat grup baru bernama tkj2:&lt;br /&gt;
 #groupadd tkj2 (enter)&lt;br /&gt;
&lt;br /&gt;
Tambahkan siswa1 ke grup tkj2:&lt;br /&gt;
 #usermod -aG tkj2 siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Cek keanggotaan siswa1:&lt;br /&gt;
 #groups siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
== 8. Mengubah Pemilik Grup sebuah File ==&lt;br /&gt;
Ubah grup file_latihan.txt menjadi tkj2:&lt;br /&gt;
 #chown :tkj2 file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Cek:&lt;br /&gt;
 #ls -l file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
== 9. Menghapus User dan Group ==&lt;br /&gt;
Hapus user siswa1 beserta folder rumahnya:&lt;br /&gt;
 #userdel -r siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Hapus grup tkj2:&lt;br /&gt;
 #groupdel tkj2 (enter)&lt;br /&gt;
&lt;br /&gt;
= Kesimpulan =&lt;br /&gt;
* &#039;&#039;&#039;User&#039;&#039;&#039; = akun penghuni server, punya folder rumah di /home.&lt;br /&gt;
* &#039;&#039;&#039;Root&#039;&#039;&#039; = admin, boleh mengatur segalanya.&lt;br /&gt;
* &#039;&#039;&#039;Permission&#039;&#039;&#039; = aturan r (baca), w (tulis), x (jalankan).&lt;br /&gt;
* &#039;&#039;&#039;chmod&#039;&#039;&#039; = ubah hak akses, &#039;&#039;&#039;chown&#039;&#039;&#039; = ubah pemilik.&lt;br /&gt;
* Notasi angka: r=4, w=2, x=1 (misal 754).&lt;br /&gt;
&lt;br /&gt;
= Latihan =&lt;br /&gt;
1. Buat user bernama dirimu sendiri, lalu login dengan akun tersebut.&lt;br /&gt;
&lt;br /&gt;
2. Buat 1 file di folder rumahmu, lalu cek hak aksesnya dengan ls -l.&lt;br /&gt;
&lt;br /&gt;
3. Buat grup bernama &amp;quot;kelasku&amp;quot;, masukkan user tadi ke dalamnya.&lt;br /&gt;
&lt;br /&gt;
4. Ubah file agar pemilik bebas semua, grup boleh baca, lainnya tidak bisa apa-apa (740).&lt;br /&gt;
&lt;br /&gt;
5. Coba login sebagai user lain dan buka file milikmu. Apa yang terjadi? Catat hasilnya.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Manajemen_User_dan_Hak_Akses_Linux_Debian_12&amp;diff=2402</id>
		<title>Manajemen User dan Hak Akses Linux Debian 12</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Manajemen_User_dan_Hak_Akses_Linux_Debian_12&amp;diff=2402"/>
		<updated>2026-08-05T03:44:14Z</updated>

		<summary type="html">&lt;p&gt;Robie: /* Latihan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apa itu User dan Hak Akses? =&lt;br /&gt;
&lt;br /&gt;
Bayangkan sebuah &#039;&#039;&#039;asrama&#039;&#039;&#039; dengan banyak kamar. Setiap penghuni punya kunci kamar sendiri, dan tidak semua orang boleh masuk ke semua kamar.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;User (Pengguna)&#039;&#039;&#039; = penghuni asrama (orang yang punya akun di server).&lt;br /&gt;
* &#039;&#039;&#039;Password&#039;&#039;&#039; = kunci kamar untuk membuktikan siapa kita.&lt;br /&gt;
* &#039;&#039;&#039;Hak Akses (Permission)&#039;&#039;&#039; = aturan siapa yang boleh masuk kamar mana dan boleh melakukan apa.&lt;br /&gt;
* &#039;&#039;&#039;Root (Administrator)&#039;&#039;&#039; = pemilik asrama, boleh masuk ke semua kamar dan mengatur semuanya.&lt;br /&gt;
&lt;br /&gt;
Di Linux, setiap user punya folder rumah sendiri (biasanya di /home/nama-user). Hak akses menentukan apakah file/folder bisa &#039;&#039;&#039;dibaca (r = read)&#039;&#039;&#039;, &#039;&#039;&#039;ditulis (w = write)&#039;&#039;&#039;, atau &#039;&#039;&#039;dijalankan (x = execute)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Teori: Cara Linux Mencatat Hak Akses =&lt;br /&gt;
&lt;br /&gt;
== 1. Tiga Tipe Pengguna (Pemilik) ==&lt;br /&gt;
Setiap file/folder di Linux punya 3 kelompok pemilik:&lt;br /&gt;
* &#039;&#039;&#039;u&#039;&#039;&#039; = user (pemilik file)&lt;br /&gt;
* &#039;&#039;&#039;g&#039;&#039;&#039; = group (grup yang punya file)&lt;br /&gt;
* &#039;&#039;&#039;o&#039;&#039;&#039; = others (pengguna lain di luar pemilik dan grup)&lt;br /&gt;
&lt;br /&gt;
== 2. Tiga Jenis Izin ==&lt;br /&gt;
* &#039;&#039;&#039;r (read)&#039;&#039;&#039; = bisa melihat/membuka isi = angka 4&lt;br /&gt;
* &#039;&#039;&#039;w (write)&#039;&#039;&#039; = bisa mengubah/menghapus = angka 2&lt;br /&gt;
* &#039;&#039;&#039;x (execute)&#039;&#039;&#039; = bisa menjalankan = angka 1&lt;br /&gt;
&lt;br /&gt;
Angka-angka ini digabung menjadi satu nilai:&lt;br /&gt;
* rwx = 4+2+1 = &#039;&#039;&#039;7&#039;&#039;&#039; (bebas semua)&lt;br /&gt;
* rw- = 4+2 = &#039;&#039;&#039;6&#039;&#039;&#039; (baca dan tulis)&lt;br /&gt;
* r-x = 4+1 = &#039;&#039;&#039;5&#039;&#039;&#039; (baca dan jalankan)&lt;br /&gt;
* r-- = &#039;&#039;&#039;4&#039;&#039;&#039; (hanya baca)&lt;br /&gt;
* --- = &#039;&#039;&#039;0&#039;&#039;&#039; (tidak boleh apa-apa)&lt;br /&gt;
&lt;br /&gt;
Contoh notasi hak akses:&lt;br /&gt;
 -rwxr-xr-- &lt;br /&gt;
&lt;br /&gt;
Bagian pertama (-) menandakan file biasa (d untuk folder). Lalu dibaca per 3:&lt;br /&gt;
* rwx (pemilik): boleh baca, tulis, jalankan&lt;br /&gt;
* r-x (grup): boleh baca dan jalankan&lt;br /&gt;
* r-- (lainnya): hanya boleh baca&lt;br /&gt;
&lt;br /&gt;
Cara singkat menuliskannya dalam angka: &#039;&#039;&#039;754&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Praktik: Manajemen User dan Hak Akses di Debian 12 =&lt;br /&gt;
&lt;br /&gt;
== 1. Persiapan ==&lt;br /&gt;
Login sebagai root, lalu cek dulu siapa user aktif:&lt;br /&gt;
 #whoami (enter)&lt;br /&gt;
&lt;br /&gt;
Jika hasilnya &amp;quot;root&amp;quot;, berarti kamu admin. Lanjut update sistem:&lt;br /&gt;
 #apt update (enter)&lt;br /&gt;
&lt;br /&gt;
== 2. Melihat Daftar User ==&lt;br /&gt;
Untuk melihat daftar semua user di server:&lt;br /&gt;
 #cat /etc/passwd (enter)&lt;br /&gt;
&lt;br /&gt;
Untuk melihat user yang baru saja login:&lt;br /&gt;
 #who (enter)&lt;br /&gt;
&lt;br /&gt;
Untuk melihat siapa sedang online:&lt;br /&gt;
 #w (enter)&lt;br /&gt;
&lt;br /&gt;
== 3. Membuat User Baru ==&lt;br /&gt;
Buat user bernama siswa1:&lt;br /&gt;
 #adduser siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Akan diminta:&lt;br /&gt;
* password baru (isi 2 kali)&lt;br /&gt;
* pertanyaan tambahan (cukup tekan enter)&lt;br /&gt;
&lt;br /&gt;
Cek apakah user berhasil dibuat:&lt;br /&gt;
 #cat /etc/passwd (enter)&lt;br /&gt;
&lt;br /&gt;
Cek folder rumah siswa1:&lt;br /&gt;
 #ls /home (enter)&lt;br /&gt;
&lt;br /&gt;
== 4. Mengganti Password User ==&lt;br /&gt;
Ubah password siswa1:&lt;br /&gt;
 #passwd siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Isi password baru 2 kali.&lt;br /&gt;
&lt;br /&gt;
== 5. Melihat dan Mengubah Hak Akses ==&lt;br /&gt;
Buat file latihan:&lt;br /&gt;
 #cd /home/siswa1 (enter)&lt;br /&gt;
 #echo &amp;quot;Latihan hak akses&amp;quot; &amp;gt; file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Lihat hak aksesnya:&lt;br /&gt;
 #ls -l file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Akan muncul seperti ini:&lt;br /&gt;
 -rw-r--r-- 1 root root 19 ... file_latihan.txt&lt;br /&gt;
&lt;br /&gt;
Artinya: pemilik root boleh baca-tulis (rw-), grup dan lainnya hanya baca (r--).&lt;br /&gt;
&lt;br /&gt;
Ubah pemilik file menjadi siswa1:&lt;br /&gt;
 #chown siswa1 file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Ubah grup file menjadi siswa1:&lt;br /&gt;
 #chown siswa1:siswa1 file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Cek lagi:&lt;br /&gt;
 #ls -l file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
== 6. Mencoba Ubah Hak Akses dengan Angka ==&lt;br /&gt;
Berikan hak penuh ke pemilik, baca+tulis ke grup, hanya baca ke lainnya (764):&lt;br /&gt;
 #chmod 764 file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Cek hasilnya:&lt;br /&gt;
 #ls -l file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Berikan semua izin kepada semua orang (777):&lt;br /&gt;
 #chmod 777 file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Peringatan:&#039;&#039;&#039; angka 777 membuat semua orang bisa mengubah file. Untuk latihan boleh, tapi di server sungguhan berbahaya!&lt;br /&gt;
&lt;br /&gt;
== 7. Membuat Group dan Menambah Anggota ==&lt;br /&gt;
Buat grup baru bernama tkj2:&lt;br /&gt;
 #groupadd tkj2 (enter)&lt;br /&gt;
&lt;br /&gt;
Tambahkan siswa1 ke grup tkj2:&lt;br /&gt;
 #usermod -aG tkj2 siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Cek keanggotaan siswa1:&lt;br /&gt;
 #groups siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
== 8. Mengubah Pemilik Grup sebuah File ==&lt;br /&gt;
Ubah grup file_latihan.txt menjadi tkj2:&lt;br /&gt;
 #chown :tkj2 file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
Cek:&lt;br /&gt;
 #ls -l file_latihan.txt (enter)&lt;br /&gt;
&lt;br /&gt;
== 9. Menghapus User dan Group ==&lt;br /&gt;
Hapus user siswa1 beserta folder rumahnya:&lt;br /&gt;
 #userdel -r siswa1 (enter)&lt;br /&gt;
&lt;br /&gt;
Hapus grup tkj2:&lt;br /&gt;
 #groupdel tkj2 (enter)&lt;br /&gt;
&lt;br /&gt;
= Kesimpulan =&lt;br /&gt;
* &#039;&#039;&#039;User&#039;&#039;&#039; = akun penghuni server, punya folder rumah di /home.&lt;br /&gt;
* &#039;&#039;&#039;Root&#039;&#039;&#039; = admin, boleh mengatur segalanya.&lt;br /&gt;
* &#039;&#039;&#039;Permission&#039;&#039;&#039; = aturan r (baca), w (tulis), x (jalankan).&lt;br /&gt;
* &#039;&#039;&#039;chmod&#039;&#039;&#039; = ubah hak akses, &#039;&#039;&#039;chown&#039;&#039;&#039; = ubah pemilik.&lt;br /&gt;
* Notasi angka: r=4, w=2, x=1 (misal 754).&lt;br /&gt;
&lt;br /&gt;
= Latihan =&lt;br /&gt;
1. Buat user bernama dirimu sendiri, lalu login dengan akun tersebut.&lt;br /&gt;
&lt;br /&gt;
2. Buat 1 file di folder rumahmu, lalu cek hak aksesnya dengan ls -l.&lt;br /&gt;
&lt;br /&gt;
3. Buat grup bernama &amp;quot;kelasku&amp;quot;, masukkan user tadi ke dalamnya.&lt;br /&gt;
&lt;br /&gt;
4. Ubah file agar pemilik bebas semua, grup boleh baca, lainnya tidak bisa apa-apa (740).&lt;br /&gt;
&lt;br /&gt;
5. Coba login sebagai user lain dan buka file milikmu. Apa yang terjadi? Catat hasilnya.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Kategori:ASJ_TKJ&amp;diff=2400</id>
		<title>Kategori:ASJ TKJ</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Kategori:ASJ_TKJ&amp;diff=2400"/>
		<updated>2026-08-05T03:38:41Z</updated>

		<summary type="html">&lt;p&gt;Robie: /* Semester Ganjil */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Daftar berikut untuk tahun pelajaran 2025/2026. Sebelum memulai praktek siapkan server proxmoxnya dengan menginstall proxmox ve 7-4-3 berikut [[Install proxmox]]&lt;br /&gt;
&lt;br /&gt;
= Semester Ganjil =&lt;br /&gt;
# [[Pengantar ASJ TKJ]]&lt;br /&gt;
# [[Membuat CT Proxmox]]&lt;br /&gt;
# [[Install Apache]]&lt;br /&gt;
# [[Install DNS Server Debian 12]]&lt;br /&gt;
# [[Install SSH di Debian 12]]&lt;br /&gt;
# [[Install FTP Server di Debian 12]]&lt;br /&gt;
# [[Install MariaDB di Debian 12]]&lt;br /&gt;
# [[Install Wordpress di Debian 12]]&lt;br /&gt;
# [[Install NTP Server Debian 12]]&lt;br /&gt;
# [[Membuat Script Bash Linux]]&lt;br /&gt;
# [[Install dan Konfigurasi Default Lokasi Web Server]]&lt;br /&gt;
# [[Konfigurasi Virtualhost Debian 12]]&lt;br /&gt;
# [[Konfigurasi VLAN Mikrotik ke CT Proxmox]]&lt;br /&gt;
&lt;br /&gt;
= Semester Genap =&lt;br /&gt;
# [[Install CyberPanel di Ubuntu 20.04]]&lt;br /&gt;
## [[Install CyberPanel di Ubuntu 20.04|Cara Install]]&lt;br /&gt;
## [[Mengenal Lingkungan Panel Admin CyberPanel|Mengenal Lingkungan Panel Admin]]&lt;br /&gt;
## [[Membuat domain website di CyberPanel]]&lt;br /&gt;
## [[Membuat halaman login php dan mysql di CyberPanel|Membuat Halaman Login di Cyberpanel]]&lt;br /&gt;
## [[Membuat database sesuai website di CyberPanel]]&lt;br /&gt;
## Pengujian&lt;br /&gt;
# [[Install Pi-hole Ubuntu 20.04]]&lt;br /&gt;
## [[Install Pi-hole Ubuntu 20.04|Cara Install]]&lt;br /&gt;
## [[Cara menggunakan Pi-Hole]]&lt;br /&gt;
#Mengkonfigurasi Aplikasi Silsilah Keluarga di Cyberpanel (https://www.youtube.com/watch?v=kuOhgPdAyfg )&lt;br /&gt;
#[[Install Mediawiki]]&lt;br /&gt;
#Cloud Storage&lt;br /&gt;
##[[NextCloud]]&lt;br /&gt;
##[[Install Nextcloud di Docker Cyberpanel|Cara Install dan Pengujian NextCloud]]&lt;br /&gt;
#[[Monitoring Jaringan]]&lt;br /&gt;
##[[Monitoring Jaringan#Netdata - Monitoring Jaringan Real-Time Sederhana|Netdata]]&lt;br /&gt;
##[[Monitoring Jaringan#Cacti - Monitoring Jaringan dengan Grafik RRDTool|Cacti]]&lt;br /&gt;
##[[Monitoring Jaringan#Ntopng - Analisis Lalu Lintas Jaringan Mendalam|Ntopng]]&lt;br /&gt;
##[[Monitoring Jaringan#Zabbix - Monitoring Infrastruktur Jaringan Komprehensif|Zabbix]]&lt;br /&gt;
##[[Monitoring Jaringan#Nagios Core - Sistem Monitoring Klasik|Nagios Core]]&lt;br /&gt;
[[Petunjuk Tugas Akhir ASJ|Tugas Akhir ASJ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Beberapa Tips Trik yang ditemukan selama praktek&lt;br /&gt;
&lt;br /&gt;
# [[Backup Semua Kode Program di Cyberpanel|backup file di public_html]]&lt;br /&gt;
# [[Backup Database MariaDB di Terminal Linux|backup database]]&lt;br /&gt;
# [[Backup Semua Web dan Database Menggunakan Script Bash|backup semua file dalam public_html dengan script bash]]&lt;br /&gt;
# [[SSH PermiteRootLogin yes dengan script bash|ubah ssh agar bisa diremot dari lokal]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Install_Apache&amp;diff=2398</id>
		<title>Install Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Install_Apache&amp;diff=2398"/>
		<updated>2026-08-04T04:45:18Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Untuk instalasi apache di linux Ubuntu sederhana sekali, kita dapat menggunakan perintah berikut:&lt;br /&gt;
&lt;br /&gt;
 apt update (enter)&lt;br /&gt;
 apt -y install apache2 (enter)&lt;br /&gt;
&lt;br /&gt;
Setelah di instalas, maka halaman HTML biasanya dapat diletakkan di folder&lt;br /&gt;
&lt;br /&gt;
 /var/www/html/&lt;br /&gt;
&lt;br /&gt;
Dan untuk konfigurasi Web server apache dapat di akses di&lt;br /&gt;
&lt;br /&gt;
 /etc/apache2/&lt;br /&gt;
[[Kategori:Linux]]&lt;br /&gt;
[[Kategori:ASJ TKJ]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Menonaktifkan_Firewall_dari_Regedit_Windows&amp;diff=2397</id>
		<title>Menonaktifkan Firewall dari Regedit Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Menonaktifkan_Firewall_dari_Regedit_Windows&amp;diff=2397"/>
		<updated>2026-08-03T02:47:16Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Menonaktifkan Firewall dari Regedit Windows&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tekan tombol windows + R&lt;br /&gt;
&lt;br /&gt;
lalu ketikkan perintah regedit (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cari HKEY_LOCAL_MACHINE -&amp;gt; SYSTEM -&amp;gt; CurrentControlSet -&amp;gt; Services -&amp;gt; mpssvc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lalu cari file dengan nama Start dan ganti Value nya dari angka 2 menjadi 4. simpan, lalu Restart PC&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Menonaktifkan_Firewall_dari_Regedit_Windows&amp;diff=2396</id>
		<title>Menonaktifkan Firewall dari Regedit Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Menonaktifkan_Firewall_dari_Regedit_Windows&amp;diff=2396"/>
		<updated>2026-08-03T02:47:08Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tekan tombol windows + R&lt;br /&gt;
&lt;br /&gt;
lalu ketikkan perintah regedit (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cari HKEY_LOCAL_MACHINE -&amp;gt; SYSTEM -&amp;gt; CurrentControlSet -&amp;gt; Services -&amp;gt; mpssvc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lalu cari file dengan nama Start dan ganti Value nya dari angka 2 menjadi 4. simpan, lalu Restart PC&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Menonaktifkan_Firewall_dari_Regedit_Windows&amp;diff=2395</id>
		<title>Menonaktifkan Firewall dari Regedit Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Menonaktifkan_Firewall_dari_Regedit_Windows&amp;diff=2395"/>
		<updated>2026-08-03T02:44:16Z</updated>

		<summary type="html">&lt;p&gt;Robie: ←Membuat halaman berisi &amp;#039;tes&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;tes&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2394</id>
		<title>Mengganti Versi PHP di Cyberpanel di Terminal</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2394"/>
		<updated>2026-07-23T02:35:09Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gunakan perintah ini untuk melihat versi berapa saja yang terinstall di Cyberpanel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;php -v&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
 PHP 8.1.2-1ubuntu2.25 (cli) (built: Jul 16 2026 18:32:33) (NTS)&lt;br /&gt;
 Copyright (c) The PHP Group&lt;br /&gt;
 Zend Engine v4.1.2, Copyright (c) Zend Technologies&lt;br /&gt;
     with Zend OPcache v8.1.2-1ubuntu2.25, Copyright (c), by Zend Technologies&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jika ingin melihat dengan versi php lain yang telah terinstall, gunakan perintah berikut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /usr/local/lsws/&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hasilnya akan terlihat seperti berikut:&lt;br /&gt;
&lt;br /&gt;
 total 172&lt;br /&gt;
 drwxr-xr-x 31 root   root     4096 Jan 14  2026 .&lt;br /&gt;
 drwxr-xr-x 16 root   root     4096 Jan 14  2026 ..&lt;br /&gt;
 drwxr-xr-x  4 root   root     4096 Jan 14  2026 add-ons&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 admin&lt;br /&gt;
 -rw-------  1 root   root       49 Jan 14  2026 adminpasswd&lt;br /&gt;
 drwxr-xr-x  2 nobody nogroup  4096 Jul 22 18:06 autoupdate&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 backup&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 backup-20260114-021159&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 bin&lt;br /&gt;
 drwxr-xr-x 18 nobody nogroup  4096 Jul 13 06:40 cachedata&lt;br /&gt;
 drwxr-xr-x  2 nobody nogroup  4096 Jul 23 00:07 cgid&lt;br /&gt;
 drwxr-x---  5 lsadm  nogroup  4096 Jul 13 06:41 conf&lt;br /&gt;
 drwxr-xr-x  6 root   root     4096 Jan 14  2026 docs&lt;br /&gt;
 drwxr-xr-x  6 root   root     4096 Jan 14  2026 Example&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 fcgi-bin&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 gdata&lt;br /&gt;
 -rw-r--r--  1 root   root    35147 Nov 10  2025 GPL.txt&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 lib&lt;br /&gt;
 drwxr-x---  2 root   nogroup  4096 Jun 17 00:49 logs&lt;br /&gt;
 drwxr-xr-x  5 root   root     4096 Jan 14  2026 lsns&lt;br /&gt;
 drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp74&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp80&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp81&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp82&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp83&lt;br /&gt;
 drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp84&lt;br /&gt;
 drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp85&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 lsrecaptcha&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 modules&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 php&lt;br /&gt;
 drwxr-xr-x  2 lsadm  lsadm    4096 Nov 10  2025 phpbuild&lt;br /&gt;
 -rw-r--r--  1 root   root        4 Nov 10  2025 PLAT&lt;br /&gt;
 drwxr-xr-x  4 root   root     4096 Jan 14  2026 share&lt;br /&gt;
 drwxr-xr-x  3 nobody nogroup  4096 Jul 22 22:06 tmp&lt;br /&gt;
 -rw-r--r--  1 root   root        6 Nov 10  2025 VERSION&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kebetulan kasus yang saya temui adalah perintah php artisan storage:link tidak berjalan di laravel karena php yang aktif adalah 8.1 sedangkan versi laravel membutuhkan php versi 8.2. Solusinya adalah menggunakan perintah berikut untuk menjalankan php artisan storage:link agar tetap berjalan di versi laravel dengan php versi 8.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/lsws/lsphp82/bin/php artisan storage:link&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
jika berhasil akan muncul pemberitahuan seperti ini.&lt;br /&gt;
&lt;br /&gt;
 INFO  The [public/storage] link has been connected to [storage/app/public].&lt;br /&gt;
&lt;br /&gt;
Teknik ini digunakan agar ketika memindah projek laravel ke server lain akan mengakibatkan gambar yang telah terupload di laravel tidak muncul. Maka, dengan cara ini tampilan gambar akan kembali normal.&lt;br /&gt;
[[Kategori:Laravel]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2393</id>
		<title>Mengganti Versi PHP di Cyberpanel di Terminal</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2393"/>
		<updated>2026-07-23T02:34:54Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gunakan perintah ini untuk melihat versi berapa saja yang terinstall di Cyberpanel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;php -v&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
 PHP 8.1.2-1ubuntu2.25 (cli) (built: Jul 16 2026 18:32:33) (NTS)&lt;br /&gt;
 Copyright (c) The PHP Group&lt;br /&gt;
 Zend Engine v4.1.2, Copyright (c) Zend Technologies&lt;br /&gt;
     with Zend OPcache v8.1.2-1ubuntu2.25, Copyright (c), by Zend Technologies&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jika ingin melihat dengan versi php lain yang telah terinstall, gunakan perintah berikut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /usr/local/lsws/&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hasilnya akan terlihat seperti berikut:&lt;br /&gt;
&lt;br /&gt;
 total 172&lt;br /&gt;
 drwxr-xr-x 31 root   root     4096 Jan 14  2026 .&lt;br /&gt;
 drwxr-xr-x 16 root   root     4096 Jan 14  2026 ..&lt;br /&gt;
 drwxr-xr-x  4 root   root     4096 Jan 14  2026 add-ons&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 admin&lt;br /&gt;
 -rw-------  1 root   root       49 Jan 14  2026 adminpasswd&lt;br /&gt;
 drwxr-xr-x  2 nobody nogroup  4096 Jul 22 18:06 autoupdate&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 backup&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 backup-20260114-021159&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 bin&lt;br /&gt;
 drwxr-xr-x 18 nobody nogroup  4096 Jul 13 06:40 cachedata&lt;br /&gt;
 drwxr-xr-x  2 nobody nogroup  4096 Jul 23 00:07 cgid&lt;br /&gt;
 drwxr-x---  5 lsadm  nogroup  4096 Jul 13 06:41 conf&lt;br /&gt;
 drwxr-xr-x  6 root   root     4096 Jan 14  2026 docs&lt;br /&gt;
 drwxr-xr-x  6 root   root     4096 Jan 14  2026 Example&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 fcgi-bin&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 gdata&lt;br /&gt;
 -rw-r--r--  1 root   root    35147 Nov 10  2025 GPL.txt&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 lib&lt;br /&gt;
 drwxr-x---  2 root   nogroup  4096 Jun 17 00:49 logs&lt;br /&gt;
 drwxr-xr-x  5 root   root     4096 Jan 14  2026 lsns&lt;br /&gt;
 drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp74&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp80&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp81&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp82&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp83&lt;br /&gt;
 drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp84&lt;br /&gt;
 drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp85&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 lsrecaptcha&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 modules&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 php&lt;br /&gt;
 drwxr-xr-x  2 lsadm  lsadm    4096 Nov 10  2025 phpbuild&lt;br /&gt;
 -rw-r--r--  1 root   root        4 Nov 10  2025 PLAT&lt;br /&gt;
 drwxr-xr-x  4 root   root     4096 Jan 14  2026 share&lt;br /&gt;
 drwxr-xr-x  3 nobody nogroup  4096 Jul 22 22:06 tmp&lt;br /&gt;
 -rw-r--r--  1 root   root        6 Nov 10  2025 VERSION&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kebetulan kasus yang saya temui adalah perintah php artisan storage:link tidak berjalan di laravel karena php yang aktif adalah 8.1 sedangkan versi laravel membutuhkan php versi 8.2. Solusinya adalah menggunakan perintah berikut untuk menjalankan php artisan storage:link agar tetap berjalan di versi laravel dengan php versi 8.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/lsws/lsphp82/bin/php artisan storage:link&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jika berhasil akan muncul pemberitahuan seperti ini.&lt;br /&gt;
&lt;br /&gt;
   INFO  The [public/storage] link has been connected to [storage/app/public].&lt;br /&gt;
&lt;br /&gt;
Teknik ini digunakan agar ketika memindah projek laravel ke server lain akan mengakibatkan gambar yang telah terupload di laravel tidak muncul. Maka, dengan cara ini tampilan gambar akan kembali normal.&lt;br /&gt;
[[Kategori:Laravel]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2392</id>
		<title>Mengganti Versi PHP di Cyberpanel di Terminal</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2392"/>
		<updated>2026-07-23T02:34:31Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gunakan perintah ini untuk melihat versi berapa saja yang terinstall di Cyberpanel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;php -v&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
 PHP 8.1.2-1ubuntu2.25 (cli) (built: Jul 16 2026 18:32:33) (NTS)&lt;br /&gt;
 Copyright (c) The PHP Group&lt;br /&gt;
 Zend Engine v4.1.2, Copyright (c) Zend Technologies&lt;br /&gt;
     with Zend OPcache v8.1.2-1ubuntu2.25, Copyright (c), by Zend Technologies&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jika ingin melihat dengan versi php lain yang telah terinstall, gunakan perintah berikut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /usr/local/lsws/&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hasilnya akan terlihat seperti berikut:&lt;br /&gt;
&lt;br /&gt;
 total 172&lt;br /&gt;
 drwxr-xr-x 31 root   root     4096 Jan 14  2026 .&lt;br /&gt;
 drwxr-xr-x 16 root   root     4096 Jan 14  2026 ..&lt;br /&gt;
 drwxr-xr-x  4 root   root     4096 Jan 14  2026 add-ons&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 admin&lt;br /&gt;
 -rw-------  1 root   root       49 Jan 14  2026 adminpasswd&lt;br /&gt;
 drwxr-xr-x  2 nobody nogroup  4096 Jul 22 18:06 autoupdate&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 backup&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 backup-20260114-021159&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 bin&lt;br /&gt;
 drwxr-xr-x 18 nobody nogroup  4096 Jul 13 06:40 cachedata&lt;br /&gt;
 drwxr-xr-x  2 nobody nogroup  4096 Jul 23 00:07 cgid&lt;br /&gt;
 drwxr-x---  5 lsadm  nogroup  4096 Jul 13 06:41 conf&lt;br /&gt;
 drwxr-xr-x  6 root   root     4096 Jan 14  2026 docs&lt;br /&gt;
 drwxr-xr-x  6 root   root     4096 Jan 14  2026 Example&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 fcgi-bin&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 gdata&lt;br /&gt;
 -rw-r--r--  1 root   root    35147 Nov 10  2025 GPL.txt&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 lib&lt;br /&gt;
 drwxr-x---  2 root   nogroup  4096 Jun 17 00:49 logs&lt;br /&gt;
 drwxr-xr-x  5 root   root     4096 Jan 14  2026 lsns&lt;br /&gt;
 drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp74&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp80&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp81&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp82&lt;br /&gt;
 drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp83&lt;br /&gt;
 drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp84&lt;br /&gt;
 drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp85&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 lsrecaptcha&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Jan 14  2026 modules&lt;br /&gt;
 drwxr-xr-x  2 root   root     4096 Nov 10  2025 php&lt;br /&gt;
 drwxr-xr-x  2 lsadm  lsadm    4096 Nov 10  2025 phpbuild&lt;br /&gt;
 -rw-r--r--  1 root   root        4 Nov 10  2025 PLAT&lt;br /&gt;
 drwxr-xr-x  4 root   root     4096 Jan 14  2026 share&lt;br /&gt;
 drwxr-xr-x  3 nobody nogroup  4096 Jul 22 22:06 tmp&lt;br /&gt;
 -rw-r--r--  1 root   root        6 Nov 10  2025 VERSION&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kebetulan kasus yang saya temui adalah perintah php artisan storage:link tidak berjalan di laravel karena php yang aktif adalah 8.1 sedangkan versi laravel membutuhkan php versi 8.2. Solusinya adalah menggunakan perintah berikut untuk menjalankan php artisan storage:link agar tetap berjalan di versi laravel dengan php versi 8.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/lsws/lsphp82/bin/php artisan storage:link&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jika berhasil akan muncul pemberitahuan seperti ini.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;INFO  The [public/storage] link has been connected to [storage/app/public].&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teknik ini digunakan agar ketika memindah projek laravel ke server lain akan mengakibatkan gambar yang telah terupload di laravel tidak muncul. Maka, dengan cara ini tampilan gambar akan kembali normal.&lt;br /&gt;
[[Kategori:Laravel]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2391</id>
		<title>Mengganti Versi PHP di Cyberpanel di Terminal</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2391"/>
		<updated>2026-07-23T02:33:37Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gunakan perintah ini untuk melihat versi berapa saja yang terinstall di Cyberpanel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;php -v&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
 PHP 8.1.2-1ubuntu2.25 (cli) (built: Jul 16 2026 18:32:33) (NTS)&lt;br /&gt;
 Copyright (c) The PHP Group&lt;br /&gt;
 Zend Engine v4.1.2, Copyright (c) Zend Technologies&lt;br /&gt;
     with Zend OPcache v8.1.2-1ubuntu2.25, Copyright (c), by Zend Technologies&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jika ingin melihat dengan versi php lain yang telah terinstall, gunakan perintah berikut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /usr/local/lsws/&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hasilnya akan terlihat seperti berikut:&lt;br /&gt;
&lt;br /&gt;
total 172&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x 31 root   root     4096 Jan 14  2026 .&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x 16 root   root     4096 Jan 14  2026 ..&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  4 root   root     4096 Jan 14  2026 add-ons&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  9 root   root     4096 Jan 14  2026 admin&lt;br /&gt;
&lt;br /&gt;
-rw-------  1 root   root       49 Jan 14  2026 adminpasswd&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 nobody nogroup  4096 Jul 22 18:06 autoupdate&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 root   root     4096 Nov 10  2025 backup&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 root   root     4096 Jan 14  2026 backup-20260114-021159&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 root   root     4096 Jan 14  2026 bin&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x 18 nobody nogroup  4096 Jul 13 06:40 cachedata&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 nobody nogroup  4096 Jul 23 00:07 cgid&lt;br /&gt;
&lt;br /&gt;
drwxr-x---  5 lsadm  nogroup  4096 Jul 13 06:41 conf&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  6 root   root     4096 Jan 14  2026 docs&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  6 root   root     4096 Jan 14  2026 Example&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 root   root     4096 Jan 14  2026 fcgi-bin&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 root   root     4096 Nov 10  2025 gdata&lt;br /&gt;
&lt;br /&gt;
-rw-r--r--  1 root   root    35147 Nov 10  2025 GPL.txt&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 root   root     4096 Nov 10  2025 lib&lt;br /&gt;
&lt;br /&gt;
drwxr-x---  2 root   nogroup  4096 Jun 17 00:49 logs&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  5 root   root     4096 Jan 14  2026 lsns&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp74&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp80&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp81&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp82&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp83&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp84&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp85&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 root   root     4096 Jan 14  2026 lsrecaptcha&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 root   root     4096 Jan 14  2026 modules&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 root   root     4096 Nov 10  2025 php&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  2 lsadm  lsadm    4096 Nov 10  2025 phpbuild&lt;br /&gt;
&lt;br /&gt;
-rw-r--r--  1 root   root        4 Nov 10  2025 PLAT&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  4 root   root     4096 Jan 14  2026 share&lt;br /&gt;
&lt;br /&gt;
drwxr-xr-x  3 nobody nogroup  4096 Jul 22 22:06 tmp&lt;br /&gt;
&lt;br /&gt;
-rw-r--r--  1 root   root        6 Nov 10  2025 VERSION&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kebetulan kasus yang saya temui adalah perintah php artisan storage:link tidak berjalan di laravel karena php yang aktif adalah 8.1 sedangkan versi laravel membutuhkan php versi 8.2. Solusinya adalah menggunakan perintah berikut untuk menjalankan php artisan storage:link agar tetap berjalan di versi laravel dengan php versi 8.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/lsws/lsphp82/bin/php artisan storage:link&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jika berhasil akan muncul pemberitahuan seperti ini.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;INFO  The [public/storage] link has been connected to [storage/app/public].&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teknik ini digunakan agar ketika memindah projek laravel ke server lain akan mengakibatkan gambar yang telah terupload di laravel tidak muncul. Maka, dengan cara ini tampilan gambar akan kembali normal.&lt;br /&gt;
[[Kategori:Laravel]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2390</id>
		<title>Mengganti Versi PHP di Cyberpanel di Terminal</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2390"/>
		<updated>2026-07-23T02:33:17Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gunakan perintah ini untuk melihat versi berapa saja yang terinstall di Cyberpanel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;php -v&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
 PHP 8.1.2-1ubuntu2.25 (cli) (built: Jul 16 2026 18:32:33) (NTS)&lt;br /&gt;
 Copyright (c) The PHP Group&lt;br /&gt;
 Zend Engine v4.1.2, Copyright (c) Zend Technologies&lt;br /&gt;
     with Zend OPcache v8.1.2-1ubuntu2.25, Copyright (c), by Zend Technologies&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jika ingin melihat dengan versi php lain yang telah terinstall, gunakan perintah berikut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /usr/local/lsws/&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hasilnya akan terlihat seperti berikut:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;total 172&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 31 root   root     4096 Jan 14  2026 .&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 16 root   root     4096 Jan 14  2026 ..&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 add-ons&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 admin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-------  1 root   root       49 Jan 14  2026 adminpasswd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 22 18:06 autoupdate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 backup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 backup-20260114-021159&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 18 nobody nogroup  4096 Jul 13 06:40 cachedata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 23 00:07 cgid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  5 lsadm  nogroup  4096 Jul 13 06:41 conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 docs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 Example&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 fcgi-bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 gdata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root    35147 Nov 10  2025 GPL.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  2 root   nogroup  4096 Jun 17 00:49 logs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  5 root   root     4096 Jan 14  2026 lsns&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp74&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp80&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp81&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp82&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp83&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp84&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp85&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 lsrecaptcha&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 modules&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 lsadm  lsadm    4096 Nov 10  2025 phpbuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        4 Nov 10  2025 PLAT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 share&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  3 nobody nogroup  4096 Jul 22 22:06 tmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        6 Nov 10  2025 VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kebetulan kasus yang saya temui adalah perintah php artisan storage:link tidak berjalan di laravel karena php yang aktif adalah 8.1 sedangkan versi laravel membutuhkan php versi 8.2. Solusinya adalah menggunakan perintah berikut untuk menjalankan php artisan storage:link agar tetap berjalan di versi laravel dengan php versi 8.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/lsws/lsphp82/bin/php artisan storage:link&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jika berhasil akan muncul pemberitahuan seperti ini.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;INFO  The [public/storage] link has been connected to [storage/app/public].&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teknik ini digunakan agar ketika memindah projek laravel ke server lain akan mengakibatkan gambar yang telah terupload di laravel tidak muncul. Maka, dengan cara ini tampilan gambar akan kembali normal.&lt;br /&gt;
[[Kategori:Laravel]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2389</id>
		<title>Mengganti Versi PHP di Cyberpanel di Terminal</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2389"/>
		<updated>2026-07-23T02:33:02Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gunakan perintah ini untuk melihat versi berapa saja yang terinstall di Cyberpanel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;php -v&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
PHP 8.1.2-1ubuntu2.25 (cli) (built: Jul 16 2026 18:32:33) (NTS)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) The PHP Group&lt;br /&gt;
&lt;br /&gt;
Zend Engine v4.1.2, Copyright (c) Zend Technologies&lt;br /&gt;
&lt;br /&gt;
    with Zend OPcache v8.1.2-1ubuntu2.25, Copyright (c), by Zend Technologies&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jika ingin melihat dengan versi php lain yang telah terinstall, gunakan perintah berikut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /usr/local/lsws/&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hasilnya akan terlihat seperti berikut:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;total 172&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 31 root   root     4096 Jan 14  2026 .&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 16 root   root     4096 Jan 14  2026 ..&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 add-ons&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 admin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-------  1 root   root       49 Jan 14  2026 adminpasswd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 22 18:06 autoupdate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 backup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 backup-20260114-021159&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 18 nobody nogroup  4096 Jul 13 06:40 cachedata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 23 00:07 cgid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  5 lsadm  nogroup  4096 Jul 13 06:41 conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 docs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 Example&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 fcgi-bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 gdata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root    35147 Nov 10  2025 GPL.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  2 root   nogroup  4096 Jun 17 00:49 logs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  5 root   root     4096 Jan 14  2026 lsns&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp74&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp80&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp81&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp82&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp83&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp84&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp85&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 lsrecaptcha&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 modules&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 lsadm  lsadm    4096 Nov 10  2025 phpbuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        4 Nov 10  2025 PLAT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 share&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  3 nobody nogroup  4096 Jul 22 22:06 tmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        6 Nov 10  2025 VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kebetulan kasus yang saya temui adalah perintah php artisan storage:link tidak berjalan di laravel karena php yang aktif adalah 8.1 sedangkan versi laravel membutuhkan php versi 8.2. Solusinya adalah menggunakan perintah berikut untuk menjalankan php artisan storage:link agar tetap berjalan di versi laravel dengan php versi 8.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/lsws/lsphp82/bin/php artisan storage:link&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jika berhasil akan muncul pemberitahuan seperti ini.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;INFO  The [public/storage] link has been connected to [storage/app/public].&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teknik ini digunakan agar ketika memindah projek laravel ke server lain akan mengakibatkan gambar yang telah terupload di laravel tidak muncul. Maka, dengan cara ini tampilan gambar akan kembali normal.&lt;br /&gt;
[[Kategori:Laravel]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2388</id>
		<title>Mengganti Versi PHP di Cyberpanel di Terminal</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2388"/>
		<updated>2026-07-23T02:32:02Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gunakan perintah ini untuk melihat versi berapa saja yang terinstall di Cyberpanel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;php -v&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PHP 8.1.2-1ubuntu2.25 (cli) (built: Jul 16 2026 18:32:33) (NTS)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Copyright (c) The PHP Group&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Zend Engine v4.1.2, Copyright (c) Zend Technologies&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;    with Zend OPcache v8.1.2-1ubuntu2.25, Copyright (c), by Zend Technologies&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jika ingin melihat dengan versi php lain yang telah terinstall, gunakan perintah berikut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /usr/local/lsws/&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hasilnya akan terlihat seperti berikut:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;total 172&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 31 root   root     4096 Jan 14  2026 .&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 16 root   root     4096 Jan 14  2026 ..&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 add-ons&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 admin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-------  1 root   root       49 Jan 14  2026 adminpasswd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 22 18:06 autoupdate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 backup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 backup-20260114-021159&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 18 nobody nogroup  4096 Jul 13 06:40 cachedata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 23 00:07 cgid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  5 lsadm  nogroup  4096 Jul 13 06:41 conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 docs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 Example&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 fcgi-bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 gdata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root    35147 Nov 10  2025 GPL.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  2 root   nogroup  4096 Jun 17 00:49 logs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  5 root   root     4096 Jan 14  2026 lsns&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp74&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp80&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp81&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp82&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp83&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp84&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp85&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 lsrecaptcha&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 modules&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 lsadm  lsadm    4096 Nov 10  2025 phpbuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        4 Nov 10  2025 PLAT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 share&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  3 nobody nogroup  4096 Jul 22 22:06 tmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        6 Nov 10  2025 VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kebetulan kasus yang saya temui adalah perintah php artisan storage:link tidak berjalan di laravel karena php yang aktif adalah 8.1 sedangkan versi laravel membutuhkan php versi 8.2. Solusinya adalah menggunakan perintah berikut untuk menjalankan php artisan storage:link agar tetap berjalan di versi laravel dengan php versi 8.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/lsws/lsphp82/bin/php artisan storage:link&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jika berhasil akan muncul pemberitahuan seperti ini.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;INFO  The [public/storage] link has been connected to [storage/app/public].&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teknik ini digunakan agar ketika memindah projek laravel ke server lain akan mengakibatkan gambar yang telah terupload di laravel tidak muncul. Maka, dengan cara ini tampilan gambar akan kembali normal.&lt;br /&gt;
[[Kategori:Laravel]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2387</id>
		<title>Mengganti Versi PHP di Cyberpanel di Terminal</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2387"/>
		<updated>2026-07-23T02:30:00Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gunakan perintah ini untuk melihat versi berapa saja yang terinstall di Cyberpanel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;php -v&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PHP 8.1.2-1ubuntu2.25 (cli) (built: Jul 16 2026 18:32:33) (NTS)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Copyright (c) The PHP Group&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Zend Engine v4.1.2, Copyright (c) Zend Technologies&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;    with Zend OPcache v8.1.2-1ubuntu2.25, Copyright (c), by Zend Technologies&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jika ingin melihat dengan versi php lain yang telah terinstall, gunakan perintah berikut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /usr/local/lsws/&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hasilnya akan terlihat seperti berikut:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;total 172&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 31 root   root     4096 Jan 14  2026 .&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 16 root   root     4096 Jan 14  2026 ..&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 add-ons&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 admin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-------  1 root   root       49 Jan 14  2026 adminpasswd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 22 18:06 autoupdate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 backup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 backup-20260114-021159&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 18 nobody nogroup  4096 Jul 13 06:40 cachedata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 23 00:07 cgid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  5 lsadm  nogroup  4096 Jul 13 06:41 conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 docs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 Example&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 fcgi-bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 gdata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root    35147 Nov 10  2025 GPL.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  2 root   nogroup  4096 Jun 17 00:49 logs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  5 root   root     4096 Jan 14  2026 lsns&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp74&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp80&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp81&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp82&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp83&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp84&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp85&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 lsrecaptcha&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 modules&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 lsadm  lsadm    4096 Nov 10  2025 phpbuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        4 Nov 10  2025 PLAT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 share&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  3 nobody nogroup  4096 Jul 22 22:06 tmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        6 Nov 10  2025 VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kebetulan kasus yang saya temui adalah perintah php artisan storage:link tidak berjalan di laravel karena php yang aktif adalah 8.1 sedangkan versi laravel membutuhkan php versi 8.2. Solusinya adalah menggunakan perintah berikut untuk menjalankan php artisan storage:link agar tetap berjalan di versi laravel dengan php versi 8.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/lsws/lsphp82/bin/php artisan storage:link&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jika berhasil akan muncul pemberitahuan seperti ini.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;INFO  The [public/storage] link has been connected to [storage/app/public].&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Kategori:Laravel]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2386</id>
		<title>Mengganti Versi PHP di Cyberpanel di Terminal</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2386"/>
		<updated>2026-07-23T02:29:38Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Mengganti Versi PHP di Cyberpanel di Terminal&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gunakan perintah ini untuk melihat versi berapa saja yang terinstall di Cyberpanel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;php -v&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PHP 8.1.2-1ubuntu2.25 (cli) (built: Jul 16 2026 18:32:33) (NTS)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Copyright (c) The PHP Group&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Zend Engine v4.1.2, Copyright (c) Zend Technologies&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;    with Zend OPcache v8.1.2-1ubuntu2.25, Copyright (c), by Zend Technologies&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jika ingin melihat dengan versi php lain yang telah terinstall, gunakan perintah berikut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /usr/local/lsws/&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hasilnya akan terlihat seperti berikut:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;total 172&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 31 root   root     4096 Jan 14  2026 .&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 16 root   root     4096 Jan 14  2026 ..&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 add-ons&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 admin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-------  1 root   root       49 Jan 14  2026 adminpasswd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 22 18:06 autoupdate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 backup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 backup-20260114-021159&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 18 nobody nogroup  4096 Jul 13 06:40 cachedata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 23 00:07 cgid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  5 lsadm  nogroup  4096 Jul 13 06:41 conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 docs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 Example&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 fcgi-bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 gdata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root    35147 Nov 10  2025 GPL.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  2 root   nogroup  4096 Jun 17 00:49 logs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  5 root   root     4096 Jan 14  2026 lsns&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp74&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp80&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp81&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp82&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp83&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp84&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp85&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 lsrecaptcha&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 modules&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 lsadm  lsadm    4096 Nov 10  2025 phpbuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        4 Nov 10  2025 PLAT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 share&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  3 nobody nogroup  4096 Jul 22 22:06 tmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        6 Nov 10  2025 VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kebetulan kasus yang saya temui adalah perintah php artisan storage:link tidak berjalan di laravel karena php yang aktif adalah 8.1 sedangkan versi laravel membutuhkan php versi 8.2. Solusinya adalah menggunakan perintah berikut untuk menjalankan php artisan storage:link agar tetap berjalan di versi laravel dengan php versi 8.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/lsws/lsphp82/bin/php artisan storage:link&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jika berhasil akan muncul pemberitahuan seperti ini.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;INFO  The [public/storage] link has been connected to [storage/app/public].&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2385</id>
		<title>Mengganti Versi PHP di Cyberpanel di Terminal</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mengganti_Versi_PHP_di_Cyberpanel_di_Terminal&amp;diff=2385"/>
		<updated>2026-07-23T02:29:26Z</updated>

		<summary type="html">&lt;p&gt;Robie: ←Membuat halaman berisi &amp;#039;gunakan perintah ini untuk melihat versi berapa saja yang terinstall di Cyberpanel :  &amp;lt;code&amp;gt;php -v&amp;lt;/code&amp;gt; (enter)  &amp;lt;code&amp;gt;PHP 8.1.2-1ubuntu2.25 (cli) (built: Jul 16 2026 18:32:33) (NTS)&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;Copyright (c) The PHP Group&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;Zend Engine v4.1.2, Copyright (c) Zend Technologies&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;    with Zend OPcache v8.1.2-1ubuntu2.25, Copyright (c), by Zend Technologies&amp;lt;/code&amp;gt;   Jika ingin melihat dengan versi php lain yang telah terinstall, gunakan...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;gunakan perintah ini untuk melihat versi berapa saja yang terinstall di Cyberpanel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;php -v&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PHP 8.1.2-1ubuntu2.25 (cli) (built: Jul 16 2026 18:32:33) (NTS)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Copyright (c) The PHP Group&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Zend Engine v4.1.2, Copyright (c) Zend Technologies&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;    with Zend OPcache v8.1.2-1ubuntu2.25, Copyright (c), by Zend Technologies&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jika ingin melihat dengan versi php lain yang telah terinstall, gunakan perintah berikut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls -la /usr/local/lsws/&amp;lt;/code&amp;gt; (enter)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hasilnya akan terlihat seperti berikut:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;total 172&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 31 root   root     4096 Jan 14  2026 .&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 16 root   root     4096 Jan 14  2026 ..&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 add-ons&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 admin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-------  1 root   root       49 Jan 14  2026 adminpasswd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 22 18:06 autoupdate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 backup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 backup-20260114-021159&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x 18 nobody nogroup  4096 Jul 13 06:40 cachedata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 nobody nogroup  4096 Jul 23 00:07 cgid&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  5 lsadm  nogroup  4096 Jul 13 06:41 conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 docs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  6 root   root     4096 Jan 14  2026 Example&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 fcgi-bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 gdata&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root    35147 Nov 10  2025 GPL.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 lib&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-x---  2 root   nogroup  4096 Jun 17 00:49 logs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  5 root   root     4096 Jan 14  2026 lsns&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp74&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp80&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp81&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp82&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  9 root   root     4096 Jan 14  2026 lsphp83&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp84&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  8 root   root     4096 Jan 14  2026 lsphp85&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 lsrecaptcha&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Jan 14  2026 modules&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 root   root     4096 Nov 10  2025 php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  2 lsadm  lsadm    4096 Nov 10  2025 phpbuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        4 Nov 10  2025 PLAT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  4 root   root     4096 Jan 14  2026 share&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;drwxr-xr-x  3 nobody nogroup  4096 Jul 22 22:06 tmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-rw-r--r--  1 root   root        6 Nov 10  2025 VERSION&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kebetulan kasus yang saya temui adalah perintah php artisan storage:link tidak berjalan di laravel karena php yang aktif adalah 8.1 sedangkan versi laravel membutuhkan php versi 8.2. Solusinya adalah menggunakan perintah berikut untuk menjalankan php artisan storage:link agar tetap berjalan di versi laravel dengan php versi 8.2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/local/lsws/lsphp82/bin/php artisan storage:link&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
jika berhasil akan muncul pemberitahuan seperti ini.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;INFO  The [public/storage] link has been connected to [storage/app/public].&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Roadmap_Belajar_Machine_Learning_dengan_Python&amp;diff=2384</id>
		<title>Roadmap Belajar Machine Learning dengan Python</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Roadmap_Belajar_Machine_Learning_dengan_Python&amp;diff=2384"/>
		<updated>2026-05-22T08:48:18Z</updated>

		<summary type="html">&lt;p&gt;Robie: ←Membuat halaman berisi &amp;#039;= Roadmap Belajar Machine Learning dengan Python =  Panduan ini disusun untuk pemula yang ingin memahami cara kerja machine learning (ML) secara sistematis menggunakan Python. Setiap fase dibangun di atas fase sebelumnya, jadi ikuti urutannya dan jangan terburu-buru melompat ke fase berikutnya sebelum fondasi benar-benar kuat.  ----  == Fase 1 — Fondasi Python &amp;amp; Matematika == &amp;#039;&amp;#039;&amp;#039;Estimasi waktu: 4–6 minggu&amp;#039;&amp;#039;&amp;#039;  Ini adalah fase yang paling sering dilewati pemula...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Roadmap Belajar Machine Learning dengan Python =&lt;br /&gt;
&lt;br /&gt;
Panduan ini disusun untuk pemula yang ingin memahami cara kerja machine learning (ML) secara sistematis menggunakan Python. Setiap fase dibangun di atas fase sebelumnya, jadi ikuti urutannya dan jangan terburu-buru melompat ke fase berikutnya sebelum fondasi benar-benar kuat.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fase 1 — Fondasi Python &amp;amp; Matematika ==&lt;br /&gt;
&#039;&#039;&#039;Estimasi waktu: 4–6 minggu&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ini adalah fase yang paling sering dilewati pemula, dan paling sering menyebabkan mereka mandek di tengah jalan. Matematika bukan halangan — kamu tidak perlu menjadi ahli, tapi kamu perlu cukup paham untuk mengerti &#039;&#039;mengapa&#039;&#039; sebuah algoritma bekerja seperti itu.&lt;br /&gt;
&lt;br /&gt;
=== 1.1 Python Dasar ===&lt;br /&gt;
&lt;br /&gt;
Python adalah bahasa utama ekosistem ML. Sebelum menyentuh library apapun, pastikan kamu paham konsep berikut:&lt;br /&gt;
&lt;br /&gt;
* Tipe data: integer, float, string, boolean&lt;br /&gt;
* Struktur data: list, tuple, dictionary, set&lt;br /&gt;
* Kontrol alur: if/else, for loop, while loop&lt;br /&gt;
* Fungsi: definisi, parameter, return value&lt;br /&gt;
* Object-Oriented Programming (OOP): class, objek, atribut, method&lt;br /&gt;
* Manajemen paket: pip install, virtual environment&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kenapa ini penting?&#039;&#039;&#039;&lt;br /&gt;
Hampir semua library ML (NumPy, Pandas, Scikit-learn) dibangun di atas konsep OOP Python. Kalau kamu tidak paham cara kerja objek dan method, kamu hanya akan copy-paste kode tanpa benar-benar mengerti apa yang terjadi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus sederhana:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Kamu punya data nilai ujian 10 siswa&lt;br /&gt;
nilai = [78, 85, 90, 62, 74, 88, 95, 55, 80, 70]&lt;br /&gt;
&lt;br /&gt;
# Hitung rata-rata manual pakai Python dasar&lt;br /&gt;
def hitung_rata_rata(data):&lt;br /&gt;
    return sum(data) / len(data)&lt;br /&gt;
&lt;br /&gt;
rata = hitung_rata_rata(nilai)&lt;br /&gt;
print(f&amp;quot;Rata-rata nilai: {rata}&amp;quot;)  # Output: 77.7&lt;br /&gt;
&lt;br /&gt;
# Cari siswa yang nilainya di atas rata-rata&lt;br /&gt;
lulus = [n for n in nilai if n &amp;gt; rata]&lt;br /&gt;
print(f&amp;quot;Nilai di atas rata-rata: {lulus}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Matematika untuk ML ===&lt;br /&gt;
&lt;br /&gt;
Tiga pilar matematika yang wajib dikuasai:&lt;br /&gt;
&lt;br /&gt;
==== Aljabar Linear ====&lt;br /&gt;
ML bekerja dengan data dalam bentuk angka yang direpresentasikan sebagai vektor dan matriks. Hampir semua perhitungan internal model ML adalah operasi matriks.&lt;br /&gt;
&lt;br /&gt;
Yang perlu dipahami:&lt;br /&gt;
* Vektor dan operasinya (penjumlahan, dot product)&lt;br /&gt;
* Matriks dan operasinya (perkalian, transpose, invers)&lt;br /&gt;
* Nilai eigen (eigenvalue/eigenvector) — penting untuk PCA&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus:&#039;&#039;&#039; Bayangkan kamu punya 1000 pelanggan, masing-masing dengan 50 data (usia, pendapatan, dll). Data ini adalah matriks berukuran 1000×50. Setiap operasi model ML pada dasarnya adalah manipulasi matriks ini.&lt;br /&gt;
&lt;br /&gt;
==== Kalkulus (Dasar) ====&lt;br /&gt;
Digunakan saat model &amp;quot;belajar&amp;quot; — yaitu proses optimasi untuk meminimalkan error.&lt;br /&gt;
&lt;br /&gt;
Yang perlu dipahami:&lt;br /&gt;
* Turunan (derivative) — konsep perubahan&lt;br /&gt;
* Gradient — arah turunan di ruang multidimensi&lt;br /&gt;
* Chain rule — dasar dari algoritma backpropagation di neural network&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Intuisi sederhana:&#039;&#039;&#039; Bayangkan kamu berdiri di pegunungan berkabut dan ingin turun ke lembah paling rendah. Kamu meraba tanah di sekitarmu untuk tahu ke arah mana tanah menurun — itulah yang dilakukan gradient descent.&lt;br /&gt;
&lt;br /&gt;
==== Statistik &amp;amp; Probabilitas ====&lt;br /&gt;
ML pada dasarnya adalah statistik yang dikomputasi. Kamu perlu memahami:&lt;br /&gt;
&lt;br /&gt;
* Mean, median, modus, standar deviasi&lt;br /&gt;
* Distribusi data (normal, binomial)&lt;br /&gt;
* Korelasi dan kovarians&lt;br /&gt;
* Probabilitas dasar dan Teorema Bayes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import statistics&lt;br /&gt;
&lt;br /&gt;
nilai = [78, 85, 90, 62, 74, 88, 95, 55, 80, 70]&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Rata-rata : {statistics.mean(nilai)}&amp;quot;)&lt;br /&gt;
print(f&amp;quot;Median    : {statistics.median(nilai)}&amp;quot;)&lt;br /&gt;
print(f&amp;quot;Std dev   : {statistics.stdev(nilai):.2f}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# Dari sini kamu bisa tahu: apakah data menyebar merata?&lt;br /&gt;
# Apakah ada nilai ekstrem (outlier)?&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 1.3 NumPy &amp;amp; Pandas ===&lt;br /&gt;
&lt;br /&gt;
Ini adalah dua library paling fundamental dalam ekosistem data Python.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NumPy&#039;&#039;&#039; — untuk komputasi numerik dan operasi array/matriks yang cepat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pandas&#039;&#039;&#039; — untuk manipulasi data tabular (seperti Excel, tapi jauh lebih powerful).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kenapa ini penting?&#039;&#039;&#039;&lt;br /&gt;
Semua data nyata (file CSV, database, API) harus dibersihkan dan diformat sebelum bisa dimasukkan ke model. Pandas adalah alat utamanya. NumPy adalah &amp;quot;mesin&amp;quot; di balik hampir semua library ML.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus sederhana:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
# Simulasi data pelanggan toko&lt;br /&gt;
data = {&lt;br /&gt;
    &#039;nama&#039;       : [&#039;Andi&#039;, &#039;Budi&#039;, &#039;Citra&#039;, &#039;Dian&#039;, &#039;Eka&#039;],&lt;br /&gt;
    &#039;usia&#039;       : [25, 34, 28, 45, 31],&lt;br /&gt;
    &#039;pengeluaran&#039;: [150000, 320000, 210000, None, 280000]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
df = pd.DataFrame(data)&lt;br /&gt;
&lt;br /&gt;
# Lihat data&lt;br /&gt;
print(df.head())&lt;br /&gt;
&lt;br /&gt;
# Isi nilai kosong dengan rata-rata&lt;br /&gt;
df[&#039;pengeluaran&#039;].fillna(df[&#039;pengeluaran&#039;].mean(), inplace=True)&lt;br /&gt;
&lt;br /&gt;
# Hitung statistik dasar&lt;br /&gt;
print(df[&#039;pengeluaran&#039;].describe())&lt;br /&gt;
&lt;br /&gt;
# Operasi NumPy: normalisasi nilai ke skala 0-1&lt;br /&gt;
arr = np.array(df[&#039;pengeluaran&#039;])&lt;br /&gt;
normalized = (arr - arr.min()) / (arr.max() - arr.min())&lt;br /&gt;
print(f&amp;quot;Nilai ternormalisasi: {normalized}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fase 2 — Data &amp;amp; Visualisasi ==&lt;br /&gt;
&#039;&#039;&#039;Estimasi waktu: 3–4 minggu&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Di dunia nyata, 70–80% waktu seorang data scientist habis di fase ini. Data jarang sekali datang dalam kondisi bersih dan siap pakai.&lt;br /&gt;
&lt;br /&gt;
=== 2.1 Exploratory Data Analysis (EDA) ===&lt;br /&gt;
&lt;br /&gt;
EDA adalah proses &amp;quot;berkenalan&amp;quot; dengan data sebelum membangun model. Tujuannya adalah memahami pola, distribusi, hubungan antar variabel, dan masalah dalam data.&lt;br /&gt;
&lt;br /&gt;
Yang harus dilakukan saat EDA:&lt;br /&gt;
* Cek ukuran data (jumlah baris dan kolom)&lt;br /&gt;
* Cek tipe data tiap kolom&lt;br /&gt;
* Temukan nilai yang hilang (missing values)&lt;br /&gt;
* Temukan nilai ekstrem (outlier)&lt;br /&gt;
* Pahami distribusi setiap fitur&lt;br /&gt;
* Cari korelasi antar fitur&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus — prediksi harga rumah:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
df = pd.read_csv(&#039;harga_rumah.csv&#039;)&lt;br /&gt;
&lt;br /&gt;
# Langkah 1: gambaran umum&lt;br /&gt;
print(df.shape)        # misal: (1000, 8) = 1000 rumah, 8 fitur&lt;br /&gt;
print(df.info())       # tipe data dan jumlah non-null&lt;br /&gt;
print(df.describe())   # statistik dasar tiap kolom&lt;br /&gt;
&lt;br /&gt;
# Langkah 2: cek missing values&lt;br /&gt;
print(df.isnull().sum())&lt;br /&gt;
&lt;br /&gt;
# Langkah 3: cek distribusi harga&lt;br /&gt;
print(df[&#039;harga&#039;].skew())  # positif = data condong ke kanan (ada rumah sangat mahal)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 2.2 Visualisasi Data ===&lt;br /&gt;
&lt;br /&gt;
Visualisasi membantu kamu melihat pola yang tidak terlihat dari angka mentah. Dua library utama: &#039;&#039;&#039;Matplotlib&#039;&#039;&#039; (fleksibel, level rendah) dan &#039;&#039;&#039;Seaborn&#039;&#039;&#039; (lebih mudah untuk statistik).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kapan pakai jenis visualisasi apa:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Histogram&#039;&#039;&#039; — distribusi satu variabel numerik&lt;br /&gt;
* &#039;&#039;&#039;Boxplot&#039;&#039;&#039; — melihat outlier dan sebaran data&lt;br /&gt;
* &#039;&#039;&#039;Scatter plot&#039;&#039;&#039; — hubungan antara dua variabel numerik&lt;br /&gt;
* &#039;&#039;&#039;Heatmap korelasi&#039;&#039;&#039; — melihat hubungan semua pasangan variabel sekaligus&lt;br /&gt;
* &#039;&#039;&#039;Bar chart&#039;&#039;&#039; — membandingkan kategori&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import seaborn as sns&lt;br /&gt;
&lt;br /&gt;
# Heatmap korelasi — sangat berguna sebelum memilih fitur model&lt;br /&gt;
plt.figure(figsize=(10, 8))&lt;br /&gt;
sns.heatmap(df.corr(), annot=True, cmap=&#039;coolwarm&#039;, fmt=&#039;.2f&#039;)&lt;br /&gt;
plt.title(&#039;Korelasi Antar Fitur&#039;)&lt;br /&gt;
plt.show()&lt;br /&gt;
&lt;br /&gt;
# Dari heatmap ini kamu bisa tahu:&lt;br /&gt;
# fitur mana yang paling berkorelasi dengan &#039;harga&#039; (target)&lt;br /&gt;
# fitur mana yang saling berkorelasi satu sama lain (multikolinearitas)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 2.3 Feature Engineering ===&lt;br /&gt;
&lt;br /&gt;
Feature engineering adalah seni mengubah data mentah menjadi representasi yang lebih bermakna untuk model. Ini adalah salah satu skill yang paling membedakan praktisi ML yang biasa dengan yang mahir.&lt;br /&gt;
&lt;br /&gt;
Teknik-teknik utama:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Encoding&#039;&#039;&#039; — mengubah kategori teks menjadi angka (Label Encoding, One-Hot Encoding)&lt;br /&gt;
* &#039;&#039;&#039;Normalisasi/Standarisasi&#039;&#039;&#039; — menyamakan skala antar fitur&lt;br /&gt;
* &#039;&#039;&#039;Handling missing values&#039;&#039;&#039; — isi dengan mean, median, modus, atau hapus&lt;br /&gt;
* &#039;&#039;&#039;Membuat fitur baru&#039;&#039;&#039; — kombinasikan fitur yang ada untuk menghasilkan informasi baru&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kenapa ini penting?&#039;&#039;&#039;&lt;br /&gt;
Model ML hanya bisa memproses angka. Teks seperti &amp;quot;Laki-laki&amp;quot;/&amp;quot;Perempuan&amp;quot; atau &amp;quot;Jakarta&amp;quot;/&amp;quot;Surabaya&amp;quot; harus dikonversi dulu. Selain itu, fitur dengan skala sangat berbeda (contoh: usia 25 vs pendapatan 5.000.000) bisa membuat model bias.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from sklearn.preprocessing import LabelEncoder, StandardScaler&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
df = pd.DataFrame({&lt;br /&gt;
    &#039;kota&#039;       : [&#039;Jakarta&#039;, &#039;Surabaya&#039;, &#039;Bandung&#039;, &#039;Jakarta&#039;, &#039;Surabaya&#039;],&lt;br /&gt;
    &#039;usia&#039;       : [25, 34, 28, 45, 31],&lt;br /&gt;
    &#039;pendapatan&#039; : [3500000, 7200000, 4800000, 9000000, 5500000],&lt;br /&gt;
    &#039;beli&#039;       : [&#039;Ya&#039;, &#039;Tidak&#039;, &#039;Ya&#039;, &#039;Ya&#039;, &#039;Tidak&#039;]&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
# One-Hot Encoding untuk kolom kota (lebih dari 2 kategori)&lt;br /&gt;
df = pd.get_dummies(df, columns=[&#039;kota&#039;])&lt;br /&gt;
&lt;br /&gt;
# Label Encoding untuk target biner&lt;br /&gt;
le = LabelEncoder()&lt;br /&gt;
df[&#039;beli&#039;] = le.fit_transform(df[&#039;beli&#039;])  # Ya=1, Tidak=0&lt;br /&gt;
&lt;br /&gt;
# Standarisasi usia dan pendapatan agar skalanya sama&lt;br /&gt;
scaler = StandardScaler()&lt;br /&gt;
df[[&#039;usia&#039;, &#039;pendapatan&#039;]] = scaler.fit_transform(df[[&#039;usia&#039;, &#039;pendapatan&#039;]])&lt;br /&gt;
&lt;br /&gt;
print(df.head())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fase 3 — Algoritma Machine Learning ==&lt;br /&gt;
&#039;&#039;&#039;Estimasi waktu: 6–8 minggu&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ini adalah inti dari seluruh perjalanan. Di fase ini kamu belajar berbagai algoritma ML, kapan menggunakannya, dan bagaimana mengevaluasi hasilnya. Library utama yang digunakan adalah &#039;&#039;&#039;Scikit-learn&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Supervised Learning ===&lt;br /&gt;
&lt;br /&gt;
Model dilatih menggunakan data yang sudah berlabel — artinya, kita tahu jawaban yang benar. Dibagi menjadi dua tugas:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Regresi&#039;&#039;&#039; — memprediksi nilai kontinu (harga rumah, suhu, pendapatan)&lt;br /&gt;
* &#039;&#039;&#039;Klasifikasi&#039;&#039;&#039; — memprediksi kategori (spam/bukan spam, sakit/sehat, lulus/tidak)&lt;br /&gt;
&lt;br /&gt;
Algoritma yang wajib dipelajari:&lt;br /&gt;
* Linear/Logistic Regression — paling sederhana, bagus untuk baseline&lt;br /&gt;
* K-Nearest Neighbors (KNN) — klasifikasi berdasarkan kedekatan&lt;br /&gt;
* Decision Tree — mudah diinterpretasi, visualisasi seperti pohon keputusan&lt;br /&gt;
* Random Forest — ensemble dari banyak Decision Tree, lebih akurat&lt;br /&gt;
* Support Vector Machine (SVM) — efektif untuk data berdimensi tinggi&lt;br /&gt;
* Gradient Boosting (XGBoost, LightGBM) — sering menang di Kaggle&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus — prediksi apakah nasabah akan gagal bayar kredit:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from sklearn.ensemble import RandomForestClassifier&lt;br /&gt;
from sklearn.model_selection import train_test_split&lt;br /&gt;
from sklearn.metrics import classification_report&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
# Asumsikan df sudah bersih dari Fase 2&lt;br /&gt;
X = df.drop(&#039;gagal_bayar&#039;, axis=1)  # fitur&lt;br /&gt;
y = df[&#039;gagal_bayar&#039;]               # target (1=gagal, 0=aman)&lt;br /&gt;
&lt;br /&gt;
# Bagi data: 80% latih, 20% uji&lt;br /&gt;
X_train, X_test, y_train, y_test = train_test_split(&lt;br /&gt;
    X, y, test_size=0.2, random_state=42&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# Latih model&lt;br /&gt;
model = RandomForestClassifier(n_estimators=100, random_state=42)&lt;br /&gt;
model.fit(X_train, y_train)&lt;br /&gt;
&lt;br /&gt;
# Evaluasi&lt;br /&gt;
y_pred = model.predict(X_test)&lt;br /&gt;
print(classification_report(y_test, y_pred))&lt;br /&gt;
&lt;br /&gt;
# Lihat fitur mana yang paling berpengaruh&lt;br /&gt;
feat_importance = pd.Series(&lt;br /&gt;
    model.feature_importances_, index=X.columns&lt;br /&gt;
).sort_values(ascending=False)&lt;br /&gt;
print(feat_importance.head(5))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 3.2 Unsupervised Learning ===&lt;br /&gt;
&lt;br /&gt;
Model bekerja pada data &#039;&#039;&#039;tanpa label&#039;&#039;&#039;. Tugasnya bukan memprediksi, tapi menemukan pola tersembunyi.&lt;br /&gt;
&lt;br /&gt;
Algoritma utama:&lt;br /&gt;
* &#039;&#039;&#039;K-Means Clustering&#039;&#039;&#039; — mengelompokkan data ke dalam K kelompok&lt;br /&gt;
* &#039;&#039;&#039;DBSCAN&#039;&#039;&#039; — clustering berdasarkan kepadatan, bisa mendeteksi outlier&lt;br /&gt;
* &#039;&#039;&#039;PCA (Principal Component Analysis)&#039;&#039;&#039; — mereduksi dimensi data tanpa terlalu banyak kehilangan informasi&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus — segmentasi pelanggan toko online:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from sklearn.cluster import KMeans&lt;br /&gt;
from sklearn.preprocessing import StandardScaler&lt;br /&gt;
import pandas as pd&lt;br /&gt;
&lt;br /&gt;
# Data pelanggan: total transaksi dan rata-rata nilai transaksi&lt;br /&gt;
df = pd.DataFrame({&lt;br /&gt;
    &#039;jumlah_transaksi&#039;  : [5, 23, 2, 18, 7, 30, 1, 15, 25, 3],&lt;br /&gt;
    &#039;rata_nilai_transaksi&#039;: [50000, 850000, 30000, 620000, 120000,&lt;br /&gt;
                             950000, 25000, 480000, 780000, 40000]&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
# Standarisasi&lt;br /&gt;
scaler = StandardScaler()&lt;br /&gt;
df_scaled = scaler.fit_transform(df)&lt;br /&gt;
&lt;br /&gt;
# Clustering ke 3 segmen: pelanggan biasa, aktif, VIP&lt;br /&gt;
kmeans = KMeans(n_clusters=3, random_state=42)&lt;br /&gt;
df[&#039;segmen&#039;] = kmeans.fit_predict(df_scaled)&lt;br /&gt;
&lt;br /&gt;
print(df.groupby(&#039;segmen&#039;).mean())&lt;br /&gt;
# Kamu akan melihat 3 kelompok dengan karakteristik berbeda&lt;br /&gt;
# Segmen 0: transaksi sedikit, nilai kecil → pelanggan baru/jarang&lt;br /&gt;
# Segmen 1: transaksi banyak, nilai besar → pelanggan VIP&lt;br /&gt;
# Segmen 2: sedang-sedang → pelanggan reguler&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Evaluasi Model ===&lt;br /&gt;
&lt;br /&gt;
Akurasi bukan satu-satunya metrik! Ini kesalahan yang sangat umum dilakukan pemula.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Metrik untuk Klasifikasi:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Accuracy&#039;&#039;&#039; — persentase prediksi yang benar. Menyesatkan pada data tidak seimbang.&lt;br /&gt;
* &#039;&#039;&#039;Precision&#039;&#039;&#039; — dari semua yang diprediksi positif, berapa yang benar-benar positif?&lt;br /&gt;
* &#039;&#039;&#039;Recall&#039;&#039;&#039; — dari semua yang sebenarnya positif, berapa yang berhasil terdeteksi?&lt;br /&gt;
* &#039;&#039;&#039;F1 Score&#039;&#039;&#039; — rata-rata harmonis precision dan recall&lt;br /&gt;
* &#039;&#039;&#039;ROC-AUC&#039;&#039;&#039; — seberapa baik model memisahkan kelas positif dan negatif&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh mengapa akurasi bisa menyesatkan:&#039;&#039;&#039;&lt;br /&gt;
Misalnya dari 1000 pasien, hanya 10 yang benar-benar sakit kanker. Model yang selalu menebak &amp;quot;tidak sakit&amp;quot; akan mendapat akurasi 99% — tapi gagal total mendeteksi pasien yang sakit!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Metrik untuk Regresi:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;MAE (Mean Absolute Error)&#039;&#039;&#039; — rata-rata selisih absolut prediksi vs aktual&lt;br /&gt;
* &#039;&#039;&#039;RMSE (Root Mean Squared Error)&#039;&#039;&#039; — lebih sensitif terhadap error besar&lt;br /&gt;
* &#039;&#039;&#039;R² Score&#039;&#039;&#039; — seberapa besar variansi data yang dijelaskan model (0–1, makin tinggi makin baik)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cross-Validation — cara evaluasi yang lebih jujur:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from sklearn.model_selection import cross_val_score&lt;br /&gt;
from sklearn.ensemble import RandomForestClassifier&lt;br /&gt;
&lt;br /&gt;
model = RandomForestClassifier(n_estimators=100, random_state=42)&lt;br /&gt;
&lt;br /&gt;
# 5-fold cross-validation: data dibagi 5, model dilatih 5 kali&lt;br /&gt;
scores = cross_val_score(model, X, y, cv=5, scoring=&#039;f1&#039;)&lt;br /&gt;
print(f&amp;quot;F1 per fold : {scores}&amp;quot;)&lt;br /&gt;
print(f&amp;quot;F1 rata-rata: {scores.mean():.3f} (+/- {scores.std():.3f})&amp;quot;)&lt;br /&gt;
# Ini memberikan gambaran performa model yang lebih andal&lt;br /&gt;
# daripada hanya satu kali train-test split&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Overfitting &amp;amp; Regularisasi ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overfitting&#039;&#039;&#039; terjadi ketika model terlalu &amp;quot;menghafal&amp;quot; data latih sehingga gagal pada data baru. Ini adalah masalah paling umum dalam ML.&lt;br /&gt;
&lt;br /&gt;
Tanda-tanda overfitting:&lt;br /&gt;
* Akurasi data latih sangat tinggi (misal 99%)&lt;br /&gt;
* Akurasi data uji jauh lebih rendah (misal 72%)&lt;br /&gt;
&lt;br /&gt;
Cara mengatasinya:&lt;br /&gt;
* &#039;&#039;&#039;Regularisasi L1/L2&#039;&#039;&#039; — menambahkan penalti pada koefisien yang terlalu besar&lt;br /&gt;
* &#039;&#039;&#039;Cross-validation&#039;&#039;&#039; — memastikan model diuji pada berbagai subset data&lt;br /&gt;
* &#039;&#039;&#039;Pruning&#039;&#039;&#039; — memangkas Decision Tree agar tidak terlalu kompleks&lt;br /&gt;
* &#039;&#039;&#039;Menambah data latih&#039;&#039;&#039; — solusi terbaik jika memungkinkan&lt;br /&gt;
* &#039;&#039;&#039;Dropout&#039;&#039;&#039; — teknik khusus deep learning (dibahas di Fase 4)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Underfitting&#039;&#039;&#039; adalah kebalikannya — model terlalu sederhana, bahkan data latih pun tidak bisa diprediksi dengan baik.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fase 4 — Deep Learning ==&lt;br /&gt;
&#039;&#039;&#039;Estimasi waktu: 8–12 minggu&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Deep learning adalah subset ML yang menggunakan &#039;&#039;&#039;neural network&#039;&#039;&#039; berlapis-lapis. Sangat powerful untuk data tidak terstruktur seperti gambar, teks, dan audio — tapi membutuhkan lebih banyak data dan komputasi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penting diketahui:&#039;&#039;&#039; Jangan langsung loncat ke deep learning untuk semua masalah. Untuk data tabular terstruktur, Random Forest atau XGBoost sering kali lebih baik dan jauh lebih mudah.&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Neural Network Dasar ===&lt;br /&gt;
&lt;br /&gt;
Neural network terinspirasi dari cara kerja otak manusia. Terdiri dari:&lt;br /&gt;
* &#039;&#039;&#039;Input layer&#039;&#039;&#039; — menerima data&lt;br /&gt;
* &#039;&#039;&#039;Hidden layer&#039;&#039;&#039; — memproses dan belajar representasi&lt;br /&gt;
* &#039;&#039;&#039;Output layer&#039;&#039;&#039; — menghasilkan prediksi&lt;br /&gt;
&lt;br /&gt;
Konsep kunci yang harus dipahami:&lt;br /&gt;
* &#039;&#039;&#039;Activation function&#039;&#039;&#039; — ReLU, Sigmoid, Softmax (memperkenalkan non-linearitas)&lt;br /&gt;
* &#039;&#039;&#039;Loss function&#039;&#039;&#039; — mengukur seberapa salah prediksi model&lt;br /&gt;
* &#039;&#039;&#039;Backpropagation&#039;&#039;&#039; — algoritma untuk menghitung gradien dan memperbarui bobot&lt;br /&gt;
* &#039;&#039;&#039;Optimizer&#039;&#039;&#039; — Adam, SGD (menentukan bagaimana bobot diperbarui)&lt;br /&gt;
* &#039;&#039;&#039;Epoch &amp;amp; Batch size&#039;&#039;&#039; — berapa kali model melihat seluruh data latih&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus — klasifikasi tulisan tangan dengan Keras:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import tensorflow as tf&lt;br /&gt;
from tensorflow import keras&lt;br /&gt;
&lt;br /&gt;
# Dataset MNIST: 70.000 gambar angka 0-9 berukuran 28x28 pixel&lt;br /&gt;
(X_train, y_train), (X_test, y_test) = keras.datasets.mnist.load_data()&lt;br /&gt;
&lt;br /&gt;
# Normalisasi pixel ke skala 0-1&lt;br /&gt;
X_train, X_test = X_train / 255.0, X_test / 255.0&lt;br /&gt;
&lt;br /&gt;
# Bangun model sederhana&lt;br /&gt;
model = keras.Sequential([&lt;br /&gt;
    keras.layers.Flatten(input_shape=(28, 28)),   # 28x28 → 784 neuron&lt;br /&gt;
    keras.layers.Dense(128, activation=&#039;relu&#039;),    # hidden layer&lt;br /&gt;
    keras.layers.Dropout(0.2),                     # cegah overfitting&lt;br /&gt;
    keras.layers.Dense(10, activation=&#039;softmax&#039;)   # output: 10 kelas (0-9)&lt;br /&gt;
])&lt;br /&gt;
&lt;br /&gt;
model.compile(optimizer=&#039;adam&#039;,&lt;br /&gt;
              loss=&#039;sparse_categorical_crossentropy&#039;,&lt;br /&gt;
              metrics=[&#039;accuracy&#039;])&lt;br /&gt;
&lt;br /&gt;
model.fit(X_train, y_train, epochs=5, validation_split=0.1)&lt;br /&gt;
test_loss, test_acc = model.evaluate(X_test, y_test)&lt;br /&gt;
print(f&amp;quot;Akurasi test: {test_acc:.4f}&amp;quot;)  # biasanya ~98%&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 4.2 CNN &amp;amp; RNN ===&lt;br /&gt;
&lt;br /&gt;
Dua arsitektur neural network khusus untuk jenis data tertentu:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Convolutional Neural Network (CNN)&#039;&#039;&#039; — dirancang khusus untuk data gambar. Menggunakan operasi konvolusi untuk mendeteksi fitur visual seperti tepi, tekstur, dan bentuk secara hierarkis.&lt;br /&gt;
&lt;br /&gt;
Digunakan untuk:&lt;br /&gt;
* Klasifikasi gambar (kucing vs anjing)&lt;br /&gt;
* Deteksi objek (YOLO, Faster R-CNN)&lt;br /&gt;
* Segmentasi gambar (medis, satelit)&lt;br /&gt;
* Pengenalan wajah&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recurrent Neural Network (RNN) &amp;amp; LSTM&#039;&#039;&#039; — dirancang untuk data berurutan. Memiliki &amp;quot;memori&amp;quot; yang memungkinkan ia mempertimbangkan konteks dari langkah sebelumnya.&lt;br /&gt;
&lt;br /&gt;
Digunakan untuk:&lt;br /&gt;
* Analisis sentimen teks&lt;br /&gt;
* Prediksi harga saham (time series)&lt;br /&gt;
* Penerjemahan mesin&lt;br /&gt;
* Pengenalan suara&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Transfer Learning — jangan latih dari nol!&#039;&#039;&#039;&lt;br /&gt;
Untuk sebagian besar proyek praktis, gunakan model yang sudah dilatih (pre-trained model) dan fine-tune untuk kebutuhan spesifikmu. Ini menghemat waktu, data, dan komputasi secara dramatis.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from tensorflow.keras.applications import MobileNetV2&lt;br /&gt;
from tensorflow.keras import layers, Model&lt;br /&gt;
&lt;br /&gt;
# Gunakan MobileNetV2 yang sudah dilatih pada ImageNet (jutaan gambar)&lt;br /&gt;
base_model = MobileNetV2(input_shape=(224, 224, 3),&lt;br /&gt;
                          include_top=False,&lt;br /&gt;
                          weights=&#039;imagenet&#039;)&lt;br /&gt;
base_model.trainable = False  # bekukan bobot, jangan latih ulang&lt;br /&gt;
&lt;br /&gt;
# Tambahkan layer klasifikasi untuk kebutuhan kita&lt;br /&gt;
x = base_model.output&lt;br /&gt;
x = layers.GlobalAveragePooling2D()(x)&lt;br /&gt;
x = layers.Dense(128, activation=&#039;relu&#039;)(x)&lt;br /&gt;
output = layers.Dense(3, activation=&#039;softmax&#039;)(x)  # misal: 3 kelas buah&lt;br /&gt;
&lt;br /&gt;
model = Model(inputs=base_model.input, outputs=output)&lt;br /&gt;
# Model ini sekarang bisa mengklasifikasikan buah dengan data latih yang sedikit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 4.3 Transformer &amp;amp; Large Language Model (LLM) ===&lt;br /&gt;
&lt;br /&gt;
Transformer adalah arsitektur yang merevolusi NLP (Natural Language Processing) dan kini menyebar ke bidang lain seperti computer vision dan biologi. Konsep utamanya adalah mekanisme &#039;&#039;&#039;attention&#039;&#039;&#039; — model belajar untuk &amp;quot;memperhatikan&amp;quot; bagian input yang paling relevan.&lt;br /&gt;
&lt;br /&gt;
Model-model penting yang perlu diketahui:&lt;br /&gt;
* &#039;&#039;&#039;BERT&#039;&#039;&#039; — bagus untuk memahami teks (klasifikasi, NER, QA)&lt;br /&gt;
* &#039;&#039;&#039;GPT&#039;&#039;&#039; — bagus untuk menghasilkan teks&lt;br /&gt;
* &#039;&#039;&#039;Vision Transformer (ViT)&#039;&#039;&#039; — transformer untuk gambar&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HuggingFace&#039;&#039;&#039; adalah ekosistem utama untuk bekerja dengan transformer. Library-nya memudahkan fine-tuning ribuan model pre-trained.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus — analisis sentimen ulasan produk:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from transformers import pipeline&lt;br /&gt;
&lt;br /&gt;
# Pipeline siap pakai dari HuggingFace — tidak perlu latih dari nol&lt;br /&gt;
classifier = pipeline(&#039;sentiment-analysis&#039;,&lt;br /&gt;
                       model=&#039;nlptown/bert-base-multilingual-uncased-sentiment&#039;)&lt;br /&gt;
&lt;br /&gt;
ulasan = [&lt;br /&gt;
    &amp;quot;Produknya bagus banget, pengiriman cepat, sangat puas!&amp;quot;,&lt;br /&gt;
    &amp;quot;Kecewa, barang datang rusak dan tidak sesuai deskripsi.&amp;quot;,&lt;br /&gt;
    &amp;quot;Lumayan lah, sesuai ekspektasi untuk harganya.&amp;quot;&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
for teks in ulasan:&lt;br /&gt;
    hasil = classifier(teks)[0]&lt;br /&gt;
    print(f&amp;quot;Teks   : {teks[:50]}...&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;Label  : {hasil[&#039;label&#039;]} | Skor: {hasil[&#039;score&#039;]:.2f}\n&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fase 5 — Produksi &amp;amp; Spesialisasi ==&lt;br /&gt;
&#039;&#039;&#039;Estimasi waktu: Ongoing (terus berkembang)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Membuat model yang akurat baru setengah pekerjaan. Fase ini mengajarkan bagaimana mengubah model menjadi produk yang bisa digunakan orang lain.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 MLOps &amp;amp; Deployment ===&lt;br /&gt;
&lt;br /&gt;
MLOps adalah praktik membawa model ML ke lingkungan produksi secara andal dan terukur.&lt;br /&gt;
&lt;br /&gt;
Konsep dan alat yang perlu dipelajari:&lt;br /&gt;
* &#039;&#039;&#039;Flask / FastAPI&#039;&#039;&#039; — membungkus model sebagai REST API&lt;br /&gt;
* &#039;&#039;&#039;Docker&#039;&#039;&#039; — mengemas aplikasi agar bisa berjalan di mana saja&lt;br /&gt;
* &#039;&#039;&#039;MLflow&#039;&#039;&#039; — melacak eksperimen, versi model, dan parameter&lt;br /&gt;
* &#039;&#039;&#039;Model monitoring&#039;&#039;&#039; — memantau performa model di produksi (apakah akurasi menurun?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contoh kasus — membuat API prediksi dengan FastAPI:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from fastapi import FastAPI&lt;br /&gt;
from pydantic import BaseModel&lt;br /&gt;
import joblib&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
app = FastAPI()&lt;br /&gt;
model = joblib.load(&#039;model_kredit.pkl&#039;)  # load model yang sudah dilatih&lt;br /&gt;
&lt;br /&gt;
class DataNasabah(BaseModel):&lt;br /&gt;
    usia: float&lt;br /&gt;
    pendapatan: float&lt;br /&gt;
    jumlah_hutang: float&lt;br /&gt;
    lama_kerja: float&lt;br /&gt;
&lt;br /&gt;
@app.post(&amp;quot;/prediksi-kredit&amp;quot;)&lt;br /&gt;
def prediksi(data: DataNasabah):&lt;br /&gt;
    fitur = np.array([[data.usia, data.pendapatan,&lt;br /&gt;
                        data.jumlah_hutang, data.lama_kerja]])&lt;br /&gt;
    prediksi = model.predict(fitur)[0]&lt;br /&gt;
    probabilitas = model.predict_proba(fitur)[0][1]&lt;br /&gt;
    return {&lt;br /&gt;
        &amp;quot;keputusan&amp;quot;   : &amp;quot;Disetujui&amp;quot; if prediksi == 0 else &amp;quot;Ditolak&amp;quot;,&lt;br /&gt;
        &amp;quot;risiko_gagal&amp;quot;: f&amp;quot;{probabilitas:.1%}&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
# Jalankan: uvicorn app:app --reload&lt;br /&gt;
# Test: POST ke http://localhost:8000/prediksi-kredit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Proyek Nyata &amp;amp; Portfolio ===&lt;br /&gt;
&lt;br /&gt;
Tidak ada cara belajar ML yang lebih efektif selain mengerjakan proyek nyata. Proyek di portfolio kamu adalah bukti kemampuan yang jauh lebih kuat daripada sertifikat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rekomendasi platform:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Kaggle&#039;&#039;&#039; — kompetisi ML, dataset publik, dan notebook komunitas&lt;br /&gt;
* &#039;&#039;&#039;UCI ML Repository&#039;&#039;&#039; — koleksi dataset klasik untuk belajar&lt;br /&gt;
* &#039;&#039;&#039;GitHub&#039;&#039;&#039; — wajib untuk menyimpan dan memamerkan kode proyekmu&lt;br /&gt;
* &#039;&#039;&#039;Hugging Face&#039;&#039;&#039; — untuk proyek NLP dan model sharing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ide proyek berdasarkan tingkat kesulitan:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Level !! Proyek !! Dataset&lt;br /&gt;
|-&lt;br /&gt;
| Pemula || Prediksi harga rumah || Boston Housing, Kaggle&lt;br /&gt;
|-&lt;br /&gt;
| Pemula || Klasifikasi bunga iris || Iris Dataset (scikit-learn)&lt;br /&gt;
|-&lt;br /&gt;
| Menengah || Deteksi spam email || SMS Spam Collection&lt;br /&gt;
|-&lt;br /&gt;
| Menengah || Segmentasi pelanggan || E-commerce dataset&lt;br /&gt;
|-&lt;br /&gt;
| Menengah || Prediksi churn pelanggan || Telco Customer Churn&lt;br /&gt;
|-&lt;br /&gt;
| Lanjutan || Deteksi penipuan kartu kredit || Kaggle Credit Card Fraud&lt;br /&gt;
|-&lt;br /&gt;
| Lanjutan || Analisis sentimen ulasan || Indonesian NLP datasets&lt;br /&gt;
|-&lt;br /&gt;
| Lanjutan || Klasifikasi gambar produk || Open Images Dataset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 5.3 Jalur Spesialisasi ===&lt;br /&gt;
&lt;br /&gt;
Setelah menguasai fondasi ML, kamu bisa mendalami salah satu bidang ini:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Spesialisasi !! Fokus Utama !! Library/Framework Kunci&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Natural Language Processing (NLP)&#039;&#039;&#039; || Pemahaman dan generasi teks, chatbot, terjemahan || HuggingFace, spaCy, NLTK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Computer Vision&#039;&#039;&#039; || Pengenalan gambar, deteksi objek, analisis video || OpenCV, YOLO, Detectron2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Time Series&#039;&#039;&#039; || Prediksi data berurutan, anomali, peramalan || Prophet, statsmodels, ARIMA&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Reinforcement Learning&#039;&#039;&#039; || Agen yang belajar dari interaksi, game AI, robotika || Gym, Stable Baselines3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;MLOps/ML Engineering&#039;&#039;&#039; || Infrastruktur, deployment, monitoring skala besar || Kubernetes, Airflow, Kubeflow&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Referensi &amp;amp; Sumber Belajar yang Direkomendasikan ==&lt;br /&gt;
&lt;br /&gt;
=== Kursus Online ===&lt;br /&gt;
* [https://www.coursera.org/specializations/machine-learning-introduction Machine Learning Specialization — Andrew Ng (Coursera)] — terbaik untuk fondasi teori&lt;br /&gt;
* [https://course.fast.ai/ Practical Deep Learning for Coders — fast.ai] — pendekatan top-down, langsung praktek&lt;br /&gt;
* [https://www.kaggle.com/learn Kaggle Learn] — gratis, singkat, langsung ke praktik&lt;br /&gt;
&lt;br /&gt;
=== Buku ===&lt;br /&gt;
* &#039;&#039;&#039;Hands-On Machine Learning&#039;&#039;&#039; — Aurélien Géron (O&#039;Reilly) — referensi praktik terlengkap&lt;br /&gt;
* &#039;&#039;&#039;Deep Learning&#039;&#039;&#039; — Goodfellow, Bengio, Courville — referensi teori mendalam&lt;br /&gt;
* &#039;&#039;&#039;Pattern Recognition and Machine Learning&#039;&#039;&#039; — Bishop — untuk yang ingin matematika serius&lt;br /&gt;
&lt;br /&gt;
=== Dokumentasi Resmi ===&lt;br /&gt;
* [https://scikit-learn.org/stable/user_guide.html Scikit-learn User Guide]&lt;br /&gt;
* [https://www.tensorflow.org/tutorials TensorFlow Tutorials]&lt;br /&gt;
* [https://pytorch.org/tutorials/ PyTorch Tutorials]&lt;br /&gt;
* [https://huggingface.co/docs HuggingFace Documentation]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Catatan Penutup ==&lt;br /&gt;
&lt;br /&gt;
Belajar ML adalah maraton, bukan sprint. Beberapa hal yang perlu selalu diingat:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Pahami dulu, hafalkan belakangan.&#039;&#039;&#039; Lebih baik benar-benar mengerti cara kerja 3 algoritma daripada hafal sintaks 20 algoritma tanpa mengerti konsepnya.&lt;br /&gt;
# &#039;&#039;&#039;Kode setiap hari.&#039;&#039;&#039; Konsistensi 30 menit per hari jauh lebih efektif daripada marathon 8 jam di akhir pekan.&lt;br /&gt;
# &#039;&#039;&#039;Proyek nyata adalah guru terbaik.&#039;&#039;&#039; Teori di kursus tidak akan mempersiapkanmu untuk menghadapi data nyata yang berantakan, tidak lengkap, dan penuh kejutan.&lt;br /&gt;
# &#039;&#039;&#039;Komunitas itu penting.&#039;&#039;&#039; Bergabunglah dengan komunitas ML Indonesia di Telegram, Discord, atau forum lokal lainnya.&lt;br /&gt;
# &#039;&#039;&#039;Jangan takut salah.&#039;&#039;&#039; Model yang pertama hampir pasti jelek — dan itu normal. Iterasi adalah inti dari proses ML.&lt;br /&gt;
&lt;br /&gt;
Selamat belajar dan semoga roadmap ini bermanfaat!&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Memindahkan_CT_Proxmox_ke_Server_Lain&amp;diff=2383</id>
		<title>Memindahkan CT Proxmox ke Server Lain</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Memindahkan_CT_Proxmox_ke_Server_Lain&amp;diff=2383"/>
		<updated>2026-05-04T03:53:31Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Memindahkan Container (CT) Proxmox ke server lain melibatkan tiga tahap utama: Backup di server lama, Transfer file ke server baru, dan Restore di server tujuan. &lt;br /&gt;
&lt;br /&gt;
Berikut adalah langkah-langkah detailnya:&lt;br /&gt;
&lt;br /&gt;
== 1. Proses Backup (Server Lama) ==&lt;br /&gt;
Lakukan pencadangan CT yang ingin dipindahkan melalui web interface (GUI) Proxmox: &lt;br /&gt;
&lt;br /&gt;
Pilih CT yang akan dipindahkan dari daftar di sebelah kiri.&lt;br /&gt;
&lt;br /&gt;
Klik tab Backup, lalu pilih Backup Now.&lt;br /&gt;
&lt;br /&gt;
Pilih penyimpanan tujuan (biasanya local), pilih metode kompresi (disarankan ZSTD atau GZIP), dan klik Backup.&lt;br /&gt;
&lt;br /&gt;
Tunggu hingga status menunjukkan TASK OK. &lt;br /&gt;
&lt;br /&gt;
== 2. Proses Transfer File (Antar Server) ==&lt;br /&gt;
File backup biasanya tersimpan di direktori /var/lib/vz/dump/ di server lama. Anda perlu memindahkannya ke server baru menggunakan perintah scp melalui terminal: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Buka terminal/SSH di server lama.&lt;br /&gt;
&lt;br /&gt;
Cari nama file backup (contoh: vzdump-lxc-100-2024_04_23-08_30_00.tar.zst).&lt;br /&gt;
&lt;br /&gt;
Jalankan perintah transfer:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
scp /var/lib/vz/dump/[NAMA_FILE_BACKUP] root@[IP_SERVER_BARU]:/var/lib/vz/dump/&lt;br /&gt;
&lt;br /&gt;
Gunakan kode dengan hati-hati.&lt;br /&gt;
&lt;br /&gt;
Ganti [NAMA_FILE_BACKUP] dengan nama file asli dan [IP_SERVER_BARU] dengan IP Proxmox tujuan. &lt;br /&gt;
&lt;br /&gt;
== 3. Proses Restore (Server Baru) ==&lt;br /&gt;
Setelah transfer selesai, Anda bisa mengembalikan kontainer tersebut di server tujuan: &lt;br /&gt;
&lt;br /&gt;
ketikkan &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd /var/lib/vz/dump/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lalu &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pct restore 107 vzdump-lxc-100-2026_04_22-09_11_36.tar.zst --storage local2&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
107 adalah id ct yang belum terpakai di server yang baru.&lt;br /&gt;
&lt;br /&gt;
vzdump-lxc-100-2026_04_22-09_11_36.tar.zst adalah nama file yang berhasil di kirim dari server lama&lt;br /&gt;
&lt;br /&gt;
local2 adalah lokasi penempatan hasil restore ct di server baru.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Klik Restore dan tunggu hingga proses selesai.&lt;br /&gt;
[[Kategori:Linux]]&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Memindahkan_CT_Proxmox_ke_Server_Lain&amp;diff=2382</id>
		<title>Memindahkan CT Proxmox ke Server Lain</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Memindahkan_CT_Proxmox_ke_Server_Lain&amp;diff=2382"/>
		<updated>2026-04-23T01:56:58Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Memindahkan CT Proxmox ke Server Lain&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Memindahkan Container (CT) Proxmox ke server lain melibatkan tiga tahap utama: Backup di server lama, Transfer file ke server baru, dan Restore di server tujuan. &lt;br /&gt;
&lt;br /&gt;
Berikut adalah langkah-langkah detailnya:&lt;br /&gt;
&lt;br /&gt;
== 1. Proses Backup (Server Lama) ==&lt;br /&gt;
Lakukan pencadangan CT yang ingin dipindahkan melalui web interface (GUI) Proxmox: &lt;br /&gt;
&lt;br /&gt;
Pilih CT yang akan dipindahkan dari daftar di sebelah kiri.&lt;br /&gt;
&lt;br /&gt;
Klik tab Backup, lalu pilih Backup Now.&lt;br /&gt;
&lt;br /&gt;
Pilih penyimpanan tujuan (biasanya local), pilih metode kompresi (disarankan ZSTD atau GZIP), dan klik Backup.&lt;br /&gt;
&lt;br /&gt;
Tunggu hingga status menunjukkan TASK OK. &lt;br /&gt;
&lt;br /&gt;
== 2. Proses Transfer File (Antar Server) ==&lt;br /&gt;
File backup biasanya tersimpan di direktori /var/lib/vz/dump/ di server lama. Anda perlu memindahkannya ke server baru menggunakan perintah scp melalui terminal: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Buka terminal/SSH di server lama.&lt;br /&gt;
&lt;br /&gt;
Cari nama file backup (contoh: vzdump-lxc-100-2024_04_23-08_30_00.tar.zst).&lt;br /&gt;
&lt;br /&gt;
Jalankan perintah transfer:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
scp /var/lib/vz/dump/[NAMA_FILE_BACKUP] root@[IP_SERVER_BARU]:/var/lib/vz/dump/&lt;br /&gt;
&lt;br /&gt;
Gunakan kode dengan hati-hati.&lt;br /&gt;
&lt;br /&gt;
Ganti [NAMA_FILE_BACKUP] dengan nama file asli dan [IP_SERVER_BARU] dengan IP Proxmox tujuan. &lt;br /&gt;
&lt;br /&gt;
== 3. Proses Restore (Server Baru) ==&lt;br /&gt;
Setelah transfer selesai, Anda bisa mengembalikan kontainer tersebut di server tujuan: &lt;br /&gt;
&lt;br /&gt;
ketikkan &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd /var/lib/vz/dump/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lalu &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pct restore 107 vzdump-lxc-100-2026_04_22-09_11_36.tar.zst --storage local2&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
107 adalah id ct yang belum terpakai di server yang baru.&lt;br /&gt;
&lt;br /&gt;
vzdump-lxc-100-2026_04_22-09_11_36.tar.zst adalah nama file yang berhasil di kirim dari server lama&lt;br /&gt;
&lt;br /&gt;
local2 adalah lokasi penempatan hasil restore ct di server baru.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Klik Restore dan tunggu hingga proses selesai.&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Memindahkan_CT_Proxmox_ke_Server_Lain&amp;diff=2381</id>
		<title>Memindahkan CT Proxmox ke Server Lain</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Memindahkan_CT_Proxmox_ke_Server_Lain&amp;diff=2381"/>
		<updated>2026-04-23T01:56:48Z</updated>

		<summary type="html">&lt;p&gt;Robie: ←Membuat halaman berisi &amp;#039;Memindahkan Container (CT) Proxmox ke server lain melibatkan tiga tahap utama: Backup di server lama, Transfer file ke server baru, dan Restore di server tujuan.   Berikut adalah langkah-langkah detailnya:  == 1. Proses Backup (Server Lama) == Lakukan pencadangan CT yang ingin dipindahkan melalui web interface (GUI) Proxmox:   Pilih CT yang akan dipindahkan dari daftar di sebelah kiri.  Klik tab Backup, lalu pilih Backup Now.  Pilih penyimpanan tujuan (biasanya l...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Memindahkan Container (CT) Proxmox ke server lain melibatkan tiga tahap utama: Backup di server lama, Transfer file ke server baru, dan Restore di server tujuan. &lt;br /&gt;
&lt;br /&gt;
Berikut adalah langkah-langkah detailnya:&lt;br /&gt;
&lt;br /&gt;
== 1. Proses Backup (Server Lama) ==&lt;br /&gt;
Lakukan pencadangan CT yang ingin dipindahkan melalui web interface (GUI) Proxmox: &lt;br /&gt;
&lt;br /&gt;
Pilih CT yang akan dipindahkan dari daftar di sebelah kiri.&lt;br /&gt;
&lt;br /&gt;
Klik tab Backup, lalu pilih Backup Now.&lt;br /&gt;
&lt;br /&gt;
Pilih penyimpanan tujuan (biasanya local), pilih metode kompresi (disarankan ZSTD atau GZIP), dan klik Backup.&lt;br /&gt;
&lt;br /&gt;
Tunggu hingga status menunjukkan TASK OK. &lt;br /&gt;
&lt;br /&gt;
== 2. Proses Transfer File (Antar Server) ==&lt;br /&gt;
File backup biasanya tersimpan di direktori /var/lib/vz/dump/ di server lama. Anda perlu memindahkannya ke server baru menggunakan perintah scp melalui terminal: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Buka terminal/SSH di server lama.&lt;br /&gt;
&lt;br /&gt;
Cari nama file backup (contoh: vzdump-lxc-100-2024_04_23-08_30_00.tar.zst).&lt;br /&gt;
&lt;br /&gt;
Jalankan perintah transfer:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
scp /var/lib/vz/dump/[NAMA_FILE_BACKUP] root@[IP_SERVER_BARU]:/var/lib/vz/dump/&lt;br /&gt;
&lt;br /&gt;
Gunakan kode dengan hati-hati.&lt;br /&gt;
&lt;br /&gt;
Ganti [NAMA_FILE_BACKUP] dengan nama file asli dan [IP_SERVER_BARU] dengan IP Proxmox tujuan. &lt;br /&gt;
&lt;br /&gt;
== 3. Proses Restore (Server Baru) ==&lt;br /&gt;
Setelah transfer selesai, Anda bisa mengembalikan kontainer tersebut di server tujuan: &lt;br /&gt;
&lt;br /&gt;
ketikkan &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd /var/lib/vz/dump/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lalu &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pct restore 107 vzdump-lxc-100-2026_04_22-09_11_36.tar.zst --storage local2&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
107 adalah id ct yang belum terpakai di server yang baru.&lt;br /&gt;
&lt;br /&gt;
vzdump-lxc-100-2026_04_22-09_11_36.tar.zst adalah nama file yang berhasil di kirim dari server lama&lt;br /&gt;
&lt;br /&gt;
local2 adalah lokasi penempatan hasil restore ct di server baru.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Klik Restore dan tunggu hingga proses selesai.&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mail_Server_Debian_13&amp;diff=2380</id>
		<title>Mail Server Debian 13</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mail_Server_Debian_13&amp;diff=2380"/>
		<updated>2026-04-22T07:30:15Z</updated>

		<summary type="html">&lt;p&gt;Robie: /* 📚 REFERENSI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TUTORIAL INSTALASI MAIL SERVER =&lt;br /&gt;
&#039;&#039;&#039;Debian 13 di Proxmox CT&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Komponen yang Dipelajari:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Apache2 &lt;br /&gt;
&lt;br /&gt;
BIND9 &lt;br /&gt;
&lt;br /&gt;
Postfix &lt;br /&gt;
&lt;br /&gt;
Dovecot &lt;br /&gt;
&lt;br /&gt;
Roundcube&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spesifikasi Lab:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
HDD 8 GB | RAM 512 MB | Proxmox Container | IP: 192.168.111.103 (sesuai ip yang didapatkan)&lt;br /&gt;
&lt;br /&gt;
== TUJUAN PEMBELAJARAN ==&lt;br /&gt;
Setelah mengikuti tutorial ini, siswa mampu:&lt;br /&gt;
# Memahami arsitektur dasar mail server&lt;br /&gt;
# Menginstal dan mengkonfigurasi layanan DNS, SMTP, IMAP, dan Webmail&lt;br /&gt;
# Menguji koneksi email menggunakan Telnet&lt;br /&gt;
# Melakukan troubleshooting dasar jika terjadi error&lt;br /&gt;
&lt;br /&gt;
== PERSIAPAN AWAL ==&lt;br /&gt;
=== Spesifikasi Server ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Komponen !! Spesifikasi Minimum&lt;br /&gt;
|-&lt;br /&gt;
| Proxmox VE || Versi 8.x (Container Mode)&lt;br /&gt;
|-&lt;br /&gt;
| OS Guest || Debian 13 (Trixie) 64-bit&lt;br /&gt;
|-&lt;br /&gt;
| Storage || 8 GB HDD&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 512 MB + Swap 512 MB&lt;br /&gt;
|-&lt;br /&gt;
| IP Address || 192.168.111.103/24&lt;br /&gt;
|-&lt;br /&gt;
| Domain || belajar.local&lt;br /&gt;
|-&lt;br /&gt;
| Hostname || mailserver.belajar.local&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Langkah 1: Buat Container di Proxmox ===&lt;br /&gt;
# Buka Proxmox Web UI: &amp;lt;code&amp;gt;https://IP-PROXMOX:8006&amp;lt;/code&amp;gt;&lt;br /&gt;
# Download template Debian 13: &amp;lt;code&amp;gt;Datacenter → Node → local → CT Templates&amp;lt;/code&amp;gt;&lt;br /&gt;
# Klik &#039;&#039;&#039;Create CT&#039;&#039;&#039; dan isi:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Nilai Contoh&lt;br /&gt;
|-&lt;br /&gt;
| CT ID || 101 (sesuai dengan CT yang sudah ada)&lt;br /&gt;
|-&lt;br /&gt;
| Hostname || mailserver&lt;br /&gt;
|-&lt;br /&gt;
| Template || debian-13-standard&lt;br /&gt;
|-&lt;br /&gt;
| Disk || 8 GB&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 1 core&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 512 MB&lt;br /&gt;
|-&lt;br /&gt;
| Swap || 512 MB (wajib!)&lt;br /&gt;
|-&lt;br /&gt;
| Network || IP Static: 192.168.111.103/24 (sesuai IP yang didapatkan masing-masing&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Masuk ke Container &amp;amp; Update Sistem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Masuk ke console container&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
# Install paket dasar&lt;br /&gt;
apt install -y curl wget nano net-tools dnsutils ufw rsyslog&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Set Hostname &amp;amp; Swap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set hostname&lt;br /&gt;
hostnamectl set-hostname mailserver&lt;br /&gt;
&lt;br /&gt;
# Edit file hosts&lt;br /&gt;
nano /etc/hosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
192.168.111.103   mailserver.belajar.local   mailserver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:001-etc-hosts.jpg|pus|jmpl|582x582px]]&lt;br /&gt;
&lt;br /&gt;
== 🔧 BAGIAN 1: INSTALASI DNS SERVER (BIND9) ==&lt;br /&gt;
=== Langkah 1: Install BIND9 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y bind9 bind9utils dnsutils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi named.conf.options ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/named.conf.options&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi dengan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
    directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
    forwarders { 8.8.8.8; 8.8.4.4; };&lt;br /&gt;
    dnssec-validation auto;&lt;br /&gt;
    listen-on { any; };&lt;br /&gt;
    allow-query { any; };&lt;br /&gt;
    recursion yes;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:002-etc-bind-named-conf-options.jpg|pus|jmpl|638x638px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Zone Domain ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/named.conf.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tambahkan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zone &amp;quot;belajar.local&amp;quot; {&lt;br /&gt;
    type master;&lt;br /&gt;
    file &amp;quot;/etc/bind/db.belajar.local&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
zone &amp;quot;111.168.192.in-addr.arpa&amp;quot; {&lt;br /&gt;
    type master;&lt;br /&gt;
    file &amp;quot;/etc/bind/db.192.168.111&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:003-etc-bind-named-conf-local.jpg|pus|jmpl|635x635px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Buat File Zone Forward ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/db.belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@   IN  SOA mailserver.belajar.local. root.belajar.local. (&lt;br /&gt;
                2024010101 ; Serial&lt;br /&gt;
                604800 ; Refresh&lt;br /&gt;
                86400  ; Retry&lt;br /&gt;
                2419200 ; Expire&lt;br /&gt;
                604800 ) ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
@       IN  NS  mailserver.belajar.local.&lt;br /&gt;
@       IN  A   192.168.111.103&lt;br /&gt;
@       IN  MX 10 mailserver.belajar.local.&lt;br /&gt;
mailserver IN A 192.168.111.103&lt;br /&gt;
mail       IN A 192.168.111.103&lt;br /&gt;
www        IN A 192.168.111.103&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:004-etc-bind-db-belajar-local.jpg|pus|jmpl|583x583px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Buat File Zone Reverse ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/db.192.168.111&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@   IN  SOA mailserver.belajar.local. root.belajar.local. (&lt;br /&gt;
                2024010101 ; Serial&lt;br /&gt;
                604800 ; Refresh&lt;br /&gt;
                86400  ; Retry&lt;br /&gt;
                2419200 ; Expire&lt;br /&gt;
                604800 ) ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
@   IN  NS  mailserver.belajar.local.&lt;br /&gt;
103 IN  PTR mailserver.belajar.local.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:005-etc-bind-db-192168111.jpg|pus|jmpl|677x677px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Set DNS Lokal &amp;amp; Restart ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set DNS ke server sendiri&lt;br /&gt;
nano /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nameserver 192.168.111.103&lt;br /&gt;
search belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:006-etc-resolv-conf.jpg|pus|jmpl|589x589px]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek konfigurasi&lt;br /&gt;
named-checkconf&lt;br /&gt;
named-checkzone belajar.local /etc/bind/db.belajar.local&lt;br /&gt;
&lt;br /&gt;
# Restart BIND9&lt;br /&gt;
systemctl restart bind9&lt;br /&gt;
systemctl enable bind9&lt;br /&gt;
&lt;br /&gt;
# Tes DNS&lt;br /&gt;
nslookup mailserver.belajar.local&lt;br /&gt;
dig MX belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:007-cek-konfigurasi-named-checkzone-belajar-local.jpg|pus|jmpl|576x576px]]&lt;br /&gt;
[[Berkas:008-nslookup-maiserver-belajar-local.jpg|pus|jmpl|492x492px]]&lt;br /&gt;
[[Berkas:009-dig-mx-belajar-local.jpg|pus|jmpl|635x635px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 2: INSTALASI WEB SERVER &amp;amp; DATABASE ==&lt;br /&gt;
=== Langkah 1: Install Apache2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y apache2&lt;br /&gt;
systemctl start apache2&lt;br /&gt;
systemctl enable apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Install PHP dan Modul ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y php php-cli php-common php-curl php-gd php-intl \&lt;br /&gt;
    php-json php-mbstring php-mysql php-xml php-zip libapache2-mod-php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cek PHP sudah terinstall:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Install MariaDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y mariadb-server mariadb-client&lt;br /&gt;
systemctl start mariadb&lt;br /&gt;
systemctl enable mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Buat Database untuk Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p (enter)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
biarkan Password tetap kosong, langsung tekan Enter saja.&lt;br /&gt;
&lt;br /&gt;
Masukkan perintah SQL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
CREATE USER &#039;roundcube&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;password123&#039;;&lt;br /&gt;
GRANT ALL PRIVILEGES ON roundcubemail.* TO &#039;roundcube&#039;@&#039;localhost&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
EXIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Aktifkan Modul Apache ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod rewrite ssl headers&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 3: INSTALASI SMTP SERVER (POSTFIX) ==&lt;br /&gt;
=== Langkah 1: Install Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y postfix mailutils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Saat muncul dialog:&lt;br /&gt;
# Pilih: &amp;lt;code&amp;gt;Internet Site&amp;lt;/code&amp;gt;&lt;br /&gt;
# System mail name: &amp;lt;code&amp;gt;belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi main.cf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/postfix/main.cf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tambahkan/ubah konfigurasi berikut:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Identitas server&lt;br /&gt;
myhostname = mailserver.belajar.local&lt;br /&gt;
mydomain = belajar.local&lt;br /&gt;
myorigin = $mydomain&lt;br /&gt;
&lt;br /&gt;
# Jaringan&lt;br /&gt;
inet_interfaces = all&lt;br /&gt;
inet_protocols = ipv4&lt;br /&gt;
mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost&lt;br /&gt;
mynetworks = 127.0.0.0/8 192.168.111.0/24&lt;br /&gt;
&lt;br /&gt;
# Format mailbox&lt;br /&gt;
home_mailbox = Maildir/&lt;br /&gt;
&lt;br /&gt;
# Autentikasi via Dovecot&lt;br /&gt;
smtpd_sasl_type = dovecot&lt;br /&gt;
smtpd_sasl_path = private/auth&lt;br /&gt;
smtpd_sasl_auth_enable = yes&lt;br /&gt;
smtpd_sasl_security_options = noanonymous&lt;br /&gt;
&lt;br /&gt;
# Keamanan relay&lt;br /&gt;
smtpd_recipient_restrictions =&lt;br /&gt;
    permit_sasl_authenticated,&lt;br /&gt;
    permit_mynetworks,&lt;br /&gt;
    reject_unauth_destination&lt;br /&gt;
&lt;br /&gt;
# Optimasi untuk RAM rendah&lt;br /&gt;
default_process_limit = 10&lt;br /&gt;
smtpd_client_connection_rate_limit = 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:010-nano-etc-postfix-main-cf.jpg|pus|jmpl|560x560px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Aktifkan Port Submission ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/postfix/master.cf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari baris &amp;lt;code&amp;gt;submission&amp;lt;/code&amp;gt; dan hapus tanda &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submission inet n       -       y       -       -       smtpd&lt;br /&gt;
  -o syslog_name=postfix/submission&lt;br /&gt;
  -o smtpd_tls_security_level=encrypt&lt;br /&gt;
  -o smtpd_sasl_auth_enable=yes&lt;br /&gt;
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:011-nano-etc-postfix-master-cf.jpg|pus|jmpl|534x534px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Restart Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart postfix&lt;br /&gt;
systemctl enable postfix&lt;br /&gt;
&lt;br /&gt;
# Cek port sudah terbuka&lt;br /&gt;
ss -tlnp | grep -E &#039;:25|:587&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:012-restart-postfix.jpg|pus|jmpl|731x731px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 4: INSTALASI IMAP SERVER (DOVECOT) ==&lt;br /&gt;
=== Langkah 1: Install Dovecot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y dovecot-core dovecot-imapd dovecot-pop3d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi Protokol ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/dovecot.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubah baris:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
protocols = imap pop3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:013-nano-etc-dovecot-conf.jpg|pus|jmpl|654x654px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Format Mail ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-mail.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari dan ubah:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mail_path = maildir:~/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:014-etc-dovecot-conf-d-10-mail-conf.jpg|pus|jmpl|591x591px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Konfigurasi Autentikasi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-auth.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pastikan baris ini aktif (tanpa tanda &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!include auth-system.conf.ext&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:015-etc-dovecot-conf-d-10-auth-conf.jpg|pus|jmpl|564x564px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Konfigurasi Socket untuk Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-master.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari bagian &amp;lt;code&amp;gt;service auth&amp;lt;/code&amp;gt; dan pastikan seperti ini:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service auth {&lt;br /&gt;
  unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
    mode = 0660&lt;br /&gt;
    user = postfix&lt;br /&gt;
    group = postfix&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  unix_listener auth-userdb {&lt;br /&gt;
  mode = 0660&lt;br /&gt;
  user = dovecot&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:016-nano-etc-dovecot-conf-d-10-master-conf.jpg|pus|jmpl|754x754px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Restart Dovecot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Restart Dovecot dulu&lt;br /&gt;
systemctl restart dovecot&lt;br /&gt;
systemctl enable dovecot&lt;br /&gt;
&lt;br /&gt;
# Lalu restart Postfix&lt;br /&gt;
systemctl restart postfix&lt;br /&gt;
&lt;br /&gt;
# Cek port&lt;br /&gt;
ss -tlnp | grep -E &#039;:110|:143&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:017-restart-dovecot-6.jpg|pus|jmpl|653x653px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 5: MEMBUAT AKUN EMAIL ==&lt;br /&gt;
=== Buat User Email ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Buat user1&lt;br /&gt;
adduser --shell /sbin/nologin user1&lt;br /&gt;
# Masukkan password saat diminta&lt;br /&gt;
&lt;br /&gt;
# Buat user2&lt;br /&gt;
adduser --shell /sbin/nologin user2&lt;br /&gt;
&lt;br /&gt;
# Buat folder Maildir&lt;br /&gt;
mkdir -p /home/user1/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R user1:user1 /home/user1/Maildir&lt;br /&gt;
&lt;br /&gt;
mkdir -p /home/user2/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R user2:user2 /home/user2/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;💡 Info:&#039;&#039;&#039; &lt;br /&gt;
* User &amp;lt;code&amp;gt;user1&amp;lt;/code&amp;gt; = email &amp;lt;code&amp;gt;user1@belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
* User &amp;lt;code&amp;gt;user2&amp;lt;/code&amp;gt; = email &amp;lt;code&amp;gt;user2@belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🧪 BAGIAN 6: PENGUJIAN DENGAN TELNET ==&lt;br /&gt;
=== Langkah 1: Install Telnet ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y telnet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Tes Kirim Email via SMTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
telnet 192.168.111.103 25&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jika berhasil, akan muncul:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
220 mailserver.belajar.local ESMTP Postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ketik perintah berikut satu per satu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EHLO belajar.local&lt;br /&gt;
MAIL FROM:&amp;lt;user1@belajar.local&amp;gt;&lt;br /&gt;
RCPT TO:&amp;lt;user2@belajar.local&amp;gt;&lt;br /&gt;
DATA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kemudian ketik isi email:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
From: user1@belajar.local&lt;br /&gt;
To: user2@belajar.local&lt;br /&gt;
Subject: Hallo dari user1&lt;br /&gt;
&lt;br /&gt;
Halo user2, ini email percobaan kita!&lt;br /&gt;
Semoga berhasil ya!&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;⚠️ Penting:&#039;&#039;&#039; Titik (&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;) di baris terakhir harus sendiri, tanpa spasi!&lt;br /&gt;
&lt;br /&gt;
Lanjutkan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
QUIT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Cek Email Masuk ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls /home/user2/Maildir/new/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jika muncul file, email berhasil diterima!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Lihat isi email&lt;br /&gt;
cat /home/user2/Maildir/new/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Tes IMAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
telnet 192.168.111.103 143&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Harus muncul: &amp;lt;code&amp;gt;* OK Dovecot ready&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a LOGIN user2 passworduser2&lt;br /&gt;
b SELECT INBOX&lt;br /&gt;
d LOGOUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🌍 BAGIAN 7: INSTALASI WEBMAIL (ROUNDCUBE) ==&lt;br /&gt;
=== Langkah 1: Download Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.6/roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
tar xzf roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
mv roundcubemail-1.6.6 roundcube&lt;br /&gt;
rm roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Set Permission ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown -R www-data:www-data /var/www/html/roundcube&lt;br /&gt;
chmod -R 755 /var/www/html/roundcube&lt;br /&gt;
chmod -R 777 /var/www/html/roundcube/temp&lt;br /&gt;
chmod -R 777 /var/www/html/roundcube/logs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Apache ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/roundcube.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName mail.belajar.local&lt;br /&gt;
    DocumentRoot /var/www/html/roundcube&lt;br /&gt;
    &amp;lt;Directory /var/www/html/roundcube&amp;gt;&lt;br /&gt;
        Options -Indexes +FollowSymLinks&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Require all granted&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aktifkan site:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2ensite roundcube.conf&lt;br /&gt;
a2dissite 000-default.conf&lt;br /&gt;
systemctl reload apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Import Database Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u roundcube -p roundcubemail &amp;lt; /var/www/html/roundcube/SQL/mysql.initial.sql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Setup via Browser ===&lt;br /&gt;
# Buka browser: &amp;lt;code&amp;gt;http://192.168.111.103/roundcube/installer&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ikuti wizard setup&lt;br /&gt;
# Konfigurasi database:&lt;br /&gt;
## Server: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;&lt;br /&gt;
## Database: &amp;lt;code&amp;gt;roundcubemail&amp;lt;/code&amp;gt;&lt;br /&gt;
## User: &amp;lt;code&amp;gt;roundcube&amp;lt;/code&amp;gt;&lt;br /&gt;
## Password: &amp;lt;code&amp;gt;password123&amp;lt;/code&amp;gt; (sesuai yang dibuat tadi)&lt;br /&gt;
# Konfigurasi IMAP: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;, port &amp;lt;code&amp;gt;143&amp;lt;/code&amp;gt;&lt;br /&gt;
# Konfigurasi SMTP: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;, port &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt;&lt;br /&gt;
# Klik &#039;&#039;&#039;Create config&#039;&#039;&#039; → &#039;&#039;&#039;Initialize database&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Hapus Folder Installer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -rf /var/www/html/roundcube/installer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 7: Akses Webmail ===&lt;br /&gt;
Buka browser: &amp;lt;code&amp;gt;http://192.168.111.103/roundcube&amp;lt;/code&amp;gt;&lt;br /&gt;
Login dengan:&lt;br /&gt;
* Username: &amp;lt;code&amp;gt;user1&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;user2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Password: (sesuai password user Linux)&lt;br /&gt;
&lt;br /&gt;
== 🔍 TROUBLESHOOTING DASAR ==&lt;br /&gt;
=== Mail Server Tidak Bisa Dikirim ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek log Postfix&lt;br /&gt;
journalctl -u postfix --no-pager | tail -20&lt;br /&gt;
&lt;br /&gt;
# Cek antrian email&lt;br /&gt;
mailq&lt;br /&gt;
&lt;br /&gt;
# Flush antrian&lt;br /&gt;
postqueue -f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dovecot Tidak Bisa Login ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek log Dovecot&lt;br /&gt;
journalctl -u dovecot --no-pager | tail -20&lt;br /&gt;
&lt;br /&gt;
# Cek konfigurasi&lt;br /&gt;
doveconf -n | head -20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DNS Tidak Resolve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek konfigurasi BIND&lt;br /&gt;
named-checkconf&lt;br /&gt;
named-checkzone belajar.local /etc/bind/db.belajar.local&lt;br /&gt;
&lt;br /&gt;
# Restart BIND&lt;br /&gt;
systemctl restart bind9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Perintah Berguna untuk Siswa ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek status semua layanan&lt;br /&gt;
systemctl status bind9 apache2 mariadb postfix dovecot&lt;br /&gt;
&lt;br /&gt;
# Restart semua layanan&lt;br /&gt;
systemctl restart bind9 apache2 mariadb postfix dovecot&lt;br /&gt;
&lt;br /&gt;
# Monitor log realtime&lt;br /&gt;
journalctl -f&lt;br /&gt;
&lt;br /&gt;
# Tambah user email baru&lt;br /&gt;
adduser --shell /sbin/nologin namauser&lt;br /&gt;
mkdir -p /home/namauser/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R namauser:namauser /home/namauser/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 📋 CHECKLIST AKHIR ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! No !! Pengujian !! Perintah !! Hasil OK&lt;br /&gt;
|-&lt;br /&gt;
| 1 || DNS aktif || &amp;lt;code&amp;gt;systemctl is-active bind9&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MX record || &amp;lt;code&amp;gt;dig MX belajar.local&amp;lt;/code&amp;gt; || mailserver.belajar.local&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Apache aktif || &amp;lt;code&amp;gt;systemctl is-active apache2&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Database aktif || &amp;lt;code&amp;gt;systemctl is-active mariadb&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Postfix aktif || &amp;lt;code&amp;gt;systemctl is-active postfix&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Port 25 terbuka || &amp;lt;code&amp;gt;ss -tlnp | grep :25&amp;lt;/code&amp;gt; || LISTEN&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Dovecot aktif || &amp;lt;code&amp;gt;systemctl is-active dovecot&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Port 143 terbuka || &amp;lt;code&amp;gt;ss -tlnp | grep :143&amp;lt;/code&amp;gt; || LISTEN&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Kirim email Telnet || &amp;lt;code&amp;gt;telnet localhost 25&amp;lt;/code&amp;gt; || 220 banner muncul&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Email masuk || &amp;lt;code&amp;gt;ls /home/user2/Maildir/new/&amp;lt;/code&amp;gt; || ada file&lt;br /&gt;
|-&lt;br /&gt;
| 11 || Webmail bisa diakses || Browser ke &amp;lt;code&amp;gt;/roundcube&amp;lt;/code&amp;gt; || halaman login muncul&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 🎓 TUGAS PRAKTIKUM ==&lt;br /&gt;
# ✅ Instal mail server sesuai tutorial ini&lt;br /&gt;
# ✅ Buat 3 akun email: &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Kirim email dari &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt; ke &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt; via Telnet&lt;br /&gt;
# ✅ Verifikasi email masuk ke Maildir &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Login ke webmail Roundcube dengan akun &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Kirim email via webmail dari &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt; ke &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Dokumentasikan setiap langkah dengan screenshot&lt;br /&gt;
# ✅ Buat laporan praktikum dalam format PDF&lt;br /&gt;
&lt;br /&gt;
== 📚 REFERENSI ==&lt;br /&gt;
* [https://www.postfix.org/ Postfix Official Documentation]&lt;br /&gt;
* [https://www.dovecot.org/ Dovecot Official Documentation]&lt;br /&gt;
* [https://roundcube.net/ Roundcube Webmail]&lt;br /&gt;
* [https://www.isc.org/bind/ BIND9 Documentation]&lt;br /&gt;
* Modul Praktikum TKJ SMK — Administrasi Server Linux&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mail_Server_Debian_13&amp;diff=2379</id>
		<title>Mail Server Debian 13</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mail_Server_Debian_13&amp;diff=2379"/>
		<updated>2026-04-22T07:08:32Z</updated>

		<summary type="html">&lt;p&gt;Robie: /* TUTORIAL INSTALASI MAIL SERVER */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TUTORIAL INSTALASI MAIL SERVER =&lt;br /&gt;
&#039;&#039;&#039;Debian 13 di Proxmox CT&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Komponen yang Dipelajari:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Apache2 &lt;br /&gt;
&lt;br /&gt;
BIND9 &lt;br /&gt;
&lt;br /&gt;
Postfix &lt;br /&gt;
&lt;br /&gt;
Dovecot &lt;br /&gt;
&lt;br /&gt;
Roundcube&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spesifikasi Lab:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
HDD 8 GB | RAM 512 MB | Proxmox Container | IP: 192.168.111.103 (sesuai ip yang didapatkan)&lt;br /&gt;
&lt;br /&gt;
== TUJUAN PEMBELAJARAN ==&lt;br /&gt;
Setelah mengikuti tutorial ini, siswa mampu:&lt;br /&gt;
# Memahami arsitektur dasar mail server&lt;br /&gt;
# Menginstal dan mengkonfigurasi layanan DNS, SMTP, IMAP, dan Webmail&lt;br /&gt;
# Menguji koneksi email menggunakan Telnet&lt;br /&gt;
# Melakukan troubleshooting dasar jika terjadi error&lt;br /&gt;
&lt;br /&gt;
== PERSIAPAN AWAL ==&lt;br /&gt;
=== Spesifikasi Server ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Komponen !! Spesifikasi Minimum&lt;br /&gt;
|-&lt;br /&gt;
| Proxmox VE || Versi 8.x (Container Mode)&lt;br /&gt;
|-&lt;br /&gt;
| OS Guest || Debian 13 (Trixie) 64-bit&lt;br /&gt;
|-&lt;br /&gt;
| Storage || 8 GB HDD&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 512 MB + Swap 512 MB&lt;br /&gt;
|-&lt;br /&gt;
| IP Address || 192.168.111.103/24&lt;br /&gt;
|-&lt;br /&gt;
| Domain || belajar.local&lt;br /&gt;
|-&lt;br /&gt;
| Hostname || mailserver.belajar.local&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Langkah 1: Buat Container di Proxmox ===&lt;br /&gt;
# Buka Proxmox Web UI: &amp;lt;code&amp;gt;https://IP-PROXMOX:8006&amp;lt;/code&amp;gt;&lt;br /&gt;
# Download template Debian 13: &amp;lt;code&amp;gt;Datacenter → Node → local → CT Templates&amp;lt;/code&amp;gt;&lt;br /&gt;
# Klik &#039;&#039;&#039;Create CT&#039;&#039;&#039; dan isi:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Nilai Contoh&lt;br /&gt;
|-&lt;br /&gt;
| CT ID || 101 (sesuai dengan CT yang sudah ada)&lt;br /&gt;
|-&lt;br /&gt;
| Hostname || mailserver&lt;br /&gt;
|-&lt;br /&gt;
| Template || debian-13-standard&lt;br /&gt;
|-&lt;br /&gt;
| Disk || 8 GB&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 1 core&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 512 MB&lt;br /&gt;
|-&lt;br /&gt;
| Swap || 512 MB (wajib!)&lt;br /&gt;
|-&lt;br /&gt;
| Network || IP Static: 192.168.111.103/24 (sesuai IP yang didapatkan masing-masing&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Masuk ke Container &amp;amp; Update Sistem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Masuk ke console container&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
# Install paket dasar&lt;br /&gt;
apt install -y curl wget nano net-tools dnsutils ufw rsyslog&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Set Hostname &amp;amp; Swap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set hostname&lt;br /&gt;
hostnamectl set-hostname mailserver&lt;br /&gt;
&lt;br /&gt;
# Edit file hosts&lt;br /&gt;
nano /etc/hosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
192.168.111.103   mailserver.belajar.local   mailserver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:001-etc-hosts.jpg|pus|jmpl|582x582px]]&lt;br /&gt;
&lt;br /&gt;
== 🔧 BAGIAN 1: INSTALASI DNS SERVER (BIND9) ==&lt;br /&gt;
=== Langkah 1: Install BIND9 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y bind9 bind9utils dnsutils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi named.conf.options ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/named.conf.options&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi dengan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
    directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
    forwarders { 8.8.8.8; 8.8.4.4; };&lt;br /&gt;
    dnssec-validation auto;&lt;br /&gt;
    listen-on { any; };&lt;br /&gt;
    allow-query { any; };&lt;br /&gt;
    recursion yes;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:002-etc-bind-named-conf-options.jpg|pus|jmpl|638x638px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Zone Domain ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/named.conf.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tambahkan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zone &amp;quot;belajar.local&amp;quot; {&lt;br /&gt;
    type master;&lt;br /&gt;
    file &amp;quot;/etc/bind/db.belajar.local&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
zone &amp;quot;111.168.192.in-addr.arpa&amp;quot; {&lt;br /&gt;
    type master;&lt;br /&gt;
    file &amp;quot;/etc/bind/db.192.168.111&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:003-etc-bind-named-conf-local.jpg|pus|jmpl|635x635px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Buat File Zone Forward ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/db.belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@   IN  SOA mailserver.belajar.local. root.belajar.local. (&lt;br /&gt;
                2024010101 ; Serial&lt;br /&gt;
                604800 ; Refresh&lt;br /&gt;
                86400  ; Retry&lt;br /&gt;
                2419200 ; Expire&lt;br /&gt;
                604800 ) ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
@       IN  NS  mailserver.belajar.local.&lt;br /&gt;
@       IN  A   192.168.111.103&lt;br /&gt;
@       IN  MX 10 mailserver.belajar.local.&lt;br /&gt;
mailserver IN A 192.168.111.103&lt;br /&gt;
mail       IN A 192.168.111.103&lt;br /&gt;
www        IN A 192.168.111.103&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:004-etc-bind-db-belajar-local.jpg|pus|jmpl|583x583px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Buat File Zone Reverse ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/db.192.168.111&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@   IN  SOA mailserver.belajar.local. root.belajar.local. (&lt;br /&gt;
                2024010101 ; Serial&lt;br /&gt;
                604800 ; Refresh&lt;br /&gt;
                86400  ; Retry&lt;br /&gt;
                2419200 ; Expire&lt;br /&gt;
                604800 ) ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
@   IN  NS  mailserver.belajar.local.&lt;br /&gt;
103 IN  PTR mailserver.belajar.local.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:005-etc-bind-db-192168111.jpg|pus|jmpl|677x677px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Set DNS Lokal &amp;amp; Restart ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set DNS ke server sendiri&lt;br /&gt;
nano /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nameserver 192.168.111.103&lt;br /&gt;
search belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:006-etc-resolv-conf.jpg|pus|jmpl|589x589px]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek konfigurasi&lt;br /&gt;
named-checkconf&lt;br /&gt;
named-checkzone belajar.local /etc/bind/db.belajar.local&lt;br /&gt;
&lt;br /&gt;
# Restart BIND9&lt;br /&gt;
systemctl restart bind9&lt;br /&gt;
systemctl enable bind9&lt;br /&gt;
&lt;br /&gt;
# Tes DNS&lt;br /&gt;
nslookup mailserver.belajar.local&lt;br /&gt;
dig MX belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:007-cek-konfigurasi-named-checkzone-belajar-local.jpg|pus|jmpl|576x576px]]&lt;br /&gt;
[[Berkas:008-nslookup-maiserver-belajar-local.jpg|pus|jmpl|492x492px]]&lt;br /&gt;
[[Berkas:009-dig-mx-belajar-local.jpg|pus|jmpl|635x635px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 2: INSTALASI WEB SERVER &amp;amp; DATABASE ==&lt;br /&gt;
=== Langkah 1: Install Apache2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y apache2&lt;br /&gt;
systemctl start apache2&lt;br /&gt;
systemctl enable apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Install PHP dan Modul ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y php php-cli php-common php-curl php-gd php-intl \&lt;br /&gt;
    php-json php-mbstring php-mysql php-xml php-zip libapache2-mod-php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cek PHP sudah terinstall:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Install MariaDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y mariadb-server mariadb-client&lt;br /&gt;
systemctl start mariadb&lt;br /&gt;
systemctl enable mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Buat Database untuk Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p (enter)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
biarkan Password tetap kosong, langsung tekan Enter saja.&lt;br /&gt;
&lt;br /&gt;
Masukkan perintah SQL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
CREATE USER &#039;roundcube&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;password123&#039;;&lt;br /&gt;
GRANT ALL PRIVILEGES ON roundcubemail.* TO &#039;roundcube&#039;@&#039;localhost&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
EXIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Aktifkan Modul Apache ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod rewrite ssl headers&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 3: INSTALASI SMTP SERVER (POSTFIX) ==&lt;br /&gt;
=== Langkah 1: Install Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y postfix mailutils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Saat muncul dialog:&lt;br /&gt;
# Pilih: &amp;lt;code&amp;gt;Internet Site&amp;lt;/code&amp;gt;&lt;br /&gt;
# System mail name: &amp;lt;code&amp;gt;belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi main.cf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/postfix/main.cf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tambahkan/ubah konfigurasi berikut:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Identitas server&lt;br /&gt;
myhostname = mailserver.belajar.local&lt;br /&gt;
mydomain = belajar.local&lt;br /&gt;
myorigin = $mydomain&lt;br /&gt;
&lt;br /&gt;
# Jaringan&lt;br /&gt;
inet_interfaces = all&lt;br /&gt;
inet_protocols = ipv4&lt;br /&gt;
mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost&lt;br /&gt;
mynetworks = 127.0.0.0/8 192.168.111.0/24&lt;br /&gt;
&lt;br /&gt;
# Format mailbox&lt;br /&gt;
home_mailbox = Maildir/&lt;br /&gt;
&lt;br /&gt;
# Autentikasi via Dovecot&lt;br /&gt;
smtpd_sasl_type = dovecot&lt;br /&gt;
smtpd_sasl_path = private/auth&lt;br /&gt;
smtpd_sasl_auth_enable = yes&lt;br /&gt;
smtpd_sasl_security_options = noanonymous&lt;br /&gt;
&lt;br /&gt;
# Keamanan relay&lt;br /&gt;
smtpd_recipient_restrictions =&lt;br /&gt;
    permit_sasl_authenticated,&lt;br /&gt;
    permit_mynetworks,&lt;br /&gt;
    reject_unauth_destination&lt;br /&gt;
&lt;br /&gt;
# Optimasi untuk RAM rendah&lt;br /&gt;
default_process_limit = 10&lt;br /&gt;
smtpd_client_connection_rate_limit = 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:010-nano-etc-postfix-main-cf.jpg|pus|jmpl|560x560px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Aktifkan Port Submission ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/postfix/master.cf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari baris &amp;lt;code&amp;gt;submission&amp;lt;/code&amp;gt; dan hapus tanda &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submission inet n       -       y       -       -       smtpd&lt;br /&gt;
  -o syslog_name=postfix/submission&lt;br /&gt;
  -o smtpd_tls_security_level=encrypt&lt;br /&gt;
  -o smtpd_sasl_auth_enable=yes&lt;br /&gt;
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:011-nano-etc-postfix-master-cf.jpg|pus|jmpl|534x534px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Restart Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart postfix&lt;br /&gt;
systemctl enable postfix&lt;br /&gt;
&lt;br /&gt;
# Cek port sudah terbuka&lt;br /&gt;
ss -tlnp | grep -E &#039;:25|:587&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:012-restart-postfix.jpg|pus|jmpl|731x731px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 4: INSTALASI IMAP SERVER (DOVECOT) ==&lt;br /&gt;
=== Langkah 1: Install Dovecot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y dovecot-core dovecot-imapd dovecot-pop3d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi Protokol ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/dovecot.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubah baris:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
protocols = imap pop3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:013-nano-etc-dovecot-conf.jpg|pus|jmpl|654x654px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Format Mail ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-mail.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari dan ubah:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mail_path = maildir:~/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:014-etc-dovecot-conf-d-10-mail-conf.jpg|pus|jmpl|591x591px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Konfigurasi Autentikasi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-auth.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pastikan baris ini aktif (tanpa tanda &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!include auth-system.conf.ext&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:015-etc-dovecot-conf-d-10-auth-conf.jpg|pus|jmpl|564x564px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Konfigurasi Socket untuk Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-master.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari bagian &amp;lt;code&amp;gt;service auth&amp;lt;/code&amp;gt; dan pastikan seperti ini:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service auth {&lt;br /&gt;
  unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
    mode = 0660&lt;br /&gt;
    user = postfix&lt;br /&gt;
    group = postfix&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  unix_listener auth-userdb {&lt;br /&gt;
  mode = 0660&lt;br /&gt;
  user = dovecot&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:016-nano-etc-dovecot-conf-d-10-master-conf.jpg|pus|jmpl|754x754px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Restart Dovecot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Restart Dovecot dulu&lt;br /&gt;
systemctl restart dovecot&lt;br /&gt;
systemctl enable dovecot&lt;br /&gt;
&lt;br /&gt;
# Lalu restart Postfix&lt;br /&gt;
systemctl restart postfix&lt;br /&gt;
&lt;br /&gt;
# Cek port&lt;br /&gt;
ss -tlnp | grep -E &#039;:110|:143&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:017-restart-dovecot-6.jpg|pus|jmpl|653x653px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 5: MEMBUAT AKUN EMAIL ==&lt;br /&gt;
=== Buat User Email ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Buat user1&lt;br /&gt;
adduser --shell /sbin/nologin user1&lt;br /&gt;
# Masukkan password saat diminta&lt;br /&gt;
&lt;br /&gt;
# Buat user2&lt;br /&gt;
adduser --shell /sbin/nologin user2&lt;br /&gt;
&lt;br /&gt;
# Buat folder Maildir&lt;br /&gt;
mkdir -p /home/user1/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R user1:user1 /home/user1/Maildir&lt;br /&gt;
&lt;br /&gt;
mkdir -p /home/user2/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R user2:user2 /home/user2/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;💡 Info:&#039;&#039;&#039; &lt;br /&gt;
* User &amp;lt;code&amp;gt;user1&amp;lt;/code&amp;gt; = email &amp;lt;code&amp;gt;user1@belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
* User &amp;lt;code&amp;gt;user2&amp;lt;/code&amp;gt; = email &amp;lt;code&amp;gt;user2@belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🧪 BAGIAN 6: PENGUJIAN DENGAN TELNET ==&lt;br /&gt;
=== Langkah 1: Install Telnet ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y telnet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Tes Kirim Email via SMTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
telnet 192.168.111.103 25&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jika berhasil, akan muncul:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
220 mailserver.belajar.local ESMTP Postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ketik perintah berikut satu per satu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EHLO belajar.local&lt;br /&gt;
MAIL FROM:&amp;lt;user1@belajar.local&amp;gt;&lt;br /&gt;
RCPT TO:&amp;lt;user2@belajar.local&amp;gt;&lt;br /&gt;
DATA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kemudian ketik isi email:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
From: user1@belajar.local&lt;br /&gt;
To: user2@belajar.local&lt;br /&gt;
Subject: Hallo dari user1&lt;br /&gt;
&lt;br /&gt;
Halo user2, ini email percobaan kita!&lt;br /&gt;
Semoga berhasil ya!&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;⚠️ Penting:&#039;&#039;&#039; Titik (&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;) di baris terakhir harus sendiri, tanpa spasi!&lt;br /&gt;
&lt;br /&gt;
Lanjutkan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
QUIT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Cek Email Masuk ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls /home/user2/Maildir/new/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jika muncul file, email berhasil diterima!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Lihat isi email&lt;br /&gt;
cat /home/user2/Maildir/new/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Tes IMAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
telnet 192.168.111.103 143&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Harus muncul: &amp;lt;code&amp;gt;* OK Dovecot ready&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a LOGIN user2 passworduser2&lt;br /&gt;
b SELECT INBOX&lt;br /&gt;
d LOGOUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🌍 BAGIAN 7: INSTALASI WEBMAIL (ROUNDCUBE) ==&lt;br /&gt;
=== Langkah 1: Download Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.6/roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
tar xzf roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
mv roundcubemail-1.6.6 roundcube&lt;br /&gt;
rm roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Set Permission ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown -R www-data:www-data /var/www/html/roundcube&lt;br /&gt;
chmod -R 755 /var/www/html/roundcube&lt;br /&gt;
chmod -R 777 /var/www/html/roundcube/temp&lt;br /&gt;
chmod -R 777 /var/www/html/roundcube/logs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Apache ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/roundcube.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName mail.belajar.local&lt;br /&gt;
    DocumentRoot /var/www/html/roundcube&lt;br /&gt;
    &amp;lt;Directory /var/www/html/roundcube&amp;gt;&lt;br /&gt;
        Options -Indexes +FollowSymLinks&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Require all granted&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aktifkan site:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2ensite roundcube.conf&lt;br /&gt;
a2dissite 000-default.conf&lt;br /&gt;
systemctl reload apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Import Database Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u roundcube -p roundcubemail &amp;lt; /var/www/html/roundcube/SQL/mysql.initial.sql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Setup via Browser ===&lt;br /&gt;
# Buka browser: &amp;lt;code&amp;gt;http://192.168.111.103/roundcube/installer&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ikuti wizard setup&lt;br /&gt;
# Konfigurasi database:&lt;br /&gt;
## Server: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;&lt;br /&gt;
## Database: &amp;lt;code&amp;gt;roundcubemail&amp;lt;/code&amp;gt;&lt;br /&gt;
## User: &amp;lt;code&amp;gt;roundcube&amp;lt;/code&amp;gt;&lt;br /&gt;
## Password: &amp;lt;code&amp;gt;password123&amp;lt;/code&amp;gt; (sesuai yang dibuat tadi)&lt;br /&gt;
# Konfigurasi IMAP: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;, port &amp;lt;code&amp;gt;143&amp;lt;/code&amp;gt;&lt;br /&gt;
# Konfigurasi SMTP: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;, port &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt;&lt;br /&gt;
# Klik &#039;&#039;&#039;Create config&#039;&#039;&#039; → &#039;&#039;&#039;Initialize database&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Hapus Folder Installer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -rf /var/www/html/roundcube/installer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 7: Akses Webmail ===&lt;br /&gt;
Buka browser: &amp;lt;code&amp;gt;http://192.168.111.103/roundcube&amp;lt;/code&amp;gt;&lt;br /&gt;
Login dengan:&lt;br /&gt;
* Username: &amp;lt;code&amp;gt;user1&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;user2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Password: (sesuai password user Linux)&lt;br /&gt;
&lt;br /&gt;
== 🔍 TROUBLESHOOTING DASAR ==&lt;br /&gt;
=== Mail Server Tidak Bisa Dikirim ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek log Postfix&lt;br /&gt;
journalctl -u postfix --no-pager | tail -20&lt;br /&gt;
&lt;br /&gt;
# Cek antrian email&lt;br /&gt;
mailq&lt;br /&gt;
&lt;br /&gt;
# Flush antrian&lt;br /&gt;
postqueue -f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dovecot Tidak Bisa Login ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek log Dovecot&lt;br /&gt;
journalctl -u dovecot --no-pager | tail -20&lt;br /&gt;
&lt;br /&gt;
# Cek konfigurasi&lt;br /&gt;
doveconf -n | head -20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DNS Tidak Resolve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek konfigurasi BIND&lt;br /&gt;
named-checkconf&lt;br /&gt;
named-checkzone belajar.local /etc/bind/db.belajar.local&lt;br /&gt;
&lt;br /&gt;
# Restart BIND&lt;br /&gt;
systemctl restart bind9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Perintah Berguna untuk Siswa ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek status semua layanan&lt;br /&gt;
systemctl status bind9 apache2 mariadb postfix dovecot&lt;br /&gt;
&lt;br /&gt;
# Restart semua layanan&lt;br /&gt;
systemctl restart bind9 apache2 mariadb postfix dovecot&lt;br /&gt;
&lt;br /&gt;
# Monitor log realtime&lt;br /&gt;
journalctl -f&lt;br /&gt;
&lt;br /&gt;
# Tambah user email baru&lt;br /&gt;
adduser --shell /sbin/nologin namauser&lt;br /&gt;
mkdir -p /home/namauser/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R namauser:namauser /home/namauser/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 📋 CHECKLIST AKHIR ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! No !! Pengujian !! Perintah !! Hasil OK&lt;br /&gt;
|-&lt;br /&gt;
| 1 || DNS aktif || &amp;lt;code&amp;gt;systemctl is-active bind9&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MX record || &amp;lt;code&amp;gt;dig MX belajar.local&amp;lt;/code&amp;gt; || mailserver.belajar.local&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Apache aktif || &amp;lt;code&amp;gt;systemctl is-active apache2&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Database aktif || &amp;lt;code&amp;gt;systemctl is-active mariadb&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Postfix aktif || &amp;lt;code&amp;gt;systemctl is-active postfix&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Port 25 terbuka || &amp;lt;code&amp;gt;ss -tlnp | grep :25&amp;lt;/code&amp;gt; || LISTEN&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Dovecot aktif || &amp;lt;code&amp;gt;systemctl is-active dovecot&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Port 143 terbuka || &amp;lt;code&amp;gt;ss -tlnp | grep :143&amp;lt;/code&amp;gt; || LISTEN&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Kirim email Telnet || &amp;lt;code&amp;gt;telnet localhost 25&amp;lt;/code&amp;gt; || 220 banner muncul&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Email masuk || &amp;lt;code&amp;gt;ls /home/user2/Maildir/new/&amp;lt;/code&amp;gt; || ada file&lt;br /&gt;
|-&lt;br /&gt;
| 11 || Webmail bisa diakses || Browser ke &amp;lt;code&amp;gt;/roundcube&amp;lt;/code&amp;gt; || halaman login muncul&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 🎓 TUGAS PRAKTIKUM ==&lt;br /&gt;
# ✅ Instal mail server sesuai tutorial ini&lt;br /&gt;
# ✅ Buat 3 akun email: &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Kirim email dari &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt; ke &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt; via Telnet&lt;br /&gt;
# ✅ Verifikasi email masuk ke Maildir &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Login ke webmail Roundcube dengan akun &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Kirim email via webmail dari &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt; ke &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Dokumentasikan setiap langkah dengan screenshot&lt;br /&gt;
# ✅ Buat laporan praktikum dalam format PDF&lt;br /&gt;
&lt;br /&gt;
== 📚 REFERENSI ==&lt;br /&gt;
* [https://www.postfix.org/ Postfix Official Documentation]&lt;br /&gt;
* [https://www.dovecot.org/ Dovecot Official Documentation]&lt;br /&gt;
* [https://roundcube.net/ Roundcube Webmail]&lt;br /&gt;
* [https://www.isc.org/bind/ BIND9 Documentation]&lt;br /&gt;
* Modul Praktikum TKJ SMK — Administrasi Server Linux&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;— Tutorial Mail Server untuk SMK TKJ — Edisi Pemula —&#039;&#039;&lt;br /&gt;
&#039;&#039;Dibuat untuk pembelajaran praktikum Administrasi Infrastruktur Jaringan&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mail_Server_Debian_13&amp;diff=2378</id>
		<title>Mail Server Debian 13</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mail_Server_Debian_13&amp;diff=2378"/>
		<updated>2026-04-22T07:08:12Z</updated>

		<summary type="html">&lt;p&gt;Robie: Melindungi &amp;quot;Mail Server Debian 13&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TUTORIAL INSTALASI MAIL SERVER =&lt;br /&gt;
&#039;&#039;&#039;Debian 13 di Proxmox CT&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Komponen yang Dipelajari:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Apache2 &lt;br /&gt;
&lt;br /&gt;
BIND9 &lt;br /&gt;
&lt;br /&gt;
Postfix &lt;br /&gt;
&lt;br /&gt;
Dovecot &lt;br /&gt;
&lt;br /&gt;
Roundcube&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spesifikasi Lab:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
HDD 8 GB | RAM 512 MB | Proxmox Container | IP: 192.168.111.103 (sesuai ip yang didapatkan)&lt;br /&gt;
&lt;br /&gt;
== 🎯 TUJUAN PEMBELAJARAN ==&lt;br /&gt;
Setelah mengikuti tutorial ini, siswa mampu:&lt;br /&gt;
# Memahami arsitektur dasar mail server&lt;br /&gt;
# Menginstal dan mengkonfigurasi layanan DNS, SMTP, IMAP, dan Webmail&lt;br /&gt;
# Menguji koneksi email menggunakan Telnet&lt;br /&gt;
# Melakukan troubleshooting dasar jika terjadi error&lt;br /&gt;
&lt;br /&gt;
== 📦 PERSIAPAN AWAL ==&lt;br /&gt;
=== Spesifikasi Server ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Komponen !! Spesifikasi Minimum&lt;br /&gt;
|-&lt;br /&gt;
| Proxmox VE || Versi 8.x (Container Mode)&lt;br /&gt;
|-&lt;br /&gt;
| OS Guest || Debian 13 (Trixie) 64-bit&lt;br /&gt;
|-&lt;br /&gt;
| Storage || 8 GB HDD&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 512 MB + Swap 512 MB&lt;br /&gt;
|-&lt;br /&gt;
| IP Address || 192.168.111.103/24&lt;br /&gt;
|-&lt;br /&gt;
| Domain || belajar.local&lt;br /&gt;
|-&lt;br /&gt;
| Hostname || mailserver.belajar.local&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Langkah 1: Buat Container di Proxmox ===&lt;br /&gt;
# Buka Proxmox Web UI: &amp;lt;code&amp;gt;https://IP-PROXMOX:8006&amp;lt;/code&amp;gt;&lt;br /&gt;
# Download template Debian 13: &amp;lt;code&amp;gt;Datacenter → Node → local → CT Templates&amp;lt;/code&amp;gt;&lt;br /&gt;
# Klik &#039;&#039;&#039;Create CT&#039;&#039;&#039; dan isi:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Nilai Contoh&lt;br /&gt;
|-&lt;br /&gt;
| CT ID || 101 (sesuai dengan CT yang sudah ada)&lt;br /&gt;
|-&lt;br /&gt;
| Hostname || mailserver&lt;br /&gt;
|-&lt;br /&gt;
| Template || debian-13-standard&lt;br /&gt;
|-&lt;br /&gt;
| Disk || 8 GB&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 1 core&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 512 MB&lt;br /&gt;
|-&lt;br /&gt;
| Swap || 512 MB (wajib!)&lt;br /&gt;
|-&lt;br /&gt;
| Network || IP Static: 192.168.111.103/24 (sesuai IP yang didapatkan masing-masing&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Masuk ke Container &amp;amp; Update Sistem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Masuk ke console container&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
# Install paket dasar&lt;br /&gt;
apt install -y curl wget nano net-tools dnsutils ufw rsyslog&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Set Hostname &amp;amp; Swap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set hostname&lt;br /&gt;
hostnamectl set-hostname mailserver&lt;br /&gt;
&lt;br /&gt;
# Edit file hosts&lt;br /&gt;
nano /etc/hosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
192.168.111.103   mailserver.belajar.local   mailserver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:001-etc-hosts.jpg|pus|jmpl|582x582px]]&lt;br /&gt;
&lt;br /&gt;
== 🔧 BAGIAN 1: INSTALASI DNS SERVER (BIND9) ==&lt;br /&gt;
=== Langkah 1: Install BIND9 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y bind9 bind9utils dnsutils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi named.conf.options ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/named.conf.options&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi dengan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
    directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
    forwarders { 8.8.8.8; 8.8.4.4; };&lt;br /&gt;
    dnssec-validation auto;&lt;br /&gt;
    listen-on { any; };&lt;br /&gt;
    allow-query { any; };&lt;br /&gt;
    recursion yes;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:002-etc-bind-named-conf-options.jpg|pus|jmpl|638x638px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Zone Domain ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/named.conf.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tambahkan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zone &amp;quot;belajar.local&amp;quot; {&lt;br /&gt;
    type master;&lt;br /&gt;
    file &amp;quot;/etc/bind/db.belajar.local&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
zone &amp;quot;111.168.192.in-addr.arpa&amp;quot; {&lt;br /&gt;
    type master;&lt;br /&gt;
    file &amp;quot;/etc/bind/db.192.168.111&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:003-etc-bind-named-conf-local.jpg|pus|jmpl|635x635px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Buat File Zone Forward ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/db.belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@   IN  SOA mailserver.belajar.local. root.belajar.local. (&lt;br /&gt;
                2024010101 ; Serial&lt;br /&gt;
                604800 ; Refresh&lt;br /&gt;
                86400  ; Retry&lt;br /&gt;
                2419200 ; Expire&lt;br /&gt;
                604800 ) ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
@       IN  NS  mailserver.belajar.local.&lt;br /&gt;
@       IN  A   192.168.111.103&lt;br /&gt;
@       IN  MX 10 mailserver.belajar.local.&lt;br /&gt;
mailserver IN A 192.168.111.103&lt;br /&gt;
mail       IN A 192.168.111.103&lt;br /&gt;
www        IN A 192.168.111.103&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:004-etc-bind-db-belajar-local.jpg|pus|jmpl|583x583px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Buat File Zone Reverse ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/db.192.168.111&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@   IN  SOA mailserver.belajar.local. root.belajar.local. (&lt;br /&gt;
                2024010101 ; Serial&lt;br /&gt;
                604800 ; Refresh&lt;br /&gt;
                86400  ; Retry&lt;br /&gt;
                2419200 ; Expire&lt;br /&gt;
                604800 ) ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
@   IN  NS  mailserver.belajar.local.&lt;br /&gt;
103 IN  PTR mailserver.belajar.local.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:005-etc-bind-db-192168111.jpg|pus|jmpl|677x677px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Set DNS Lokal &amp;amp; Restart ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set DNS ke server sendiri&lt;br /&gt;
nano /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nameserver 192.168.111.103&lt;br /&gt;
search belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:006-etc-resolv-conf.jpg|pus|jmpl|589x589px]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek konfigurasi&lt;br /&gt;
named-checkconf&lt;br /&gt;
named-checkzone belajar.local /etc/bind/db.belajar.local&lt;br /&gt;
&lt;br /&gt;
# Restart BIND9&lt;br /&gt;
systemctl restart bind9&lt;br /&gt;
systemctl enable bind9&lt;br /&gt;
&lt;br /&gt;
# Tes DNS&lt;br /&gt;
nslookup mailserver.belajar.local&lt;br /&gt;
dig MX belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:007-cek-konfigurasi-named-checkzone-belajar-local.jpg|pus|jmpl|576x576px]]&lt;br /&gt;
[[Berkas:008-nslookup-maiserver-belajar-local.jpg|pus|jmpl|492x492px]]&lt;br /&gt;
[[Berkas:009-dig-mx-belajar-local.jpg|pus|jmpl|635x635px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 2: INSTALASI WEB SERVER &amp;amp; DATABASE ==&lt;br /&gt;
=== Langkah 1: Install Apache2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y apache2&lt;br /&gt;
systemctl start apache2&lt;br /&gt;
systemctl enable apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Install PHP dan Modul ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y php php-cli php-common php-curl php-gd php-intl \&lt;br /&gt;
    php-json php-mbstring php-mysql php-xml php-zip libapache2-mod-php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cek PHP sudah terinstall:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Install MariaDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y mariadb-server mariadb-client&lt;br /&gt;
systemctl start mariadb&lt;br /&gt;
systemctl enable mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Buat Database untuk Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p (enter)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
biarkan Password tetap kosong, langsung tekan Enter saja.&lt;br /&gt;
&lt;br /&gt;
Masukkan perintah SQL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
CREATE USER &#039;roundcube&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;password123&#039;;&lt;br /&gt;
GRANT ALL PRIVILEGES ON roundcubemail.* TO &#039;roundcube&#039;@&#039;localhost&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
EXIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Aktifkan Modul Apache ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod rewrite ssl headers&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 3: INSTALASI SMTP SERVER (POSTFIX) ==&lt;br /&gt;
=== Langkah 1: Install Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y postfix mailutils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Saat muncul dialog:&lt;br /&gt;
# Pilih: &amp;lt;code&amp;gt;Internet Site&amp;lt;/code&amp;gt;&lt;br /&gt;
# System mail name: &amp;lt;code&amp;gt;belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi main.cf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/postfix/main.cf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tambahkan/ubah konfigurasi berikut:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Identitas server&lt;br /&gt;
myhostname = mailserver.belajar.local&lt;br /&gt;
mydomain = belajar.local&lt;br /&gt;
myorigin = $mydomain&lt;br /&gt;
&lt;br /&gt;
# Jaringan&lt;br /&gt;
inet_interfaces = all&lt;br /&gt;
inet_protocols = ipv4&lt;br /&gt;
mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost&lt;br /&gt;
mynetworks = 127.0.0.0/8 192.168.111.0/24&lt;br /&gt;
&lt;br /&gt;
# Format mailbox&lt;br /&gt;
home_mailbox = Maildir/&lt;br /&gt;
&lt;br /&gt;
# Autentikasi via Dovecot&lt;br /&gt;
smtpd_sasl_type = dovecot&lt;br /&gt;
smtpd_sasl_path = private/auth&lt;br /&gt;
smtpd_sasl_auth_enable = yes&lt;br /&gt;
smtpd_sasl_security_options = noanonymous&lt;br /&gt;
&lt;br /&gt;
# Keamanan relay&lt;br /&gt;
smtpd_recipient_restrictions =&lt;br /&gt;
    permit_sasl_authenticated,&lt;br /&gt;
    permit_mynetworks,&lt;br /&gt;
    reject_unauth_destination&lt;br /&gt;
&lt;br /&gt;
# Optimasi untuk RAM rendah&lt;br /&gt;
default_process_limit = 10&lt;br /&gt;
smtpd_client_connection_rate_limit = 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:010-nano-etc-postfix-main-cf.jpg|pus|jmpl|560x560px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Aktifkan Port Submission ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/postfix/master.cf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari baris &amp;lt;code&amp;gt;submission&amp;lt;/code&amp;gt; dan hapus tanda &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submission inet n       -       y       -       -       smtpd&lt;br /&gt;
  -o syslog_name=postfix/submission&lt;br /&gt;
  -o smtpd_tls_security_level=encrypt&lt;br /&gt;
  -o smtpd_sasl_auth_enable=yes&lt;br /&gt;
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:011-nano-etc-postfix-master-cf.jpg|pus|jmpl|534x534px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Restart Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart postfix&lt;br /&gt;
systemctl enable postfix&lt;br /&gt;
&lt;br /&gt;
# Cek port sudah terbuka&lt;br /&gt;
ss -tlnp | grep -E &#039;:25|:587&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:012-restart-postfix.jpg|pus|jmpl|731x731px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 4: INSTALASI IMAP SERVER (DOVECOT) ==&lt;br /&gt;
=== Langkah 1: Install Dovecot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y dovecot-core dovecot-imapd dovecot-pop3d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi Protokol ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/dovecot.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubah baris:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
protocols = imap pop3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:013-nano-etc-dovecot-conf.jpg|pus|jmpl|654x654px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Format Mail ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-mail.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari dan ubah:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mail_path = maildir:~/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:014-etc-dovecot-conf-d-10-mail-conf.jpg|pus|jmpl|591x591px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Konfigurasi Autentikasi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-auth.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pastikan baris ini aktif (tanpa tanda &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!include auth-system.conf.ext&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:015-etc-dovecot-conf-d-10-auth-conf.jpg|pus|jmpl|564x564px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Konfigurasi Socket untuk Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-master.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari bagian &amp;lt;code&amp;gt;service auth&amp;lt;/code&amp;gt; dan pastikan seperti ini:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service auth {&lt;br /&gt;
  unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
    mode = 0660&lt;br /&gt;
    user = postfix&lt;br /&gt;
    group = postfix&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  unix_listener auth-userdb {&lt;br /&gt;
  mode = 0660&lt;br /&gt;
  user = dovecot&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:016-nano-etc-dovecot-conf-d-10-master-conf.jpg|pus|jmpl|754x754px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Restart Dovecot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Restart Dovecot dulu&lt;br /&gt;
systemctl restart dovecot&lt;br /&gt;
systemctl enable dovecot&lt;br /&gt;
&lt;br /&gt;
# Lalu restart Postfix&lt;br /&gt;
systemctl restart postfix&lt;br /&gt;
&lt;br /&gt;
# Cek port&lt;br /&gt;
ss -tlnp | grep -E &#039;:110|:143&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:017-restart-dovecot-6.jpg|pus|jmpl|653x653px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 5: MEMBUAT AKUN EMAIL ==&lt;br /&gt;
=== Buat User Email ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Buat user1&lt;br /&gt;
adduser --shell /sbin/nologin user1&lt;br /&gt;
# Masukkan password saat diminta&lt;br /&gt;
&lt;br /&gt;
# Buat user2&lt;br /&gt;
adduser --shell /sbin/nologin user2&lt;br /&gt;
&lt;br /&gt;
# Buat folder Maildir&lt;br /&gt;
mkdir -p /home/user1/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R user1:user1 /home/user1/Maildir&lt;br /&gt;
&lt;br /&gt;
mkdir -p /home/user2/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R user2:user2 /home/user2/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;💡 Info:&#039;&#039;&#039; &lt;br /&gt;
* User &amp;lt;code&amp;gt;user1&amp;lt;/code&amp;gt; = email &amp;lt;code&amp;gt;user1@belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
* User &amp;lt;code&amp;gt;user2&amp;lt;/code&amp;gt; = email &amp;lt;code&amp;gt;user2@belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🧪 BAGIAN 6: PENGUJIAN DENGAN TELNET ==&lt;br /&gt;
=== Langkah 1: Install Telnet ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y telnet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Tes Kirim Email via SMTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
telnet 192.168.111.103 25&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jika berhasil, akan muncul:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
220 mailserver.belajar.local ESMTP Postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ketik perintah berikut satu per satu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EHLO belajar.local&lt;br /&gt;
MAIL FROM:&amp;lt;user1@belajar.local&amp;gt;&lt;br /&gt;
RCPT TO:&amp;lt;user2@belajar.local&amp;gt;&lt;br /&gt;
DATA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kemudian ketik isi email:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
From: user1@belajar.local&lt;br /&gt;
To: user2@belajar.local&lt;br /&gt;
Subject: Hallo dari user1&lt;br /&gt;
&lt;br /&gt;
Halo user2, ini email percobaan kita!&lt;br /&gt;
Semoga berhasil ya!&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;⚠️ Penting:&#039;&#039;&#039; Titik (&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;) di baris terakhir harus sendiri, tanpa spasi!&lt;br /&gt;
&lt;br /&gt;
Lanjutkan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
QUIT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Cek Email Masuk ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls /home/user2/Maildir/new/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jika muncul file, email berhasil diterima!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Lihat isi email&lt;br /&gt;
cat /home/user2/Maildir/new/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Tes IMAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
telnet 192.168.111.103 143&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Harus muncul: &amp;lt;code&amp;gt;* OK Dovecot ready&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a LOGIN user2 passworduser2&lt;br /&gt;
b SELECT INBOX&lt;br /&gt;
d LOGOUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🌍 BAGIAN 7: INSTALASI WEBMAIL (ROUNDCUBE) ==&lt;br /&gt;
=== Langkah 1: Download Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.6/roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
tar xzf roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
mv roundcubemail-1.6.6 roundcube&lt;br /&gt;
rm roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Set Permission ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown -R www-data:www-data /var/www/html/roundcube&lt;br /&gt;
chmod -R 755 /var/www/html/roundcube&lt;br /&gt;
chmod -R 777 /var/www/html/roundcube/temp&lt;br /&gt;
chmod -R 777 /var/www/html/roundcube/logs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Apache ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/roundcube.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName mail.belajar.local&lt;br /&gt;
    DocumentRoot /var/www/html/roundcube&lt;br /&gt;
    &amp;lt;Directory /var/www/html/roundcube&amp;gt;&lt;br /&gt;
        Options -Indexes +FollowSymLinks&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Require all granted&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aktifkan site:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2ensite roundcube.conf&lt;br /&gt;
a2dissite 000-default.conf&lt;br /&gt;
systemctl reload apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Import Database Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u roundcube -p roundcubemail &amp;lt; /var/www/html/roundcube/SQL/mysql.initial.sql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Setup via Browser ===&lt;br /&gt;
# Buka browser: &amp;lt;code&amp;gt;http://192.168.111.103/roundcube/installer&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ikuti wizard setup&lt;br /&gt;
# Konfigurasi database:&lt;br /&gt;
## Server: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;&lt;br /&gt;
## Database: &amp;lt;code&amp;gt;roundcubemail&amp;lt;/code&amp;gt;&lt;br /&gt;
## User: &amp;lt;code&amp;gt;roundcube&amp;lt;/code&amp;gt;&lt;br /&gt;
## Password: &amp;lt;code&amp;gt;password123&amp;lt;/code&amp;gt; (sesuai yang dibuat tadi)&lt;br /&gt;
# Konfigurasi IMAP: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;, port &amp;lt;code&amp;gt;143&amp;lt;/code&amp;gt;&lt;br /&gt;
# Konfigurasi SMTP: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;, port &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt;&lt;br /&gt;
# Klik &#039;&#039;&#039;Create config&#039;&#039;&#039; → &#039;&#039;&#039;Initialize database&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Hapus Folder Installer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -rf /var/www/html/roundcube/installer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 7: Akses Webmail ===&lt;br /&gt;
Buka browser: &amp;lt;code&amp;gt;http://192.168.111.103/roundcube&amp;lt;/code&amp;gt;&lt;br /&gt;
Login dengan:&lt;br /&gt;
* Username: &amp;lt;code&amp;gt;user1&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;user2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Password: (sesuai password user Linux)&lt;br /&gt;
&lt;br /&gt;
== 🔍 TROUBLESHOOTING DASAR ==&lt;br /&gt;
=== Mail Server Tidak Bisa Dikirim ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek log Postfix&lt;br /&gt;
journalctl -u postfix --no-pager | tail -20&lt;br /&gt;
&lt;br /&gt;
# Cek antrian email&lt;br /&gt;
mailq&lt;br /&gt;
&lt;br /&gt;
# Flush antrian&lt;br /&gt;
postqueue -f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dovecot Tidak Bisa Login ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek log Dovecot&lt;br /&gt;
journalctl -u dovecot --no-pager | tail -20&lt;br /&gt;
&lt;br /&gt;
# Cek konfigurasi&lt;br /&gt;
doveconf -n | head -20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DNS Tidak Resolve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek konfigurasi BIND&lt;br /&gt;
named-checkconf&lt;br /&gt;
named-checkzone belajar.local /etc/bind/db.belajar.local&lt;br /&gt;
&lt;br /&gt;
# Restart BIND&lt;br /&gt;
systemctl restart bind9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Perintah Berguna untuk Siswa ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek status semua layanan&lt;br /&gt;
systemctl status bind9 apache2 mariadb postfix dovecot&lt;br /&gt;
&lt;br /&gt;
# Restart semua layanan&lt;br /&gt;
systemctl restart bind9 apache2 mariadb postfix dovecot&lt;br /&gt;
&lt;br /&gt;
# Monitor log realtime&lt;br /&gt;
journalctl -f&lt;br /&gt;
&lt;br /&gt;
# Tambah user email baru&lt;br /&gt;
adduser --shell /sbin/nologin namauser&lt;br /&gt;
mkdir -p /home/namauser/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R namauser:namauser /home/namauser/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 📋 CHECKLIST AKHIR ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! No !! Pengujian !! Perintah !! Hasil OK&lt;br /&gt;
|-&lt;br /&gt;
| 1 || DNS aktif || &amp;lt;code&amp;gt;systemctl is-active bind9&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MX record || &amp;lt;code&amp;gt;dig MX belajar.local&amp;lt;/code&amp;gt; || mailserver.belajar.local&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Apache aktif || &amp;lt;code&amp;gt;systemctl is-active apache2&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Database aktif || &amp;lt;code&amp;gt;systemctl is-active mariadb&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Postfix aktif || &amp;lt;code&amp;gt;systemctl is-active postfix&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Port 25 terbuka || &amp;lt;code&amp;gt;ss -tlnp | grep :25&amp;lt;/code&amp;gt; || LISTEN&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Dovecot aktif || &amp;lt;code&amp;gt;systemctl is-active dovecot&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Port 143 terbuka || &amp;lt;code&amp;gt;ss -tlnp | grep :143&amp;lt;/code&amp;gt; || LISTEN&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Kirim email Telnet || &amp;lt;code&amp;gt;telnet localhost 25&amp;lt;/code&amp;gt; || 220 banner muncul&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Email masuk || &amp;lt;code&amp;gt;ls /home/user2/Maildir/new/&amp;lt;/code&amp;gt; || ada file&lt;br /&gt;
|-&lt;br /&gt;
| 11 || Webmail bisa diakses || Browser ke &amp;lt;code&amp;gt;/roundcube&amp;lt;/code&amp;gt; || halaman login muncul&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 🎓 TUGAS PRAKTIKUM ==&lt;br /&gt;
# ✅ Instal mail server sesuai tutorial ini&lt;br /&gt;
# ✅ Buat 3 akun email: &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Kirim email dari &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt; ke &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt; via Telnet&lt;br /&gt;
# ✅ Verifikasi email masuk ke Maildir &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Login ke webmail Roundcube dengan akun &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Kirim email via webmail dari &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt; ke &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Dokumentasikan setiap langkah dengan screenshot&lt;br /&gt;
# ✅ Buat laporan praktikum dalam format PDF&lt;br /&gt;
&lt;br /&gt;
== 📚 REFERENSI ==&lt;br /&gt;
* [https://www.postfix.org/ Postfix Official Documentation]&lt;br /&gt;
* [https://www.dovecot.org/ Dovecot Official Documentation]&lt;br /&gt;
* [https://roundcube.net/ Roundcube Webmail]&lt;br /&gt;
* [https://www.isc.org/bind/ BIND9 Documentation]&lt;br /&gt;
* Modul Praktikum TKJ SMK — Administrasi Server Linux&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;— Tutorial Mail Server untuk SMK TKJ — Edisi Pemula —&#039;&#039;&lt;br /&gt;
&#039;&#039;Dibuat untuk pembelajaran praktikum Administrasi Infrastruktur Jaringan&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Mail_Server_Debian_13&amp;diff=2377</id>
		<title>Mail Server Debian 13</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Mail_Server_Debian_13&amp;diff=2377"/>
		<updated>2026-04-22T05:44:03Z</updated>

		<summary type="html">&lt;p&gt;Robie: /* Langkah 5: Konfigurasi Socket untuk Postfix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= TUTORIAL INSTALASI MAIL SERVER =&lt;br /&gt;
&#039;&#039;&#039;Debian 13 di Proxmox CT&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Komponen yang Dipelajari:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Apache2 &lt;br /&gt;
&lt;br /&gt;
BIND9 &lt;br /&gt;
&lt;br /&gt;
Postfix &lt;br /&gt;
&lt;br /&gt;
Dovecot &lt;br /&gt;
&lt;br /&gt;
Roundcube&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spesifikasi Lab:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
HDD 8 GB | RAM 512 MB | Proxmox Container | IP: 192.168.111.103 (sesuai ip yang didapatkan)&lt;br /&gt;
&lt;br /&gt;
== 🎯 TUJUAN PEMBELAJARAN ==&lt;br /&gt;
Setelah mengikuti tutorial ini, siswa mampu:&lt;br /&gt;
# Memahami arsitektur dasar mail server&lt;br /&gt;
# Menginstal dan mengkonfigurasi layanan DNS, SMTP, IMAP, dan Webmail&lt;br /&gt;
# Menguji koneksi email menggunakan Telnet&lt;br /&gt;
# Melakukan troubleshooting dasar jika terjadi error&lt;br /&gt;
&lt;br /&gt;
== 📦 PERSIAPAN AWAL ==&lt;br /&gt;
=== Spesifikasi Server ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Komponen !! Spesifikasi Minimum&lt;br /&gt;
|-&lt;br /&gt;
| Proxmox VE || Versi 8.x (Container Mode)&lt;br /&gt;
|-&lt;br /&gt;
| OS Guest || Debian 13 (Trixie) 64-bit&lt;br /&gt;
|-&lt;br /&gt;
| Storage || 8 GB HDD&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 512 MB + Swap 512 MB&lt;br /&gt;
|-&lt;br /&gt;
| IP Address || 192.168.111.103/24&lt;br /&gt;
|-&lt;br /&gt;
| Domain || belajar.local&lt;br /&gt;
|-&lt;br /&gt;
| Hostname || mailserver.belajar.local&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Langkah 1: Buat Container di Proxmox ===&lt;br /&gt;
# Buka Proxmox Web UI: &amp;lt;code&amp;gt;https://IP-PROXMOX:8006&amp;lt;/code&amp;gt;&lt;br /&gt;
# Download template Debian 13: &amp;lt;code&amp;gt;Datacenter → Node → local → CT Templates&amp;lt;/code&amp;gt;&lt;br /&gt;
# Klik &#039;&#039;&#039;Create CT&#039;&#039;&#039; dan isi:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter !! Nilai Contoh&lt;br /&gt;
|-&lt;br /&gt;
| CT ID || 101 (sesuai dengan CT yang sudah ada)&lt;br /&gt;
|-&lt;br /&gt;
| Hostname || mailserver&lt;br /&gt;
|-&lt;br /&gt;
| Template || debian-13-standard&lt;br /&gt;
|-&lt;br /&gt;
| Disk || 8 GB&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 1 core&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 512 MB&lt;br /&gt;
|-&lt;br /&gt;
| Swap || 512 MB (wajib!)&lt;br /&gt;
|-&lt;br /&gt;
| Network || IP Static: 192.168.111.103/24 (sesuai IP yang didapatkan masing-masing&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Masuk ke Container &amp;amp; Update Sistem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Masuk ke console container&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade -y&lt;br /&gt;
&lt;br /&gt;
# Install paket dasar&lt;br /&gt;
apt install -y curl wget nano net-tools dnsutils ufw rsyslog&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Set Hostname &amp;amp; Swap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set hostname&lt;br /&gt;
hostnamectl set-hostname mailserver&lt;br /&gt;
&lt;br /&gt;
# Edit file hosts&lt;br /&gt;
nano /etc/hosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
192.168.111.103   mailserver.belajar.local   mailserver&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:001-etc-hosts.jpg|pus|jmpl|582x582px]]&lt;br /&gt;
&lt;br /&gt;
== 🔧 BAGIAN 1: INSTALASI DNS SERVER (BIND9) ==&lt;br /&gt;
=== Langkah 1: Install BIND9 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y bind9 bind9utils dnsutils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi named.conf.options ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/named.conf.options&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi dengan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options {&lt;br /&gt;
    directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
    forwarders { 8.8.8.8; 8.8.4.4; };&lt;br /&gt;
    dnssec-validation auto;&lt;br /&gt;
    listen-on { any; };&lt;br /&gt;
    allow-query { any; };&lt;br /&gt;
    recursion yes;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:002-etc-bind-named-conf-options.jpg|pus|jmpl|638x638px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Zone Domain ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/named.conf.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tambahkan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zone &amp;quot;belajar.local&amp;quot; {&lt;br /&gt;
    type master;&lt;br /&gt;
    file &amp;quot;/etc/bind/db.belajar.local&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
zone &amp;quot;111.168.192.in-addr.arpa&amp;quot; {&lt;br /&gt;
    type master;&lt;br /&gt;
    file &amp;quot;/etc/bind/db.192.168.111&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:003-etc-bind-named-conf-local.jpg|pus|jmpl|635x635px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Buat File Zone Forward ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/db.belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@   IN  SOA mailserver.belajar.local. root.belajar.local. (&lt;br /&gt;
                2024010101 ; Serial&lt;br /&gt;
                604800 ; Refresh&lt;br /&gt;
                86400  ; Retry&lt;br /&gt;
                2419200 ; Expire&lt;br /&gt;
                604800 ) ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
@       IN  NS  mailserver.belajar.local.&lt;br /&gt;
@       IN  A   192.168.111.103&lt;br /&gt;
@       IN  MX 10 mailserver.belajar.local.&lt;br /&gt;
mailserver IN A 192.168.111.103&lt;br /&gt;
mail       IN A 192.168.111.103&lt;br /&gt;
www        IN A 192.168.111.103&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:004-etc-bind-db-belajar-local.jpg|pus|jmpl|583x583px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Buat File Zone Reverse ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/bind/db.192.168.111&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL    604800&lt;br /&gt;
@   IN  SOA mailserver.belajar.local. root.belajar.local. (&lt;br /&gt;
                2024010101 ; Serial&lt;br /&gt;
                604800 ; Refresh&lt;br /&gt;
                86400  ; Retry&lt;br /&gt;
                2419200 ; Expire&lt;br /&gt;
                604800 ) ; Negative Cache TTL&lt;br /&gt;
;&lt;br /&gt;
@   IN  NS  mailserver.belajar.local.&lt;br /&gt;
103 IN  PTR mailserver.belajar.local.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:005-etc-bind-db-192168111.jpg|pus|jmpl|677x677px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Set DNS Lokal &amp;amp; Restart ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Set DNS ke server sendiri&lt;br /&gt;
nano /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nameserver 192.168.111.103&lt;br /&gt;
search belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:006-etc-resolv-conf.jpg|pus|jmpl|589x589px]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek konfigurasi&lt;br /&gt;
named-checkconf&lt;br /&gt;
named-checkzone belajar.local /etc/bind/db.belajar.local&lt;br /&gt;
&lt;br /&gt;
# Restart BIND9&lt;br /&gt;
systemctl restart bind9&lt;br /&gt;
systemctl enable bind9&lt;br /&gt;
&lt;br /&gt;
# Tes DNS&lt;br /&gt;
nslookup mailserver.belajar.local&lt;br /&gt;
dig MX belajar.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:007-cek-konfigurasi-named-checkzone-belajar-local.jpg|pus|jmpl|576x576px]]&lt;br /&gt;
[[Berkas:008-nslookup-maiserver-belajar-local.jpg|pus|jmpl|492x492px]]&lt;br /&gt;
[[Berkas:009-dig-mx-belajar-local.jpg|pus|jmpl|635x635px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 2: INSTALASI WEB SERVER &amp;amp; DATABASE ==&lt;br /&gt;
=== Langkah 1: Install Apache2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y apache2&lt;br /&gt;
systemctl start apache2&lt;br /&gt;
systemctl enable apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Install PHP dan Modul ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y php php-cli php-common php-curl php-gd php-intl \&lt;br /&gt;
    php-json php-mbstring php-mysql php-xml php-zip libapache2-mod-php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cek PHP sudah terinstall:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Install MariaDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y mariadb-server mariadb-client&lt;br /&gt;
systemctl start mariadb&lt;br /&gt;
systemctl enable mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Buat Database untuk Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p (enter)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
biarkan Password tetap kosong, langsung tekan Enter saja.&lt;br /&gt;
&lt;br /&gt;
Masukkan perintah SQL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
CREATE USER &#039;roundcube&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;password123&#039;;&lt;br /&gt;
GRANT ALL PRIVILEGES ON roundcubemail.* TO &#039;roundcube&#039;@&#039;localhost&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
EXIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Aktifkan Modul Apache ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod rewrite ssl headers&lt;br /&gt;
systemctl restart apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 3: INSTALASI SMTP SERVER (POSTFIX) ==&lt;br /&gt;
=== Langkah 1: Install Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y postfix mailutils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Saat muncul dialog:&lt;br /&gt;
# Pilih: &amp;lt;code&amp;gt;Internet Site&amp;lt;/code&amp;gt;&lt;br /&gt;
# System mail name: &amp;lt;code&amp;gt;belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi main.cf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/postfix/main.cf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tambahkan/ubah konfigurasi berikut:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Identitas server&lt;br /&gt;
myhostname = mailserver.belajar.local&lt;br /&gt;
mydomain = belajar.local&lt;br /&gt;
myorigin = $mydomain&lt;br /&gt;
&lt;br /&gt;
# Jaringan&lt;br /&gt;
inet_interfaces = all&lt;br /&gt;
inet_protocols = ipv4&lt;br /&gt;
mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost&lt;br /&gt;
mynetworks = 127.0.0.0/8 192.168.111.0/24&lt;br /&gt;
&lt;br /&gt;
# Format mailbox&lt;br /&gt;
home_mailbox = Maildir/&lt;br /&gt;
&lt;br /&gt;
# Autentikasi via Dovecot&lt;br /&gt;
smtpd_sasl_type = dovecot&lt;br /&gt;
smtpd_sasl_path = private/auth&lt;br /&gt;
smtpd_sasl_auth_enable = yes&lt;br /&gt;
smtpd_sasl_security_options = noanonymous&lt;br /&gt;
&lt;br /&gt;
# Keamanan relay&lt;br /&gt;
smtpd_recipient_restrictions =&lt;br /&gt;
    permit_sasl_authenticated,&lt;br /&gt;
    permit_mynetworks,&lt;br /&gt;
    reject_unauth_destination&lt;br /&gt;
&lt;br /&gt;
# Optimasi untuk RAM rendah&lt;br /&gt;
default_process_limit = 10&lt;br /&gt;
smtpd_client_connection_rate_limit = 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:010-nano-etc-postfix-main-cf.jpg|pus|jmpl|560x560px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Aktifkan Port Submission ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/postfix/master.cf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari baris &amp;lt;code&amp;gt;submission&amp;lt;/code&amp;gt; dan hapus tanda &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
submission inet n       -       y       -       -       smtpd&lt;br /&gt;
  -o syslog_name=postfix/submission&lt;br /&gt;
  -o smtpd_tls_security_level=encrypt&lt;br /&gt;
  -o smtpd_sasl_auth_enable=yes&lt;br /&gt;
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:011-nano-etc-postfix-master-cf.jpg|pus|jmpl|534x534px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Restart Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart postfix&lt;br /&gt;
systemctl enable postfix&lt;br /&gt;
&lt;br /&gt;
# Cek port sudah terbuka&lt;br /&gt;
ss -tlnp | grep -E &#039;:25|:587&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:012-restart-postfix.jpg|pus|jmpl|731x731px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 4: INSTALASI IMAP SERVER (DOVECOT) ==&lt;br /&gt;
=== Langkah 1: Install Dovecot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y dovecot-core dovecot-imapd dovecot-pop3d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Konfigurasi Protokol ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/dovecot.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ubah baris:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
protocols = imap pop3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:013-nano-etc-dovecot-conf.jpg|pus|jmpl|654x654px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Format Mail ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-mail.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari dan ubah:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mail_path = maildir:~/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:014-etc-dovecot-conf-d-10-mail-conf.jpg|pus|jmpl|591x591px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Konfigurasi Autentikasi ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-auth.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pastikan baris ini aktif (tanpa tanda &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!include auth-system.conf.ext&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:015-etc-dovecot-conf-d-10-auth-conf.jpg|pus|jmpl|564x564px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Konfigurasi Socket untuk Postfix ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/dovecot/conf.d/10-master.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cari bagian &amp;lt;code&amp;gt;service auth&amp;lt;/code&amp;gt; dan pastikan seperti ini:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service auth {&lt;br /&gt;
  unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
    mode = 0660&lt;br /&gt;
    user = postfix&lt;br /&gt;
    group = postfix&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  unix_listener auth-userdb {&lt;br /&gt;
  mode = 0660&lt;br /&gt;
  user = dovecot&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:016-nano-etc-dovecot-conf-d-10-master-conf.jpg|pus|jmpl|754x754px]]&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Restart Dovecot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Restart Dovecot dulu&lt;br /&gt;
systemctl restart dovecot&lt;br /&gt;
systemctl enable dovecot&lt;br /&gt;
&lt;br /&gt;
# Lalu restart Postfix&lt;br /&gt;
systemctl restart postfix&lt;br /&gt;
&lt;br /&gt;
# Cek port&lt;br /&gt;
ss -tlnp | grep -E &#039;:110|:143&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Berkas:017-restart-dovecot-6.jpg|pus|jmpl|653x653px]]&lt;br /&gt;
&lt;br /&gt;
== BAGIAN 5: MEMBUAT AKUN EMAIL ==&lt;br /&gt;
=== Buat User Email ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Buat user1&lt;br /&gt;
adduser --shell /sbin/nologin user1&lt;br /&gt;
# Masukkan password saat diminta&lt;br /&gt;
&lt;br /&gt;
# Buat user2&lt;br /&gt;
adduser --shell /sbin/nologin user2&lt;br /&gt;
&lt;br /&gt;
# Buat folder Maildir&lt;br /&gt;
mkdir -p /home/user1/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R user1:user1 /home/user1/Maildir&lt;br /&gt;
&lt;br /&gt;
mkdir -p /home/user2/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R user2:user2 /home/user2/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;💡 Info:&#039;&#039;&#039; &lt;br /&gt;
* User &amp;lt;code&amp;gt;user1&amp;lt;/code&amp;gt; = email &amp;lt;code&amp;gt;user1@belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
* User &amp;lt;code&amp;gt;user2&amp;lt;/code&amp;gt; = email &amp;lt;code&amp;gt;user2@belajar.local&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🧪 BAGIAN 6: PENGUJIAN DENGAN TELNET ==&lt;br /&gt;
=== Langkah 1: Install Telnet ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install -y telnet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Tes Kirim Email via SMTP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
telnet 192.168.111.103 25&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jika berhasil, akan muncul:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
220 mailserver.belajar.local ESMTP Postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ketik perintah berikut satu per satu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EHLO belajar.local&lt;br /&gt;
MAIL FROM:&amp;lt;user1@belajar.local&amp;gt;&lt;br /&gt;
RCPT TO:&amp;lt;user2@belajar.local&amp;gt;&lt;br /&gt;
DATA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kemudian ketik isi email:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
From: user1@belajar.local&lt;br /&gt;
To: user2@belajar.local&lt;br /&gt;
Subject: Hallo dari user1&lt;br /&gt;
&lt;br /&gt;
Halo user2, ini email percobaan kita!&lt;br /&gt;
Semoga berhasil ya!&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;⚠️ Penting:&#039;&#039;&#039; Titik (&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;) di baris terakhir harus sendiri, tanpa spasi!&lt;br /&gt;
&lt;br /&gt;
Lanjutkan:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
QUIT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Cek Email Masuk ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls /home/user2/Maildir/new/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jika muncul file, email berhasil diterima!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Lihat isi email&lt;br /&gt;
cat /home/user2/Maildir/new/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Tes IMAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
telnet 192.168.111.103 143&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Harus muncul: &amp;lt;code&amp;gt;* OK Dovecot ready&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a LOGIN user2 passworduser2&lt;br /&gt;
b SELECT INBOX&lt;br /&gt;
d LOGOUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🌍 BAGIAN 7: INSTALASI WEBMAIL (ROUNDCUBE) ==&lt;br /&gt;
=== Langkah 1: Download Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/html&lt;br /&gt;
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.6/roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
tar xzf roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
mv roundcubemail-1.6.6 roundcube&lt;br /&gt;
rm roundcubemail-1.6.6-complete.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 2: Set Permission ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown -R www-data:www-data /var/www/html/roundcube&lt;br /&gt;
chmod -R 755 /var/www/html/roundcube&lt;br /&gt;
chmod -R 777 /var/www/html/roundcube/temp&lt;br /&gt;
chmod -R 777 /var/www/html/roundcube/logs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 3: Konfigurasi Apache ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/apache2/sites-available/roundcube.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName mail.belajar.local&lt;br /&gt;
    DocumentRoot /var/www/html/roundcube&lt;br /&gt;
    &amp;lt;Directory /var/www/html/roundcube&amp;gt;&lt;br /&gt;
        Options -Indexes +FollowSymLinks&lt;br /&gt;
        AllowOverride All&lt;br /&gt;
        Require all granted&lt;br /&gt;
    &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aktifkan site:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2ensite roundcube.conf&lt;br /&gt;
a2dissite 000-default.conf&lt;br /&gt;
systemctl reload apache2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 4: Import Database Roundcube ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u roundcube -p roundcubemail &amp;lt; /var/www/html/roundcube/SQL/mysql.initial.sql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 5: Setup via Browser ===&lt;br /&gt;
# Buka browser: &amp;lt;code&amp;gt;http://192.168.111.103/roundcube/installer&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ikuti wizard setup&lt;br /&gt;
# Konfigurasi database:&lt;br /&gt;
## Server: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;&lt;br /&gt;
## Database: &amp;lt;code&amp;gt;roundcubemail&amp;lt;/code&amp;gt;&lt;br /&gt;
## User: &amp;lt;code&amp;gt;roundcube&amp;lt;/code&amp;gt;&lt;br /&gt;
## Password: &amp;lt;code&amp;gt;password123&amp;lt;/code&amp;gt; (sesuai yang dibuat tadi)&lt;br /&gt;
# Konfigurasi IMAP: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;, port &amp;lt;code&amp;gt;143&amp;lt;/code&amp;gt;&lt;br /&gt;
# Konfigurasi SMTP: &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;, port &amp;lt;code&amp;gt;25&amp;lt;/code&amp;gt;&lt;br /&gt;
# Klik &#039;&#039;&#039;Create config&#039;&#039;&#039; → &#039;&#039;&#039;Initialize database&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 6: Hapus Folder Installer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm -rf /var/www/html/roundcube/installer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Langkah 7: Akses Webmail ===&lt;br /&gt;
Buka browser: &amp;lt;code&amp;gt;http://192.168.111.103/roundcube&amp;lt;/code&amp;gt;&lt;br /&gt;
Login dengan:&lt;br /&gt;
* Username: &amp;lt;code&amp;gt;user1&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;user2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Password: (sesuai password user Linux)&lt;br /&gt;
&lt;br /&gt;
== 🔍 TROUBLESHOOTING DASAR ==&lt;br /&gt;
=== Mail Server Tidak Bisa Dikirim ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek log Postfix&lt;br /&gt;
journalctl -u postfix --no-pager | tail -20&lt;br /&gt;
&lt;br /&gt;
# Cek antrian email&lt;br /&gt;
mailq&lt;br /&gt;
&lt;br /&gt;
# Flush antrian&lt;br /&gt;
postqueue -f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dovecot Tidak Bisa Login ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek log Dovecot&lt;br /&gt;
journalctl -u dovecot --no-pager | tail -20&lt;br /&gt;
&lt;br /&gt;
# Cek konfigurasi&lt;br /&gt;
doveconf -n | head -20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DNS Tidak Resolve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek konfigurasi BIND&lt;br /&gt;
named-checkconf&lt;br /&gt;
named-checkzone belajar.local /etc/bind/db.belajar.local&lt;br /&gt;
&lt;br /&gt;
# Restart BIND&lt;br /&gt;
systemctl restart bind9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Perintah Berguna untuk Siswa ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cek status semua layanan&lt;br /&gt;
systemctl status bind9 apache2 mariadb postfix dovecot&lt;br /&gt;
&lt;br /&gt;
# Restart semua layanan&lt;br /&gt;
systemctl restart bind9 apache2 mariadb postfix dovecot&lt;br /&gt;
&lt;br /&gt;
# Monitor log realtime&lt;br /&gt;
journalctl -f&lt;br /&gt;
&lt;br /&gt;
# Tambah user email baru&lt;br /&gt;
adduser --shell /sbin/nologin namauser&lt;br /&gt;
mkdir -p /home/namauser/Maildir/{new,cur,tmp}&lt;br /&gt;
chown -R namauser:namauser /home/namauser/Maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 📋 CHECKLIST AKHIR ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! No !! Pengujian !! Perintah !! Hasil OK&lt;br /&gt;
|-&lt;br /&gt;
| 1 || DNS aktif || &amp;lt;code&amp;gt;systemctl is-active bind9&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MX record || &amp;lt;code&amp;gt;dig MX belajar.local&amp;lt;/code&amp;gt; || mailserver.belajar.local&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Apache aktif || &amp;lt;code&amp;gt;systemctl is-active apache2&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Database aktif || &amp;lt;code&amp;gt;systemctl is-active mariadb&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Postfix aktif || &amp;lt;code&amp;gt;systemctl is-active postfix&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Port 25 terbuka || &amp;lt;code&amp;gt;ss -tlnp | grep :25&amp;lt;/code&amp;gt; || LISTEN&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Dovecot aktif || &amp;lt;code&amp;gt;systemctl is-active dovecot&amp;lt;/code&amp;gt; || active&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Port 143 terbuka || &amp;lt;code&amp;gt;ss -tlnp | grep :143&amp;lt;/code&amp;gt; || LISTEN&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Kirim email Telnet || &amp;lt;code&amp;gt;telnet localhost 25&amp;lt;/code&amp;gt; || 220 banner muncul&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Email masuk || &amp;lt;code&amp;gt;ls /home/user2/Maildir/new/&amp;lt;/code&amp;gt; || ada file&lt;br /&gt;
|-&lt;br /&gt;
| 11 || Webmail bisa diakses || Browser ke &amp;lt;code&amp;gt;/roundcube&amp;lt;/code&amp;gt; || halaman login muncul&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 🎓 TUGAS PRAKTIKUM ==&lt;br /&gt;
# ✅ Instal mail server sesuai tutorial ini&lt;br /&gt;
# ✅ Buat 3 akun email: &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Kirim email dari &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt; ke &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt; via Telnet&lt;br /&gt;
# ✅ Verifikasi email masuk ke Maildir &amp;lt;code&amp;gt;siswa2&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Login ke webmail Roundcube dengan akun &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Kirim email via webmail dari &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt; ke &amp;lt;code&amp;gt;siswa1&amp;lt;/code&amp;gt;&lt;br /&gt;
# ✅ Dokumentasikan setiap langkah dengan screenshot&lt;br /&gt;
# ✅ Buat laporan praktikum dalam format PDF&lt;br /&gt;
&lt;br /&gt;
== 📚 REFERENSI ==&lt;br /&gt;
* [https://www.postfix.org/ Postfix Official Documentation]&lt;br /&gt;
* [https://www.dovecot.org/ Dovecot Official Documentation]&lt;br /&gt;
* [https://roundcube.net/ Roundcube Webmail]&lt;br /&gt;
* [https://www.isc.org/bind/ BIND9 Documentation]&lt;br /&gt;
* Modul Praktikum TKJ SMK — Administrasi Server Linux&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;— Tutorial Mail Server untuk SMK TKJ — Edisi Pemula —&#039;&#039;&lt;br /&gt;
&#039;&#039;Dibuat untuk pembelajaran praktikum Administrasi Infrastruktur Jaringan&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
	<entry>
		<id>https://wiki.robiehakim.my.id/index.php?title=Berkas:017-restart-dovecot-6.jpg&amp;diff=2376</id>
		<title>Berkas:017-restart-dovecot-6.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.robiehakim.my.id/index.php?title=Berkas:017-restart-dovecot-6.jpg&amp;diff=2376"/>
		<updated>2026-04-22T05:43:50Z</updated>

		<summary type="html">&lt;p&gt;Robie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;017-restart-dovecot-6&lt;/div&gt;</summary>
		<author><name>Robie</name></author>
	</entry>
</feed>