Đố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.
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.
- Ubuntu Server 16.04 LTS: https://releases.ubuntu.com/16.04
- Ubuntu Server 18.04 LTS: https://releases.ubuntu.com/18.04
- Ubuntu Server 20.04 LTS: https://releases.ubuntu.com/20.04
- CentOS 7, 8: https://www.centos.org/download
- Fedora Server: https://getfedora.org/en/server/download
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.com, https://www.webmin.com, http://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.
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.
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.
Đế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é.
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é.
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).
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
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.
Tiếp đến, chọn 1 luôn nhé.
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 đó.
Ở 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é.
Mở port trên linux nếu web ko chạy đc
# firewall-cmd --zone=public --add-port=2222/tcp --permanent# firewall-cmd --zone=public --add-port=21/tcp --permanent# firewall-cmd --zone=public --add-port=80/tcp --permanent# firewall-cmd --zone=public --add-port=25/tcp --permanent# firewall-cmd --reload
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.
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é.
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
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
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à mỗi ngày sẽ update IP một lần, các bạn có thể thay đổi theo ý thích nhé.
0 0 * * * /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é!