Hướng dẫn xây dựng server tại nhà dùng làm VPS chạy website.

Đã bao giờ bạn từng nghĩ mình có thể tự tạo hosting tại nhà hay biến máy tính của mình thành VPS hay chưa? Trước đây mình rất nhiều lần muốn làm cái server tại nhà để chạy website cho đở tốn 5$/tháng thuê vps ở các dịch vụ cung cấp. Do điều kiện thiết bị và cấu hình server tại nhà rất phức tạp nên mãi tới năm 2020 mới làm được cái server tại nhà để chạy website. Nói server cho nó oách chứ thật ra là cái máy tính NUC cài Ubuntu và Cyber Panel.

Demo anh chị test thử: https://bdsvip.tientv.xyz

Về hiệu năng, mình hoàn toàn hài lòng khi host website tại nhà. Tuy nhiên về tính ổn định thì không thể do có nhiều vấn đề cần phải quan tâm và không dễ khắc phục. Ví dụ trường hợp mình hay gặp phải nhất là mất điện …

1. Chuẩn bị trước khi xây dựng server tại nhà

Phần cứng:

  • Máy tính, laptop, Nuc kết nối mạng và có thể chạy liên tục dùng làm server.
  • USB 4Gb

Kiến thức:

Chuẩn bị phần mềm

Hệ điều hành: Bạn có thể sử dụng CentOS, Ubuntu Server, Fedora,…. tuy nhiên trong bài này mình sẽ cài Ubuntu Server.

Lưu ý: Khi tải Ubuntu các bạn nhớ chọn bản Server install image

Control Panel cho VPS: Các bạn có thể sử dụng các Panel trả phí như Direct Admin, Cpanel … để được hỗ trợ tốt hơn và bảo mật cao hơn. Tuy nhiên, với server tại gia này các bạn nên dùng Free là tốt nhất. Mình đề xuất aapanel hoặc Cyber Panel. Mình đã sử dụng qua 2 Panel free này tự thấy nhanh ổn định, bảo mật tốt, riêng Cyber Panel thì phân user tốt hơn.

Trong bài này mình sẽ sử dụng Cyberpanel: https://cyberpanel.net

Các panel miễn phí khác: https://www.aapanel.com, https://www.webmin.com, http://www.sentora.org

2. Cài đặt hệ điều hành Ubuntu server

Để cài Ubutum server thì bạn tải ubuntu và tạo usb boot cài đặt Ubuntu theo hướng dẫn: Xem hướng dẫn tạo usb boot Ubuntu

Lưu ý: Trước khi cài bạn nên xóa toàn bộ phân vùng trong SSD

Gắng USB boot cài Ubuntu vào máy tính chạy khởi động boot từ USB. Nếu thành công bạn sẽ nhận được màn hình chọn ngôn ngữ cài Ubuntu như hình sau:

Ubuntu 64 Bit 2021 12 07 20 49 29

Chọn English và Enter để tiếp tục

Chọn tiếp English rồi Enter. Enter thêm lần nữa đến bước tiếp theo

Ubuntu 64 Bit 2021 12 07 20 52 32

Màn hình này hỏi bạn có cài cập nhật Ubuntu không.

Bạn chọn như hình đề qua bước tiếp theo

Ubuntu 64 Bit 2021 12 07 20 52 45

Chọn bàn phím cứ để mặc định

Bấm Done để qua bước tiếp theo. Tại đây bạn nên cắm dây mạng hoặc kết nối Wifi trước để nó nhận được IP từ modem luôn, khỏi phải cấu hình thủ công.

Ubuntu 64 Bit 2021 12 07 20 52 57

Kết nối mạng để Ubuntu tự nhận IP

Lưu ý: ghi lại IP mạng để khi cài xong sử dụng nhe. Ip của mình ở trên là: 192.168.142.141

Bấm Done để qua bước tiếp theo

Ubuntu 64 Bit 2021 12 07 20 53 08

Cài Proxy, mình ko sử dụng nên Done tiếp tục

Ubuntu 64 Bit 2021 12 07 20 53 17

Cứ để nguyên bấm Done tiếp tục

Ubuntu 64 Bit 2021 12 07 20 53 25

Chọn phân vùng SSD để sử dụng

Ở hình trên mình sử dụng ổ đĩa 30GB. Các bạn xem có hiển thị hết dung lượng SSD rồi bấm Done để qua bước tiếp theo.

Ubuntu 64 Bit 2021 12 07 20 56 30

Tùy chỉnh phân vùng cài Ubuntu

Lưu ý: Bước này mặc định Ubuntu sẽ không sử hết dung lượng SSD của bạn. Nên bạn cần phải chỉnh tối đa dung lượng SSD như ở phần Gạch chân màu đỏ hình trên. Ổ đĩa mình 30GB, chia cho boot 1 GB còn 28,99GB. Bấm vào dòng gạch đỏ và chỉnh dung lượng bằng dòng trên nó là được. → bấm Done để qua bước tiếp theo

Ubuntu 64 Bit 2021 12 07 20 58 09

Bước này là nhập các thông tin cho server.

  • Your name: Nhập tên tùy ý, không nhập ký tự đặt biệt
  • Your server’s name: Nhập tên server viết liền không dấu
  • Pick a username: Tên đăng nhập quản trị server, viết liền không dấu, không nhập chữ admin
  • Password: Mật khẩu đăng nhập server, nhập xong nhớ nhé.

Bấm Done qua bước kế tiếp

Ubuntu 64 Bit 2021 12 07 20 58 36

Đánh dấu cài SSH

Bước này bạn dùng phím Space để đánh dấu lự chọn cài đặt: Install OpenSSH Server

Bấm Done để qua bước tiếp

Ubuntu 64 Bit 2021 12 07 20 58 45

Để mặc định ko chọn gì cả

Bước này cứ để mặc định và bấm Done nhé

Quá trình cài đặt này diễn ra khoảng 15 phút hơn, sau khi cài đặt thành công chọn Reboot Now để khởi động lại máy (nhớ rút USB ra).

Ubuntu 64 Bit 2021 12 07 21 09 11

Khởi động lại là xong đã cài thành công Ubuntu Server

3. Cài đặt Cyber Panel để quản lý server

Để tiến hành cài đặt Cyber Panel thì mình kết nối SSH vào server bầng Mobaxterm để cài cho dể. Tiện lợi copy và Paste.

IP server của mình ở trên là: 192.168.142.141 – Các bạn xem hướng dẫn cài đặt Mobaxterm mình có để linh ở đầu bài nhé.

Image 8

Sau khi đăng nhập vào SSH điền User và Pass đã tạo ở phần cài Ubuntu ta được như hình dưới

Screenshot 2021 12 08 103536

Sau khi SSH vào rồi, bạn gõ lệnh sudo để cấp quyền root cài đặt Cyber Panel.

sudo su -

Image 9

Dán lệnh cài đặt Cyber Panel vào

sh <(curl https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh)

Đợi một lát, chọn số 1 để cài đặt CyberPanel

Process check completed…
CyberPanel Installer v2.0
1. Install CyberPanel.
2. Install Addons.
3. Exit.
Please enter the number[1-3]: 1

Bạn hãy chọn: Chọn 1 Cài CyberPanel với OpenLiteSpeed

CyberPanel Installer v2.0
RAM check : 81/991MB (8.17%)
Disk check : 1/25GB (6%) (Minimal 10GB free space)
1. Install CyberPanel with OpenLiteSpeed.
2. Install Cyberpanel with LiteSpeed Enterprise.
3. Exit.
Please enter the number[1-3]: 1

Chọn y và enter để cài Full

Install Full service for CyberPanel? This will include PowerDNS, Postfix and Pure-FTPd.
Full installation [Y/n]: y

Bấm enter để mặc định không cài Remote SQL nhé

Do you want to setup Remote MySQL? (This will skip installation of local MySQL)

(Default = No) Remote MySQL [y/N]:

Bước này cài đặt Pass của Cyber (Khác với pass của Ubuntu) bấm enter để mặc định là 1234567 hoặc bạn nhập pass của bạn vào: Mình để mặc định và đổi sau

Please choose to use default admin password 1234567, randomly generate one (recommended) or specify the admin password?
Choose [d]fault, [r]andom or [s]et password: [d/r/s]

Tiếp theo, nó sẽ hỏi bạn một số thứ như: cài Memcached, LiteSpeed Memcached, Redis. Mình chọn y để cài đặt tất cả.

Please choose to use default admin password 1234567, randomly generate one (recommended) or specify the admin password?
Choose [d]fault, [r]andom or [s]et password: [d/r/s] r (Lưu ý: chọn R để random pass admin)
Admin password will be provided once installation completed…
Replace JS/CSS files to JS Delivr?
This may improve panel loading speed in Asia Pacific region…
Please select [y/N]: y
Install Memcached extension for PHP?
Please select [y/N]: y
Install LiteSpeed Memcached?
Please select [y/N]: y
Install Redis extension for PHP?
Please select [y/N]: y
Install Redis?
Please select [y/N]: y

Cuối cùng, bạn chờ quá trình cài đặt khoảng 10 – 15 phút, sau khi cài CyberPanel thành công bạn sẽ nhận được thông tin đăng nhập như sau:

Screenshot 2021 12 08 111009

Ở chỗ visit: trong hình là IP của bạn ngoài môi trường internet, bây giờ bạn chưa nat port ra thì chưa vào được. Vì thế, bạn cần thay đổi IP thành IP cục bộ (IP nãy giờ SSH đang sử dụng của mình: 192.168.142.141).

Như vậy bạn đã cài đặt CyberPanel cho VPS xong rồi đó. Bây giờ đăng nhập vào CyberPanel thông qua 192.168.142.141:8090 bằng các thông tin trên.

Image 12

Xem thêm: Hướng dẫn cài đặt bảo mật https cho trang quản trị trên CyberPanel

3. NAT Port Modem cho server

(NAT) port cho phép dữ liệu đi qua thiết bị mạng như modem, router wifi …,mà không bị ngăn chặn bởi tường lửa cho phép domain về IP nhà bạn thì domain đó mới truy cập được server web của bạn đã cài.

NAT Port trên các modem: Cái này tham khảo thôi không phải modem nào cũng như nhau và để truy cập được các cài đặt này bạn cần biết tài khoản admin đăng nhập modem nữa nhé (không có thì xin nhà mạng).

Bước 1: Truy cập vào modem đang sử dụng. Modem nhà mình đang sử dụng là của Viettel có địa chỉ truy cập, user và pass ghi ở dưới modem: 192.168.1.1

Bước 2: Gán Ip mặc định cho con server của mình

  • Bạn vào phần Lan trong Modem tìm Ip mà thiết bị của mình nhận lúc cài ubuntu như của mình là: 192.168.142.141. Xem địa chỉ Mac của máy server là gì. Ví dụ: 54:27:1e:e4:1e:9d
  • Vào phần DHCP Binding để gán IP cho máy server của mình. Để khi khởi động máy server là thì mặc định modem sẽ cấp IP đã gán và Server. Như vậy thì những phần Nat của chúng ta không bị lỗi nhé.

Image 13

Ví dụ: máy của mình

Lưu ý: Bạn nên chọn dãy IP ít sử dụng theo modem để gán.

Bước 3: Nat Port

  • Vào Security > DMZ Host (Tùy mỗi modem mà tìm DMZ nhé): Mục này mình phải điền Ip của server đã gán ở trên. Khi truy cập bên ngoài vào mạng nhà mình thì mặc định chuyển tới máy server thay vì các máy tính khác trong hệ thống mạng nhà mình.

Image 14

  • Chuyển qua Port Forwarding để cho Nat các Port dưới.
Please make sure you have opened following port for both in/out:
TCP: 8090 for CyberPanel
TCP: 80, TCP: 443 and UDP: 443 for webserver
TCP: 21 and TCP: 40110-40210 for FTP
TCP: 25, TCP: 587, TCP: 465, TCP: 110, TCP: 143 and TCP: 993 for mail service
TCP: 53 and UDP: 53 for DNS service

Screenshot 2021 12 08 115910

Lưu ý: Hình trên là ví dụ chuyển Port 8090. Bạn phải làm lần lượt các port ở trên nhé.

Như vậy là Nat Port xong bạn vào đây để kiểm tra Port nát thành công không. Như hình dưới là thành công

Screenshot 2021 12 08 120154

4. Tự động cập nhật IP động cho tên miền.

Internet ở gia đình thì mặc định IP WAN (Địa chỉ IP của mình ngoài internet) sẽ thay đổi liên tục. Vậy nên khi bạn dùng tên miền để truy cập vào Server tại nhà thì bắt buộc phải chỉnh DNS khi IP WAN thay đổi. Mục này hướng dẫn cập nhật tự động DNS cho tên miền.

Lưu ý: Nếu nhà bạn nào có điều kiện sài IP tỉnh thì bỏ qua bước này

Để có thể đổi IP tự động thì mình dùng Cloudflare để thực hiện. Ưu điểm của Cloudflare là cập nhật DNS cực kỳ nhanh và có API liên kết để thực hiện.

Cài đặt và cấu hình Cloudflare

Bước 1: Đăng ký tài khoản và Chuyển DNS tên miền về Cloudflare.com → Search google vài bước là xong

Bước 2: Lấy API Cloudflare → Sau khi add tên miền cần đưa về host thì bạn sẽ thấy API

Screenshot 2021 12 08 122712

Bước 3: Truy cập vào SSH server để cài đặt và cấu hình chạy cập nhật IP như sau

git clone https://github.com/LINKIWI/cloudflare-ddns-client.git

Image 16

cd cloudflare-ddns-client

Image 17

sudo apt install python-is-python3

Image 18

cloudflare-ddns --configure
  • Choose [T]oken or [K]ey: chọn chữ K rồi Enter.
  • Email: email đăng nhập cloudflare của bạn
  • API Key: dán API Key đã lấy từ bước 2 vào.
  • Comma-delimited domains: nhập domain cần cập nhật IP vào, nhiều domain thì cách nhau bằng dấu chấm phẩy (,)

Khi nhận được thông báo Configuration file written…. successfully. Gõ tiếp lệnh sau để cập nhật IP vào domain của bạn

cloudflare-ddns --update-now

Thêm cron job tự động cập nhật IP

crontab -e

Image 19

Chọn 1 tiếp tục nhé

Trong giao diện chỉnh sửa crontab, bạn thêm dòng này vào cuối và lưu lại. Dòng này mang ý nghia là sau 5 phút sẽ update IP một lần, các bạn có thể thay đổi theo ý thích nhé.

*/5 * * * * /usr/local/bin/cloudflare-ddns --update-now

Screenshot 2021 12 08 123816 1

Bấm Ctrl + Z để thoát khỏi trình soạn thảo.

Cuối cùng: Khởi động lại server.

Để kiểm tra thì bạn thử tắt Modem và xem CloudFlare có cập nhật IP không nhé.

Xem thêm: Hướng dẫn cài đặt bảo mật https cho trang quản trị trên CyberPanel

Lời kết

Như vậy là mình đã hướng dẫn các bạn các bước chi tiết nhất để xây dựng một server riêng tại nhà phục vụ cho việc nghiêng cứu và vọc vạch rồi. Về thực tế bạn có thể dùng server này để chạy các web demo cho khác hàng hoặc dùng để làm VPS chính cho các web của bạn cũng được.
Nguồn: Hướng dẫn xây dựng server tại nhà dùng làm VPS chạy website. - Tien's Blog

1 Like