easy gate package for cloudron
This commit is contained in:
30
Cloudron/dashboard.knownelement.com/CloudronManifest.json
Normal file
30
Cloudron/dashboard.knownelement.com/CloudronManifest.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"id": "com.easygate.cloudron",
|
||||
"title": "Easy-gate",
|
||||
"author": "r7wx",
|
||||
"description": "A simple web application designed to serve as the central hub for your self-hosted infrastructure. Easy-gate provides real-time parsing of services and notes from a configuration file.",
|
||||
"tagline": "A gate to your self-hosted infrastructure",
|
||||
"version": "1.0.0",
|
||||
"healthCheckPath": "/",
|
||||
"httpPort": 8080,
|
||||
"addons": {
|
||||
"localstorage": {}
|
||||
},
|
||||
"manifestVersion": 2,
|
||||
"website": "https://github.com/r7wx/easy-gate",
|
||||
"contactEmail": "support@cloudron.io",
|
||||
"icon": "logo.png",
|
||||
"tags": [
|
||||
"dashboard",
|
||||
"infrastructure",
|
||||
"services",
|
||||
"homepage"
|
||||
],
|
||||
"env": {
|
||||
"EASY_GATE_CONFIG": "/app/data/easy-gate.json",
|
||||
"EASY_GATE_ROOT_PATH": "/app/data"
|
||||
},
|
||||
"configurePath": "/",
|
||||
"minBoxVersion": "7.0.0",
|
||||
"postInstallMessage": "Easy-gate has been successfully installed. You can now configure your services in the /app/data/easy-gate.json file. By default, Easy-gate runs behind Cloudron's proxy (EASY_GATE_BEHIND_PROXY=true). More configuration options available at https://github.com/r7wx/easy-gate"
|
||||
}
|
41
Cloudron/dashboard.knownelement.com/Dockerfile
Normal file
41
Cloudron/dashboard.knownelement.com/Dockerfile
Normal file
@@ -0,0 +1,41 @@
|
||||
FROM cloudron/base:4.2.0
|
||||
|
||||
# Adding non-free repo for any potential dependencies
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
wget \
|
||||
ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Set up directory structure
|
||||
RUN mkdir -p /app/code /app/data /tmp/data
|
||||
|
||||
# Default config file
|
||||
COPY easy-gate.json /tmp/data/easy-gate.json
|
||||
|
||||
# Download and install the latest Easy-gate release
|
||||
RUN mkdir -p /tmp/easy-gate && \
|
||||
cd /tmp/easy-gate && \
|
||||
LATEST_VERSION=$(wget -qO- https://api.github.com/repos/r7wx/easy-gate/releases/latest | grep tag_name | cut -d '"' -f 4) && \
|
||||
wget -q https://github.com/r7wx/easy-gate/releases/download/${LATEST_VERSION}/easy-gate_${LATEST_VERSION#v}_linux_amd64.tar.gz && \
|
||||
tar -xzf easy-gate_${LATEST_VERSION#v}_linux_amd64.tar.gz && \
|
||||
mv easy-gate /app/code/ && \
|
||||
chmod +x /app/code/easy-gate && \
|
||||
rm -rf /tmp/easy-gate
|
||||
|
||||
# Prepare start script
|
||||
COPY start.sh /app/code/
|
||||
RUN chmod +x /app/code/start.sh
|
||||
|
||||
# Set proper permissions
|
||||
RUN chown -R cloudron:cloudron /app/code /app/data /tmp/data
|
||||
|
||||
# Configure working directory and user
|
||||
WORKDIR /app/code
|
||||
USER cloudron
|
||||
|
||||
# Expose the port the app runs on
|
||||
EXPOSE 8080
|
||||
|
||||
# Start the application
|
||||
CMD ["/app/code/start.sh"]
|
147
Cloudron/dashboard.knownelement.com/EasyGate-BulldNotes.md
Normal file
147
Cloudron/dashboard.knownelement.com/EasyGate-BulldNotes.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# Easy-gate Build Notes for Cloudron
|
||||
|
||||
This document provides instructions for building, testing, and deploying Easy-gate to your Cloudron instance.
|
||||
|
||||
## Overview
|
||||
|
||||
Easy-gate is a simple web application designed to serve as the central hub for your self-hosted infrastructure. It allows you to organize and access all your self-hosted services from a single dashboard.
|
||||
|
||||
Key features:
|
||||
- Real-time parsing of services and notes from a configuration file (JSON/YAML)
|
||||
- Ability to assign items to specific user groups based on IP addresses
|
||||
- Organization of services into categories
|
||||
- Customizable theme and icons
|
||||
|
||||
## Building the Package
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- A Linux environment with Docker installed
|
||||
- Cloudron CLI tool installed (`npm install -g cloudron`)
|
||||
- Authenticated with your Cloudron instance (`cloudron login`)
|
||||
|
||||
### Build Steps
|
||||
|
||||
1. Create a directory for your build and copy all files into it:
|
||||
|
||||
```bash
|
||||
mkdir easy-gate-build
|
||||
cd easy-gate-build
|
||||
# Copy CloudronManifest.json, Dockerfile, start.sh, and easy-gate.json
|
||||
```
|
||||
|
||||
2. Create a logo.png file for the icon or download one from the Easy-gate repository.
|
||||
|
||||
3. Build the package:
|
||||
|
||||
```bash
|
||||
cloudron build
|
||||
```
|
||||
|
||||
This command will create a package file (usually named `easy-gate-1.0.0.tar.gz`).
|
||||
|
||||
## Testing Locally
|
||||
|
||||
You can test the Docker container locally before deploying to Cloudron:
|
||||
|
||||
```bash
|
||||
# Build the Docker image
|
||||
docker build -t easy-gate-local .
|
||||
|
||||
# Run the container
|
||||
docker run -p 8080:8080 -e EASY_GATE_BEHIND_PROXY=true easy-gate-local
|
||||
```
|
||||
|
||||
Access the dashboard at http://localhost:8080 to verify it works correctly.
|
||||
|
||||
## Deploying to Cloudron
|
||||
|
||||
1. Upload the built package to your Cloudron:
|
||||
|
||||
```bash
|
||||
cloudron install —app easy-gate.example.com
|
||||
```
|
||||
|
||||
2. Or, if you want to update an existing installation:
|
||||
|
||||
```bash
|
||||
cloudron update —app easy-gate.example.com
|
||||
```
|
||||
|
||||
3. Configure your Easy-gate instance:
|
||||
|
||||
After installation, you’ll need to edit the configuration file to add your services. You can do this in two ways:
|
||||
|
||||
### Option 1: Using Cloudron File Manager
|
||||
|
||||
1. Go to your Cloudron dashboard
|
||||
2. Click on the Easy-gate application
|
||||
3. Go to “Files” tab
|
||||
4. Navigate to `/app/data/`
|
||||
5. Edit `easy-gate.json`
|
||||
|
||||
### Option 2: SSH Access
|
||||
|
||||
1. SSH into your Cloudron server
|
||||
2. Access the app’s data directory:
|
||||
```bash
|
||||
cloudron exec —app easy-gate.example.com
|
||||
```
|
||||
3. Edit the configuration file:
|
||||
```bash
|
||||
nano /app/data/easy-gate.json
|
||||
```
|
||||
|
||||
## Configuration File Structure
|
||||
|
||||
The configuration file uses the following structure:
|
||||
|
||||
```json
|
||||
{
|
||||
“title”: “My Dashboard”,
|
||||
“theme”: {
|
||||
“background”: “#f8f9fa”,
|
||||
“foreground”: “#212529”,
|
||||
“custom_css”: “”
|
||||
},
|
||||
“groups”: [
|
||||
{
|
||||
“name”: “group-name”,
|
||||
“subnet”: “192.168.1.1/24”
|
||||
}
|
||||
],
|
||||
“categories”: [
|
||||
{
|
||||
“name”: “Category Name”,
|
||||
“services”: [
|
||||
{
|
||||
“name”: “Service Name”,
|
||||
“url”: “https://service.example.com”,
|
||||
“description”: “Service Description”,
|
||||
“icon”: “”,
|
||||
“groups”: [“group-name”]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
“notes”: [
|
||||
{
|
||||
“name”: “Note Title”,
|
||||
“text”: “Note Content”,
|
||||
“groups”: [“group-name”]
|
||||
}
|
||||
],
|
||||
“behind_proxy”: true
|
||||
}
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- If you encounter “502 Bad Gateway” errors, check that the application is running inside the container: `cloudron logs -f —app easy-gate.example.com`
|
||||
- Make sure the `behind_proxy` setting is set to `true` in your configuration file
|
||||
- Verify that the user groups and subnets are configured correctly
|
||||
- Check the logs for any specific error messages
|
||||
|
||||
## Maintenance
|
||||
|
||||
Easy-gate is designed to be low-maintenance. To update to a newer version, simply rebuild the package with the latest release and update your Cloudron app.
|
69
Cloudron/dashboard.knownelement.com/easy-gate.json
Normal file
69
Cloudron/dashboard.knownelement.com/easy-gate.json
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"title": "My Self-Hosted Infrastructure",
|
||||
"theme": {
|
||||
"background": "#f8f9fa",
|
||||
"foreground": "#212529",
|
||||
"custom_css": ""
|
||||
},
|
||||
"groups": [
|
||||
{
|
||||
"name": "internal",
|
||||
"subnet": "192.168.1.1/24"
|
||||
},
|
||||
{
|
||||
"name": "admin",
|
||||
"subnet": "10.8.0.1/24"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
{
|
||||
"name": "Applications",
|
||||
"services": [
|
||||
{
|
||||
"name": "Cloudron",
|
||||
"url": "https://my.example.com",
|
||||
"description": "My Cloudron Dashboard",
|
||||
"icon": "",
|
||||
"groups": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Media",
|
||||
"services": [
|
||||
{
|
||||
"name": "Jellyfin",
|
||||
"url": "https://jellyfin.example.com",
|
||||
"description": "Media Server",
|
||||
"icon": "",
|
||||
"groups": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Monitoring",
|
||||
"services": [
|
||||
{
|
||||
"name": "Grafana",
|
||||
"url": "https://grafana.example.com",
|
||||
"description": "Monitoring Dashboard",
|
||||
"icon": "",
|
||||
"groups": ["admin"]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
{
|
||||
"name": "Welcome to Easy-gate",
|
||||
"text": "This is your new Easy-gate dashboard. Edit this configuration file to customize your services and notes.",
|
||||
"groups": []
|
||||
},
|
||||
{
|
||||
"name": "For Administrators",
|
||||
"text": "Admin-only information can be seen here when connecting from the admin subnet.",
|
||||
"groups": ["admin"]
|
||||
}
|
||||
],
|
||||
"behind_proxy": true
|
||||
}
|
20
Cloudron/dashboard.knownelement.com/start.sh
Normal file
20
Cloudron/dashboard.knownelement.com/start.sh
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Initialize data directory if it doesn't exist
|
||||
if [ ! -f /app/data/easy-gate.json ]; then
|
||||
echo "Initializing Easy-gate with default configuration..."
|
||||
cp /tmp/data/easy-gate.json /app/data/
|
||||
chown cloudron:cloudron /app/data/easy-gate.json
|
||||
fi
|
||||
|
||||
# Set environment variables
|
||||
export EASY_GATE_CONFIG="/app/data/easy-gate.json"
|
||||
export EASY_GATE_ROOT_PATH="/app/data"
|
||||
export EASY_GATE_BEHIND_PROXY="true"
|
||||
|
||||
echo "Starting Easy-gate with configuration at ${EASY_GATE_CONFIG}..."
|
||||
echo "Easy-gate is configured to run behind a proxy (EASY_GATE_BEHIND_PROXY=true)"
|
||||
|
||||
# Run the application
|
||||
exec /app/code/easy-gate
|
Reference in New Issue
Block a user