Describe the bug
When starting the JunimoServer Docker container, the GalaxySDK authentication process consistently times out after exactly 60 seconds when attempting to fetch a Steam app ticket via Node.js. This results in the server crashing with a core dump, preventing the server from starting successfully. The error manifests as "Node.js process timed out" followed by a console input file lock conflict.
Steps to reproduce
Clone the JunimoServer repository or use the provided Docker configuration
Create a .env file from .env.example with the following minimal configuration:
bash
STEAM_USER="..."
STEAM_PASS="..."
VNC_PASSWORD="..."
Use the following docker-compose.yml configuration:
yaml
services:
server:
image: sdvd/server:latest
stdin_open: true
tty: true
container_name: sdvd-server
ports:
- ${GAME_PORT:-24642}:24642/udp
- ${VNC_PORT:-5800}:5800
cap_add:
- SYS_TIME
volumes:
- game-files:/data/Stardew
- saves:/config/xdg/config/StardewValley
environment:
STEAM_USER: "${STEAM_USER}"
STEAM_PASS: "${STEAM_PASS}"
STEAM_GUARD_CODE: "${STEAM_GUARD_CODE:-}"
VNC_PASSWORD: "${VNC_PASSWORD:-}"
DISABLE_RENDERING: "${DISABLE_RENDERING:-true}"
restart: unless-stopped
volumes:
game-files:
saves:
Start the server: docker compose up -d
Check the logs: docker compose logs -f
Expected behavior
The server should successfully authenticate with GalaxySDK using the provided Steam credentials within a reasonable timeframe (under 60 seconds) and proceed to load the game server, allowing players to connect.
Additional context
Full logs:
[app ] [19:58:28 INFO JunimoServer] Loading services...
[app ] [19:58:28 TRACE JunimoServer] AlwaysOnConfig (JunimoServer.Services.AlwaysOn.AlwaysOnConfig)
[app ] [19:58:28 TRACE JunimoServer] AlwaysOnServer (JunimoServer.Services.AlwaysOn.AlwaysOnServer)
[app ] [19:58:28 TRACE JunimoServer] CabinManagerService (JunimoServer.Services.CabinManager.CabinManagerService)
[app ] [19:58:28 TRACE JunimoServer] ChatCommandsService (JunimoServer.Services.ChatCommands.ChatCommandsService)
[app ] [19:58:28 TRACE JunimoServer] CropSaver (JunimoServer.Services.CropSaver.CropSaver)
[app ] [19:58:28 TRACE JunimoServer] DesyncKicker (JunimoServer.Services.NetworkTweaks.DesyncKicker)
[app ] [19:58:28 TRACE JunimoServer] FarmhandSenderService (JunimoServer.Services.Auth.FarmhandSenderService)
[app ] [19:58:28 TRACE JunimoServer] GalaxyAuthService (JunimoServer.Services.Auth.GalaxyAuthService)
[app ] [19:58:28 TRACE JunimoServer] GameCreatorService (JunimoServer.Services.GameCreator.GameCreatorService)
[app ] [19:58:28 TRACE JunimoServer] GameLoaderService (JunimoServer.Services.GameLoader.GameLoaderService)
[app ] [19:58:28 TRACE JunimoServer] GameManagerService (JunimoServer.Services.GameManager.GameManagerService)
[app ] [19:58:28 TRACE JunimoServer] GameTweaker (JunimoServer.Services.GameTweaks.GameTweaker)
[app ] [19:58:28 TRACE JunimoServer] HostBot (JunimoServer.Services.HostAutomation.HostBot)
[app ] [19:58:28 TRACE JunimoServer] MessageInterceptorsService (JunimoServer.Services.MessageInterceptors.MessageInterceptorsService)
[app ] [19:58:28 TRACE JunimoServer] NetworkTweaker (JunimoServer.Services.NetworkTweaks.NetworkTweaker)
[app ] [19:58:28 TRACE JunimoServer] PersistentOptions (JunimoServer.Services.PersistentOption.PersistentOptions)
[app ] [19:58:28 TRACE JunimoServer] RoleService (JunimoServer.Services.Roles.RoleService)
[app ] [19:58:28 TRACE JunimoServer] SecurityService (JunimoServer.Services.CabinManager.SecurityService)
[app ] [19:58:28 TRACE JunimoServer] ServerOptimizer (JunimoServer.Services.ServerOptim.ServerOptimizer)
[app ] [19:58:28 INFO JunimoServer] Loaded 17 services:
[app ] [19:58:28 INFO JunimoServer] AlwaysOnServer
[app ] [19:58:28 INFO JunimoServer] CabinManagerService
[app ] [19:58:28 INFO JunimoServer] ChatCommandsService
[app ] [19:58:28 INFO JunimoServer] CropSaver
[app ] [19:58:28 INFO JunimoServer] DesyncKicker
[app ] [19:58:28 INFO JunimoServer] FarmhandSenderService
[app ] [19:58:28 INFO JunimoServer] GalaxyAuthService
[app ] [19:58:28 INFO JunimoServer] GameCreatorService
[app ] [19:58:28 INFO JunimoServer] GameLoaderService
[app ] [19:58:28 INFO JunimoServer] GameManagerService
[app ] [19:58:28 INFO JunimoServer] GameTweaker
[app ] [19:58:28 INFO JunimoServer] HostBot
[app ] [19:58:28 INFO JunimoServer] MessageInterceptorsService
[app ] [19:58:28 INFO JunimoServer] NetworkTweaker
[app ] [19:58:28 INFO JunimoServer] RoleService
[app ] [19:58:28 INFO JunimoServer] SecurityService
[app ] [19:58:28 INFO JunimoServer] ServerOptimizer
[app ] [19:58:28 INFO JunimoServer] Services loaded and ready!
[app ] [19:58:28 DEBUG SMAPI] Mods loaded and ready!
[app ] [19:58:28 TRACE Save Backup] No saves found.
[app ] �]0;SMAPI 4.1.10 - running Stardew Valley 1.6.15 with 3 mods�[19:58:29 TRACE game] setGameMode( 'titleScreenGameMode (0)' )
[app ] [19:58:29 INFO JunimoServer] Replacing 'SteamHelper' with 'GalaxyHelper'
[app ] [19:58:29 TRACE game] Instance_LoadContent() finished, elapsed = '00:00:01.9909323'
[app ] [19:58:29 INFO JunimoServer] Initializing GalaxySDK
[app ] [19:58:29 INFO JunimoServer] Signing into GalaxySDK with Steam ticket
[app ] [19:58:28 INFO JunimoServer] **********************************
[app ] [19:58:28 INFO JunimoServer] * *
[app ] [19:58:28 INFO JunimoServer] * JunimoServer 1.2.0 *
[app ] [19:58:28 INFO JunimoServer] * *
[app ] [19:58:28 INFO JunimoServer] * ✓ Local: 127.0.0.1 *
[app ] [19:58:28 INFO JunimoServer] * ✓ Network: 81.56.12.212 *
[app ] [19:58:28 INFO JunimoServer] * *
[app ] [19:58:28 INFO JunimoServer] **********************************
[app ] [19:58:28 INFO JunimoServer] Loading services...
[app ] [19:58:28 TRACE JunimoServer] AlwaysOnConfig (JunimoServer.Services.AlwaysOn.AlwaysOnConfig)
[app ] [19:58:28 TRACE JunimoServer] AlwaysOnServer (JunimoServer.Services.AlwaysOn.AlwaysOnServer)
[app ] [19:58:28 TRACE JunimoServer] CabinManagerService (JunimoServer.Services.CabinManager.CabinManagerService)
[app ] [19:58:28 TRACE JunimoServer] ChatCommandsService (JunimoServer.Services.ChatCommands.ChatCommandsService)
[app ] [19:58:28 TRACE JunimoServer] CropSaver (JunimoServer.Services.CropSaver.CropSaver)
[app ] [19:58:28 TRACE JunimoServer] DesyncKicker (JunimoServer.Services.NetworkTweaks.DesyncKicker)
[app ] [19:58:28 TRACE JunimoServer] FarmhandSenderService (JunimoServer.Services.Auth.FarmhandSenderService)
[app ] [19:58:28 TRACE JunimoServer] GalaxyAuthService (JunimoServer.Services.Auth.GalaxyAuthService)
[app ] [19:58:28 TRACE JunimoServer] GameCreatorService (JunimoServer.Services.GameCreator.GameCreatorService)
[app ] [19:58:28 TRACE JunimoServer] GameLoaderService (JunimoServer.Services.GameLoader.GameLoaderService)
[app ] [19:58:28 TRACE JunimoServer] GameManagerService (JunimoServer.Services.GameManager.GameManagerService)
[app ] [19:58:28 TRACE JunimoServer] GameTweaker (JunimoServer.Services.GameTweaks.GameTweaker)
[app ] [19:58:28 TRACE JunimoServer] HostBot (JunimoServer.Services.HostAutomation.HostBot)
[app ] [19:58:28 TRACE JunimoServer] MessageInterceptorsService (JunimoServer.Services.MessageInterceptors.MessageInterceptorsService)
[app ] [19:58:28 TRACE JunimoServer] NetworkTweaker (JunimoServer.Services.NetworkTweaks.NetworkTweaker)
[app ] [19:58:28 TRACE JunimoServer] PersistentOptions (JunimoServer.Services.PersistentOption.PersistentOptions)
[app ] [19:58:28 TRACE JunimoServer] RoleService (JunimoServer.Services.Roles.RoleService)
[app ] [19:58:28 TRACE JunimoServer] SecurityService (JunimoServer.Services.CabinManager.SecurityService)
[app ] [19:58:28 TRACE JunimoServer] ServerOptimizer (JunimoServer.Services.ServerOptim.ServerOptimizer)
[app ] [19:58:28 INFO JunimoServer] Loaded 17 services:
[app ] [19:58:28 INFO JunimoServer] AlwaysOnServer
[app ] [19:58:28 INFO JunimoServer] CabinManagerService
[app ] [19:58:28 INFO JunimoServer] ChatCommandsService
[app ] [19:58:28 INFO JunimoServer] CropSaver
[app ] [19:58:28 INFO JunimoServer] DesyncKicker
[app ] [19:58:28 INFO JunimoServer] FarmhandSenderService
[app ] [19:58:28 INFO JunimoServer] GalaxyAuthService
[app ] [19:58:28 INFO JunimoServer] GameCreatorService
[app ] [19:58:28 INFO JunimoServer] GameLoaderService
[app ] [19:58:28 INFO JunimoServer] GameManagerService
[app ] [19:58:28 INFO JunimoServer] GameTweaker
[app ] [19:58:28 INFO JunimoServer] HostBot
[app ] [19:58:28 INFO JunimoServer] MessageInterceptorsService
[app ] [19:58:28 INFO JunimoServer] NetworkTweaker
[app ] [19:58:28 INFO JunimoServer] RoleService
[app ] [19:58:28 INFO JunimoServer] SecurityService
[app ] [19:58:28 INFO JunimoServer] ServerOptimizer
[app ] [19:58:28 INFO JunimoServer] Services loaded and ready!
[app ] [19:58:28 DEBUG SMAPI] Mods loaded and ready!
[app ] [19:58:28 TRACE Save Backup] No saves found.
[app ] �]0;SMAPI 4.1.10 - running Stardew Valley 1.6.15 with 3 mods�[19:58:29 TRACE game] setGameMode( 'titleScreenGameMode (0)' )
[app ] [19:58:29 INFO JunimoServer] Replacing 'SteamHelper' with 'GalaxyHelper'
[app ] [19:58:29 TRACE game] Instance_LoadContent() finished, elapsed = '00:00:01.9909323'
[app ] [19:58:29 INFO JunimoServer] Initializing GalaxySDK
[app ] [19:58:29 INFO JunimoServer] Signing into GalaxySDK with Steam ticket
[app ] [19:59:29 ERROR JunimoServer] Signing into GalaxySDK failed:
[app ] [19:59:29 ERROR JunimoServer] System.Exception: Node.js process timed out
[app ] at JunimoServer.Services.Auth.SteamAppTicketFetcher.GetTicket() in /src/mod/JunimoServer/Services/AuthService/SteamAppTicketFetcher.cs:line 48
[app ] at JunimoServer.Services.Auth.GalaxyAuthService.GetEncryptedAppTicketSteam() in /src/mod/JunimoServer/Services/AuthService/AuthService.cs:line 296
[app ] at JunimoServer.Services.Auth.GalaxyAuthService.SignIntoGalaxy() in /src/mod/JunimoServer/Services/AuthService/AuthService.cs:line 303
[app ] at JunimoServer.Services.Auth.GalaxyAuthService.GalaxyHelperInitialize_Prefix(GalaxyHelper __instance) in /src/mod/JunimoServer/Services/AuthService/AuthService.cs:line 136
[app ] [19:59:29 INFO SMAPI] Type 'help' for help, or 'help <cmd>' for a command's usage
[app ] [19:59:29 ERROR SMAPI] Critical app domain exception: System.IO.IOException: The process cannot access the file because it is being used by another process.
[app ] at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
[app ] at Interop.CheckIo(Int64 result, String path, Boolean isDirectory, Func`2 errorRewriter)
[app ] at System.ConsolePal.Read(SafeFileHandle fd, Span`1 buffer)
[app ] at System.ConsolePal.UnixConsoleStream.Read(Span`1 buffer)
[app ] at System.IO.ConsoleStream.Read(Byte[] buffer, Int32 offset, Int32 count)
[app ] at System.IO.StreamReader.ReadBuffer()
[app ] at System.IO.StreamReader.ReadLine()
[app ] at System.IO.SyncTextReader.ReadLine()
[app ] at System.Console.ReadLine()
[app ] at StardewModdingAPI.Framework.Logging.LogManager.<>c__DisplayClass11_0.<RunConsoleInputLoop>b__0() in /home/pathoschild/git/SMAPI/src/SMAPI/Framework/Logging/LogManager.cs:line 113
[app ] at System.Threading.Thread.StartHelper.Callback(Object state)
[app ] at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
[app ] --- End of stack trace from previous location ---
[app ] at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
[app ] at System.Threading.Thread.StartCallback()
[app ] Unhandled exception. System.IO.IOException: The process cannot access the file because it is being used by another process.
[app ] at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
[app ] at Interop.CheckIo(Int64 result, String path, Boolean isDirectory, Func`2 errorRewriter)
[app ] at System.ConsolePal.Read(SafeFileHandle fd, Span`1 buffer)
[app ] at System.ConsolePal.UnixConsoleStream.Read(Span`1 buffer)
[app ] at System.IO.ConsoleStream.Read(Byte[] buffer, Int32 offset, Int32 count)
[app ] at System.IO.StreamReader.ReadBuffer()
[app ] at System.IO.StreamReader.ReadLine()
[app ] at System.IO.SyncTextReader.ReadLine()
[app ] at System.Console.ReadLine()
[app ] at StardewModdingAPI.Framework.Logging.LogManager.<>c__DisplayClass11_0.<RunConsoleInputLoop>b__0() in /home/pathoschild/git/SMAPI/src/SMAPI/Framework/Logging/LogManager.cs:line 113
[app ] at System.Threading.Thread.StartHelper.Callback(Object state)
[app ] at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
[app ] --- End of stack trace from previous location ---
[app ] at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
[app ] at System.Threading.Thread.StartCallback()
[app ] [19:59:29 ERROR JunimoServer] Signing into GalaxySDK failed:
[app ] [19:59:29 ERROR JunimoServer] System.Exception: Node.js process timed out
[app ] at JunimoServer.Services.Auth.SteamAppTicketFetcher.GetTicket() in /src/mod/JunimoServer/Services/AuthService/SteamAppTicketFetcher.cs:line 48
[app ] at JunimoServer.Services.Auth.GalaxyAuthService.GetEncryptedAppTicketSteam() in /src/mod/JunimoServer/Services/AuthService/AuthService.cs:line 296
[app ] at JunimoServer.Services.Auth.GalaxyAuthService.SignIntoGalaxy() in /src/mod/JunimoServer/Services/AuthService/AuthService.cs:line 303
[app ] at JunimoServer.Services.Auth.GalaxyAuthService.GalaxyHelperInitialize_Prefix(GalaxyHelper __instance) in /src/mod/JunimoServer/Services/AuthService/AuthService.cs:line 136
[app ] [19:59:29 INFO SMAPI] Type 'help' for help, or 'help <cmd>' for a command's usage
[app ] [19:59:29 ERROR SMAPI] Critical app domain exception: System.IO.IOException: The process cannot access the file because it is being used by another process.
[app ] at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
[app ] at Interop.CheckIo(Int64 result, String path, Boolean isDirectory, Func`2 errorRewriter)
[app ] at System.ConsolePal.Read(SafeFileHandle fd, Span`1 buffer)
[app ] at System.ConsolePal.UnixConsoleStream.Read(Span`1 buffer)
[app ] at System.IO.ConsoleStream.Read(Byte[] buffer, Int32 offset, Int32 count)
[app ] at System.IO.StreamReader.ReadBuffer()
[app ] at System.IO.StreamReader.ReadLine()
[app ] at System.IO.SyncTextReader.ReadLine()
[app ] at System.Console.ReadLine()
[app ] at StardewModdingAPI.Framework.Logging.LogManager.<>c__DisplayClass11_0.<RunConsoleInputLoop>b__0() in /home/pathoschild/git/SMAPI/src/SMAPI/Framework/Logging/LogManager.cs:line 113
[app ] at System.Threading.Thread.StartHelper.Callback(Object state)
[app ] at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
[app ] --- End of stack trace from previous location ---
[app ] at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
[app ] at System.Threading.Thread.StartCallback()
[app ] Unhandled exception. System.IO.IOException: The process cannot access the file because it is being used by another process.
[app ] at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
[app ] at Interop.CheckIo(Int64 result, String path, Boolean isDirectory, Func`2 errorRewriter)
[app ] at System.ConsolePal.Read(SafeFileHandle fd, Span`1 buffer)
[app ] at System.ConsolePal.UnixConsoleStream.Read(Span`1 buffer)
[app ] at System.IO.ConsoleStream.Read(Byte[] buffer, Int32 offset, Int32 count)
[app ] at System.IO.StreamReader.ReadBuffer()
[app ] at System.IO.StreamReader.ReadLine()
[app ] at System.IO.SyncTextReader.ReadLine()
[app ] at System.Console.ReadLine()
[app ] at StardewModdingAPI.Framework.Logging.LogManager.<>c__DisplayClass11_0.<RunConsoleInputLoop>b__0() in /home/pathoschild/git/SMAPI/src/SMAPI/Framework/Logging/LogManager.cs:line 113
[app ] at System.Threading.Thread.StartHelper.Callback(Object state)
[app ] at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
[app ] --- End of stack trace from previous location ---
[app ] at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
[app ] at System.Threading.Thread.StartCallback()
[app ] Aborted (core dumped)
[app ] Aborted (core dumped)
Final checks
Describe the bug
When starting the JunimoServer Docker container, the GalaxySDK authentication process consistently times out after exactly 60 seconds when attempting to fetch a Steam app ticket via Node.js. This results in the server crashing with a core dump, preventing the server from starting successfully. The error manifests as "Node.js process timed out" followed by a console input file lock conflict.
Steps to reproduce
Clone the JunimoServer repository or use the provided Docker configuration
Create a .env file from .env.example with the following minimal configuration:
bash
STEAM_USER="..."
STEAM_PASS="..."
VNC_PASSWORD="..."
Use the following docker-compose.yml configuration:
yaml
services:
server:
image: sdvd/server:latest
stdin_open: true
tty: true
container_name: sdvd-server
ports:
- ${GAME_PORT:-24642}:24642/udp
- ${VNC_PORT:-5800}:5800
cap_add:
- SYS_TIME
volumes:
- game-files:/data/Stardew
- saves:/config/xdg/config/StardewValley
environment:
STEAM_USER: "${STEAM_USER}"
STEAM_PASS: "${STEAM_PASS}"
STEAM_GUARD_CODE: "${STEAM_GUARD_CODE:-}"
VNC_PASSWORD: "${VNC_PASSWORD:-}"
DISABLE_RENDERING: "${DISABLE_RENDERING:-true}"
restart: unless-stopped
volumes:
game-files:
saves:
Start the server: docker compose up -d
Check the logs: docker compose logs -f
Expected behavior
The server should successfully authenticate with GalaxySDK using the provided Steam credentials within a reasonable timeframe (under 60 seconds) and proceed to load the game server, allowing players to connect.
Additional context
Full logs:
Final checks