Add full compose files and ZimaOS manifest
This commit is contained in:
@@ -111,10 +111,19 @@ For automatic image-based upgrades, Unraid's **Update Container** action pulls t
|
|||||||
|
|
||||||
## ZimaOS
|
## ZimaOS
|
||||||
|
|
||||||
|
The simplest path is [`compose.zimaos.yaml`](compose.zimaos.yaml) — a ready-to-import file with the `x-casaos` metadata ZimaOS's app installer and App Store use for the icon, title, and port mapping.
|
||||||
|
|
||||||
|
1. In ZimaOS, go to **Docker → Install a Customized App**, and paste or select `compose.zimaos.yaml`.
|
||||||
|
2. Before starting it, edit `ADMIN_PASSWORD` and `SESSION_SECRET` in the environment fields.
|
||||||
|
3. Confirm the data path — it defaults to `/DATA/AppData/site-gateway` — and start the app.
|
||||||
|
4. Open `http://ZIMAOS-IP:8080`.
|
||||||
|
|
||||||
|
Prefer a plain Compose file instead? `compose.yaml` (build from source) and `compose.release.yaml` (pull the published image) both work the same way:
|
||||||
|
|
||||||
1. Copy this folder into ZimaOS storage, e.g. `/DATA/AppData/site-gateway/app`.
|
1. Copy this folder into ZimaOS storage, e.g. `/DATA/AppData/site-gateway/app`.
|
||||||
2. Point the Compose volume at `/DATA/AppData/site-gateway/data:/data`.
|
2. Point the Compose volume at `/DATA/AppData/site-gateway/data:/data`.
|
||||||
3. Set `ADMIN_PASSWORD` and `SESSION_SECRET` (and `PUID`/`PGID` if needed — ZimaOS typically uses `1000:1000`).
|
3. Set `ADMIN_PASSWORD` and `SESSION_SECRET` (and `PUID`/`PGID` if needed — ZimaOS typically uses `1000:1000`).
|
||||||
4. Import `compose.yaml` (or `compose.release.yaml` for image-based upgrades) through ZimaOS's custom app / Compose import option, or run it from the terminal:
|
4. Import through ZimaOS's custom app / Compose import option, or run it from the terminal:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /DATA/AppData/site-gateway/app
|
cd /DATA/AppData/site-gateway/app
|
||||||
|
|||||||
+10
-1
@@ -1,3 +1,8 @@
|
|||||||
|
|
||||||
|
# Pulls the published multi-arch image instead of building from source.
|
||||||
|
# Copy .env.example to .env, set ADMIN_PASSWORD and SESSION_SECRET, then:
|
||||||
|
# docker compose -f compose.release.yaml pull
|
||||||
|
# docker compose -f compose.release.yaml up -d
|
||||||
services:
|
services:
|
||||||
site-gateway:
|
site-gateway:
|
||||||
image: ${SITE_GATEWAY_IMAGE:-ghcr.io/mfwadejr/site-gateway2:latest}
|
image: ${SITE_GATEWAY_IMAGE:-ghcr.io/mfwadejr/site-gateway2:latest}
|
||||||
@@ -18,9 +23,13 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "${HTTP_PORT:-80}:80"
|
- "${HTTP_PORT:-80}:80"
|
||||||
- "${HTTPS_PORT:-443}:443"
|
- "${HTTPS_PORT:-443}:443"
|
||||||
- "${HTTPS_PORT:-443}:443/udp"
|
- "${HTTPS_PORT:-443}:443/udp" # HTTP/3 (QUIC) — forward UDP 443 on your router/firewall too
|
||||||
- "8080:8080"
|
- "8080:8080"
|
||||||
- "9000-9099:9000-9099"
|
- "9000-9099:9000-9099"
|
||||||
|
# Streaming Hosts (optional): add one line per TCP/UDP port you forward
|
||||||
|
# from the dashboard, matching the target port you'll enter there.
|
||||||
|
# - "25565:25565"
|
||||||
|
# - "25565:25565/udp"
|
||||||
volumes:
|
volumes:
|
||||||
- ${SITE_GATEWAY_DATA:-/DATA/AppData/site-gateway}:/data
|
- ${SITE_GATEWAY_DATA:-/DATA/AppData/site-gateway}:/data
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
+34
-3
@@ -1,27 +1,58 @@
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
site-gateway:
|
site-gateway:
|
||||||
build: .
|
build: .
|
||||||
container_name: site-gateway
|
container_name: site-gateway
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
|
# Bootstrap dashboard credentials. Required — change the password before
|
||||||
|
# starting the container. These become the initial Administrator account;
|
||||||
|
# first-time setup will ask you to confirm or replace them.
|
||||||
ADMIN_USERNAME: admin
|
ADMIN_USERNAME: admin
|
||||||
ADMIN_PASSWORD: change-this-password
|
ADMIN_PASSWORD: change-this-password
|
||||||
# Optional: set a long random SESSION_SECRET to keep sessions valid across
|
|
||||||
# container rebuilds. If omitted, one is derived from ADMIN_USERNAME/ADMIN_PASSWORD.
|
# Optional: set a long random string to keep login sessions valid across
|
||||||
|
# container rebuilds. If omitted, one is derived from the admin
|
||||||
|
# username/password above. Rotating this signs everyone out.
|
||||||
# SESSION_SECRET: ""
|
# SESSION_SECRET: ""
|
||||||
|
|
||||||
|
# Dashboard port inside the container. Change the left side of the
|
||||||
|
# matching entry under `ports:` below if you remap it.
|
||||||
ADMIN_PORT: 8080
|
ADMIN_PORT: 8080
|
||||||
|
|
||||||
|
# Direct-LAN port range Hosted Sites can bind to. Keep this in sync with
|
||||||
|
# the "9000-9099:9000-9099" line under `ports:` below — Docker can't add
|
||||||
|
# a host port to an already-running container, so widen both together
|
||||||
|
# before starting the container if you need a different range.
|
||||||
SITE_PORT_MIN: 9000
|
SITE_PORT_MIN: 9000
|
||||||
SITE_PORT_MAX: 9099
|
SITE_PORT_MAX: 9099
|
||||||
|
|
||||||
|
# Where persistent state lives inside the container. Leave this as
|
||||||
|
# /data and change the host side of the volume mount instead.
|
||||||
DATA_DIR: /data
|
DATA_DIR: /data
|
||||||
|
|
||||||
|
# Optional: encryption password for scheduled Complete/Configuration
|
||||||
|
# backups. Leave empty to store backups unencrypted (not recommended,
|
||||||
|
# since Complete backups include certificate private keys).
|
||||||
BACKUP_PASSWORD: ""
|
BACKUP_PASSWORD: ""
|
||||||
|
|
||||||
|
# User/group the container writes persistent files as. Defaults suit a
|
||||||
|
# typical Linux host; Unraid commonly uses PUID=99, PGID=100.
|
||||||
PUID: 1000
|
PUID: 1000
|
||||||
PGID: 1000
|
PGID: 1000
|
||||||
|
|
||||||
|
# Optional: certificate account email, passed to Caddy's ACME client.
|
||||||
ACME_EMAIL: ""
|
ACME_EMAIL: ""
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
- "443:443"
|
- "443:443"
|
||||||
- "443:443/udp"
|
- "443:443/udp" # HTTP/3 (QUIC) — forward UDP 443 on your router/firewall too
|
||||||
- "8080:8080"
|
- "8080:8080"
|
||||||
- "9000-9099:9000-9099"
|
- "9000-9099:9000-9099"
|
||||||
|
# Streaming Hosts (optional): add one line per TCP/UDP port you forward
|
||||||
|
# from the dashboard, matching the target port you'll enter there.
|
||||||
|
# Example for a Minecraft server:
|
||||||
|
# - "25565:25565"
|
||||||
|
# - "25565:25565/udp"
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/data
|
- ./data:/data
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
|
||||||
|
# ZimaOS App Store / custom-install compose file for Site Gateway.
|
||||||
|
#
|
||||||
|
# Import this file directly (ZimaOS → Docker → Install a Customized App →
|
||||||
|
# paste/select this file), or use it as the source compose for a ZimaOS
|
||||||
|
# App Store submission — the `x-casaos` block below follows ZimaOS's v2
|
||||||
|
# app-store schema (see docs.zimaspace.com/docs/developer/app-store-compose-x-casaos).
|
||||||
|
#
|
||||||
|
# After install, open the ZimaOS app's settings and change ADMIN_PASSWORD
|
||||||
|
# and SESSION_SECRET before exposing this to anything beyond your LAN.
|
||||||
|
|
||||||
|
name: site-gateway
|
||||||
|
|
||||||
|
services:
|
||||||
|
site-gateway:
|
||||||
|
image: ghcr.io/mfwadejr/site-gateway2:latest
|
||||||
|
container_name: site-gateway
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
ADMIN_USERNAME: admin
|
||||||
|
ADMIN_PASSWORD: change-this-password
|
||||||
|
SESSION_SECRET: change-this-too-at-least-32-characters
|
||||||
|
ADMIN_PORT: 8080
|
||||||
|
SITE_PORT_MIN: 9000
|
||||||
|
SITE_PORT_MAX: 9099
|
||||||
|
DATA_DIR: /data
|
||||||
|
BACKUP_PASSWORD: ""
|
||||||
|
# ZimaOS commonly runs its data volumes as 1000:1000; adjust if your
|
||||||
|
# instance differs.
|
||||||
|
PUID: 1000
|
||||||
|
PGID: 1000
|
||||||
|
ACME_EMAIL: ""
|
||||||
|
ports:
|
||||||
|
- target: 8080
|
||||||
|
published: "8080"
|
||||||
|
protocol: tcp
|
||||||
|
- target: 80
|
||||||
|
published: "80"
|
||||||
|
protocol: tcp
|
||||||
|
- target: 443
|
||||||
|
published: "443"
|
||||||
|
protocol: tcp
|
||||||
|
- target: 443
|
||||||
|
published: "443"
|
||||||
|
protocol: udp
|
||||||
|
- target: 9000
|
||||||
|
published: "9000-9099"
|
||||||
|
protocol: tcp
|
||||||
|
# Streaming Hosts (optional): add one entry per TCP/UDP port you forward
|
||||||
|
# from the dashboard, matching the target port you'll enter there.
|
||||||
|
# - target: 25565
|
||||||
|
# published: "25565"
|
||||||
|
# protocol: tcp
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: /DATA/AppData/site-gateway
|
||||||
|
target: /data
|
||||||
|
|
||||||
|
x-casaos:
|
||||||
|
id: dev.mfwadejr.sitegateway
|
||||||
|
main: site-gateway
|
||||||
|
index: /
|
||||||
|
port_map: "8080"
|
||||||
|
scheme: http
|
||||||
|
icon: https://raw.githubusercontent.com/mfwadejr/site-gateway2/main/src/public/site-gateway-icon-approved.png
|
||||||
|
title:
|
||||||
|
en_US: Site Gateway
|
||||||
|
tagline:
|
||||||
|
en_US: Host. Proxy. Secure. A calm dashboard for sites, proxies, and TLS.
|
||||||
|
description:
|
||||||
|
en_US: >-
|
||||||
|
A friendly, self-hosted gateway for homelabs and small teams. Publish
|
||||||
|
static sites, reverse-proxy your apps, forward raw TCP/UDP streams, and
|
||||||
|
manage TLS and access from one dashboard — powered by Caddy.
|
||||||
|
category: Networking
|
||||||
|
author: mfwadejr
|
||||||
|
developer: mfwadejr
|
||||||
|
architectures: ["amd64", "arm64"]
|
||||||
|
version: "0.11.101"
|
||||||
|
update_at: "2026-09-16"
|
||||||
|
website: https://github.com/mfwadejr/site-gateway2
|
||||||
|
repo: https://github.com/mfwadejr/site-gateway2
|
||||||
|
support: https://github.com/mfwadejr/site-gateway2/issues
|
||||||
Reference in New Issue
Block a user