SSD Nodes Learn 8GB RAM — $66/taon
Mga Gabay Matt ConnorNi Matt Connor · Na-update 2026-08-02

BookStack vs Wiki.js vs Outline: Alin ang Piliin?

Ihambing ang BookStack, Wiki.js, at Outline sa setup, editor, login, at search. Alamin ang malinaw na pick para sa solo admin at team, batay sa project docs.

Aling self-hosted wiki ang dapat mong patakbuhin

Inilalagay ng self-hosted wiki ang mga dokumento ng team mo sa isang searchable na lugar sa isang server na kontrolado mo. Magagawa ito ng BookStack, Wiki.js, at Outline. Pinakamalaki ang pagkakaiba nila sa dami ng kailangang i-configure bago mag-load ang unang page, at sa mga pinapayagang mag-log in.

Pinakamadaling i-set up ang BookStack, at ito ang may pinakatinukoy na structure. Nagbibigay ang Wiki.js ng pinakamalawak na pagpili ng mga editor para sa iisang page tree. Pinakamaganda ang writing experience ng Outline sa tatlo, at hindi nito papayagang mag-sign in ang sinuman hangga't hindi ka kumokonekta ng external identity provider.

Batay ang lahat ng nasa ibaba sa sariling documentation ng mga project at sa mga inilabas nilang configuration file. Paghahambing ito ng mga capability, hindi benchmark. Nilagyan ng petsa ang mga version number at requirement dahil patuloy na nagbabago ang tatlo.

Ang istruktura ang tunay na pagpipilian

Itinatakda ng BookStack ang hugis ng iyong content. Ang isang page ay nasa loob ng isang book, maaaring maglaman ng mga chapter ang isang book, at pinapangkat ng shelves ang mga book. Hindi ka makakagawa ng ikalimang level. Iyan ang mismong produkto: alam ng bagong writer kung saan ilalagay ang isang page dahil iisa lamang ang maaari nitong paglagyan. Ang kapalit nito ay napipilitang isama sa hugis ang content na hindi dito umaangkop.

Gumagamit ang Wiki.js ng path tree, katulad ng mga folder sa isang disk. Ang page sa ops/backup/restic ay inilalagay kung saan mo ito pipiliing ilagay, at ikaw ang nagtatakda ng depth. Walang pumipigil sa dalawang tao na ilagay ang parehong paksa sa dalawang magkaibang branch, kaya kailangan ng isang Wiki.js instance ng isang taong responsable sa tree.

Gumagamit ang Outline ng mga collection na may mga document na nakapaloob sa iba pang document. Ang paglipat ng document ay ginagawa sa pamamagitan ng pag-drag gamit ang mouse. Ito ang pinakamaluwag sa tatlo, kaya ito rin ang pinakamadaling hayaang mawala sa tamang ayos.

BookStack: ang pinakamaliit na installation

Ang BookStack ay isang PHP application na gumagamit ng MySQL. Noong July 2026, ang nakadokumentong requirements ay PHP 8.2 o mas bago at alinman sa MySQL 8.0 o MariaDB 10.6 o mas bago. Kailangan din ang Composer 2.2 o mas bago kung mag-i-install mula sa source. Ang kasalukuyang release line ay 26.05.

Naglalabas ang project ng tig-isang installation script para sa bawat Ubuntu release. Ini-install ng 24.04 script ang Apache, MySQL 8.0, at PHP 8.3 para sa iyo.

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.sh

Basahin ang warning sa script bago mo ito patakbuhin. Nakasaad sa documentation na ito ay "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". Kung mayroon nang server na tumatanggap ng mga request sa port 80, aangkinin ng script ang port na iyon at muling isusulat ang Apache configuration. Sa ganitong server, containers ang gamitin. Maaari mo ring manu-manong i-install ang BookStack sa ibabaw ng kasalukuyang LAMP stack sa Ubuntu 24.04.

Gumagamit ang container route ng image mula sa LinuxServer.io, na siyang opsyong itinuturo ng BookStack documentation. Kailangan ng BookStack ng session encryption key at hindi ito makakapag-serve ng pages kung wala nito, kaya buuin muna ito.

docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey

Kopyahin ang value na ipinakita sa APP_KEY, pagkatapos ay isulat ang service:

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-stopped

Dapat tumugma ang APP_URL sa address na aktuwal na tina-type ng mga reader, kasama ang scheme at anumang port. Itakda ito sa http://localhost at pagkatapos ay i-serve ang site gamit ang HTTPS. Kung hindi, sa maling host ituturo ang mga nabuong link at redirect, at makikita ito ng mga reader bilang login page na paulit-ulit na bumabalik sa sarili nito. Kung bago sa iyo ang compose files, magsimula sa mga pangunahing kaalaman sa Docker Compose sa isang VPS bago ito.

Paandarin ito at tingnan kung sumasagot ang application, hindi lamang kung tumatakbo ang container:

docker compose up -d
docker compose ps
curl -sI http://127.0.0.1:6875/login

Ang 200 OK ay nangangahulugang nag-boot ang PHP application at nakakonekta ito sa database. Ang 500 ay halos palaging nangangahulugang walang laman ang APP_KEY o hindi nagtutugma ang database credentials, at ipinapakita ng docker compose logs bookstack kung alin sa dalawa ang dahilan.

Wiki.js: isang puno, maraming editor

Ang Wiki.js ay isang Node.js application. Sa dokumentadong Docker setup, ginagamit nito ang PostgreSQL, ngunit tumatanggap din ang software ng MySQL, MariaDB, MSSQL at SQLite. Ito ang compose file mula sa sariling Docker page ng proyekto:

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:

Baguhin nang magkasabay ang POSTGRES_PASSWORD at DB_PASS bago ito patakbuhin, dahil iisang credential ang mga ito at pampubliko ang sample value. Sadyang naka-pin ang tag sa ghcr.io/requarks/wiki:2. Hindi inirerekomenda ng dokumentasyon ang latest, dahil binabago ng pagtalon sa major version ang database schema habang tumatakbo ang instance.

Ang Version 2 ang bersyong dapat patakbuhin. Noong July 2026, ang pinakabagong release ng version 2 ay 2.5.314, na inilabas noong May 2026. May Version 3, at sinasabi ng sarili nitong dokumentasyon: "Ang site na ito ay para sa unstable beta release ng Wiki.js 3.0. HUWAG itong i-install sa production." Ituring ang :3 tag bilang preview.

Sa unang pag-load, gagabayan ka ng Wiki.js sa isang setup sa browser na lumilikha ng administrator account. Hangga't hindi mo ito natatapos, makikita ng sinumang makakaabot sa port ang wizard na iyon. Kaya ilagay ang service sa likod ng reverse proxy at TLS (transport layer security) bago mong buksan ang firewall. Ang wiki na may sarili nitong hostname ay natural na mailalagay sa likod ng Traefik sa harap ng ilang Docker app kapag higit sa service na ito ang naka-host sa server.

Ang pagpili ng editor ang pangunahing dahilan kung bakit pinipili ng mga tao ang Wiki.js. Maaaring maglaman ang isang instance ng mga Markdown page, visual editor page, raw HTML page at AsciiDoc page nang magkakatabi. Nakakatulong ito kapag nag-i-import ka ng lumang content sa format na ayaw mong i-convert. Maaari rin itong humantong sa pagkakaroon ng apat na house style sa iisang wiki. Kaya piliin ang default editor sa unang araw at itala ang desisyong iyon.

Outline: ang pinakamahusay na editor, ang pinakamabigat na prerequisites

Ang Outline ang karaniwang tinutukoy ng mga tao kapag gusto nila ng tool para sa mga note na kahawig ng isang commercial notes tool. Node.js application ito, at ang kasalukuyang release noong July 2026 ay 1.9.2. Inililista ng sample environment file nito ang mga kailangan nito: PostgreSQL sa pamamagitan ng DATABASE_URL, Redis sa pamamagitan ng REDIS_URL, dalawang random secret, at isang publicly reachable URL.

openssl rand -hex 32
openssl rand -hex 32

Patakbuhin ito nang dalawang beses at panatilihin ang parehong value. Ang una ay magiging SECRET_KEY, at ang ikalawa ay UTILS_SECRET. Ganito ang pangunahing bahagi ng environment file:

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/data

Tama lang ang PGSSLMODE=disable kapag nasa parehong machine o parehong Docker network ang database. Huwag itong isama kung naa-access ang database sa network, dahil magiging unencrypted ang connection. Hindi ka na pinipilit ng attachments na gumamit ng object storage: isinusulat ng FILE_STORAGE=local ang mga upload sa directory sa itaas. Dapat itong volume na maaaring sulatan ng container at kasama sa iyong backups. Itakda ang FILE_STORAGE=s3 gamit ang mga value ng AWS_* kung gusto mong ilagay ang mga file na iyon sa isang S3 compatible bucket.

Narito ang bahaging karaniwang ikinagugulat ng mga tao. Walang built-in na username at password login ang Outline. Sinasabi ng sarili nitong sample configuration na kailangan ang third-party sign-in credentials: "at least ONE OF these is required for a working installation or you'll have no sign-in options". Kasama sa documented provider ang Google, Slack, Microsoft Entra, Discord, at anumang generic OpenID Connect (OIDC) server sa pamamagitan ng OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI at OIDC_USERINFO_URI.

Kaya ang totoong kailangan ng Outline ay Outline kasama ang PostgreSQL, Redis, at isang identity provider. Kung gumagamit na ang iyong team ng Google Workspace o Microsoft Entra para sa sign-in, sampung minuto lang ang kailangan para sa huling bahaging iyon at nagiging kaakit-akit ang Outline. Kung hindi, kailangan mo ring mag-self-host ng tulad ng Keycloak o Authentik. Iyon ay isa pang service na kailangang i-patch at i-back up. Maglaan nang sapat na memory: ang gabay mismo ng Outline ay humigit-kumulang 512 MB bawat web process, na itinatakda ng WEB_CONCURRENCY, bukod pa sa database at Redis.

Paano pinamamahalaan ng bawat isa kung sino ang maaaring bumasa ng alin

May mga lokal na account na may email at password ang BookStack bilang default, at sinusuportahan nito ang LDAP, SAML2 at OIDC bilang mga alternatibo. Itinatakda ang mga permission ayon sa role at maaaring i-override sa isang shelf, book, chapter o page. Dahil fixed ang hierarchy, namamana ng mga nasa ibaba ang permissions sa isang predictable na paraan.

May mga lokal na account din ang Wiki.js bilang default at nagdaragdag ito ng mahabang listahan ng mga strategy na maaari mong i-enable sa admin area. Nagbibigay o nagkakait ng access ang mga rule ng page batay sa path pattern. Makapangyarihan ito ngunit madaling magkamali, dahil ang rule na ginawa para sa ops/* ay tahimik na sasaklaw sa bawat page na ilalagay mo sa path na iyon sa hinaharap.

Ganap na ipinauubaya ng Outline ang usaping ito. Nakabatay ang membership sa iyong identity provider, at sa loob ng Outline, kinokontrol mo ang access ayon sa collection at group. Walang naiiwang lokal na account kapag umalis ang isang tao sa kumpanya. Malaking bentahe ito kapag ang identity provider na rin ang ginagamit mong system para mag-deprovision ng mga account.

Paano gumagana ang paghahanap sa bawat isa

Dito makikita kung nagagamit nang maayos ang wiki o nauuwi lang ito sa isang folder ng mga nakalimutang file.

Hinahanap ng BookStack ang database at nagbibigay ito sa mga mambabasa ng query language na matututunan sa loob ng isang minuto. Kapag gumamit ng panipi sa isang parirala, gaya ng "london meeting", kailangang eksaktong tumugma ang string. Ginagamit ang square brackets sa paghahanap ng mga tag: tumutugma ang [location=london] sa pangalan ng tag, value, o pareho, gamit ang mga comparison gaya ng !=, >= at like. Sinasala ng curly braces ang metadata, gaya ng {created_after:2016-12-30}. Maaaring baligtarin ang anumang eksaktong term, tag term, o filter term sa pamamagitan ng paglalagay ng - sa unahan nito. Nililimitahan ng BookStack ang bilang ng mga term ng bawat uri na maaaring ilagay sa isang query, kaya pinuputol ang napakahabang query sa halip na patakbuhin ito.

Itinuturing ng Wiki.js ang search bilang isang pluggable module. Ang mga engine na nakadokumento ay basic database engine, PostgreSQL engine, Elasticsearch, Algolia, AWS CloudSearch at Azure Search. Sapat ang basic engine para sa ilang daang page. Kung gumagamit ka ng PostgreSQL, lumipat sa PostgreSQL engine sa admin area dahil ginagamit nito ang sariling full text index ng database sa halip na simpleng matching. Gamitin ang Elasticsearch para lamang sa wiki na sapat ang laki upang tanggapin mo ang pagpapatakbo at pag-patch ng ikalawang search service.

Hinahanap ng Outline ang PostgreSQL full text indexes. Walang engine na kailangang piliin at walang kailangang i-tune; hinahanap din nito ang text sa loob ng mga na-upload na dokumento. Para sa team wiki na may ilang libong dokumento, ito ang nangangailangan ng pinakamaliit na trabaho sa tatlo. Wala ring setting na maaari mong baguhin kung hindi na ito sapat ang bilis.

Alin ang angkop sa iyo

Piliin ang BookStack kung gusto mong gumagana na ang wiki ngayong hapon at mas gusto mong pag-usapan ang content kaysa ang structure. Ito ang may pinakamaliit na bilang ng kailangang patakbuhin: isang PHP application at isang MySQL database. Angkop ito para sa internal runbooks at documentation para sa customer, pati sa mga team na karamihan sa mga writer ay hindi engineer. Ito rin ang pinakamadaling i-back up sa tatlo, dahil ang buong state ay binubuo ng isang database dump at ng uploads directory.

Piliin ang Wiki.js kung kailangan mo ng partikular na editor o authentication strategy na hindi iniaalok ng iba, o kung nag-iimport ka ng malaking koleksiyon ng kasalukuyang Markdown o AsciiDoc at gusto mong mapanatili ang path structure. Tanggapin na mas mabigat na stack ang patatakbuhin mo, at i-pin ang major version tag.

Piliin ang Outline kung pinakamahalaga ang kalidad ng pagsusulat, para sa team at hindi para sa publiko ang wiki, at mayroon ka nang identity provider. Kapalit nito, makukuha mo ang editor na talagang gustong gamitin ng mga tao. Huwag itong piliin bilang una mong self-hosted application.

Kung wala sa tatlo ang angkop, kadalasan ay content type ang hindi tugma. Ang mga na-scan na invoice at contract ay mas angkop sa isang document management system gaya ng Paperless-ngx kaysa sa wiki, at ang sapilitang paglalagay sa mga ito sa wiki ang dahilan kung bakit maraming wiki ang nauuwi sa pag-abandona. Para sa mas malawak na pagtingin sa iba pang maaaring ilagay sa sarili mong server, tingnan ang shortlist ng self-hosting para sa 2026.

Pagpapaakma ng laki at mga backup

Ang lahat ng tatlo ay kasya sa isang maliit na VPS, ngunit nagkakaiba ang praktikal na minimum dahil sa mga component na nasa likod ng bawat isa. Ang BookStack ay binubuo ng isang application process at MySQL. Ang Wiki.js ay binubuo ng isang Node process at PostgreSQL. Ang Outline ay binubuo ng isang Node process, PostgreSQL, at Redis. Karaniwan din itong may kasamang identity provider, kaya ito ang dapat bigyan ng karagdagang memory.

Sabay na i-back up ang database at mga upload, at i-restore ang dalawang ito sa isang pansamantalang instance nang isang beses bago umasa sa backup na iyon. Ang backup ng wiki na hindi pa na-restore ay hula lamang. Para sa BookStack, nangangahulugan ito ng mysqldump at ng /config volume. Para sa Wiki.js at Outline, nangangahulugan ito ng pg_dump at ng data volume. Para sa Outline, isama rin ang anumang nasa FILE_STORAGE_LOCAL_ROOT_DIR.

FAQ

Aling self-hosted wiki ang pinakamadaling i-install?

BookStack. Isa itong PHP application na may MySQL database, at may installation script ang proyekto para sa Ubuntu 24.04 na nagse-set up ng Apache, MySQL 8.0 at PHP 8.3 sa isang run. Kailangan lang ng container image ng APP_KEY at mga kredensyal ng database. Nagdaragdag ang Wiki.js ng Node runtime at PostgreSQL server, habang nagdaragdag naman ang Outline ng Redis at external identity provider bukod dito.

Magagamit ko ba ang Outline nang walang Google o ibang SSO provider?

Hindi. Walang local username at password login ang Outline. Nakasaad sa sample configuration nito na kailangan ang kahit isang third-party sign-in provider; kung wala, wala kang anumang sign-in option. Maaari mong gamitin ang Google, Slack, Microsoft Entra, Discord, o anumang generic na OpenID Connect server gaya ng self-hosted Keycloak o Authentik. Bahagi ng gastos sa pagpapatakbo ng Outline ang pagpapatakbo ng provider na iyon.

Dapat ko bang i-install ang Wiki.js 3 o Wiki.js 2?

Version 2. Noong July 2026, ang pinakabagong version 2 release ay 2.5.314, na inilabas noong May 2026. Malinaw na sinasabi sa documentation ng version 3 na isa itong unstable beta na hindi dapat i-install sa production. I-pin ang image mo sa ghcr.io/requarks/wiki:2 sa halip na latest, dahil binabago ng major version change ang database schema habang tumatakbo ang instance.

Magkakaiba ang kanilang mga kalakasan. Nagbibigay ang BookStack sa mga reader ng query language na may exact phrases, mga tag filter gaya ng [location=london], at mga metadata filter gaya ng {created_after:2016-12-30}. Maaaring i-negate ang alinman sa mga terminong iyon gamit ang nauunang -. Walang kailangang configuration ang Outline at hinahanap nito ang text sa loob ng mga na-upload na file. Pinakamadaling i-tune ang Wiki.js dahil ikaw ang pumipili ng engine, at sulit lumipat sa PostgreSQL engine sa sandaling lumampas ang wiki mo sa ilang daang page.

Maaari ko bang ilipat ang content ko mula sa isa papunta sa iba sa hinaharap?

Bahagya, at dapat mong asahan ang manual na trabaho. Nag-e-export at nag-i-import ng Markdown ang tatlo, kaya karaniwang napapanatili ang text ng page. Hindi maayos na napapanatili ang structure: walang katumbas sa nested documents ng Outline ang books at chapters ng BookStack, at hindi nagmamapa ang mga path ng Wiki.js sa fixed hierarchy ng BookStack. Ang attachments, permissions at page history ang pinakamalamang na mawala, kaya mag-export muna ng sample at suriin ang mga iyon bago ka magpasya sa migration.

#bookstack#wikijs#outline#wiki#self-hosting#knowledge-base