Ubuntu - Linux

Hướng dẫn xây dựng server riêng tại nhà dùng làm VPS cá nhân

Đối với các bạn web dev thì server hay VPS đã là khái niệm không còn xa lạ nữa, thế nhưng đã bao giờ bạn nghĩ đến việc dựng một server riêng tại nhà để test code hay vọc vạch chưa? Trong bài viết này mình sẽ hướng dẫn chi tiết nhất cách để Dựng server riêng tại nhà dùng làm VPS cá nhân.

Hướng dẫn tự dụng server riêng tại nhà
Hướng dẫn tự dụng server riêng tại nhà

Yêu cầu trước khi thực hiện

  • Về kiến thức: Không cần phải biết nhiều cái năng cao nhưng về cơ bản là phải có
    • Về domain, hosting
    • Biết đôi chút về modem đang xài ở nhà.
    • Sử dụng hệ điều hành linux
    • Cách thức kết nối SSH
    • Biết sử dụng dịch vụ của Cloudflare.com
    • Biết tạo USB boot.
    • Một chút tiếng Anh càng tốt.
  • Về vật chất ????: Không có thì không được nhé, không xịn thì cùi cùi cũng được
    • 1 cái USB tối thiểu 4GB để làm USB cài đặt HĐH (có thể không cần, nếu dùng máy ảo)
    • 1 cái máy tính, laptop gì cũng được miễn là có khả năng kết nối mạng. Dùng làm server.

Các bước thực hiện tạo server riêng tại nhà

Tại đây mình sẽ hướng dẫn các bạn chi tiết nhất để tự xây dựng server riêng “tại gia” từ việc cài hệ điều hành, cài panel quản trị, NAT port cho server (cho phép truy cập server từ xa), làm sao để tự cập nhật IP động cho tên miền.

Mình xin nói thêm về IP động của modem, có nghĩa là mỗi lần nhà bạn cúp điện modem mất nguồn hay bị đứt cáp quang lúc modem kết nối lại sẽ được cấp một IP mới. Như vậy domain bạn đang trỏ về IP sẽ không còn vào được nữa, thay vì làm thủ công phải truy cập trang quản lí và trỏ IP mới thì mình sẽ hướng dẫn bạn làm tự động.

Nếu có đầu tư các bạn có thể tham khảo dịch vụ IP tĩnh của các nhà mạng với giá khoảng 200k/tháng. Dùng cái này thì bỏ được bước cuối 😀

Chuẩn bị các file cần thiết

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.

Công cụ tạo USB boot: https://rufus.ie (mình hay dùng thằng này do nó đơn giản dễ dùng)

Panel cho VPS: Các bạn có thể sử dụng các Panel trả phí để được hỗ trợ tốt hơn và bảo mật cao hơn. Tuy nhiên, cái này mình tạo để vọc vạch nên sử dụng hang “chùa” là được rồi.

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.comhttps://www.webmin.comhttp://www.sentora.org

Cài đặt hệ điều hành Ubuntu Server

Mình bỏ qua bước tạo USB boot do cái này chắc hẳn ai cũng từng làm rồi 😀

Đầu tiên, khởi động máy và boot vào usb bạn đã tạo. Chọn ngôn ngữ English > Enter.

Chọn ngôn ngữ
Chọn ngôn ngữ

Lúc này bạn chờ một lát sẽ có thêm của sổ chọn ngôn ngữ, cái này chọn tiếp English rồi Enter. Enter thêm lần nữa đến bước Network connections…

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.

Tự xây dựng server riêng tại nhà
Đã nhận IP

Tiếp theo, Config proxy, Config Ubuntu Archive server…. Enter để qua bước. Qua Guided Storage config cứ để mặc định nếu bạn có 1 ổ cứng trong máy, nếu có nhiều hơn thì chỉ việc chọn cái bạn cần cài HĐH.

Chọn ổ cứng lưu HĐH
Chọn ổ cứng lưu HĐH

Đến bước xác nhận chọn Done.

Kế đến 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é.
Tự xây dựng server riêng tại nhà
Nhập thông tin cho server

Phần SSH Setup các bạn nhớ tick vào cài đặt (dùng dấu cách trên bàn phím)  rồi tiếp tục nhé.

Tự xây dựng server riêng tại nhà
Cài đặt SSH

Qua phần Feature server snap các bạn không cần quan tâm, chọn Done để bắt đầu cài đặt Ubuntu Server vào máy.

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).

Tự xây dựng server riêng tại nhà
Cài đặt hoàn tất

Cài đặt Cyber Panel lên server

Ở bước này các bạn có thể sử dụng màn hình và bàn phím đang gắn vào máy server để gõ hoặc bỏ qua một bên và SSH vào server để tiện copy – paste nhé.

IP của server nằm ở bước đầu tiên trong quá trình cài đặt HĐH đó, nếu quên thì vào modem xem lại mục DHCP Info hoặc cài thêm net-tools vào bằng lệnh

sudo apt net-tools

Gõ lệnh này để xem IP card mạng đang dùng

ifconfig
Tự xây dựng server riêng tại nhà
IP của Server

Nếu báo lỗi thì cài thêm net-tools bằng lệnh: sudo apt-get net-tools sau đó gõ lại nhé.

Trong bài này mình sẽ SSH vào server để cài đặt, các bạn có thể sử dụng Putty để SSH hoặc bất kỳ công cụ nào bạn biết.

 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 -

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.

Cài đặt Cyber Panel lên server
Chọn 1: Install CyberPanel.

Tiếp đến, chọn 1 luôn nhé.

Cài đặt Cyber Panel lên server
Chọn 1: Install Cyberpanel with OpenLightSpeed

Các bước tiếp theo bạn chọn theo mặc định

  • Install PowerDNS, Postfix, Pure-FTPd… chọn Y
  • Do you want to setup Remote MySQL… chọn N
  • Chọn phiên bản MySQL…. Enter để cài bản mới nhất
  • Please choose default admin password 1234567 …. Enter để cài mật khẩu mặt định (có thể đổi sau) hoặc nhập mật khẩu của bạn rồi Enter.
  • Install Memcached… chọn N (có thể cài sau)
  • Install Redis… chọn N như Memcached.
  • Install Watchdog… chọn Y theo mặc định.

Chờ quá trình cài đặt diễn ra và hoàn tất, bạn sẽ nhận được thông tin về panel như bên dưới, nếu không nhớ thì có thể copy và lưu lại đâu đó.

Cài đặt Cyber Panel lên server
Thông tin đăng nhập CyberPanel

Ở 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 dô ấy).

Đến đây thì các bạn vào tạo website mới trước để tí trỏ IP về nhé.

NAT Port cho server

NAT Port hiểu nôm na là bạn sẽ mở các cổng trên server để bên ngoài có thể truy cập vào, đồng nghĩa với việc bạn trỏ domain về IP nhà bạn thì domain đó mới truy cập được.

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).

  • VNPT: Advenced Feature > NAT > DMZ Host
  • Viettel: Advenced Setup > Application > DMZ Host
  • TP-Link: Forwaring > DMZ

Như dưới đây mình thực hiện Nat toàn bộ port trên IP của con server mới cài ra ngoài internet.

Tự xây dựng server riêng tại nhà
NAT port cho server tại nhà

Bước này chỉ đơn giản vậy thôi, đến đây thì bạn thử dùng 4G truy cập vào Cyber Panel thông qua IP Wan trong phần thông tin lúc cài đặt xem được chưa nhé, nếu được là bạn đã thành công.

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

Như mình đã nói ở trên, mỗi khi IP modem nhà bạn thay đổi thì bạn cần phải vào cập nhật lại IP mới. Nếu bạn không có ở nhà thì cũng chẳng tài nào biết ai mới là bao nhiêu.

Vậy nên, cách sau đây sẽ giúp bạn tự động hóa việc cập nhật IP mới cho tên miền. Ở đây bạn chuyển tên miền về Cloudflare nhé.

[!] Update: Cách mới, do cách cũ source không còn tương thích nhiều

#1. Lấy API Token cloudflare tại đây: https://dash.cloudflare.com/profile/api-tokens

Việc lấy token này sẽ sử dụng cho quá trình cập nhật ip của domain.

#2. SSH vào server truy cập thư mục user

cd ~
git clone https://github.com/timothymiller/cloudflare-ddns.git
cd cloudflare-ddns
cp config-example.json config.json

#3. Sử dụng nano sửa file config.js

nano config.js

Cấu trúc file config.js như sau

{
  "cloudflare": [
    {
      "authentication": {
        "api_token": "api_token bạn đã lấy ở #1",
        "api_key": {
          "api_key": "api_key ko cần sửa",
          "account_email": "your_email không cần sửa"
        }
      },
      "zone_id": "tên miền bạn muốn cập nhật, vd: tienich.xyz",
      "subdomains": [
        {
          "name": "",
          "proxied": false
        },
        {
          "name": "tên miền con, ví dụ: m.tienich.xyz, không có thì bỏ trống",
          "proxied": false
        }
      ]
    }
  ],
  "a": true,
  "aaaa": true,
  "purgeUnknownRecords": false,
  "ttl": 300
}

Giải thích một xíu

  • “api_token”: API token của cloudflare lấy ở bước 1, nếu dùng cái này thì để trống api_key
  • “zone_id”: nhập domain bạn muốn cập nhật
  • “subdomains”: không dùng thì để nguyên
  • “a”: true -> cập nhật ipv4
  • “aaaa”: true -> cập nhật ipv6

Chỉnh sửa xong thì Ctrl+S và Ctrl+X để thoát nano.

#4. Chỉnh sửa cron job cho chạy tự động. Gõ lệnh sau:

crontab -e

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 ý nghĩa 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 * * * * /home/your_username_here/cloudflare-ddns/start-sync.sh

* Cách cũ

Bước 1: SSH vào server nếu đã thoát. Gõ lần lượt các lện sau (Nguồn: https://github.com/LINKIWI/cloudflare-ddns-client)

git clone https://github.com/LINKIWI/cloudflare-ddns-client.git
cd cloudflare-ddns-client
sudo make install
Tự xây dựng server riêng tại nhà
Gõ lệnh cuối bị lỗi như thế này.

Nếu gõ lệnh cuối và gặp lỗi như hình thì các bạn gõ thêm lệnh này. Sau đó gõ lại lệnh cuối ở trên.

sudo apt install python-is-python3

Bước 2: Lấy API Key của Cloudflare dùng cho việc cập nhật IP tại đây: https://dash.cloudflare.com/profile/api-tokens. Bước này nếu chưa rành thì các bạn tra Google thêm nhé, cũng đơn giản thôi.

Bước 3: Quay lại SSH gõ tiếp

cloudflare-ddns --configure

Bước 4: Nhập các thông tin cho cấu hình cloudflare-ddns

  • 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 (,)

Bước 5: 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

Tự xây dựng server riêng tại nhà
Đã cập nhật IP cho DNS trên Cloudflare.

Bước 6: Thêm cron job tự động cập nhật IP, gõ lệnh sau

crontab -e

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

Bước 7: Khởi động lại server.

Video hướng dẫn chi tiết

Mình cũng có làm một video về quá trình thực hiện các bước trên, do quá trình thu âm lỗi và mình lòng tiếng vào sau nên nghe không hay lắm. Các bạn thông cảm nhé!

sddefaultplay btn

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 “sịn” hơn là dùng để làm VPS chính cho các web của bạn cũng được. Tuy nhiên để web hoạt động suông sẽ thì bạn phải tính đến việc tích điện dự phòng cho server tránh trường hợp cúp điện nữa.

Trong bài này có nhiều phần và ở các phần bạn có thể vận dùng vào các như cầu khác ngoài thực tế chứ không chỉ để dựng server riêng đâu nha.

Cảm ơn các bạn đã quan tâm. Nếu có khó khăn gì hãy comment bên dưới để mình giúp đỡ nếu trong khả năng nhé. Chúc bạn thành công.

Cùng chủ đề

13 Comments

        1. Mình chạy ‘sudo make install‘ nó bị ra lỗi như này ạ

  1. Tốc độ so với việc dùng VPS của các nhà cung cấp ntn bạn?
    Hệ thống hoạt động có ổn định không?
    Phương pháp này với phương pháp dùng NAS thì ntn?
    Mong bạn giải đáp giúp nhé. TKS.

    1. Tốc độ phụ thuộc vào Cpu và mạng nhà bạn
      Hoạt động chỉ để vọc thôi còn muốn ổn định phải đảm bảo về điện 24/24 (có khi cúp điện)
      Phương pháp này có thể chạy nhiều domain, nếu bạn chạy các web demo thì ok

      1. thanks bạn.
        Bạn nhắm chừng nó có ăn được mấy con VPS 6$ tới 20-30$ của VULTR hoặc DO không bác?
        CPU mình nhiều core hơn, SSD chắc sẽ nghiên cứu đổi sang loại NVME
        Tốc độ mạng chắc ko bằng nhà cung cấp được.
        Điện thì mình có giải pháp duy trì được.

        1. nếu duy trì về điện mà mạng nhà bạn ko bị rớt là được

  2. Mình đến phần: NAT Port cho server, mình gán IP khi tạo ubuntu như hình hướng dẫn sau đó vào bằng 4G theo dịa chỉ visit khi cài CyberPanel nhưng không vào được. Khi vào bằng mạng của mình và truy cập theo địa chỉ IP lúc tạo ubuntu thì vào được trang chủ của Cpanel. Xin hướng dẫn khắc phụ ạ!

    1. địa chỉ trên ubuntu chỉ là địa chỉ LAN local trong mạng nhà bạn thôi, bạn phải NAT port 80, 443 của IP đó và truy cập bằng địa chỉ LAN WAN mới được

Trả lời

Back to top button