Tino Group VPS Cho Web Developer 2026: Môi Trường Dev, Staging, Portfolio — Tất Cả Trên 1 VPS Từ 160K/Tháng

Là web developer, bạn cần gì? Môi trường dev để code thử, staging server để khách xem trước khi deploy, production server cho project thật, và portfolio website để khoe với khách hàng. Thay vì thuê 4-5 VPS khác nhau, Tino Group VPS cho bạn chạy tất cả trên 1 máy với Docker — chỉ từ 160.000đ/tháng.

Bài viết này hướng dẫn developer setup VPS Tino Group thành workspace toàn diện: multi-site với Docker + Nginx reverse proxy, Git deploy tự động, database riêng cho từng project, SSL tự động, và monitoring.

👨‍💻 Ai nên đọc: Web developer (freelancer hoặc agency nhỏ), full-stack developer muốn môi trường dev chuyên nghiệp, hoặc sinh viên IT cần server thực hành.

Tại Sao Web Developer Cần VPS Riêng?

Giải pháp Ưu điểm Nhược điểm Chi phí/tháng
Localhost (máy tính cá nhân) Miễn phí, nhanh Không share được với khách, không online 24/7
Ngrok tunnel Dễ dùng, share link URL thay đổi mỗi lần, giới hạn 40 phút Miễn phí / $8
GitHub Pages / Vercel / Netlify Miễn phí, CDN toàn cầu Chỉ static hoặc serverless, không backend Miễn phí
VPS Tino Group Toàn quyền, online 24/7, multi-project Cần tự quản trị 160.000đ

VPS Tino Group lấp đầy khoảng trống giữa localhost (tiện nhưng không share được) và cloud platform (đắt, giới hạn). Bạn có môi trường Linux thật, cài bất kỳ stack nào, chạy Docker, expose port ra internet có SSL.

Cấu Hình VPS Khuyến Nghị Cho Developer

Nhu cầu Cấu hình Giá Tino Group
1-3 project nhỏ, portfolio 2 vCPU, 2GB RAM, 40GB NVMe 160.000đ
3-8 project, database riêng 4 vCPU, 4GB RAM, 80GB NVMe 320.000đ
8+ project, Docker multi-container 4 vCPU, 8GB RAM, 120GB NVMe 480.000đ

💡 Mẹo tiết kiệm: Với 2GB RAM, bạn chạy được 3-5 website tĩnh hoặc 2-3 WordPress nhẹ qua Docker. Nếu cần nhiều database (MySQL, Postgres, Redis, MongoDB), nên chọn gói 4GB RAM trở lên vì database ngốn RAM.

Setup 1: Môi Trường Multi-Project Với Docker + Nginx Proxy

Cài Docker & Docker Compose

ssh root@your-vps-ip
curl -fsSL https://get.docker.com | sh
usermod -aG docker $USER
apt install -y docker-compose-v2

Nginx Proxy Manager — Quản lý domain & SSL tập trung

Thay vì cấu hình Nginx thủ công cho từng project, dùng Nginx Proxy Manager (NPM) với web UI:

cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
  nginx-proxy-manager:
    image: jc21/nginx-proxy-manager:latest
    container_name: npm
    ports:
      - "80:80"
      - "443:443"
      - "81:81"
    volumes:
      - ./npm/data:/data
      - ./npm/letsencrypt:/etc/letsencrypt
    restart: unless-stopped
EOF

docker compose up -d

Truy cập http://your-ip:81 — đăng nhập (admin@example.com / changeme). Từ NPM, bạn thêm domain, cấu hình SSL Let's Encrypt tự động, trỏ đến các container nội bộ qua Docker network.

Cấu trúc thư mục project

/home/dev/
├── npm/                    # Nginx Proxy Manager data
├── projects/
│   ├── client-a/           # Website khách hàng A
│   │   ├── docker-compose.yml
│   │   ├── src/
│   │   └── db/
│   ├── client-b/           # Website khách hàng B
│   │   ├── docker-compose.yml
│   │   └── ...
│   ├── portfolio/          # Portfolio của bạn
│   │   ├── docker-compose.yml
│   │   └── src/
│   └── staging/            # Demo cho khách xem
│       └── ...
├── shared/
│   └── docker-network.yml  # Network chung
└── backups/                # Backup định kỳ

Docker network chung

# Tạo network chung để NPM giao tiếp với các project container
docker network create web-net

# Mỗi project docker-compose.yml thêm:
networks:
  default:
    name: web-net
    external: true

Setup 2: Git Push To Deploy

Tạo Git repo trên VPS, push code là tự động deploy:

# Trên VPS: tạo bare repo
mkdir -p /home/dev/git-repos/client-a.git
cd /home/dev/git-repos/client-a.git
git init --bare

# Tạo post-receive hook
cat > hooks/post-receive << 'EOF'
#!/bin/bash
WORK_TREE="/home/dev/projects/client-a/src"
GIT_WORK_TREE=$WORK_TREE git checkout -f main
cd /home/dev/projects/client-a
docker compose restart app
echo "Deployed at $(date)" >> /home/dev/deploy.log
EOF
chmod +x hooks/post-receive
# Trên máy local: thêm remote
git remote add vps ssh://root@your-ip/home/dev/git-repos/client-a.git

# Push code → tự động deploy
git push vps main

Với setup này, mỗi lần push code là website tự update. Kết hợp với CI/CD Pipeline để chạy test trước khi deploy.

Setup 3: Database Riêng Cho Từng Project

# docker-compose.yml cho project Node.js + Postgres
version: '3.8'
services:
  app:
    image: node:20-alpine
    container_name: client-a-app
    working_dir: /app
    volumes:
      - ./src:/app
    command: npm start
    environment:
      - DB_HOST=db
      - DB_PORT=5432
      - DB_USER=clienta
      - DB_PASS=${DB_PASSWORD}
    expose:
      - "3000"
    
  db:
    image: postgres:16-alpine
    container_name: client-a-db
    volumes:
      - ./db:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=clienta
      - POSTGRES_PASSWORD=${DB_PASSWORD}
      - POSTGRES_DB=clienta
    expose:
      - "5432"

⚠️ RAM Usage: Mỗi Postgres instance ngốn ~200-300MB RAM, MySQL ~300-400MB, MongoDB ~500MB+. Với VPS 4GB RAM, nên giới hạn 3-4 database container. Dùng shared database instance nếu có nhiều project nhỏ.

Setup 4: Portfolio Hosting Chuyên Nghiệp

Dùng VPS để host portfolio cá nhân với domain riêng:

# docker-compose.yml cho Next.js portfolio
services:
  portfolio:
    image: node:20-alpine
    container_name: portfolio
    working_dir: /app
    volumes:
      - ./portfolio:/app
    command: sh -c "npm install && npm run build && npm start"
    expose:
      - "3000"
    environment:
      - NODE_ENV=production

Sau đó vào Nginx Proxy Manager → thêm domain yourname.dev → proxy đến portfolio:3000 → bật SSL.

Trong portfolio, bạn có thể nhúng demo trực tiếp các project staging (iframe hoặc link), GitHub stats, testimonials khách hàng.

Setup 5: Staging Environment Cho Khách Xem

Mỗi khách hàng có 1 subdomain staging riêng để review:

# Tạo subdomain: client-a-staging.yourdomain.com
# Trong NPM: proxy đến container client-a-staging:3000

# docker-compose.yml staging
services:
  staging:
    image: node:20-alpine
    container_name: client-a-staging
    working_dir: /app
    volumes:
      - ./staging-client-a:/app
    command: npm run dev
    expose:
      - "3000"
    environment:
      - NODE_ENV=development
      - STAGING_PASSWORD=review2026  # Basic auth cho khách

Tạo basic auth trong NPM để staging không bị Google index:

# Trong NPM → Access Lists → tạo user/pass → gán cho staging domain

So Sánh Tino Group VPS Với Các Giải Pháp Developer Khác

Giải pháp Chi phí/tháng Multi-project Database Custom domain SSL
Tino VPS 2GB 160.000đ 3-5 project Mọi loại DB Không giới hạn Auto
Vercel Pro $20 (~500.000đ) Không giới hạn Chỉ serverless Không giới hạn Auto
DigitalOcean Droplet 2GB $12 (~300.000đ) 3-5 project Mọi loại DB Không giới hạn Manual
AWS EC2 t3.small $15-25/tháng 2-3 project Mọi loại DB Không giới hạn Manual
Railway.app Pro $20 (~500.000đ) Không giới hạn Postgres, Redis Auto

Script Tự Động Hóa: Tạo Project Mới Trong 30 Giây

Mỗi lần có khách mới, thay vì tạo Docker container thủ công, dùng script:

#!/bin/bash
# create-project.sh — Tạo project mới trên VPS Tino

PROJECT=$1
DOMAIN=$2
STACK=${3:-node}  # node, php, static

BASE="/home/dev/projects/$PROJECT"
mkdir -p $BASE/{src,db,backups}

# Tạo docker-compose.yml theo stack
case $STACK in
  node)
    cat > $BASE/docker-compose.yml << YML
version: '3.8'
services:
  app:
    image: node:20-alpine
    container_name: ${PROJECT}-app
    working_dir: /app
    volumes:
      - ./src:/app
    command: npm start
    expose: ["3000"]
    restart: unless-stopped
networks:
  default:
    name: web-net
    external: true
YML
    ;;
  php)
    cat > $BASE/docker-compose.yml << YML
version: '3.8'
services:
  app:
    image: php:8.2-apache
    container_name: ${PROJECT}-app
    volumes:
      - ./src:/var/www/html
    expose: ["80"]
    restart: unless-stopped
networks:
  default:
    name: web-net
    external: true
YML
    ;;
esac

cd $BASE && docker compose up -d

echo "✅ Project $PROJECT created at $DOMAIN"
echo "📁 Files: $BASE/src"
echo "🔗 Add proxy in NPM: $DOMAIN → ${PROJECT}-app:3000"

Dùng: bash create-project.sh client-c client-c.mydomain.com node — 30 giây sau có project mới.

Bảo Mật VPS Developer

1. Firewall chỉ mở port cần thiết

ufw default deny incoming
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

2. SSH key-only, disable password

# /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin prohibit-password

3. Database không expose ra ngoài

Database container chỉ dùng expose (nội bộ Docker network), KHÔNG dùng ports (mở ra internet).

4. Backup tự động mỗi ngày

# Cron job 2AM daily
0 2 * * * tar czf /home/dev/backups/all-projects-$(date +\%Y\%m\%d).tar.gz /home/dev/projects && find /home/dev/backups -name '*.tar.gz' -mtime +7 -delete

🛠️ VPS Cho Developer — Code, Deploy, Showcase

Tino Group VPS từ 160K/tháng, cấu hình mạnh, hỗ trợ 24/7. Multi-project, Docker, SSL tự động, Git deploy — tất cả trên 1 VPS.

Đăng Ký Tino Group VPS →

Bài Viết Liên Quan