# 🔐 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 ✅