[{"data":1,"prerenderedAt":1449},["ShallowReactive",2],{"\u002Fblog\u002Fid\u002Fopen-source\u002Fselfhosted-alternatives":3,"related-\u002Fblog\u002Fid\u002Fopen-source\u002Fselfhosted-alternatives":174,"alternates-\u002Fblog\u002Fid\u002Fopen-source\u002Fselfhosted-alternatives":1349},{"id":4,"title":5,"body":6,"category":163,"date":164,"description":165,"extension":166,"image":167,"meta":168,"navigation":169,"path":170,"seo":171,"stem":172,"__hash__":173},"blog\u002Fid\u002Fopen-source\u002Fselfhosted-alternatives.md","5 Alternatif Self-Hosted Open-Source Terbaik untuk Menggantikan Layanan SaaS Berbayar",{"type":7,"value":8,"toc":155},"minimark",[9,22,34,37,42,49,65,68,72,79,92,96,107,120,124,135,152],[10,11,12,13,17,18,21],"p",{},"Layanan SaaS (Software-as-a-Service) berbayar seperti Trello, Google Analytics, Zapier, dan Firebase memang sangat membantu untuk bisnis. Namun, seiring berjalannya waktu, biaya langganan bulanan yang menumpuk bisa menjadi beban finansial yang cukup signifikan, terutama bagi ",[14,15,16],"em",{},"developer"," independen, ",[14,19,20],{},"startup",", atau pelaku UMKM.",[10,23,24,25,29,30,33],{},"Untungnya, komunitas pengembang di GitHub telah menciptakan berbagai ",[26,27,28],"strong",{},"alternatif open-source"," berkualitas tinggi yang bisa Anda pasang (",[14,31,32],{},"self-host",") sendiri secara gratis di server VPS Anda.",[10,35,36],{},"Berikut adalah 5 alternatif self-hosted open-source terbaik yang patut Anda coba sekarang.",[38,39,41],"h2",{"id":40},"_1-planka-alternatif-trello","1. Planka (Alternatif Trello)",[10,43,44,45,48],{},"Jika Anda membutuhkan papan Kanban untuk manajemen proyek tim tetapi terbentur batasan jumlah pengguna atau papan gratis di Trello, ",[26,46,47],{},"Planka"," adalah solusi yang tepat.",[50,51,52,59],"ul",{},[53,54,55,58],"li",{},[26,56,57],{},"Kelebihan:"," Menggunakan teknologi React dan PostgreSQL, tampilan antarmukanya sangat mirip dengan Trello, mendukung kartu tugas, estimasi waktu, lampiran, dan penugasan anggota.",[53,60,61,64],{},[26,62,63],{},"Cara Host:"," Sangat mudah dipasang menggunakan Docker Compose.",[66,67],"inject-ad",{},[38,69,71],{"id":70},"_2-umami-alternatif-google-analytics","2. Umami (Alternatif Google Analytics)",[10,73,74,75,78],{},"Google Analytics memang gratis, namun performanya cukup berat dan memiliki isu terkait kebijakan privasi data pengguna (GDPR). ",[26,76,77],{},"Umami"," hadir sebagai analitik web yang sangat ringan dan ramah privasi.",[50,80,81,86],{},[53,82,83,85],{},[26,84,57],{}," Ukurannya kurang dari 2KB (GA berukuran sekitar 30KB+), tidak menggunakan cookie pelacak, 100% mematuhi aturan privasi, dan memberikan visualisasi data yang bersih dan mudah dipahami.",[53,87,88,91],{},[26,89,90],{},"Database:"," Mendukung PostgreSQL dan MySQL.",[38,93,95],{"id":94},"_3-n8n-alternatif-zapier","3. n8n (Alternatif Zapier)",[10,97,98,99,102,103,106],{},"Zapier adalah rajanya otomatisasi tugas, tetapi kuota eksekusi gratisnya sangat terbatas (hanya 100 tugas per bulan). ",[26,100,101],{},"n8n"," adalah ",[14,104,105],{},"fair-code workflow automation tool"," yang bisa Anda jalankan tanpa batas di VPS sendiri.",[50,108,109,114],{},[53,110,111,113],{},[26,112,57],{}," Memiliki antarmuka visual berbasis node seperti Zapier, mendukung lebih dari 300 integrasi aplikasi populer, dan mendukung penulisan logika javascript kustom di setiap alurnya.",[53,115,116,119],{},[26,117,118],{},"Biaya:"," Gratis tanpa batas untuk penggunaan mandiri.",[38,121,123],{"id":122},"_4-appwrite-alternatif-firebase","4. Appwrite (Alternatif Firebase)",[10,125,126,127,130,131,134],{},"Firebase dari Google sangat memudahkan pembuatan backend aplikasi mobile\u002Fweb, namun biaya skalabilitasnya (",[14,128,129],{},"vendor lock-in",") bisa melambung tinggi secara tidak terduga. ",[26,132,133],{},"Appwrite"," adalah alternatif backend-as-a-service (BaaS) terpopuler saat ini.",[50,136,137,146],{},[53,138,139,141,142,145],{},[26,140,57],{}," Menyediakan API otentikasi user, database dokumen, penyimpanan file nirkabel, fungsi cloud (",[14,143,144],{},"serverless","), dan keamanan SSL otomatis terintegrasi.",[53,147,148,151],{},[26,149,150],{},"Dukungan SDK:"," Flutter, Web, Android, iOS, React Native, Svelte, Vue, dan banyak lagi.",[10,153,154],{},"Dengan meng-host aplikasi-aplikasi di atas di VPS murah seharga $5\u002Fbulan, Anda bisa menikmati layanan kelas dunia dengan kontrol penuh atas privasi data Anda tanpa perlu khawatir tagihan bulanan membengkak!",{"title":156,"searchDepth":157,"depth":157,"links":158},"",2,[159,160,161,162],{"id":40,"depth":157,"text":41},{"id":70,"depth":157,"text":71},{"id":94,"depth":157,"text":95},{"id":122,"depth":157,"text":123},"open-source","2026-07-12","Pangkas biaya langganan bulanan Anda dengan beralih ke alternatif open-source gratis yang bisa Anda hosting sendiri di VPS.","md","\u002Fimg\u002Fselfhosted_alternatives.webp",{},true,"\u002Fid\u002Fopen-source\u002Fselfhosted-alternatives",{"title":5,"description":165},"id\u002Fopen-source\u002Fselfhosted-alternatives","BxZ1qhew6v4HX5BlSdNhikjKDkcBG8ci_eWsQ_mQ1tM",[175,702,1044],{"id":176,"title":177,"body":178,"category":693,"date":694,"description":695,"extension":166,"image":696,"meta":697,"navigation":169,"path":698,"seo":699,"stem":700,"__hash__":701},"blog\u002Fid\u002Ftutorials\u002Finstalasi-thingsboard-professional-edition-di-proxmox-lxc.md","Panduan Lengkap Instalasi ThingsBoard Professional Edition di Proxmox LXC",{"type":7,"value":179,"toc":683},[180,183,186,189,193,196,231,235,238,270,272,276,283,320,324,327,352,357,361,364,471,475,482,581,585,588,606,610,613,638,645,671,676,679],[10,181,182],{},"ThingsBoard Professional Edition (PE) adalah platform IoT tingkat lanjut yang menawarkan fitur manajemen perangkat, visualisasi data, dan mesin aturan yang sangat fleksibel. Menggunakan container LXC di Proxmox Virtual Environment adalah strategi yang cerdas untuk menjalankan platform ini karena efisiensi sumber daya yang ditawarkan dibandingkan Virtual Machine (VM) konvensional.",[10,184,185],{},"Dalam panduan ini, kita akan melakukan instalasi secara \"on-premises\" menggunakan database PostgreSQL. Pastikan Anda telah menyiapkan container LXC dengan spesifikasi minimum setidaknya 2 core CPU dan 4 GB RAM untuk kebutuhan pengembangan atau PoC.",[187,188],"hr",{},[38,190,192],{"id":191},"langkah-1-persiapan-container-dan-update-sistem","Langkah 1: Persiapan Container dan Update Sistem",[10,194,195],{},"Pastikan container LXC Anda menggunakan template Debian atau Ubuntu terbaru. Langkah awal yang wajib dilakukan adalah memperbarui daftar paket sistem agar proses instalasi berjalan lancar.",[197,198,202],"pre",{"className":199,"code":200,"language":201,"meta":156,"style":156},"language-bash shiki shiki-themes github-light github-dark","apt update && apt upgrade -y\n","bash",[203,204,205],"code",{"__ignoreMap":156},[206,207,210,214,218,222,224,227],"span",{"class":208,"line":209},"line",1,[206,211,213],{"class":212},"sScJk","apt",[206,215,217],{"class":216},"sZZnC"," update",[206,219,221],{"class":220},"sVt8B"," && ",[206,223,213],{"class":212},[206,225,226],{"class":216}," upgrade",[206,228,230],{"class":229},"sj4cs"," -y\n",[38,232,234],{"id":233},"langkah-2-instalasi-java-openjdk-21","Langkah 2: Instalasi Java OpenJDK 21",[10,236,237],{},"ThingsBoard PE versi terbaru memerlukan Java 17 atau lebih tinggi, namun sangat direkomendasikan untuk menggunakan OpenJDK 21 demi stabilitas dan performa optimal.",[197,239,241],{"className":199,"code":240,"language":201,"meta":156,"style":156},"apt install openjdk-21-jdk -y\n# Verifikasi versi Java\njava -version\n",[203,242,243,255,261],{"__ignoreMap":156},[206,244,245,247,250,253],{"class":208,"line":209},[206,246,213],{"class":212},[206,248,249],{"class":216}," install",[206,251,252],{"class":216}," openjdk-21-jdk",[206,254,230],{"class":229},[206,256,257],{"class":208,"line":157},[206,258,260],{"class":259},"sJ8bj","# Verifikasi versi Java\n",[206,262,264,267],{"class":208,"line":263},3,[206,265,266],{"class":212},"java",[206,268,269],{"class":229}," -version\n",[66,271],{},[38,273,275],{"id":274},"langkah-3-instalasi-paket-thingsboard-pe","Langkah 3: Instalasi Paket ThingsBoard PE",[10,277,278,279,282],{},"Unduh paket Debian ThingsBoard PE dan instal menggunakan manajer paket ",[203,280,281],{},"dpkg",". Pastikan Anda juga menginstal pustaka font yang diperlukan oleh komponen pelaporan.",[197,284,286],{"className":199,"code":285,"language":201,"meta":156,"style":156},"apt install fontconfig libfreetype6 -y\nwget https:\u002F\u002Fdist.thingsboard.io\u002Fthingsboard-4.3.1.3PE.deb\ndpkg -i thingsboard-4.3.1.3PE.deb\n",[203,287,288,302,310],{"__ignoreMap":156},[206,289,290,292,294,297,300],{"class":208,"line":209},[206,291,213],{"class":212},[206,293,249],{"class":216},[206,295,296],{"class":216}," fontconfig",[206,298,299],{"class":216}," libfreetype6",[206,301,230],{"class":229},[206,303,304,307],{"class":208,"line":157},[206,305,306],{"class":212},"wget",[206,308,309],{"class":216}," https:\u002F\u002Fdist.thingsboard.io\u002Fthingsboard-4.3.1.3PE.deb\n",[206,311,312,314,317],{"class":208,"line":263},[206,313,281],{"class":212},[206,315,316],{"class":229}," -i",[206,318,319],{"class":216}," thingsboard-4.3.1.3PE.deb\n",[38,321,323],{"id":322},"langkah-4-konfigurasi-kunci-lisensi","Langkah 4: Konfigurasi Kunci Lisensi",[10,325,326],{},"ThingsBoard PE memerlukan kunci lisensi agar layanan dapat berjalan. Kita akan memasukkan kunci rahasia lisensi langsung ke dalam file konfigurasi agar terbaca oleh layanan sistem secara permanen.",[197,328,330],{"className":199,"code":329,"language":201,"meta":156,"style":156},"# Ganti YOUR_LICENSE_SECRET dengan kunci lisensi Anda\necho \"TB_LICENSE_SECRET=YOUR_LICENSE_SECRET\" >> \u002Fetc\u002Fthingsboard\u002Fconf\u002Fthingsboard.conf\n",[203,331,332,337],{"__ignoreMap":156},[206,333,334],{"class":208,"line":209},[206,335,336],{"class":259},"# Ganti YOUR_LICENSE_SECRET dengan kunci lisensi Anda\n",[206,338,339,342,345,349],{"class":208,"line":157},[206,340,341],{"class":229},"echo",[206,343,344],{"class":216}," \"TB_LICENSE_SECRET=YOUR_LICENSE_SECRET\"",[206,346,348],{"class":347},"szBVR"," >>",[206,350,351],{"class":216}," \u002Fetc\u002Fthingsboard\u002Fconf\u002Fthingsboard.conf\n",[10,353,354],{},[14,355,356],{},"Catatan: Parameter lisensi ini harus tepat agar proses aktivasi instance saat startup tidak mengalami kegagalan.",[38,358,360],{"id":359},"langkah-5-instalasi-postgresql-dan-penambahan-repositori","Langkah 5: Instalasi PostgreSQL dan Penambahan Repositori",[10,362,363],{},"Untuk mendapatkan versi PostgreSQL terbaru (seperti versi 16 atau 18), Anda perlu menambahkan repositori resmi PostgreSQL karena repositori bawaan Debian\u002FUbuntu biasanya menyediakan versi yang lebih lama.",[197,365,367],{"className":199,"code":366,"language":201,"meta":156,"style":156},"# Menambah repositori resmi PostgreSQL\napt install wget gnupg2 -y\nwget --quiet -O - https:\u002F\u002Fwww.postgresql.org\u002Fmedia\u002Fkeys\u002FACCC4CF8.asc | apt-key add -\necho \"deb http:\u002F\u002Fapt.postgresql.org\u002Fpub\u002Frepos\u002Fapt $(lsb_release -cs)-pgdg main\" > \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fpgdg.list\napt update\n\n# Instalasi PostgreSQL\napt install postgresql-16 -y\n",[203,368,369,374,388,416,439,447,453,459],{"__ignoreMap":156},[206,370,371],{"class":208,"line":209},[206,372,373],{"class":259},"# Menambah repositori resmi PostgreSQL\n",[206,375,376,378,380,383,386],{"class":208,"line":157},[206,377,213],{"class":212},[206,379,249],{"class":216},[206,381,382],{"class":216}," wget",[206,384,385],{"class":216}," gnupg2",[206,387,230],{"class":229},[206,389,390,392,395,398,401,404,407,410,413],{"class":208,"line":263},[206,391,306],{"class":212},[206,393,394],{"class":229}," --quiet",[206,396,397],{"class":229}," -O",[206,399,400],{"class":216}," -",[206,402,403],{"class":216}," https:\u002F\u002Fwww.postgresql.org\u002Fmedia\u002Fkeys\u002FACCC4CF8.asc",[206,405,406],{"class":347}," |",[206,408,409],{"class":212}," apt-key",[206,411,412],{"class":216}," add",[206,414,415],{"class":216}," -\n",[206,417,419,421,424,427,430,433,436],{"class":208,"line":418},4,[206,420,341],{"class":229},[206,422,423],{"class":216}," \"deb http:\u002F\u002Fapt.postgresql.org\u002Fpub\u002Frepos\u002Fapt $(",[206,425,426],{"class":212},"lsb_release",[206,428,429],{"class":229}," -cs",[206,431,432],{"class":216},")-pgdg main\"",[206,434,435],{"class":347}," >",[206,437,438],{"class":216}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fpgdg.list\n",[206,440,442,444],{"class":208,"line":441},5,[206,443,213],{"class":212},[206,445,446],{"class":216}," update\n",[206,448,450],{"class":208,"line":449},6,[206,451,452],{"emptyLinePlaceholder":169},"\n",[206,454,456],{"class":208,"line":455},7,[206,457,458],{"class":259},"# Instalasi PostgreSQL\n",[206,460,462,464,466,469],{"class":208,"line":461},8,[206,463,213],{"class":212},[206,465,249],{"class":216},[206,467,468],{"class":216}," postgresql-16",[206,470,230],{"class":229},[38,472,474],{"id":473},"langkah-6-konfigurasi-database-dan-thingsboardconf","Langkah 6: Konfigurasi Database dan thingsboard.conf",[10,476,477,478,481],{},"Buat database untuk ThingsBoard dan atur kredensialnya. Sangat penting untuk mendaftarkan detail koneksi database ke dalam file ",[203,479,480],{},"thingsboard.conf"," sebelum menjalankan skrip instalasi utama.",[197,483,485],{"className":199,"code":484,"language":201,"meta":156,"style":156},"# Masuk ke PostgreSQL dan buat database\nsudo -u postgres psql -c \"CREATE DATABASE thingsboard;\"\nsudo -u postgres psql -c \"ALTER USER postgres WITH PASSWORD 'password_anda';\"\n\n# Tambahkan konfigurasi ke file thingsboard.conf\necho \"export DATABASE_TS_TYPE=sql\" >> \u002Fetc\u002Fthingsboard\u002Fconf\u002Fthingsboard.conf\necho \"export SPRING_DATASOURCE_URL=jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fthingsboard\" >> \u002Fetc\u002Fthingsboard\u002Fconf\u002Fthingsboard.conf\necho \"export SPRING_DATASOURCE_USERNAME=postgres\" >> \u002Fetc\u002Fthingsboard\u002Fconf\u002Fthingsboard.conf\necho \"export SPRING_DATASOURCE_PASSWORD=password_anda\" >> \u002Fetc\u002Fthingsboard\u002Fconf\u002Fthingsboard.conf\n",[203,486,487,492,512,527,531,536,547,558,569],{"__ignoreMap":156},[206,488,489],{"class":208,"line":209},[206,490,491],{"class":259},"# Masuk ke PostgreSQL dan buat database\n",[206,493,494,497,500,503,506,509],{"class":208,"line":157},[206,495,496],{"class":212},"sudo",[206,498,499],{"class":229}," -u",[206,501,502],{"class":216}," postgres",[206,504,505],{"class":216}," psql",[206,507,508],{"class":229}," -c",[206,510,511],{"class":216}," \"CREATE DATABASE thingsboard;\"\n",[206,513,514,516,518,520,522,524],{"class":208,"line":263},[206,515,496],{"class":212},[206,517,499],{"class":229},[206,519,502],{"class":216},[206,521,505],{"class":216},[206,523,508],{"class":229},[206,525,526],{"class":216}," \"ALTER USER postgres WITH PASSWORD 'password_anda';\"\n",[206,528,529],{"class":208,"line":418},[206,530,452],{"emptyLinePlaceholder":169},[206,532,533],{"class":208,"line":441},[206,534,535],{"class":259},"# Tambahkan konfigurasi ke file thingsboard.conf\n",[206,537,538,540,543,545],{"class":208,"line":449},[206,539,341],{"class":229},[206,541,542],{"class":216}," \"export DATABASE_TS_TYPE=sql\"",[206,544,348],{"class":347},[206,546,351],{"class":216},[206,548,549,551,554,556],{"class":208,"line":455},[206,550,341],{"class":229},[206,552,553],{"class":216}," \"export SPRING_DATASOURCE_URL=jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fthingsboard\"",[206,555,348],{"class":347},[206,557,351],{"class":216},[206,559,560,562,565,567],{"class":208,"line":461},[206,561,341],{"class":229},[206,563,564],{"class":216}," \"export SPRING_DATASOURCE_USERNAME=postgres\"",[206,566,348],{"class":347},[206,568,351],{"class":216},[206,570,572,574,577,579],{"class":208,"line":571},9,[206,573,341],{"class":229},[206,575,576],{"class":216}," \"export SPRING_DATASOURCE_PASSWORD=password_anda\"",[206,578,348],{"class":347},[206,580,351],{"class":216},[38,582,584],{"id":583},"langkah-7-eksekusi-skrip-instalasi","Langkah 7: Eksekusi Skrip Instalasi",[10,586,587],{},"Setelah semua konfigurasi siap, jalankan skrip inisialisasi untuk membuat skema database. Anda dapat memilih untuk memuat data demo guna memudahkan pengujian awal platform.",[197,589,591],{"className":199,"code":590,"language":201,"meta":156,"style":156},"# Menjalankan instalasi dengan data demo\n\u002Fusr\u002Fshare\u002Fthingsboard\u002Fbin\u002Finstall.sh --loadDemo\n",[203,592,593,598],{"__ignoreMap":156},[206,594,595],{"class":208,"line":209},[206,596,597],{"class":259},"# Menjalankan instalasi dengan data demo\n",[206,599,600,603],{"class":208,"line":157},[206,601,602],{"class":212},"\u002Fusr\u002Fshare\u002Fthingsboard\u002Fbin\u002Finstall.sh",[206,604,605],{"class":229}," --loadDemo\n",[38,607,609],{"id":608},"langkah-8-menjalankan-layanan-dan-verifikasi","Langkah 8: Menjalankan Layanan dan Verifikasi",[10,611,612],{},"Langkah terakhir adalah menjalankan layanan ThingsBoard. Tunggu sekitar 90 detik hingga Web UI siap sepenuhnya sebelum mencoba mengaksesnya melalui browser.",[197,614,616],{"className":199,"code":615,"language":201,"meta":156,"style":156},"systemctl enable thingsboard\nsystemctl start thingsboard\n",[203,617,618,629],{"__ignoreMap":156},[206,619,620,623,626],{"class":208,"line":209},[206,621,622],{"class":212},"systemctl",[206,624,625],{"class":216}," enable",[206,627,628],{"class":216}," thingsboard\n",[206,630,631,633,636],{"class":208,"line":157},[206,632,622],{"class":212},[206,634,635],{"class":216}," start",[206,637,628],{"class":216},[10,639,640,641,644],{},"Untuk memverifikasi, akses ",[203,642,643],{},"http:\u002F\u002F[IP-CONTAINER-ANDA]:8080",". Gunakan kredensial default berikut untuk login awal:",[50,646,647,660],{},[53,648,649,652,653,656,657],{},[26,650,651],{},"System Administrator:"," ",[203,654,655],{},"sysadmin@thingsboard.org"," \u002F ",[203,658,659],{},"sysadmin",[53,661,662,652,665,656,668],{},[26,663,664],{},"Tenant Administrator:",[203,666,667],{},"tenant@thingsboard.org",[203,669,670],{},"tenant",[10,672,673],{},[14,674,675],{},"Catatan: Segera ganti kata sandi default Anda melalui profil akun setelah berhasil login demi keamanan.",[10,677,678],{},"Selamat! Anda kini telah memiliki instance ThingsBoard Professional Edition yang berjalan dengan konfigurasi yang tepat di lingkungan Proxmox LXC Anda.",[680,681,682],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":156,"searchDepth":157,"depth":157,"links":684},[685,686,687,688,689,690,691,692],{"id":191,"depth":157,"text":192},{"id":233,"depth":157,"text":234},{"id":274,"depth":157,"text":275},{"id":322,"depth":157,"text":323},{"id":359,"depth":157,"text":360},{"id":473,"depth":157,"text":474},{"id":583,"depth":157,"text":584},{"id":608,"depth":157,"text":609},"tutorials","2026-07-17","Tutorial teknis menginstal ThingsBoard PE di container Proxmox, termasuk konfigurasi PostgreSQL dan lisensi yang tepat.","https:\u002F\u002Fpub-47f3f6b6df2a4b068efd8b7310709fdd.r2.dev\u002Fimages\u002Fimg_1ab4a1ecdf6b.jpg",{},"\u002Fid\u002Ftutorials\u002Finstalasi-thingsboard-professional-edition-di-proxmox-lxc",{"title":177,"description":695},"id\u002Ftutorials\u002Finstalasi-thingsboard-professional-edition-di-proxmox-lxc","eAnpZ_fiwBRQ4UBNIdkS7QCEX7rTUqQPWdE4GuB-Yr4",{"id":703,"title":704,"body":705,"category":693,"date":1036,"description":1037,"extension":166,"image":1038,"meta":1039,"navigation":169,"path":1040,"seo":1041,"stem":1042,"__hash__":1043},"blog\u002Fid\u002Ftutorials\u002Fkonfigurasi-nginx-sebagai-reverse-proxy-dan-eksekusi-php-fpm.md","Panduan Lengkap Konfigurasi Nginx sebagai Reverse Proxy dan Eksekusi PHP-FPM",{"type":7,"value":706,"toc":1028},[707,714,721,723,727,730,755,759,762,778,780,784,791,806,817,929,934,938,941,968,972,983,1006,1010,1013,1022,1025],[10,708,709,710,713],{},"Nginx merupakan salah satu server web yang paling populer di komunitas DevOps karena performanya yang tinggi dalam menangani trafik. Selain sebagai server web, Nginx sering digunakan sebagai ",[26,711,712],{},"reverse proxy"," untuk mendistribusikan beban kerja atau meneruskan permintaan ke server aplikasi lain menggunakan protokol seperti FastCGI.",[10,715,716,717,720],{},"Dalam tutorial ini, Anda akan belajar cara mengintegrasikan Nginx dengan ",[26,718,719],{},"PHP-FPM (FastCGI Process Manager)"," agar server dapat memproses file PHP dengan optimal. Di akhir panduan ini, Anda akan memiliki server fungsional yang mampu menjalankan aplikasi web dinamis berbasis PHP di balik mekanisme proxy yang handal.",[187,722],{},[38,724,726],{"id":725},"langkah-1-memperbarui-repositori-dan-menginstal-nginx","Langkah 1: Memperbarui Repositori dan Menginstal Nginx",[10,728,729],{},"Langkah pertama yang wajib dilakukan pada server Linux seperti Ubuntu adalah memperbarui daftar paket untuk memastikan Anda mendapatkan versi terbaru. Setelah itu, jalankan perintah instalasi untuk memasang server web Nginx ke dalam sistem Anda.",[197,731,733],{"className":199,"code":732,"language":201,"meta":156,"style":156},"sudo apt-get update\nsudo apt-get install nginx\n",[203,734,735,744],{"__ignoreMap":156},[206,736,737,739,742],{"class":208,"line":209},[206,738,496],{"class":212},[206,740,741],{"class":216}," apt-get",[206,743,446],{"class":216},[206,745,746,748,750,752],{"class":208,"line":157},[206,747,496],{"class":212},[206,749,741],{"class":216},[206,751,249],{"class":216},[206,753,754],{"class":216}," nginx\n",[38,756,758],{"id":757},"langkah-2-menginstal-php-fpm","Langkah 2: Menginstal PHP-FPM",[10,760,761],{},"Untuk memproses skrip PHP secara efisien, Nginx memerlukan pustaka PHP-FPM, bukan paket PHP standar yang biasanya menarik dependensi Apache. Menggunakan PHP-FPM sangat disarankan untuk menghindari konflik dengan proses HTTPD milik Apache serta memastikan penggunaan sumber daya server yang lebih hemat.",[197,763,765],{"className":199,"code":764,"language":201,"meta":156,"style":156},"sudo apt-get install php8.1-fpm\n",[203,766,767],{"__ignoreMap":156},[206,768,769,771,773,775],{"class":208,"line":209},[206,770,496],{"class":212},[206,772,741],{"class":216},[206,774,249],{"class":216},[206,776,777],{"class":216}," php8.1-fpm\n",[66,779],{},[38,781,783],{"id":782},"langkah-3-mengonfigurasi-server-block-nginx","Langkah 3: Mengonfigurasi Server Block Nginx",[10,785,786,787,790],{},"Anda perlu mengedit file konfigurasi default Nginx agar server mengenali file indeks PHP dan meneruskan permintaan skrip ",[203,788,789],{},".php"," ke socket PHP-FPM. Gunakan editor teks seperti Nano untuk membuka file konfigurasi tersebut.",[197,792,794],{"className":199,"code":793,"language":201,"meta":156,"style":156},"sudo nano \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdefault\n",[203,795,796],{"__ignoreMap":156},[206,797,798,800,803],{"class":208,"line":209},[206,799,496],{"class":212},[206,801,802],{"class":216}," nano",[206,804,805],{"class":216}," \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdefault\n",[10,807,808,809,812,813,816],{},"Di dalam blok ",[203,810,811],{},"server",", pastikan Anda menambahkan ",[203,814,815],{},"index.php"," pada baris indeks dan mengatur lokasi FastCGI untuk memproses file PHP:",[197,818,822],{"className":819,"code":820,"language":821,"meta":156,"style":156},"language-nginx shiki shiki-themes github-light github-dark","server {\n    listen 80;\n    root \u002Fvar\u002Fwww\u002Fhtml;\n    index index.php index.html index.htm;\n\n    server_name localhost;\n\n    location \u002F {\n        try_files $uri $uri\u002F =404;\n    }\n\n    location ~ \\.php$ {\n        include snippets\u002Ffastcgi-php.conf;\n        fastcgi_pass unix:\u002Frun\u002Fphp\u002Fphp8.1-fpm.sock;\n    }\n\n    location ~ \u002F\\.ht {\n        deny all;\n    }\n}\n","nginx",[203,823,824,829,834,839,844,848,853,857,862,867,873,878,884,890,896,901,906,912,918,923],{"__ignoreMap":156},[206,825,826],{"class":208,"line":209},[206,827,828],{},"server {\n",[206,830,831],{"class":208,"line":157},[206,832,833],{},"    listen 80;\n",[206,835,836],{"class":208,"line":263},[206,837,838],{},"    root \u002Fvar\u002Fwww\u002Fhtml;\n",[206,840,841],{"class":208,"line":418},[206,842,843],{},"    index index.php index.html index.htm;\n",[206,845,846],{"class":208,"line":441},[206,847,452],{"emptyLinePlaceholder":169},[206,849,850],{"class":208,"line":449},[206,851,852],{},"    server_name localhost;\n",[206,854,855],{"class":208,"line":455},[206,856,452],{"emptyLinePlaceholder":169},[206,858,859],{"class":208,"line":461},[206,860,861],{},"    location \u002F {\n",[206,863,864],{"class":208,"line":571},[206,865,866],{},"        try_files $uri $uri\u002F =404;\n",[206,868,870],{"class":208,"line":869},10,[206,871,872],{},"    }\n",[206,874,876],{"class":208,"line":875},11,[206,877,452],{"emptyLinePlaceholder":169},[206,879,881],{"class":208,"line":880},12,[206,882,883],{},"    location ~ \\.php$ {\n",[206,885,887],{"class":208,"line":886},13,[206,888,889],{},"        include snippets\u002Ffastcgi-php.conf;\n",[206,891,893],{"class":208,"line":892},14,[206,894,895],{},"        fastcgi_pass unix:\u002Frun\u002Fphp\u002Fphp8.1-fpm.sock;\n",[206,897,899],{"class":208,"line":898},15,[206,900,872],{},[206,902,904],{"class":208,"line":903},16,[206,905,452],{"emptyLinePlaceholder":169},[206,907,909],{"class":208,"line":908},17,[206,910,911],{},"    location ~ \u002F\\.ht {\n",[206,913,915],{"class":208,"line":914},18,[206,916,917],{},"        deny all;\n",[206,919,921],{"class":208,"line":920},19,[206,922,872],{},[206,924,926],{"class":208,"line":925},20,[206,927,928],{},"}\n",[10,930,931],{},[14,932,933],{},"Catatan: Pastikan versi pada jalur socket (misalnya php8.1-fpm.sock) di dalam konfigurasi sudah sesuai dengan versi PHP yang Anda instal di server Anda.",[38,935,937],{"id":936},"langkah-4-memvalidasi-konfigurasi-dan-restart-nginx","Langkah 4: Memvalidasi Konfigurasi dan Restart Nginx",[10,939,940],{},"Setelah melakukan perubahan pada file konfigurasi, sangat penting untuk memvalidasi sintaks guna memastikan tidak ada kesalahan penulisan yang bisa menyebabkan kegagalan layanan. Jika hasil validasi menunjukkan \"syntax is ok\", lakukan restart pada layanan Nginx untuk menerapkan perubahan tersebut.",[197,942,944],{"className":199,"code":943,"language":201,"meta":156,"style":156},"sudo nginx -t\nsudo systemctl restart nginx\n",[203,945,946,956],{"__ignoreMap":156},[206,947,948,950,953],{"class":208,"line":209},[206,949,496],{"class":212},[206,951,952],{"class":216}," nginx",[206,954,955],{"class":229}," -t\n",[206,957,958,960,963,966],{"class":208,"line":157},[206,959,496],{"class":212},[206,961,962],{"class":216}," systemctl",[206,964,965],{"class":216}," restart",[206,967,754],{"class":216},[38,969,971],{"id":970},"langkah-5-membuat-file-uji-coba-php","Langkah 5: Membuat File Uji Coba PHP",[10,973,974,975,978,979,982],{},"Untuk memastikan Nginx dan PHP-FPM sudah terhubung dan berfungsi dengan benar, buatlah file PHP sederhana bernama ",[203,976,977],{},"info.php"," di direktori root web server. File ini akan menjalankan fungsi ",[203,980,981],{},"phpinfo()"," yang menampilkan informasi detail mengenai instalasi PHP Anda.",[197,984,986],{"className":199,"code":985,"language":201,"meta":156,"style":156},"echo \"\u003C?php phpinfo(); ?>\" | sudo tee \u002Fvar\u002Fwww\u002Fhtml\u002Finfo.php\n",[203,987,988],{"__ignoreMap":156},[206,989,990,992,995,997,1000,1003],{"class":208,"line":209},[206,991,341],{"class":229},[206,993,994],{"class":216}," \"\u003C?php phpinfo(); ?>\"",[206,996,406],{"class":347},[206,998,999],{"class":212}," sudo",[206,1001,1002],{"class":216}," tee",[206,1004,1005],{"class":216}," \u002Fvar\u002Fwww\u002Fhtml\u002Finfo.php\n",[38,1007,1009],{"id":1008},"langkah-6-menguji-hasil-konfigurasi-melalui-browser","Langkah 6: Menguji Hasil Konfigurasi melalui Browser",[10,1011,1012],{},"Langkah terakhir adalah melakukan verifikasi melalui peramban web dengan mengakses alamat IP server atau localhost diikuti dengan nama file yang telah dibuat sebelumnya. Jika halaman informasi PHP muncul dengan benar di browser Anda, berarti konfigurasi Nginx untuk mengeksekusi PHP melalui PHP-FPM telah berhasil.",[197,1014,1016],{"className":199,"code":1015,"language":201,"meta":156,"style":156},"http:\u002F\u002Flocalhost\u002Finfo.php\n",[203,1017,1018],{"__ignoreMap":156},[206,1019,1020],{"class":208,"line":209},[206,1021,1015],{"class":212},[10,1023,1024],{},"Selamat, Anda telah berhasil menyelesaikan konfigurasi Nginx sebagai reverse proxy dan mesin eksekusi PHP-FPM dengan sukses!",[680,1026,1027],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":156,"searchDepth":157,"depth":157,"links":1029},[1030,1031,1032,1033,1034,1035],{"id":725,"depth":157,"text":726},{"id":757,"depth":157,"text":758},{"id":782,"depth":157,"text":783},{"id":936,"depth":157,"text":937},{"id":970,"depth":157,"text":971},{"id":1008,"depth":157,"text":1009},"2026-07-16","Pelajari cara mengatur Nginx untuk mengelola trafik sebagai reverse proxy sekaligus mengeksekusi skrip PHP melalui PHP-FPM secara efisien.","https:\u002F\u002Fpub-47f3f6b6df2a4b068efd8b7310709fdd.r2.dev\u002Fimages\u002Fimg_61ca430e061a.jpg",{},"\u002Fid\u002Ftutorials\u002Fkonfigurasi-nginx-sebagai-reverse-proxy-dan-eksekusi-php-fpm",{"title":704,"description":1037},"id\u002Ftutorials\u002Fkonfigurasi-nginx-sebagai-reverse-proxy-dan-eksekusi-php-fpm","Avu-PSIt5U5EBJTHlP_EXq-BZR_0ScnD0LrBzLWb9Iw",{"id":1045,"title":1046,"body":1047,"category":693,"date":1341,"description":1342,"extension":166,"image":1343,"meta":1344,"navigation":169,"path":1345,"seo":1346,"stem":1347,"__hash__":1348},"blog\u002Fid\u002Ftutorials\u002Finstall-outline-wiki-docker.md","Panduan Lengkap Install Outline Wiki dengan Docker",{"type":7,"value":1048,"toc":1332},[1049,1059,1066,1068,1072,1075,1115,1120,1124,1131,1168,1170,1174,1184,1202,1207,1211,1220,1237,1241,1259,1279,1283,1290,1306,1311,1315,1326,1329],[10,1050,1051,1052,1055,1056,1058],{},"Outline adalah platform basis pengetahuan (",[14,1053,1054],{},"knowledgebase",") berbasis ",[14,1057,163],{}," yang sangat mumpuni dan sering dianggap sebagai alternatif Notion yang lebih ringan. Platform ini menawarkan fitur kolaborasi waktu nyata untuk tim, editor berbasis Markdown yang rapi, serta organisasi dokumen yang sangat intuitif.",[10,1060,1061,1062,1065],{},"Melalui tutorial ini, Anda akan belajar cara melakukan instalasi (self-hosting) Outline Wiki di server Anda sendiri menggunakan ",[14,1063,1064],{},"container"," Docker. Pada akhir panduan ini, Anda akan memiliki platform dokumentasi canggih yang berjalan mandiri dan aman, lengkap dengan konfigurasi penyimpanan dan basis datanya.",[187,1067],{},[38,1069,1071],{"id":1070},"langkah-1-persiapan-server-dan-instalasi-docker","Langkah 1: Persiapan Server dan Instalasi Docker",[10,1073,1074],{},"Langkah pertama adalah memperbarui sistem operasi server Anda dan memastikan bahwa Docker serta Docker Compose telah terinstal dengan benar.",[197,1076,1078],{"className":199,"code":1077,"language":201,"meta":156,"style":156},"sudo apt update && sudo apt upgrade -y\nsudo apt install docker.io docker-compose-v2 -y\n",[203,1079,1080,1099],{"__ignoreMap":156},[206,1081,1082,1084,1087,1089,1091,1093,1095,1097],{"class":208,"line":209},[206,1083,496],{"class":212},[206,1085,1086],{"class":216}," apt",[206,1088,217],{"class":216},[206,1090,221],{"class":220},[206,1092,496],{"class":212},[206,1094,1086],{"class":216},[206,1096,226],{"class":216},[206,1098,230],{"class":229},[206,1100,1101,1103,1105,1107,1110,1113],{"class":208,"line":157},[206,1102,496],{"class":212},[206,1104,1086],{"class":216},[206,1106,249],{"class":216},[206,1108,1109],{"class":216}," docker.io",[206,1111,1112],{"class":216}," docker-compose-v2",[206,1114,230],{"class":229},[10,1116,1117],{},[14,1118,1119],{},"Catatan: Tutorial ini berasumsi Anda menggunakan distribusi berbasis Linux seperti Debian atau Ubuntu 22.04.",[38,1121,1123],{"id":1122},"langkah-2-membuat-direktori-dan-secret-key","Langkah 2: Membuat Direktori dan Secret Key",[10,1125,1126,1127,1130],{},"Anda perlu membuat direktori kerja khusus dan menghasilkan kunci rahasia (",[14,1128,1129],{},"secret keys",") menggunakan OpenSSL untuk mengamankan sesi aplikasi Outline Anda.",[197,1132,1134],{"className":199,"code":1133,"language":201,"meta":156,"style":156},"mkdir -p \u002Fopt\u002Foutline\ncd \u002Fopt\u002Foutline\nopenssl rand -hex 32\n",[203,1135,1136,1147,1154],{"__ignoreMap":156},[206,1137,1138,1141,1144],{"class":208,"line":209},[206,1139,1140],{"class":212},"mkdir",[206,1142,1143],{"class":229}," -p",[206,1145,1146],{"class":216}," \u002Fopt\u002Foutline\n",[206,1148,1149,1152],{"class":208,"line":157},[206,1150,1151],{"class":229},"cd",[206,1153,1146],{"class":216},[206,1155,1156,1159,1162,1165],{"class":208,"line":263},[206,1157,1158],{"class":212},"openssl",[206,1160,1161],{"class":216}," rand",[206,1163,1164],{"class":229}," -hex",[206,1166,1167],{"class":229}," 32\n",[66,1169],{},[38,1171,1173],{"id":1172},"langkah-3-konfigurasi-environment-file-env","Langkah 3: Konfigurasi Environment (File .env)",[10,1175,1176,1177,652,1180,1183],{},"Buat ",[14,1178,1179],{},"file",[203,1181,1182],{},".env"," yang akan menyimpan konfigurasi krusial seperti pengaturan URL, kredensial database PostgreSQL, Redis, penyimpanan S3\u002FMinio, dan integrasi autentikasi OIDC (seperti Slack atau Google).",[197,1185,1187],{"className":199,"code":1186,"language":201,"meta":156,"style":156},"nano .env\n# Masukkan parameter SECRET_KEY dan UTILS_SECRET dari output OpenSSL sebelumnya\n",[203,1188,1189,1197],{"__ignoreMap":156},[206,1190,1191,1194],{"class":208,"line":209},[206,1192,1193],{"class":212},"nano",[206,1195,1196],{"class":216}," .env\n",[206,1198,1199],{"class":208,"line":157},[206,1200,1201],{"class":259},"# Masukkan parameter SECRET_KEY dan UTILS_SECRET dari output OpenSSL sebelumnya\n",[10,1203,1204],{},[14,1205,1206],{},"Catatan: Outline merupakan aplikasi cloud-native yang mensyaratkan autentikasi eksternal (SSO\u002FOIDC) dan tidak memiliki sistem login lokal bawaan.",[38,1208,1210],{"id":1209},"langkah-4-membuat-konfigurasi-docker-compose","Langkah 4: Membuat Konfigurasi Docker Compose",[10,1212,1213,1214,652,1216,1219],{},"Susun layanan Outline, PostgreSQL, dan Redis ke dalam satu ",[14,1215,1179],{},[203,1217,1218],{},"docker-compose.yml"," agar semua komponen dapat dikelola dan terhubung dalam satu jaringan yang sama.",[197,1221,1223],{"className":199,"code":1222,"language":201,"meta":156,"style":156},"nano docker-compose.yml\n# Definisikan image docker.getoutline.com\u002Foutlinewiki\u002Foutline, database postgres, dan redis di sini\n",[203,1224,1225,1232],{"__ignoreMap":156},[206,1226,1227,1229],{"class":208,"line":209},[206,1228,1193],{"class":212},[206,1230,1231],{"class":216}," docker-compose.yml\n",[206,1233,1234],{"class":208,"line":157},[206,1235,1236],{"class":259},"# Definisikan image docker.getoutline.com\u002Foutlinewiki\u002Foutline, database postgres, dan redis di sini\n",[38,1238,1240],{"id":1239},"langkah-5-menyesuaikan-izin-akses-direktori","Langkah 5: Menyesuaikan Izin Akses Direktori",[10,1242,1243,1244,1247,1248,1251,1252,1254,1255,1258],{},"Karena Outline menggunakan ",[14,1245,1246],{},"user"," khusus (umumnya ",[203,1249,1250],{},"nodejs",") di dalam ",[14,1253,1064],{},", Anda harus memberikan izin kepemilikan pada direktori instalasi agar aplikasi tidak mengalami kendala ",[14,1256,1257],{},"error 502"," atau gagal mengunggah berkas.",[197,1260,1262],{"className":199,"code":1261,"language":201,"meta":156,"style":156},"sudo chown -R 1001:1001 \u002Fopt\u002Foutline\n",[203,1263,1264],{"__ignoreMap":156},[206,1265,1266,1268,1271,1274,1277],{"class":208,"line":209},[206,1267,496],{"class":212},[206,1269,1270],{"class":216}," chown",[206,1272,1273],{"class":229}," -R",[206,1275,1276],{"class":216}," 1001:1001",[206,1278,1146],{"class":216},[38,1280,1282],{"id":1281},"langkah-6-menjalankan-kontainer-docker","Langkah 6: Menjalankan Kontainer Docker",[10,1284,1285,1286,1289],{},"Setelah semua persiapan environment dan Docker Compose selesai, Anda dapat menjalankan seluruh ",[14,1287,1288],{},"stack"," aplikasi Outline di latar belakang.",[197,1291,1293],{"className":199,"code":1292,"language":201,"meta":156,"style":156},"docker-compose up -d\n",[203,1294,1295],{"__ignoreMap":156},[206,1296,1297,1300,1303],{"class":208,"line":209},[206,1298,1299],{"class":212},"docker-compose",[206,1301,1302],{"class":216}," up",[206,1304,1305],{"class":229}," -d\n",[10,1307,1308],{},[14,1309,1310],{},"Catatan: Pastikan Anda juga telah mengatur reverse proxy (seperti Nginx atau Caddy) untuk menangani sertifikat SSL\u002FHTTPS ke port Outline Anda.",[38,1312,1314],{"id":1313},"langkah-7-uji-coba-dan-verifikasi-instalasi","Langkah 7: Uji Coba dan Verifikasi Instalasi",[10,1316,1317,1318,1321,1322,1325],{},"Buka peramban web dan akses nama domain yang telah Anda konfigurasi (misalnya ",[203,1319,1320],{},"https:\u002F\u002Fdocs.domainanda.com","). Cobalah masuk (",[14,1323,1324],{},"login",") menggunakan metode autentikasi OIDC pilihan Anda (seperti Slack), lalu buat sebuah dokumen baru dan unggah gambar untuk memastikan koneksi ke penyimpanan objek S3\u002Flokal berfungsi dengan sempurna.",[10,1327,1328],{},"Selamat! Anda telah berhasil membangun dan mengonfigurasi server Outline Wiki secara mandiri untuk menunjang produktivitas dan kolaborasi tim Anda.",[680,1330,1331],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":156,"searchDepth":157,"depth":157,"links":1333},[1334,1335,1336,1337,1338,1339,1340],{"id":1070,"depth":157,"text":1071},{"id":1122,"depth":157,"text":1123},{"id":1172,"depth":157,"text":1173},{"id":1209,"depth":157,"text":1210},{"id":1239,"depth":157,"text":1240},{"id":1281,"depth":157,"text":1282},{"id":1313,"depth":157,"text":1314},"2026-07-15","Tutorial langkah demi langkah membangun sistem dokumentasi tim menggunakan Outline Wiki dan Docker.","https:\u002F\u002Fpub-47f3f6b6df2a4b068efd8b7310709fdd.r2.dev\u002Fimages\u002Fimg_a28d343a57ee.jpg",{},"\u002Fid\u002Ftutorials\u002Finstall-outline-wiki-docker",{"title":1046,"description":1342},"id\u002Ftutorials\u002Finstall-outline-wiki-docker","l1vHmvX6nPAf9OvtpekKB5Q1gGb8a2CC5mmKqoRjpJ4",[1350],{"id":4,"title":5,"body":1351,"category":163,"date":164,"description":165,"extension":166,"image":167,"meta":1447,"navigation":169,"path":170,"seo":1448,"stem":172,"__hash__":173},{"type":7,"value":1352,"toc":1441},[1353,1359,1365,1367,1369,1373,1383,1385,1387,1391,1401,1403,1409,1419,1421,1427,1439],[10,1354,12,1355,17,1357,21],{},[14,1356,16],{},[14,1358,20],{},[10,1360,24,1361,29,1363,33],{},[26,1362,28],{},[14,1364,32],{},[10,1366,36],{},[38,1368,41],{"id":40},[10,1370,44,1371,48],{},[26,1372,47],{},[50,1374,1375,1379],{},[53,1376,1377,58],{},[26,1378,57],{},[53,1380,1381,64],{},[26,1382,63],{},[66,1384],{},[38,1386,71],{"id":70},[10,1388,74,1389,78],{},[26,1390,77],{},[50,1392,1393,1397],{},[53,1394,1395,85],{},[26,1396,57],{},[53,1398,1399,91],{},[26,1400,90],{},[38,1402,95],{"id":94},[10,1404,98,1405,102,1407,106],{},[26,1406,101],{},[14,1408,105],{},[50,1410,1411,1415],{},[53,1412,1413,113],{},[26,1414,57],{},[53,1416,1417,119],{},[26,1418,118],{},[38,1420,123],{"id":122},[10,1422,126,1423,130,1425,134],{},[14,1424,129],{},[26,1426,133],{},[50,1428,1429,1435],{},[53,1430,1431,141,1433,145],{},[26,1432,57],{},[14,1434,144],{},[53,1436,1437,151],{},[26,1438,150],{},[10,1440,154],{},{"title":156,"searchDepth":157,"depth":157,"links":1442},[1443,1444,1445,1446],{"id":40,"depth":157,"text":41},{"id":70,"depth":157,"text":71},{"id":94,"depth":157,"text":95},{"id":122,"depth":157,"text":123},{},{"title":5,"description":165},1784285138390]