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
76 lines
2.9 KiB
Markdown
76 lines
2.9 KiB
Markdown
# 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
|