สร้าง server
วันที่: 2026-09-12 | สร้างเมื่อ: 2026-09-11 13:14:24

ได้ครับ ถ้าคุณต้องการทำ Ubuntu Server 24.04 บน RPi 4B ให้เป็น server คล้าย Lightsail และมีชุดนี้:


Ubuntu 24.04 LTS
├── Node.js
├── PM2
├── Nginx
├── MySQL
└── SSH

ผมแนะนำติดตั้งตามลำดับนี้ เพื่อไม่ให้ config ชนกัน

1. Update Ubuntu

sudo apt update
sudo apt upgrade -y

ติดตั้งเครื่องมือพื้นฐาน:


sudo apt install -y curl wget git unzip vim htop ca-certificates


ตรวจ Ubuntu:


lsb_release -a


2. ตั้ง Timezone เป็น Thailand

sudo timedatectl set-timezone Asia/Bangkok


ตรวจ:


timedatectl


ควรเห็น:


Time zone: Asia/Bangkok


3. ติดตั้ง Node.js

ผมแนะนำ Node.js LTS ไม่ควรใช้ version จาก apt ของ Ubuntu ถ้าคุณต้องการ environment ใกล้กับ server production

ติดตั้ง NodeSource:


curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -


แล้ว:


sudo apt install -y nodejs


ตรวจ:


node -v
npm -v

เช่น:


v22.x.x
10.x.x

4. ติดตั้ง PM2

PM2 จะทำให้ Node.js application ทำงานตลอด แม้ SSH ออกจากเครื่องแล้ว


sudo npm install -g pm2


ตรวจ:


pm2 -v


5. ติดตั้ง MySQL

sudo apt install -y mysql-server


เปิดให้เริ่มอัตโนมัติ:


sudo systemctl enable mysql
sudo systemctl start mysql

ตรวจ:


sudo systemctl status mysql


ต้องเป็น:


Active: active (running)


6. ตั้งค่า MySQL

รัน:


sudo mysql_secure_installation


ระบบจะถามหลายข้อ

สำหรับ Server ผมแนะนำ:


VALIDATE PASSWORD COMPONENT → Yes
Remove anonymous users       → Yes
Disallow root login remotely → Yes
Remove test database         → Yes
Reload privilege tables      → Yes

จากนั้นเข้า MySQL:


sudo mysql


7. สร้าง Database

ตัวอย่างสมมุติ application ชื่อ chim:


CREATE DATABASE chim
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

สร้าง user:


CREATE USER 'chimuser'@'localhost'
IDENTIFIED BY 'ใส่รหัสผ่านที่แข็งแรง';

ให้สิทธิ์:


GRANT ALL PRIVILEGES ON chim.* TO 'chimuser'@'localhost';


ใช้:


FLUSH PRIVILEGES;


ออก:


EXIT;


ทดสอบ:


mysql -u chimuser -p chim


8. ติดตั้ง Nginx

sudo apt install -y nginx


เปิด auto start:


sudo systemctl enable nginx
sudo systemctl start nginx

ตรวจ:


sudo systemctl status nginx


จาก PC เปิด:


http://192.168.1.90


ควรเห็นหน้า:


Welcome to nginx!


9. เปิด Firewall

ติดตั้ง UFW:


sudo apt install -y ufw


ก่อนเปิด firewall ต้องอนุญาต SSH ก่อน


sudo ufw allow OpenSSH


HTTP:


sudo ufw allow 80/tcp


HTTPS:


sudo ufw allow 443/tcp


เปิด:


sudo ufw enable


ตรวจ:


sudo ufw status


ควรประมาณ:


22/tcp    ALLOW
80/tcp    ALLOW
443/tcp   ALLOW

ไม่จำเป็นต้องเปิด port:


3306


เพราะเราจะให้ Node.js ติดต่อ MySQL ผ่าน localhost

10. สร้าง Node.js Application

สมมุติ application อยู่:


/home/rpi4ubuntu/app


สร้าง:


mkdir -p ~/app
cd ~/app

สร้าง:


nano server.js


ตัวอย่าง:


const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('RPi Node.js Server OK\n');
});

server.listen(3000, '127.0.0.1', () => {
    console.log('Server running on port 3000');
});

ทดลอง:


node server.js


จาก RPi:


curl http://127.0.0.1:3000


ควรได้:


RPi Node.js Server OK


กด:


Ctrl+C


เพื่อหยุด

11. ให้ PM2 จัดการ Node.js

รัน:


cd ~/app
pm2 start server.js --name chim-server

ตรวจ:


pm2 status


จะเห็นประมาณ:


┌────┬──────────────┬─────────┬──────┐
│ id │ name         │ status  │ cpu  │
├────┼──────────────┼─────────┼──────┤
│ 0  │ chim-server  │ online  │ ...  │
└────┴──────────────┴─────────┴──────┘

12. ให้ PM2 Start หลัง Reboot

สำคัญมากสำหรับ Server


pm2 startup


มันจะให้คำสั่งประมาณ:


sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u rpi4ubuntu --hp /home/rpi4ubuntu


ให้ copy คำสั่งที่ PM2 แสดงออกมา แล้วรัน

จากนั้น:


pm2 save


ตอนนี้:


Power ON
   ↓
Ubuntu
   ↓
Network
   ↓
MySQL
   ↓
Nginx
   ↓
PM2
   ↓
Node.js

สามารถ reboot ทดสอบได้:


sudo reboot


หลังกลับมา:


pm2 status


Node.js ควรเป็น:


online


13. ให้ Nginx เป็น Reverse Proxy

นี่เป็นส่วนสำคัญมาก

ตอนนี้ Node.js:


127.0.0.1:3000


เราไม่ควรเปิด 3000 ออก Internet โดยตรง

ให้ใช้:


Internet
    │
    ▼
 Nginx :80
    │
    ▼
Node.js :3000
    │
    ▼
 MySQL

สร้าง config:


sudo nano /etc/nginx/sites-available/chim


ใส่:


server {
    listen 80;
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:3000;

        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

เปิด site:


sudo ln -s /etc/nginx/sites-available/chim /etc/nginx/sites-enabled/chim


ลบ default:


sudo rm /etc/nginx/sites-enabled/default


ตรวจ config:


sudo nginx -t


ต้องได้:


syntax is ok
test is successful

reload:


sudo systemctl reload nginx


14. ทดสอบ

จาก Windows:


http://192.168.1.90


ควรได้:


RPi Node.js Server OK


แปลว่า:


Windows
   │
   │ HTTP :80
   ▼
Nginx
   │
   │ proxy
   ▼
Node.js :3000

ทำงานแล้วครับ

15. สถาปัตยกรรมที่ได้

สุดท้าย RPi ของคุณจะเป็นแบบนี้:


                    Raspberry Pi 4B
                  Ubuntu 24.04 ARM64
                         │
        ┌────────────────┼────────────────┐
        │                │                │
       SSH             Nginx            MySQL
        │                │
        │              :80/443
        │                │
        │                ▼
        │             Node.js
        │                │
        │              PM2
        │
        ▼
  rpi4ubuntu

และตอน Boot:


Power ON
   ↓
Ubuntu 24.04
   ↓
Network
   ↓
SSH ────────────────────┐
   ↓                    │
MySQL                   │
   ↓                    │
Nginx                   │
   ↓                    │
PM2                     │
   ↓                    │
Node.js                 │
                        │
                        ▼
             ssh rpi4ubuntu@192.168.1.90

ลำดับที่ผมแนะนำให้ทำจริง

อย่าติดตั้งทุกอย่างรวดเดียว ให้ทำตามนี้:


1. Ubuntu update
2. Network / Static IP
3. SSH
4. MySQL
5. Node.js
6. PM2
7. Nginx
8. Firewall
9. Node.js application
10. PM2 startup
11. Nginx reverse proxy
12. HTTPS
13. Backup MySQL