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 | 0đ |
| 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 | Có | 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
- Hướng Dẫn Docker & Docker Compose Từ A-Z Trên VPS
- Xây Dựng CI/CD Pipeline Trên VPS — Tự Động Build Test Deploy
- Cài Reverse Proxy Nginx Trên VPS — Quản Lý Multi-Domain
- Cài SSL Let's Encrypt Miễn Phí Trên VPS
- Git Deploy Tự Động Trên VPS — Push Code Là Deploy
- Managed VPS Tino Group — Quản Trị Hộ, Bạn Chỉ Việc Code
- VPS Cho Lập Trình Viên — Hướng Dẫn Chọn VPS Phù Hợp