Holesail-docker

  • TODO: Make README more clear.

Holesail-docker is a Docker container that proxies traffic from or to other containers.

Setup


Create a Docker Network

Create a Docker network to connect your containers:

docker network create holesail

Use the Image

Use the latest Holesail-docker image:

docker run -d --name holesail \
  -e MODE=server \
  -e PORT=25565 \
  -e HOST=minecraft \
  -e CONNECTOR=very-super-secret \
  --network holesail \
  ghcr.io/anaxios/holesail-docker:latest

Modes


Holesail-docker can run in three modes: Server, Client, and Filemanager.

Server Mode

In Server mode, Holesail-docker proxies traffic from one container to another. Example docker-compose.yml file:

services:
  holesail:
    container_name: holesail
    restart: unless-stopped
    image: ghcr.io/anaxios/holesail-docker:latest
    environment:
      MODE: server
      PORT: 25565
      HOST: minecraft
      PUBLIC: false
      CONNECTOR: very-super-secret
    networks:
      - holesail

  mc:
    image: itzg/minecraft-server
    container_name: minecraft
    tty: true
    stdin_open: true
    restart: unless-stopped
    ports:
      - "25565:25565"
    environment:
      EULA: "TRUE"
    volumes:
      - ./data:/data
    depends_on:
      - holesail
    networks:
      - holesail

networks:
  holesail:
    external: true

Client Mode

In Client mode, Holesail-docker connects to a remote host. Example docker-compose.yml file:

services:
  holesail:
    container_name: holesail
    restart: unless-stopped
    network_mode: "host"
    image: ghcr.io/anaxios/holesail-docker:latest
    environment:
      MODE: client
      PORT: 8989
      HOST: 0.0.0.0
      PUBLIC: false
      CONNECTOR: very-super-secret

Note: Client mode only works on Linux, and is incompatible with Windows and Mac.

Filemanager Mode

In Filemanager mode, Holesail-docker serves a file manager interface. Example docker-compose.yml file:

services:
  holesail:
    container_name: holesail
    restart: unless-stopped
    image: ghcr.io/anaxios/holesail-docker:latest
    environment:
      MODE: filemanager
      PORT: 8989
      HOST: 0.0.0.0
      PUBLIC: true
      ROLE: user
      USERNAME: admin
      PASSWORD: admin
      CONNECTOR: very-super-secret
    volumes:
      - <host dir>:/data

Replace <host dir> with the directory you wish to share.

Development


To develop Holesail-docker, clone this repository and run:

docker compose up --build

This will start the containers and rebuild the image if necessary.

Description
Holesail proxy in a container
Readme 74 KiB
Languages
Shell 73.7%
JavaScript 16.1%
Dockerfile 10.2%