vexdev/amarr

It doesn't work at all

adocampo opened this issue · 19 comments

Hello,

I'm having issues with this docker. First, if I use the example on amarr's README, it fails with the following message

validating /data/.docker/testing/amarr/docker-compose.yml: (root) Additional property amarr is not allowed

So, my docker-compose finally looks like this:

---
services:
  amarr:
    image: vexdev/amarr:latest
    container_name: amarr
    networks:
      services:
        ipv4_address: 172.28.0.84  <-- I use static IP assignation
    environment:
      - AMULE_HOST=172.28.0.21 <-- this is the amule docker IP
      - AMULE_PORT=4711
      - AMULE_PASSWORD=PASSWORD
    volumes:
      - ./config:/config
    ports:
      - 8082:8080
    restart: unless-stopped
networks:
  services:           <-- both amule and amarr are on the same "services" docker network
    external: true

With my docker, I can start amarr, with those logs

amarr  | 2024-02-29 12:23:45.337 [main] INFO  ktor.application - Autoreload is disabled because the development mode is off.
amarr  | 2024-02-29 12:23:45.598 [main] INFO  ktor.application - Application started in 0.315 seconds.
amarr  | 2024-02-29 12:23:45.803 [DefaultDispatcher-worker-2] INFO  ktor.application - Responding at http://0.0.0.0:8080

If I open http://192.168.1.100:8082/, a blank screen shows
image

As I already have something listening on the port 8080, I set up port 8082 to listen on host (as it didn't work, I stopped the other docker on port 8080 and relaunched amarr on the 8080, with the same result). Anyway, I've tried with curl, both in host at port 8082 and against amarr docker itself in port 8080

[root@samael amule]# curl http://192.168.1.100:8082
[root@samael amule]# curl http://172.28.0.84:8080
[root@samael amule]# 

I can ping from amarr docker to amule docker

root@2e32508b88d4:/# ping 172.28.0.21
PING 172.28.0.21 (172.28.0.21) 56(84) bytes of data.
64 bytes from 172.28.0.21: icmp_seq=1 ttl=64 time=0.089 ms
^C
--- 172.28.0.21 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms

I can also curl amule on port 4711

root@2e32508b88d4:/# curl http://172.28.0.21:4711 --output amule.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1488  100  1488    0     0   484k      0 --:--:-- --:--:-- --:--:--  484k
root@2e32508b88d4:/# gunzip amule.gz 
root@2e32508b88d4:/# cat amule 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
        <title>aMule - Control Panel - Login</title>

        <script language="JavaScript" type="text/javascript">
                function login_init()
                {
                        breakout_of_frame();

Besides, the /config directory is created by docker-compose, but completely empty.

Any help would be much appreciated!

My docker host is an Arch Linux 64bit, docker version 25.0.2, build 29cf629222

Just tried the container without specifying internal docker IPs

---
services:
  amarr:
    image: vexdev/amarr:latest
    container_name: amarr
    environment:
      - AMULE_HOST=192.168.1.100
      - AMULE_PORT=4711
      - AMULE_PASSWORD=PASSWORD
    volumes:
      - ./config:/config
    ports:
      - 8082:8080
    restart: unless-stopped

With the same result

Tried on other hosts, docker-compose on the README fails everywhere with the error:
validating docker-compose.yml: (root) Additional property amarr is not allowed

To make it start it I had to modify the compose file like this, but the same error as above: blank screen on the browser and no config file generated :|

version: '3.8'
services:
  amarr:
    image: vexdev/amarr:latest
    container_name: amarr
    environment:
      - AMULE_HOST=amule
      - AMULE_PORT=4711
      - AMULE_PASSWORD=password
    volumes:
      - /home/docker/amarr/config:/config
    ports:
      - 8080:8080

I think this was a wonderful idea, but I'm not sure if it's actively maintained anymore.

vexdev commented

Hello @adocampo, I'm sorry I'm trying to make this work with the limited time I have available.
As per your comments, I adjusted the readme to include the "services" section, which is indeed necessary.
Please note that there's no UI exposed by Amarr, therefore it's expected that you don't get any output from connecting through http. Have you tried following the configuration section of the readme? With what result?

If you like we can have a quick to sort this out, ping me to find a common slot.

Just tried to add amarr as qBittorrent client as per instructions. No luck either
image
It's curious, because I could add it as an indexer
image
I don't know if the indexer test just does a simple curl and if it receives a 200, it gives an OK.

The thing is, even if container stars, I found strange it doesn't populate any file in config directory

@adocampo: I have exactly the same problem... Did you find a solution?

@adocampo @pavipollo Would you please provide the output log of Amarr? I assume you are using Radarr, the configuration seems correct (see my screenshot)

Could you also let me know which version of radarr you are using?

Screenshot 2024-07-06 at 23 50 01

@vexdev no, now it doesn't even start, or better said, it crashes after a few seconds...

[root@samael amarr]# docker-compose logs -f
amarr  | 2024-07-06 22:01:29.038 [main] INFO  ktor.application - Autoreload is disabled because the development mode is off.
amarr  | Exception in thread "main" java.net.NoRouteToHostException: No route to host
amarr  |        at java.base/sun.nio.ch.Net.connect0(Native Method)
amarr  |        at java.base/sun.nio.ch.Net.connect(Net.java:579)
amarr  |        at java.base/sun.nio.ch.Net.connect(Net.java:568)
amarr  |        at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
amarr  |        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
amarr  |        at java.base/java.net.Socket.connect(Socket.java:633)
amarr  |        at java.base/java.net.Socket.connect(Socket.java:583)
amarr  |        at java.base/java.net.Socket.<init>(Socket.java:507)
amarr  |        at java.base/java.net.Socket.<init>(Socket.java:287)
amarr  |        at jamule.AmuleConnection$1.invoke(AmuleConnection.kt:32)
amarr  |        at jamule.AmuleConnection$1.invoke(AmuleConnection.kt:32)
amarr  |        at jamule.AmuleConnection.<init>(AmuleConnection.kt:24)
amarr  |        at jamule.AmuleConnection.<init>(AmuleConnection.kt:32)
amarr  |        at jamule.AmuleClient.<init>(AmuleClient.kt:23)
amarr  |        at jamule.AmuleClient.<init>(AmuleClient.kt:16)
amarr  |        at amarr.AppKt.buildClient(App.kt:83)
amarr  |        at amarr.AppKt.app(App.kt:49)
amarr  |        at amarr.AppKt$main$1.invoke(App.kt:42)
amarr  |        at amarr.AppKt$main$1.invoke(App.kt:39)
amarr  |        at io.ktor.server.engine.internal.CallableUtilsKt.executeModuleFunction(CallableUtils.kt:51)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$launchModuleByName$1.invoke(ApplicationEngineEnvironmentReloading.kt:332)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$launchModuleByName$1.invoke(ApplicationEngineEnvironmentReloading.kt:331)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.avoidingDoubleStartupFor(ApplicationEngineEnvironmentReloading.kt:356)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.launchModuleByName(ApplicationEngineEnvironmentReloading.kt:331)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.access$launchModuleByName(ApplicationEngineEnvironmentReloading.kt:32)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1.invoke(ApplicationEngineEnvironmentReloading.kt:319)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1.invoke(ApplicationEngineEnvironmentReloading.kt:310)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.avoidingDoubleStartup(ApplicationEngineEnvironmentReloading.kt:338)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.instantiateAndConfigureApplication(ApplicationEngineEnvironmentReloading.kt:310)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.createApplication(ApplicationEngineEnvironmentReloading.kt:150)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.start(ApplicationEngineEnvironmentReloading.kt:277)
amarr  |        at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:216)
amarr  |        at amarr.AppKt.main(App.kt:43)
amarr  |        at amarr.AppKt.main(App.kt)
amarr  | 2024-07-06 22:01:35.738 [main] INFO  ktor.application - Autoreload is disabled because the development mode is off.
amarr  | Exception in thread "main" java.net.NoRouteToHostException: No route to host
amarr  |        at java.base/sun.nio.ch.Net.connect0(Native Method)
amarr  |        at java.base/sun.nio.ch.Net.connect(Net.java:579)
amarr  |        at java.base/sun.nio.ch.Net.connect(Net.java:568)
amarr  |        at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588)
amarr  |        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
amarr  |        at java.base/java.net.Socket.connect(Socket.java:633)
amarr  |        at java.base/java.net.Socket.connect(Socket.java:583)
amarr  |        at java.base/java.net.Socket.<init>(Socket.java:507)
amarr  |        at java.base/java.net.Socket.<init>(Socket.java:287)
amarr  |        at jamule.AmuleConnection$1.invoke(AmuleConnection.kt:32)
amarr  |        at jamule.AmuleConnection$1.invoke(AmuleConnection.kt:32)
amarr  |        at jamule.AmuleConnection.<init>(AmuleConnection.kt:24)
amarr  |        at jamule.AmuleConnection.<init>(AmuleConnection.kt:32)
amarr  |        at jamule.AmuleClient.<init>(AmuleClient.kt:23)
amarr  |        at jamule.AmuleClient.<init>(AmuleClient.kt:16)
amarr  |        at amarr.AppKt.buildClient(App.kt:83)
amarr  |        at amarr.AppKt.app(App.kt:49)
amarr  |        at amarr.AppKt$main$1.invoke(App.kt:42)
amarr  |        at amarr.AppKt$main$1.invoke(App.kt:39)
amarr  |        at io.ktor.server.engine.internal.CallableUtilsKt.executeModuleFunction(CallableUtils.kt:51)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$launchModuleByName$1.invoke(ApplicationEngineEnvironmentReloading.kt:332)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$launchModuleByName$1.invoke(ApplicationEngineEnvironmentReloading.kt:331)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.avoidingDoubleStartupFor(ApplicationEngineEnvironmentReloading.kt:356)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.launchModuleByName(ApplicationEngineEnvironmentReloading.kt:331)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.access$launchModuleByName(ApplicationEngineEnvironmentReloading.kt:32)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1.invoke(ApplicationEngineEnvironmentReloading.kt:319)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1.invoke(ApplicationEngineEnvironmentReloading.kt:310)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.avoidingDoubleStartup(ApplicationEngineEnvironmentReloading.kt:338)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.instantiateAndConfigureApplication(ApplicationEngineEnvironmentReloading.kt:310)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.createApplication(ApplicationEngineEnvironmentReloading.kt:150)
amarr  |        at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.start(ApplicationEngineEnvironmentReloading.kt:277)
amarr  |        at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:216)
amarr  |        at amarr.AppKt.main(App.kt:43)
amarr  |        at amarr.AppKt.main(App.kt)
amarr exited with code 0

Sorry, one of my docker-compose files didn't started, this one started:

---
services:
  amarr:
    image: vexdev/amarr:latest
    container_name: amarr
    environment:
      - AMULE_HOST=192.168.1.100
      - AMULE_PORT=4711
      - AMULE_PASSWORD=PASSWORD
    volumes:
      - ./config:/config
    ports:
      - 8082:8080
    restart: unless-stopped

logs

# docker-compose logs -f
amarr  | 2024-07-06 22:05:08.705 [main] INFO  ktor.application - Autoreload is disabled because the development mode is off.
amarr  | 2024-07-06 22:05:08.951 [main] INFO  ktor.application - Application started in 0.3 seconds.
amarr  | 2024-07-06 22:05:09.133 [DefaultDispatcher-worker-1] INFO  ktor.application - Responding at http://0.0.0.0:8080

Sonarr version: 4.0.2.1183
Radarr version: 5.6.0.8846

@adocampo Ok so I just setup the exact same version of radarr you have, and I have no issue connecting, in fact I can only have the same result you have when I'm connecting to a wrong port.
Could you please open in browser or with curl from the same machine which is running your radarr the following url?
http://192.168.1.100:8082/api/v2/app/webapiVersion

What do you get?

If you're running radarr in docker please do the following (Assuming you named the container "radarr"):

docker exec -ti radarr bash
curl http://192.168.1.100:8082/api/v2/app/webapiVersion

And paste the output

image

# docker exec -ti radarr bash
root@3438b3595529:/# curl http://192.168.1.100:8082/api/v2/app/webapiVersion
2.8.19root@3438b3595529:/# 

client fails to be added both in sonarr as in radarr
image

Could you add the following environment variable to amarr in your docker-compose?
AMARR_LOG_LEVEL=DEBUG

Then you can re-run docker compose up, try to setup the connection in either radarr or sonarr and after it fails send here the output log of amarr.

As it's taking a while maybe if I cannot figure it out from this log, we could discuss it on discord ( https://discord.gg/Xks5CtCGGM )

amarr  | 2024-07-07 07:52:45.535 [main] INFO  ktor.application - Application started in 0.364 seconds.
amarr  | 2024-07-07 07:52:45.536 [main] DEBUG ktor.application - Application started: io.ktor.server.application.Application@4e31276e
amarr  | 2024-07-07 07:52:45.752 [DefaultDispatcher-worker-1] INFO  ktor.application - Responding at http://0.0.0.0:8080
amarr  | 2024-07-07 07:53:18.410 [eventLoopGroupProxy-4-1] DEBUG ktor.application - 200 OK: GET - /api/v2/app/webapiVersion in 58ms
amarr  | 2024-07-07 07:53:18.411 [eventLoopGroupProxy-4-2] DEBUG ktor.application - 200 OK: GET - /api/v2/app/webapiVersion in 8ms
amarr  | 2024-07-07 07:53:18.414 [eventLoopGroupProxy-4-3] DEBUG ktor.application - 200 OK: GET - /api/v2/app/webapiVersion in 0ms
amarr  | 2024-07-07 07:53:18.879 [eventLoopGroupProxy-4-4] DEBUG ktor.application - 200 OK: GET - /api/v2/app/preferences in 452ms
amarr  | 2024-07-07 07:53:18.892 [eventLoopGroupProxy-4-5] DEBUG ktor.application - 200 OK: GET - /api/v2/app/webapiVersion in 2ms
amarr  | 2024-07-07 07:53:18.896 [eventLoopGroupProxy-4-6] DEBUG ktor.application - 200 OK: GET - /api/v2/app/webapiVersion in 1ms
amarr  | 2024-07-07 07:53:18.903 [eventLoopGroupProxy-4-7] DEBUG ktor.application - 200 OK: GET - /api/v2/app/webapiVersion in 1ms
amarr  | 2024-07-07 07:53:19.033 [eventLoopGroupProxy-4-8] DEBUG ktor.application - 200 OK: GET - /api/v2/torrents/categories in 124ms
amarr  | 2024-07-07 07:53:19.040 [eventLoopGroupProxy-4-1] INFO  ktor.application - Getting download queue...
amarr  | 2024-07-07 07:53:19.041 [eventLoopGroupProxy-4-1] INFO  ktor.application - Reconnecting...
amarr  | 2024-07-07 07:53:19.045 [eventLoopGroupProxy-4-1] INFO  ktor.application - Authenticating...
amarr  | 2024-07-07 07:53:19.060 [eventLoopGroupProxy-4-1] DEBUG ktor.application - Writing packet...
amarr  | 2024-07-07 07:53:19.065 [eventLoopGroupProxy-4-1] DEBUG ktor.application - Parsing packet...
amarr  | 2024-07-07 07:53:19.066 [eventLoopGroupProxy-4-1] DEBUG ktor.application - Parsing transport layer...
amarr  | 2024-07-07 07:53:19.066 [eventLoopGroupProxy-4-1] DEBUG ktor.application - Parsing flags...
amarr  | 2024-07-07 07:53:19.085 [eventLoopGroupProxy-4-1] ERROR ktor.application - Unhandled: GET - /api/v2/torrents/info
amarr  | java.lang.IndexOutOfBoundsException: toIndex (4) is greater than size (0).
amarr  |        at kotlin.collections.ArraysKt__ArraysJVMKt.copyOfRangeToIndexCheck(ArraysJVM.kt:49)
amarr  |        at kotlin.collections.ArraysKt___ArraysJvmKt.copyOfRange(_ArraysJvm.kt:1465)
amarr  |        at kotlin.collections.ArraysKt___ArraysKt.sliceArray(_Arrays.kt:4701)
amarr  |        at kotlin.collections.unsigned.UArraysKt___UArraysKt.sliceArray-c0bezYM(_UArrays.kt:2345)
amarr  |        at jamule.ec.EncodingKt.readUInt32-mbSTycY(Encoding.kt:45)
amarr  |        at jamule.ec.packet.PacketParser.readUInt-OGnWXxg(PacketParser.kt:103)
amarr  |        at jamule.ec.packet.PacketParser.parseFlags(PacketParser.kt:51)
amarr  |        at jamule.ec.packet.PacketParser.parseTransport(PacketParser.kt:26)
amarr  |        at jamule.ec.packet.PacketParser.parse(PacketParser.kt:20)
amarr  |        at jamule.AmuleConnection.sendRequestNoAuth(AmuleConnection.kt:73)
amarr  |        at jamule.AmuleConnection.authenticate(AmuleConnection.kt:85)
amarr  |        at jamule.AmuleConnection.reconnect(AmuleConnection.kt:52)
amarr  |        at jamule.AmuleConnection.sendRequest(AmuleConnection.kt:57)
amarr  |        at jamule.AmuleClient.getDownloadQueue-d1pmJ48(AmuleClient.kt:150)
amarr  |        at amarr.torrent.TorrentService.getTorrentInfo(TorrentService.kt:22)
amarr  |        at amarr.torrent.TorrentApiKt$torrentApi$1$7.invokeSuspend(TorrentApi.kt:54)
amarr  |        at amarr.torrent.TorrentApiKt$torrentApi$1$7.invoke(TorrentApi.kt)
amarr  |        at amarr.torrent.TorrentApiKt$torrentApi$1$7.invoke(TorrentApi.kt)
amarr  |        at io.ktor.server.routing.Route$buildPipeline$1$1.invokeSuspend(Route.kt:116)
amarr  |        at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt)
amarr  |        at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt)
amarr  |        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
amarr  |        at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
amarr  |        at io.ktor.util.pipeline.SuspendFunctionGun.execute$ktor_utils(SuspendFunctionGun.kt:98)
amarr  |        at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:77)
amarr  |        at io.ktor.server.routing.Routing$executeResult$$inlined$execute$1.invokeSuspend(Pipeline.kt:478)
amarr  |        at io.ktor.server.routing.Routing$executeResult$$inlined$execute$1.invoke(Pipeline.kt)
amarr  |        at io.ktor.server.routing.Routing$executeResult$$inlined$execute$1.invoke(Pipeline.kt)
amarr  |        at io.ktor.util.debug.ContextUtilsKt.initContextInDebugMode(ContextUtils.kt:17)
amarr  |        at io.ktor.server.routing.Routing.executeResult(Routing.kt:190)
amarr  |        at io.ktor.server.routing.Routing.interceptor(Routing.kt:64)
amarr  |        at io.ktor.server.routing.Routing$Plugin$install$1.invokeSuspend(Routing.kt:140)
amarr  |        at io.ktor.server.routing.Routing$Plugin$install$1.invoke(Routing.kt)
amarr  |        at io.ktor.server.routing.Routing$Plugin$install$1.invoke(Routing.kt)
amarr  |        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
amarr  |        at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
amarr  |        at io.ktor.server.engine.BaseApplicationEngineKt$installDefaultTransformationChecker$1.invokeSuspend(BaseApplicationEngine.kt:124)
amarr  |        at io.ktor.server.engine.BaseApplicationEngineKt$installDefaultTransformationChecker$1.invoke(BaseApplicationEngine.kt)
amarr  |        at io.ktor.server.engine.BaseApplicationEngineKt$installDefaultTransformationChecker$1.invoke(BaseApplicationEngine.kt)
amarr  |        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
amarr  |        at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
amarr  |        at io.ktor.util.pipeline.SuspendFunctionGun.execute$ktor_utils(SuspendFunctionGun.kt:98)
amarr  |        at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:77)
amarr  |        at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1$invokeSuspend$$inlined$execute$1.invokeSuspend(Pipeline.kt:478)
amarr  |        at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
amarr  |        at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
amarr  |        at io.ktor.util.debug.ContextUtilsKt.initContextInDebugMode(ContextUtils.kt:17)
amarr  |        at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1.invokeSuspend(DefaultEnginePipeline.kt:123)
amarr  |        at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1.invoke(DefaultEnginePipeline.kt)
amarr  |        at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$1.invoke(DefaultEnginePipeline.kt)
amarr  |        at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)
amarr  |        at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)
amarr  |        at io.ktor.util.pipeline.SuspendFunctionGun.execute$ktor_utils(SuspendFunctionGun.kt:98)
amarr  |        at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:77)
amarr  |        at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1$invokeSuspend$$inlined$execute$1.invokeSuspend(Pipeline.kt:478)
amarr  |        at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
amarr  |        at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1$invokeSuspend$$inlined$execute$1.invoke(Pipeline.kt)
amarr  |        at io.ktor.util.debug.ContextUtilsKt.initContextInDebugMode(ContextUtils.kt:17)
amarr  |        at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invokeSuspend(NettyApplicationCallHandler.kt:119)
amarr  |        at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invoke(NettyApplicationCallHandler.kt)
amarr  |        at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invoke(NettyApplicationCallHandler.kt)
amarr  |        at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:44)
amarr  |        at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
amarr  |        at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
amarr  |        at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
amarr  |        at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
amarr  |        at io.ktor.server.netty.NettyApplicationCallHandler.handleRequest(NettyApplicationCallHandler.kt:37)
amarr  |        at io.ktor.server.netty.NettyApplicationCallHandler.channelRead(NettyApplicationCallHandler.kt:29)
amarr  |        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
amarr  |        at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:61)
amarr  |        at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:425)
amarr  |        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
amarr  |        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
amarr  |        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
amarr  |        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
amarr  |        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
amarr  |        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
amarr  |        at io.ktor.server.netty.EventLoopGroupProxy$Companion.create$lambda$1$lambda$0(NettyApplicationEngine.kt:296)
amarr  |        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
amarr  |        at java.base/java.lang.Thread.run(Thread.java:833)
amarr  | 2024-07-07 07:53:19.092 [eventLoopGroupProxy-4-1] DEBUG ktor.application - 500 Internal Server Error: GET - /api/v2/torrents/info in 53ms

I'm joining discord as well :)

It looks like your amarr cannot communicate with your amule.
Do you have amule running?
Where is it running? Docker or host?
Will follow up on discord in a few minutes

It looks like your amarr cannot communicate with your amule. Do you have amule running?

yes

Where is it running? Docker or host?

docker, but I access via port on host (192.168.1.100:4711).

I can curl from amarr docker to amule port

root@2e32508b88d4:/# curl http://192.168.1.100:4711 --output amule.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1488  100  1488    0     0   484k      0 --:--:-- --:--:-- --:--:--  484k
root@2e32508b88d4:/# gunzip amule.gz 
root@2e32508b88d4:/# cat amule 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
        <title>aMule - Control Panel - Login</title>

        <script language="JavaScript" type="text/javascript">
                function login_init()
                {
                        breakout_of_frame()
...

@vexdev this is my amule docker-compose.yml

---
version: "2.1"
services:
  amule:
    image: ngosang/amule
    container_name: amule
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Madrid
      - GUI_PWD=PASSWORD
      - WEBUI_PWD=PASSWORD
      - MOD_AUTO_RESTART_ENABLED=true
      - MOD_AUTO_RESTART_CRON=0 2 * * 1
      - MOD_AUTO_SHARE_ENABLED=false
      - MOD_AUTO_SHARE_DIRECTORIES=/incoming;/my_movies
      - MOD_FIX_KAD_GRAPH_ENABLED=true
      - MOD_FIX_KAD_BOOTSTRAP_ENABLED=true
    ports:
      - "4711:4711" # web ui
      - "4712:4712" # remote gui, webserver, cmd ...
      - "4662:4662" # ed2k tcp
      - "4665:4665/udp" # ed2k global search udp (tcp port +3)
      - "4672:4672/udp" # ed2k udp
    volumes:
      - '/data/.docker/amule/config:/home/amule/.aMule'
      - '/data/files/Downloads:/incoming'
      - '/data/files/Downloads/incomplete:/temp'

You configured Amarr to use port 4711 but that's the web UI port. You should use the EC protocol port 4712.
You can change your docker-compose to this, and see if it works:

---
services:
  amarr:
    image: vexdev/amarr:latest
    container_name: amarr
    environment:
      - AMULE_HOST=192.168.1.100
      - AMULE_PORT=4712   // <-- Relevant change
      - AMULE_PASSWORD=PASSWORD
    volumes:
      - ./config:/config
    ports:
      - 8082:8080
    restart: unless-stopped

yes! that did the job! Now I have both the amarr client and the indexer :)
Now I need to figure how it works, but this will be another story.

Thank you @vexdev !!

You're welcome! I'll update the docs to avoid confusion. Closing