[{"data":1,"prerenderedAt":1565},["ShallowReactive",2],{"\u002Fblog\u002Fid\u002Ftutorials\u002Fposthog-implementation-guide":3,"related-\u002Fblog\u002Fid\u002Ftutorials\u002Fposthog-implementation-guide":248,"alternates-\u002Fblog\u002Fid\u002Ftutorials\u002Fposthog-implementation-guide":1408},{"id":4,"title":5,"body":6,"category":238,"date":239,"description":240,"extension":241,"image":242,"meta":243,"navigation":106,"path":244,"seo":245,"stem":246,"__hash__":247},"blog\u002Fid\u002Ftutorials\u002Fposthog-implementation-guide.md","Panduan Lengkap Cara Mengintegrasikan PostHog ke Aplikasi Web Anda",{"type":7,"value":8,"toc":231},"minimark",[9,13,16,19,24,27,53,63,67,78,138,143,146,150,153,182,186,189,205,209,212,224,227],[10,11,12],"p",{},"PostHog adalah platform analitik produk sumber terbuka yang sangat tangguh, menyediakan fitur komprehensif seperti pelacakan metrik, perekaman sesi, dan bendera fitur dalam satu tempat. Alat ini memberikan kendali penuh atas data Anda dan membantu Anda memahami bagaimana audiens berinteraksi dengan layanan web Anda.",[10,14,15],{},"Melalui panduan ini, Anda akan mempelajari cara mudah mengimplementasikan PostHog ke dalam aplikasi Anda. Pada akhir tutorial, Anda akan berhasil menangkap aktivitas audiens dan mengirimkan data analitik tersebut ke dasbor PostHog Anda secara aktual.",[17,18],"hr",{},[20,21,23],"h2",{"id":22},"langkah-1-menginstal-pustaka-posthog","Langkah 1: Menginstal Pustaka PostHog",[10,25,26],{},"Gunakan manajer paket NPM pada terminal untuk menginstal pustaka JavaScript PostHog ke dalam direktori proyek web Anda. Perintah ini akan mengunduh semua modul dependensi klien yang dibutuhkan oleh aplikasi untuk melacak kejadian.",[28,29,34],"pre",{"className":30,"code":31,"language":32,"meta":33,"style":33},"language-bash shiki shiki-themes github-light github-dark","npm install posthog-js\n","bash","",[35,36,37],"code",{"__ignoreMap":33},[38,39,42,46,50],"span",{"class":40,"line":41},"line",1,[38,43,45],{"class":44},"sScJk","npm",[38,47,49],{"class":48},"sZZnC"," install",[38,51,52],{"class":48}," posthog-js\n",[10,54,55],{},[56,57,58,59,62],"em",{},"Catatan: Anda juga dapat menggunakan alternatif PostHog wizard (",[35,60,61],{},"npx @posthog\u002Fwizard",") jika ingin konfigurasi yang serba otomatis untuk framework modern.",[20,64,66],{"id":65},"langkah-2-menginisialisasi-posthog-di-aplikasi","Langkah 2: Menginisialisasi PostHog di Aplikasi",[10,68,69,70,73,74,77],{},"Tambahkan skrip inisialisasi ini pada file utama aplikasi Anda (seperti ",[35,71,72],{},"index.js"," atau ",[35,75,76],{},"app.js",") agar modul dapat terhubung ke server analitik. Konfigurasi dasar ini membutuhkan kunci API proyek dan alamat host.",[28,79,81],{"className":30,"code":80,"language":32,"meta":33,"style":33},"import posthog from 'posthog-js';\n\nposthog.init('API_KEY_PROYEK_ANDA', {\n    api_host: 'https:\u002F\u002Fapp.posthog.com'\n});\n",[35,82,83,101,108,123,132],{"__ignoreMap":33},[38,84,85,88,91,94,97],{"class":40,"line":41},[38,86,87],{"class":44},"import",[38,89,90],{"class":48}," posthog",[38,92,93],{"class":48}," from",[38,95,96],{"class":48}," 'posthog-js'",[38,98,100],{"class":99},"sVt8B",";\n",[38,102,104],{"class":40,"line":103},2,[38,105,107],{"emptyLinePlaceholder":106},true,"\n",[38,109,111,114,117,120],{"class":40,"line":110},3,[38,112,113],{"class":44},"posthog.init(",[38,115,116],{"class":44},"'API_KEY_PROYEK_ANDA'",[38,118,119],{"class":44},",",[38,121,122],{"class":48}," {\n",[38,124,126,129],{"class":40,"line":125},4,[38,127,128],{"class":44},"    api_host:",[38,130,131],{"class":48}," 'https:\u002F\u002Fapp.posthog.com'\n",[38,133,135],{"class":40,"line":134},5,[38,136,137],{"class":99},"});\n",[10,139,140],{},[56,141,142],{},"Catatan: Pastikan Anda menggunakan 'Project token' yang ada pada halaman pengaturan PostHog Anda untuk menggantikan teks API_KEY_PROYEK_ANDA.",[144,145],"inject-ad",{},[20,147,149],{"id":148},"langkah-3-melacak-kejadian-khusus-custom-events","Langkah 3: Melacak Kejadian Khusus (Custom Events)",[10,151,152],{},"Panggil fungsi penangkap kejadian kustom ini untuk merekam aktivitas spesifik, seperti saat pengguna menekan tombol penting. Anda juga bisa menyertakan properti khusus berupa kamus data tambahan agar informasi analitik tersebut lebih mendetail.",[28,154,156],{"className":30,"code":155,"language":32,"meta":33,"style":33},"posthog.capture('tutorial_click', {\n    tutorial_type: 'tracking_tutorial'\n});\n",[35,157,158,170,178],{"__ignoreMap":33},[38,159,160,163,166,168],{"class":40,"line":41},[38,161,162],{"class":44},"posthog.capture(",[38,164,165],{"class":44},"'tutorial_click'",[38,167,119],{"class":44},[38,169,122],{"class":48},[38,171,172,175],{"class":40,"line":103},[38,173,174],{"class":44},"    tutorial_type:",[38,176,177],{"class":48}," 'tracking_tutorial'\n",[38,179,180],{"class":40,"line":110},[38,181,137],{"class":99},[20,183,185],{"id":184},"langkah-4-mengidentifikasi-pengguna-unik","Langkah 4: Mengidentifikasi Pengguna Unik",[10,187,188],{},"Jalankan fungsi identifikasi ini untuk mengubah status anonim menjadi identitas pengguna yang spesifik menggunakan surel mereka. Dengan konfigurasi ini, setiap aksi lanjutan yang dikerjakan oleh audiens akan secara presisi dikaitkan dengan profil tersebut.",[28,190,192],{"className":30,"code":191,"language":32,"meta":33,"style":33},"posthog.identify('email_pengguna@domain.com');\n",[35,193,194],{"__ignoreMap":33},[38,195,196,199,202],{"class":40,"line":41},[38,197,198],{"class":44},"posthog.identify(",[38,200,201],{"class":44},"'email_pengguna@domain.com'",[38,203,204],{"class":99},");\n",[20,206,208],{"id":207},"langkah-5-menguji-dan-memverifikasi-instalasi","Langkah 5: Menguji dan Memverifikasi Instalasi",[10,210,211],{},"Jalankan server pengembangan lokal Anda dan cobalah berinteraksi dengan elemen web untuk memastikan pengiriman jaringan berjalan normal. Setelah berinteraksi dengan situs, buka dasbor analitik PostHog Anda dan periksa rekam jejak peristiwa untuk memverifikasi bahwa aktivitas Anda berhasil ditangkap oleh sistem.",[28,213,215],{"className":30,"code":214,"language":32,"meta":33,"style":33},"npm start\n",[35,216,217],{"__ignoreMap":33},[38,218,219,221],{"class":40,"line":41},[38,220,45],{"class":44},[38,222,223],{"class":48}," start\n",[10,225,226],{},"Selamat, Anda kini telah berhasil menyelesaikan proses instalasi PostHog dan aplikasi web Anda sudah siap secara teknis untuk melacak serta menganalisis pola perilaku audiens!",[228,229,230],"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 .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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":33,"searchDepth":103,"depth":103,"links":232},[233,234,235,236,237],{"id":22,"depth":103,"text":23},{"id":65,"depth":103,"text":66},{"id":148,"depth":103,"text":149},{"id":184,"depth":103,"text":185},{"id":207,"depth":103,"text":208},"tutorials","2026-07-15","Tutorial praktis langkah demi langkah untuk menginstal dan mengonfigurasi analitik PostHog di aplikasi web Anda.","md","https:\u002F\u002Fpub-47f3f6b6df2a4b068efd8b7310709fdd.r2.dev\u002Fimages\u002Fimg_d27e589b6258.webp",{},"\u002Fid\u002Ftutorials\u002Fposthog-implementation-guide",{"title":5,"description":240},"id\u002Ftutorials\u002Fposthog-implementation-guide","z4l5W7YGW1U9ge3a4RZmwhUxxdfhOCUjTYBZr3WiPM0",[249,761,1103],{"id":250,"title":251,"body":252,"category":238,"date":753,"description":754,"extension":241,"image":755,"meta":756,"navigation":106,"path":757,"seo":758,"stem":759,"__hash__":760},"blog\u002Fid\u002Ftutorials\u002Finstalasi-thingsboard-professional-edition-di-proxmox-lxc.md","Panduan Lengkap Instalasi ThingsBoard Professional Edition di Proxmox LXC",{"type":7,"value":253,"toc":743},[254,257,260,262,266,269,294,298,301,331,333,337,344,381,385,388,413,418,422,425,529,533,540,639,643,646,664,668,671,696,703,732,737,740],[10,255,256],{},"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,258,259],{},"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.",[17,261],{},[20,263,265],{"id":264},"langkah-1-persiapan-container-dan-update-sistem","Langkah 1: Persiapan Container dan Update Sistem",[10,267,268],{},"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.",[28,270,272],{"className":30,"code":271,"language":32,"meta":33,"style":33},"apt update && apt upgrade -y\n",[35,273,274],{"__ignoreMap":33},[38,275,276,279,282,285,287,290],{"class":40,"line":41},[38,277,278],{"class":44},"apt",[38,280,281],{"class":48}," update",[38,283,284],{"class":99}," && ",[38,286,278],{"class":44},[38,288,289],{"class":48}," upgrade",[38,291,293],{"class":292},"sj4cs"," -y\n",[20,295,297],{"id":296},"langkah-2-instalasi-java-openjdk-21","Langkah 2: Instalasi Java OpenJDK 21",[10,299,300],{},"ThingsBoard PE versi terbaru memerlukan Java 17 atau lebih tinggi, namun sangat direkomendasikan untuk menggunakan OpenJDK 21 demi stabilitas dan performa optimal.",[28,302,304],{"className":30,"code":303,"language":32,"meta":33,"style":33},"apt install openjdk-21-jdk -y\n# Verifikasi versi Java\njava -version\n",[35,305,306,317,323],{"__ignoreMap":33},[38,307,308,310,312,315],{"class":40,"line":41},[38,309,278],{"class":44},[38,311,49],{"class":48},[38,313,314],{"class":48}," openjdk-21-jdk",[38,316,293],{"class":292},[38,318,319],{"class":40,"line":103},[38,320,322],{"class":321},"sJ8bj","# Verifikasi versi Java\n",[38,324,325,328],{"class":40,"line":110},[38,326,327],{"class":44},"java",[38,329,330],{"class":292}," -version\n",[144,332],{},[20,334,336],{"id":335},"langkah-3-instalasi-paket-thingsboard-pe","Langkah 3: Instalasi Paket ThingsBoard PE",[10,338,339,340,343],{},"Unduh paket Debian ThingsBoard PE dan instal menggunakan manajer paket ",[35,341,342],{},"dpkg",". Pastikan Anda juga menginstal pustaka font yang diperlukan oleh komponen pelaporan.",[28,345,347],{"className":30,"code":346,"language":32,"meta":33,"style":33},"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",[35,348,349,363,371],{"__ignoreMap":33},[38,350,351,353,355,358,361],{"class":40,"line":41},[38,352,278],{"class":44},[38,354,49],{"class":48},[38,356,357],{"class":48}," fontconfig",[38,359,360],{"class":48}," libfreetype6",[38,362,293],{"class":292},[38,364,365,368],{"class":40,"line":103},[38,366,367],{"class":44},"wget",[38,369,370],{"class":48}," https:\u002F\u002Fdist.thingsboard.io\u002Fthingsboard-4.3.1.3PE.deb\n",[38,372,373,375,378],{"class":40,"line":110},[38,374,342],{"class":44},[38,376,377],{"class":292}," -i",[38,379,380],{"class":48}," thingsboard-4.3.1.3PE.deb\n",[20,382,384],{"id":383},"langkah-4-konfigurasi-kunci-lisensi","Langkah 4: Konfigurasi Kunci Lisensi",[10,386,387],{},"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.",[28,389,391],{"className":30,"code":390,"language":32,"meta":33,"style":33},"# Ganti YOUR_LICENSE_SECRET dengan kunci lisensi Anda\necho \"TB_LICENSE_SECRET=YOUR_LICENSE_SECRET\" >> \u002Fetc\u002Fthingsboard\u002Fconf\u002Fthingsboard.conf\n",[35,392,393,398],{"__ignoreMap":33},[38,394,395],{"class":40,"line":41},[38,396,397],{"class":321},"# Ganti YOUR_LICENSE_SECRET dengan kunci lisensi Anda\n",[38,399,400,403,406,410],{"class":40,"line":103},[38,401,402],{"class":292},"echo",[38,404,405],{"class":48}," \"TB_LICENSE_SECRET=YOUR_LICENSE_SECRET\"",[38,407,409],{"class":408},"szBVR"," >>",[38,411,412],{"class":48}," \u002Fetc\u002Fthingsboard\u002Fconf\u002Fthingsboard.conf\n",[10,414,415],{},[56,416,417],{},"Catatan: Parameter lisensi ini harus tepat agar proses aktivasi instance saat startup tidak mengalami kegagalan.",[20,419,421],{"id":420},"langkah-5-instalasi-postgresql-dan-penambahan-repositori","Langkah 5: Instalasi PostgreSQL dan Penambahan Repositori",[10,423,424],{},"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.",[28,426,428],{"className":30,"code":427,"language":32,"meta":33,"style":33},"# 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",[35,429,430,435,449,477,499,506,511,517],{"__ignoreMap":33},[38,431,432],{"class":40,"line":41},[38,433,434],{"class":321},"# Menambah repositori resmi PostgreSQL\n",[38,436,437,439,441,444,447],{"class":40,"line":103},[38,438,278],{"class":44},[38,440,49],{"class":48},[38,442,443],{"class":48}," wget",[38,445,446],{"class":48}," gnupg2",[38,448,293],{"class":292},[38,450,451,453,456,459,462,465,468,471,474],{"class":40,"line":110},[38,452,367],{"class":44},[38,454,455],{"class":292}," --quiet",[38,457,458],{"class":292}," -O",[38,460,461],{"class":48}," -",[38,463,464],{"class":48}," https:\u002F\u002Fwww.postgresql.org\u002Fmedia\u002Fkeys\u002FACCC4CF8.asc",[38,466,467],{"class":408}," |",[38,469,470],{"class":44}," apt-key",[38,472,473],{"class":48}," add",[38,475,476],{"class":48}," -\n",[38,478,479,481,484,487,490,493,496],{"class":40,"line":125},[38,480,402],{"class":292},[38,482,483],{"class":48}," \"deb http:\u002F\u002Fapt.postgresql.org\u002Fpub\u002Frepos\u002Fapt $(",[38,485,486],{"class":44},"lsb_release",[38,488,489],{"class":292}," -cs",[38,491,492],{"class":48},")-pgdg main\"",[38,494,495],{"class":408}," >",[38,497,498],{"class":48}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fpgdg.list\n",[38,500,501,503],{"class":40,"line":134},[38,502,278],{"class":44},[38,504,505],{"class":48}," update\n",[38,507,509],{"class":40,"line":508},6,[38,510,107],{"emptyLinePlaceholder":106},[38,512,514],{"class":40,"line":513},7,[38,515,516],{"class":321},"# Instalasi PostgreSQL\n",[38,518,520,522,524,527],{"class":40,"line":519},8,[38,521,278],{"class":44},[38,523,49],{"class":48},[38,525,526],{"class":48}," postgresql-16",[38,528,293],{"class":292},[20,530,532],{"id":531},"langkah-6-konfigurasi-database-dan-thingsboardconf","Langkah 6: Konfigurasi Database dan thingsboard.conf",[10,534,535,536,539],{},"Buat database untuk ThingsBoard dan atur kredensialnya. Sangat penting untuk mendaftarkan detail koneksi database ke dalam file ",[35,537,538],{},"thingsboard.conf"," sebelum menjalankan skrip instalasi utama.",[28,541,543],{"className":30,"code":542,"language":32,"meta":33,"style":33},"# 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",[35,544,545,550,570,585,589,594,605,616,627],{"__ignoreMap":33},[38,546,547],{"class":40,"line":41},[38,548,549],{"class":321},"# Masuk ke PostgreSQL dan buat database\n",[38,551,552,555,558,561,564,567],{"class":40,"line":103},[38,553,554],{"class":44},"sudo",[38,556,557],{"class":292}," -u",[38,559,560],{"class":48}," postgres",[38,562,563],{"class":48}," psql",[38,565,566],{"class":292}," -c",[38,568,569],{"class":48}," \"CREATE DATABASE thingsboard;\"\n",[38,571,572,574,576,578,580,582],{"class":40,"line":110},[38,573,554],{"class":44},[38,575,557],{"class":292},[38,577,560],{"class":48},[38,579,563],{"class":48},[38,581,566],{"class":292},[38,583,584],{"class":48}," \"ALTER USER postgres WITH PASSWORD 'password_anda';\"\n",[38,586,587],{"class":40,"line":125},[38,588,107],{"emptyLinePlaceholder":106},[38,590,591],{"class":40,"line":134},[38,592,593],{"class":321},"# Tambahkan konfigurasi ke file thingsboard.conf\n",[38,595,596,598,601,603],{"class":40,"line":508},[38,597,402],{"class":292},[38,599,600],{"class":48}," \"export DATABASE_TS_TYPE=sql\"",[38,602,409],{"class":408},[38,604,412],{"class":48},[38,606,607,609,612,614],{"class":40,"line":513},[38,608,402],{"class":292},[38,610,611],{"class":48}," \"export SPRING_DATASOURCE_URL=jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fthingsboard\"",[38,613,409],{"class":408},[38,615,412],{"class":48},[38,617,618,620,623,625],{"class":40,"line":519},[38,619,402],{"class":292},[38,621,622],{"class":48}," \"export SPRING_DATASOURCE_USERNAME=postgres\"",[38,624,409],{"class":408},[38,626,412],{"class":48},[38,628,630,632,635,637],{"class":40,"line":629},9,[38,631,402],{"class":292},[38,633,634],{"class":48}," \"export SPRING_DATASOURCE_PASSWORD=password_anda\"",[38,636,409],{"class":408},[38,638,412],{"class":48},[20,640,642],{"id":641},"langkah-7-eksekusi-skrip-instalasi","Langkah 7: Eksekusi Skrip Instalasi",[10,644,645],{},"Setelah semua konfigurasi siap, jalankan skrip inisialisasi untuk membuat skema database. Anda dapat memilih untuk memuat data demo guna memudahkan pengujian awal platform.",[28,647,649],{"className":30,"code":648,"language":32,"meta":33,"style":33},"# Menjalankan instalasi dengan data demo\n\u002Fusr\u002Fshare\u002Fthingsboard\u002Fbin\u002Finstall.sh --loadDemo\n",[35,650,651,656],{"__ignoreMap":33},[38,652,653],{"class":40,"line":41},[38,654,655],{"class":321},"# Menjalankan instalasi dengan data demo\n",[38,657,658,661],{"class":40,"line":103},[38,659,660],{"class":44},"\u002Fusr\u002Fshare\u002Fthingsboard\u002Fbin\u002Finstall.sh",[38,662,663],{"class":292}," --loadDemo\n",[20,665,667],{"id":666},"langkah-8-menjalankan-layanan-dan-verifikasi","Langkah 8: Menjalankan Layanan dan Verifikasi",[10,669,670],{},"Langkah terakhir adalah menjalankan layanan ThingsBoard. Tunggu sekitar 90 detik hingga Web UI siap sepenuhnya sebelum mencoba mengaksesnya melalui browser.",[28,672,674],{"className":30,"code":673,"language":32,"meta":33,"style":33},"systemctl enable thingsboard\nsystemctl start thingsboard\n",[35,675,676,687],{"__ignoreMap":33},[38,677,678,681,684],{"class":40,"line":41},[38,679,680],{"class":44},"systemctl",[38,682,683],{"class":48}," enable",[38,685,686],{"class":48}," thingsboard\n",[38,688,689,691,694],{"class":40,"line":103},[38,690,680],{"class":44},[38,692,693],{"class":48}," start",[38,695,686],{"class":48},[10,697,698,699,702],{},"Untuk memverifikasi, akses ",[35,700,701],{},"http:\u002F\u002F[IP-CONTAINER-ANDA]:8080",". Gunakan kredensial default berikut untuk login awal:",[704,705,706,721],"ul",{},[707,708,709,713,714,717,718],"li",{},[710,711,712],"strong",{},"System Administrator:"," ",[35,715,716],{},"sysadmin@thingsboard.org"," \u002F ",[35,719,720],{},"sysadmin",[707,722,723,713,726,717,729],{},[710,724,725],{},"Tenant Administrator:",[35,727,728],{},"tenant@thingsboard.org",[35,730,731],{},"tenant",[10,733,734],{},[56,735,736],{},"Catatan: Segera ganti kata sandi default Anda melalui profil akun setelah berhasil login demi keamanan.",[10,738,739],{},"Selamat! Anda kini telah memiliki instance ThingsBoard Professional Edition yang berjalan dengan konfigurasi yang tepat di lingkungan Proxmox LXC Anda.",[228,741,742],{},"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":33,"searchDepth":103,"depth":103,"links":744},[745,746,747,748,749,750,751,752],{"id":264,"depth":103,"text":265},{"id":296,"depth":103,"text":297},{"id":335,"depth":103,"text":336},{"id":383,"depth":103,"text":384},{"id":420,"depth":103,"text":421},{"id":531,"depth":103,"text":532},{"id":641,"depth":103,"text":642},{"id":666,"depth":103,"text":667},"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":251,"description":754},"id\u002Ftutorials\u002Finstalasi-thingsboard-professional-edition-di-proxmox-lxc","eAnpZ_fiwBRQ4UBNIdkS7QCEX7rTUqQPWdE4GuB-Yr4",{"id":762,"title":763,"body":764,"category":238,"date":1095,"description":1096,"extension":241,"image":1097,"meta":1098,"navigation":106,"path":1099,"seo":1100,"stem":1101,"__hash__":1102},"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":765,"toc":1087},[766,773,780,782,786,789,814,818,821,837,839,843,850,865,876,988,993,997,1000,1027,1031,1042,1065,1069,1072,1081,1084],[10,767,768,769,772],{},"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 ",[710,770,771],{},"reverse proxy"," untuk mendistribusikan beban kerja atau meneruskan permintaan ke server aplikasi lain menggunakan protokol seperti FastCGI.",[10,774,775,776,779],{},"Dalam tutorial ini, Anda akan belajar cara mengintegrasikan Nginx dengan ",[710,777,778],{},"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.",[17,781],{},[20,783,785],{"id":784},"langkah-1-memperbarui-repositori-dan-menginstal-nginx","Langkah 1: Memperbarui Repositori dan Menginstal Nginx",[10,787,788],{},"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.",[28,790,792],{"className":30,"code":791,"language":32,"meta":33,"style":33},"sudo apt-get update\nsudo apt-get install nginx\n",[35,793,794,803],{"__ignoreMap":33},[38,795,796,798,801],{"class":40,"line":41},[38,797,554],{"class":44},[38,799,800],{"class":48}," apt-get",[38,802,505],{"class":48},[38,804,805,807,809,811],{"class":40,"line":103},[38,806,554],{"class":44},[38,808,800],{"class":48},[38,810,49],{"class":48},[38,812,813],{"class":48}," nginx\n",[20,815,817],{"id":816},"langkah-2-menginstal-php-fpm","Langkah 2: Menginstal PHP-FPM",[10,819,820],{},"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.",[28,822,824],{"className":30,"code":823,"language":32,"meta":33,"style":33},"sudo apt-get install php8.1-fpm\n",[35,825,826],{"__ignoreMap":33},[38,827,828,830,832,834],{"class":40,"line":41},[38,829,554],{"class":44},[38,831,800],{"class":48},[38,833,49],{"class":48},[38,835,836],{"class":48}," php8.1-fpm\n",[144,838],{},[20,840,842],{"id":841},"langkah-3-mengonfigurasi-server-block-nginx","Langkah 3: Mengonfigurasi Server Block Nginx",[10,844,845,846,849],{},"Anda perlu mengedit file konfigurasi default Nginx agar server mengenali file indeks PHP dan meneruskan permintaan skrip ",[35,847,848],{},".php"," ke socket PHP-FPM. Gunakan editor teks seperti Nano untuk membuka file konfigurasi tersebut.",[28,851,853],{"className":30,"code":852,"language":32,"meta":33,"style":33},"sudo nano \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdefault\n",[35,854,855],{"__ignoreMap":33},[38,856,857,859,862],{"class":40,"line":41},[38,858,554],{"class":44},[38,860,861],{"class":48}," nano",[38,863,864],{"class":48}," \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdefault\n",[10,866,867,868,871,872,875],{},"Di dalam blok ",[35,869,870],{},"server",", pastikan Anda menambahkan ",[35,873,874],{},"index.php"," pada baris indeks dan mengatur lokasi FastCGI untuk memproses file PHP:",[28,877,881],{"className":878,"code":879,"language":880,"meta":33,"style":33},"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",[35,882,883,888,893,898,903,907,912,916,921,926,932,937,943,949,955,960,965,971,977,982],{"__ignoreMap":33},[38,884,885],{"class":40,"line":41},[38,886,887],{},"server {\n",[38,889,890],{"class":40,"line":103},[38,891,892],{},"    listen 80;\n",[38,894,895],{"class":40,"line":110},[38,896,897],{},"    root \u002Fvar\u002Fwww\u002Fhtml;\n",[38,899,900],{"class":40,"line":125},[38,901,902],{},"    index index.php index.html index.htm;\n",[38,904,905],{"class":40,"line":134},[38,906,107],{"emptyLinePlaceholder":106},[38,908,909],{"class":40,"line":508},[38,910,911],{},"    server_name localhost;\n",[38,913,914],{"class":40,"line":513},[38,915,107],{"emptyLinePlaceholder":106},[38,917,918],{"class":40,"line":519},[38,919,920],{},"    location \u002F {\n",[38,922,923],{"class":40,"line":629},[38,924,925],{},"        try_files $uri $uri\u002F =404;\n",[38,927,929],{"class":40,"line":928},10,[38,930,931],{},"    }\n",[38,933,935],{"class":40,"line":934},11,[38,936,107],{"emptyLinePlaceholder":106},[38,938,940],{"class":40,"line":939},12,[38,941,942],{},"    location ~ \\.php$ {\n",[38,944,946],{"class":40,"line":945},13,[38,947,948],{},"        include snippets\u002Ffastcgi-php.conf;\n",[38,950,952],{"class":40,"line":951},14,[38,953,954],{},"        fastcgi_pass unix:\u002Frun\u002Fphp\u002Fphp8.1-fpm.sock;\n",[38,956,958],{"class":40,"line":957},15,[38,959,931],{},[38,961,963],{"class":40,"line":962},16,[38,964,107],{"emptyLinePlaceholder":106},[38,966,968],{"class":40,"line":967},17,[38,969,970],{},"    location ~ \u002F\\.ht {\n",[38,972,974],{"class":40,"line":973},18,[38,975,976],{},"        deny all;\n",[38,978,980],{"class":40,"line":979},19,[38,981,931],{},[38,983,985],{"class":40,"line":984},20,[38,986,987],{},"}\n",[10,989,990],{},[56,991,992],{},"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.",[20,994,996],{"id":995},"langkah-4-memvalidasi-konfigurasi-dan-restart-nginx","Langkah 4: Memvalidasi Konfigurasi dan Restart Nginx",[10,998,999],{},"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.",[28,1001,1003],{"className":30,"code":1002,"language":32,"meta":33,"style":33},"sudo nginx -t\nsudo systemctl restart nginx\n",[35,1004,1005,1015],{"__ignoreMap":33},[38,1006,1007,1009,1012],{"class":40,"line":41},[38,1008,554],{"class":44},[38,1010,1011],{"class":48}," nginx",[38,1013,1014],{"class":292}," -t\n",[38,1016,1017,1019,1022,1025],{"class":40,"line":103},[38,1018,554],{"class":44},[38,1020,1021],{"class":48}," systemctl",[38,1023,1024],{"class":48}," restart",[38,1026,813],{"class":48},[20,1028,1030],{"id":1029},"langkah-5-membuat-file-uji-coba-php","Langkah 5: Membuat File Uji Coba PHP",[10,1032,1033,1034,1037,1038,1041],{},"Untuk memastikan Nginx dan PHP-FPM sudah terhubung dan berfungsi dengan benar, buatlah file PHP sederhana bernama ",[35,1035,1036],{},"info.php"," di direktori root web server. File ini akan menjalankan fungsi ",[35,1039,1040],{},"phpinfo()"," yang menampilkan informasi detail mengenai instalasi PHP Anda.",[28,1043,1045],{"className":30,"code":1044,"language":32,"meta":33,"style":33},"echo \"\u003C?php phpinfo(); ?>\" | sudo tee \u002Fvar\u002Fwww\u002Fhtml\u002Finfo.php\n",[35,1046,1047],{"__ignoreMap":33},[38,1048,1049,1051,1054,1056,1059,1062],{"class":40,"line":41},[38,1050,402],{"class":292},[38,1052,1053],{"class":48}," \"\u003C?php phpinfo(); ?>\"",[38,1055,467],{"class":408},[38,1057,1058],{"class":44}," sudo",[38,1060,1061],{"class":48}," tee",[38,1063,1064],{"class":48}," \u002Fvar\u002Fwww\u002Fhtml\u002Finfo.php\n",[20,1066,1068],{"id":1067},"langkah-6-menguji-hasil-konfigurasi-melalui-browser","Langkah 6: Menguji Hasil Konfigurasi melalui Browser",[10,1070,1071],{},"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.",[28,1073,1075],{"className":30,"code":1074,"language":32,"meta":33,"style":33},"http:\u002F\u002Flocalhost\u002Finfo.php\n",[35,1076,1077],{"__ignoreMap":33},[38,1078,1079],{"class":40,"line":41},[38,1080,1074],{"class":44},[10,1082,1083],{},"Selamat, Anda telah berhasil menyelesaikan konfigurasi Nginx sebagai reverse proxy dan mesin eksekusi PHP-FPM dengan sukses!",[228,1085,1086],{},"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":33,"searchDepth":103,"depth":103,"links":1088},[1089,1090,1091,1092,1093,1094],{"id":784,"depth":103,"text":785},{"id":816,"depth":103,"text":817},{"id":841,"depth":103,"text":842},{"id":995,"depth":103,"text":996},{"id":1029,"depth":103,"text":1030},{"id":1067,"depth":103,"text":1068},"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":763,"description":1096},"id\u002Ftutorials\u002Fkonfigurasi-nginx-sebagai-reverse-proxy-dan-eksekusi-php-fpm","Avu-PSIt5U5EBJTHlP_EXq-BZR_0ScnD0LrBzLWb9Iw",{"id":1104,"title":1105,"body":1106,"category":238,"date":239,"description":1401,"extension":241,"image":1402,"meta":1403,"navigation":106,"path":1404,"seo":1405,"stem":1406,"__hash__":1407},"blog\u002Fid\u002Ftutorials\u002Finstall-outline-wiki-docker.md","Panduan Lengkap Install Outline Wiki dengan Docker",{"type":7,"value":1107,"toc":1392},[1108,1119,1126,1128,1132,1135,1175,1180,1184,1191,1228,1230,1234,1244,1262,1267,1271,1280,1297,1301,1319,1339,1343,1350,1366,1371,1375,1386,1389],[10,1109,1110,1111,1114,1115,1118],{},"Outline adalah platform basis pengetahuan (",[56,1112,1113],{},"knowledgebase",") berbasis ",[56,1116,1117],{},"open-source"," 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,1120,1121,1122,1125],{},"Melalui tutorial ini, Anda akan belajar cara melakukan instalasi (self-hosting) Outline Wiki di server Anda sendiri menggunakan ",[56,1123,1124],{},"container"," Docker. Pada akhir panduan ini, Anda akan memiliki platform dokumentasi canggih yang berjalan mandiri dan aman, lengkap dengan konfigurasi penyimpanan dan basis datanya.",[17,1127],{},[20,1129,1131],{"id":1130},"langkah-1-persiapan-server-dan-instalasi-docker","Langkah 1: Persiapan Server dan Instalasi Docker",[10,1133,1134],{},"Langkah pertama adalah memperbarui sistem operasi server Anda dan memastikan bahwa Docker serta Docker Compose telah terinstal dengan benar.",[28,1136,1138],{"className":30,"code":1137,"language":32,"meta":33,"style":33},"sudo apt update && sudo apt upgrade -y\nsudo apt install docker.io docker-compose-v2 -y\n",[35,1139,1140,1159],{"__ignoreMap":33},[38,1141,1142,1144,1147,1149,1151,1153,1155,1157],{"class":40,"line":41},[38,1143,554],{"class":44},[38,1145,1146],{"class":48}," apt",[38,1148,281],{"class":48},[38,1150,284],{"class":99},[38,1152,554],{"class":44},[38,1154,1146],{"class":48},[38,1156,289],{"class":48},[38,1158,293],{"class":292},[38,1160,1161,1163,1165,1167,1170,1173],{"class":40,"line":103},[38,1162,554],{"class":44},[38,1164,1146],{"class":48},[38,1166,49],{"class":48},[38,1168,1169],{"class":48}," docker.io",[38,1171,1172],{"class":48}," docker-compose-v2",[38,1174,293],{"class":292},[10,1176,1177],{},[56,1178,1179],{},"Catatan: Tutorial ini berasumsi Anda menggunakan distribusi berbasis Linux seperti Debian atau Ubuntu 22.04.",[20,1181,1183],{"id":1182},"langkah-2-membuat-direktori-dan-secret-key","Langkah 2: Membuat Direktori dan Secret Key",[10,1185,1186,1187,1190],{},"Anda perlu membuat direktori kerja khusus dan menghasilkan kunci rahasia (",[56,1188,1189],{},"secret keys",") menggunakan OpenSSL untuk mengamankan sesi aplikasi Outline Anda.",[28,1192,1194],{"className":30,"code":1193,"language":32,"meta":33,"style":33},"mkdir -p \u002Fopt\u002Foutline\ncd \u002Fopt\u002Foutline\nopenssl rand -hex 32\n",[35,1195,1196,1207,1214],{"__ignoreMap":33},[38,1197,1198,1201,1204],{"class":40,"line":41},[38,1199,1200],{"class":44},"mkdir",[38,1202,1203],{"class":292}," -p",[38,1205,1206],{"class":48}," \u002Fopt\u002Foutline\n",[38,1208,1209,1212],{"class":40,"line":103},[38,1210,1211],{"class":292},"cd",[38,1213,1206],{"class":48},[38,1215,1216,1219,1222,1225],{"class":40,"line":110},[38,1217,1218],{"class":44},"openssl",[38,1220,1221],{"class":48}," rand",[38,1223,1224],{"class":292}," -hex",[38,1226,1227],{"class":292}," 32\n",[144,1229],{},[20,1231,1233],{"id":1232},"langkah-3-konfigurasi-environment-file-env","Langkah 3: Konfigurasi Environment (File .env)",[10,1235,1236,1237,713,1240,1243],{},"Buat ",[56,1238,1239],{},"file",[35,1241,1242],{},".env"," yang akan menyimpan konfigurasi krusial seperti pengaturan URL, kredensial database PostgreSQL, Redis, penyimpanan S3\u002FMinio, dan integrasi autentikasi OIDC (seperti Slack atau Google).",[28,1245,1247],{"className":30,"code":1246,"language":32,"meta":33,"style":33},"nano .env\n# Masukkan parameter SECRET_KEY dan UTILS_SECRET dari output OpenSSL sebelumnya\n",[35,1248,1249,1257],{"__ignoreMap":33},[38,1250,1251,1254],{"class":40,"line":41},[38,1252,1253],{"class":44},"nano",[38,1255,1256],{"class":48}," .env\n",[38,1258,1259],{"class":40,"line":103},[38,1260,1261],{"class":321},"# Masukkan parameter SECRET_KEY dan UTILS_SECRET dari output OpenSSL sebelumnya\n",[10,1263,1264],{},[56,1265,1266],{},"Catatan: Outline merupakan aplikasi cloud-native yang mensyaratkan autentikasi eksternal (SSO\u002FOIDC) dan tidak memiliki sistem login lokal bawaan.",[20,1268,1270],{"id":1269},"langkah-4-membuat-konfigurasi-docker-compose","Langkah 4: Membuat Konfigurasi Docker Compose",[10,1272,1273,1274,713,1276,1279],{},"Susun layanan Outline, PostgreSQL, dan Redis ke dalam satu ",[56,1275,1239],{},[35,1277,1278],{},"docker-compose.yml"," agar semua komponen dapat dikelola dan terhubung dalam satu jaringan yang sama.",[28,1281,1283],{"className":30,"code":1282,"language":32,"meta":33,"style":33},"nano docker-compose.yml\n# Definisikan image docker.getoutline.com\u002Foutlinewiki\u002Foutline, database postgres, dan redis di sini\n",[35,1284,1285,1292],{"__ignoreMap":33},[38,1286,1287,1289],{"class":40,"line":41},[38,1288,1253],{"class":44},[38,1290,1291],{"class":48}," docker-compose.yml\n",[38,1293,1294],{"class":40,"line":103},[38,1295,1296],{"class":321},"# Definisikan image docker.getoutline.com\u002Foutlinewiki\u002Foutline, database postgres, dan redis di sini\n",[20,1298,1300],{"id":1299},"langkah-5-menyesuaikan-izin-akses-direktori","Langkah 5: Menyesuaikan Izin Akses Direktori",[10,1302,1303,1304,1307,1308,1311,1312,1314,1315,1318],{},"Karena Outline menggunakan ",[56,1305,1306],{},"user"," khusus (umumnya ",[35,1309,1310],{},"nodejs",") di dalam ",[56,1313,1124],{},", Anda harus memberikan izin kepemilikan pada direktori instalasi agar aplikasi tidak mengalami kendala ",[56,1316,1317],{},"error 502"," atau gagal mengunggah berkas.",[28,1320,1322],{"className":30,"code":1321,"language":32,"meta":33,"style":33},"sudo chown -R 1001:1001 \u002Fopt\u002Foutline\n",[35,1323,1324],{"__ignoreMap":33},[38,1325,1326,1328,1331,1334,1337],{"class":40,"line":41},[38,1327,554],{"class":44},[38,1329,1330],{"class":48}," chown",[38,1332,1333],{"class":292}," -R",[38,1335,1336],{"class":48}," 1001:1001",[38,1338,1206],{"class":48},[20,1340,1342],{"id":1341},"langkah-6-menjalankan-kontainer-docker","Langkah 6: Menjalankan Kontainer Docker",[10,1344,1345,1346,1349],{},"Setelah semua persiapan environment dan Docker Compose selesai, Anda dapat menjalankan seluruh ",[56,1347,1348],{},"stack"," aplikasi Outline di latar belakang.",[28,1351,1353],{"className":30,"code":1352,"language":32,"meta":33,"style":33},"docker-compose up -d\n",[35,1354,1355],{"__ignoreMap":33},[38,1356,1357,1360,1363],{"class":40,"line":41},[38,1358,1359],{"class":44},"docker-compose",[38,1361,1362],{"class":48}," up",[38,1364,1365],{"class":292}," -d\n",[10,1367,1368],{},[56,1369,1370],{},"Catatan: Pastikan Anda juga telah mengatur reverse proxy (seperti Nginx atau Caddy) untuk menangani sertifikat SSL\u002FHTTPS ke port Outline Anda.",[20,1372,1374],{"id":1373},"langkah-7-uji-coba-dan-verifikasi-instalasi","Langkah 7: Uji Coba dan Verifikasi Instalasi",[10,1376,1377,1378,1381,1382,1385],{},"Buka peramban web dan akses nama domain yang telah Anda konfigurasi (misalnya ",[35,1379,1380],{},"https:\u002F\u002Fdocs.domainanda.com","). Cobalah masuk (",[56,1383,1384],{},"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,1387,1388],{},"Selamat! Anda telah berhasil membangun dan mengonfigurasi server Outline Wiki secara mandiri untuk menunjang produktivitas dan kolaborasi tim Anda.",[228,1390,1391],{},"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":33,"searchDepth":103,"depth":103,"links":1393},[1394,1395,1396,1397,1398,1399,1400],{"id":1130,"depth":103,"text":1131},{"id":1182,"depth":103,"text":1183},{"id":1232,"depth":103,"text":1233},{"id":1269,"depth":103,"text":1270},{"id":1299,"depth":103,"text":1300},{"id":1341,"depth":103,"text":1342},{"id":1373,"depth":103,"text":1374},"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":1105,"description":1401},"id\u002Ftutorials\u002Finstall-outline-wiki-docker","l1vHmvX6nPAf9OvtpekKB5Q1gGb8a2CC5mmKqoRjpJ4",[1409],{"id":4,"title":5,"body":1410,"category":238,"date":239,"description":240,"extension":241,"image":242,"meta":1563,"navigation":106,"path":244,"seo":1564,"stem":246,"__hash__":247},{"type":7,"value":1411,"toc":1556},[1412,1414,1416,1418,1420,1422,1434,1440,1442,1448,1488,1492,1494,1496,1498,1522,1524,1526,1538,1540,1542,1552,1554],[10,1413,12],{},[10,1415,15],{},[17,1417],{},[20,1419,23],{"id":22},[10,1421,26],{},[28,1423,1424],{"className":30,"code":31,"language":32,"meta":33,"style":33},[35,1425,1426],{"__ignoreMap":33},[38,1427,1428,1430,1432],{"class":40,"line":41},[38,1429,45],{"class":44},[38,1431,49],{"class":48},[38,1433,52],{"class":48},[10,1435,1436],{},[56,1437,58,1438,62],{},[35,1439,61],{},[20,1441,66],{"id":65},[10,1443,69,1444,73,1446,77],{},[35,1445,72],{},[35,1447,76],{},[28,1449,1450],{"className":30,"code":80,"language":32,"meta":33,"style":33},[35,1451,1452,1464,1468,1478,1484],{"__ignoreMap":33},[38,1453,1454,1456,1458,1460,1462],{"class":40,"line":41},[38,1455,87],{"class":44},[38,1457,90],{"class":48},[38,1459,93],{"class":48},[38,1461,96],{"class":48},[38,1463,100],{"class":99},[38,1465,1466],{"class":40,"line":103},[38,1467,107],{"emptyLinePlaceholder":106},[38,1469,1470,1472,1474,1476],{"class":40,"line":110},[38,1471,113],{"class":44},[38,1473,116],{"class":44},[38,1475,119],{"class":44},[38,1477,122],{"class":48},[38,1479,1480,1482],{"class":40,"line":125},[38,1481,128],{"class":44},[38,1483,131],{"class":48},[38,1485,1486],{"class":40,"line":134},[38,1487,137],{"class":99},[10,1489,1490],{},[56,1491,142],{},[144,1493],{},[20,1495,149],{"id":148},[10,1497,152],{},[28,1499,1500],{"className":30,"code":155,"language":32,"meta":33,"style":33},[35,1501,1502,1512,1518],{"__ignoreMap":33},[38,1503,1504,1506,1508,1510],{"class":40,"line":41},[38,1505,162],{"class":44},[38,1507,165],{"class":44},[38,1509,119],{"class":44},[38,1511,122],{"class":48},[38,1513,1514,1516],{"class":40,"line":103},[38,1515,174],{"class":44},[38,1517,177],{"class":48},[38,1519,1520],{"class":40,"line":110},[38,1521,137],{"class":99},[20,1523,185],{"id":184},[10,1525,188],{},[28,1527,1528],{"className":30,"code":191,"language":32,"meta":33,"style":33},[35,1529,1530],{"__ignoreMap":33},[38,1531,1532,1534,1536],{"class":40,"line":41},[38,1533,198],{"class":44},[38,1535,201],{"class":44},[38,1537,204],{"class":99},[20,1539,208],{"id":207},[10,1541,211],{},[28,1543,1544],{"className":30,"code":214,"language":32,"meta":33,"style":33},[35,1545,1546],{"__ignoreMap":33},[38,1547,1548,1550],{"class":40,"line":41},[38,1549,45],{"class":44},[38,1551,223],{"class":48},[10,1553,226],{},[228,1555,230],{},{"title":33,"searchDepth":103,"depth":103,"links":1557},[1558,1559,1560,1561,1562],{"id":22,"depth":103,"text":23},{"id":65,"depth":103,"text":66},{"id":148,"depth":103,"text":149},{"id":184,"depth":103,"text":185},{"id":207,"depth":103,"text":208},{},{"title":5,"description":240},1784285138390]