docker-minecraft-server
docker-minecraft-server copied to clipboard
Error installing Fabric launcher
Describe the problem
When trying to start a container (on the latest image at time of writing), I get the following error.
minecraft-server | [init] Running as uid=1000 gid=1000 with /data as 'drwxr-xr-x 27 1000 1000 864 Mar 6 13:26 /data'
minecraft-server | [init] Resolving type given FABRIC
minecraft-server | /start-deployFabric: line 45: 41 Killed mc-image-helper install-fabric-loader --results-file=${resultsFile} --minecraft-version="${VERSION}" --installer-version="${FABRIC_LAUNCHER_VERSION}" --loader-version="${FABRIC_LOADER_VERSION}"
minecraft-server | [init] [ERROR] Failed to installFabric launcher given 1.21.4, 1.0.1, 0.16.10
minecraft-server exited with code 1
This also happens when I do not specify launcher and loader version.
minecraft-server | [init] Running as uid=1000 gid=1000 with /data as 'drwxr-xr-x 27 1000 1000 864 Mar 6 13:26 /data'
minecraft-server | [init] Resolving type given FABRIC
minecraft-server | /start-deployFabric: line 45: 41 Killed mc-image-helper install-fabric-loader --results-file=${resultsFile} --minecraft-version="${VERSION}" --installer-version="${FABRIC_LAUNCHER_VERSION}" --loader-version="${FABRIC_LOADER_VERSION}"
minecraft-server | [init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST
minecraft-server exited with code 1
Another thing worth noting is that it always exits with code 0 on the first start attempt, and then code 1 on consecutive ones.
minecraft-server exited with code 0
...
minecraft-server exited with code 1
I though that this commit might help my issue and have tried changing the FABRIC_LAUNCHER_VERSION env var to FABRIC_LOADER_VERSION. These match a jar I have downloaded already at data/fabric/fabric-server-mc.1.21.4-loader.0.16.10-launcher.1.0.1.jar. This still did not work.
Are there any further steps I can take to resolve this, or logging that I can look at to identify the exact failure when trying to install? Thanks! I will include full debug logs below. Note that the other container names you see are just small player join notification and automatic restart scripts, and have been running without issue for months.
Container definition
services:
minecraft-server:
container_name: minecraft-server
image: itzg/minecraft-server
tty: true
stdin_open: true
environment:
TZ: America/New_York
EULA: "true"
TYPE: FABRIC
VERSION: 1.21.4
FABRIC_LAUNCHER_VERSION: 1.0.1
FABRIC_LOADER_VERSION: 0.16.10
MEMORY: 8G
JAVA_OPTS: "-Xms8G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 nogui"
ports:
- "25565:25565"
volumes:
- ~/Documents/Minecraft/fabric:/data
restart: always
deploy:
resources:
limits:
cpus: '2'
memory: '9G'
reservations:
cpus: '1'
memory: '2G'
Container logs
[+] Running 5/5
✔ query-service Built 0.0s
✔ restart-service Built 0.0s
✔ Container restart-service Created 0.0s
✔ Container query-service Created 0.0s
✔ Container minecraft-server Recreated 0.1s
Attaching to minecraft-server, query-service, restart-service
minecraft-server | + export HOME=/data
minecraft-server | + HOME=/data
minecraft-server | ++ id -u
minecraft-server | ++ id -g
minecraft-server | ++ ls -lnd /data
minecraft-server | + log 'Running as uid=1000 gid=1000 with /data as '\''drwxr-xr-x 27 1000 1000 864 Mar 6 13:26 /data'\'''
minecraft-server | + local oldState
minecraft-server | ++ shopt -po xtrace
minecraft-server | + oldState='set -o xtrace'
minecraft-server | + shopt -u -o xtrace
minecraft-server | [init] 2025-03-07 17:39:07-05:00 Running as uid=1000 gid=1000 with /data as 'drwxr-xr-x 27 1000 1000 864 Mar 6 13:26 /data'
minecraft-server | + '[' '!' -e /data/eula.txt ']'
minecraft-server | + isTrue false
minecraft-server | + case "${1,,}" in
minecraft-server | + return 1
minecraft-server | + isTrue true
minecraft-server | + case "${1,,}" in
minecraft-server | + return 0
minecraft-server | + set +x
minecraft-server | + isTrue false
minecraft-server | + case "${1,,}" in
minecraft-server | + return 1
minecraft-server | + isTrue false
minecraft-server | + case "${1,,}" in
minecraft-server | + return 1
minecraft-server | + [[ -n '' ]]
minecraft-server | + fixJavaPath
minecraft-server | + which java
minecraft-server | + cd /data
minecraft-server | + export DECLARED_TYPE=FABRIC
minecraft-server | + DECLARED_TYPE=FABRIC
minecraft-server | + export DECLARED_VERSION=1.21.4
minecraft-server | + DECLARED_VERSION=1.21.4
minecraft-server | + isTrue false
minecraft-server | + case "${1,,}" in
minecraft-server | + return 1
minecraft-server | + isTrue false
minecraft-server | + case "${1,,}" in
minecraft-server | + return 1
minecraft-server | + [[ -n '' ]]
minecraft-server | + [[ -n '' ]]
minecraft-server | + [[ -n '' ]]
minecraft-server | + [[ -n '' ]]
minecraft-server | + [[ -n '' ]]
minecraft-server | + : ''
minecraft-server | + [[ -n '' ]]
minecraft-server | + case "${TYPE^^}" in
minecraft-server | + [[ -n '' ]]
minecraft-server | + log 'Resolving type given FABRIC'
minecraft-server | + local oldState
minecraft-server | ++ shopt -po xtrace
minecraft-server | + oldState='set -o xtrace'
minecraft-server | + shopt -u -o xtrace
minecraft-server | [init] 2025-03-07 17:39:07-05:00 Resolving type given FABRIC
minecraft-server | + case "${TYPE^^}" in
minecraft-server | + exec /start-deployFabric
minecraft-server | + [[ -n '' ]]
minecraft-server | + [[ -n '' ]]
minecraft-server | + mc-image-helper install-fabric-loader --results-file=/data/.install-fabric.env --minecraft-version=1.21.4 --installer-version=1.0.1 --loader-version=0.16.10
minecraft-server | /start-deployFabric: line 45: 43 Killed mc-image-helper install-fabric-loader --results-file=${resultsFile} --minecraft-version="${VERSION}" --installer-version="${FABRIC_LAUNCHER_VERSION}" --loader-version="${FABRIC_LOADER_VERSION}"
minecraft-server | + logError 'Failed to installFabric launcher given 1.21.4, 1.0.1, 0.16.10'
minecraft-server | + isDebugging
minecraft-server | + isTrue true
minecraft-server | + case "${1,,}" in
minecraft-server | + return 0
minecraft-server | + set +x
minecraft-server | [init] 2025-03-07 17:39:15-05:00 [ERROR] Failed to installFabric launcher given 1.21.4, 1.0.1, 0.16.10
minecraft-server | + exit 1
minecraft-server exited with code 0
I am not able to recreate this issue, so there's not much I can do.
From your logs it looks like the OS or kernel is killing the helper tool, note the "41 Killed" at the end of the line
/start-deployFabric: line 45: 41 Killed
Perhaps check your kernel or system logs for issues. Also make sure you have free memory where the docker container is running.
Try deleting the manually downloaded jar. This "| [init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST " for me.
Try deleting the manually downloaded jar. This "| [init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST " for me.
Deleting the .jars contained within the .fabric directory (and sub folders) seemed to resolve it for me.
Try deleting the manually downloaded jar. This "| [init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST " for me.
Deleting the .jars contained within the .fabric directory (and sub folders) seemed to resolve it for me.
This also worked for me. I deleting the .cache and .fabric directories.
I am having this issue in a k3s pod run from a helm chart. values.yaml
minecraft:
minecraftServer:
eula: 'TRUE'
type: 'FABRIC'
difficulty: easy
version: '1.21.4'
memory: 4096M
forceGameMode: true
generateStructures: true
allowNether: true
spawnAnimals: true
spawnMonsters: true
spawnNPCs: true
gameMode: survival
levelType: default
onlineMode: false
enforceSecureProfile: false
worldSaveName: skyblock
modrinth:
projects:
- standard-skyblock
- sky-void-additions
- skyblock-advancements
downloadDependencies: required
Output from ArgoCD.
[init] Running as uid=1000 gid=3000 with /data as 'drwxrwsrwx. 4 0 3000 136 May 12 05:49 /data'
[init] Image info: buildtime=2025-05-10T16:25:18.623Z,version=java21,revision=5fe65a68c30b7678381930a3fad798386800df43
[init] Resolving type given FABRIC
[mc-image-helper] 05:55:26.735 ERROR : 'install-fabric-loader' command failed. Version is 1.41.9
reactor.core.Exceptions$RetryExhaustedException: Retries exhausted: 5/5
at reactor.core.Exceptions.retryExhausted(Exceptions.java:308)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
*__checkpoint ⇢ downloadLauncher
*__checkpoint ⇢ downloadResolvedLauncher
Original Stack Trace:
at reactor.core.Exceptions.retryExhausted(Exceptions.java:308)
at reactor.util.retry.RetryBackoffSpec.lambda$static$0(RetryBackoffSpec.java:68)
at reactor.util.retry.RetryBackoffSpec.lambda$generateCompanion$4(RetryBackoffSpec.java:608)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onNext(FluxConcatMapNoPrefetch.java:183)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
at reactor.core.publisher.SinkManyEmitterProcessor.drain(SinkManyEmitterProcessor.java:476)
at reactor.core.publisher.SinkManyEmitterProcessor.tryEmitNext(SinkManyEmitterProcessor.java:273)
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:194)
at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onError(MonoSubscribeOn.java:152)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119)
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onError(FluxDefaultIfEmpty.java:156)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315)
at reactor.core.publisher.MonoTakeLastOne$TakeLastOneSubscriber.onError(MonoTakeLastOne.java:134)
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onError(MonoFlatMapMany.java:256)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119)
at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onError(FluxMapFuseable.java:340)
at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onError(FluxHide.java:142)
at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onError(MonoSubscribeOn.java:152)
at reactor.core.publisher.MonoStreamCollector$StreamCollectorSubscriber.onError(MonoStreamCollector.java:149)
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:846)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:612)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:592)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onError(FluxFlatMap.java:455)
at reactor.core.publisher.FluxHandle$HandleSubscriber.onError(FluxHandle.java:213)
at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onError(FluxMap.java:265)
at reactor.netty.channel.FluxReceive.terminateReceiver(FluxReceive.java:478)
at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:273)
at reactor.netty.channel.FluxReceive.onInboundError(FluxReceive.java:466)
at reactor.netty.channel.ChannelOperations.onInboundError(ChannelOperations.java:526)
at reactor.netty.http.client.HttpClientOperations.onInboundClose(HttpClientOperations.java:344)
at reactor.netty.channel.ChannelOperationsHandler.channelInactive(ChannelOperationsHandler.java:73)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)
at io.netty.handler.timeout.IdleStateHandler.channelInactive(IdleStateHandler.java:280)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelInactive(CombinedChannelDuplexHandler.java:418)
at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:412)
at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:377)
at io.netty.handler.codec.http.HttpClientCodec$Decoder.channelInactive(HttpClientCodec.java:410)
at io.netty.channel.CombinedChannelDuplexHandler.channelInactive(CombinedChannelDuplexHandler.java:221)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:412)
at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:377)
at io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:1191)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1352)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:301)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281)
at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:850)
at io.netty.channel.AbstractChannel$AbstractUnsafe$7.run(AbstractChannel.java:811)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:405)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Unknown Source)
Suppressed: java.lang.Exception: #block terminated with an error
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:104)
at reactor.core.publisher.Mono.block(Mono.java:1779)
at me.itzg.helpers.fabric.FabricLauncherInstaller.installUsingVersions(FabricLauncherInstaller.java:71)
at me.itzg.helpers.fabric.InstallFabricLoaderCommand.call(InstallFabricLoaderCommand.java:97)
at me.itzg.helpers.fabric.InstallFabricLoaderCommand.call(InstallFabricLoaderCommand.java:16)
at picocli.CommandLine.executeUserObject(CommandLine.java:2031)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2469)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2423)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2425)
at picocli.CommandLine.execute(CommandLine.java:2174)
at me.itzg.helpers.McImageHelper.main(McImageHelper.java:178)
Caused by: reactor.netty.http.client.PrematureCloseException: Connection prematurely closed DURING response
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
*__checkpoint ⇢ Fetching file into directory
*__checkpoint ⇢ Fetch HEAD of requested file
Original Stack Trace:
[init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST (B
Pod is ephemeral at the moment and deleting the deployment and redeploying doesn't seem to do anything.
(BTW My kids [9yo, 6yo] don't know this, but they love your work 🥇 )
I am having this issue in a k3s pod run from a helm chart. values.yaml
minecraft: minecraftServer: eula: 'TRUE' type: 'FABRIC' difficulty: easy version: '1.21.4' memory: 4096M forceGameMode: true generateStructures: true allowNether: true spawnAnimals: true spawnMonsters: true spawnNPCs: true gameMode: survival levelType: default onlineMode: false enforceSecureProfile: false worldSaveName: skyblock modrinth: projects: - standard-skyblock - sky-void-additions - skyblock-advancements downloadDependencies: requiredOutput from ArgoCD.
[init] Running as uid=1000 gid=3000 with /data as 'drwxrwsrwx. 4 0 3000 136 May 12 05:49 /data' [init] Image info: buildtime=2025-05-10T16:25:18.623Z,version=java21,revision=5fe65a68c30b7678381930a3fad798386800df43 [init] Resolving type given FABRIC [mc-image-helper] 05:55:26.735 ERROR : 'install-fabric-loader' command failed. Version is 1.41.9 reactor.core.Exceptions$RetryExhaustedException: Retries exhausted: 5/5 at reactor.core.Exceptions.retryExhausted(Exceptions.java:308) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s): *__checkpoint ⇢ downloadLauncher *__checkpoint ⇢ downloadResolvedLauncher Original Stack Trace: at reactor.core.Exceptions.retryExhausted(Exceptions.java:308) at reactor.util.retry.RetryBackoffSpec.lambda$static$0(RetryBackoffSpec.java:68) at reactor.util.retry.RetryBackoffSpec.lambda$generateCompanion$4(RetryBackoffSpec.java:608) at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onNext(FluxConcatMapNoPrefetch.java:183) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.SinkManyEmitterProcessor.drain(SinkManyEmitterProcessor.java:476) at reactor.core.publisher.SinkManyEmitterProcessor.tryEmitNext(SinkManyEmitterProcessor.java:273) at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100) at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27) at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:194) at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onError(MonoSubscribeOn.java:152) at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119) at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onError(FluxDefaultIfEmpty.java:156) at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315) at reactor.core.publisher.MonoTakeLastOne$TakeLastOneSubscriber.onError(MonoTakeLastOne.java:134) at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onError(MonoFlatMapMany.java:256) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onError(FluxMapFuseable.java:340) at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onError(FluxHide.java:142) at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onError(MonoSubscribeOn.java:152) at reactor.core.publisher.MonoStreamCollector$StreamCollectorSubscriber.onError(MonoStreamCollector.java:149) at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222) at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:846) at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:612) at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:592) at reactor.core.publisher.FluxFlatMap$FlatMapMain.onError(FluxFlatMap.java:455) at reactor.core.publisher.FluxHandle$HandleSubscriber.onError(FluxHandle.java:213) at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onError(FluxMap.java:265) at reactor.netty.channel.FluxReceive.terminateReceiver(FluxReceive.java:478) at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:273) at reactor.netty.channel.FluxReceive.onInboundError(FluxReceive.java:466) at reactor.netty.channel.ChannelOperations.onInboundError(ChannelOperations.java:526) at reactor.netty.http.client.HttpClientOperations.onInboundClose(HttpClientOperations.java:344) at reactor.netty.channel.ChannelOperationsHandler.channelInactive(ChannelOperationsHandler.java:73) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274) at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81) at io.netty.handler.timeout.IdleStateHandler.channelInactive(IdleStateHandler.java:280) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelInactive(CombinedChannelDuplexHandler.java:418) at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:412) at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:377) at io.netty.handler.codec.http.HttpClientCodec$Decoder.channelInactive(HttpClientCodec.java:410) at io.netty.channel.CombinedChannelDuplexHandler.channelInactive(CombinedChannelDuplexHandler.java:221) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274) at io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:412) at io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:377) at io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:1191) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:303) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:274) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1352) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:301) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:281) at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:850) at io.netty.channel.AbstractChannel$AbstractUnsafe$7.run(AbstractChannel.java:811) at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:405) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Unknown Source) Suppressed: java.lang.Exception: #block terminated with an error at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:104) at reactor.core.publisher.Mono.block(Mono.java:1779) at me.itzg.helpers.fabric.FabricLauncherInstaller.installUsingVersions(FabricLauncherInstaller.java:71) at me.itzg.helpers.fabric.InstallFabricLoaderCommand.call(InstallFabricLoaderCommand.java:97) at me.itzg.helpers.fabric.InstallFabricLoaderCommand.call(InstallFabricLoaderCommand.java:16) at picocli.CommandLine.executeUserObject(CommandLine.java:2031) at picocli.CommandLine.access$1500(CommandLine.java:148) at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2469) at picocli.CommandLine$RunLast.handle(CommandLine.java:2461) at picocli.CommandLine$RunLast.handle(CommandLine.java:2423) at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277) at picocli.CommandLine$RunLast.execute(CommandLine.java:2425) at picocli.CommandLine.execute(CommandLine.java:2174) at me.itzg.helpers.McImageHelper.main(McImageHelper.java:178) Caused by: reactor.netty.http.client.PrematureCloseException: Connection prematurely closed DURING response Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s): *__checkpoint ⇢ Fetching file into directory *__checkpoint ⇢ Fetch HEAD of requested file Original Stack Trace: [init] [ERROR] Failed to installFabric launcher given 1.21.4, LATEST, LATEST �(BPod is ephemeral at the moment and deleting the deployment and redeploying doesn't seem to do anything.
(BTW My kids [9yo, 6yo] don't know this, but they love your work 🥇 )
I got this working by explicitly defining fabricLoaderVersion: '0.16.14'
Ran into this error with the below configuration:
services:
mc:
image: itzg/minecraft-server
container_name: minecraft-skyblock-2
environment:
EULA: "true"
TZ: "US/Central"
PATH: "/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
JAVA_HOME: "/opt/java/openjdk"
LANG: "en_US.UTF-8"
LANGUAGE: "en_US:en"
LC_ALL: "en_US.UTF-8"
JAVA_VERSION: "jdk-17.0.4.1+1"
MEMORY: '8G'
MAX_MEMORY: '16G'
TYPE: "FABRIC"
VERSION: "1.21.4"
UID: "1000"
GID: "1000"
RCON_PASSWORD: ${RCON_PASSWORD}
MODRINTH_ALLOWED_VERSION_TYPE: "beta"
MODRINTH_PROJECTS: carpet,syncmatica,bluemap,fabric-api,ferrite-core,krypton,lithium,no-chat-reports,servercore,spark,simple-voice-chat,carpetskyadditions-reborn,cloth-config
USE_AIKAR_FLAGS: true
ports:
- "48990:25565"
- "22380:8100"
- "24457:24457/udp"
volumes:
- /home/swishkin/docker/minecraft-skyblock-2/data:/data
stdin_open: true
tty: true
restart: unless-stopped
backup:
image: itzg/mc-backup
container_name: mc-sb2-backup
environment:
TZ: US/Central
RCON_HOST: mc
RCON_PASSWORD: ${RCON_PASSWORD}
BACKUP_INTERVAL: 6h
BACKUP_METHOD: restic
INITIAL_DELAY: 1m
RESTIC_PASSWORD: ${RESTIC_PASSWORD}
RESTIC_REPOSITORY: /backups
PRUNE_RESTIC_RETENTION: "--keep-daily 4 --keep-weekly 5"
volumes:
- /home/swishkin/docker/minecraft-skyblock-2/data:/data:ro
- /home/swishkin/docker/minecraft-skyblock-2/backups:/backups
Adding FABRIC_LOADER_VERSION: 0.16.14 initially gave me the same result, but after several attempts, it succeeded.
[init] Running as uid=1000 gid=1000 with /data as 'drwxr-xr-x 1 1000 1000 184 Jun 1 02:15 /data'
[init] Image info: buildtime=2025-05-31T14:44:45.370Z,version=java21,revision=e6cd7116b63c7d146702a726da66ea1c7dcb3c0b
[init] Resolving type given FABRIC
[mc-image-helper] 21:18:07.603 ERROR : 'install-fabric-loader' command failed. Version is 1.41.9
reactor.core.Exceptions$RetryExhaustedException: Retries exhausted: 5/5
at reactor.core.Exceptions.retryExhausted(Exceptions.java:308)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
*__checkpoint ⇢ downloadLauncher
*__checkpoint ⇢ downloadResolvedLauncher
Original Stack Trace:
at reactor.core.Exceptions.retryExhausted(Exceptions.java:308)
at reactor.util.retry.RetryBackoffSpec.lambda$static$0(RetryBackoffSpec.java:68)
at reactor.util.retry.RetryBackoffSpec.lambda$generateCompanion$4(RetryBackoffSpec.java:608)
at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.onNext(FluxConcatMapNoPrefetch.java:183)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
at reactor.core.publisher.SinkManyEmitterProcessor.drain(SinkManyEmitterProcessor.java:476)
at reactor.core.publisher.SinkManyEmitterProcessor.tryEmitNext(SinkManyEmitterProcessor.java:273)
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:194)
at reactor.core.publisher.MonoSubscribeOn$SubscribeOnSubscriber.onError(MonoSubscribeOn.java:152)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119)
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onError(FluxDefaultIfEmpty.java:156)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315)
at reactor.core.publisher.MonoTakeLastOne$TakeLastOneSubscriber.onError(MonoTakeLastOne.java:134)
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onError(MonoFlatMapMany.java:256)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119)
Not sure if this means defining the loader version makes it succeed or not.
It seems to be a sporadic issue with their download endpoint. I have tried various adjustments with connection timeouts but still see these issues randomly during tests.
This issue is stale because it has been open 30 days with no activity. Please add a comment describing the reason to keep this issue open.