🧰 Troubleshooting - zhliau/fika-headless-docker GitHub Wiki

Here are some commonly encountered scenarios and how to solve them.

Error loading SPTCustomPlugin

dedi  | [Info   :RequestHandler] [REQUEST]: /singleplayer/bosstypes
dedi  | [Error  :SPT.Custom] A PATCH IN SPTCustomPlugin FAILED. SUBSEQUENT PATCHES HAVE NOT LOADED
dedi  | [Error  :SPT.Custom] SPTCustomPlugin: System.TypeInitializationException: The type initializer for 'SPT.Custom.Patches.CustomAiPatch' threw an exception. ---> System.AggregateException: One or more errors occurred. (Array cannot be null.
dedi  | Parameter name: bytes) ---> System.ArgumentNullException: Array cannot be null.

If you see something like the above error, this means the first request the client attempted to make to the SPT Server failed. This is most commonly due to a wrongly configured SERVER_URL value. This value needs to be set to an IP or hostname that can be reached from within the container.

  • Do not set SERVER_URL to 127.0.0.1/localhost. The loopback is not what you'd expect in the context of the container.
  • Similarly, setting this to your server's local IP may not work, since the container may not have access to the docker host's network stack.
  • If you are running the SPT server from the same docker-compose file, set SERVER_URL to the exact name of the SPT server service.
  • If your SPT server is running on a different machine than the headless container, you can try setting this value to the public facing IP/hostname of the server host

Cannot connect to dedicated client raid. When hosting, players receive a popup saying Unable to connect to server.

This indicates a connectivity issue. Make sure you have everything completed in this checklist

  • The container is running with a Docker port forward rule forwarding 25565 UDP to the container.
  • If you are connecting via port forwarding, port 25565 is forwarded from your router to the machine hosting this docker container.
  • If you are using a VPN, the dedicated client's com.fika.core.cfg has the VPN IP of the docker host machine set as the Force IP value.

Container immediately exits

Crashing with stacktrace in container, permissions errors, wine unable to find EscapeFromTarkov.exe, or wine throwing a page fault on read access to 0000000000000000 exception?

  • If you are using Corter-ModSync to keep plugin files up to date, make sure you set the USE_MODSYNC env var to true or the plugin updater will not be able to run properly and the container will keep exiting!
  • Make sure you do not have an invalid plugin in the Dedicated client's plugins folder. You can see the list of invalid plugins here
  • Double check that you have both the Fika.Core.dll and Fika.Dedicated.dll plugins in the client's BepInEx/plugins folder! The game will crash in the container if you don't have both plugins!
  • Check your docker logs output. Maybe you haven't mounted your FIKA client directory properly? Verify the contents of the Fika Client directory to make sure all expected files are there. You must mount a working copy of the Fika client to /opt/tarkov.
  • Double check that your file permissions for the Fika client directory and its contents are correct. The container runs as the user root, so it should be able to read any mounted files as long as you don't have anything unusual with your file permissions.
  • If you have SELinux enabled on the host, the container may not be able to read the mounted directories unless you provide the :z option to re-label the mount with the correct SELinux context. Be VERY careful with this option! I will not be responsible for anything that happens if you choose to do this.
  • Make sure your Fika client files have the winhttp.dll in the root folder. This is required for any plugins (even SPT) to run.

Stuck right after BepInEx preloader finished

fika_dedi  | [Message:   BepInEx] Preloader finished
fika_dedi  | (Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 39)
fika_dedi  |
fika_dedi  | Fallback handler could not load library Z:/opt/tarkov/EscapeFromTarkov_Data/Mono/data-00007D86E24EA790.dll
  • Double check your server is reachable at whatever you set SERVER_URL to. If the client can't reach the backend, it tends to hang here.
  • If you are using ProxMox to spin up a VM to run this image, make sure nested virtualization is enabled.
  • Double check that you have both the Fika.Core.dll and Fika.Dedicated.dll plugins in the client's BepInEx/plugins folder! The game will crash in the container if you don't have both plugins!
  • Ensure your server contains a profile json file with filename matching the PROFILE_ID you provided to the container

Crash with assertion in virtual.c

../src-wine/dlls/ntdll/unix/virtual.c:1907: create_view: Assertion `!((UINT_PTR)base & page_mask)' failed.

If the dedicated client container crashes with this error, this usually means your max memory map count is too low.

  • Set the value higher and then try restarting the dedicated client

    sudo sysctl -w vm.max_map_count=2147483642

    Make this persist between reboots by creating a file /etc/sysctl.d/80-vm-mmax.conf with the following contents:

    vm.max_map_count = 2147483642
    

Container stalls at wine: RLIMIT_NICE is <=20

This happens sometimes on first boot or when the container is force-recreated e.g. by docker-compose up --force-recreate. This is because wine needs to run wineboot on container initialization.

  • Just wait. after roughly 60s, the client will resume starting normally

My container memory usage keeps going up until I run out of memory

  • Try setting the AUTO_RESTART_ON_RAID_END env var to true, to have the client restart itself after each raid is completed and all players have extracted. This should effectively reset container memory usage back to the ~3Gb required on first boot, after each raid.
  • EFT is extremely memory hungry, if you are running out of memory while in raid, try to remove some mods that may be memory intensive to see if memory usage improves.
  • There may be no better solution than to simply add more RAM to the docker host.

Server output shows Cannot read properties of undefined (reading 'info')

  • This usually means your dedicated profile didn't generate properly. You can try deleting the dedicated profile and restarting the server to regenerate a new profile
    • MAKE ABSOLUTELY SURE IT'S THE DEDICATED PROFILE. Its username will start with dedicated_ with password fika-dedicated

I'm using ESYNC, but my client crashes

  • Increase your system file descriptor limit. See this doc for more information.

After loading plugins, SPT.Custom throws an error

The type initializer for 'SPT.Custom.Patches.EasyAssetsPatch' threw an exception

  • Try running the client and getting to the main menu before using/copying the EFT client files to the docker host. This usually means the client has not been run before.