Left4DevOps / l4d2-docker

L4D2 Server Docker Image
41 stars 8 forks source link

(Windows) Server not showing up - can't be connected to #13

Open armanossiloko opened 1 month ago

armanossiloko commented 1 month ago

On Docker (Windows), I tried to run a Terminal command:

docker run --name l4d2-bridged -p 27015:27015/tcp -p 27015:27015/udp left4devops/l4d2

Docker fetched everything and booted up the container just fine and it appears to be green in Docker desktop. However, the server is not showing up in the LAN section in Steam Game Servers. image

It cannot be added in the favorites by using 0.0.0.0:27015, 127.0.0.1:27015 nor by localhost:27015. I cannot connect to it directly from within the game either when I type connect 0.0.0.0:27015 (or any of the combinations above). Same goes for when trying to join via lobby and using mm_dedicated_force_servers [ip:port].

Am I doing something wrong or is there limitations which I am not aware of?

EDIT: Forgot to add the container logs, if it means anything (though, it shouldn't):

2024-09-29 20:05:19 Couldn't find any entities named fire_ballroom_07-hurt, which poi2024-09-29T18:05:36.528760949Z WARNING: No map specified! Defaulting to c1m1_hotel
2024-09-29 20:05:36 Server will auto-restart if there is a crash.
2024-09-29 20:05:38 Setting breakpad minidump AppID = 222860
2024-09-29 20:05:38 Using breakpad crash handler
2024-09-29 20:05:38 Forcing breakpad minidump interfaces to load
2024-09-29 20:05:38 Looking up breakpad interfaces from steamclient
2024-09-29 20:05:38 Calling BreakpadMiniDumpSystemInit
2024-09-29 20:05:39 #Using shader api: bin/shaderapiempty_srv.so
2024-09-29 20:05:39 #
2024-09-29 20:05:39 #Console initialized.
2024-09-29 20:05:39 #Using breakpad minidump system
2024-09-29 20:05:39 #Game_srv.so loaded for "Left 4 Dead 2"
2024-09-29 20:05:39 Server is hibernating
2024-09-29 20:05:39 ConVarRef test_progression_loop doesn't point to an existing ConVar
2024-09-29 20:05:39 [S_API] SteamAPI_Init(): SteamAPI_IsSteamRunning() did not locate a running instance of Steam.
2024-09-29 20:05:39 [S_API] SteamAPI_Init(): Loaded '/home/louis/.steam/sdk32/steamclient.so' OK.
2024-09-29 20:05:40 [S_API FAIL] SteamAPI_Init() failed; create pipe failed.Looking up breakpad interfaces from steamclient
2024-09-29 20:05:40 Calling BreakpadMiniDumpSystemInit
2024-09-29 20:05:42 Parent cvar in server.dll not allowed (spit_scaling_min_scale)
2024-09-29 20:05:42 Game supporting (2) split screen players
2024-09-29 20:05:42 maxplayers set to 18
2024-09-29 20:05:42 Unknown command "mat_bloom_scalefactor_scalar"
2024-09-29 20:05:42 Network: IP 172.17.0.2, mode MP, dedicated Yes, ports 27015 SV / 0 CL
2024-09-29 20:05:42 ---- Host_NewGame ----
2024-09-29 20:05:42 Host_NewGame on map c1m1_hotel
2024-09-29 20:05:42 ConVarRef room_type doesn't point to an existing ConVar
2024-09-29 20:05:42 Executing dedicated server config file
2024-09-29 20:05:42 VSCRIPT: Running mapspawn.nut
2024-09-29 20:05:42 CSpeechScriptBridge initializing...
2024-09-29 20:05:42     HSCRIPT loaded successfully
2024-09-29 20:05:42 Initializing Director's script
2024-09-29 20:05:42 Couldn't find any entities named fire13_timer, which point_template fire13_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire13_clip, which point_template fire13_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire13_smoke, which point_template fire13_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire13_fog_volume, which point_template fire13_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire14_timer, which point_template fire14_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire14_clip, which point_template fire14_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire14_smoke, which point_template fire14_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire14_fog_volume, which point_template fire14_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire15_timer, which point_template fire15_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire15_clip, which point_template fire15_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire15_smoke, which point_template fire15_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire15_fog_volume, which point_template fire15_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire16_timer, which point_template fire16_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire16_clip, which point_template fire16_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire16_smoke, which point_template fire16_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire16_fog_volume, which point_template fire16_template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named sound, which point_template fire_ballroom_07-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire03-sound, which point_template fire03-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire04-sound, which point_template fire04-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire10-sound, which point_template fire10-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire27-sound, which point_template fire27-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire28-sound, which point_template fire28-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire_ballroom_02-sound, which point_template fire_ballroom_02-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire_ballroom_01-sound, which point_template fire_ballroom_01-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire_ballroom_03-sound, which point_template fire_ballroom_03-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire_ballroom_04-sound, which point_template fire_ballroom_04-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire_ballroom_05-sound, which point_template fire_ballroom_05-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire_ballroom_06-sound, which point_template fire_ballroom_06-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire_ballroom_07-particles, which point_template fire_ballroom_07-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire_ballroom_07-point1, which point_template fire_ballroom_07-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire_ballroom_07-point3, which point_template fire_ballroom_07-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire_ballroom_07-point5, which point_template fire_ballroom_07-template is specifying.
2024-09-29 20:05:42 Couldn't find any entities named fire_ballroom_07-point6, which point_template fire_ballroom_07-template is specifying.
2024-09-29 20:05:43 [S_API] SteamAPI_Init(): Loaded local 'steamclient.so' OK.
2024-09-29 20:05:43 CAppInfoCacheReadFromDiskThread took 12 milliseconds to initialize
2024-09-29 20:05:43 Setting breakpad minidump AppID = 550
2024-09-29 20:05:43 Looking up breakpad interfaces from steamclient
2024-09-29 20:05:43 Calling BreakpadMiniDumpSystemInit
2024-09-29 20:05:43 Setting breakpad minidump AppID = 222860
hazmeister commented 1 month ago

Thanks for sharing your logs. At first glance most things look sensible. Comparing your log output with mine, I can see you're missing:

Connection to Steam servers successful.
   VAC secure mode is activated.

Which suggests to me that your outbound connection to Steam is being blocked somewhere.

Maybe Windows firewall? Any chance the network you are on could be restricting network connectivity to Steam?

You could try starting in LAN mode (-e LAN=true) or with the -insecure flag (-e EXTRA_ARGS=-insecure).

armanossiloko commented 1 month ago

Thanks for sharing your logs. At first glance most things look sensible. Comparing your log output with mine, I can see you're missing:

Connection to Steam servers successful.
   VAC secure mode is activated.

Which suggests to me that your outbound connection to Steam is being blocked somewhere.

Maybe Windows firewall? Any chance the network you are on could be restricting network connectivity to Steam?

You could try starting in LAN mode (-e LAN=true) or with the -insecure flag (-e EXTRA_ARGS=-insecure).

This time I've run it like this and it shows up in the LAN servers, but connecting to it did not work. It looks like it gets shut down once I boot up the game. When the game is launched, the server does not show up in the LAN servers list.

docker run --name l4d2-bridged -p 27015:27015/tcp -p 27015:27015/udp -e LAN=true -e EXTRA_ARGS=-insecure left4devops/l4d2 -d

Logs (no new logs appear once I start the game locally);

2024-09-29 23:29:24 WARNING: No map specified! Defaulting to c1m1_hotel
2024-09-29 23:29:24 Server will auto-restart if there is a crash.
2024-09-29 23:29:24 #Using shader api: bin/shaderapiempty_srv.so
2024-09-29 23:29:24 #
2024-09-29 23:29:24 #Console initialized.
2024-09-29 23:29:24 #Using breakpad minidump system
2024-09-29 23:29:24 #Game_srv.so loaded for "Left 4 Dead 2"
2024-09-29 23:29:24 Server is hibernating
2024-09-29 23:29:24 ConVarRef test_progression_loop doesn't point to an existing ConVar
2024-09-29 23:29:28 Parent cvar in server.dll not allowed (spit_scaling_min_scale)
2024-09-29 23:29:28 Game supporting (2) split screen players
2024-09-29 23:29:28 maxplayers set to 18
2024-09-29 23:29:28 Unknown command "mat_bloom_scalefactor_scalar"
2024-09-29 23:29:28 Network: IP 172.17.0.2, mode MP, dedicated Yes, ports 27015 SV / 0 CL
2024-09-29 23:29:28 ---- Host_NewGame ----
2024-09-29 23:29:28 Host_NewGame on map c1m1_hotel
2024-09-29 23:29:28 ConVarRef room_type doesn't point to an existing ConVar
2024-09-29 23:29:28 Executing dedicated server config file
2024-09-29 23:29:28 VSCRIPT: Running mapspawn.nut
2024-09-29 23:29:28 CSpeechScriptBridge initializing...
2024-09-29 23:29:28     HSCRIPT loaded successfully
2024-09-29 23:29:28 Initializing Director's script
2024-09-29 23:29:28 Couldn't find any entities named fire13_timer, which point_template fire13_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire13_clip, which point_template fire13_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire13_smoke, which point_template fire13_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire13_fog_volume, which point_template fire13_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire14_timer, which point_template fire14_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire14_clip, which point_template fire14_template is specifying.
2024-09-29 23:29:24 Setting breakpad minidump AppID = 222860
2024-09-29 23:29:24 Using breakpad crash handler
2024-09-29 23:29:24 Forcing breakpad minidump interfaces to load
2024-09-29 23:29:24 Looking up breakpad interfaces from steamclient
2024-09-29 23:29:24 Calling BreakpadMiniDumpSystemInit
2024-09-29 23:29:24 [S_API] SteamAPI_Init(): SteamAPI_IsSteamRunning() did not locate a running instance of Steam.
2024-09-29 23:29:24 [S_API] SteamAPI_Init(): Loaded '/home/louis/.steam/sdk32/steamclient.so' OK.
2024-09-29 23:29:26 [S_API FAIL] SteamAPI_Init() failed; create pipe failed.Looking up breakpad interfaces from steamclient
2024-09-29 23:29:26 Calling BreakpadMiniDumpSystemInit
2024-09-29 23:29:29 [S_API] SteamAPI_Init(): Loaded local 'steamclient.so' OK.
2024-09-29 23:29:29 CAppInfoCacheReadFromDiskThread took 12 milliseconds to initialize
2024-09-29 23:29:29 Setting breakpad minidump AppID = 550
2024-09-29 23:29:29 Looking up breakpad interfaces from steamclient
2024-09-29 23:29:29 Calling BreakpadMiniDumpSystemInit
2024-09-29 23:29:29 Setting breakpad minidump AppID = 222860
2024-09-29 23:29:28 Couldn't find any entities named fire14_smoke, which point_template fire14_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire14_fog_volume, which point_template fire14_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire15_timer, which point_template fire15_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire15_clip, which point_template fire15_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire15_smoke, which point_template fire15_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire15_fog_volume, which point_template fire15_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire16_timer, which point_template fire16_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire16_clip, which point_template fire16_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire16_smoke, which point_template fire16_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire16_fog_volume, which point_template fire16_template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named sound, which point_template fire_ballroom_07-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire03-sound, which point_template fire03-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire04-sound, which point_template fire04-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire10-sound, which point_template fire10-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire27-sound, which point_template fire27-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire28-sound, which point_template fire28-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire_ballroom_02-sound, which point_template fire_ballroom_02-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire_ballroom_01-sound, which point_template fire_ballroom_01-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire_ballroom_03-sound, which point_template fire_ballroom_03-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire_ballroom_04-sound, which point_template fire_ballroom_04-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire_ballroom_05-sound, which point_template fire_ballroom_05-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire_ballroom_06-sound, which point_template fire_ballroom_06-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire_ballroom_07-particles, which point_template fire_ballroom_07-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire_ballroom_07-point1, which point_template fire_ballroom_07-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire_ballroom_07-point3, which point_template fire_ballroom_07-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire_ballroom_07-point5, which point_template fire_ballroom_07-template is specifying.
2024-09-29 23:29:28 Couldn't find any entities named fire_ballroom_07-point6, which point_template fire_ballroom_07-template is specifying.
hazmeister commented 1 month ago

It's not just you. Just booted Windows up, approved the Windows firewall message but got stuck at the same point you did. I've restarted Docker, updated Docker and switched to host networking, none of which seem to work currently. Will let you know more if I figure anything useful out.

image

armanossiloko commented 1 month ago

It's not just you. Just booted Windows up, approved the Windows firewall message but got stuck at the same point you did. I've restarted Docker, updated Docker and switched to host networking, none of which seem to work currently. Will let you know more if I figure anything useful out.

Thank you! Feel free to message about anything I could help with.

hazmeister commented 1 month ago

Spent some more time with this and bridged networking appears to be working now.

docker run -it --name l4d2 -p 27015:27015/tcp -p 27015:27015/udp left4devops/l4d2

image

Host networking starts, but doesn't show in the Server browser.

Not sure exactly what got it working, but I'm guessing it was either:

armanossiloko commented 1 month ago

Spent some more time with this and bridged networking appears to be working now.

docker run -it --name l4d2 -p 27015:27015/tcp -p 27015:27015/udp left4devops/l4d2

Host networking starts, but doesn't show in the Server browser. Not sure exactly what got it working, but I'm guessing it was either: * Rebooting Windows * Restarting Docker after allowing the app through the firewall * **Clean / purge data** in docker troubleshooting (I had run out of disk apce) Have you rebooted since? Is it still not working?

So, one thing that might've helped was I ran the server at 27015, but I put a game launch option +clientport 27017. It looks like that makes it appear in the search browser WHEN I have the game running on Steam. So, using docker run -it --name l4d2 -p 27015:27015/tcp -p 27015:27015/udp left4devops/l4d2 makes it work until you run the game (by default, the clientport goes to 27015 I think, which makes both your game and the Docker server block each other I guess).

image

However, even this way, I am unable to connect to the server at all as the connection fails after 10 retries:


Connecting to public(192.168.0.18:27015) 
Sending UDP connect to public IP 192.168.0.18:27015
Retrying public(192.168.0.18:27015) 
Sending UDP connect to public IP 192.168.0.18:27015
Retrying public(192.168.0.18:27015) 
Sending UDP connect to public IP 192.168.0.18:27015
Retrying public(192.168.0.18:27015) 
Sending UDP connect to public IP 192.168.0.18:27015
Retrying public(192.168.0.18:27015) 
Sending UDP connect to public IP 192.168.0.18:27015
Retrying public(192.168.0.18:27015) 
Sending UDP connect to public IP 192.168.0.18:27015
Retrying public(192.168.0.18:27015) 
Sending UDP connect to public IP 192.168.0.18:27015
Retrying public(192.168.0.18:27015) 
Sending UDP connect to public IP 192.168.0.18:27015
Retrying public(192.168.0.18:27015) 
Sending UDP connect to public IP 192.168.0.18:27015
Retrying public(192.168.0.18:27015) 
Sending UDP connect to public IP 192.168.0.18:27015
Connection failed after 10 retries.

There is no logs shown in the container logs AFTER I click on Join game in the server info. Have you tried connecting to your containerized server just to be sure it's a "me issue"?

hazmeister commented 1 month ago

Damn, you're right. Like you said, the game shows up to the server browser (so TCP is working), but joining a game leads to a client timeout which makes me think UDP is not getting routed properly.

So I did some googling about UDP and WSL, and it looks like there are some issues: https://github.com/microsoft/WSL/issues/6082 https://github.com/microsoft/WSL/issues/8783 https://github.com/microsoft/WSL/issues/8610

Thought some of the linked patches might help, but they are no longer compatible with the version of Windows 10 I am running. I tried installing ethtool in my WSL linked distro and running the ethtool -K eth0 tx off command within the distro as root suggested as a workaround, but this did not appear to help. I'm running a Debian distro.

armanossiloko commented 1 month ago

Damn, you're right. Like you said, the game shows up to the server browser (so TCP is working), but joining a game leads to a client timeout which makes me think UDP is not getting routed properly.

So I did some googling about UDP and WSL, and it looks like there are some issues: microsoft/WSL#6082 microsoft/WSL#8783 microsoft/WSL#8610

Thought some of the linked patches might help, but they are no longer compatible with the version of Windows 10 I am running. I tried installing ethtool in my WSL linked distro and running the ethtool -K eth0 tx off command within the distro as root suggested as a workaround, but this did not appear to help. I'm running a Debian distro.

Maybe it won't work on Windows, ever. lol I am out of ideas, to be honest.