🚀 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
Top comments (0)