DEV Community

Daniel Ioni
Daniel Ioni

Posted on

๐Ÿš€ MyZubster Ecosystem: How We Revived the Gateway, Marketplace, and Full Infrastructure in One Weekend

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
Enter fullscreen mode Exit fullscreen mode

Databases:

MongoDB for the Gateway

SQLite for the Marketplace
Enter fullscreen mode Exit fullscreen mode

๐Ÿงญ 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)
Enter fullscreen mode Exit fullscreen mode

๐Ÿ™Œ 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
Enter fullscreen mode Exit fullscreen mode

๐Ÿ 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)