Error trying to run the ae-channel-service locally(On Macbook)

Hi, can anyone help me with the following error where I am trying to install+run the ae-channel service on my local machine(macbook).

ERROR: compile failed while processing /Users/gyan/Documents/ProjectGyan/LearningNewThings/Aeternity/ae-channel-service/deps/enacl: rebar_abort ** (Mix) Could not compile dependency :enacl, “/Users/gyan/.mix/rebar compile skip_deps=true deps_dir=”/Users/gyan/Documents/ProjectGyan/LearningNewThings/Aeternity/ae-channel-service/_build/dev/lib"" command failed. You can recompile this dependency with “mix deps.compile enacl”, update it with “mix deps.update enacl” or clean it with “mix deps.clean enacl”

I have a macbook and I tried and re-tried the dependency thing but it just doesn’t progress
P.S: I am new to Erlang, so any pointers keeping that in mind would help :slight_smile:

4 Likes

Hi @gyan0890 what guide are you following ? @dimitar.chain @aleksandar.chain could bring some help here or @nikitafuchs.chain ?

1 Like

First of all, I like that you have a directory named LearningNewThings ! I remember having this issue last year, as this is a Elixir thing I don’t remember how I solved it (not into Elixir at all), but @aleksandar.chain would know.

So you tried recompiling the dependency with the provided commands ?

Haha, thank you Nikita :slight_smile: and yes, I tried recompiling with the provided commands. It kept giving me an error around enacl - unable to find. Even after I re-installed it using mix, it kept giving me this enacl related error, which then led to the error mentioned here.

I think the chances to find a solution for this would be quite good on https://stackoverflow.com/questions/tagged/elixir , as it’s about an Erlang library that can obviously be made working on its own. So just post your issue and include a link to the channel service - as it’s an Elixir application, even people without any specific knowledge to Aeternity should be able to give it a run. But just finding a standalone solution to the compilation issue should also be findable.

2 Likes

Thank you Nikita! I will try this out.

2 Likes

@gyan0890 this might not be properly documented but the ae-channel service depends on the node. It does some magic to get the node around and reuses its source code (given that it is Elixir project, reusing Erlang code is trivial). This of course brings some dependencies: actually all the dependencies the node relies on:

So my question is: do you have the correct version of Libsodium installed?

I am not sure @dimitar.chain but I think yes, there might be some issue with the libsodium coz at some point in time, I was able to traceback to that. I am going to re-install all these dependencies and see if that works.

1 Like

Quick update everyone! I am through the error - installed Erlang 22.0 and Elixir 1.10.2 which worked. Thanks for alll your help. Moving on to the next phase now :smiley:

4 Likes

Glad to know that @gyan0890 and thanks @dimitar.chain for the help

1 Like

Hi @gyan0890 have you been able to continue?

The error you are getting is most likely due missing libsodium development headers. You need to make sure you have them installed, probably using something like brew: https://formulae.brew.sh/formula/libsodium (as you mentioned you are on a macbook machine)

Once you have the header files installed, you should be able to compile the enacl dependency as suggested by the error message: mix deps.compile enacl

3 Likes

Hi all, I have run into another error while running the coin-toss game. The coin toss game is trying to connect to the aenode URL - http://localhost:3013/api but the GET fails on the front end.
I have my ae-channel-service running in the backend as well but still I am getting this error. Attachedn the error image as well. Can anyone help?

@ae-omar @nikitafuchs.chain @dimitar.chain

For some reason the channel service refuses the websocket connection. maybe @arpunk.chain knows some elixir and can help ? or @philipp.chain ?

Uhm, @gyan0890 do you have a node running on that machine? The channel service connects to a running node and if there is none, it would fail…

Hi @dimitar.chain, I am not running a local node. Isn’t the ae-channel-service spinning off an aenode? Should I spin one off locally as well?

Hi @gyan0890, yes, you must run a local node. The ae-channel-service heavily depends on it. The node also serves endpoints under localhost:3013 (external endpoints) and provides the connectors for the WebSockets on localhost:3014.

The ae-channel-service is a thin wrapper around the WebSocket API, it does not run a node for you. The idea there is that the node could be running on a different machine from the service you are building, so no way a local library could spin it. The idea behind this to be able to have a single node serving multiple services, deployed on different machines/containers. Since a real-life scenario this node would be synced with the chain, you don’t want to have many instances of it for every service you have running…

2 Likes

I see, alright! I will run a node and then restart the service as well as the coin-toss game. Thank you @dimitar.chain for the insights.

4 Likes

@gyan0890 there is a guide to run a node here: https://docs.aeternity.io/en/stable/installation/#quick-install

Also take in care that you could use a db snapshot so you don’t have to sync the entire db from scratch. @dimitar.chain or @gorbak25 can you point us on the right direction for this?