2026-02-09 11:41:46 +01:00
# ElectrumX Server with Palladium (PLM) Full Node
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
Complete Dockerized setup for running an **ElectrumX server ** with an integrated **Palladium (PLM) full node ** and professional **Web Dashboard ** for monitoring.
2025-09-26 16:07:30 +02:00
2026-02-09 00:22:15 +01:00
Everything runs in Docker containers - no need to install dependencies on your host system!
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
---
2026-02-11 12:29:16 +01:00
## What You Get
2026-02-09 11:41:46 +01:00
2026-02-17 10:25:37 +01:00
- **Palladium Full Node** (palladiumd) - Runs in Docker with full blockchain sync ([binary setup ](daemon/README.md ))
2026-02-09 11:41:46 +01:00
- **ElectrumX Server** - Pre-configured for Palladium network with automatic indexing
2026-02-17 10:25:37 +01:00
- **Web Dashboard** - Professional monitoring interface with real-time statistics, peer views, and Electrum server discovery ([quick start ](DASHBOARD.md ) | [technical docs ](web-dashboard/README.md ))
2026-02-09 11:41:46 +01:00
- **Automatic RPC Configuration** - ElectrumX reads credentials directly from palladium.conf
2026-02-17 10:25:37 +01:00
- **Self-Signed SSL Certificates** - Auto-generated on first startup, persisted in `./certs/`
- **Public IP Auto-Detection** - Automatically configures REPORT_SERVICES and SSL certificate SAN
- **Production Ready** - Includes restart policies, health endpoint, and Basic Auth for external dashboard access
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
---
2026-02-09 00:22:15 +01:00
2026-02-11 12:29:16 +01:00
## Tested Platforms
2026-02-09 00:22:15 +01:00
* Debian 12/13
* Ubuntu 24.04/22.04 LTS
2026-02-09 11:41:46 +01:00
* Raspberry Pi OS (ARM64)
2026-02-09 00:22:15 +01:00
* WSL2 (Windows Subsystem for Linux)
2026-02-09 11:41:46 +01:00
**System Requirements:**
- 64-bit system (AMD64 or ARM64)
- 4GB+ RAM recommended
- 50GB+ free disk space for blockchain
- Stable internet connection
---
2026-02-11 12:29:16 +01:00
## Project Structure
2026-02-09 00:22:15 +01:00
```
2026-02-13 13:41:58 +01:00
palladium-stack/
2026-02-09 00:22:15 +01:00
├── daemon/ # Palladium binaries (YOU must add these)
│ ├── palladiumd # Node daemon (required)
│ ├── palladium-cli # CLI tool (required)
│ ├── palladium-tx # Transaction tool (optional)
2026-02-17 10:25:37 +01:00
│ ├── palladium-wallet # Wallet tool (optional)
│ └── README.md # Binary download instructions
2026-02-11 12:29:16 +01:00
├── .palladium/
2026-02-09 00:22:15 +01:00
│ ├── palladium.conf # Node configuration (edit this!)
│ ├── blocks/ # Blockchain blocks (auto-generated)
│ ├── chainstate/ # Blockchain state (auto-generated)
│ └── ... # Other runtime data (auto-generated)
2026-02-17 08:58:44 +01:00
├── certs/ # SSL certificates (auto-generated on first run)
│ ├── server.crt # Self-signed certificate
│ └── server.key # Private key
2026-02-09 11:41:46 +01:00
├── electrumx-data/ # ElectrumX database (auto-generated)
2026-02-17 10:25:37 +01:00
├── electrumx-patch/
│ └── coins_plm.py # Palladium coin definition for ElectrumX
2026-02-09 11:41:46 +01:00
├── web-dashboard/ # Web monitoring dashboard
│ ├── app.py # Flask backend API
│ ├── templates/ # HTML templates
2026-02-17 10:25:37 +01:00
│ ├── static/ # CSS and JavaScript
│ └── README.md # Dashboard technical docs
2026-02-09 00:22:15 +01:00
├── Dockerfile.palladium-node # Builds Palladium node container
├── Dockerfile.electrumx # Builds ElectrumX server container
2026-02-09 11:41:46 +01:00
├── Dockerfile.dashboard # Builds web dashboard container
2026-02-17 10:25:37 +01:00
├── docker-compose.yml # Main orchestration file
├── entrypoint.sh # ElectrumX startup (auto-config, SSL, IP detection)
├── test-server.py # ElectrumX protocol test client
├── .env.example # Environment variables template
└── DASHBOARD.md # Dashboard quick start guide
2026-02-09 00:22:15 +01:00
```
2026-02-13 13:41:58 +01:00
**Palladium Full Node:** [palladium-coin/palladiumcore ](https://github.com/palladium-coin/palladiumcore )
2025-09-26 16:07:30 +02:00
---
2026-02-11 12:29:16 +01:00
## Architecture
2025-09-26 16:07:30 +02:00
```
2026-02-09 11:41:46 +01:00
Internet Router/Firewall Docker Network
│ │ │
│ ┌─────▼──────┐ │
│ │ Port │ │
│ P2P (2333) ────►│ Forward │──────────┐ │
│ TCP (50001)────►│ Rules │────┐ │ │
│ SSL (50002)────►│ │──┐ │ │ │
│ Web (8080) ────►│ │─┐│ │ │ │
│ └────────────┘ ││ │ │ │
│ ││ │ │ │
│ ┌─────────▼▼─▼─────▼─────┐ │
2026-02-11 12:29:16 +01:00
│ │ Docker Host │ │
│ │ │ │
│ │ ┌───────────────────┐ │ │
│ │ │ Palladium Node │ │ │
│ │ │ (palladiumd) │ │ │
│ │ │ Port: 2333 │ │ │
│ │ └────────┬──────────┘ │ │
│ │ │ │ │
│ │ ┌────────▼──────────┐ │ │
│ │ │ ElectrumX Server │ │ │
Clients◄────────────────────────┤ TCP: 50001 │ │ │
(Electrum │ │ SSL: 50002 │ │ │
Wallets) │ └────────┬──────────┘ │ │
│ │ │ │ │
│ │ ┌────────▼─────────┐ │ │
▼ │ │ Web Dashboard │ │ │
2026-02-09 11:41:46 +01:00
Browser◄───────────────────────┤ Port: 8080 │ │ │
2026-02-11 12:29:16 +01:00
│ └──────────────────┘ │ │
└────────────────────────┘ │
2025-09-26 16:07:30 +02:00
```
2026-02-09 11:41:46 +01:00
**Component Communication:**
- **ElectrumX** ↔ **Palladium Node ** : RPC over internal Docker network
- **Web Dashboard** ↔ **Palladium Node ** : RPC for blockchain data
- **Web Dashboard** ↔ **ElectrumX ** : Electrum protocol + Docker API for stats
- **External Clients** → **ElectrumX ** : TCP (50001) or SSL (50002)
- **Browsers** → **Web Dashboard ** : HTTP (8080)
2026-02-09 00:22:15 +01:00
2025-09-26 16:07:30 +02:00
---
2026-02-11 12:29:16 +01:00
## Requirements
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
* [Docker ](https://docs.docker.com/get-docker/ ) 20.10+
* [Docker Compose ](https://docs.docker.com/compose/install/ ) 2.0+
2026-02-09 00:22:15 +01:00
* **Palladium binaries** - See installation instructions below
2025-09-26 16:07:30 +02:00
---
2026-02-11 12:29:16 +01:00
## Quick Start Guide
2026-02-09 00:22:15 +01:00
### Step 1: Clone the Repository
```bash
2026-02-13 13:41:58 +01:00
git clone <your-repository-url>
cd palladium-stack
2026-02-09 00:22:15 +01:00
```
---
### Step 2: Get Palladium Binaries
2026-02-17 10:25:37 +01:00
**IMPORTANT:** Download binaries matching your system architecture in `daemon/` .
2026-02-09 00:22:15 +01:00
2026-02-17 10:25:37 +01:00
See [daemon/README.md ](daemon/README.md ) for detailed instructions.
2026-02-09 00:22:15 +01:00
---
2026-02-09 11:41:46 +01:00
### Step 3: Configure Network and Router
2026-01-22 10:54:42 +01:00
2026-02-17 10:25:37 +01:00
#### 3.1 Configure RPC Credentials
2026-02-09 11:41:46 +01:00
Open the configuration file:
2026-01-22 10:54:42 +01:00
2026-02-09 00:22:15 +01:00
```bash
2026-02-11 12:29:16 +01:00
nano .palladium/palladium.conf
2026-02-09 00:22:15 +01:00
```
2026-01-22 10:54:42 +01:00
2026-02-09 11:41:46 +01:00
**Change these credentials:**
2026-01-22 10:54:42 +01:00
```conf
2026-02-13 13:41:58 +01:00
rpcuser=your_username # ← Change this
rpcpassword=your_password # ← Use a strong password!
2026-02-09 00:22:15 +01:00
```
2026-01-22 10:54:42 +01:00
2026-02-09 11:41:46 +01:00
Save and close (`Ctrl+X` , then `Y` , then `Enter` ).
2026-02-17 10:25:37 +01:00
#### 3.2 Router Port Forwarding (Required for Public Access)
2026-02-09 11:41:46 +01:00
For your ElectrumX server to be accessible from the internet, you **must ** configure port forwarding on your router.
**Ports to Forward:**
| Port | Protocol | Service | Description | Required? |
|------|----------|---------|-------------|-----------|
| **2333 ** | TCP | Palladium P2P | Node connections | **Yes ** (for node sync) |
| **50001 ** | TCP | ElectrumX TCP | Wallet connections | Recommended |
| **50002 ** | TCP | ElectrumX SSL | Encrypted wallet connections | **Recommended ** |
| **8080 ** | TCP | Web Dashboard | Monitoring interface | Optional |
2026-01-22 10:54:42 +01:00
2026-02-09 11:41:46 +01:00
**How to Configure Port Forwarding:**
1. **Find Your Internal IP: **
```bash
# Linux/Mac:
hostname -I
# Or check in Docker host:
ip addr show
```
Example: `192.168.1.100`
2. **Access Your Router: **
- Open browser and go to your router's admin page (usually `192.168.1.1` or `192.168.0.1` )
- Login with router credentials
3. **Add Port Forwarding Rules: **
Navigate to **Port Forwarding ** or **Virtual Server ** section and add:
```
Service Name: Palladium P2P
External Port: 2333
Internal Port: 2333
Internal IP: 192.168.1.100 (your server's IP)
Protocol: TCP
Service Name: ElectrumX SSL
External Port: 50002
Internal Port: 50002
Internal IP: 192.168.1.100
Protocol: TCP
Service Name: ElectrumX TCP
External Port: 50001
Internal Port: 50001
Internal IP: 192.168.1.100
Protocol: TCP
Service Name: PLM Dashboard (optional)
External Port: 8080
Internal Port: 8080
Internal IP: 192.168.1.100
Protocol: TCP
```
4. **Save and Apply ** the configuration.
5. **Find Your Public IP: **
```bash
curl ifconfig.me
```
Or visit: https://whatismyipaddress.com
**Security Notes:**
- Only forward port **8080 ** if you want the dashboard accessible from internet (not recommended without authentication)
- Consider using a VPN for dashboard access instead
2026-02-16 09:41:44 +01:00
- External dashboard clients (public IPs) require Basic Auth. Configure `DASHBOARD_AUTH_USERNAME` and `DASHBOARD_AUTH_PASSWORD` in `.env` (see `.env.example` ).
2026-02-09 11:41:46 +01:00
- Ports **50001 ** and **50002 ** need to be public for Electrum wallets to connect
- Port **2333 ** is required for the node to sync with the Palladium network
2026-01-22 10:54:42 +01:00
2026-02-09 00:22:15 +01:00
---
2026-01-22 10:54:42 +01:00
2026-02-17 10:25:37 +01:00
#### 3.3: (Optional) Configure Dashboard Authentication
If you plan to expose the dashboard to the internet (port 8080), configure Basic Auth credentials:
```bash
cp .env.example .env
nano .env
```
Set strong credentials:
```bash
DASHBOARD_AUTH_USERNAME=admin
DASHBOARD_AUTH_PASSWORD=a-strong-random-password
```
LAN clients (private IPs) can access the dashboard without authentication. External clients (public IPs) will be prompted for these credentials automatically.
---
2026-02-09 00:22:15 +01:00
### Step 4: (Optional) Copy Existing Blockchain Data
2026-02-09 11:41:46 +01:00
If you have a synced Palladium blockchain, copy it to speed up initial sync:
2026-02-09 00:22:15 +01:00
```bash
2026-02-11 12:29:16 +01:00
cp -r ~/.palladium/blocks .palladium/
cp -r ~/.palladium/chainstate .palladium/
cp -r ~/.palladium/indexes .palladium/
2026-02-09 00:22:15 +01:00
```
2026-02-09 11:41:46 +01:00
**Skip this** if syncing from scratch - the node will automatically start syncing.
2026-02-09 00:22:15 +01:00
---
2026-02-09 11:41:46 +01:00
### Step 5: Build and Start
2026-02-09 00:22:15 +01:00
```bash
2026-02-09 11:41:46 +01:00
docker compose up -d
2026-01-22 10:54:42 +01:00
```
2026-02-09 00:22:15 +01:00
**What happens:**
2026-02-09 11:41:46 +01:00
1. Builds three Docker images: `palladium-node` , `electrumx-server` , and `palladium-dashboard`
2. Starts Palladium node first
2026-02-17 08:58:44 +01:00
3. Starts ElectrumX (waits for node to be ready, auto-generates SSL certificates in `./certs/` if not present)
2026-02-09 11:41:46 +01:00
4. Starts Web Dashboard (connects to both services)
2026-01-22 10:54:42 +01:00
2026-02-09 11:41:46 +01:00
**First build takes 5-10 minutes.**
2026-01-22 10:54:42 +01:00
---
2026-02-09 11:41:46 +01:00
### Step 6: Monitor Progress
2025-09-26 16:07:30 +02:00
2026-02-09 00:22:15 +01:00
```bash
# View all logs
2026-02-09 11:41:46 +01:00
docker compose logs -f
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
# View specific service
docker compose logs -f palladiumd
docker compose logs -f electrumx
docker compose logs -f dashboard
2025-09-26 16:07:30 +02:00
```
2026-02-09 00:22:15 +01:00
**What to look for:**
2026-02-09 11:41:46 +01:00
- **Palladium node:** "UpdateTip" messages (syncing blockchain)
- **ElectrumX:** "height X/Y" (indexing blocks)
- **Dashboard:** "Running on http://0.0.0.0:8080"
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
Press `Ctrl+C` to exit log view (containers keep running).
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
---
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### Step 7: Access Web Dashboard
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
**Local access:**
```
http://localhost:8080
2026-02-09 00:22:15 +01:00
```
2026-02-09 11:41:46 +01:00
**Network access:**
```
http://<your-server-ip>:8080
2026-02-09 00:22:15 +01:00
```
2026-02-09 11:41:46 +01:00
**From internet (if port 8080 forwarded):**
```
http://<your-public-ip>:8080
```
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
The dashboard shows:
- System resources (CPU, RAM, Disk)
- Palladium node status (height, difficulty, connections, sync progress)
2026-02-13 13:41:58 +01:00
- ElectrumX server stats (version, active servers, DB size, uptime, **server IP ** , ports)
2026-02-09 11:41:46 +01:00
- Mempool information (transactions, size, usage)
- Recent blocks table
- Network peers (click "Connections" to view detailed peer list)
2026-02-13 13:41:58 +01:00
- Electrum active servers page (click "Active Servers")
2026-02-09 00:22:15 +01:00
---
2026-02-09 11:41:46 +01:00
## Web Dashboard Features
2026-02-17 10:25:37 +01:00
See also: [DASHBOARD.md ](DASHBOARD.md ) for quick start | [web-dashboard/README.md ](web-dashboard/README.md ) for technical details
2026-02-09 11:41:46 +01:00
### Main Dashboard (http://localhost:8080)
**System Monitoring:**
- Real-time CPU, Memory, and Disk usage with animated progress bars
- Health status indicator with pulse animation
**Palladium Node:**
- Block Height (formatted with thousands separator: 380,050)
- Difficulty (abbreviated: 18.5 M)
- **Connections** (clickable - opens dedicated peers page)
- Network type (MAINNET/TESTNET)
- Sync Progress percentage
- Node version (vX.X.X format)
**ElectrumX Server:**
- Server Version
- Database Size
- Uptime
2026-02-13 13:41:58 +01:00
- Active Servers (clickable to dedicated server list)
2026-02-09 11:41:46 +01:00
- **Server IP** (for client configuration)
- TCP Port (50001)
- SSL Port (50002)
**Mempool:**
- Transaction count
- Total size (bytes)
- Usage percentage
- Max size limit
**Recent Blocks:**
- Last 10 blocks with hash, time, size, and transaction count
### Network Peers Page (http://localhost:8080/peers)
**Statistics:**
- Total Peers count
- Inbound connections
- Outbound connections
- Total traffic (sent + received)
**Detailed Peer List:**
- IP Address and port
- Direction (⬇️ Inbound / ⬆️ Outbound)
- Node version
- Connection time
- Data sent
- Data received
- Total traffic per peer
**Auto-refresh:** Every 10 seconds
2026-02-13 13:41:58 +01:00
### Electrum Active Servers Page (http://localhost:8080/electrum-servers)
**Summary:**
- Total Active Servers
- TCP 50001 Reachable
**Detailed Server List:**
- Host
- TCP Port
- SSL Port
2026-02-17 10:25:37 +01:00
- TCP Reachable (Yes/No)
- SSL Reachable (Yes/No)
Servers are filtered by genesis hash to show only peers on the same network (mainnet or testnet).
2026-02-13 13:41:58 +01:00
**Auto-refresh:** Every 10 seconds
2026-02-09 11:41:46 +01:00
---
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
## Verify Installation
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### Check Container Status
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
```bash
docker compose ps
2026-02-09 00:22:15 +01:00
```
2026-02-09 11:41:46 +01:00
Should show all three containers "Up".
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### Test Palladium Node
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
```bash
docker exec palladium-node palladium-cli \
2026-02-13 13:41:58 +01:00
-rpcuser=<your_username> \
-rpcpassword=<your_password> \
2026-02-09 11:41:46 +01:00
getblockchaininfo
```
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### Test ElectrumX Server
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
```bash
python test-server.py <your-server-ip>:50002
```
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### Check from External Network
2025-10-15 14:07:11 +02:00
2026-02-09 11:41:46 +01:00
From another machine:
```bash
# Test dashboard
curl http://<your-public-ip>:8080
2025-10-15 14:07:11 +02:00
2026-02-09 11:41:46 +01:00
# Test ElectrumX (with Python)
python test-server.py <your-public-ip>:50002
```
2025-09-26 16:07:30 +02:00
2026-02-17 10:25:37 +01:00
### REST API Endpoints
The dashboard exposes a REST API for programmatic access:
| Endpoint | Description |
|----------|-------------|
| `GET /api/health` | Service health check (palladium + electrumx status) |
| `GET /api/system/resources` | CPU, memory, and disk usage |
| `GET /api/palladium/info` | Node info (blockchain, network, mining, mempool) |
| `GET /api/palladium/peers` | Detailed peer list with traffic stats |
| `GET /api/palladium/blocks/recent` | Last 10 blocks |
| `GET /api/electrumx/stats` | ElectrumX version, uptime, DB size, active servers |
| `GET /api/electrumx/servers` | Discovered ElectrumX peers with reachability |
```bash
# Example
curl http://localhost:8080/api/health | jq
```
2025-09-26 16:07:30 +02:00
---
2026-02-09 11:41:46 +01:00
## Configuration Details
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
### Palladium Node Settings
2025-11-28 12:32:12 +01:00
2026-02-11 12:29:16 +01:00
Key settings in `.palladium/palladium.conf` :
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
| Setting | Value | Purpose |
|---------|-------|---------|
2026-02-13 13:41:58 +01:00
| `rpcuser` | `<your_username>` | RPC authentication |
| `rpcpassword` | `<your_password>` | RPC authentication |
2026-02-09 11:41:46 +01:00
| `server=1` | Required | Enable RPC server |
| `txindex=1` | Required | Index all transactions (ElectrumX needs this) |
| `addressindex=1` | Recommended | Index addresses for fast queries |
| `timestampindex=1` | Recommended | Index timestamps |
| `spentindex=1` | Recommended | Index spent outputs |
| `rpcbind=0.0.0.0` | Required | Allow Docker connections |
2026-02-13 13:41:58 +01:00
| `rpcallowip=10.0.0.0/8` | Recommended | Allow private RFC1918 networks |
| `rpcallowip=172.16.0.0/12` | Recommended | Allow private RFC1918 networks |
| `rpcallowip=192.168.0.0/16` | Recommended | Allow private RFC1918 networks |
2026-02-09 11:41:46 +01:00
| `port=2333` | Default | P2P network port (mainnet) |
| `rpcport=2332` | Default | RPC port (mainnet) |
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
**ZeroMQ Ports (optional):**
- `28332` - Block hash notifications
- `28333` - Transaction hash notifications
- `28334` - Raw block data
- `28335` - Raw transaction data
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
### ElectrumX Settings
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
Configured in `docker-compose.yml` :
2025-11-28 12:32:12 +01:00
```yaml
environment:
2026-02-09 11:41:46 +01:00
COIN: "Palladium" # Always "Palladium" for both networks
NET: "mainnet" # or "testnet"
SERVICES: "tcp://0.0.0.0:50001,ssl://0.0.0.0:50002"
2026-02-09 00:22:15 +01:00
# RPC credentials automatically read from palladium.conf
2025-11-28 12:32:12 +01:00
```
2026-02-17 10:25:37 +01:00
**Automatic Configuration (via `entrypoint.sh` ):**
- **RPC credentials**: Read automatically from mounted `palladium.conf` — no need to configure `DAEMON_URL`
- **Public IP detection**: Discovers your public IP and sets `REPORT_SERVICES` for peer announcement
- **SSL certificates**: Auto-generated on first startup in `./certs/` with SAN including localhost and public IP (see [Security > SSL Certificates ](#production-deployment ))
- **TX stats patching**: Queries the live node for `TX_COUNT` / `TX_COUNT_HEIGHT` and patches the ElectrumX coin definition at startup
- Single source of truth for credentials across all services
2025-11-28 12:32:12 +01:00
---
2026-02-09 11:41:46 +01:00
## Network Support (Mainnet & Testnet)
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
### Running on Mainnet (Default)
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
Default configuration is for **mainnet ** - no changes needed.
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
**Ports:**
- Palladium RPC: `2332`
- Palladium P2P: `2333`
- ElectrumX TCP: `50001`
- ElectrumX SSL: `50002`
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
### Switching to Testnet
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
1. **Edit `palladium.conf`: **
```conf
testnet=1
rpcport=12332
```
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
2. **Edit `docker-compose.yml`: **
```yaml
environment:
NET: "testnet"
```
2025-11-28 19:24:09 +01:00
2026-02-09 11:41:46 +01:00
3. **Clear database: **
```bash
docker compose down
rm -rf ./electrumx-data/*
```
2025-11-28 19:24:09 +01:00
2026-02-09 11:41:46 +01:00
4. **Restart: **
```bash
docker compose up -d
```
2025-11-28 19:24:09 +01:00
2026-02-09 11:41:46 +01:00
**Testnet Ports:**
- Palladium RPC: `12332`
- Palladium P2P: `12333`
- ElectrumX: same (50001, 50002)
2025-11-28 19:24:09 +01:00
2026-02-09 11:41:46 +01:00
---
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
## Common Commands
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
### Container Management
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
```bash
# Start all services
docker compose up -d
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
# Stop all services
docker compose down
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
# Restart services
docker compose restart
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
# Restart specific service
docker compose restart electrumx
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
# Rebuild after changes
docker compose up -d --build
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
# View status
docker compose ps
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
# View resource usage
docker stats
2025-11-28 12:32:12 +01:00
```
2026-02-09 11:41:46 +01:00
### Logs
2025-11-28 12:32:12 +01:00
```bash
2026-02-09 11:41:46 +01:00
# All logs (live)
2025-11-28 12:32:12 +01:00
docker compose logs -f
2026-02-09 11:41:46 +01:00
# Specific service
docker compose logs -f palladiumd
docker compose logs -f electrumx
docker compose logs -f dashboard
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
# Last 100 lines
docker compose logs --tail=100
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
# Since specific time
docker compose logs --since 30m
2025-11-28 12:32:12 +01:00
```
2026-02-09 11:41:46 +01:00
### Palladium Node Commands
2025-11-28 12:32:12 +01:00
2026-02-09 11:41:46 +01:00
```bash
# Blockchain info
docker exec palladium-node palladium-cli \
-rpcuser=USER -rpcpassword=PASS \
getblockchaininfo
# Network info
docker exec palladium-node palladium-cli \
-rpcuser=USER -rpcpassword=PASS \
getnetworkinfo
# Peer count
docker exec palladium-node palladium-cli \
-rpcuser=USER -rpcpassword=PASS \
getconnectioncount
# Peer details
docker exec palladium-node palladium-cli \
-rpcuser=USER -rpcpassword=PASS \
getpeerinfo
```
2025-11-28 12:32:12 +01:00
---
2026-02-09 11:41:46 +01:00
## Troubleshooting
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### Container Won't Start
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
**Check logs:**
2026-02-09 00:22:15 +01:00
```bash
2026-02-09 11:41:46 +01:00
docker compose logs <service-name>
2026-02-09 00:22:15 +01:00
```
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
**Common issues:**
- Missing or incorrect RPC credentials
- Port already in use
- Insufficient disk space
- Wrong architecture binaries
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### ElectrumX Can't Connect to Node
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
**Verify:**
1. Node is running: `docker compose ps`
2. RPC works: `docker exec palladium-node palladium-cli -rpcuser=USER -rpcpassword=PASS getblockchaininfo`
3. Credentials match in `palladium.conf`
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### Slow Blockchain Sync
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
**Tips:**
- Copy existing blockchain (Step 4)
- Check internet speed
- Verify addnodes in config
- Be patient (initial sync takes hours/days)
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### Port Already in Use
2026-02-09 00:22:15 +01:00
```bash
2026-02-09 11:41:46 +01:00
# Check what's using port
sudo lsof -i :50001
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
# Kill process or change port in docker-compose.yml
2026-02-09 00:22:15 +01:00
```
2026-02-09 11:41:46 +01:00
### Dashboard Shows Wrong Data
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
**Force refresh:**
1. Clear browser cache (Ctrl+Shift+R)
2. Check dashboard logs: `docker compose logs dashboard`
3. Restart dashboard: `docker compose restart dashboard`
### Binary Architecture Error
2026-02-09 00:22:15 +01:00
```bash
2026-02-09 11:41:46 +01:00
# Check your system
uname -m
# x86_64 = Intel/AMD 64-bit
# aarch64 = ARM 64-bit
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
# Check binary
file daemon/palladiumd
# Should match system architecture
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
# Fix: download correct binaries and rebuild
docker compose build --no-cache
2026-02-09 00:22:15 +01:00
```
---
2026-02-09 11:41:46 +01:00
## Security Recommendations
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### Production Deployment
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
1. **Strong Credentials: **
- Use long, random passwords for RPC
- Don't use default credentials
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
2. **Firewall Configuration: **
2025-09-26 16:07:30 +02:00
```bash
2026-02-09 11:41:46 +01:00
# Allow only required ports
sudo ufw allow 2333/tcp # P2P
sudo ufw allow 50001/tcp # ElectrumX TCP
sudo ufw allow 50002/tcp # ElectrumX SSL
# Don't expose 8080 publicly without authentication
sudo ufw enable
2025-09-26 16:07:30 +02:00
```
2026-02-09 11:41:46 +01:00
3. **SSL Certificates: **
2026-02-17 08:58:44 +01:00
- Self-signed certificates are auto-generated on first startup in `./certs/`
- The certificate includes localhost and the auto-detected public IP in its SAN
- To use your own certificates (e.g. Let's Encrypt), place `server.crt` and `server.key` in `./certs/` before starting
2026-01-22 09:20:12 +01:00
2026-02-09 11:41:46 +01:00
4. **Dashboard Access: **
2026-02-17 10:25:37 +01:00
- LAN clients (RFC1918 private IPs) can access without authentication
- External clients (public IPs) require HTTP Basic Auth automatically
- Configure credentials in `.env` (copy from `.env.example` ):
```bash
DASHBOARD_AUTH_USERNAME=admin
DASHBOARD_AUTH_PASSWORD=a-strong-random-password
```
- Consider using a VPN instead of exposing port 8080 publicly
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
5. **Regular Updates: **
2026-02-09 00:22:15 +01:00
```bash
2026-02-09 11:41:46 +01:00
# Update Palladium binaries
# Update Docker images
docker compose pull
docker compose up -d
2025-09-26 16:07:30 +02:00
```
2026-01-22 09:20:12 +01:00
2026-02-09 11:41:46 +01:00
6. **Monitoring: **
- Set up log monitoring
- Monitor disk space
- Watch for unusual activity in dashboard
2026-01-22 09:20:12 +01:00
2026-02-09 11:41:46 +01:00
---
2026-01-22 09:20:12 +01:00
2026-02-09 11:41:46 +01:00
## Performance Tuning
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### System Resources
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
**Minimum:**
- 2 CPU cores
- 4GB RAM
- 50GB storage
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
**Recommended:**
- 4+ CPU cores
- 8GB+ RAM
- 100GB+ SSD storage
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### Docker Resource Limits
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
Edit `docker-compose.yml` to add limits:
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
```yaml
services:
palladiumd:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
```
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
### ElectrumX Performance
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
Increase concurrent indexing (in `docker-compose.yml` ):
2026-02-09 00:22:15 +01:00
2026-02-09 11:41:46 +01:00
```yaml
environment:
INITIAL_CONCURRENT: "4" # Default: 2
```
2026-01-22 09:20:12 +01:00
2025-09-26 16:07:30 +02:00
---
2026-02-09 11:41:46 +01:00
## Notes
2025-09-26 16:07:30 +02:00
2026-02-17 08:58:44 +01:00
* **Data Persistence:** All data stored in `./.palladium/` , `./electrumx-data/` , and `./certs/`
2026-02-11 12:29:16 +01:00
* **Backup:** Regularly backup `.palladium/wallet.dat` if you store funds
2026-02-09 11:41:46 +01:00
* **Network Switch:** Always clear ElectrumX database when switching networks
* **Updates:** Check for Palladium Core updates regularly
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
---
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
## License
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
Distributed under the **MIT ** license. See `LICENSE` file for details.
2025-09-26 16:07:30 +02:00
---
2026-02-11 12:29:16 +01:00
## Support
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
- **ElectrumX Documentation:** [Official Docs ](https://electrumx.readthedocs.io/ )
2025-09-26 16:07:30 +02:00
---
2026-02-09 11:41:46 +01:00
## Credits
2025-09-26 16:07:30 +02:00
2026-02-09 11:41:46 +01:00
- **ElectrumX:** [kyuupichan/electrumx ](https://github.com/kyuupichan/electrumx )