Triển khai Wiki.js thần tốc trong 5 phút
Thay vì loay hoay cài đặt từng thư viện trên server, Docker Compose sẽ giúp bạn dựng một trang Wiki xịn sò chỉ với vài dòng lệnh. Đây là lựa chọn hàng đầu cho các team cần kho tài liệu chuyên nghiệp, hỗ trợ Markdown tốt mà không muốn tốn cả buổi chiều cấu hình thủ công.
Đầu tiên, hãy đảm bảo máy của bạn đã cài sẵn Docker. Chúng ta sẽ bắt đầu bằng việc tạo môi trường làm việc:
mkdir wiki-js && cd wiki-js
touch docker-compose.yml
Dán đoạn cấu hình dưới đây vào file docker-compose.yml của bạn:
version: "3"
services:
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: wiki
POSTGRES_PASSWORD: wikijsrocks
POSTGRES_USER: wikijs
logging:
driver: "json-file"
options:
max-size: "10m"
restart: unless-stopped
volumes:
- ./db-data:/var/lib/postgresql/data
wiki:
image: requarks/wiki:2
depends_on:
- db
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: wikijsrocks
DB_NAME: wiki
restart: unless-stopped
ports:
- "8080:3000"
volumes:
- ./wiki-storage:/wiki/storage
Để kích hoạt hệ thống, bạn chỉ cần chạy một lệnh duy nhất:
docker-compose up -d
Bây giờ, hãy truy cập http://localhost:8080. Màn hình thiết lập sẽ hiện ra ngay lập tức. Toàn bộ quá trình từ lúc tải image đến khi chạy web thường chỉ mất chưa đầy 5 phút trên một con VPS cơ bản.
Giải mã cấu trúc hệ thống
Tại sao chúng ta lại dùng cấu hình này? Wiki.js không chỉ là một ứng dụng web đơn thuần. Nó cần một “bộ não” phía sau để quản lý hàng nghìn trang tài liệu và phân quyền người dùng.
PostgreSQL: Lựa chọn tối ưu cho hiệu năng
Wiki.js hỗ trợ khá nhiều loại DB như MySQL hay MariaDB. Tuy nhiên, Postgres vẫn là “chân ái” vì khả năng xử lý tìm kiếm full-text và dữ liệu JSON cực kỳ ổn định. Với bản Alpine mình dùng trong code, dung lượng image chỉ nặng khoảng 150MB, giúp tiết kiệm đáng kể tài nguyên server.
Cơ chế kết nối giữa các Container
Bạn có để ý dòng DB_HOST: db không? Trong thế giới Docker Compose, tên service chính là địa chỉ mạng. Bạn không cần nhớ những dãy IP loằng ngoằng. Docker sẽ tự động điều hướng request từ ứng dụng Wiki sang container database một cách chính xác.
Trong quá trình cấu hình, nếu bạn cần soi các file log JSON dài ngoằng, hãy thử dùng JSON Formatter tại toolcraft.app. Công cụ này giúp định dạng lại dữ liệu cực nhanh, giúp bạn bắt lỗi cú pháp chỉ trong vài giây thay vì phải cài thêm extension trình duyệt nặng nề.
Cấu hình nâng cao và bảo mật dữ liệu
Đừng để công sức viết tài liệu cả tháng tan thành mây khói chỉ vì quên mount volume. Trong Docker, nếu bạn không map thư mục ra máy host, mọi dữ liệu sẽ biến mất sạch sành sanh khi container bị xóa hoặc cập nhật.
Quản lý Volume thông minh
Trong file cấu hình trên, mình đã tách biệt hai khu vực quan trọng:
./db-data: Nơi chứa toàn bộ bài viết và cấu hình hệ thống../wiki-storage: Kho lưu trữ hình ảnh, file PDF và các tệp đính kèm.
Lời khuyên từ trải nghiệm thực tế: Hãy backup thư mục db-data hàng ngày. Bạn có thể dùng lệnh pg_dump để xuất file SQL dự phòng, đề phòng trường hợp ổ cứng server gặp sự cố.
Tối ưu tài nguyên cho VPS yếu
Mặc định Wiki.js tiêu tốn khoảng 200-300MB RAM ở trạng thái nghỉ. Nếu team bạn có khoảng 20-30 người truy cập thường xuyên, hãy giới hạn tài nguyên để tránh làm sập các dịch vụ khác trên cùng server:
deploy:
resources:
limits:
memory: 1G
Một tính năng “đáng đồng tiền bát gạo” khác là Git Storage. Bạn có thể kết nối Wiki với GitHub. Mỗi khi bạn nhấn Save, Wiki.js sẽ tự động push một bản sao lên repository. Đây là phương án backup tầng thứ hai cực kỳ an toàn.
Kinh nghiệm thực chiến khi vận hành
Sau nhiều dự án triển khai Wiki nội bộ, đây là những lưu ý quan trọng để hệ thống của bạn chạy mượt mà hơn:
- Sử dụng Reverse Proxy: Đừng mở port 8080 ra ngoài internet. Hãy dùng Nginx hoặc Traefik làm lớp bảo vệ phía trước. Việc này giúp bạn cài đặt SSL (HTTPS) dễ dàng và chuyên nghiệp hơn.
- Ưu tiên Markdown Editor: Nếu team bạn đa số là dev, hãy ép cấu hình dùng Markdown. Nó giúp việc copy-paste code từ VS Code vào Wiki giữ nguyên định dạng, cực kỳ sạch sẽ.
- Phân quyền chặt chẽ: Đừng bao giờ cấp quyền Admin cho tất cả mọi người. Hãy chia nhóm rõ ràng: Editor (viết bài) và Reader (chỉ đọc) để tránh những pha “lỡ tay” xóa nhầm tài liệu quan trọng.
Nếu bạn gặp lỗi EACCES khi ghi file trên Linux, hãy chạy lệnh: chown -R 1000:1000 ./wiki-storage. Đây là lỗi phân quyền phổ biến nhất mà anh em thường gặp khi mới dùng Docker. Chúc các bạn sớm có một kho tri thức xịn sò cho team!

