Compare commits
5 Commits
21c0c071a5
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 7b484d640d | |||
| 4afcc37386 | |||
| d9c6d2f8ce | |||
| de21abedc7 | |||
| e79ce045aa |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.claude
|
||||||
@@ -34,9 +34,17 @@ x-casaos:
|
|||||||
architectures:
|
architectures:
|
||||||
- amd64
|
- amd64
|
||||||
- arm64
|
- arm64
|
||||||
|
main: comfyui
|
||||||
author: Alexander Hinrichs
|
author: Alexander Hinrichs
|
||||||
category: Generative AI
|
category: Generative AI
|
||||||
main: comfyui
|
developer: comfyanonymous
|
||||||
|
description:
|
||||||
|
en_us: A powerful and modular Stable Diffusion GUI with a graph/nodes
|
||||||
|
interface. Design and execute advanced AI image generation workflows
|
||||||
|
with support for SD1.x, SD2.x, SDXL, and various other models.
|
||||||
|
Requires NVIDIA GPU for optimal performance.
|
||||||
|
tagline:
|
||||||
|
en_us: Node-based interface for Stable Diffusion workflows
|
||||||
icon: https://git.ct.hinrichs.dev/alexander/CasaOS-alexanders-AppStore/raw/branch/main/Apps/comfyui/icon.png
|
icon: https://git.ct.hinrichs.dev/alexander/CasaOS-alexanders-AppStore/raw/branch/main/Apps/comfyui/icon.png
|
||||||
index: /
|
index: /
|
||||||
port_map: "8188"
|
port_map: "8188"
|
||||||
|
|||||||
60
Apps/geoguesser-ai/README.md
Normal file
60
Apps/geoguesser-ai/README.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# GeoGuesser AI - CasaOS App
|
||||||
|
|
||||||
|
## Icon Required
|
||||||
|
This app needs an icon file (icon.png) to be added to this directory.
|
||||||
|
|
||||||
|
The icon should be:
|
||||||
|
- PNG format
|
||||||
|
- Square dimensions (recommended: 256x256 or 512x512)
|
||||||
|
- Represents geographic/location analysis theme
|
||||||
|
|
||||||
|
## Authentication Setup
|
||||||
|
This app requires authentication to pull container images from git.hinrichs.dev.
|
||||||
|
|
||||||
|
On the CasaOS host system, configure Docker/Podman authentication:
|
||||||
|
```bash
|
||||||
|
docker login git.hinrichs.dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Or create/update ~/.docker/config.json with credentials.
|
||||||
|
|
||||||
|
## Environment Variables
|
||||||
|
All environment variables from the original .env file are configurable during installation:
|
||||||
|
|
||||||
|
### Required
|
||||||
|
- `CLAUDE_API_KEY`: Anthropic Claude API key (get from https://console.anthropic.com/)
|
||||||
|
|
||||||
|
### Database (defaults provided)
|
||||||
|
- `DB_USER`: PostgreSQL username (default: geolocator)
|
||||||
|
- `DB_PASSWORD`: PostgreSQL password (default: geolocator_password)
|
||||||
|
- `DB_NAME`: PostgreSQL database name (default: geolocator_db)
|
||||||
|
- `DB_SSLMODE`: SSL mode for database (default: disable)
|
||||||
|
|
||||||
|
### Application Settings
|
||||||
|
- `ENV`: Application environment (default: production)
|
||||||
|
- `PORT`: Backend API port (default: 3000)
|
||||||
|
- `CLAUDE_MODEL`: Claude model to use (default: claude-sonnet-4-5)
|
||||||
|
- `CLAUDE_API_URL`: Claude API endpoint (default: https://api.anthropic.com/v1/messages)
|
||||||
|
- `USE_MOCK_AI`: Use mock AI for testing (default: false)
|
||||||
|
|
||||||
|
### File Upload
|
||||||
|
- `MAX_IMAGE_SIZE_MB`: Maximum image upload size (default: 10)
|
||||||
|
- `ALLOWED_IMAGE_TYPES`: Allowed MIME types (default: image/jpeg,image/png,image/webp)
|
||||||
|
|
||||||
|
### External APIs
|
||||||
|
- `OVERPASS_API_URL`: OpenStreetMap Overpass API (default: https://overpass-api.de/api/interpreter)
|
||||||
|
- `ELEVATION_API_URL`: Elevation API (default: https://api.open-elevation.com/api/v1/lookup)
|
||||||
|
|
||||||
|
### CORS & Logging
|
||||||
|
- `ALLOWED_ORIGINS`: CORS allowed origins (default: http://localhost:8080)
|
||||||
|
- `LOG_LEVEL`: Log level (default: info)
|
||||||
|
- `LOG_FORMAT`: Log format (default: json)
|
||||||
|
|
||||||
|
## Ports
|
||||||
|
- 8080: Web UI (exposed externally)
|
||||||
|
- 3000: Backend API (internal only)
|
||||||
|
- 5432: PostgreSQL (internal only)
|
||||||
|
|
||||||
|
## Volumes
|
||||||
|
- `/DATA/AppData/$AppID/postgres_data`: PostgreSQL database storage
|
||||||
|
- `/DATA/AppData/$AppID/uploads`: Uploaded images storage
|
||||||
159
Apps/geoguesser-ai/docker-compose.yml
Normal file
159
Apps/geoguesser-ai/docker-compose.yml
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
name: alxndrhi-geoguesser-ai
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
container_name: alxndrhi-geoguesser-ai-postgres
|
||||||
|
image: postgres:16-alpine
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: ${DB_USER:-geolocator}
|
||||||
|
POSTGRES_PASSWORD: ${DB_PASSWORD:-geolocator_password}
|
||||||
|
POSTGRES_DB: ${DB_NAME:-geolocator_db}
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: /DATA/AppData/$AppID/postgres_data
|
||||||
|
target: /var/lib/postgresql/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-geolocator} -d ${DB_NAME:-geolocator_db}"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
networks:
|
||||||
|
- geoguesser-ai-network
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
backend:
|
||||||
|
container_name: alxndrhi-geoguesser-ai-backend
|
||||||
|
image: git.hinrichs.dev/alexander/geoguesser-ai/backend:latest
|
||||||
|
environment:
|
||||||
|
ENV: ${ENV:-production}
|
||||||
|
PORT: ${PORT:-3000}
|
||||||
|
DATABASE_URL: postgresql://${DB_USER:-geolocator}:${DB_PASSWORD:-geolocator_password}@alxndrhi-geoguesser-ai-postgres:5432/${DB_NAME:-geolocator_db}?sslmode=${DB_SSLMODE:-disable}
|
||||||
|
CLAUDE_API_KEY: ${CLAUDE_API_KEY}
|
||||||
|
CLAUDE_API_URL: ${CLAUDE_API_URL:-https://api.anthropic.com/v1/messages}
|
||||||
|
CLAUDE_MODEL: ${CLAUDE_MODEL:-claude-sonnet-4-5}
|
||||||
|
USE_MOCK_AI: ${USE_MOCK_AI:-false}
|
||||||
|
MAX_IMAGE_SIZE_MB: ${MAX_IMAGE_SIZE_MB:-10}
|
||||||
|
ALLOWED_IMAGE_TYPES: ${ALLOWED_IMAGE_TYPES:-image/jpeg,image/png,image/webp}
|
||||||
|
OVERPASS_API_URL: ${OVERPASS_API_URL:-https://overpass-api.de/api/interpreter}
|
||||||
|
ELEVATION_API_URL: ${ELEVATION_API_URL:-https://api.open-elevation.com/api/v1/lookup}
|
||||||
|
ALLOWED_ORIGINS: ${ALLOWED_ORIGINS:-http://localhost:8080}
|
||||||
|
LOG_LEVEL: ${LOG_LEVEL:-info}
|
||||||
|
LOG_FORMAT: ${LOG_FORMAT:-json}
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: /DATA/AppData/$AppID/uploads
|
||||||
|
target: /app/uploads
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/api/v1/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
networks:
|
||||||
|
- geoguesser-ai-network
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
container_name: alxndrhi-geoguesser-ai-frontend
|
||||||
|
image: git.hinrichs.dev/alexander/geoguesser-ai/frontend:latest
|
||||||
|
ports:
|
||||||
|
- target: 8080
|
||||||
|
published: "8080"
|
||||||
|
protocol: tcp
|
||||||
|
depends_on:
|
||||||
|
- backend
|
||||||
|
networks:
|
||||||
|
- geoguesser-ai-network
|
||||||
|
restart: unless-stopped
|
||||||
|
x-casaos:
|
||||||
|
envs:
|
||||||
|
- container: ENV
|
||||||
|
description:
|
||||||
|
en_us: Application environment (development/production)
|
||||||
|
- container: PORT
|
||||||
|
description:
|
||||||
|
en_us: Backend API port
|
||||||
|
- container: DB_USER
|
||||||
|
description:
|
||||||
|
en_us: PostgreSQL database username
|
||||||
|
- container: DB_PASSWORD
|
||||||
|
description:
|
||||||
|
en_us: PostgreSQL database password
|
||||||
|
- container: DB_NAME
|
||||||
|
description:
|
||||||
|
en_us: PostgreSQL database name
|
||||||
|
- container: DB_SSLMODE
|
||||||
|
description:
|
||||||
|
en_us: PostgreSQL SSL mode (disable/require)
|
||||||
|
- container: CLAUDE_API_KEY
|
||||||
|
description:
|
||||||
|
en_us: Anthropic Claude API key for AI analysis
|
||||||
|
- container: CLAUDE_API_URL
|
||||||
|
description:
|
||||||
|
en_us: Claude API endpoint URL
|
||||||
|
- container: CLAUDE_MODEL
|
||||||
|
description:
|
||||||
|
en_us: Claude model identifier to use
|
||||||
|
- container: USE_MOCK_AI
|
||||||
|
description:
|
||||||
|
en_us: Use mock AI responses (true/false)
|
||||||
|
- container: MAX_IMAGE_SIZE_MB
|
||||||
|
description:
|
||||||
|
en_us: Maximum upload image size in MB
|
||||||
|
- container: ALLOWED_IMAGE_TYPES
|
||||||
|
description:
|
||||||
|
en_us: Comma-separated list of allowed image MIME types
|
||||||
|
- container: OVERPASS_API_URL
|
||||||
|
description:
|
||||||
|
en_us: OpenStreetMap Overpass API endpoint
|
||||||
|
- container: ELEVATION_API_URL
|
||||||
|
description:
|
||||||
|
en_us: Elevation data API endpoint
|
||||||
|
- container: ALLOWED_ORIGINS
|
||||||
|
description:
|
||||||
|
en_us: CORS allowed origins (comma-separated)
|
||||||
|
- container: LOG_LEVEL
|
||||||
|
description:
|
||||||
|
en_us: Application log level (debug/info/warn/error)
|
||||||
|
- container: LOG_FORMAT
|
||||||
|
description:
|
||||||
|
en_us: Log output format (json/text)
|
||||||
|
ports:
|
||||||
|
- container: "8080"
|
||||||
|
description:
|
||||||
|
en_us: Web UI HTTP Port
|
||||||
|
volumes:
|
||||||
|
- container: /var/lib/postgresql/data
|
||||||
|
description:
|
||||||
|
en_us: PostgreSQL database storage
|
||||||
|
- container: /app/uploads
|
||||||
|
description:
|
||||||
|
en_us: Uploaded images storage
|
||||||
|
|
||||||
|
networks:
|
||||||
|
geoguesser-ai-network:
|
||||||
|
driver: bridge
|
||||||
|
name: geoguesser-ai-network
|
||||||
|
|
||||||
|
x-casaos:
|
||||||
|
architectures:
|
||||||
|
- amd64
|
||||||
|
- arm64
|
||||||
|
main: frontend
|
||||||
|
author: Alexander Hinrichs
|
||||||
|
category: Utilities
|
||||||
|
developer: Alexander Hinrichs
|
||||||
|
description:
|
||||||
|
en_us: An AI-powered geographic image analyzer that uses Claude AI to
|
||||||
|
identify locations from photos. Upload images and get detailed
|
||||||
|
geolocation analysis including coordinates, landmarks, and contextual
|
||||||
|
information. Requires Anthropic API key for Claude AI access.
|
||||||
|
tagline:
|
||||||
|
en_us: AI-powered geographic image location analyzer
|
||||||
|
icon: https://git.ct.hinrichs.dev/alexander/CasaOS-alexanders-AppStore/raw/branch/main/Apps/geoguesser-ai/icon.png
|
||||||
|
index: /
|
||||||
|
port_map: "8080"
|
||||||
|
scheme: http
|
||||||
|
title:
|
||||||
|
en_us: GeoGuesser AI
|
||||||
@@ -7,7 +7,7 @@ services:
|
|||||||
- GITEA_INSTANCE_URL=https://GITEA_INSTANCE_URL_GOES_HERE
|
- GITEA_INSTANCE_URL=https://GITEA_INSTANCE_URL_GOES_HERE
|
||||||
- GITEA_RUNNER_NAME=runner-01
|
- GITEA_RUNNER_NAME=runner-01
|
||||||
- GITEA_RUNNER_REGISTRATION_TOKEN=GITEA_TOKEN
|
- GITEA_RUNNER_REGISTRATION_TOKEN=GITEA_TOKEN
|
||||||
image: docker.io/gitea/act_runner:latest
|
image: docker.io/gitea/act_runner:0.2.13
|
||||||
labels:
|
labels:
|
||||||
icon: https://git.ct.hinrichs.dev/alexander/CasaOS-alexanders-AppStore/raw/branch/main/Apps/gitea-runner/icon.png
|
icon: https://git.ct.hinrichs.dev/alexander/CasaOS-alexanders-AppStore/raw/branch/main/Apps/gitea-runner/icon.png
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -26,8 +26,16 @@ x-casaos:
|
|||||||
architectures:
|
architectures:
|
||||||
- amd64
|
- amd64
|
||||||
- arm64
|
- arm64
|
||||||
|
main: runner
|
||||||
author: Alexander Hinrichs
|
author: Alexander Hinrichs
|
||||||
category: Development
|
category: Development
|
||||||
|
developer: Gitea
|
||||||
|
description:
|
||||||
|
en_us: A lightweight CI/CD runner for Gitea Actions, compatible with
|
||||||
|
GitHub Actions workflows. Enables automated build, test, and
|
||||||
|
deployment pipelines for your self-hosted Git repositories.
|
||||||
|
tagline:
|
||||||
|
en_us: Self-hosted CI/CD runner for Gitea Actions
|
||||||
icon: https://git.ct.hinrichs.dev/alexander/CasaOS-alexanders-AppStore/raw/branch/main/Apps/gitea-runner/icon.png
|
icon: https://git.ct.hinrichs.dev/alexander/CasaOS-alexanders-AppStore/raw/branch/main/Apps/gitea-runner/icon.png
|
||||||
index: /
|
index: /
|
||||||
store_app_id: gitea-runner
|
store_app_id: gitea-runner
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ name: alxndrhi-tududi
|
|||||||
services:
|
services:
|
||||||
tududi:
|
tududi:
|
||||||
container_name: alxndrhi-tududi
|
container_name: alxndrhi-tududi
|
||||||
image: chrisvel/tududi:latest
|
image: chrisvel/tududi:0.86.1
|
||||||
ports:
|
ports:
|
||||||
- target: 3002
|
- target: 3002
|
||||||
published: "3002"
|
published: "3002"
|
||||||
@@ -25,9 +25,17 @@ x-casaos:
|
|||||||
architectures:
|
architectures:
|
||||||
- amd64
|
- amd64
|
||||||
- arm64
|
- arm64
|
||||||
|
main: tududi
|
||||||
author: Alexander Hinrichs
|
author: Alexander Hinrichs
|
||||||
category: Project Management
|
category: Project Management
|
||||||
main: tududi
|
developer: chrisvel
|
||||||
|
description:
|
||||||
|
en_us: A minimalist, open-source project management and task tracking
|
||||||
|
tool. Organize projects, manage tasks with priorities and deadlines,
|
||||||
|
and collaborate with teams through a clean, distraction-free
|
||||||
|
interface. Supports file attachments and activity tracking.
|
||||||
|
tagline:
|
||||||
|
en_us: Simple and elegant project management tool
|
||||||
icon: https://git.ct.hinrichs.dev/alexander/CasaOS-alexanders-AppStore/raw/branch/main/Apps/tududi/icon.jpeg
|
icon: https://git.ct.hinrichs.dev/alexander/CasaOS-alexanders-AppStore/raw/branch/main/Apps/tududi/icon.jpeg
|
||||||
index: /
|
index: /
|
||||||
port_map: "3002"
|
port_map: "3002"
|
||||||
|
|||||||
Reference in New Issue
Block a user