Skip to content

Can't get server to run #120

@kevbo-oh

Description

@kevbo-oh

I'm sorry, I'm going to ask stupid questions here.

I'm an old-school Linux admin/app developer. These days, mostly writing code in go. I don't know a thing about elixir or erlang. I also don't use Docker much.

I'm trying to get certstream-server to work, and can't.

At first, I tried to just run the code on a modern Fedora 39 install (Fedora because RHEL and clones don't have elixir available at all). Attempting to run the code in this repo on a modern Elixir fails miserably:

[kwhite@mock-f39 certstream-server]$ mix deps.get
warning: use Mix.Config is deprecated. Use the Config module instead
  config/config.exs:1

warning: Mix.Config.config/2 is deprecated. Use the Config module instead
  config/config.exs:3

warning: Mix.Config.config/2 is deprecated. Use the Config module instead
  config/config.exs:8

warning: Mix.Config.config/2 is deprecated. Use the Config module instead
  config/config.exs:12

warning: Mix.Config.config/2 is deprecated. Use the Config module instead
  config/config.exs:19

[kwhite@mock-f39 certstream-server]$ mix run --no-halt
warning: use Mix.Config is deprecated. Use the Config module instead
  config/config.exs:1

warning: Mix.Config.config/2 is deprecated. Use the Config module instead
  config/config.exs:3

warning: Mix.Config.config/2 is deprecated. Use the Config module instead
  config/config.exs:8

warning: Mix.Config.config/2 is deprecated. Use the Config module instead
  config/config.exs:12

warning: Mix.Config.config/2 is deprecated. Use the Config module instead
  config/config.exs:19

==> easy_ssl
Compiling 1 file (.ex)

== Compilation error in file lib/easy_ssl.ex ==
** (ArgumentError) lib file public_key/include/OTP-PUB-KEY.hrl could not be found
    (elixir 1.15.7) lib/record/extractor.ex:41: Record.Extractor.from_lib_file/1
    (elixir 1.15.7) lib/record/extractor.ex:18: Record.Extractor.from_or_from_lib_file/1
    (elixir 1.15.7) lib/record/extractor.ex:9: Record.Extractor.extract_all/1
    lib/easy_ssl.ex:10: (module)
could not compile dependency :easy_ssl, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile easy_ssl --force", update it with "mix deps.update easy_ssl" or clean it with "mix deps.clean easy_ssl"

I realize that 1.15 is a lot newer than the 1.8 specified in the Dockerfile. The most recent Fedora that has 1.8 is Fedora 31, which has been EOL for over 3 years. Since I don't know anything about Elixir, I have no idea how to get this package to run. I have no idea what newer version of Elixir should be expected to work.

So, it seems that moving to Docker would be the path of least resistance.

I tried with podman on Fedora 39, but had trouble. To remove podman from the equation, I decided to try real docker on Debian 12. I ended up having exactly the same problems in docker, documented as follows.

I installed a Debian 12 VM, did 'apt-get install docker.io', then this:

sudo docker build .
kwhite@docker:~/git/certstream-server$ sudo docker image ls
REPOSITORY   TAG          IMAGE ID       CREATED          SIZE
<none>       <none>       7574a8455bd6   43 seconds ago   119MB
elixir       1.8-alpine   ca333c791f18   16 months ago    82MB

kwhite@docker:~/git/certstream-server$ sudo docker run -p 4000:4000 ca333c791f18
Interactive Elixir (1.8.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 

I'm surprised that the server doesn't start automatically. I don't understand why it didn't. The Dockerfile sdems to indicate that it should.

So I try again, adding -it:

kwhite@docker:~/git/certstream-server$ sudo docker run -it -p 4000:4000 ca333c791f18
Erlang/OTP 21 [erts-10.3.5.19] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1]

Interactive Elixir (1.8.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> :observer.start

06:57:03.306 [error] ERROR: Could not find 'wxe_driver.so' in: /usr/local/lib/erlang/lib/wx-1.8.7/priv

{:error,
 {{:load_driver, 'No driver found'},
  [
    {:wxe_server, :start, 1, [file: 'wxe_server.erl', line: 65]},
    {:wx, :new, 1, [file: 'wx.erl', line: 115]},
    {:observer_wx, :init, 1, [file: 'observer_wx.erl', line: 107]},
    {:wx_object, :init_it, 6, [file: 'wx_object.erl', line: 372]},
    {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 249]}
  ]}}

Well, that's not good.

Again, I'm sorry. I'm sure that everything I'm doing looks really stupid to someone who a) knows Elixir and b) knows Docker. But I hope you can see that for a knowledgeable Linux user who doesn't know either, well....I can't figure out how to get this to run.

Thank you.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions