Wiki.js یکی از محبوبترین راهکارهای متنباز برای ایجاد پایگاه دانش و مستندسازی سازمانی است که به تیمها کمک میکند مستندات، فرایندها و دانش فنی خود را بهجای فایلها و ابزارهای پراکنده، در یک مخزن متمرکز نگهداری و مدیریت کنند. در این مقاله بررسی میکنیم که Wiki.js چیست، چه مزایا و معایبی دارد، چه تفاوتی با ابزارهای مشابه دارد و مراحل نصب Wiki.js با Docker چگونه انجام میشود.
ابزار Wiki.js چیست و چه ویژگیهایی دارد؟
Wiki.js یک نرمافزار ویکی سازمانی متنباز و Self-Hosted است که برای مدیریت دانش، مستندسازی سازمانی و ایجاد ویکی داخلی سازمان استفاده میشود. این پلتفرم بر پایه Node.js توسعه یافته و از دیتابیس PostgreSQL برای ذخیرهسازی دادهها استفاده میکند.
سازمانها میتوانند Wiki.js را روی سرور اختصاصی، ماشین مجازی یا کانتینرهای Docker اجرا کنند و مدیریت مستندات، دسترسی کاربران و زیرساخت نرمافزار را در محیط خود انجام دهند. همچنین این پلتفرم از روشهای مختلف احراز هویت، ویرایش محتوا و یکپارچهسازی با ابزارهای توسعه، پشتیبانی میکند. برخی از قابلیتهای اصلی Wiki.js عبارتاند از:
- ویرایشگرهای چندگانه: پشتیبانی از Markdown، ویرایشگر بصری (WYSIWYG) و HTML برای گروههای مختلف کاربران
- همگامسازی با Git: امکان اتصال به مخازن Git برای نسخهبندی و نگهداری مستندات
- احراز هویت سازمانی: پشتیبانی از LDAP ،SAML و OAuth2 برای مدیریت دسترسی کاربران
- معماری ماژولار: امکان فعال یا غیرفعال کردن ماژولهای مختلف بر اساس نیاز سازمان
چرا شرکتها به Wiki داخلی نیاز دارند؟
ویکی داخلی سازمان ابزاری برای ثبت و نگهداری دانش سازمانی، مستندات فنی و فرایندهای کاری است. استفاده از این ابزارها به تیمها کمک میکند دانش و مستندات سازمانی به افراد وابسته نباشد و در یک پایگاه دانش متمرکز نگهداری شود. رایجترین کاربردهای یک نرمافزار ویکی سازمانی عبارتاند از:
- ثبت Runbookها و دستورالعملهای عملیاتی برای عیبیابی و مدیریت رخدادها
- مستندسازی معماری سیستم، سرویسها، تنظیمات و فرایندهای فنی
- تسهیل فرایند آنبوردینگ نیروهای جدید از طریق دسترسی به مستندات متمرکز
- مدیریت سیاستها، رویهها و سطوح دسترسی در بخشهای مختلف سازمان
مزایای Wiki.js چیست؟
ابزار Wiki.js بهعنوان یک نرمافزار ویکی سازمانی، امکانات موردنیاز تیمهای فنی و کاربران غیرفنی را در یک پلتفرم واحد ارائه میکند. بررسی مزایای زیر به خوبی نشان میدهد که دلیل محبوبیت ویکی جی اس چیست:
- ویرایشگرهای چندگانه: Wiki.js از Markdown، ویرایشگر بصری (WYSIWYG) و HTML پشتیبانی میکند. این موضوع باعث میشود کاربران فنی و غیرفنی بتوانند با روش موردنظر خود مستندات را ایجاد و ویرایش کنند.
- همگامسازی با Git: امکان اتصال به مخازن GitHub و GitLab برای نسخهبندی و نگهداری مستندات فراهم است. این قابلیت به تیمهای فنی کمک میکند تاریخچه تغییرات مستندات را مدیریت کنند، از محتوا نسخه پشتیبان داشته باشند و در صورت نیاز، مستندات را بین زیرساختها یا محیطهای مختلف جابهجا کنند.
- احراز هویت سازمانی: Wiki.js از LDAP ،SAML ،OAuth2 و احراز هویت دو عاملی (2FA) پشتیبانی میکند و امکان یکپارچهسازی با زیرساختهای هویتی سازمان را فراهم میکند.
- نصب و استقرار ساده: نصب Wiki.js با Docker و Docker Compose بهسادگی انجام میشود و فرایند راهاندازی آن روی بسیاری از محیطهای لینوکسی از جمله نصب Wiki.js روی Ubuntu هم پیچیدگی زیادی ندارد.
- عملکرد سبک: این پلتفرم بر پایه Node.js توسعه یافته و برای اجرا به منابع سختافزاری محدودی نیاز دارد.
- پشتیبانی از دیاگرام و مستندات فنی: امکان استفاده از ابزارهایی مانند draw.io ،Mermaid و PlantUML برای ایجاد فلوچارتها، نمودارها و مستندات معماری وجود دارد.
- معماری ماژولار: مدیر سیستم میتواند برخی قابلیتها و ماژولها را بر اساس نیاز سازمان فعال یا غیرفعال کند.
- پشتیبانی از زبانهای مختلف و RTL: ویکی جی اس از زبانهای مختلف پشتیبانی میکند و با زبانهای راستبهچپ نیز سازگار است. این قابلیت برای ایجاد یک ویکی داخلی سازمان به زبان فارسی کاربردی است.
- مدیریت دسترسی: امکان تعریف سطوح دسترسی مبتنی بر گروهها و مسیر صفحات (Path-based Permissions) برای کنترل دسترسی کاربران وجود دارد.
- موتور جستجو: سیستم جستجوی داخلی مبتنی بر PostgreSQL امکان جستجوی متن کامل در مستندات را فراهم میکند و در برخی سناریوها قابلیت استفاده از Elasticsearch نیز وجود دارد.
- شخصیسازی و چندسکویی: این ابزار از حالت روشن و تاریک پشتیبانی میکند و امکان استفاده از CSS و JavaScript سفارشی را در اختیار مدیران قرار میدهد. همچنین روی لینوکس، ویندوز و macOS قابل اجرا است.
معایب ویکی جی اس چیست؟
برای انتخاب هوشمندانه یک نرمافزار، شناخت مزایا کافی نیست و باید بدانید چالشها و معایب Wiki.js چیست. مهمترین نقاط ضعف این ابزار عبارتند از:
- وضعیت نسخه v3: توسعه نسخه سوم Wiki.js طی چند سال گذشته ادامه داشته است، اما تا سال ۲۰۲۶ نسخه v2 همچنان نسخه اصلی و پایدار محسوب میشود. به همین دلیل بهتر است ارزیابی فنی بر اساس قابلیتهای موجود انجام شود.
- عدم پشتیبانی از ویرایش همزمان: Wiki.js قابلیت ویرایش همزمان یک صفحه توسط چند کاربر را مشابه ابزارهایی مانند Confluence یا Google Docs ارائه نمیکند.
- وابستگی به PostgreSQL: هرچند پشتیبانی از چند پایگاه داده در برخی بخشها مطرح شده است، اما PostgreSQL همچنان مهمترین و رایجترین گزینه برای استفاده از قابلیتهای اصلی پلتفرم محسوب میشود.
- برخی قابلیتهای محدود یا در حال توسعه: بخشهایی مانند سیستم نظرات یا برخی قابلیتهای ویرایشگر بصری ممکن است نسبت به برخی رقبا امکانات کمتری در اختیار کاربران قرار دهند.
- نبود سیستم Template داخلی: برای ساخت صفحات تکرارشونده، قابلیت قالبسازی داخلی محدودی وجود دارد و در برخی سناریوها لازم است ساختار صفحات بهصورت دستی ایجاد شود.
- منحنی یادگیری API: رابط برنامهنویسی کاربردی (API) مبتنی بر GraphQL انعطافپذیری بالایی ارائه میدهد، اما ممکن است برای تیمهایی که تجربه کار با GraphQL ندارند به زمان بیشتری برای یادگیری نیاز داشته باشد.
مقایسه Wiki.js با Confluence ،BookStack و MediaWiki
انتخاب ابزار مناسب برای مستندسازی سازمانی بستگی به نیازهای فنی، ساختار تیم، بودجه و نحوه استقرار زیرساخت دارد. برای درک بهتر اینکه تفاوت Wiki.js با سایر راهکارهای مطرح چیست، میتوان آن را در کنار Confluence ،BookStack و MediaWiki بررسی کرد.

کانفلوئنس یک پلتفرم تجاری است که بهصورت گسترده در سازمانها برای همکاری تیمی، مدیریت دانش و مستندسازی استفاده میشود. در سمت مقابل، Wiki.js بهعنوان یک نرمافزار ویکی سازمانی متنباز، امکان استقرار روی زیرساخت اختصاصی سازمان را فراهم میکند و هزینه لایسنس ندارد.
BookStack هم یک راهکار متنباز برای مستندسازی سازمانی است که از ساختار سلسلهمراتبی مشخص (قفسه، کتاب، فصل و صفحه) استفاده میکند. این ساختار برای تیمهایی که به دنبال سازماندهی سادهتر محتوا هستند میتواند مناسب باشد.
MediaWiki که هسته اصلی ویکیپدیا را تشکیل میدهد، برای مدیریت پایگاههای دانش بزرگ و محتوای مشارکتی توسعه یافته است. در مقابل، Wiki.js تمرکز بیشتری بر استقرار سازمانی، یکپارچهسازی با Git و پشتیبانی از روشهای مختلف احراز هویت دارد. برای مقایسه دقیقتر، فاکتورهای کلیدی این چهار ابزار در جدول زیر آورده شده است.
| فاکتور کلیدی | Wiki.js | Confluence | BookStack | MediaWiki |
| نوع لایسنس و هزینه | رایگان و متنباز | تجاری (اشتراک ماهانه) | رایگان و متنباز | رایگان و متنباز |
| نحوه میزبانی (Hosting) | Self-Hosted (داکر/سرور اختصاصی) | فقط ابری / دیتا سنتر | Self-Hosted (سرور اختصاصی) | Self-Hosted (سرور اختصاصی) |
| ویرایش همزمان (Real-time) | ندارد | دارد (بسیار قدرتمند) | ندارد | ندارد |
| همگامسازی با Git | دارد (بومی و دوطرفه) | ندارد | ندارد | ندارد (نیاز به افزونه) |
| نوع ویرایشگر (Editor) | چندگانه (Markdown/بصری/HTML) | بصری پیشرفته | بصری + Markdown | Wikitext + بصری |
| احراز هویت سازمانی | بسیار جامع (LDAP ،SAML ،OIDC ،OAuth2 و ۱۵+ ارائهدهنده دیگر) | کامل (LDAP ،Active ،Directory ،SAML ،OIDC ،Crowd و Jira) | محدود (LDAP ،SAML ،OIDC) | محدود (نیازمند افزونه) |
| ساختار درختی صفحات | انعطافپذیر (فولدرهای درختی) | ساختار درختی و سلسلهمراتبی | ثابت (قفسه > کتاب > صفحه) | مسطح (دستهبندیمحور) |
| پشتیبانی از زبان فارسی | دارد (بومی و RTL) | دارد | دارد (ترجمه جامعه کاربری) | دارد |
| مناسب برای چه سازمانی؟ | تیمهای فنی، سازمانهای نیازمند استقرار داخلی، شرکتهای دارای زیرساخت Git و LDAP | سازمانهای بزرگ استفادهکننده از اکوسیستم Atlassian | تیمهای کوچک و متوسط که به راهاندازی ساده و سریع نیاز دارند | پایگاههای دانش بزرگ، پروژههای عمومی و جوامع کاربری گسترده |
راهنمای نصب Wiki.js با Docker
استفاده از Docker و Docker Compose، یکی از رایجترین روشها برای راهاندازی Wiki.js به شمار میآید. این روش روی اکثر توزیعهای لینوکس (مخصوصا برای نصب Wiki.js روی Ubuntu Server)، بسیار رایج و پایدار است. البته قبل از هرکاری باید پیشنیازهای زیر را فراهم کنید:
- سرور لینوکس با نصب Docker و Docker Compose نصبشده. میتوانید راهنمای آموزش نصب داکر و نصب Docker Compose استفاده کنید.
- حداقل ۱ گیگابایت رم (۲ گیگابایت توصیه میشود).
- دامنه اختصاصی برای دسترسی در محیط پروداکشن (اختیاری).
- یک مخزن Git برای همگامسازی محتوا (اختیاری).
گام اول: ایجاد ساختار پوشه پروژه
ابتدا باید پوشههای مورد نیاز را برای ماندگاری دادههای دیتابیس (Data Persist) ایجاد کنید و وارد آن شوید:
mkdir -p ~/wikijs/{db,config}
cd ~/wikijsگام دوم: ایجاد فایل docker-compose.yml
یک فایل با نام docker-compose.yml در همان پوشه بسازید و کانفیگ زیر را در آن قرار دهید:
version: "3.8"
services:
db:
image: postgres:16-alpine
container_name: wikijs-db
restart: unless-stopped
environment:
POSTGRES_DB: wikijs
POSTGRES_USER: wikijs
POSTGRES_PASSWORD: YOUR_STRONG_PASSWORD
volumes:
- ./db:/var/lib/postgresql/data
networks:
- wikijs-net
wikijs:
image: ghcr.io/requarks/wiki:2
container_name: wikijs
restart: unless-stopped
depends_on:
- db
ports:
- "3000:3000"
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: YOUR_STRONG_PASSWORD
DB_NAME: wikijs
networks:
- wikijs-net
networks:
wikijs-net:
driver: bridgeحتما مقدار YOUR_STRONG_PASSWORD را با یک رمز عبور مناسب جایگزین کنید. این مقدار باید در تنظیمات PostgreSQL و Wiki.js یکسان باشد تا اتصال به دیتابیس برقرار شود. همچنین مراقب باشید که فاصلهها و ساختار خطوط در فایل YAML تغییر نکند.
گام سوم: اجرا و بررسی لاگها
برای بالا آوردن کانتینرها در پسزمینه، دستور زیر را اجرا کنید:
docker compose up -dبرای بررسی وضعیت سرویس، لاگها را مشاهده کنید
docker compose logs -f wikijsدر صورت مشاهده پیام “Listening on port 3000″، سرویس با موفقیت راهاندازی شده است. سپس میتوانید آدرس زیر را در مرورگر باز کنید:
http://<SERVER-IP>:3000
در اولین ورود، صفحه راهاندازی اولیه Wiki.js نمایش داده میشود.
گام چهارم: تنظیم اولیه (Setup Wizard)
در اولین ورود، صفحه راهاندازی اولیه ظاهر میشود که اطلاعات زیر را از شما میخواهد:
- Administrator Account: ایمیل و رمز عبور مدیر ارشد سیستم را تعیین کنید.
- Site URL: آدرس نهایی دسترسی به ویکی را وارد کنید (مانند (https://wiki.your-domain.com ).
- Telemetry: وضعیت ارسال آمار ناشناس استفاده از ابزار را مشخص کنید.
پس از تکمیل این فرم، بهطور مستقیم وارد داشبورد مدیریت میشوید.
نکته: اگر Wiki.js را در محیط پروداکشن اجرا میکنید، بهتر است سرویس را پشت یک Reverse Proxy مانند Nginx یا Traefik قرار دهید. این روش امکان مدیریت گواهی SSL، استفاده از دامنه اختصاصی، هدایت ترافیک HTTPS و اعمال تنظیمات امنیتی را فراهم میکند. هرچند Wiki.js بهصورت مستقیم روی پورت ۳۰۰۰ اجرا میشود، اما در بسیاری از استقرارهای سازمانی دسترسی کاربران از طریق Reverse Proxy انجام میشود.
گام پنجم: تنظیم همگامسازی با Git
همگامسازی با Git (یا Git Sync) یکی از قابلیتهای Wiki.js برای نسخهبندی و نگهداری مستندات در مخازن Git است. این قابلیت امکان مدیریت تاریخچه تغییرات، نگهداری نسخههای قبلی و بکاپگیری از محتوای صفحات را فراهم میکند. برای فعالسازی این قابلیت مراحل زیر را انجام دهید:
مرحله اول: به مسیر Administration > Storage بروید.
مرحله دوم: روی گزینه Git کلیک کرده و آن را فعال کنید.
مرحله سوم: تنظیمات مخزن را در Wiki.js وارد کنید:
Authentication Type: SSH
Repository URL: git@github.com:your-org/wiki-content.git
Branch: main
SSH Private Key: (Deploy Key)
Sync Direction: Bi-directional
Sync Schedule: Every 5 minutesبازه زمانی همگامسازی را تنظیم کنید (مثلا هر ۵ دقیقه).
مرحله چهارم: یک Deploy Key ایجاد کنید:
ssh-keygen -t ed25519 -f ~/wikijs/git-deploy-key -N ""مرحله پنجم: کلید عمومی ایجادشده را بهعنوان Deploy Key در مخزن GitHub یا GitLab خود و با دسترسی write اضافه کنید.
نکته: همگامسازی با Git میتواند نسخهای از محتوای صفحات را در مخزن Git نگهداری کند، اما جایگزین بکاپ کامل Wiki.js نیست. از آنجا که اطلاعات اصلی پلتفرم در PostgreSQL ذخیره میشوند، توصیه میشود بهصورت منظم از پایگاه داده و فایلهای پیوست نسخه پشتیبان تهیه کنید. در محیطهای عملیاتی، استفاده از بکاپ خودکار برای دیتابیس و فضای ذخیرهسازی میتواند ریسک از دست رفتن اطلاعات را کاهش دهد.
گام آخر: بهروزرسانی Wiki.js
برای آپدیت پلتفرم به آخرین نسخه پایدار، کافیست کانتینرها را مجدداً Pull کنید تا فرایند مهاجرت دیتابیس (Migration) هم به طور خودکار انجام شود:
docker compose pull wikijs
docker compose up -d wikijsاجرای Wiki.js روی Cloud
با افزایش تعداد کاربران، حجم مستندات و نیازهای عملیاتی، معمولا نگهداری Wiki.js روی یک سرور واحد، چالشهایی مانند مدیریت بکاپ، بهروزرسانی، دسترسپذیری و مقیاسپذیری را ایجاد کند. بسیاری از سازمانها برای اینکه با این چالشها مواجه نشوند، این پلتفرم را روی زیرساختهای ابری اجرا میکنند تا بخشی از مدیریت زیرساخت و نگهداری سرویس سادهتر شود. معمولا برای استقرار Wiki.js در محیط ابری از دو الگوی رایج استفاده میشود:
راهاندازی روی سکوهای ابری (PaaS)
در این سناریو، نیازی به مدیریت سیستمعامل لینوکس یا پیکربندی دستی Docker ندارید و میتوانید با استفاده از ایمیج رسمی Wiki.js، سرویس را روی سکوی ابری مستقر کنید. همچنین برخی سکوهای ابری هم قابلیتهایی مانند مقیاسپذیری خودکار را در اختیار شما قرار میدهند.
معماری ابری مدیریتشده (Managed Services)
برای تضمین امنیت و پایداری در محیطهای پروداکشن، پلتفرم ابری خود را بر پایه فاکتورهای زیر پیکربندی کنید:
- دیتابیس ابری مدیریتشده (Managed PostgreSQL): بهجای اجرای PostgreSQL درون کانتینر، میتوانید Wiki.js را به یک سرویس دیتابیس مدیریتشده متصل کنید تا مدیریت بکاپ، بهروزرسانی و نگهداری پایگاه داده سادهتر شود.
- ذخیرهسازی ابری فایلها (Object Storage): میتوانید از طریق مسیر `Administration > Storage` سرویسهای ذخیرهسازی سازگار با S3 را برای نگهداری تصاویر و فایلهای پیوست مستندات پیکربندی کنید.
- همگامسازی با Git: اتصال Wiki.js به مخازن GitHub یا GitLab، امکان نسخهبندی و نگهداری مستندات در یک مخزن مجزا را فراهم میکند.
راهاندازی Wiki.js بدون مدیریت زیرساخت
برای راهاندازی سریعتر Wiki.js، میتوانید از نسخه آماده این نرمافزار در بازارچه همروش استفاده کنید. در این روش، نصب Docker، استقرار و بهروزرسانی سرویس و بخشی از مدیریت زیرساخت بهصورت خودکار انجام میشود تا تیمها بتوانند بهجای صرف زمان برای پیکربندی و نگهداری، روی تولید و مدیریت مستندات تمرکز کنند.
💡 سرویس Wiki.js همروش؛ راهاندازی سریع و ساده
یکی از پایدارترین و با تجربه ترین سرویس دهندگان دیتابیس ابری و مدیریت شده در ایران، همروش است.
✅ پرداخت به میزان استفاده (PAYG)
✅ بدون دغدغه نگهداری زیرساخت
✅ بکاپ خودکار روزانه
چه سروری برای Wiki.js مناسب است؟
نیازمندیهای Wiki.js به تعداد کاربران، حجم مستندات و نحوه استفاده از پلتفرم بستگی دارد. در این بخش از آموزش Wiki.js، مهمترین نیازمندیهای سختافزاری و نرمافزاری این نرمافزار ویکی سازمانی را بررسی میکنیم.
نیازمندیهای سختافزاری (Hardware)
میزان مصرف منابع در Wiki.js به تعداد کاربران همزمان، حجم دادهها و سرویسهای جانبی مورد استفاده بستگی دارد. برای بسیاری از سناریوهای سازمانی، منابع زیر قابل استفاده هستند:
- پردازنده (CPU): ویکی جی اس روی یک هسته پردازنده هم قابل اجرا است، اما برای پردازشهای پسزمینه و بارهای کاری بیشتر، استفاده از حداقل دو هسته CPU توصیه میشود.
- حافظه رم (RAM): حداقل ۱ گیگابایت رم برای اجرا موردنیاز است. البته در سناریوهای عملیاتی و استفاده طولانیمدت، تخصیص رم بیشتر میتواند پایداری و عملکرد بهتری فراهم کند.
- فضای ذخیرهسازی (Storage): حجم موردنیاز به تعداد مستندات و فایلهای بارگذاریشده بستگی دارد. برای راهاندازی اولیه، استفاده از فضای ذخیرهسازی SSD توصیه میشود.
نیازمندیهای نرمافزاری و شبکه (Software & Network)
علاوه بر سختافزار، باید زیرساخت نرمافزاری هم با نیازهای Wiki.js سازگار باشد.
- پایگاه داده: استفاده از دیتابیس PostgreSQL نسخه 11 یا بالاتر الزامی است، زیرا تمرکز اصلی توسعه نسخههای جدید Wiki.js روی PostgreSQL قرار دارد و این دیتابیس، انتخاب استاندارد و پایدار این پلتفرم محسوب میشود.
- محیط اجرا (Runtime): این پلتفرم بر پایه Node.js توسعه یافته است، اما در صورت استفاده از Docker نیازی به نصب مستقیم Node.js روی سرور خود ندارید. در واقع این پلتفرم به صورت پیشفرض درون ایمیج داکر قرار دارد.
- وبسرور و شبکه: Wiki.js میتواند بدون Nginx یا Apache اجرا شود، اما در بسیاری از محیطهای پروداکشن از Reverse Proxy برای مدیریت SSL، مسیریابی درخواستها و تنظیمات شبکه استفاده میشود. همچنین استفاده از یک دامنه یا زیر دامنه اختصاصی برای استقرار ویکی داخلی سازمان، مدیریت و دسترسی به سرویس را سادهتر میکند.
جمعبندی
اگر به دنبال یک سیستم مستندسازی self-hosted هستید که هم با Git یکپارچه شود و هم روی زیرساخت اختصاصی شما اجرا شود، Wiki.js یکی از گزینههای جدی پیشرو است. Wiki.js در عمل بین دو نیاز مهم تعادل ایجاد میکند: از یک طرف سادگی استقرار و استفاده (بهخصوص با Docker) و از طرف دیگر امکانات فنی مثل همگامسازی با گیت، احراز هویت سازمانی و کنترل دسترسی دقیق. به همین دلیل برای تیمهای DevOps، تیمهای توسعه نرمافزار و سازمانهایی که رویکرد زیرساختمحور دارند، انتخاب مناسبی محسوب میشود.
با این حال، این ابزار برای سناریوهایی که نیاز به همکاری همزمان پیشرفته، جریانهای کاری پیچیده یا اکوسیستم یکپارچه سازمانی (در حد ابزارهایی مثل Confluence) دارند، ممکن است محدودیتهایی داشته باشد. بنابراین انتخاب Wiki.js زمانی منطقی است که اولویت شما «کنترل، سادگی زیرساخت و انعطافپذیری» باشد، نه یک پلتفرم کاملاً enterprise با همه امکانات همکاری بلادرنگ.