GLoom
GLoom is a plugin-based web app manager written in Go (perhaps a pico-paas). GLoom's focus is to provide and simple and efficient way to host micro-web apps easily. Currently, GLoom is a fun little proof of concept, and now even supports unloading plugins, and gracefully handles plugins that crash, but it is not yet ready for production use, and may not ever be. GLoom is still in early development, so expect some rough edges and bugs and at its heart, GLoom is just a proof of concept, fun to write, and fun to use, but not production ready. If you want a more stable and production ready web app manager, check out my other project, Flux ;).
Features
- Plugin-based architecture
- RPC-based communication between GLoom and plugins
- Built-in plugin management system
Getting Started
Prerequisites
- Go 1.20 or higher
- zqdgr
This project is primarily written for Linux, and has only been tested on Linux, you might have luck with other operating systems, but it is not guaranteed to work, feel free to open an issue if you encounter any problems.
Installation
-
Clone the repository:
git clone https://github.com/juls0730/gloom.git -
Run the project:
zqdgr runor if you want to build the project:
zqdgr buildand if you want to build the project without the GLoom management Interface (you will not be able to manage plugins wunless you have another interface like GLoomI or mark all the plugins you want to use as preloaded):
zqdgr build:gloomand make sure to clear the
PRELOAD_PLUGINSenvironment variable and set it to your preferred management interface, or nothing at all if you don't want to use a management interface.
Configuring
GLoom is configured using environment variables. The following environment variables are supported:
DEBUG- Enables debug logging. This is a boolean value, so you can set it to any truthy value to enable debug logging.PRELOAD_PLUGINS- A json array of plugins to preload. The default value of this isgloomi, this is how GLoomI is loaded by default, and how replacement interfaces can be loaded. The format is in json, and the default value is:It is not recommended to preload any plugin other than a management interface, this is because preloaded plugins are protected and cannot be updated in an green-blue fashion.[{"file": "gloomi.so", "domains": ["localhost"]}]PLUGINS_DIR- The directory where plugins are stored. This is a string value, so you can set it to any directory path you want. The default value isplugs.
Usage
please read DOCUMENTATION.md
Contributing
Contributions are welcome!
License
GLoom is licensed under the MIT License and ever file is licensed under it unless otherwise specified.