DEV Community

Daniel Ioni
Daniel Ioni

Posted on

🚀 MyZubster Monero Gateway: How We Built a Complete Payment System"

🚀 MyZubster Monero Gateway: How We Built a Complete Payment System

After weeks of development, the MyZubster gateway is finally live! 🎉

Here's the complete journey of building a production-ready Monero payment gateway with Docker, React, and Node.js.


🏗️ The Architecture

The MyZubster ecosystem consists of three main components:

Component Port Technology
Gateway 10001 Node.js + Express
Backend 3010 Node.js + Mongoose
Frontend 8082 React + Vite
Database 27018 MongoDB

Everything runs on a VPS with Ubuntu 24.04, Docker, and PM2 for process management.


🔑 The Payment Flow

Here's how the payment system works:

1️⃣ Create a Payment Order


bash
curl -X POST http://localhost:10001/api/payments/create-order \
  -H "Content-Type: application/json" \
  -d '{"orderId": "ord_12345", "amount": 0.05, "description": "Purchase product"}'

Response:
json

{
  "success": true,
  "orderId": "ord_12345",
  "address": "4A2B...unique...address",
  "amount": 0.05,
  "status": "pending"
}

2️⃣ Monitor Payment Status
bash

curl http://localhost:10001/api/payments/status/ord_12345

Response (when confirmed):
json

{
  "success": true,
  "orderId": "ord_12345",
  "status": "confirmed",
  "amount": 0.05,
  "confirmedAt": "2026-08-02T05:18:55.779Z"
}

3️⃣ Test the Full Flow
bash

# Create a test payment
curl -X POST http://localhost:10001/api/payments/create-order \
  -H "Content-Type: application/json" \
  -d '{"orderId": "test_demo", "amount": 0.01, "description": "Demo test"}'

# Check the status
curl http://localhost:10001/api/payments/status/test_demo

📊 API Endpoints
Endpoint    Method  Description
/api/payments/create-order  POST    Create a new payment order
/api/payments/status/:orderId   GET Check payment status
/api/monero/main-balance    GET Wallet balance
/api/monero/generate-address    POST    Generate subaddress
/api/monero/check-balance   POST    Check address balance
/api/monero/create-transaction  POST    Create XMR transaction
/api/monero/create-multisig POST    Create multisig transaction
🐳 Docker Setup

All services run in Docker containers:
bash

# Gateway
docker run -d --name myzubster-gateway -p 10001:10000 myzubster-gateway:latest

# Backend
docker run -d --name myzubster-backend -p 3010:3009 myzubster-backend:latest

# MongoDB
docker run -d --name myzubster-mongodb -p 27018:27017 mongo:6

# Frontend
docker run -d --name myzubster-frontend -p 8082:80 myzubster-frontend:latest

🔐 Security Configuration
Firewall Rules (UFW)
bash

ufw allow 22/tcp comment 'SSH'
ufw allow 10001/tcp comment 'MyZubster Gateway'
ufw allow 3010/tcp comment 'MyZubster Backend'
ufw allow 8082/tcp comment 'MyZubster Frontend'
ufw allow 27018/tcp comment 'MyZubster MongoDB'

Monero Wallet RPC
bash

monero-wallet-rpc \
  --testnet \
  --wallet-file /var/lib/monero/wallets/myzubster \
  --password "SECURE_PASSWORD" \
  --rpc-bind-port 18083 \
  --daemon-address 127.0.0.1:28081

🚀 Production Deployment
PM2 Process Management
bash

pm2 start myzubster-gateway
pm2 start myzubster-backend
pm2 start myzubster-marketplace
pm2 save

Systemd Services
bash

systemctl enable monero-wallet-rpc
systemctl start monero-wallet-rpc

🔗 Repository

    Gateway Repository: MyZubsterGateway

    Ecosystem: MyZubster

    Frontend: MyZubsterWeb

💬 Questions?

Drop a comment below! 👇

#monero #myzubster #webdev #cryptocurrency #docker #react #blockchain #opensource
Enter fullscreen mode Exit fullscreen mode

Top comments (0)