Pilihan Wiki Self-Hosted: BookStack vs Wiki.js vs Outline
Bandingkan BookStack, Wiki.js dan Outline untuk dokumentasi pasukan. Ketahui perbezaan dari segi model penyuntingan, keperluan pelayan dan sistem log masuk untuk pilihan terbaik.
Wiki yang manakah patut anda jalankan secara self-hosted
Wiki yang dihoskan sendiri meletakkan dokumen pasukan anda di satu tempat yang boleh dicari pada pelayan yang anda kawal. BookStack, Wiki.js, dan Outline semuanya melaksanakan tugas tersebut. Perbezaan utama antara ketiganya ialah jumlah persediaan yang diperlukan sebelum halaman pertama dimuatkan, serta siapa yang dibenarkan untuk log masuk.
BookStack adalah yang paling ringan untuk disediakan dan mempunyai struktur yang paling tetap. Wiki.js memberikan anda pilihan editor yang paling luas dalam satu pepohon halaman. Outline mempunyai pengalaman penulisan terbaik antara ketiga-tiganya, dan persediaan pengeluaran (production setup) yang didokumentasikan memerlukan pembekal identiti luaran untuk mencipta ruang kerja awal.
Segala maklumat di bawah dibaca daripada dokumentasi projek itu sendiri dan fail konfigurasi yang diterbitkan. Ini adalah perbandingan keupayaan, bukan penanda aras. Nombor versi dan keperluan disertakan dengan tarikh kerana ketiga-tiga projek ini sentiasa berubah.
Struktur ialah pilihan sebenar
BookStack menetapkan bentuk kandungan anda. Halaman berada di dalam buku, buku boleh mengandungi bab, dan rak mengumpulkan buku. Anda tidak boleh mencipta tahap kelima. Had tersebut adalah produk itu sendiri: penulis baharu tahu di mana letaknya sesuatu halaman kerana hanya ada satu tempat yang mungkin. Kosnya ialah kandungan yang tidak menepati bentuk tersebut akan dipaksa masuk ke dalamnya.
Wiki.js menggunakan pepohon laluan, seperti folder pada cakera. Halaman pada ops/backup/restic terletak di mana sahaja anda meletakkannya, dan anda memilih kedalamannya. Tiada apa yang menghalang dua orang daripada memfailkan subjek yang sama di bawah dua cawangan yang berbeza, jadi instans Wiki.js memerlukan seorang individu yang menguruskan pepohon tersebut.
Outline menggunakan koleksi dengan dokumen yang bersarang di dalam dokumen lain. Memindahkan dokumen dilakukan dengan menyeret menggunakan tetikus. Ia adalah yang paling fleksibel antara ketiga-tiganya, jadi ia juga yang paling mudah untuk menjadi tidak teratur.
BookStack: pemasangan paling ringkas
BookStack ialah aplikasi PHP yang disokong oleh MySQL. Setakat Oktober 2026, keperluan yang didokumentasikan ialah PHP 8.2 atau lebih baharu dan sama ada MySQL 8.0 atau MariaDB 10.6 atau lebih baharu, serta Composer 2.2 atau lebih baharu jika anda memasang daripada sumber. Barisan keluaran semasa ialah 26.09, yang dikeluarkan pada 24 September 2026, dan keluaran stabil terbaharu ialah 26.09.2, iaitu keluaran keselamatan bertarikh 20 Oktober 2026. Bermula daripada versi 26.09, nilai APP_KEY mesti ditetapkan, yang mana langkah kontena di bawah telah pun merangkuminya. BookStack juga menerbitkan notis keselamatan PHP kritikal pada 21 Oktober 2026: kemas kini pakej PHP asas atau tarik dan cipta semula kontena dengan imej yang telah ditampal (patched), kerana versi BookStack sahaja tidak mengesahkan bahawa PHP telah ditampal.
Projek ini secara rasminya menyokong skrip pemasangan dan panduan untuk keluaran Ubuntu LTS yang disenaraikan, iaitu 22.04, 24.04 dan 26.04, serta kadangkala menerbitkan panduan dan skrip yang tidak disokong untuk persekitaran lain. Skrip 24.04 memasang Apache, MySQL 8.0 dan PHP 8.3 untuk anda. Pada 26.04, gunakan installation-ubuntu-26.04.sh dalam arahan di bawah sebaliknya; ia memasang MySQL 8.4 dan PHP 8.5.
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 amaran pada skrip tersebut sebelum anda menjalankannya. Dokumentasi menyatakan ia adalah "HANYA UNTUK OS BAHARU, ia akan memasang Apache, MySQL 8.0 & PHP 8.3 dan boleh MENIMPA mana-mana tetapan web sedia ada pada mesin". Skrip 24.04 menyemak konfigurasi Apache dan data MySQL sedia ada dan akan berhenti sebelum pemasangan jika ia menemui mana-mana daripadanya. Gunakan kontena di sana sebaliknya, atau pasang BookStack secara manual di atas LAMP stack sedia ada pada Ubuntu 24.04.
Laluan kontena menggunakan imej LinuxServer.io, salah satu daripada dua tetapan kontena komuniti yang disenaraikan dalam dokumentasi BookStack. BookStack memerlukan kunci penyulitan sesi dan tidak akan memaparkan halaman tanpanya, jadi jana kunci tersebut terlebih dahulu.
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkeySalin nilai yang dicetak ke dalam APP_KEY, kemudian tulis servis tersebut. Servis ini juga memerlukan pangkalan data MySQL atau MariaDB yang sedia ada; tetapkan nilai DB_* agar sepadan dengannya, kerana coretan ini tidak mencipta servis pangkalan data.
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 perlu sepadan dengan alamat yang ditaip oleh pembaca, termasuk skema dan sebarang port. Tetapkannya kepada http://localhost dan kemudian hidangkan tapak melalui HTTPS, jika tidak, pautan dan ubah hala yang dijana akan menghala ke hos yang salah, yang dilihat oleh pembaca sebagai halaman log masuk yang berpatah balik kepada dirinya sendiri. Jika fail compose adalah perkara baharu bagi anda, mulakan dengan asas Docker Compose pada VPS sebelum yang ini.
Naikkan servis dan semak sama ada aplikasi menjawab, bukan sekadar kontena sedang berjalan:
docker compose up -d
docker compose ps
curl -sI http://127.0.0.1:6875/login200 OK bermaksud aplikasi PHP telah but dan mencapai pangkalan data. 500 memerlukan log ralat aplikasi untuk didiagnosis. Secara lalai, BookStack menulis ralatnya ke dalam fail log dan bukannya ke output kontena, jadi buka ./config/log/bookstack/laravel.log pada hos untuk melihat puncanya. docker compose logs bookstack menunjukkan mesej permulaan kontena itu sendiri, yang mungkin tidak menyertakan ralat aplikasi.
Wiki.js: satu pohon, beberapa penyunting
Wiki.js ialah aplikasi Node.js. Persediaan Docker yang didokumentasikan menggandingkannya dengan PostgreSQL, walaupun perisian ini juga menerima MySQL, MariaDB, MSSQL dan SQLite. Ini ialah fail compose daripada halaman Docker projek 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:Tukar POSTGRES_PASSWORD dan DB_PASS serentak sebelum anda menjalankannya, kerana ia merupakan satu kelayakan dan nilai contoh tersebut adalah awam. Tag tersebut dipinkan pada ghcr.io/requarks/wiki:2 dengan sengaja. Dokumentasi tidak mengesyorkan latest, memandangkan lonjakan versi utama akan mengubah skema pangkalan data di bawah instans yang sedang berjalan.
Versi 2 ialah baris untuk dijalankan. Setakat 27 Oktober 2026, keluaran versi 2 terbaharu ialah 2.5.317, binaan pembetulan pepijat dari 23 Oktober 2026 yang membina semula imej dengan kemas kini keselamatan Node terkini. Keluaran versi 2 kini diterbitkan daripada repositori requarks/wiki-v2 yang berasingan, dan tag imej :2 masih menjejaki keluaran tersebut. Versi 3 berada dalam beta awam. Dokumentasi pemasangannya menyatakan bahawa imejnya ditag 3.0.0-beta dan tag biasa 3 serta 3.0 tidak akan berfungsi sehingga fasa beta berakhir. Anggap ia sebagai pratonton, bukan sasaran pengeluaran. Keluaran sebelumnya, 2.5.316 dari 2 Oktober 2026, menambah utiliti eksport untuk memindahkan kandungan ke versi 3 kemudian.
Pada muatan pertama, Wiki.js akan memandu anda melalui persediaan dalam pelayar yang mencipta akaun pentadbir. Selagi anda belum menyelesaikannya, sesiapa sahaja yang mencapai port tersebut akan mendapat wizard itu, jadi letakkan servis di belakang reverse proxy dan TLS (transport layer security) anda sebelum anda membuka firewall. Wiki pada hostname sendiri secara semula jadinya terletak di belakang Traefik di hadapan beberapa aplikasi Docker apabila pelayan mengehos lebih daripada satu servis ini.
Pilihan penyunting adalah sebab orang memilih Wiki.js. Satu instans boleh memuatkan halaman Markdown, halaman penyunting visual, halaman HTML mentah dan halaman AsciiDoc secara bersebelahan. Ini membantu apabila anda mengimport kandungan lama dalam format yang anda lebih suka untuk tidak ditukar. Ia juga merupakan cara untuk berakhir dengan empat gaya rumah dalam satu wiki, jadi tentukan penyunting lalai pada hari pertama dan catatkan keputusan tersebut.
Garis panduan: editor terbaik, prasyarat paling berat
Garis panduan (Outline) adalah apa yang dimaksudkan oleh orang ramai apabila mereka mahukan sesuatu yang terasa seperti alat nota komersial. Ia merupakan aplikasi Node.js, dan keluaran semasa setakat 27 Oktober 2026 ialah 1.12.0, bertarikh 23 Oktober 2026. Keluaran tersebut memindahkan imej Docker-nya kepada versi Node yang membaiki beberapa kerentanan Node yang baru didedahkan, jadi kemas kini pemasangan yang lebih lama. Fail persekitaran contohnya menyenaraikan perkara yang diperlukan: PostgreSQL melalui DATABASE_URL, Redis melalui REDIS_URL, dua rahsia rawak, dan URL yang boleh dicapai secara awam.
openssl rand -hex 32
openssl rand -hex 32Jalankan arahan itu dua kali dan simpan kedua-dua nilai tersebut. Yang pertama menjadi SECRET_KEY, yang kedua menjadi UTILS_SECRET. Teras fail persekitaran kemudiannya kelihatan 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 betul apabila pangkalan data berada pada mesin yang sama atau rangkaian Docker yang sama. Jangan sertakan parameter ini untuk pangkalan data yang dicapai merentasi rangkaian, atau sambungan tersebut akan dihantar dalam bentuk teks jelas (clear text). Lampiran tidak lagi memaksa anda menggunakan storan objek: FILE_STORAGE=local menulis muat naik ke direktori di atas, yang mestinya merupakan volum yang boleh ditulis oleh kontena dan sesuatu yang disertakan dalam sandaran anda. Tetapkan FILE_STORAGE=s3 dengan nilai AWS_* sebaliknya jika anda mahukan fail tersebut berada dalam bucket yang serasi dengan S3.
Sekarang bahagian yang mengejutkan orang ramai. Outline tidak mempunyai log masuk nama pengguna dan kata laluan terbina dalam. Konfigurasi contohnya sendiri menyatakan kelayakan log masuk pihak ketiga diperlukan: "sekurang-kurangnya SATU DARIPADA ini diperlukan untuk pemasangan yang berfungsi atau anda tidak akan mempunyai pilihan log masuk". Penyedia yang didokumenkan termasuk Google, Slack, Microsoft Entra, Discord, dan mana-mana pelayan OpenID Connect (OIDC) generik melalui OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI dan OIDC_USERINFO_URI. Ruang kerja sedia ada juga boleh mendayakan kunci laluan (passkeys) dan pautan atau kod e-mel; log masuk e-mel memerlukan SMTP dan tidak memintas SSO untuk akaun yang dipautkan kepada penyedia SSO.
Jadi, kos sebenar bagi persediaan pengeluaran Outline yang didokumenkan ialah Outline ditambah PostgreSQL ditambah Redis ditambah penyedia identiti. Jika pasukan anda sudah log masuk dengan Google Workspace atau Microsoft Entra, Outline menjadi sangat menarik. Jika tidak, anda juga perlu mengurus sendiri sesuatu seperti Keycloak atau Authentik, yang merupakan servis kedua untuk ditampal (patch) dan disandarkan. Peruntukkan memori dengan sewajarnya: panduan Outline sendiri adalah kira-kira 512 MB bagi setiap proses web, ditetapkan oleh WEB_CONCURRENCY, di samping pangkalan data dan Redis.
Bagaimana setiap satu mengendalikan siapa yang boleh membaca apa
BookStack mempunyai akaun e-mel dan kata laluan tempatan secara lalai, serta menyokong LDAP, SAML2 dan OIDC sebagai alternatif. Kebenaran ditetapkan mengikut peranan dan boleh diatasi pada peringkat rak, buku, bab atau halaman tunggal. Kebenaran buku dan bab diwarisi oleh kandungan anak melainkan diatasi; kebenaran rak mesti disalin ke buku secara eksplisit.
Wiki.js juga menyediakan akaun tempatan dan menambah senarai panjang strategi yang boleh anda aktifkan di kawasan pentadbir. Peraturan halamannya memberi atau menafikan akses mengikut corak laluan. Ini berkuasa tetapi mudah tersilap, kerana peraturan yang ditulis untuk ops/* secara senyap meliputi setiap halaman yang anda failkan di bawah laluan tersebut kemudiannya.
Outline menggunakan pembekal identiti anda untuk keahlian SSO, dan di dalam Outline anda mengawal akses mengikut koleksi, dokumen dan kumpulan. Pengguna yang dibuang daripada pembekal identiti akan dilog keluar apabila mereka memuatkan Outline seterusnya; gantung akaun mereka di dalam Outline untuk menamatkan sesi sedia ada dengan serta-merta.
Bagaimana carian berfungsi dalam setiap perisian
Carian ialah ciri yang menentukan sama ada wiki anda berguna atau sekadar menjadi folder fail yang dilupakan.
BookStack mencari dalam pangkalan data dan menyediakan bahasa pertanyaan yang boleh dipelajari oleh pembaca dalam masa seminit. Memetik frasa, seperti dalam "london meeting", memerlukan rentetan yang tepat. Kurungan segi empat sama mencari tag: [location=london] memadankan mengikut nama tag, nilai, atau kedua-duanya, dengan perbandingan termasuk !=, >= dan like. Kurungan kerinting menapis berdasarkan metadata, seperti dalam {created_after:2016-12-30}. Mana-mana istilah tepat, tag, atau penapis boleh dinafikan dengan meletakkan - sebagai awalan. BookStack mengehadkan bilangan istilah bagi setiap jenis dalam satu pertanyaan, jadi pertanyaan yang terlalu panjang akan dipotong dan bukannya dijalankan.
Wiki.js menganggap carian sebagai modul yang boleh dipalamkan. Enjin yang didokumentasikan ialah enjin pangkalan data asas, enjin PostgreSQL, Elasticsearch, Algolia, AWS CloudSearch dan Azure Search. Enjin asas memadankan tajuk, penerangan dan laluan dan bukannya kandungan badan halaman. Jika anda menjalankan PostgreSQL, tukar kepada enjin PostgreSQL di kawasan pentadbir, kerana ia menggunakan indeks teks penuh pangkalan data itu sendiri dan bukannya padanan ringkas. Gunakan Elasticsearch untuk wiki yang cukup besar sehingga anda sanggup menjalankan dan menyelenggara servis carian tambahan.
Outline mencari dalam indeks teks penuh PostgreSQL. Carian kata kunci terbina dalamnya tidak memerlukan servis carian yang berasingan. Bagi wiki pasukan yang mempunyai jumlah dokumen dalam lingkungan beberapa ribu, ini merupakan pilihan yang paling kurang memerlukan penyelenggaraan antara ketiga-tiganya.
Pilihan yang sesuai untuk anda
Pilih BookStack jika anda mahu wiki beroperasi pada petang ini dan anda lebih gemar berdebat tentang kandungan berbanding struktur. Ia mempunyai komponen paling sedikit: satu aplikasi PHP dan satu pangkalan data MySQL. Ia sesuai untuk buku panduan dalaman dan dokumentasi pelanggan, serta sesuai untuk pasukan yang kebanyakan penulisnya bukan jurutera. Ia juga yang paling mudah untuk disandarkan antara ketiga-tiganya, kerana keadaannya terdiri daripada satu dump pangkalan data ditambah dengan fail yang dimuat naik dan konfigurasi .env, termasuk APP_KEY.
Pilih Wiki.js jika anda memerlukan editor khusus atau strategi pengesahan tertentu yang tidak ditawarkan oleh yang lain, atau jika anda mengimport sejumlah besar Markdown atau AsciiDoc sedia ada dan mahu struktur laluan dikekalkan. Terima hakikat bahawa anda menjalankan stack yang lebih berat, dan tetapkan tag versi utama.
Pilih Outline jika kualiti penulisan adalah perkara paling utama, wiki tersebut adalah untuk pasukan dan bukannya untuk orang awam, dan anda sudah mempunyai pembekal identiti. Ia memberikan ganjaran kepada persediaan tersebut dengan editor yang benar-benar digemari oleh pengguna. Jangan pilih ia sebagai aplikasi self-hosted pertama anda.
Jika tiada satu pun daripada ketiga-tiganya yang sesuai, ketidakpadanan biasanya berpunca daripada jenis kandungan. Invois dan kontrak yang diimbas lebih sesuai diletakkan dalam sistem pengurusan dokumen seperti Paperless-ngx berbanding dalam wiki, dan memaksa ia dimasukkan ke dalam wiki adalah sebab mengapa banyak wiki akhirnya terbiar. Satu lagi ketidakpadanan yang biasa berlaku ialah keinginan untuk mempunyai ruang kerja (workspace) dan bukannya wiki, dengan dokumen, jadual dan papan putih pada satu kanvas, di mana ruang kerja AFFiNE yang dihoskan sendiri lebih sesuai daripada ketiga-tiga pilihan di atas. Untuk pandangan yang lebih luas tentang apa lagi yang layak diletakkan pada pelayan anda sendiri, lihat senarai pendek self-hosting untuk 2026.
Saiz dan sandaran
Ketiga-tiga aplikasi ini boleh dimuatkan pada VPS bersaiz kecil, namun keperluan sebenar berbeza bergantung pada komponen di sebalik setiap aplikasi. BookStack terdiri daripada satu proses aplikasi dan MySQL. Wiki.js terdiri daripada proses Node dan PostgreSQL. Outline pula terdiri daripada proses Node, PostgreSQL dan Redis, biasanya dengan penyedia identiti (identity provider) yang disertakan bersama, itulah sebabnya ia memerlukan memori tambahan.
Sandarkan pangkalan data dan fail muat naik secara serentak, kemudian lakukan pemulihan ke dalam instans sementara sekurang-kurangnya sekali sebelum anda bergantung pada sandaran tersebut. Sandaran wiki yang tidak pernah dipulihkan hanyalah satu andaian. Bagi BookStack, ini bermaksud mysqldump serta volum /config. Bagi Wiki.js dan Outline, ini bermaksud pg_dump serta volum data, dan bagi Outline, ia juga merangkumi apa sahaja yang terkandung dalam FILE_STORAGE_LOCAL_ROOT_DIR.
FAQ
Wiki yang dihoskan sendiri manakah yang paling mudah dipasang?
BookStack. Ia merupakan aplikasi PHP tunggal dengan pangkalan data MySQL, dan projek tersebut menyediakan skrip pemasangan untuk Ubuntu 24.04 yang menyediakan Apache, MySQL 8.0 dan PHP 8.3 dalam satu proses. Imej kontena memerlukan APP_KEY, APP_URL dan kelayakan untuk pangkalan data sedia ada. Wiki.js menambah runtime Node dan pelayan PostgreSQL, manakala Outline menambah Redis dan penyedia identiti luar untuk persediaan awal yang didokumentasikan.
Bolehkah saya menggunakan Outline tanpa Google atau penyedia SSO lain?
Persediaan pengeluaran yang didokumentasikan memerlukan penyedia untuk mencipta ruang kerja awal. Outline tidak mempunyai log masuk nama pengguna dan kata laluan tempatan. Contoh konfigurasinya menyatakan bahawa sekurang-kurangnya satu penyedia log masuk pihak ketiga diperlukan, atau anda tidak akan mempunyai sebarang pilihan log masuk. Anda boleh menggunakan Google, Slack, Microsoft Entra, Discord atau mana-mana pelayan OpenID Connect generik seperti Keycloak atau Authentik yang dihoskan sendiri. Ruang kerja sedia ada boleh mendayakan passkey atau pautan dan kod e-mel, dengan SMTP diperlukan untuk log masuk e-mel; akaun yang dipautkan kepada SSO masih menggunakan penyedia tersebut.
Patutkah saya memasang Wiki.js 3 atau Wiki.js 2?
Versi 2. Setakat 27 Oktober 2026, keluaran versi 2 terbaharu ialah 2.5.317, bertarikh 23 Oktober 2026, dan versi 3 masih dalam beta yang imejnya membawa tag 3.0.0-beta. Tetapkan imej anda kepada ghcr.io/requarks/wiki:2 dan bukannya latest, kerana perubahan versi utama akan mengubah skema pangkalan data pada instans yang sedang berjalan.
Yang manakah mempunyai carian terbaik?
Kesemuanya mempunyai kelebihan tersendiri. BookStack memberikan pembaca bahasa pertanyaan dengan frasa tepat, penapis tag seperti [location=london] dan penapis metadata seperti {created_after:2016-12-30}, dan mana-mana istilah tersebut boleh dinafikan dengan meletakkan - di hadapan. Carian kata kunci terbina dalam Outline tidak memerlukan perkhidmatan carian berasingan. Wiki.js adalah yang paling boleh dilaraskan, kerana anda memilih enjinnya, dan enjin PostgreSQL mencari kandungan badan halaman yang tidak dicari oleh enjin asas.
Bolehkah saya memindahkan kandungan saya daripada satu aplikasi ke aplikasi lain kemudian hari?
Sebahagiannya boleh, dan anda harus menjangkakan kerja manual. Kesemua tiga aplikasi mengeksport Markdown, tetapi import terbina dalam BookStack hanya menerima format Portable ZIP miliknya, jadi Markdown sahaja bukanlah laluan import terus ke dalam BookStack. Struktur tidak akan dipindahkan dengan sempurna: buku dan bab BookStack tidak mempunyai padanan dalam dokumen bersarang Outline, dan laluan Wiki.js tidak dipetakan kepada hierarki tetap BookStack. Lampiran, kebenaran dan sejarah halaman adalah bahagian yang paling berkemungkinan hilang, jadi eksport sampel dan semak perkara tersebut sebelum anda melakukan migrasi.