BookStack, Wiki.js, atau Outline: Mana yang Cocok?
Bandingkan BookStack, Wiki.js, dan Outline berdasarkan bobot instalasi, editor, login, dan pencarian. Temukan pilihan tepat untuk admin solo atau tim.
Wiki self-hosted mana yang sebaiknya Anda jalankan
Wiki self-hosted menempatkan dokumen tim Anda di satu tempat yang dapat dicari pada server yang Anda kendalikan. BookStack, Wiki.js, dan Outline semuanya dapat menjalankan fungsi tersebut. Perbedaan utama ketiganya terletak pada seberapa banyak komponen yang harus Anda siapkan sebelum halaman pertama dimuat, serta siapa yang diizinkan untuk login.
BookStack paling mudah disiapkan dan paling ketat dalam hal struktur. Wiki.js memberikan pilihan editor yang paling luas dalam satu hierarki halaman. Outline memiliki pengalaman menulis terbaik di antara ketiganya, dan tidak mengizinkan siapa pun untuk sign in sebelum Anda menghubungkannya ke penyedia identitas eksternal.
Semua informasi di bawah ini diambil dari dokumentasi resmi proyek dan file konfigurasi yang mereka publikasikan. Ini adalah perbandingan kemampuan, bukan benchmark. Nomor versi dan persyaratan mencantumkan tanggal karena ketiganya terus berubah.
Struktur adalah pilihan yang sebenarnya
BookStack menetapkan bentuk konten Anda. Sebuah halaman berada di dalam buku, buku dapat memuat bab, dan rak mengelompokkan buku. Anda tidak dapat membuat tingkat kelima. Batasan itu adalah inti produknya: penulis baru mengetahui lokasi halaman karena hanya ada satu tempat untuk meletakkannya. Konsekuensinya, konten yang tidak sesuai dengan bentuk tersebut harus dipaksakan masuk ke dalamnya.
Wiki.js menggunakan pohon path, seperti folder pada disk. Halaman di ops/backup/restic berada di lokasi yang Anda tentukan, dan Anda memilih kedalamannya. Tidak ada yang mencegah dua orang menempatkan subjek yang sama pada dua cabang berbeda. Karena itu, instance Wiki.js memerlukan satu orang yang bertanggung jawab atas pohon tersebut.
Outline menggunakan koleksi dengan dokumen yang dapat ditumpuk di dalam dokumen lain. Untuk memindahkan dokumen, Anda cukup menyeretnya dengan mouse. Dari ketiganya, Outline paling fleksibel. Karena itu, strukturnya juga paling mudah menjadi tidak konsisten.
BookStack: instalasi paling sederhana
BookStack adalah aplikasi PHP yang menggunakan MySQL sebagai basis datanya. Per Juli 2026, persyaratan yang didokumentasikan adalah PHP 8.2 atau yang lebih baru, serta MySQL 8.0 atau MariaDB 10.6 atau yang lebih baru. Composer 2.2 atau yang lebih baru juga diperlukan jika Anda menginstalnya dari source. Rilis saat ini berada pada lini 26.05.
Proyek ini menyediakan satu skrip instalasi untuk setiap rilis Ubuntu. Skrip untuk 24.04 menginstal Apache, MySQL 8.0, dan PHP 8.3 untuk Anda.
wget https://codeberg.org/bookstack/devops/raw/branch/main/scripts/installation-ubuntu-24.04.sh
chmod a+x installation-ubuntu-24.04.sh
sudo ./installation-ubuntu-24.04.shBaca peringatan pada skrip tersebut sebelum menjalankannya. Dokumentasi menyatakan bahwa skrip itu "ONLY FOR A FRESH OS, it will install Apache, MySQL 8.0 & PHP 8.3 and could OVERWRITE any existing web setup on the machine". Pada server yang sudah menerima koneksi pada port 80, skrip tersebut mengambil alih port itu dan menulis ulang konfigurasi Apache. Gunakan container di server tersebut, atau instal BookStack secara manual di atas stack LAMP yang sudah ada di Ubuntu 24.04.
Rute container menggunakan image LinuxServer.io, yaitu opsi yang dirujuk oleh dokumentasi BookStack. BookStack memerlukan kunci enkripsi sesi dan tidak akan menyajikan halaman tanpa kunci tersebut. Karena itu, buat kunci terlebih dahulu.
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkeySalin nilai yang dicetak ke APP_KEY, lalu tulis service tersebut:
services:
bookstack:
image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- APP_URL=https://wiki.example.com
- APP_KEY=paste_the_generated_key_here
- DB_HOST=bookstack_db
- DB_PORT=3306
- DB_USERNAME=bookstack
- DB_PASSWORD=change_me
- DB_DATABASE=bookstackapp
volumes:
- ./config:/config
ports:
- 6875:80
restart: unless-stoppedAPP_URL harus sesuai dengan alamat yang benar-benar diketik pembaca, termasuk skema dan port apa pun. Jika Anda menetapkannya ke http://localhost lalu menyajikan situs melalui HTTPS, link dan redirect yang dibuat akan mengarah ke host yang salah. Pembaca akan melihat halaman login yang terus kembali ke halaman itu sendiri. Jika file Compose masih baru bagi Anda, pelajari dasar-dasar Docker Compose pada VPS terlebih dahulu.
Jalankan service tersebut dan periksa bahwa aplikasi merespons, bukan hanya bahwa containernya berjalan:
docker compose up -d
docker compose ps
curl -sI http://127.0.0.1:6875/login200 OK berarti aplikasi PHP berhasil dijalankan dan terhubung ke database. 500 hampir selalu berarti APP_KEY kosong atau kredensial database tidak cocok. docker compose logs bookstack mencetak penyebabnya.
Wiki.js: satu hierarki, beberapa editor
Wiki.js adalah aplikasi Node.js. Konfigurasi Docker yang didokumentasikan memasangkannya dengan PostgreSQL, meskipun software ini juga mendukung MySQL, MariaDB, MSSQL, dan SQLite. Berikut adalah compose file dari halaman Docker milik proyek tersebut:
services:
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: wiki
POSTGRES_PASSWORD: wikijsrocks
POSTGRES_USER: wikijs
logging:
driver: none
restart: unless-stopped
volumes:
- db-data:/var/lib/postgresql/data
wiki:
image: ghcr.io/requarks/wiki:2
depends_on:
- db
init: true
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: wikijsrocks
DB_NAME: wiki
restart: unless-stopped
ports:
- "80:3000"
volumes:
db-data:Ubah POSTGRES_PASSWORD dan DB_PASS secara bersamaan sebelum menjalankannya, karena keduanya merupakan satu kredensial dan nilai contoh tersebut bersifat publik. Tag dikunci ke ghcr.io/requarks/wiki:2 dengan sengaja. Dokumentasi tidak menyarankan latest, karena lompatan versi mayor mengubah skema database pada instance yang sedang berjalan.
Versi 2 adalah lini yang harus digunakan. Per Juli 2026, rilis versi 2 terbaru adalah 2.5.314, yang dirilis pada Mei 2026. Versi 3 sudah tersedia, dan dokumentasinya sendiri menyatakan: "Situs ini ditujukan untuk rilis beta Wiki.js 3.0 yang tidak stabil. Anda JANGAN menginstalnya di production." Perlakukan tag :3 sebagai pratinjau.
Saat pertama kali dimuat, Wiki.js memandu Anda melalui setup dalam browser untuk membuat akun administrator. Sebelum proses ini selesai, siapa pun yang dapat menjangkau port tersebut akan melihat wizard itu. Karena itu, tempatkan service di belakang reverse proxy dan TLS (keamanan lapisan transport) sebelum membuka firewall. Wiki dengan hostname sendiri secara alami dapat ditempatkan di belakang Traefik di depan beberapa aplikasi Docker ketika server meng-host lebih dari satu service ini.
Pilihan editor adalah alasan orang memilih Wiki.js. Satu instance dapat memuat halaman Markdown, halaman editor visual, halaman HTML mentah, dan halaman AsciiDoc secara berdampingan. Ini membantu ketika Anda mengimpor konten lama dalam format yang tidak ingin dikonversi. Namun, hal ini juga dapat menghasilkan empat gaya penulisan internal dalam satu wiki. Karena itu, tentukan editor default sejak hari pertama dan dokumentasikan keputusan tersebut.
Gambaran umum: editor terbaik, prasyarat paling berat
Outline adalah aplikasi yang biasanya dimaksud orang ketika mereka menginginkan sesuatu yang terasa seperti aplikasi catatan komersial. Outline merupakan aplikasi Node.js, dan rilis terbaru per Juli 2026 adalah 1.9.2. File lingkungan contoh mencantumkan kebutuhannya: PostgreSQL melalui DATABASE_URL, Redis melalui REDIS_URL, dua secret acak, dan URL yang dapat dijangkau publik.
openssl rand -hex 32
openssl rand -hex 32Jalankan perintah tersebut dua kali dan simpan kedua nilainya. Nilai pertama menjadi SECRET_KEY, sedangkan nilai kedua menjadi UTILS_SECRET. Bagian inti file lingkungan kemudian terlihat seperti ini:
NODE_ENV=production
URL=https://docs.example.com
PORT=3000
SECRET_KEY=<first openssl value>
UTILS_SECRET=<second openssl value>
DATABASE_URL=postgres://outline:change_me@postgres:5432/outline
PGSSLMODE=disable
REDIS_URL=redis://redis:6379
FILE_STORAGE=local
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/dataPGSSLMODE=disable hanya benar jika database berada pada mesin yang sama atau jaringan Docker yang sama. Jangan gunakan nilai tersebut untuk database yang diakses melalui jaringan, karena koneksi akan berjalan tanpa enkripsi. Lampiran tidak lagi mengharuskan Anda menggunakan object storage: FILE_STORAGE=local menyimpan unggahan ke direktori di atas. Direktori tersebut harus berupa volume yang dapat ditulis oleh container dan disertakan dalam backup Anda. Tetapkan FILE_STORAGE=s3 menggunakan nilai AWS_* jika Anda ingin menyimpan file tersebut dalam bucket yang kompatibel dengan S3.
Sekarang bagian yang mengejutkan banyak orang. Outline tidak memiliki login bawaan dengan username dan password. Konfigurasi contoh Outline sendiri menyatakan bahwa kredensial login pihak ketiga diperlukan: "at least ONE OF these is required for a working installation or you'll have no sign-in options". Provider yang didokumentasikan mencakup Google, Slack, Microsoft Entra, Discord, dan server OpenID Connect (OIDC) generik melalui OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI, dan OIDC_USERINFO_URI.
Jadi, kebutuhan sebenarnya untuk menjalankan Outline adalah Outline, PostgreSQL, Redis, dan identity provider. Jika tim Anda sudah login menggunakan Google Workspace atau Microsoft Entra, komponen terakhir hanya memerlukan waktu sepuluh menit dan Outline menjadi pilihan yang sangat menarik. Jika belum, Anda juga perlu melakukan self-hosting layanan seperti Keycloak atau Authentik. Itu berarti ada service kedua yang harus di-patch dan di-backup. Sesuaikan alokasi memory: panduan Outline sendiri menyebut sekitar 512 MB per web process, yang ditetapkan melalui WEB_CONCURRENCY, di luar kebutuhan database dan Redis.
Cara masing-masing mengatur siapa yang dapat membaca apa
BookStack menyediakan akun email dan kata sandi lokal secara bawaan, serta mendukung LDAP, SAML2, dan OIDC sebagai alternatif. Izin ditetapkan berdasarkan peran dan dapat ditimpa pada satu shelf, book, chapter, atau page. Karena hierarkinya tetap, izin diwariskan ke tingkat di bawahnya secara konsisten dan dapat diprediksi.
Wiki.js juga menyediakan akun lokal dan menambahkan banyak strategi autentikasi yang dapat diaktifkan dari area admin. Aturan page memberikan atau menolak akses berdasarkan pola path. Fitur ini fleksibel, tetapi mudah salah dikonfigurasi, karena aturan yang ditulis untuk ops/* secara diam-diam mencakup setiap page yang nantinya Anda simpan di bawah path tersebut.
Outline sepenuhnya menyerahkan pengelolaan ini kepada penyedia identitas Anda. Keanggotaan mengikuti penyedia identitas, sedangkan di dalam Outline Anda mengatur akses berdasarkan collection dan group. Tidak ada akun lokal yang tertinggal ketika seseorang keluar dari perusahaan. Ini merupakan keuntungan nyata jika penyedia identitas tersebut memang digunakan sebagai sistem untuk mencabut akses pengguna.
Cara kerja pencarian pada masing-masing aplikasi
Pencarian menentukan apakah sebuah wiki benar-benar berguna atau hanya menjadi folder berisi file yang terlupakan.
BookStack mencari di database dan menyediakan bahasa kueri yang dapat dipelajari pembaca dalam satu menit. Tanda kutip pada frasa, seperti pada "london meeting", mengharuskan string yang sama persis. Tanda kurung siku digunakan untuk mencari tag: [location=london] mencocokkan nama tag, nilai tag, atau keduanya, dengan perbandingan seperti !=, >=, dan like. Tanda kurung kurawal digunakan untuk memfilter metadata, seperti pada {created_after:2016-12-30}. Istilah pencarian yang sama persis, istilah tag, atau istilah filter dapat dinegasikan dengan menambahkan - di depannya. BookStack membatasi jumlah istilah untuk setiap jenis yang dapat dimuat dalam satu kueri. Karena itu, kueri yang sangat panjang akan dipangkas, bukan dijalankan.
Wiki.js memperlakukan pencarian sebagai modul yang dapat diganti. Mesin yang didokumentasikan mencakup mesin database dasar, mesin PostgreSQL, Elasticsearch, Algolia, AWS CloudSearch, dan Azure Search. Mesin dasar memadai untuk beberapa ratus halaman. Jika Anda menjalankan PostgreSQL, beralihlah ke mesin PostgreSQL di area admin karena mesin ini menggunakan indeks full-text milik database, bukan pencocokan sederhana. Gunakan Elasticsearch hanya jika wiki cukup besar sehingga Anda bersedia menjalankan dan menambal service pencarian kedua.
Outline menggunakan indeks full-text PostgreSQL untuk pencarian. Tidak ada mesin yang perlu dipilih atau pengaturan yang perlu disesuaikan. Outline juga mencari teks di dalam dokumen yang diunggah. Untuk wiki tim dengan jumlah dokumen sekitar beberapa ribu, Outline memerlukan pekerjaan paling sedikit di antara ketiganya. Namun, jika pencarian tidak lagi cukup cepat, tidak ada pengaturan yang dapat digunakan untuk meningkatkannya.
Yang mana yang cocok untuk Anda
Pilih BookStack jika Anda ingin wiki berjalan sore ini dan lebih memilih memperdebatkan isi daripada strukturnya. Komponennya paling sedikit: satu aplikasi PHP dan satu database MySQL. BookStack cocok untuk runbook internal dan dokumentasi pelanggan, serta untuk tim yang sebagian besar penulisnya bukan engineer. BookStack juga paling mudah dicadangkan di antara ketiganya karena seluruh statusnya terdiri dari satu dump database dan direktori uploads.
Pilih Wiki.js jika Anda memerlukan editor atau strategi autentikasi tertentu yang tidak ditawarkan oleh pilihan lain, atau jika Anda mengimpor kumpulan Markdown atau AsciiDoc yang besar dan ingin mempertahankan struktur path. Terima bahwa Anda menjalankan stack yang lebih berat, lalu tetapkan tag versi major.
Pilih Outline jika kualitas penulisan adalah prioritas utama, wiki ditujukan untuk tim dan bukan untuk publik, serta Anda sudah memiliki identity provider. Setup tersebut memberikan kompensasi berupa editor yang benar-benar nyaman digunakan. Jangan memilihnya sebagai aplikasi self-hosted pertama Anda.
Jika tidak satu pun dari ketiganya cocok, biasanya masalahnya terletak pada jenis konten. Faktur dan kontrak hasil pemindaian lebih tepat disimpan dalam sistem manajemen dokumen seperti Paperless-ngx daripada dalam wiki. Memaksakan konten tersebut ke wiki adalah alasan begitu banyak wiki akhirnya ditinggalkan. Ketidakcocokan umum lainnya adalah ketika Anda membutuhkan workspace, bukan wiki, dengan dokumen, tabel, dan whiteboard pada satu canvas. Dalam kasus itu, workspace AFFiNE self-hosted lebih sesuai daripada ketiga pilihan di atas. Untuk melihat pilihan yang lebih luas mengenai aplikasi yang layak dijalankan di server sendiri, lihat daftar singkat self-hosting untuk 2026.
Ukuran dan backup
Ketiganya dapat berjalan pada VPS kecil. Kebutuhan minimum yang realistis berbeda karena komponen yang digunakan masing-masing aplikasi juga berbeda. BookStack menggunakan satu proses aplikasi dan MySQL. Wiki.js menggunakan proses Node dan PostgreSQL. Outline menggunakan proses Node, PostgreSQL, dan Redis, biasanya bersama penyedia identitas. Karena itu, Outline memerlukan memori tambahan.
Cadangkan database dan file upload secara bersamaan. Sebelum mengandalkan backup tersebut, pulihkan keduanya satu kali ke instance sementara. Backup wiki yang belum pernah dipulihkan hanyalah perkiraan. Untuk BookStack, ini berarti mysqldump dan volume /config. Untuk Wiki.js dan Outline, ini berarti pg_dump dan volume data. Untuk Outline, cadangkan juga apa pun yang berada di FILE_STORAGE_LOCAL_ROOT_DIR.
FAQ
Wiki self-hosted mana yang paling mudah diinstal?
BookStack. Aplikasi ini hanya terdiri dari satu aplikasi PHP dengan database MySQL. Proyeknya menyediakan skrip instalasi untuk Ubuntu 24.04 yang menyiapkan Apache, MySQL 8.0, dan PHP 8.3 dalam satu kali eksekusi. Image container hanya memerlukan APP_KEY dan kredensial database. Wiki.js menambahkan runtime Node dan server PostgreSQL. Outline menambahkan Redis dan penyedia identitas eksternal.
Apakah saya dapat menggunakan Outline tanpa Google atau penyedia SSO lain?
Tidak. Outline tidak memiliki login lokal dengan nama pengguna dan kata sandi. Konfigurasi contohnya menyatakan bahwa setidaknya satu penyedia login pihak ketiga diperlukan. Tanpa penyedia tersebut, Anda tidak memiliki opsi login sama sekali. Anda dapat menggunakan Google, Slack, Microsoft Entra, Discord, atau server OpenID Connect generik seperti Keycloak atau Authentik yang di-host sendiri. Menjalankan penyedia tersebut merupakan bagian dari biaya menjalankan Outline.
Sebaiknya saya menginstal Wiki.js 3 atau Wiki.js 2?
Versi 2. Per Juli 2026, rilis terbaru versi 2 adalah 2.5.314 dari Mei 2026. Dokumentasi versi 3 menyatakan dengan jelas bahwa versi tersebut adalah beta yang tidak stabil dan tidak boleh diinstal di lingkungan produksi. Tetapkan image pada ghcr.io/requarks/wiki:2, bukan latest, karena perubahan versi mayor mengubah skema database pada instance yang sedang berjalan.
Mana yang memiliki fitur pencarian terbaik?
Masing-masing kuat dalam aspek yang berbeda. BookStack menyediakan bahasa kueri dengan frasa persis, filter tag seperti [location=london], dan filter metadata seperti {created_after:2016-12-30}. Setiap istilah tersebut dapat dinegasikan dengan - di awal. Outline tidak memerlukan konfigurasi dan dapat mencari teks di dalam file yang diunggah. Wiki.js paling mudah disesuaikan karena Anda dapat memilih mesinnya. Mesin PostgreSQL layak digunakan segera setelah wiki Anda melampaui beberapa ratus halaman.
Apakah saya dapat memindahkan konten dari satu platform ke platform lain nanti?
Sebagian, tetapi Anda harus mengantisipasi pekerjaan manual. Ketiganya dapat mengekspor dan mengimpor Markdown, sehingga teks halaman biasanya tetap tersedia. Struktur tidak berpindah dengan baik. Buku dan bab BookStack tidak memiliki padanan dalam dokumen bertingkat Outline. Path Wiki.js juga tidak dapat dipetakan ke hierarki tetap BookStack. Lampiran, izin, dan riwayat halaman adalah bagian yang paling mungkin hilang. Karena itu, ekspor sampel dan periksa bagian-bagian tersebut sebelum memulai migrasi.