Skip to content

ea1nk/EA1NK-Docker-DxSpider

Repository files navigation

███████╗ ██████╗ ██████╗     ██████╗ ███████╗██╗   ██╗██╗ ██████╗███████╗███████╗
██╔════╝██╔════╝██╔═══██╗    ██╔══██╗██╔════╝██║   ██║██║██╔════╝██╔════╝██╔════╝
███████╗██║     ██║   ██║    ██║  ██║█████╗  ██║   ██║██║██║     █████╗  ███████╗
╚════██║██║     ██║▄▄ ██║    ██║  ██║██╔══╝  ╚██╗ ██╔╝██║██║     ██╔══╝  ╚════██║
███████║╚██████╗╚██████╔╝    ██████╔╝███████╗ ╚████╔╝ ██║╚██████╗███████╗███████║
╚══════╝ ╚═════╝ ╚══▀▀═╝     ╚═════╝ ╚══════╝  ╚═══╝  ╚═╝ ╚═════╝╚══════╝╚══════╝
                                                                                 
███████╗ █████╗  ██╗███╗   ██╗██╗  ██╗                                           
██╔════╝██╔══██╗███║████╗  ██║██║ ██╔╝                                           
█████╗  ███████║╚██║██╔██╗ ██║█████╔╝                                            
██╔══╝  ██╔══██║ ██║██║╚██╗██║██╔═██╗                                            
███████╗██║  ██║ ██║██║ ╚████║██║  ██╗           
2026 EA1NK-Docker-DXSpider High-Performance DX Cluster Stack with WebUI, MariaDB & Nginx

🐳 EA1NK-Docker-DXSpider

High-Performance DX Cluster Stack with WebUI, MariaDB & Nginx

Docker License Platform

This repository provides a Microservices Stack designed to deploy a high-performance DXSpider node (Mojo branch), fully containerized and production-ready.


🏗️ Stack Architecture & Credits

This project is heavily based on the excellent work by 9M2PJU in his 9M2PJU-DXSpider-Docker repository. It has been customized, optimized for Alpine 3.20, and expanded to include a full MariaDB/Nginx stack.

The web interface is powered by Spiderweb, an open-source DX Cluster web frontend developed by IU1BOW - Corrado Gerbaldo.

This project applies local patches to the Spiderweb interface during the image build process from the files stored in web_server/patches/. These patches are used to adapt Spiderweb behavior and presentation to this stack when needed.

The deployment consists of six interconnected components running within an isolated internal network:

  1. DXSpider Node (Mojo): The core cluster engine, optimized for asynchronous processes and low latency.
  2. MariaDB 10.11: Relational database engine for persistent storage of spots.
  3. Spiderweb (IU1BOW): A feature-rich web frontend for DX Cluster, displaying live spots, statistics, charts and propagation data. Developed by IU1BOW - Corrado Gerbaldo.
  4. WebUI (ttyd/Mojo Web): A tactical web-based interface for remote sysop administration and monitoring via browser.
  5. NGINX Reverse Proxy: Acts as a secure gateway, managing HTTP/Websocket traffic to the WebUI and providing an additional layer of protection.
  6. Telegram Bot (optional profile): Reads live spots from DXSpider and sends filtered alerts to Telegram users. It also supports /last queries against MariaDB.

🚀 Quick Start Guide

Prerequisites

1. Clone the repository

git clone https://github.com/ea1nk/EA1NK-Docker-DxSpider.git
cd EA1NK-Docker-DxSpider

2. Configure your .env file

Copy or edit the .env file and fill in your details:

# Your cluster callsign (e.g. EA1NK-8)
CLUSTER_CALLSIGN=MYCALL-8

# Sysop details
CLUSTER_SYSOP_NAME=YourName
CLUSTER_SYSOP_CALLSIGN=MYCALL
CLUSTER_SYSOP_PASSWORD=your_sysop_password

# Location
CLUSTER_LATITUDE=40.41650
CLUSTER_LONGITUDE=-3.70357
CLUSTER_LOCATOR=IN80DO
CLUSTER_QTH=Madrid, Spain

# Contact
CLUSTER_SYSOP_EMAIL=[email protected]

# Hostname (used in telnet banner)
CLUSTER_DX_HOSTNAME=dx.yourdomain.com
CLUSTER_PORT=7300
CLUSTER_SYSOP_PORT=8050

# MariaDB — change these before first run
CLUSTER_DB_USER=sysop
CLUSTER_DB_PASS=change_me
CLUSTER_DB_ROOT_PASSWORD=change_me_root
CLUSTER_DB_NAME=spiderdb

# Spiderweb internal telnet user (auto-created)
CLUSTER_SPIDERWEB_USER=SPIDERWEBUSER
CLUSTER_SPIDERWEB_PASSWORD=change_me_web

# Telegram Bot (optional)
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
MY_CALL=MYCALL-BOT
DEBUG_TELNET=0
PYTHONUNBUFFERED=1
# Optional override (defaults to spider_database in compose)
CLUSTER_DB_HOST=spider_database
# Enable optional compose profile
COMPOSE_PROFILES=telegram_bot

Note: CLUSTER_SPIDERWEB_USER and CLUSTER_SPIDERWEB_PASSWORD are created automatically in DXSpider at startup — you don't need to create them manually.

3. Build and start the stack

docker compose up -d --build

The first run will build the DXSpider and Spiderweb images. This may take a few minutes.

4. Check that everything is running

docker compose ps

Core services should show Up or Up (healthy). If Telegram profile is enabled, dxspider-telegram-bot should also be Up.

5. Access the web interface

Service URL
Spiderweb (DX spots & stats) http://localhost/
Sysop console (ttyd) http://localhost/console
Telnet cluster access telnet localhost 7300

6. Stopping and restarting

# Stop
docker compose down

# Start again (no rebuild needed)
docker compose up -d

Data persistence: All spot data and user configuration is stored in ./database_data/ (MariaDB volume) and ./local_data/ (DXSpider config). These directories are excluded from git.

7. Telegram Bot integration (optional)

The Telegram bot is included as the telegram_bot profile in docker-compose.yml.

Start stack with Telegram profile enabled:

docker compose --profile telegram_bot up -d --build

Or keep COMPOSE_PROFILES=telegram_bot in .env and run the normal command:

docker compose up -d --build

Check bot logs:

docker compose logs -f telegram_bot

Notes:

  • The bot token must be provided in .env as TELEGRAM_BOT_TOKEN.
  • /last requires MariaDB access variables (CLUSTER_DB_NAME, CLUSTER_DB_USER, CLUSTER_DB_PASS, and optional CLUSTER_DB_HOST).
  • The integrated bot supports both DXSpider table schemas (spots and legacy spot) for /last compatibility.
  • Full bot command and filter documentation is available in telegram_bot/README.md.