Monero on the Command Line: A Privacy-First Guide
Bitcoin isn't private. It's pseudonymous at best, and with blockchain analysis, transactions can often be traced. Enter Monero (XMR)—a cryptocurrency built from the ground up for privacy. Ring signatures, stealth addresses, and RingCT ensure that your transactions are untraceable and unlinkable.
In this guide, we'll set up Monero on Debian using only the command line. No GUIs, no exchanges required.
What Makes Monero Private?
Monero uses three key technologies:
- Ring Signatures — Mix your transaction with others' (decoys) so outside observers can't tell who signed
- Stealth Addresses — Each payment goes to a one-time address, unlinkable to your wallet
- RingCT — Hides transaction amounts
The result? Complete financial privacy. Even if someone knows your address, they can't see your balance or trace your transactions.
Installation
Option 1: Official Binaries (Recommended)
# Download the latest Monero CLI
wget https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.3.4.tar.bz2
# Extract
tar -xvf monero-linux-x64-v0.18.3.4.tar.bz2
# Move to your binaries folder
sudo mv monero-x86_64-v0.18.3.4/ /opt/monero
sudo ln -s /opt/monero/monero /usr/local/bin/monero
sha256sum.
Option 2: Build from Source
# Install dependencies
sudo apt update
sudo apt install build-essential cmake pkg-config libssl-dev libboost-all-dev libunbound-dev libsodium-dev libunwind-dev libhidapi-dev libusb-1.0-0-dev
# Clone the repo
git clone --recursive https://github.com/monero-project/monero.git
cd monero
# Build (this takes a while)
make -j$(nproc)
Synchronizing the Blockchain
Monero needs to download the entire blockchain (~100GB). This takes time but is essential for full privacy:
# Start daemon - it will sync in background
monerod
# Or run in background with logs
monerod --detach
# Check sync status
monerod status
monerod --add-peer nodes.hashvault.pro:18081 --add-peer xmr-node-eu.cakewallet.com:18081
Creating Your Wallet
Now create a wallet. This generates your keys:
# Create new wallet
monero-wallet-cli
# You'll see:
# 1. Create new wallet
# 2. Restore from keys
# 3. Restore from mnemonic seed
# 4. View existing wallet
# Choose 1, then enter a name
Wallet name: mywallet
# Enter a strong passphrase twice
# (Write this down - it's your spending key!)
#
# Then you'll see your recovery seed (25 words)
# WRITE THIS DOWN - it's your only backup!
Understanding Your Keys
Your wallet generates three keys:
- Public View Key — Share this to receive funds (others can verify incoming, but not balance)
- Public Spend Key — Share this to receive funds
- Private View Key — Lets you view incoming transactions
- Private Spend Key — Your password. NEVER share.
- Mnemonic Seed — Master backup of all above
Basic Wallet Commands
Open your wallet:
monero-wallet-cli --wallet-file mywallet
Inside the wallet CLI, common commands:
# Check balance
balance
# Check recent transactions
show_transfers
# Generate a new receiving address
address
# Generate sub-address (for better privacy)
make_integrated_address
# Incoming transfers only
incoming_transfers
# Outgoing transfers
outgoing_transfers
Receiving XMR
Get your address:
address
You'll see two addresses:
- Primary address — Keep for general use
- Sub-addresses — Create new ones for each person/transaction for better privacy
Share your address. The sender can check it exists on the blockchain, but can't see your balance.
Sending XMR
To send, you need the recipient's address:
# Inside wallet CLI
transfer ADDRESS AMOUNT
# Example: send 0.5 XMR
transfer 44AFFq5gn9vB43f4JdXzB5aZZiGd2VJcgkGJ6Gs4zDMrz12BbmCMak2m4WHGZ5YHRYPLPzdHmKuLCR33jY8n7YG8oK43v2s 0.5
You'll be prompted for your password, then shown the transaction details including fee. Confirm with y.
Transaction Privacy Level
Monero defaults to high privacy (mixin of 16). You can adjust:
# Send with custom mixin (minimum 10 for good privacy)
transfer ADDRESS AMOUNT 10
# Send to multiple recipients
transfer ADDRESS1,ADDRESS2 AMOUNT1,AMOUNT2
set priority high for faster confirmation during congestion.
Sub-Addresses
Sub-addresses improve privacy by making each payment unlinkable:
# Create new sub-address
make_integrated_address
# Or with custom payment ID
make_integrated_address PAYMENT_ID
# List all addresses
address all
Cold Wallet Setup
For maximum security, use a cold wallet:
- Create wallet on air-gapped machine
- Export view key to online machine
- Online machine can view but not spend
- Sign transactions on cold machine, broadcast from online
# On cold machine - generate unsigned transaction
# In wallet CLI:
sign_transfer
# Export to file
export_raw_multisig_tx unsigned.tx
# Transfer via USB to online machine
# On online machine - broadcast
submit_multisig_tx unsigned.tx
Mining Monero
Monero uses RandomX, CPU-friendly mining. You can mine with your CPU to support the network (and earn some XMR):
Solo Mining
# Start mining to your address
start_mining YOUR_ADDRESS threads
# Example: 4 threads
start_mining 44AFFq5gn9vB43f4JdXzB5aZZiGd2VJcgkGJ6Gs4zDMrz12BbmCMak2m4WHGZ5YHRYPLPzdHmKuLCR33jY8n7YG8oK43v2s 4
# Stop mining
stop_mining
Mining Pools
Join a pool for more consistent rewards:
# Using monero-pool (built-in)
# Start pool miner
xmrig -o pool.hashvault.pro:3333 -u YOUR_ADDRESS -p x --pass x
# Or use the wallet's built-in pool miner
start_mining pool_address threads
Check Mining Status
# In wallet CLI
status
Remote Node
# In wallet CLI
statusDon't want to sync the full blockchain? Use a remote node:
# Connect to public node
monero-wallet-cli --wallet-file mywallet --daemon-address node.xmr.to:18081
# List of public nodes:
# node.xmr.to:18081
# nodes.hashvault.pro:18081
# xmr-node-eu.cakewallet.com:18081
Backup and Security
Backup Your Seed
Write down your 25-word seed and store it:
- Offline (paper, metal)
- In multiple safe locations
- Never digital (no screenshots, no cloud)
Encrypt Your Wallet
# Set/change password in wallet CLI
password
View-Only Wallet
Create a view-only wallet for monitoring without risk:
# In wallet CLI
export_view_key
# Then on another machine
monero-wallet-cli --view-key PRIVATE_VIEW_KEY --wallet-file view-only
Tor/I2P Integration
Route your Monero traffic through Tor for enhanced privacy:
# Use Tor proxy
monerod --proxy 127.0.0.1:9050
# Or use i2p
monerod --proxy 127.0.0.1:7656
Troubleshooting
Wallet out of sync
# Refresh
refresh
# Or check daemon status
monerod status
Transaction stuck
# Check if confirmed
show_transfers
# If unconfirmed for too long, resend with higher fee
# (Monero has tx pool, not replace-by-fee)
Lost password
If you have your seed, restore:
monero-wallet-cli --restore-deterministic-wallet
Why Monero Matters
Financial privacy isn't about having something to hide. It's about:
- Business confidentiality — Don't reveal your revenue to competitors
- Personal safety — Don't advertise your wealth to criminals
- Financial freedom — No bank account needed, no KYC for basic use
- Censorship resistance — No central authority can freeze your funds
Bitcoin is great for transparency. Monero is great for privacy. Choose the right tool for the job.
"Privacy is not about something to hide. Privacy is about something to protect."
Use Monero. Take back your financial privacy.