Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/edgee-cloud/edgee
The full-stack edge platform for your edge oriented applications.
https://github.com/edgee-cloud/edgee
data-collection edge edge-computing edgee http https proxy rust wasm wasm-component webassembly
Last synced: 7 days ago
JSON representation
The full-stack edge platform for your edge oriented applications.
- Host: GitHub
- URL: https://github.com/edgee-cloud/edgee
- Owner: edgee-cloud
- License: apache-2.0
- Created: 2024-04-26T12:26:01.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-10-29T17:05:52.000Z (2 months ago)
- Last Synced: 2024-10-29T18:32:13.110Z (2 months ago)
- Topics: data-collection, edge, edge-computing, edgee, http, https, proxy, rust, wasm, wasm-component, webassembly
- Language: Rust
- Homepage: https://www.edgee.cloud
- Size: 329 KB
- Stars: 37
- Watchers: 4
- Forks: 6
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
Edgee
**The full-stack edge platform for your edge-oriented applications.**
[![Edgee](https://img.shields.io/badge/edgee-open%20source-blueviolet.svg)](https://www.edgee.cloud)
[![Docker](https://img.shields.io/docker/v/edgeecloud/edgee.svg?logo=docker&label=docker&color=0db7ed)](https://hub.docker.com/r/edgeecloud/edgee)
[![Edgee](https://img.shields.io/badge/slack-edgee-blueviolet.svg?logo=slack)](https://www.edgee.cloud/slack)
[![Docs](https://img.shields.io/badge/docs-published-blue)](https://docs.edgee.cloud)⚠️ Edgee OSS Edition (v0.4.X) is in Development
Edgee OSS is currently in version 0.4.X and is considered unstable as we continue to enhance and refine the platform.
We're actively working towards a stable v1.0.0 release, which will be available in the coming months.We welcome feedback and contributions during this development phase, and appreciate your patience as we work hard to bring you a robust edge computing solution.
## Documentation
- [Official Website](https://www.edgee.cloud)
- [Official Documentation](https://docs.edgee.cloud)## Contacts
- [Twitter](https://x.com/edgee_cloud)
- [LinkedIn](https://www.linkedin.com/company/edgee-cloud/)
- [Slack](https://www.edgee.cloud/slack)Check out [the official docs](https://docs.edgee.cloud) to dive into Edgee's main concepts and architecture.
# Running Edgee
Once you have a valid configuration file (see next section), you can run Edgee in different ways, using the installer, Docker or running as a Rust crate.
⚠️ Note: all the examples below assume that TLS certificates and WebAssembly components can be found in `/var/edgee/cert` and `/var/edgee/wasm` respectively. Feel free to use `/local/cert` and `/local/wasm` for local development.
## Using the installer
You can install and run `edgee` locally using the installer script:
```shell
$ curl https://install.edgee.cloud | sh
[...]
$ ./edgee serve
```## Using docker
You can run it using the CLI:
```shell
docker run \
-v $PWD/edgee.toml:/app/edgee.toml \
-v $PWD/cert:/var/edgee/cert \
-v $PWD/wasm:/var/edgee/wasm \
-p80:80 \
-p443:443 \
edgeecloud/edgee
```Or as part of a `docker-compose.yml`:
```yaml
service:
edgee:
image: edgeecloud/edgee
ports:
- "80:80"
- "443:443"
volumes:
- "./edgee.toml:/app/edgee.toml"
- "./cert:/var/edgee/cert"
- "./wasm:/var/edgee/wasm"
```## Building from source
Edgee is built in Rust and can be installed using Cargo:
```console
cargo build --release
```Then you can run it:
```console
cargo run --release
```# Configuration
Edgee proxy is customized through the `edgee.toml` file (or `edgee.yaml`), which is expected in the same directory where edgee is running from.
You can get started by coping the existing `edgee.sample.toml` file:
```bash
cp edgee.sample.toml edgee.toml
```Here's a minimal configuration sample that sets Edgee to work as a regular reverse proxy. Later we'll see how to enable edge components.
```toml
# edgee.toml
[log]
level = "info"[http]
address = "0.0.0.0:80"
force_https = true[https]
address = "0.0.0.0:443"
cert = "/var/edgee/cert/server.pem"
key = "/var/edgee/cert/edgee.key"[[routing]]
domain = "demo.edgee.dev"[[routing.backends]]
name = "demo"
default = true
address = "192.168.0.10"
enable_ssl = true
```## Log levels
Edgee allows you to control the granularity of logs you want to be displayed. The possible values are:
`trace`, `debug`, `info`, `warn`, `error`, and `fatal`. This setting defines the minimal level to
be displayed, so setting it to `warn` will show `warn`, `error`, and `fatal` messages while hidding the others.## Routing
The example above sets up one backend called "demo". As the default backend, it will receive all traffic directed to `demo.edgee.dev`. Additionaly, projects can have a number of backends and use routing rules to distribute traffic among them.For example, we could add a second backend called "api" to handle all requests to `demo.edgee.dev/api`:
```toml
# edgee.toml
[[routing.rules]]
path_prefix = "/api/"
backend = "api"[[routing.backends]]
name = "api"
enable_ssl = true
address = "192.168.0.30"
```The supported matchers are:
- *path*: the path matches exactly the provided value
- *path_prefix*: the path starts with the provided value
- *path_regexp*: the path matches the provided regexpIn addition to proxying the request, you could also rewrite the path:
```toml
# edgee.toml[[routing.rules]]
path_prefix = "/api/"
rewrite = "/v1/"
backend = "api"
```This way, calling `/api/test` on port `80` will result in calling `/v1/test` on the API backend.
## Integrating with edgee components
Check out the [official components docs](https://docs.edgee.cloud/components/overview) to dive into the
components architecture.The Edgee proxy is designed for performance and extensibility, so you can easily integrate open source components based on the platforms you need. Here's a list of the components we've built so far:
- [Amplitude](https://github.com/edgee-cloud/amplitude-component)
- [Google Analytics](https://github.com/edgee-cloud/ga-component)
- [Segment](https://github.com/edgee-cloud/segment-component)
- [Piano Analytics](https://github.com/edgee-cloud/piano-analytics-component)You just need point to the WebAssembly implementation in your proxy configuration. You may also build your
own components for integrations we don't provide yet.### Example
Let's see how to implement data collection using the [amplitude component](https://github.com/edgee-cloud/amplitude-component).
You simply need to add a new session to your configuration pointing to the WebAssembly component that implements the data collection protocol:
```toml
# edgee.toml
[[components.data_collection]]
name = "amplitude"
component = "/var/edgee/wasm/amplitude.wasm"
credentials.amplitude_api_key = "YOUR-API-KEY"
```### Debugging a component
You can enable debug logs for a specific component by setting the `debug` flag to `true`:
```bash
./edgee --debug-component amplitude serve
```## Contributing
If you're interested in contributing to Edgee, read our [contribution guidelines](./CONTRIBUTING.md)## Reporting Security Vulnerabilities
If you've found a vulnerability or potential vulnerability in our code, please let us know at
[edgee-security](mailto:security@edgee.cloud).## Versioning
Edgee releases and their associated binaries are available on the project's [releases page](https://github.com/edgee-cloud/edgee/releases).The binaries are versioned following [SemVer](https://semver.org/) conventions.