#

selfhosted

(26 articles)

How to Build a Monero Payment Gateway — Technical Guide

# How to Build a Monero Payment Gateway (Technical Guide) I built a Monero payment gateway with 0.5% fees and open-sourced the approach. Here's how it works. ## Architecture Three components: 1. monero-wallet-rpc — generates subaddresses, monitors payments 2. Flask REST API — serves invoice creation and status endpoints 3. SQLite — stores invoices, zero-config ## Wallet Setup ```bash monero-wallet-rpc \ --wallet-file /data/wallet \ --daemon-host xmr-node.cakewallet.com \ --rpc-bind-port 18083 \ --password "" --disable-rpc-login ``` ## Creating Invoices Each invoice gets a unique subaddress via RPC: POST /api/invoice {amount: 0.05, webhook_url: "..."} → Wallet generates fresh subaddress (create_address RPC) → Store {id, subaddress_index, amount, webhook_url} in SQLite → Return address to customer ## Payment Detection Background thread polls get_transfers every 30 seconds: ```python transfers = wallet_rpc("get_transfers", {"in": True}) for tx in transfers: idx = tx["subaddr_index"]["minor"] invoice = lookup_invoice(idx) if tx["confirmations"] >= needed: mark_paid(invoice, tx["amount"]) fire_webhook(invoice, tx["txid"]) ``` ## Why 0.5%? NowPayments/CoinPayments charge 1%. Running your own wallet-rpc costs nothing except server time. The 0.5% fee covers maintenance and keeps it sustainable. Full source + running instance: https://brief-propecia-accent-constantly.trycloudflare.com/pay Built for the Monero community. Feedback and contributions welcome. #Monero #dev #python #selfhosted #privacy

10 Free Developer Tools That Don't Need an Account

# 10 Free Developer Tools That Don't Need an Account I'm tired of "free" tools that require signup, email verification, and your firstborn child. So I built alternatives. All free. No accounts. No tracking. ## 1. Password Strength Checker How long would it take to crack your password? Get entropy analysis, attack scenarios (GPU cluster to nation-state), and improvement tips. 100% client-side — your password never touches a server. → [Try it](http://5.78.129.127/password) ## 2. Website Down Checker Is that site down for everyone or just you? Check HTTP status, response time, SSL cert status, and server headers. → [Try it](http://5.78.129.127/is-it-down) ## 3. Website Security Scanner Checks SSL/TLS, security headers, DNS config, open ports, and more. Get a security grade for any domain. → [Try it](http://5.78.129.127/security-scan) ## 4. JSON Diff Tool Paste two JSON objects, see the differences highlighted. Great for comparing API responses or config changes. → [Try it](http://5.78.129.127/json-diff) ## 5. Regex Tester Write and test regular expressions with real-time matching. Shows capture groups and match details. → [Try it](http://5.78.129.127/regex-test) ## 6. Cron Expression Explainer Paste a cron expression, get plain English and the next 5 scheduled run times. → [Try it](http://5.78.129.127/cron) ## 7. JWT Debugger Decode JSON Web Tokens instantly. See header, payload, and expiration. Everything stays in your browser. → [Try it](http://5.78.129.127/jwt) ## 8. Sats Calculator Convert between Bitcoin, satoshis, and USD in real-time. Uses live exchange rates. → [Try it](http://5.78.129.127/sats) ## 9. Free API Directory Curated list of free public APIs that don't need an API key. Categories include weather, crypto, news, and dev tools. → [Browse APIs](http://5.78.129.127/free-apis) ## 10. REST API (30 endpoints) SSL checks, DNS lookups, email validation, password hashing, UUID generation, QR codes, crypto prices, base64, JWT decode, cron parsing, and site status checks. All free, all JSON. → [API Docs](http://5.78.129.127/api/) --- ## Why I Built This I was spending $150+/month on various SaaS dev tools. Most of them are simple wrappers around basic functionality that any VPS can handle. So I put it all on a $5 Hetzner VPS. Total cost: $5/month for everything. If you find these useful, consider zapping some sats: ⚡ devtoolkit@coinos.io The whole thing runs on Node.js, nginx, and PM2. No databases. No Docker. No Kubernetes. Just simple code that works.

Self-managed NIP-05 as a Lightning receiver Zap Address for Nostr

## 🎯 Goal You want to: - Offer a **self-managed Zap address** using your own domain - Forward payments to your **Zeus Wallet (via Olympus LSP)** - Combine **NIP-05 and Lightning (Zaps)** under one identifier Important: - This setup enables **receiving Zaps only**. - **Sending Zaps still requires the built-in Lightning wallet** of the Nostr client. --- ## 🧩 Components Used in This Example - **GitHub Pages**: Hosts your `.well-known` files - **ZeusWallet (Olympus)**: Receives the payments (Zaps) - **LNURL-Pay JSON**: Forwards Zap requests to `zeuspay.com` - **NIP-05 Identifier**: Your public Nostr identity address - **lud16 (Lightning)**: Same address as NIP-05 for Lightning Zap receiving The following article describes the precondition of creating a nip-05 with custom domain: nostr:naddr1qvzqqqr4gupzpyrraa4eymelf5xndvxcwxvvs8p7qxluxy0zvrk9rxmlat73axsfqq2nxw24wge47s2ydet4ykjlxfgyc62223y5xtdzydu --- ## 📁 GitHub Folder Structure The GitHub folder structure must look like this. You extend the existing NIP-05 setup by adding a folder `lnurlp` with one file: ``` .well-known/ ├── nostr.json # For NIP-05 └── lnurlp/ └── petermuster # For LNURL-Zap ``` *For example, if your Lightning address is `petermuster@zeuspay.com`, name the file `petermuster` (no file extension is needed). --- ## 📄 Content of `.well-known/lnurlp/petermuster` Open the terminal on your linux/mac and run: ```bash curl https://zeuspay.com/.well-known/lnurlp/petermuster ``` Copy the result into a text editor, clean it up and save it into a file named `petermuster` with this format: ```json { "callback": "https://zeuspay.com/api/lnurl/pay/petermuster", "metadata": "[["text/plain","Self-custodial LN address powered by ZEUS. Hodl invoice will settle when user comes online within 24hrs or you'll be refunded."],["text/identifier","petermuster@zeuspay.com"]]", "tag": "payRequest", "minSendable": 1000, "maxSendable": 612000000000, "allowsNostr": true, "nostrPubkey": "3943rjfoijdlakfjo0afsdafasfasfdsadklnfaksdfjljewopqjweilj", "commentAllowed": 600, "zeusPayPlus": true } ``` --- ## 📝 Nostr Profile Configuration Make sure your Nostr profile links both your `nip05` and your Lightning address like this: ```json { "nip05": "petermuster@mydomain.com", lightnisadress (lud16): "petermuster@mydomain.com" } ``` --- ## ⚠️ Privacy / Info Leaks | Field | Leak? | Explanation | |-------------------|-------|-------------| | `maxSendable` | 🟡 Minor | Indicates the user can accept up to 6.12 BTC. This is not your balance, it shows just you use ZeusPay Plus. | | `metadata` | 🔵 Editable | You can remove ZEUS branding for more privacy | | `nostrPubkey` | 🔵 Public | This is your public key, no issue | | `callback` domain | 🟡 Yes | It reveals you're forwarding to `zeuspay.com` | | Custody | 🟢 No | You're using Zeus in non-custodial mode | --- ## ✅ Benefits of This Setup | Advantage | Description | |----------------------------------------|-------------| | **Unified Identity** | One address for both NIP-05 and Lightning Zaps | | **Less dependency on the client** | No need to use or register a Lightning wallet in the Nostr client | | **Direct payment to your node** | Sats go directly to your Zeus wallet via Olympus LSP | | **Easily switch payment backend** | You can change the real LNURL backend later without changing your address | | **Future-proof** | You can later self-host your own LNURL backend |