feat: add Easy-Gate Cloudron package (Infrastructure) [#651]
Easy Gate 2.0.3 dashboard hub: multi-stage Go build (static binary on cloudron/base 3.2.0), config persisted at /app/data/easy-gate.json with real-time hot reload. No user model (IP-subnet groups only), so the app ships behind the Cloudron auth proxy (httpAuth.type=proxy); localstorage addon only, no database. Build validated green + smoke test HTTP 200. Docs synced (STATUS/README/JOURNAL at 10/~57). Ticket: https://projects.knownelement.com/issues/651 💘 Generated with Crush Assisted-by: Crush:glm-5.2
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# Easy Gate Cloudron Package
|
||||
|
||||
## Description
|
||||
|
||||
Easy Gate is a simple web application that serves as the central hub for
|
||||
your self-hosted infrastructure. Services and notes are parsed in real time
|
||||
from a JSON/YAML configuration file — Easy Gate re-reads it every second, so
|
||||
changes apply immediately without restarts. Services and notes can be
|
||||
organized into categories and assigned to user groups, so items are shown
|
||||
only to users matching specific IP subnets (e.g. LAN vs VPN).
|
||||
|
||||
This package builds the upstream Go source (v2.0.3) as a static binary and
|
||||
runs it on the Cloudron base image.
|
||||
|
||||
## Authentication
|
||||
|
||||
Easy Gate has **no built-in user model** — visibility is controlled by
|
||||
IP-subnet groups, not accounts. This package therefore uses **Cloudron's
|
||||
authentication proxy** (`httpAuth.type = proxy` in `CloudronManifest.json`).
|
||||
The Cloudron admin restricts which platform users/groups may reach the app;
|
||||
authorized users must present Cloudron credentials before the dashboard
|
||||
loads. This is the recommended pattern for utility apps without their own
|
||||
user directory.
|
||||
|
||||
Because Cloudron fronts the app with its reverse proxy, the seeded config
|
||||
sets `behind_proxy: true` so group matching uses the real client IP from
|
||||
`X-Forwarded-For`.
|
||||
|
||||
## Features
|
||||
|
||||
- Real-time config parsing (JSON or YAML) with no application restarts
|
||||
- Group-based visibility of services and notes by client IP subnet
|
||||
- Service categories, themes, and custom CSS support
|
||||
- Standalone static Go binary with no external dependencies
|
||||
- No database required
|
||||
|
||||
## Configuration
|
||||
|
||||
### Ports
|
||||
- **8080**: Easy Gate HTTP (the only exposed port)
|
||||
|
||||
### Config file
|
||||
All configuration lives in **`/app/data/easy-gate.json`** (created with a
|
||||
sane default on first start). Edit it with the Cloudron file manager;
|
||||
changes are picked up within a second. Key options:
|
||||
|
||||
| Option | Purpose |
|
||||
|--------|---------|
|
||||
| `title` | Dashboard title |
|
||||
| `theme.background` / `theme.foreground` | Colors; or `theme.custom_css` for a custom stylesheet |
|
||||
| `groups[].name` / `groups[].subnet` | Groups defined by client IP subnet (CIDR) |
|
||||
| `services[]` | Entries: `name`, `url`, `category`, `groups`, `icon` |
|
||||
| `notes[]` | Entries: `name`, `text`, `groups` |
|
||||
| `behind_proxy` | Keep `true` on Cloudron (real client IP via X-Forwarded-For) |
|
||||
|
||||
Items with an empty `groups` list are visible to everyone (whoever passes
|
||||
the Cloudron auth proxy).
|
||||
|
||||
### Storage
|
||||
- **`/app/data`** (localstorage addon) holds the config file. Nothing else
|
||||
is persisted; no database addon is used.
|
||||
|
||||
## Usage
|
||||
|
||||
1. Install the package on Cloudron.
|
||||
2. In the Cloudron access control, grant the desired users/groups access.
|
||||
3. Open the app location — you'll be prompted for Cloudron credentials.
|
||||
4. Edit `/app/data/easy-gate.json` to list your services and notes; the
|
||||
dashboard updates within a second.
|
||||
|
||||
## Upstream
|
||||
|
||||
- **Repository**: https://github.com/wiredlush/easy-gate
|
||||
- **Version packaged**: 2.0.3 (Go 1.23, Fiber)
|
||||
- **License**: MIT
|
||||
Reference in New Issue
Block a user