● articles / Marchand — POS
monerowp pour WooCommerce : installation pas à pas
· monerowp · WooCommerce · WordPress · marchand · view-only
Si ton site e-commerce tourne sous WordPress + WooCommerce, monerowp (github.com/monero-integrations/monerowp) est l’option Monero-native de référence. Plugin open-source, maintenu par Monero Integrations + SerHack, installation directe depuis l’admin WordPress. Voici le setup propre, avec wallet view-only et bonnes pratiques OPSEC marchand.
Ce que fait monerowp
- Ajoute Monero comme méthode de paiement dans WooCommerce checkout.
- Génère une subaddress unique par commande (privacy intacte, voir article subaddresses).
- Affiche le QR de paiement et le countdown de price-lock au client.
- Vérifie les paiements arrivés via monero-wallet-rpc (recommandé) ou via le bloc explorer xmrchain.net.
- Marque la commande comme payée après le nombre de confirmations configuré.
- Tout ça avec un wallet view-only côté serveur — la spend key reste sur ton ordinateur séparé.
Architecture recommandée
┌─────────────────┐ ┌──────────────────┐
│ Wallet froid │ seed │ Tu (ordinateur │
│ (full) │ ◄──── │ séparé) │
│ spend + view │ └──────────────────┘
└────────┬────────┘
│ exporte view key + adresse
│
▼
┌─────────────────────────────────────────────┐
│ Serveur WordPress (VPS, hébergeur) │
│ ├─ monerowp plugin │
│ └─ monero-wallet-rpc (view-only) │
└─────────────────────────────────────────────┘
▲
│ paiements clients
│
blockchain Monero
Le serveur web ne contient que la view key. Si compromis, l’attaquant voit tes flux entrants mais ne peut rien dépenser. Les retraits se font depuis ton ordinateur séparé qui contient la full seed.
Pré-requis
- WordPress + WooCommerce installés et fonctionnels.
- Accès SSH à ton serveur (ou panel d’hébergement avec accès terminal).
- Une wallet froid Monero déjà créée sur un autre appareil (Feather, Cake, ou hardware wallet — voir profil Hodler Sérieux si tu n’en as pas).
- 30-60 minutes.
Étape 1 : récupérer view key + adresse depuis ton wallet froid
Sur ton wallet froid (exemple Feather) :
- Wallet → View only wallet → exporte la view key + adresse principale.
- Note aussi la restore height (numéro de bloc à partir duquel scanner).
Tu dois avoir 3 valeurs :
- Adresse principale Monero (commence par
4...). - Private view key (longue chaîne hex).
- Restore height (nombre).
Voir article view-only encaisser pour le détail.
Étape 2 : installer monero-wallet-rpc en mode view-only sur le serveur
Sur ton VPS WordPress, en SSH :
# Télécharger le binaire Monero officiel (vérifier la signature PGP !)
wget https://downloads.getmonero.org/cli/linux64
# Vérifier la signature avec hashes.txt (cf. article signature PGP)
# ...
# Décompresser
tar -xjvf monero-linux-x64-v0.18.x.x.x.tar.bz2
cd monero-x86_64-linux-gnu-v0.18.x.x.x
# Créer le wallet view-only
./monero-wallet-cli \
--generate-from-view-key /home/user/monerowp-wallet \
--restore-height <RESTORE_HEIGHT> \
--address <ADRESSE_PRINCIPALE> \
--viewkey <PRIVATE_VIEW_KEY> \
--daemon-host node.community.rino.io:18081 \
--trusted-daemon
Définis un mot de passe pour le fichier wallet (différent de tout autre mot de passe).
Lance ensuite le RPC daemon :
./monero-wallet-rpc \
--wallet-file /home/user/monerowp-wallet \
--password '<password>' \
--rpc-bind-port 18083 \
--disable-rpc-login \
--rpc-bind-ip 127.0.0.1 \
--daemon-host node.community.rino.io:18081 \
--trusted-daemon
Sécurité : --rpc-bind-ip 127.0.0.1 limite l’accès RPC au localhost. Ne l’expose jamais sur 0.0.0.0 sans authentification + pare-feu strict.
Lance ce processus en service systemd pour qu’il redémarre automatiquement (création d’un fichier /etc/systemd/system/monero-wallet-rpc.service).
Étape 3 : installer monerowp dans WordPress
Deux méthodes :
Méthode A — Plugin browser (auto-update activé) :
- Admin WordPress → Plugins → Add New.
- Chercher “monero”.
- Installer “Monero WooCommerce Extension” par mosu-forge, SerHack.
- Activer.
Méthode B — Manuelle (depuis git master ou release officielle) :
- Télécharge la dernière release depuis github.com/monero-integrations/monerowp/releases.
- Décompresse dans
wp-content/plugins/monero-woocommerce-gateway/. - Activer dans l’admin WordPress.
Étape 4 : configurer monerowp
WooCommerce → Settings → Payments → Monero Gateway → Manage.
Champs essentiels :
- Use a wallet inside Wordpress : ON (option recommandée pour la plupart).
- Confirmation method : choisis monero-wallet-rpc.
- Wallet RPC host/IP :
127.0.0.1. - Wallet RPC port :
18083(ou ce que tu as choisi). - Public Monero address : ton adresse principale (depuis l’étape 1).
- Private viewkey : ta view key (depuis l’étape 1).
- Number of block confirmations : 10 (équilibre standard sécurité / vitesse). Pour de petits montants tu peux descendre à 1-2 ; pour de gros montants 20+.
- Price update interval : 60 secondes.
- Price lock period : 60 minutes (le client a 60 min pour payer au taux affiché ; passé ce délai, le taux est recalculé).
- Discount (optionnel) : tu peux offrir une remise pour paiement XMR (par exemple 5%).
Sauvegarde.
Étape 5 : test du flow complet
- Crée un produit test à 1€ dans WooCommerce.
- Passe une commande en frontend, choisis Monero comme méthode de paiement.
- Tu vois la subaddress générée + le QR + le countdown.
- Depuis un autre wallet, envoie le montant XMR à cette subaddress.
- Attends les confirmations (10 confirmations ≈ 20 min).
- La commande passe automatiquement à Processing / Completed dans WooCommerce.
Si tout fonctionne : tu es prêt à accepter Monero en production.
OPSEC permanente
- Sauvegarde régulière du wallet view-only (
/home/user/monerowp-wallet*files) — perte = re-sync depuis restore height (long). - Sauvegarde de la full seed du wallet froid : papier ou métal, hors site. La view-only seule ne suffit pas pour récupérer.
- HTTPS obligatoire sur ton site WooCommerce. Pas de paiement crypto sur HTTP.
- Tor mirror optionnel : si tu veux, configure un .onion service pour ton WooCommerce. Améliore la privacy des clients qui veulent payer en XMR sans leak de leur IP au serveur.
- Retraits depuis le froid uniquement : le wallet view-only ne peut pas envoyer. Pour vider/déplacer les XMR, ouvre ta full seed sur ta machine séparée, le wallet froid voit le solde (synchronisé depuis la blockchain) et tu peux signer un envoi de là.
- Mises à jour monerowp : suis les releases sur GitHub, applique les correctifs sécurité.
- Logs WordPress : nettoie régulièrement, ne stocke pas les détails de transaction au-delà du nécessaire comptable.
Limites à connaître
- Dépendance Monero CLI / monero-wallet-rpc : tu dois maintenir ce process à jour. Pas autonome comme un MoneroPay (qui est un binaire Go séparé).
- Performance sur gros volume : le scan de la blockchain via view-only consomme RAM/CPU. Pour gros volume, considère un node Monero local (sur le même serveur ou un serveur dédié) plutôt que un remote node.
- Pas de support Lightning ou autres coins : monerowp est uniquement Monero. Si tu veux multi-coin, regarde Bitcart vs BTCPay plus généraliste.
Alternatives si monerowp ne convient pas
- Bitcart ou BTCPay Server + plugin Monero : multi-coin, plus de features, mais setup plus lourd. Voir Bitcart vs BTCPay pour Monero.
- MoneroPay : daemon standalone, intégration via API HTTP — plus simple si tu n’es pas sur WordPress. Voir MoneroPay et AcceptXMR.
- AcceptXMR : librairie Rust, pour intégration custom dans ton propre logiciel.
En résumé
| Étape | Action | Durée |
|---|---|---|
| 1 | Récupérer view key + adresse depuis wallet froid | 5 min |
| 2 | Installer monero-wallet-rpc view-only sur serveur + systemd | 20 min |
| 3 | Installer plugin monerowp dans WordPress | 5 min |
| 4 | Configurer monerowp (RPC, view key, confirmations, etc.) | 10 min |
| 5 | Test commande 1€ end-to-end | 30 min (incl. confirmations) |
| 6 | Prod | — |
Une heure de setup pour des années de paiements XMR sur ton site, sans dépendance à un processeur tiers, sans KYC, sans risque de gel.
Sources : github.com/monero-integrations/monerowp, README + readme.txt officiels, documentation getmonero.org sur monero-wallet-rpc.
● profils liés