TL;DR โ We deployed the entire MyZubster ecosystem on an Aruba VPS: Gateway (Monero payments) + Marketplace + Security Bot, fixed port conflicts, configured PM2, connected all services, and created a GitHub Project for tracking. The system is now live in production and ready to scale.
๐งฑ Architecture Overview
MyZubster is a decentralized ecosystem made of:
Gateway (Node.js + Express) โ handles Monero payments, JWT authentication, webhooks, and transaction monitoring
Marketplace (Node.js + SQLite) โ manages users, products, orders, and reputation
MoneroService โ connected to the Monero daemon on mainnet
PaymentMonitor โ automatically scans pending payments every 30 seconds
Telegram Bot โ sends notifications and interacts with users
Databases:
MongoDB for the Gateway
SQLite for the Marketplace
๐งญ Initial State
Before we started, the situation was:
Service Status Port
Gateway โ crashed 3000
Marketplace โ down โ
PaymentMonitor โ inactive โ
PM2 โ missing โ
GitHub Project โ missing โ
The Gateway failed to start because port 3000 was already occupied by another service (tokenization-singapore).
The Marketplace was stopped and pointed to the Gateway at http://localhost:3001 โ but the Gateway actually needed to run on a different port.
๐ ๏ธ What We Did
1๏ธโฃ Changed the Gateway Port
We updated the .env file:
bash
PORT=3000 โ PORT=3002
2๏ธโฃ Started the Gateway with PM2
bash
pm2 start server.js --name myzubster-gateway
Health check active:
bash
curl http://localhost:3002/health
3๏ธโฃ Found and Started the Marketplace
The Marketplace was located in /root/MyZubster-Marketplace.
bash
pm2 start server.js --name myzubster-marketplace
4๏ธโฃ Fixed the Gateway URL in the Marketplace
We updated line 11 in server.js:
js
const GATEWAY_API_URL = 'http://localhost:3001';
to:
js
const GATEWAY_API_URL = 'http://localhost:3002';
5๏ธโฃ Restarted the Marketplace with Updated Environment
bash
pm2 restart myzubster-marketplace --update-env
6๏ธโฃ Verified Communication Between Services
bash
curl http://localhost:4000/api/health
curl http://localhost:3002/health
Both returned successful JSON responses.
7๏ธโฃ Saved PM2 State for Auto-Restart on Boot
bash
pm2 save
pm2 startup
8๏ธโฃ Created a GitHub Project for Tracking
We manually created a new GitHub Project to manage issues, milestones, and roadmap:
๐ https://github.com/users/DanielIoni-creator/projects/1
โ
Final System Status
Service Status Port Health Check
Gateway โ
online 3002 http://localhost:3002/health
Marketplace โ
online 4000 http://localhost:4000/api/health
PaymentMonitor โ
active โ scans every 30 seconds
MongoDB โ
connected 27017 โ
SQLite โ
active โ โ
PM2 โ
saved โ auto-start on reboot
GitHub Project โ
created โ active tracking
๐งช Quick Test Commands
bash
Gateway
curl http://localhost:3002/health
Marketplace
curl http://localhost:4000/api/health
Expected output:
json
{
"status": "OK",
"message": "MyZubster Gateway is running!",
"timestamp": "2026-07-29T15:37:32.747Z",
"version": "1.0.0"
}
and
json
{
"status": "ok",
"timestamp": "2026-07-29T15:37:32.732Z",
"service": "MyZubster-Marketplace",
"version": "1.0.0",
"database": "sqlite"
}
๐ฏ Next Steps
Configure Nginx with SSL to expose services on a custom domain
Set up automated database backups (MongoDB + SQLite)
Implement GitHub Actions for continuous deployment
Add new services (Ethereum, NFT, DAO)
๐ Contribute
The project is open source and contributions are welcome!
Gateway Repo: https://github.com/DanielIoni-creator/MyZubsterGateway
Marketplace Repo: https://github.com/DanielIoni-creator/MyZubster-Marketplace
GitHub Project: https://github.com/users/DanielIoni-creator/projects/1
๐ Conclusion
In just a few hours, we went from a broken system to a fully functional, production-ready ecosystem.
All services are communicating, the PaymentMonitor is active, and everything is persistent thanks to PM2.
MyZubster is now ready to grow! ๐
โ๏ธ Written by Daniel Ioni โ developer and enthusiast of decentralized technologies.
Top comments (0)