# 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
