Tự host blog Ghost đa ngôn ngữ với định tuyến thư mục con
Để hỗ trợ hai ngôn ngữ, bạn cần cài đặt 2 website Ghost trên cùng một máy chủ, mỗi website là một instance riêng cho từng ngôn ngữ.
- Mặc định tiếng Anh -
https://domain.com - Tiếng Việt -
https://domain.com/vi/ - Tiếng Đức -
https://domain.com/de/
Tùy chọn 1: Hosting với SynapsMedia (Lựa chọn tốt nhất & Đơn giản nhất)
Nếu bạn không muốn tự quản lý máy chủ phức tạp, thao tác dòng lệnh, cấu hình reverse proxy hay viết các file cấu hình, sử dụng dịch vụ hosting của SynapsMedia là lựa chọn tốt nhất.
SynapsMedia là dịch vụ hosting Ghost chuyên nghiệp, được quản lý toàn diện (managed hosting) hỗ trợ cấu hình đa ngôn ngữ dạng thư mục con (subdirectory) một cách tối ưu và chính thức.
Tại sao nên chọn SynapsMedia?
- Managed Hosting: Họ tự động xử lý thiết lập máy chủ, bảo trì, bảo mật và cập nhật phiên bản.
- Hỗ trợ thư mục con (Subdirectory): Dễ dàng chạy site chính tại
https://domain.comvà các site phụ đa ngôn ngữ nhưhttps://domain.com/vi/hoặchttps://domain.com/de/. - Không cần biết code: Không cần cấu hình Nginx, không cần viết file cấu hình YAML hay quản lý mã khóa SSH.
- Hỗ trợ chuyên gia: Đội ngũ kỹ thuật hỗ trợ chuyên biệt về Ghost CMS.
Lợi ích nổi bật khi thiết lập Subdirectory trên SynapsMedia
- Chia sẻ hạn ngạch Newsletter: Các site dưới cùng một tên miền sẽ dùng chung hạn ngạch gửi email. Ví dụ: bạn có 3 site (chạy
/,/vi,/de), mỗi site có hạn ngạch 2.000 email/tháng, tổng cộng bạn có 6.000 email dùng chung. Khi gửi thư, hệ thống sẽ trừ điểm theo thứ tự: site gửi thư -> site gốc (root) -> các site phụ khác dưới cùng tên miền. - Dùng chung Custom Sending Domain: Các site subdirectory tự động kế thừa cấu hình tên miền gửi mail (Custom Sending Domain) từ site gốc.
- Tiết kiệm chi phí: Áp dụng chính sách giảm giá 10% khi duy trì multi-site.
- Không giới hạn số lượng site phụ: Bạn có thể tạo bao nhiêu site subdirectory tùy ý dưới một tên miền (Ví dụ:
/vi,/de,/fr,/docs,/blog).
Cách cấu hình Subdirectory trên SynapsMedia Panel
Để cài đặt định tuyến đa ngôn ngữ trên SynapsMedia, hãy làm theo các bước đơn giản sau:
- Tạo các site Ghost: Đảm bảo bạn đã khởi tạo ít nhất 2 website Ghost chạy trên tài khoản SynapsMedia của mình (1 site chính và 1 site phụ cho ngôn ngữ thứ hai).
- Vào phần Cài đặt: Trong bảng điều khiển (Panel) của SynapsMedia, chọn trang cài đặt của website Ghost mà bạn muốn chạy dưới dạng thư mục con (site phụ).
- Bật Subdirectory Install: Cuộn xuống mục Domains và nhấn vào nút Enable subdirectory install.
- Thiết lập định tuyến:
- Tại trường Domain, chọn tên miền chính của website Ghost gốc (site chính).
- Tại trường đường dẫn phụ, nhập thư mục con mong muốn (ví dụ:
vihoặcde).
- Lưu và Khởi động: Nhấn Enable Subdirectory Install. SynapsMedia sẽ tự động cấu hình lại và khởi động lại cả hai website chỉ trong vòng một phút.

Một số quy tắc và lưu ý quan trọng
- Trang quản trị độc lập: Các trang quản lý Admin của mỗi site hoàn toàn độc lập. Bạn truy cập trang admin của site phụ qua đường dẫn:
https://domain.com/{subdir}/ghost/. - Cấu hình Email: Email gửi đi từ các site subdirectory sẽ dùng chung cấu hình gửi của site gốc.
- Sitemap & Robots.txt: Sitemap của site gốc không tự động gộp các site phụ; bạn cần gửi sitemap của site phụ thủ công lên Google Search Console. Tương tự, nếu có cấu hình file
robots.txtriêng cho site phụ, bạn cần cập nhật gộp thủ công vào filerobots.txtcủa site gốc. - Social Web: Tính năng Social Web (kết nối mạng xã hội liên hợp qua ActivityPub) sẽ bị tắt đối với các site dạng subdirectory.
Tùy chọn 2: Tự host trên Railway (Đơn giản & Tự động nhất)
Cài đặt Ghost đa ngôn ngữ trên Railway cực kỳ dễ dàng với Mẫu thiết lập 1-Click của chúng tôi. Hệ thống sẽ tự động cấu hình bộ định tuyến, hai trang blog và cơ sở dữ liệu cùng lúc.
Chuẩn bị:
- Một tài khoản Railway.
- Một tên miền riêng (ví dụ:
ten-mien-cua-ban.com).
Bước 1: Khởi tạo nhanh với 1-Click
- Bấm vào nút dưới đây để bắt đầu:
- Railway sẽ tự động tạo các thành phần:
- Bộ định tuyến (Nginx Proxy)
- Trang blog chính (Ví dụ: Tiếng Anh)
- Trang blog phụ (Ví dụ: Tiếng Việt)
- Cơ sở dữ liệu (MySQL dùng chung)
Bước 2: Liên kết các trang blog
Khi hệ thống tạo xong, bạn cần kết nối địa chỉ nội bộ để bộ định tuyến dẫn khách truy cập đến đúng trang blog.
Lấy địa chỉ nội bộ (Private Link):
- Vào mục Settings của từng dịch vụ Blog trên Railway.
- Tìm phần Networking và copy địa chỉ nội bộ có đuôi
.railway.internal(ví dụ:http://ghost.railway.internal:2368vàhttp://ghost-vi.railway.internal:2368).
Cấu hình bộ định tuyến: Chọn dịch vụ Nginx Proxy, vào tab Variables và điền:
SERVER_NAME: Tên miền của bạn (ví dụ:ten-mien-cua-ban.com).GHOST_ROOT_URL: Dán địa chỉ nội bộ của Trang blog chính.GHOST_INSTANCES: Dán đường dẫn thư mục và địa chỉ nội bộ của Trang blog phụ (ví dụ:/vi:http://ghost-vi.railway.internal:2368).
Cài đặt địa chỉ công khai:
- Tại trang cấu hình Trang blog chính: Đặt biến
urlthànhhttps://ten-mien-cua-ban.com. - Tại trang cấu hình Trang blog phụ: Đặt biến
urlthànhhttps://ten-mien-cua-ban.com/vi/.
- Tại trang cấu hình Trang blog chính: Đặt biến
Bước 3: Cấu hình tên miền của bạn
- Vào phần cài đặt của dịch vụ Nginx Proxy.
- Tại mục Networking, nhấn + Add Domain và nhập tên miền của bạn (ví dụ:
ten-mien-cua-ban.com). - Đảm bảo tên miền trỏ về cổng dịch vụ
8080. - Trỏ các bản ghi DNS từ nhà quản lý tên miền của bạn về địa chỉ của Railway.
Sau khi hoàn tất cấu hình:
- Truy cập
https://ten-mien-cua-ban.comsẽ mở blog chính (tiếng Anh). - Truy cập
https://ten-mien-cua-ban.com/vi/sẽ mở blog phụ (tiếng Việt).
Tùy chọn 3: Triển khai Ghost đa ngôn ngữ trên DigitalOcean
Sẵn sàng để chuyển sang đa ngôn ngữ? Hướng dẫn này sẽ dẫn dắt bạn qua từng bước để triển khai hệ thống Ghost hoàn chỉnh trên DigitalOcean.
Điều kiện tiên quyết
- Tài khoản DigitalOcean (nếu chưa có, đăng ký tại đây)
- Phần mềm Termius trên máy tính (Tải miễn phí tại đây)
1. Tạo SSH Key để truy cập máy chủ
Nếu bạn chưa có SSH key, hãy làm theo các bước đơn giản sau:
- Mở Termius (đã tải ở bước trên).
- Vào Settings > Keychain > Generate Key.
- Đặt tên cho key và chọn loại RSA.
- Nhấn Generate and Save để tạo và lưu key.

Hãy chắc chắn sao lưu và lưu trữ an toàn cả Private Key và Public Key. Đây là hai khóa quan trọng để truy cập bảo mật vào máy chủ của bạn.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCUBJ2jKLbwL580TuD/+txGQpq7JuMVgz4ha5U097BhyU2q50GvzgKpipxxxx...Note
Public Key sẽ được sử dụng để tạo máy chủ mới trên DigitalOcean, vì vậy hãy lưu lại để dùng cho bước tiếp theo.
2. Cài đặt Ghost bằng One-click
Tham khảo tài liệu chính thức của Ghost để xem hướng dẫn từng bước cài đặt Ghost trên DigitalOcean.
Tuy nhiên, bạn cần đảm bảo tạo một máy chủ mới với tối thiểu 2GB RAM để đáp ứng yêu cầu chạy 2 website Ghost.
Tính năng cài đặt One-click sẽ tự động cài đặt tất cả các thành phần cần thiết cho Ghost.
Xem video trên để được hướng dẫn chi tiết cách cài đặt Ghost bằng One-click trên DigitalOcean.

Note
Trong Termius, bạn có thể dùng phím tắt Ctrl + U để xóa toàn bộ dòng hiện tại trong terminal. Nếu nhập sai, phím tắt này sẽ giúp bạn xóa nhanh dòng đó.
3. Cài đặt Ghost thứ hai
Tham khảo hướng dẫn của Aspire Themes để xem chi tiết từng bước cài đặt Ghost thứ hai trên DigitalOcean. Cảm ơn Aspire Themes.
Tuy nhiên, sẽ có một số điểm khác biệt.
Sử dụng Termius để truy cập vào máy chủ DigitalOcean.

Bạn cần biết thông tin MySQL host, username và password hiện tại.
Terminal window cd /var/www/ghost/cat config.production.jsonGhi chú lại các thông tin này. Bạn sẽ cần dùng ở bước 3 và 5.
Tạo thư mục website
ghost-deTerminal window cd /var/www/sudo mkdir ghost-desudo chown ghost-mgr:ghost-mgr ghost-de/Đăng nhập vào MySQL và tạo database mới
Terminal window sudo mysql -u root -pCREATE DATABASE ghost_de;GRANT ALL PRIVILEGES ON ghost_de.* to 'ghost'@'localhost' IDENTIFIED BY '7d150600c49e7c5860be7ce03d4f8df67259176738d926ec';FLUSH PRIVILEGES;exitGhi chú lại:
- Mật khẩu MYSQL:
7d150600c49e7c5860be7ce03d4f8df67259176738d926ec - Tên database:
ghost_deBạn sẽ cần dùng ở bước 5.
- Mật khẩu MYSQL:
Chuyển sang user
ghost-mgrTerminal window sudo -i -u ghost-mgrCài đặt Ghost và làm theo hướng dẫn
Terminal window cd /var/www/ghost-de/ghost installKhi được hỏi
Blog URL, bạn nhậphttps://yourdomain.com/deXem thêm hướng dẫn cài đặt Ghost bằng CLI
4. Cấu hình Nginx
Chỉnh sửa file
domain.com-ssl.confTerminal window cd /etc/nginx/sites-availableslsnano domain.com-ssl.confNote
Thay thế bằng tên miền thật của bạn
Thêm khối proxy như bên dưới
domain.com-ssl.conf ...location / {proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $http_host;proxy_pass http://127.0.0.1:2368;}location /de/ {proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $http_host;proxy_pass http://127.0.0.1:2369;}...Bây giờ bạn đã có 2 site Ghost và có thể truy cập trang quản trị tại:
Site tiếng Anh (ngôn ngữ chính) —
https://domain.com/ghost/Site tiếng Đức (ngôn ngữ phụ) —
https://domain.com/de/ghost/
Tham khảo tài liệu cấu hình Ghost để biết cách thiết lập SMTP và các cấu hình khác cho từng instance Ghost.
Tùy chọn 4: Thuê freelancer trên Fiverr hỗ trợ
Đừng để những khó khăn kỹ thuật cản trở bạn — hãy kết nối với mạng lưới các chuyên gia Ghost trên Fiverr và đưa dự án Ghost của bạn vào hoạt động ngay lập tức!
Với kinh nghiệm phong phú, họ có thể dẫn dắt bạn vượt qua những phức tạp của Ghost, đảm bảo quy trình triển khai diễn ra suôn sẻ và hiệu quả.