Add Unraid deployment template
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
# GeoIntel Unraid template
|
||||
|
||||
GeoIntel is a multi-container Docker Compose stack:
|
||||
|
||||
- `db`: PostGIS 16 / PostGIS 3.4
|
||||
- `backend`: FastAPI/GIS runtime
|
||||
- `frontend`: nginx-served React app with `/api` and `/health` proxying to the backend
|
||||
|
||||
The normal browser entrypoint is:
|
||||
|
||||
```text
|
||||
http://<unraid-ip>:${GEOINTEL_FRONTEND_PORT}
|
||||
```
|
||||
|
||||
## Files
|
||||
|
||||
- `geointel.env.example`: copy this to the repository checkout as `.env`.
|
||||
- `geointel-unraid-template.xml`: Unraid/DockerMan-style metadata for the editable settings.
|
||||
- `geointel-icon.svg`: icon source for template/app metadata.
|
||||
|
||||
The frontend also serves the same icon at:
|
||||
|
||||
```text
|
||||
http://<unraid-ip>:${GEOINTEL_FRONTEND_PORT}/geointel-icon.svg
|
||||
```
|
||||
|
||||
## First setup on Unraid
|
||||
|
||||
From the Unraid shell:
|
||||
|
||||
```bash
|
||||
cd /mnt/user/appdata
|
||||
git clone gitea-widefrog:NuklearRabbit/geointel.git geointel
|
||||
cd /mnt/user/appdata/geointel
|
||||
cp deploy/unraid/geointel.env.example .env
|
||||
```
|
||||
|
||||
Edit `.env` before starting the stack:
|
||||
|
||||
```bash
|
||||
nano .env
|
||||
```
|
||||
|
||||
Common values:
|
||||
|
||||
```env
|
||||
GEOINTEL_FRONTEND_PORT=1202
|
||||
GEOINTEL_BACKEND_PORT=8000
|
||||
GEOINTEL_STORAGE_PATH=/mnt/user/appdata/geointel/storage
|
||||
GEOINTEL_POSTGRES_PASSWORD=change-me-before-shared-use
|
||||
GEOINTEL_CORS_ORIGINS=http://localhost:1202,http://127.0.0.1:1202,http://192.168.10.150:1202
|
||||
```
|
||||
|
||||
Start or rebuild:
|
||||
|
||||
```bash
|
||||
docker compose config
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
Validate:
|
||||
|
||||
```bash
|
||||
bash scripts/live_migration_smoke.sh
|
||||
bash scripts/verify_browser_runtime.sh "http://192.168.10.150:${GEOINTEL_FRONTEND_PORT:-1202}"
|
||||
```
|
||||
|
||||
## Change ports
|
||||
|
||||
Change the web UI port:
|
||||
|
||||
```env
|
||||
GEOINTEL_FRONTEND_PORT=1203
|
||||
```
|
||||
|
||||
If you expose a different web port, also update CORS origins:
|
||||
|
||||
```env
|
||||
GEOINTEL_CORS_ORIGINS=http://localhost:1203,http://127.0.0.1:1203,http://192.168.10.150:1203
|
||||
```
|
||||
|
||||
Apply:
|
||||
|
||||
```bash
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
The database port is intentionally not published to the LAN. The backend reaches it through the internal Compose service name `db`.
|
||||
|
||||
## Update from Gitea
|
||||
|
||||
```bash
|
||||
cd /mnt/user/appdata/geointel
|
||||
git fetch origin main
|
||||
git reset --hard origin/main
|
||||
docker compose up -d --build
|
||||
bash scripts/live_migration_smoke.sh
|
||||
```
|
||||
|
||||
## Cleanup notes
|
||||
|
||||
Safe cache cleanup if Docker build cache fills the Unraid Docker image:
|
||||
|
||||
```bash
|
||||
docker builder prune -af
|
||||
```
|
||||
|
||||
Avoid broad volume pruning unless you explicitly intend to remove persisted PostGIS data or GeoIntel artifacts.
|
||||
@@ -0,0 +1,20 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" role="img" aria-labelledby="title desc">
|
||||
<title id="title">GeoIntel Kempen</title>
|
||||
<desc id="desc">Hexagonal map and intelligence mark for the GeoIntel workbench.</desc>
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="32" x2="224" y1="224" y2="32" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#0f766e"/>
|
||||
<stop offset="0.52" stop-color="#2563eb"/>
|
||||
<stop offset="1" stop-color="#111827"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="256" height="256" rx="48" fill="url(#bg)"/>
|
||||
<path d="M128 28 213 77v102l-85 49-85-49V77z" fill="#ffffff" opacity="0.12"/>
|
||||
<path d="M128 45 198 86v84l-70 41-70-41V86z" fill="none" stroke="#e0f2fe" stroke-width="10"/>
|
||||
<path d="M79 91 128 63l49 28v57l-49 28-49-28z" fill="#ecfeff" opacity="0.95"/>
|
||||
<path d="M86 145c18-10 37-10 56 0 17 9 33 9 48 0v26l-62 36-62-36v-19c7 0 14-2 20-7z" fill="#14b8a6" opacity="0.9"/>
|
||||
<path d="M66 106c17 9 34 9 51 0 20-11 40-11 60 0 5 3 10 5 15 6" fill="none" stroke="#2563eb" stroke-width="9" stroke-linecap="round"/>
|
||||
<circle cx="128" cy="120" r="19" fill="#111827"/>
|
||||
<circle cx="128" cy="120" r="8" fill="#67e8f9"/>
|
||||
<path d="M128 101v-24M128 163v-24M109 120H85M171 120h-24" stroke="#111827" stroke-width="8" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Container version="2">
|
||||
<Name>GeoIntel Kempen</Name>
|
||||
<Repository>Local Docker Compose stack</Repository>
|
||||
<Registry>gitea-widefrog:NuklearRabbit/geointel.git</Registry>
|
||||
<Network>bridge</Network>
|
||||
<Shell>sh</Shell>
|
||||
<Privileged>false</Privileged>
|
||||
<Support>http://192.168.10.150:1202</Support>
|
||||
<Project>GeoIntel Kempen</Project>
|
||||
<Overview>GeoIntel is a multi-container Docker Compose stack for the GeoIntel Kempen GeoAI Workbench: PostGIS, FastAPI and React/MapLibre. Use this template together with deploy/unraid/geointel.env.example and docker-compose.yml; it documents the editable Unraid settings for the Compose stack.</Overview>
|
||||
<Category>Productivity: Tools: GIS:</Category>
|
||||
<WebUI>http://[IP]:[PORT:1202]/</WebUI>
|
||||
<TemplateURL>deploy/unraid/geointel-unraid-template.xml</TemplateURL>
|
||||
<Icon>http://[IP]:[PORT:1202]/geointel-icon.svg</Icon>
|
||||
<ExtraParams/>
|
||||
<PostArgs/>
|
||||
<CPUset/>
|
||||
<DateInstalled/>
|
||||
<DonateText/>
|
||||
<DonateLink/>
|
||||
<Description>
|
||||
GeoIntel Kempen runs as a Docker Compose stack with services db, backend and frontend. Edit the matching .env variables to change ports and paths, then run docker compose up -d --build from /mnt/user/appdata/geointel.
|
||||
</Description>
|
||||
<Config Name="Web UI Port" Target="GEOINTEL_FRONTEND_PORT" Default="1202" Mode="" Description="Host port mapped to the frontend nginx container port 80." Type="Variable" Display="always" Required="true" Mask="false">1202</Config>
|
||||
<Config Name="Backend API Port" Target="GEOINTEL_BACKEND_PORT" Default="8000" Mode="" Description="Optional host port mapped to backend container port 8000. Normal browser traffic uses the frontend /api proxy." Type="Variable" Display="advanced" Required="true" Mask="false">8000</Config>
|
||||
<Config Name="Storage Path" Target="GEOINTEL_STORAGE_PATH" Default="/mnt/user/appdata/geointel/storage" Mode="rw" Description="Persistent GeoIntel artifact storage for uploads, tiles, masks, reports and exports." Type="Path" Display="always" Required="true" Mask="false">/mnt/user/appdata/geointel/storage</Config>
|
||||
<Config Name="Postgres Database" Target="GEOINTEL_POSTGRES_DB" Default="geointel" Mode="" Description="Internal PostGIS database name." Type="Variable" Display="advanced" Required="true" Mask="false">geointel</Config>
|
||||
<Config Name="Postgres User" Target="GEOINTEL_POSTGRES_USER" Default="geointel" Mode="" Description="Internal PostGIS database user." Type="Variable" Display="advanced" Required="true" Mask="false">geointel</Config>
|
||||
<Config Name="Postgres Password" Target="GEOINTEL_POSTGRES_PASSWORD" Default="change-me-before-shared-use" Mode="" Description="Internal PostGIS database password. Change before shared use." Type="Variable" Display="advanced" Required="true" Mask="true">change-me-before-shared-use</Config>
|
||||
<Config Name="CORS Origins" Target="GEOINTEL_CORS_ORIGINS" Default="http://localhost:1202,http://127.0.0.1:1202,http://192.168.10.150:1202" Mode="" Description="Comma-separated browser origins allowed to call the backend directly." Type="Variable" Display="advanced" Required="false" Mask="false">http://localhost:1202,http://127.0.0.1:1202,http://192.168.10.150:1202</Config>
|
||||
<Config Name="Max Upload MB" Target="GEOINTEL_MAX_UPLOAD_MB" Default="500" Mode="" Description="Maximum upload size in MiB enforced by the backend settings." Type="Variable" Display="advanced" Required="true" Mask="false">500</Config>
|
||||
</Container>
|
||||
@@ -0,0 +1,23 @@
|
||||
# GeoIntel Unraid/Compose environment template.
|
||||
# Copy this file to /mnt/user/appdata/geointel/.env and edit values there.
|
||||
|
||||
# Browser URL: http://<unraid-ip>:<GEOINTEL_FRONTEND_PORT>
|
||||
GEOINTEL_FRONTEND_PORT=1202
|
||||
|
||||
# Optional direct backend API port. The frontend proxies /api and /health, so this
|
||||
# does not need to be exposed to normal browser users.
|
||||
GEOINTEL_BACKEND_PORT=8000
|
||||
|
||||
# Persisted application artifacts: uploads, tiles, masks, reports and exports.
|
||||
GEOINTEL_STORAGE_PATH=/mnt/user/appdata/geointel/storage
|
||||
|
||||
# Internal PostGIS database settings. The database is not published to the LAN.
|
||||
GEOINTEL_POSTGRES_DB=geointel
|
||||
GEOINTEL_POSTGRES_USER=geointel
|
||||
GEOINTEL_POSTGRES_PASSWORD=change-me-before-shared-use
|
||||
|
||||
# Browser origins allowed when directly calling the backend API.
|
||||
GEOINTEL_CORS_ORIGINS=http://localhost:1202,http://127.0.0.1:1202,http://192.168.10.150:1202
|
||||
|
||||
# Upload guard in MiB.
|
||||
GEOINTEL_MAX_UPLOAD_MB=500
|
||||
Reference in New Issue
Block a user