- Vps cấu hình tối thiểu 2 core - 2 ram - 30 ssd - Tên miền đã trỏ sẵn về cloudfalre *** Cài docker cho vps sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common -y curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" sudo apt update apt-cache policy docker-ce sudo apt install docker-ce -y *** Cài docker compose sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version *** Cài Portainer docker swarm leave --force docker swarm init --advertise-addr $(curl ifconfig.me) docker volume rm portainer_data docker volume create portainer_data docker run -d -p 8000:8000 -p 9443:9443 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest *** Cài Aapanel để quản lý miền bằng gói Nginx có sẵn trên panel (cài nginx trực tiếp trên vps, hoặc qua Docker cũng được nhưng sài appanel thao tác cho nhanh) wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && sudo bash install.sh nếu nó hỏi có muốn cài ssl cho panel không thì nhập "n" - sau khi cài xong sẽ có thông tin quản lý aapanel nên lưu lại nhé aaPanel Internet Address: http://51.79.203.135:7800/cbab20c3 aaPanel Internal Address: http://51.79.203.135:7800/cbab20c3 username: ywjwzsnh password: d17aa34b + login vào panel theo thông tin + panel sẽ hỏi muốn cái wwebserver nào thì chọn bên LAMP (tắt hết để lại mỗi nginx vì các thứ khác mình không cần) + chờ cho nó cài xong trong lúc đó mình làm tiếp các phần khác *** Cấu hình Portainer + đi vào ip_vps:9000 + nêú gặp lỗi này thì mình khởi động lại portainer + trước hết stop portainer đã docker ps docker stop 2d47f25a8de4 docker rm 2d47f25a8de4 docker run -d -p 8000:8000 -p 9443:9443 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest câú hình tài khoản quản trị portainer và thêm registy của gitlab.com vào *** Cài đặt cơ sở dữ liệu Mongodb Portainer > Stack > Add Stack > name = mongodb > Chọn Web Editor và dán config này vào version: "3.4" services: mongodb_container: image: mongo:latest environment: MONGO_INITDB_ROOT_USERNAME: kunkeypr MONGO_INITDB_ROOT_PASSWORD: 01635912116Aa ports: - 26922:27017 volumes: - mongodb_data_container:/data/db volumes: mongodb_data_container: cuối cùng chọn Deploy Stack *** Cài đặt Redis Cache tương tự mongodb Portainer > Stack > Add Stack > name = redis > Chọn Web Editor và dán config này vào version: '3.4' services: redis: image: redis:6.2-alpine restart: always ports: - 6379:6379 command: redis-server --save 60 1 --requirepass 01635912116Aa --loglevel warning volumes: - cache:/data volumes: cache: driver: local cuối cùng chọn Deploy Stack *** Kéo source code từ gitlab về (cách đẩy source lên gitlab và build source images thì các bạn có thể tự google nhé, nhớ là tag images phải là lastest) *** Kiểm tra MongoDb đã kết nối được chưa (mình sử dụng phần mềm NoSql Bootser for mongo - port mongo các bạn để ý ở config bên trên nhé mình đã đổi sang 26922 - và các bạn phải mở port này nếu không sẽ không connect được, mở cả port 6379 trong Appanel > Security) *** Cấu hình Docker Compose cho dự án (cái này hơi khó nên các bạn để ý kỹ nhé) *** Cấu hình TeleBot cho dự án (cái này hơi khó nên các bạn để ý kỹ nhé) All Done *** Cài đặt Source Code lên vps (làm như mongodb và redis thôi) Portainer > Stack > Add Stack > name = tên website (cái này nhập gì tùy nhá) > Chọn Web Editor và dán config này vào version: "3.4" services: server: image: registry.gitlab.com/s86live/server-v3:latest ports: - "8009:8009" restart: always environment: - NTBA_FIX_319=1 - ENV_ENVIROMENT=developer - SCRET_KEY=mWViBiW3CGRGFhoj3WjrelH26Iiz8zIj - JWT_EXPIRES_IN=1d - PORT=8009 - DATABASE_HOST=51.79.203.135 - DATABASE_PORT=26922 - DATABASE_USERNAME=kunkeypr - DATABASE_PASSWORD=01635912116Aa - DATABASE_NAME=s86live - REDIS_HOST=51.79.203.135 - REDIS_PORT=6379 - REDIS_PASSWORD=01635912116Aa - ADMIN_USERNAME=admin - ADMIN_PASSWORD=123123123 - TELEGRAM_TOKEN=6628227515:AAH6HMwcZuiFCVQc-__DkSufgH1ziYavaT0 - TELEGRAM_NOTIFY_GROUP=-854952073 - TELEGRAM_RECHARGE_GROUP=-854952073 - TELEGRAM_ALERT_GROUP=-854952073 - TELEGRAM_GIFTCODE_GROUP=-854952073 - TELEGRAM_SPIDER_GROUP=-854952073 - TELEGRAM_XOCDIA_GROUP=-854952073 - TELEGRAM_LOGS=-854952073 - TELEGRAME_CMS=-935933352 cms: image: registry.gitlab.com/s86live/cms-v2:latest ports: - "2223:2223" restart: always environment: - PORT=2223 play: image: registry.gitlab.com/s86live/play:latest ports: - "3244:3244" restart: always environment: - PORT=3244 index: image: registry.gitlab.com/s86live/index:latest ports: - "3246:3246" restart: always environment: - PORT=3246 *** Kiểm tra xem tất cả các service đã hoạt động chưa bằng cách truy cập vào port mà service đang chạy (port bao nhiêu thì xem ở cấu hình bên trên) all done *** Cấu hình tên miền về các service bên trên (cái này thao tác hơi khó lên để ý kỹ nha) server { server_name server.s86.fun; location / { proxy_http_version 1.1; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:8009; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } đây là cấu hình nginx cho tên miền - nhớ thay server.s86.fun = tên miền của các service cho phù hợp với các service - nhớ thay port 8009 cho phù hợp với các service sau khi cấu hình xong thì truy cập tên miền của các service vừa rồi xem đã chuẩn chưa *** Cấu hình lại socket của trang play và cms (cái này đáng ra là phải cấu hình ở local trước khi đẩy git, nhưng mà cái này là dự án cũ nên mình cấu hình lại ) *** Chờ gitlab build xong source rồi chúng ta khởi động lại dự án bằng cách truy cập Portainer > Services > chọn những service cần cập nhật > Chọn Update > nhớ bật Re-pull image *** Kiểm tra lại xem socket url đã được thay đổi chưa (sử dụng tab ẩn danh để không dính cache trình duyệt) All Done *** Hiện tại chưa có bot, mình sẽ import data bot và bật bot All done hoạt động bình thường kết thúc....