Sunday, January 19, 2025

Cài đặt RADIUSdesk trên Ubuntu 22.04 sử dụng Nginx

-

1. Tổng quan.
RADIUSdesk là một phần mềm quản lý mạng truy cập không dây (Wireless Access Management System – WAMS) mã nguồn mở được sử dụng để quản lý hệ thống đăng nhập và chứng thực người dùng trên mạng không dây. Nó được phát triển dựa trên mã nguồn mở và dựa trên giao thức RADIUS (Remote Authentication Dial-In User Service) – một giao thức tiêu chuẩn để cung cấp dịch vụ đăng nhập từ xa và chứng thực người dùng.

RADIUSdesk cung cấp một giao diện quản lý dễ sử dụng để giúp quản trị viên mạng cấu hình và quản lý việc xác thực người dùng, hỗ trợ quản lý người dùng, định tuyến, và tích hợp dịch vụ mạng không dây. Nó thường được sử dụng trong các môi trường Wi-Fi công cộng, trường học, khu cư dân, doanh nghiệp, nơi cần kiểm soát quyền truy cập và cung cấp dịch vụ Internet an toàn và hiệu quả cho người dùng.

Vì là một dự án mã nguồn mở, RADIUSdesk cho phép các nhà phát triển và quản trị viên tùy chỉnh và mở rộng tính năng theo nhu cầu cụ thể của họ. Điều này giúp tăng tính linh hoạt và tích hợp dễ dàng vào hệ thống mạng hiện có.

Lưu ý rằng thông tin có thể thay đổi sau ngày tôi có kiến thức (tháng 9 năm 2021), vì vậy, bạn nên tìm hiểu thông tin mới nhất về RADIUSdesk trên trang web chính thức hoặc các nguồn tin tức tin cậy khác.

2. Triển khai.

Bước 1 – Nâng cấp các gói phần mềm đã cài đặt trên hệ thống của bạn lên phiên bản mới nhất. Điều này đảm bảo bạn có được các bản vá lỗi, tính năng mới và các cải tiến bảo mật.

sudo apt-get upgrade

Bước 2 – Cài đặt máy chủ web Nginx trên hệ thống của bạn, Nginx là một máy chủ web phổ biến và hiệu suất cao, được sử dụng để phục vụ các trang web và ứng dụng web.

sudo apt-get -y install nginx

Khởi động dịch vụ Nginx để có thể tiếp tục phục vụ các yêu cầu web.

sudo systemctl start nginx.service

Bật tính năng tự khởi động theo hệ thống cho Nginx.

sudo systemctl enable nginx.service

Bạn có thể dùng lệnh curl để xác nhận Nginx đã chạy.

$ curl http://192.168.13.181
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Bước 3 – Cài đặt gói ngôn ngữ tiếng Anh cơ bản trên hệ thống của bạn. Gói ngôn ngữ này cung cấp các file và hỗ trợ cần thiết để sử dụng tiếng Anh làm ngôn ngữ mặc định cho hệ thống.

sudo apt-get -y install language-pack-en-base

Bước 4 – Cài đặt PHP FPM phiên bản 8.

sudo apt-get -y install php-fpm

Sau khi cài đặt xong hãy khởi động PHP FPM và bật chế độ tự khởi động theo hệ thống

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

Bước 5 – Cài đặt MariaDB.

Cài đặt gói software-properties-common để có thể sử dụng lệnh add-apt-repository và các chức năng liên quan khác.

sudo apt install software-properties-common -y

Tải xuống file mariadb_repo_setup từ trang web của MariaDB. File này chứa các chỉ thị để thêm kho lưu trữ MariaDB vào hệ thống.

sudo curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup

Chạy file mariadb_repo_setup vừa tải xuống với thông số --mariadb-server-version=10.6 để thêm kho lưu trữ chứa MariaDB Server 10.6 vào hệ thống.

sudo bash mariadb_repo_setup --mariadb-server-version=10.6

Cập nhật danh sách các gói phần mềm trên hệ thống từ các kho lưu trữ đã được thêm vào.

sudo apt update

Cài đặt các gói phần mềm liên quan đến MariaDB, bao gồm mariadb-common (gói chung), mariadb-server-10.6 (phiên bản MariaDB Server 10.6) và mariadb-client-10.6 (phiên bản MariaDB Client 10.6).

sudo apt -y install mariadb-common mariadb-server-10.6 mariadb-client-10.6 

Khởi động dịch vụ MariaDB Server sau khi cài đặt và cấu hình MariaDB Server để tự động khởi động cùng hệ thống khi khởi động lại.

sudo systemctl start mariadb
sudo systemctl enable mariadb

Bước 6 – Cài đặt các module bổ sung cho PHP.

sudo apt-get -y install php-cli php-mysql php-gd php-curl php-xml php-mbstring php-intl php-sqlite3 git wget

Khởi động lại dịch vụ PHP FPM.

sudo systemctl restart php8.1-fpm

Bước 7 – Di chuyển vào thư mục /var/www và tiến hành clone code của RADIUSdesk về thư mục này.

cd /var/www
sudo git clone https://github.com/RADIUSdesk/rdcore.git
sudo git clone https://github.com/RADIUSdesk/rd_mobile.git

Bước 8 – Tiếp tục di chuyển vào mục /var/www/html và tạo các liên kết thư mục như dưới.

cd /var/www/html
sudo ln -s ../rdcore/rd ./rd
sudo ln -s ../rdcore/cake4 ./cake4
sudo ln -s ../rd_mobile/build/production/RdMobile ./rd_mobile

Bước 9 – Tạo và phân quyền các thư mục phục vụ cho phần frontend của RADIUSdesk.

sudo mkdir -p  /var/www/html/cake4/rd_cake/logs
sudo mkdir -p /var/www/html/cake4/rd_cake/webroot/files/imagecache
sudo mkdir -p /var/www/html/cake4/rd_cake/tmp
sudo chown -R www-data. /var/www/html/cake4/rd_cake/tmp
sudo chown -R www-data. /var/www/html/cake4/rd_cake/logs
sudo chown -R www-data. /var/www/html/cake4/rd_cake/webroot/img/realms
sudo chown -R www-data. /var/www/html/cake4/rd_cake/webroot/img/dynamic_details
sudo chown -R www-data. /var/www/html/cake4/rd_cake/webroot/img/dynamic_photos
sudo chown -R www-data. /var/www/html/cake4/rd_cake/webroot/img/access_providers
sudo chown -R www-data. /var/www/html/cake4/rd_cake/webroot/img/hardwares
sudo chown -R www-data. /var/www/html/cake4/rd_cake/webroot/files/imagecache

Bước 10 – Cài đặt hoặc cấu hình lại MySQL, giúp đảm bảo hệ thống có dữ liệu múi giờ chính xác và hỗ trợ đầy đủ cho các tính năng và truy vấn liên quan đến múi giờ. Cụ thể, lệnh này thực hiện hai bước chính:

  • mysql_tzinfo_to_sql /usr/share/zoneinfo: Lệnh này đọc dữ liệu múi giờ từ thư mục /usr/share/zoneinfo, nơi chứa các file múi giờ của hệ thống. Dữ liệu múi giờ bao gồm thông tin về các múi giờ, giờ mùa và các quy tắc thay đổi múi giờ dựa trên địa điểm.
  • mysql -u root mysql: Lệnh này sử dụng dữ liệu múi giờ đã đọc và nhập nó vào cơ sở dữ liệu mysql trong hệ thống MySQL. Bảng mysql.time_zone và các bảng liên quan khác sẽ được cập nhật với thông tin về múi giờ, cho phép MySQL hiểu và sử dụng đúng múi giờ khi thực hiện các truy vấn liên quan đến thời gian.

Một lưu ý nhỏ là hãy đặt múi giờ của bạn là UTC.

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root  mysql

Nếu không có kết quả nào trả về ở lệnh trên thì bạn đã cấu hình đúng.

Bước 11 – Cấu hình MariaDB.

Tạo một cơ sở dữ liệu mới trong hệ thống MySQL. Cơ sở dữ liệu mới sẽ có tên là “rd”. Điều này cho phép bạn lưu trữ dữ liệu trong cơ sở dữ liệu “rd”.

mysql -u root -e "create database rd;"

Cấp quyền truy cập cho người dùng “rd” đối với cơ sở dữ liệu “rd”. Nó cấp toàn quyền (ALL PRIVILEGES) cho người dùng “rd” khi truy cập vào cơ sở dữ liệu “rd”. Người dùng này có thể truy cập từ máy chủ MySQL đang chạy trên localhost (127.0.0.1).

mysql -u root -e "GRANT ALL PRIVILEGES ON rd.* to 'rd'@'127.0.0.1' IDENTIFIED BY 'rd';"

Tương tự như lệnh trước, nhưng quyền truy cập được cấp cho người dùng “rd” khi truy cập từ máy chủ MySQL chạy trên localhost.

mysql -u root -e "GRANT ALL PRIVILEGES ON rd.* to 'rd'@'localhost' IDENTIFIED BY 'rd';"

Sử dụng lệnh này để đảm bảo rằng các thay đổi được áp dụng ngay lập tức.

mysql -u root -e "FLUSH PRIVILEGES;"

Bước 12 – Import Database của RADIUSdesk.

sudo mysql -u root rd < /var/www/html/cake4/rd_cake/setup/db/rd.sql

Hãy chạy SQL Patch giúp bạn cập nhật cơ sở dữ liệu RADIUSdesk một cách an toàn và tiện lợi, giữ cho dữ liệu hiện có được bảo tồn và thực hiện các cải tiến mới vào hệ thống.

sudo mysql -u root rd < /var/www/rdcore/cake4/rd_cake/setup/db/8.068_add_email_sms_histories.sql 

Bước 13 – Cấu hình Nginx cho RADIUSdesk.

Chạy đoạn Script dưới để thay đổi nội dung của file /etc/nginx/sites-enabled/default.

cat > /etc/nginx/sites-enabled/default << 'OEF'
server {
        listen 80 default_server;
        root /var/www/html;

        index index.php index.html index.htm index.nginx-debian.html;
        server_name _;

        location /cake4/rd_cake/node-reports/submit_report.json {
            try_files $uri $uri/ /reporting/reporting.php;
        }

        location ~ \.php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        }

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ /\.ht {
              deny all;
        }

        location ~ ^/cake4/.+\.(jpg|jpeg|gif|png|ico|js|css)$ {
            rewrite ^/cake4/rd_cake/webroot/(.*)$ /cake4/rd_cake/webroot/$1 break;
            rewrite ^/cake4/rd_cake/(.*)$ /cake4/rd_cake/webroot/$1 break;
            access_log off;
            expires max;
            add_header Cache-Control public;
        }

        location /cake4/rd_cake {
        rewrite ^/cake4/rd_cake(.+)$ /cake4/rd_cake/webroot$1 break;
        try_files $uri $uri/ /cake4/rd_cake/index.php$is_args$args;
        }
}
OEF

Bạn có thể tạo thêm một file test.php để test hoạt động của nó.

cat > /var/www/html/test.php << 'OEF'
<?php
    phpinfo();
?>
OEF

Chạy lệnh nginx -t để kiểm tra xem có lỗi cú pháp do đã chỉnh sửa file /etc/nginx/sites-enabled/default hay không?

Kết quả như dưới được xem là không có lỗi cú pháp.

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Hãy khởi động lại Nginx hoặc có thể chạy lệnh nginx -s reload.

sudo systemctl restart nginx.service

Bước 14 – Kiểm tra kết quả.

  • Kết quả PHP đã chạy.
  • Truy cập RADIUSdesk Desktop theo url http://<ip-address>/rd/build/production/Rd/ với thông tin login mặc định là root/admin.

Kết quả login thành công

  • Hoặc phiên bản cho điện thoại sử dụng url http://<ip-address>/rd_mobilevới thông tin login mặc định vẫn là là root/admin.

Và đây là kết quả.

Tài liệu tham khảo https://radiusdesk.com/wiki/getting_started/22_install_ubuntu_nginx

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories