EmDash là một hệ thống quản lý nội dung (CMS) thế hệ mới, được xây dựng bằng TypeScript và Astro, được mệnh danh là “người kế thừa tinh thần của WordPress”. Trong bài viết này, TND sẽ hướng dẫn bạn cách cài đặt EmDash trên VPS Ubuntu 24 để tự quản lý website của riêng mình.
EmDash là gì?
EmDash là CMS mã nguồn mở (MIT License) được thiết kế để giải quyết các vấn đề lớn nhất của WordPress:
- Bảo mật plugin: Plugin chạy trong sandbox cách ly, không thể truy cập trái phép vào database hay filesystem – khác hoàn toàn với WordPress nơi 96% lỗ hổng bảo mật đến từ plugin.
- Hiệu suất cao: Xây dựng trên Astro – framework nhanh nhất cho website nội dung.
- TypeScript toàn bộ: Type-safe, dễ bảo trì và mở rộng.
- Portable Text: Nội dung lưu dạng JSON có cấu trúc, tách biệt nội dung và giao diện.
- Hỗ trợ AI: Tích hợp sẵn MCP server, CLI và Agent Skills.
Yêu cầu hệ thống
Để cài đặt EmDash self-hosted trên Ubuntu 24, bạn cần:
- VPS Ubuntu 24.04 LTS (tối thiểu 1GB RAM, 1 vCPU)
- Node.js 20 trở lên
- npm hoặc pnpm
- Tên miền trỏ đến VPS (không bắt buộc nhưng khuyên dùng)
- Quyền root hoặc sudo
Bước 1: Cập nhật hệ thống và cài đặt Node.js
Đầu tiên, SSH vào VPS và cập nhật hệ thống:
sudo apt update && sudo apt upgrade -y
Cài đặt Node.js 20 LTS từ NodeSource:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
node -v
npm -v
Cài đặt pnpm (khuyên dùng vì EmDash sử dụng pnpm):
npm install -g pnpm
Bước 2: Cài đặt EmDash
Tạo project EmDash mới bằng lệnh:
npm create emdash@latest my-website
cd my-website
Lệnh này sẽ tạo một project Astro với EmDash đã được cấu hình sẵn. Bạn có thể chọn template Blog, Marketing, hoặc Portfolio tùy theo nhu cầu.
Bước 3: Cấu hình database và storage
Với self-hosted, bạn sẽ sử dụng SQLite làm database và local filesystem làm storage. Mở file astro.config.mjs:
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
import { sqlite } from "emdash/db";
export default defineConfig({
integrations: [
emdash({
database: sqlite(),
}),
],
});
SQLite không cần cài đặt thêm gì – nó chạy trực tiếp trên filesystem của VPS, phù hợp với các website vừa và nhỏ.
Bước 4: Generate TypeScript types và seed data
npx emdash types
npx emdash seed
Bước 5: Build và chạy production
Build project cho production:
pnpm build
Chạy server:
pnpm preview
Mặc định EmDash chạy trên port 4321. Truy cập admin panel tại: http://your-server-ip:4321/_emdash/admin
Bước 6: Cấu hình Nginx reverse proxy và SSL
Để chạy production với tên miền và HTTPS, cài đặt Nginx:
sudo apt install -y nginx certbot python3-certbot-nginx
Tạo file cấu hình Nginx:
sudo nano /etc/nginx/sites-available/emdash
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:4321;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
sudo ln -s /etc/nginx/sites-available/emdash /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Cài đặt SSL miễn phí với Let’s Encrypt:
sudo certbot --nginx -d yourdomain.com
Bước 7: Cấu hình systemd để chạy tự động
Tạo service file để EmDash tự động khởi động cùng VPS:
sudo nano /etc/systemd/system/emdash.service
[Unit]
Description=EmDash CMS
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/home/your-user/my-website
ExecStart=/usr/bin/node ./dist/server/entry.mjs
Restart=on-failure
RestartSec=10
Environment=NODE_ENV=production
Environment=PORT=4321
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable emdash
sudo systemctl start emdash
Bước 8: Import từ WordPress (tùy chọn)
Nếu bạn đang sử dụng WordPress và muốn chuyển sang EmDash, có 2 cách:
- Cách 1 – File WXR: Vào WordPress Admin -> Tools -> Export -> xuất file XML, sau đó import trong EmDash Admin.
- Cách 2 – REST API: Cài plugin EmDash Exporter trên WordPress, EmDash sẽ tự động pull nội dung qua API.
Các lệnh quản lý hữu ích
# Kiểm tra trạng thái service
sudo systemctl status emdash
# Xem log
sudo journalctl -u emdash -f
# Khởi động lại
sudo systemctl restart emdash
# Cập nhật EmDash
cd /home/your-user/my-website
pnpm update emdash
pnpm build
sudo systemctl restart emdash
Kết luận
EmDash self-hosted trên Ubuntu 24 VPS là lựa chọn tuyệt vời cho những ai muốn kiểm soát toàn bộ dữ liệu và hạ tầng của mình. Với SQLite, bạn không cần cài đặt database riêng, và với Node.js, hiệu suất vượt trội so với PHP/WordPress truyền thống.
Trong bài viết tiếp theo, TND sẽ hướng dẫn cài đặt EmDash trên Cloudflare Workers và so sánh chi phí chi tiết giữa 2 phương pháp. Đón đọc nhé!
Liên kết hữu ích:


