REST and server sockets bind to 127.0.0.1 — unreachable from Docker host #3

Open
opened 2026-03-27 21:41:40 +02:00 by iAdrian · 0 comments
Owner

Problem

All server components in config.ini bind to 127.0.0.1 (loopback).
In Docker, loopback is scoped to the container — port forwarding from the host
only works if the process listens on 0.0.0.0.

Additionally, PublicIP (used to build the login URL sent to the D3 client)
is also 127.0.0.1, so even if the client reaches port 1119, it gets redirected
to http://127.0.0.1:83/battlenet/login — which resolves to the client machine,
not the server.

Affected config sections (src/DiIiS-NA/config.ini)

Section Key Current Needed
[Battle-Server] BindIP 127.0.0.1 0.0.0.0
[REST] IP 127.0.0.1 0.0.0.0
[REST] PublicIP 127.0.0.1 <host machine IP>
[Game-Server] BindIP 127.0.0.1 0.0.0.0
[NAT] PublicIP 127.0.0.1 <host machine IP>

Symptom

D3 client connects on port 1119, receives login URL pointing to 127.0.0.1:83,
GET request fails silently → disconnect + error 14003.

Fix

  • BindIP fields → 0.0.0.0
  • PublicIP fields → actual host IP (LAN or public)
  • Config-only change, no rebuild needed

Notes

PublicIP ideally should be configurable via env var (see config templates roadmap item).
For now, needs to be set manually in config.ini.

## Problem All server components in `config.ini` bind to `127.0.0.1` (loopback). In Docker, loopback is scoped to the container — port forwarding from the host only works if the process listens on `0.0.0.0`. Additionally, `PublicIP` (used to build the login URL sent to the D3 client) is also `127.0.0.1`, so even if the client reaches port 1119, it gets redirected to `http://127.0.0.1:83/battlenet/login` — which resolves to the client machine, not the server. ## Affected config sections (`src/DiIiS-NA/config.ini`) | Section | Key | Current | Needed | |----------------|------------|---------------|----------------------| | `[Battle-Server]` | `BindIP` | `127.0.0.1` | `0.0.0.0` | | `[REST]` | `IP` | `127.0.0.1` | `0.0.0.0` | | `[REST]` | `PublicIP` | `127.0.0.1` | `<host machine IP>` | | `[Game-Server]` | `BindIP` | `127.0.0.1` | `0.0.0.0` | | `[NAT]` | `PublicIP` | `127.0.0.1` | `<host machine IP>` | ## Symptom D3 client connects on port 1119, receives login URL pointing to `127.0.0.1:83`, GET request fails silently → disconnect + error **14003**. ## Fix - `BindIP` fields → `0.0.0.0` - `PublicIP` fields → actual host IP (LAN or public) - Config-only change, no rebuild needed ## Notes `PublicIP` ideally should be configurable via env var (see config templates roadmap item). For now, needs to be set manually in `config.ini`.
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Gaming/blizzless-diiis#3
No description provided.