Cập nhật 04/2025: KazeWP đã được cập nhật hỗ trợ tích hợp phpMyAdmin khi thiết lập website. Xem thêm chi tiết ở đây: https://thuanbui.me/tich-hop-phpmyadmin-vao-website-tao-boi-kazewp/

Cách đây vài tháng mình đã giới thiệu [wordpress-caddy-docker] một giải pháp đơn giản để thiết lập nhanh WordPress chạy trên nền Caddy server bằng Docker Compose. Công cụ này đã được khá nhiều bạn đón nhận, tuy nhiên nó tồn tại 2 nhược điểm lớn:

  1. Cần phải chỉnh sửa thông số $DOMAIN trong file .env trước khi kích hoạt.
  2. Chỉ hỗ trợ thiết lập một website duy nhất. Nếu bạn cần quản lý nhiều website WordPress trên cùng một máy chủ, bắt buộc phải có kiến thức về Caddy lẫn Docker để thiết lập thêm thông số cho phù hợp.

Mình đã hướng dẫn cách cấu hình Caddy làm Reserve Proxy cho homelab tại nhà, có thể áp dụng tương tự để cấu hình cho nhiều website WordPress. Tuy nhiên, việc thực hiện thủ công không chỉ tốn khá nhiều thời gian mà còn dễ dẫn đến lỗi nếu không cẩn thận trong quá trình chỉnh sửa cấu hình.

Những khó khăn và hạn chế kể trên đã thúc đẩy mình nâng cấp [wordpress-caddy-docker] lên phiên bản mới, hỗ trợ cài đặt nhiều website trên cùng máy chủ. Sau vài tuần nghiên cứu, thử nghiệm với sự hỗ trợ đắc lực của Claude AI và ChatGPT, xin giới thiệu với mọi người KazeWP – công cụ giúp quản lý nhiều website WordPress một cách dễ dàng, nhanh chóng và hiệu quả.

I. Giới thiệu KazeWP

KazeWP là một công cụ mã nguồn mở do mình phát triển (với sự hỗ trợ từ ChatGPT và Claude AI), giúp triển khai và quản lý nhiều website WordPress dễ dàng trên nền tảng Docker và Caddy.

Lợi ích nổi bật của KazeWP:

  • Mở rộng linh hoạt: Có thể thêm bao nhiêu website tùy thích mà không lo bị xung đột.
  • Hỗ trợ nhiều website WordPress: Dễ dàng thêm, xóa, hoặc quản lý các website WordPress trên cùng một server.
  • Tích hợp Reverse Proxy: Sử dụng Caddy để tự động cấu hình SSL và chuyển hướng mạng.
  • Hoàn toàn tự động: Tự động hóa cấu hình bằng Bash Script đơn giản.
  • Dễ dàng cài đặt: Tất cả mọi thứ đều được container hóa bằng Docker.

II. Cài đặt KazeWP

1. Yêu cầu:

  • Máy tính có cài sẵn DockerDocker Compose.
  • Hệ điều hành Unix (Linux hoặc macOS), hoặc WSL nếu dùng Windows.

2. Các bước cài đặt:

Tải mã nguồn từ Github:

git clone https://github.com/10h30/kazewp.git
cd kazewpCode language: Bash (bash)

Cấu trúc thư mục sẽ như sau, với file thực thi chính là kazewp.sh

.
├── kazewp.sh
├── images
│   ├── kazewp.png
├── lib
│   ├── caddy.sh
│   ├── colors.sh
│   ├── config.sh
│   ├── docker.sh
│   ├── utils.sh
│   ├── validation.sh
│   └── wordpress.sh
├── LICENSE
├── README.md
└── templates
    ├── caddy.template
    ├── docker-compose.yml.template
    └── wp-setup.sh.templateCode language: CSS (css)

Chạy script cài đặt:

Sử dụng lệnh sau để xem cách sử dụng KazeWP

./kazewp.sh
KazeWP - WordPress Site Management Script
Usage:
  ./kazewp.sh install <domain>              - Install a new WordPress site
  ./kazewp.sh list                          - List all installed WordPress sites
  ./kazewp.sh delete <domain>               - Delete a WordPress site
  ./kazewp.sh delete all                    - Delete everythingCode language: Shell Session (shell)

III. Hướng dẫn sử dụng KazeWP

A. Cài đặt website mới

Để cài đặt một website WordPress mới, bạn sử dụng lệnh sau:

./kazewp.sh install <domain>Code language: HTML, XML (xml)

Thay <domain> bằng tên miền của bạn (ví dụ: thuanbui.me). Hệ thống sẽ yêu cầu bạn nhập các thông tin quan trọng để cấu hình WordPress: Admin Email, Admin Username, Admin Password và Site Title. Các bạn cũng có thể chọn cài đặt phpMyAdmin ở bước này.

Enter admin email: thuan@thuan.com
Enter admin username: thuan
Enter password (press Enter for random password):
Generated password: wIIWfNPfXL2qiLa0
Enter site title: Thuan
Do you want to include phpMyAdmin? (Y/n) [N]: Y
Do you want to (1) start services and set up WordPress automatically or (2) do it manually later? [1/2]:Code language: Shell Session (shell)

Bạn có 2 lựa chọn để cài đặt

1. Kích hoạt tự động

Khi chọn (1) start services and set up WordPress automatically, hệ thống sẽ tự động thao tác từ A-Z: tạo container, cấu hình WordPress và kết nối với Caddy. Bạn chỉ cần ngồi chờ vài phút cho đến khi thấy xuất hiện thông báo như bên dưới

== User List ==
[+] Creating 2/0
 ✔ Container db_thuan.com         Running                                                                                                                   0.0s 
 ✔ Container wordpress_thuan.com  Running                                                                                                                   0.0s 
+----+------------+--------------+-----------------+---------------------+---------------+
| ID | user_login | display_name | user_email      | user_registered     | roles         |
+----+------------+--------------+-----------------+---------------------+---------------+
| 1  | thuan      | thuan        | thuan@thuan.com | 2025-01-02 01:24:28 | administrator |
+----+------------+--------------+-----------------+---------------------+---------------+

== Theme List ==
[+] Creating 2/0
 ✔ Container db_thuan.com         Running                                                                                                                   0.0s 
 ✔ Container wordpress_thuan.com  Running                                                                                                                   0.0s 
+-------------------+----------+--------+---------+----------------+-------------+
| name              | status   | update | version | update_version | auto_update |
+-------------------+----------+--------+---------+----------------+-------------+
| kadence           | active   | none   | 1.2.14  |                | off         |
| twentytwentyfive  | inactive | none   | 1.0     |                | off         |
| twentytwentyfour  | inactive | none   | 1.3     |                | off         |
| twentytwentythree | inactive | none   | 1.6     |                | off         |
+-------------------+----------+--------+---------+----------------+-------------+

== Plugin List ==
[+] Creating 2/0
 ✔ Container db_thuan.com         Running                                                                                                                   0.0s 
 ✔ Container wordpress_thuan.com  Running                                                                                                                   0.0s 
+--------------------+----------+--------+---------+----------------+-------------+
| name               | status   | update | version | update_version | auto_update |
+--------------------+----------+--------+---------+----------------+-------------+
| akismet            | inactive | none   | 5.3.5   |                | off         |
| cache-enabler      | active   | none   | 1.8.15  |                | off         |
| hello              | inactive | none   | 1.7.2   |                | off         |
| wordfence          | active   | none   | 8.0.1   |                | off         |
| advanced-cache.php | dropin   | none   |         |                | off         |
+--------------------+----------+--------+---------+----------------+-------------+

WordPress setup completed!
WordPress setup completed successfully
Complete setup finished successfully!

WordPress Site Information:
----------------------------------------
Domain:       https://thuan.com
Admin URL:    https://thuan.com/wp-admin
Username:     thuan
Password:     wIIWfNPfXL2qiLa0 (SAVE THIS PASSWORD!)
Email:        thuan@thuan.com
----------------------------------------

Credentials have been saved to: /root/kazewp/wordpress/thuan.com/credentials.txtCode language: Shell Session (shell)

Sau đó dùng trình duyệt web, truy cập vào tên miền bạn vừa mới thiết lập để xác nhận lại WordPress đã được cài đặt thành công.

2. Kích hoạt thủ công

Bạn cũng có thể chọn (2) do it manually later, để chủ động việc kích hoạt hệ thống khi cần. Thông thường khi cần cấu hình nâng cao cho một số website WordPress đặc biệt, mình sẽ chọn bước này để chỉnh sửa file compose.yaml trước khi kích hoạt.

Hệ thống sẽ hiển thị hướng dẫn cách kích hoạt như bên dưới

Manual setup instructions:
1. Start Caddy:
   cd /root/kazewp/caddy && docker compose up -d
Reloading Caddy configuration...
2. Start WordPress:
   cd /root/kazewp/wordpress/thuan.com && docker compose up -d
3. Run the WordPress setup script:
   ./wp-setup.sh

WordPress Site Information:
----------------------------------------
Domain:       https://thuan.com
Admin URL:    https://thuan.com/wp-admin
Username:     thuan
Password:     y8bnRF2daKjGI2Wb (SAVE THIS PASSWORD!)
Email:        thuan@thuan.com
----------------------------------------

Credentials have been saved to: /root/kazewp/wordpress/thuan.com/credentials.txtCode language: Shell Session (shell)

Kích hoạt Caddy

cd /root/kazewp/caddy && docker compose up -dCode language: Bash (bash)

Kích hoạt WordPress

cd /root/kazewp/wordpress/thuan.com && docker compose up -dCode language: Bash (bash)

Cài đặt WordPress

./wp-setup.sh

Trong cả hai trường hợp, thông số của trang WordPress đều được lưu lại trong file credentials.txt nằm trong thư mục của tên miền vừa tạo.

Để thêm website mới, sử dụng lại lệnh

./kazewp.sh install <domain>Code language: HTML, XML (xml)

và thao tác tương tự như hướng dẫn trên

B. Xem danh sách website đã cài đặt

Để xem danh sách các website đang chạy, sử dụng lệnh sau:

./kazewp.sh listCode language: PHP (php)

Danh sách các website cùng thông tin tương ứng sẽ hiển thị trên terminal.

Installed WordPress Sites:
-------------------------
Site: thuan.com
Path: /root/kazewp/wordpress/thuan.com
Status: No container is running
-------------------------Code language: YAML (yaml)

C. Khởi động lại website

Khởi động lại Caddy

./kazewp.sh restart caddy

Khởi động lại website `thuan.com

./kazewp.sh restart thuan.com 

Khởi động lại toàn bộ hệ thống (tất cả website và caddy)

./kazewp.sh restart all

D. Xóa website

Để xóa một website đã cài đặt, sử dụng lệnh:

./kazewp.sh delete <domain>Code language: JavaScript (javascript)

Thay <domain> bằng tên miền bạn muốn xóa. Bạn cần phải xác nhận ở bước Are you sure you want to continue? (y/N). Chọn Y để xác nhận.

Warning: This will permanently delete the site: thuan.com
Are you sure you want to continue? (y/N): y
Stopping Docker containers...
Removing site directory...
Removing Caddy configuration...
Reloading Caddy...
Reloading Caddy configuration...
Site 'thuan.com' has been successfully deletedCode language: JavaScript (javascript)

E. Reset lại từ đầu

Để xóa toàn bộ các site và cấu hình, sử dụng lệnh

./kazewp.sh delete allCode language: JavaScript (javascript)
Are you sure you want to uninstall everything? This will stop and remove all containers, and delete files. (Y/n): YCode language: JavaScript (javascript)

Toàn bộ container, thư mục đã tạo bởi script KazeWP này sẽ được dọn dẹp sạch sẽ để bạn có thể cài đặt lại từ đầu.

IV. Lời kết

KazeWP là giải pháp mạnh mẽ và tiện lợi cho việc quản lý nhiều website WordPress trên cùng một máy chủ. Với các tính năng tự động hóa, KazeWP sẽ giúp bạn tiết kiệm thời gian và tối ưu hóa công việc quản lý.

Ngoài các tính năng hiện có, mình đang dự tính sẽ bổ sung thêm các tính năng mới như backup / restore, tuỳ chọn cài đặt plugin / theme,…

Hãy thử sử dụng KazeWP và chia sẻ ý kiến của bạn nhé! Nếu có bất kỳ câu hỏi nào hoặc phát hiện lỗi khi sử dụng, hãy thông báo cho mình ở phần bình luận bên dưới.

Chúc bạn cài đặt thành công!

Theo dõi
Thông báo của
guest
38 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận