Skip to content
tester2024 edited this page Oct 27, 2026 · 2 revisions

Docker

Note

The image contains the CLI and wordlists. The web panel runs from a source checkout and needs Node.js.

The container image is a small Python 3.12 image with the CLI and wordlists. It does not include the web panel.

Pull

docker pull ghcr.io/matrixtm/mhddos:latest

Tags are published for main, version tags, and commit SHAs. latest follows the default branch.

Run

docker run --rm --cap-add=NET_RAW \
  ghcr.io/matrixtm/mhddos:latest \
  GET https://example.com 0 100 http.txt 10 60

The image entrypoint is python start.py, so arguments after the image name are passed straight to the CLI.

Show help:

docker run --rm ghcr.io/matrixtm/mhddos:latest HELP

Open a shell:

docker run --rm -it --entrypoint /bin/bash ghcr.io/matrixtm/mhddos:latest

Compose

docker compose build
docker compose run --rm mhddos GET https://example.com 0 100 http.txt 10 60

The service is one-shot. docker compose up runs start.py with no arguments, prints the usage, and exits; it is not a long-running daemon. restart is therefore set to "no".

Useful service settings in docker-compose.yml:

Setting Why
cap_add: NET_RAW Raw-socket methods
init: true Clean signal handling
stdin_open / tty Interactive shells and console tools
./config.json:/app/config.json:ro Keep config editable from the host
./files:/app/files Wordlists and downloaded proxies

Raw sockets

These methods need NET_RAW:

SYN, ICMP, OVH-UDP, MEM, NTP, DNS, ARD, CLDAP, CHAR, RDP
docker run --rm --cap-add=NET_RAW ...

Without the capability the process starts but raw-socket checks fail. DOCTOR reports this.

Volumes

The image ships config.json and files/. Mount them if you want changes to survive a container rebuild:

volumes:
  - ./config.json:/app/config.json:ro
  - ./files:/app/files

The proxy directory is writable because MHDDoS writes checked proxies there.

Build locally

docker build -t mhddos:local .
docker run --rm --cap-add=NET_RAW mhddos:local HELP

The Dockerfile installs requirements.txt, removes the temporary git package, copies start.py, config.json, and files/, and sets STOPSIGNAL SIGINT.

Image builds

.github/workflows/docker-image.yml builds linux/amd64 and linux/arm64 with Buildx, pushes to GHCR on non-PR events, and uses the GitHub Actions cache. Pull requests build without pushing.

Notes

  • The web panel is not in the image. Run it from a source checkout.
  • The image runs as root so raw sockets work. Drop that only if you also add the needed capabilities and adjust file ownership.
  • If docker compose up exits immediately, that is expected. Use docker compose run.
  • docker compose run -it --entrypoint /bin/bash mhddos starts a shell; the image has no default command to get in the way.

Clone this wiki locally