197 lines
5.0 KiB
Markdown
197 lines
5.0 KiB
Markdown
# 🔐 AccManager
|
||
|
||
Hệ thống quản lý tài khoản và ứng dụng tập trung, cho phép quản lý người dùng, danh mục ứng dụng, và gán tài khoản truy cập.
|
||
|
||
## ✨ Tính năng
|
||
|
||
- ✅ Xác thực người dùng (login/register)
|
||
- ✅ Quản lý người dùng và vai trò (admin/guest)
|
||
- ✅ Quản lý danh mục ứng dụng
|
||
- ✅ Gán tài khoản cho mỗi người dùng/ứng dụng
|
||
- ✅ Mã hóa mật khẩu bằng bcrypt (bcrypt hashing)
|
||
- ✅ Migration tự động: plain text → bcrypt
|
||
- ✅ Audit log truy cập
|
||
|
||
## 🛠️ Công nghệ
|
||
|
||
| Thành phần | Công nghệ |
|
||
|-----------|----------|
|
||
| Backend | Node.js 20 + Express.js |
|
||
| Database | SQL Server 2022 |
|
||
| Frontend | HTML5 + Tailwind CSS + Vanilla JS |
|
||
| Container | Docker + Docker Compose |
|
||
| Reverse Proxy | Nginx Proxy Manager |
|
||
| Password Hashing | bcrypt |
|
||
|
||
## 📦 Cấu trúc dự án
|
||
|
||
\\\
|
||
├── backend/
|
||
│ └── server.js # Main server (Express + mssql)
|
||
├── public/ # Static files (HTML, CSS, JS)
|
||
│ ├── index.html
|
||
│ ├── pages/ # Login, dashboard, etc.
|
||
│ ├── js/
|
||
│ │ └── app.js # Frontend logic
|
||
│ └── css/
|
||
│ ├── main.css # Tailwind compiled
|
||
│ └── tailwind.css # Tailwind source
|
||
├── database/
|
||
│ └── setup.sql # Database schema
|
||
├── Dockerfile # Docker image config
|
||
├── docker-compose.yml # Local development
|
||
├── docker-compose.image.yml # Production deployment
|
||
├── .env # Environment variables
|
||
├── deploy-dev.ps1 # Build & push script
|
||
├── deploy-server.sh # Pull & deploy script
|
||
└── DEPLOYMENT_GUIDE.md # Detailed deployment guide (Vietnamese)
|
||
\\\
|
||
|
||
## 🚀 Khởi động nhanh
|
||
|
||
### Phát triển local
|
||
|
||
\\\ash
|
||
npm install
|
||
npm start
|
||
\\\
|
||
|
||
Truy cập: http://localhost:3000
|
||
|
||
### Chạy bằng Docker
|
||
|
||
\\\ash
|
||
docker compose build
|
||
docker compose up -d
|
||
\\\
|
||
|
||
## 🐳 Triển khai với Docker
|
||
|
||
### Máy DEV: Build & Push
|
||
|
||
\\\powershell
|
||
cd D:\RoboticsSource\AccManager
|
||
.\deploy-dev.ps1 -Tag "1.0.1"
|
||
\\\
|
||
|
||
### Máy Server: Deploy
|
||
|
||
\\\ash
|
||
ssh robotics@172.20.235.176
|
||
cd ~/accmanager
|
||
bash deploy-server.sh
|
||
\\\
|
||
|
||
**Xem chi tiết**: [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) (Tiếng Việt)
|
||
|
||
## 🔐 Bảo mật
|
||
|
||
- Mật khẩu được mã hóa bằng bcrypt (12 rounds)
|
||
- Migration tự động từ plain text sang bcrypt
|
||
- Không lưu credential trong source control
|
||
- Sử dụng .env để cấu hình biến sensitive
|
||
- SQL Server connection sử dụng SSL/TLS tùy chọn
|
||
|
||
**Lưu ý:**
|
||
- Thay đổi mật khẩu admin mặc định (\dmin\/\dmin\) ngay sau khi đăng nhập lần đầu
|
||
- Không commit \.env\ thực tế lên git
|
||
|
||
## 📚 API Endpoints
|
||
|
||
### Authentication
|
||
- POST \/api/auth/login\ - Đăng nhập
|
||
- POST \/api/auth/register\ - Đăng ký
|
||
|
||
### Users (Admin)
|
||
- GET \/api/users\ - Lấy danh sách người dùng
|
||
- GET \/api/users/:id\ - Lấy thông tin người dùng
|
||
- POST \/api/users\ - Tạo người dùng mới
|
||
- PUT \/api/users/:id\ - Cập nhật người dùng
|
||
- DELETE \/api/users/:id\ - Xóa người dùng
|
||
|
||
### Applications
|
||
- GET \/api/applications\ - Danh sách ứng dụng
|
||
- POST \/api/applications\ - Tạo ứng dụng
|
||
|
||
### Accounts
|
||
- GET \/api/accounts/user/:userId\ - Tài khoản của người dùng
|
||
- POST \/api/accounts\ - Tạo tài khoản
|
||
|
||
## 🔧 Cấu hình
|
||
|
||
### .env (Development)
|
||
|
||
\\\env
|
||
NODE_ENV=production
|
||
APP_PORT=3000
|
||
DOCKER_IMAGE=toiiiiday/accmanager:1.0.1
|
||
|
||
# Container
|
||
PORT=3000
|
||
|
||
# Database
|
||
DB_SERVER=172.20.235.176
|
||
DB_USER=sa
|
||
DB_PASSWORD=robotics@2022
|
||
DB_NAME=AccManager
|
||
DB_ENCRYPT=false
|
||
DB_TRUST_CERTIFICATE=true
|
||
DB_CONNECT_TIMEOUT=30000
|
||
|
||
# Security
|
||
BCRYPT_ROUNDS=12
|
||
\\\
|
||
|
||
## 🌐 Triển khai Public với Domain
|
||
|
||
Xem: [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) - Mục "Public Domain qua Nginx Proxy Manager"
|
||
|
||
**Tóm tắt:**
|
||
1. Trỏ DNS A record về IP Nginx Proxy Manager
|
||
2. Tạo Proxy Host trong NPM: forward 3000 → domain
|
||
3. Enable Let's Encrypt SSL + Force SSL
|
||
|
||
## 📝 Tài liệu
|
||
|
||
- [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) - Hướng dẫn triển khai (Tiếng Việt)
|
||
- [package.json](package.json) - Dependencies
|
||
- [docker-compose.yml](docker-compose.yml) - Dev config
|
||
- [docker-compose.image.yml](docker-compose.image.yml) - Prod config
|
||
|
||
## 📦 Build & Run Scripts
|
||
|
||
**Windows PowerShell (DEV):**
|
||
\\\powershell
|
||
.\deploy-dev.ps1 -Tag "1.0.1"
|
||
\\\
|
||
|
||
**Linux/Mac (SERVER):**
|
||
\\\ash
|
||
bash deploy-server.sh
|
||
\\\
|
||
|
||
## 🆘 Troubleshoot
|
||
|
||
**Container không start?**
|
||
\\\ash
|
||
docker compose -f docker-compose.image.yml logs --tail=100 accmanager
|
||
\\\
|
||
|
||
**Image pull fail?**
|
||
- Kiểm tra Docker Hub credentials
|
||
- Kiểm tra image đã push: https://hub.docker.com/r/toiiiiday/accmanager
|
||
|
||
**Database connection fail?**
|
||
- Kiểm tra .env (DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME)
|
||
- Ping server: \ping 172.20.235.176\
|
||
|
||
## 📄 License
|
||
|
||
MIT
|
||
|
||
---
|
||
|
||
**Phiên bản:** 2.0.0
|
||
**Cập nhật:** Tháng 4 năm 2026
|
||
**Trạng thái:** Production-ready ✅
|