Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More exact description #4

Open
coolaj86 opened this issue Jul 5, 2018 · 2 comments
Open

More exact description #4

coolaj86 opened this issue Jul 5, 2018 · 2 comments

Comments

@coolaj86
Copy link

coolaj86 commented Jul 5, 2018

Hohenheim is a web server and reverse proxy, mainly for node.js sites.

I understand at a high level what this means, but I'm not clear on how Hohenheim solves the problem from the README alone.

Does this allow you to do static virtual hosting and point arbitrary domain + pathname combination to arbitrary ports on localhost?

If so, how do I configure it? Is it the admin interface only? Or can I use a config file?

Also, why is this built in node? I myself am building some in node (Goldilocks, Telebit, ppl) and I can tell you that for most use cases node is a bad idea (go or rust would be much better due to issues with node's lower-level networking stack, especially the tls decryption time). Is it just so it's cross-platform? Or are there node-specific hooks? Or is it just for fun because everything that can be built in JavaScript will be built in JavaScript? Or to appeal to the community?

(The reason I'm building mine, for which I built greenlock in the first place, is to be portable across home devices, IoT, and desktop-class devices, with a single codebase that supports the JS community.)

@coolaj86
Copy link
Author

coolaj86 commented Jul 5, 2018

And don't get me wrong, I think this is super awesome. I'm so excited to see so many people building these types of proxies, especially with greenlock. I just happen to know 'thar be dragons'.

@skerit
Copy link
Member

skerit commented Jul 7, 2018

Does this allow you to do static virtual hosting and point arbitrary domain + pathname combination to arbitrary ports on localhost?

For each configured site, you need to define what type it is. Right now, there are 3 types:

  • Proxy
  • Node
  • Alchemy

Proxy sites are indeed what they sound like: they can be used to point to another url, like http://localhost:8080/ for example.

Node sites have some extra configuration properties:

  • user: to set as which user it should run
  • node: to set which node version it should use
  • wait_for_ready: which just means the proxy should wait for a process to signal the parent process it is ready before actually sending the request
  • minimum_processes: how many processes of this node script should run at all times
  • maximum_processes: speaks for itself :)
  • environment_variables: To set various environment variables

Alchemy sites are just Node sites with some extra configurations for my own framework. It adds a terminal interface to the process, for example.

If so, how do I configure it? Is it the admin interface only? Or can I use a config file?

Yes, it's a GUI only. From a usability standpoint the UI isn't that great, actually. But it does what I want it to do :) For the curious:

General settings for an Alchemy site:
General settings for an Alchemy site

Domain configuration:
Domain configuration

Process information and terminal:
Process information and terminal

Also, why is this built in node?

"I can, so I will" does factor into it, yes :)

I did not build it with the community in mind, no. I'm quite reluctant to make too much noise about my own projects, knowing that I'm going against a few "best practices". That doesn't mean I don't want people to use it, or that I don't want to improve on things to make it more usable. It's mainly because creating these kind of things makes it all worthwhile for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants