Specialized skill for managing and performing actions on the remote VPS (82.112.253.29). Use when the user mentions "vps", "remote server", "deploy", or needs to run commands on the server.
Tools and workflows for managing the FixZone VPS.
82.112.253.29deploy0000 (Use sshpass -p "0000" for automated scripts)| Project | Source Path | Docker Config | Description |
|---|---|---|---|
| Central Infra | /home/deploy/fz-projects/system/docker-infra | docker-compose.yml | Nginx Proxy, Shared MySQL/Postgres |
| FixZone Main | /home/deploy/fz-projects/system | docker-infra/docker-compose.yml | Original FZ Backend & Frontend |
| Laapak Reports | /home/deploy/laapak-projects/reports | remote-docker-compose.yml | Current Active Project (React + Node) |
| Laapak PO | /home/deploy/laapak-projects/laapak-po | remote-docker-compose.yml | Purchase Order System |
Protocol: This is the ONLY authorized method for deployment to ensure memory safety and consistency.
The current deploy.yml requires these specific secrets:
DOCKERHUB_USERNAME: Docker Hub profile name.DOCKERHUB_TOKEN: Personal Access Token.VPS_HOST: Server IP (82.112.253.29)VPS_USER: deployVPS_SSH_KEY: SSH Private Key (Password auth is NOT enabled in current workflow)Push to main. The workflow handles:
WARNING: Manual builds on the VPS often cause Out-Of-Memory (OOM) crashes. Only proceed if GitHub Actions is broken.
[!CAUTION] DO NOT RUN THIS unless absolutely necessary.
# Full manual update
sshpass -p "0000" ssh [email protected] "cd /home/deploy/laapak-projects/reports && git pull origin main && docker compose -f remote-docker-compose.yml up -d --build"
remote-docker-compose.yml still contains build blocks to allow this manual fallback.sshpass -p "0000" ssh [email protected] "cd /home/deploy/fz-projects/system/docker-infra && docker compose up -d"
# Check all container status
docker ps
# Check logs for Laapak Backend
docker logs --tail 100 -f report-system
# Check logs for Laapak React Frontend
docker logs --tail 100 -f laapak-frontend-react
# System resources
docker stats --no-stream
df -h
# Restart reports stack
cd /home/deploy/laapak-projects/reports && docker compose -f remote-docker-compose.yml restart
system.fixzzone.com -> fz-frontend (80), fz-system (4000)wa.fixzzone.com -> evolution-api (8080)n8n-auto.fixzzone.com -> n8n (5678)82.112.253.29:3001 (report-system)82.112.253.29:3000 (laapak-frontend-react)eta.laapak.com -> invoicing-api (Port 3003 on host, 3000 internal). Nginx config at /home/deploy/fz-projects/system/docker-infra/nginx/conf.d/eta_laapak.confmysql-db (MySQL 8.0), postgres-db (PostgreSQL)0000) if needed.rootpassword (or 0000 inside docker-compose).fz-system: docker exec -it fz-system npm run migrate.Since port 3306 is bound to localhost only:
82.112.253.29:3306 directly.ssh -L 3306:127.0.0.1:3306 [email protected]
127.0.0.1, Port: 3306, User: root, Pass: 0000.If you deploy but changes don't appear:
docker exec fz-system grep "new_string" /app/path/to/file.js
docker compose -f remote-docker-compose.yml up -d --build --no-cache.nginx-proxy)./home/deploy/fz-projects/system/docker-infra/nginx/conf.d/.docker compose restart nginx-proxy.docker exec nginx-proxy nginx -s reload.only_full_group_by).Expression #X of SELECT list is not in GROUP BY clause./home/deploy/backups_sql/. Do not clutter the home root.3306 access.
3306:3306 in docker-compose.yml. Use 127.0.0.1:3306:3306 if local access is needed, or rely on Docker network/SSH Tunnels.ufw limits SSH to known IPs if possible.localhost to IPv6 (::1), causing wget connection refused errors if the service listens on IPv4 only.http://127.0.0.1/ in HEALTHCHECK commands for Alpine-based containers.If CPU is pinned at 100%:
top -b -n 1 to find the process name.containerd, node, mysql), check docker stats.systemp), it might be malware or a rogue service.Every service in docker-compose.yml MUST have resource limits defined to protect the host: