Files
ultima-ai/docker-compose.yml
T
renovate-bot 4af8e28713
Gitea Branch PR & Docker Deployment / Check and Create PR (push) Successful in 2m11s
Gitea Branch PR & Docker Deployment / Generate list of added/modified/deleted services (push) Successful in 1m7s
Gitea Branch PR & Docker Deployment / Docker Compose Dry Run (push) Successful in 2m49s
Gitea Branch PR & Docker Deployment / PR Merge (push) Successful in 1m2s
Gitea Branch PR & Docker Deployment / Docker Compose Deployment (push) Successful in 2m9s
Renovate PR Deployment / Renovate PR Deployment (pull_request) Failing after 2m15s
🔧 Renovate: Update (major) gitea/gitea-mcp-server Docker tag to v1
2026-05-10 15:04:07 +00:00

327 lines
11 KiB
YAML

name: ultima
networks:
default:
name: ultima_default
services:
beszel-agent:
container_name: beszel-agent
environment:
PORT: 45876
# Do not remove quotes around the key
KEY: "${BESZEL_ULTIMA_AGENT_KEY}"
TOKEN: ${BESZEL_ULTIMA_TOKEN}
HUB_URL: http://192.168.1.254:22220
expose:
- 45876
image: henrygd/beszel-agent:0.18.7@sha256:8874e2c53f9de5e063a6a80d6b617e20fa593ac5dc4eb4c6ce1f912f510f38f8
network_mode: host
restart: unless-stopped
volumes:
- ${ULTIMA_DOCKER_DIR}/beszel-agent:/var/lib/beszel-agent
- /var/run/docker.sock:/var/run/docker.sock:ro
context7-mcp:
container_name: context7-mcp
expose:
- 8080
image: mcp/context7:latest@sha256:1174e6a29634a83b2be93ac1fefabf63265f498c02c72201fe3464e687dd8836
restart: unless-stopped
docker-socket-proxy:
container_name: dockerproxy
environment:
AUTH: 1
BUILD: 1
COMMIT: 1
CONFIGS: 1
CONTAINERS: 1
DISTRIBUTION: 1
EVENTS: 1
EXEC: 1
GPRC: 1
IMAGES: 1
INFO: 1
NETWORKS: 1
NODES: 1
POST: 1
PLUGINS: 1
SERVICES: 1
SESSION: 1
SYSTEM: 1
TASKS: 1
VOLUMES: 1
LOG_LEVEL: debug
image: ghcr.io/tecnativa/docker-socket-proxy:latest@sha256:1f3a6f303320723d199d2316a3e82b2e2685d86c275d5e3deeaf182573b47476
ports:
- 2375:2375
privileged: true
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
faster-whisper:
container_name: faster-whisper
environment:
PUID: ${PUID}
PGID: ${PGID}
TZ: ${TZ}
WHISPER_MODEL: large
LOCAL_ONLY: #optional
WHISPER_BEAM: 1 #optional
WHISPER_LANG: en #optional
image: lscr.io/linuxserver/faster-whisper:latest@sha256:5398c67e170b9a2a2d49920bce1114b01e8d9212a77db08ddaebf94d35f5a833
ports:
- "10300:10300"
restart: unless-stopped
volumes:
- ${ULTIMA_DOCKER_DIR}/faster-whisper/:/config
gitea-mcp:
command: [ "/app/gitea-mcp", "-t", "http", "--port", "8080", "-d" ]
container_name: gitea-mcp
environment:
GITEA_INSTANCE_URL: http://192.168.1.254:3013
GITEA_ACCESS_TOKEN: ${GITEA_ROOT_TOKEN}
expose:
- 8080
image: gitea/gitea-mcp-server:1.2.0@sha256:bd62afc2ca25db7b5939f952cc73f1e9399c2dc8e3c143f520d927490ee74bbb
restart: unless-stopped
meilisearch:
container_name: meilisearch
environment:
MEILI_HOST: http://meilisearch:7700
MEILI_NO_ANALYTICS: true
MEILI_MASTER_KEY: ${MEILISEARCH_MASTER_KEY}
image: getmeili/meilisearch:v1.43@sha256:5d4e1353927785744486fe317d263f442710ab5b27b1983aa1b719dfe2c665b6
ports:
- 7700:7700
restart: always
user: ${PUID}:${PGID}
volumes:
- ${ULTIMA_DOCKER_DIR}/meilisearch:/meili_data
navidrome-mcp:
container_name: navidrome-mcp
image: git.trez.wtf/trez/navidrome-mcp:latest@sha256:4c98af82902471ae411126b0333370614c5d71ec8a2819a90fd2bdff2170ef05
expose:
- 5000
environment:
NAVIDROME_URL: "https://navi.trez.wtf"
NAVIDROME_USERNAME: admin
NAVIDROME_PASSWORD: ${NAVIDROME_PASSWORD}
LASTFM_API_KEY: ${LASTFM_API_KEY}
RADIO_BROWSER_USER_AGENT: "Navidrome-MCP/1.0"
LYRICS_PROVIDER: "lrclib"
LRCLIB_USER_AGENT: "Navidrome-MCP/1.0"
# NAVIDROME_DEFAULT_LIBRARIES: ""
restart: unless-stopped
ollama:
container_name: ollama
# environment:
image: ollama/ollama@sha256:d00473cb58f0082c07cd6ed0d326a8a86f443ab69c51f8fc2b1a41687d45c661
ports:
- 11434:11434
privileged: true
restart: unless-stopped
volumes:
- ollama:/root/.ollama
piper:
container_name: piper
environment:
PUID: ${PUID}
PGID: ${PGID}
TZ: ${TZ}
PIPER_VOICE: en_GB-jenny_dioco-medium
LOCAL_ONLY: #optional
PIPER_LENGTH: 1.0 #optional
PIPER_NOISE: 0.667 #optional
PIPER_NOISEW: 0.333 #optional
PIPER_SPEAKER: 0 #optional
NO_STREAMING: #optional
image: lscr.io/linuxserver/piper:latest@sha256:91ef2107add9f8292e2396595fe76f5c888d7029fe05cb697b03e34b92d863cf
ports:
- 10200:10200
restart: unless-stopped
volumes:
- ${ULTIMA_DOCKER_DIR}/piper/:/config
portainer-agent:
container_name: portainer_agent
image: portainer/agent:latest@sha256:dc0e8285f8b4c105c3237f1cc0022f92dd265c53ced5f53b9ce7c9741144e879
volumes:
- /:/host
- /var/lib/docker/volumes:/var/lib/docker/volumes
- /var/run/docker.sock:/var/run/docker.sock
restart: always
ports:
- 9001:9001
scanopy-daemon:
container_name: scanopy-daemon
environment:
SCANOPY_LOG_LEVEL: debug
SCANOPY_SERVER_URL: http://192.168.1.248:60072
SCANOPY_NETWORK_ID: ${SCANOPY_NETWORK_ID}
SCANOPY_DAEMON_API_KEY: ${SCANOPY_DAEMON_API_KEY}
SCANOPY_USER_ID: ${SCANOPY_USER_ID}
SCANOPY_NAME: scanopy-daemon-tar-valon
SCANOPY_MODE: daemon_poll
healthcheck:
test: [ "CMD-SHELL", "curl -f http://localhost:60073/api/health || exit 1" ]
interval: 5s
timeout: 3s
retries: 15
image: ghcr.io/scanopy/scanopy/daemon:latest@sha256:98cdba02b2b127462cba87c10dacdc5671354e2dd43a124b72f8cfd2dfb4b911
network_mode: host
privileged: true
restart: unless-stopped
volumes:
- scanopy-daemon-config:/root/.config/daemon
- /var/run/docker.sock:/var/run/docker.sock:ro
scanopy-pg:
container_name: scanopy-pg
environment:
POSTGRES_DB: scanopy
POSTGRES_USER: scanopy
POSTGRES_PASSWORD: ${SCANOPY_PG_PASSWORD}
expose:
- 5432
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U scanopy" ]
interval: 10s
timeout: 5s
retries: 5
image: postgres:17-alpine@sha256:c7526c0f6c3f30260a563d7bcf8ad778effac59a44f8ffa86678c35418338609
restart: unless-stopped
volumes:
- scanopy-pg-data:/var/lib/postgresql/data
scanopy-server:
container_name: scanopy-server
image: ghcr.io/scanopy/scanopy/server:latest@sha256:e3c55cd639b9643c01e21c1fcc5470c6524ea5c3ac316768bf028737c656bbe6
depends_on:
scanopy-pg:
condition: service_healthy
scanopy-daemon:
condition: service_started
environment:
SCANOPY_LOG_LEVEL: debug
SCANOPY_DATABASE_URL: postgresql://scanopy:${SCANOPY_PG_PASSWORD}@scanopy-pg:5432/scanopy
SCANOPY_WEB_EXTERNAL_PATH: /app/static
SCANOPY_PUBLIC_URL: http://192.168.1.248:60072
SCANOPY_INTEGRATED_DAEMON_URL: http://host.docker.internal:60073
SCANOPY_SMTP_RELAY: 192.168.1.254:25
SCANOPY_SMTP_USERNAME: ${POSTAL_SMTP_AUTH_USER}
SCANOPY_SMTP_PASSWORD: ${POSTAL_SMTP_AUTH_PASSWORD}
SCANOPY_SMTP_EMAIL: noreply@trez.wtf
extra_hosts:
- "host.docker.internal:host-gateway"
ports:
- 60072:60072
restart: unless-stopped
volumes:
- ${ULTIMA_DOCKER_DIR}/scanopy:/data
scriberr:
container_name: scriberr
hostname: scriberr
image: ghcr.io/rishikanthc/scriberr:v1.2.0@sha256:9e36448fb5a6003b28cd3d9ac783e8cbef5ed916936c20ec353a55fa380484f4
environment:
PUID: ${PUID}
PGID: ${PGID}
APP_ENV: production # DO NOT CHANGE THIS
ports:
- 8080:8080
restart: unless-stopped
volumes:
- scriberr_data:/app/data # volume for data
- scriberr_env_data:/app/whisperx-env # volume for models and python envs
searxng-mcp:
container_name: searxng-mcp
environment:
SEARXNG_URL: http://192.168.1.254:8095
MCP_HTTP_PORT: 3000
expose:
- 3000
image: isokoliuk/mcp-searxng:latest@sha256:2d936f821eae1f4859b3534e1dd10d73f9c3687f366f1755538cf3217b2716f0
restart: unless-stopped
stdin_open: true
signoz-logspout:
command: signoz://192.168.1.254:8082
container_name: signoz-logspout
environment:
ENV: prod
SIGNOZ_LOG_ENDPOINT: http://192.168.1.254:8082
image: pavanputhra/logspout-signoz:2025.07.19-887dfeb@sha256:6da8ce12279a5262de8b2d5c083ce82d4c878c4eab702b4d328afe147ed7553b
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
signoz-mcp:
container_name: signoz-mcp-server
image: signoz/signoz-mcp-server:v0.0.5@sha256:e0b8fe3eee634e1c7a45470c734e50b19c74e065add73834519e37d89d7ce092
environment:
SIGNOZ_URL: http://192.168.1.254:36113
SIGNOZ_API_KEY: ${SIGNOZ_API_KEY}
TRANSPORT_MODE: http
MCP_SERVER_PORT: 8000
LOG_LEVEL: info
expose:
- 8000
restart: unless-stopped
speaches:
container_name: speaches
image: ghcr.io/speaches-ai/speaches:latest-cpu@sha256:21e3df06d842fb7802ab470dd77c25f0e8c0d22950e8d8c6ae886e851af53ef8
environment:
LOG_LEVEL: debug
ALLOW_ORIGINS: "[\"*\"]"
ENABLE_UI: true
CHAT_COMPLETION_BASE_URL: "http://ollama:11434/v1"
CHAT_COMPLETION_API_KEY: "this-is-a-place-holder"
PRELOAD_MODELS: "[\"Systran/faster-whisper-large-v3\"]"
healthcheck:
test: [ "CMD", "curl", "--fail", "http://0.0.0.0:8000/health" ] # TODO: won't work if a user changes the port
interval: 30s
timeout: 10s
retries: 3
start_period: 5s
ports:
- 42967:8000
restart: unless-stopped
volumes:
- speaches-hf-hub-cache:/home/ubuntu/.cache/huggingface/hub
stable-diffusion-webui:
container_name: stable-diffusion-webui
image: ghcr.io/neggles/sd-webui-docker:latest@sha256:1795fe796e1dad0d8d3baa9ef7c38a255b69c0878b76869feecc617bfd015e53
environment:
CLI_ARGS: "--api --use-cpu all --precision full --no-half --skip-torch-cuda-test
--ckpt /empty.pt --do-not-download-clip --disable-nan-check
--disable-opt-split-attention" # will have to be changed for new hardware
PYTHONUNBUFFERED: "1"
TERM: "vt100"
SD_WEBUI_VARIANT: "default"
ports:
- 7860:7860
restart: unless-stopped
volumes:
- ${ULTIMA_DOCKER_DIR}/stable-diffusion-webui/data:/data
- ${ULTIMA_DOCKER_DIR}/stable-diffusion-webui/output:/output
webui-mcpo:
container_name: webui-mcpo
image: masterno12/webui-mcpo:latest@sha256:018df5374c627ebeb82ea395a9c26f7439cf8a66c003608f390d09eecfc8db7d
ports:
- 18003:8000
restart: unless-stopped
volumes:
- ${ULTIMA_DOCKER_DIR}/mcpo:/opt/mcpo
wikipedia-mcp:
command: [ "--transport", "sse", "--country", "US", "--enable-cache" ]
container_name: wikipedia-mcp
expose:
- 8000
image: mcp/wikipedia-mcp:latest@sha256:32ce608113696e8d6efc8bbfcc1ef4d52552a3543a3cd733427c6169767849d2
restart: unless-stopped
volumes:
speaches-hf-hub-cache:
name: speaches-hf-hub-cache
ollama:
name: ollama
scanopy-daemon-config:
name: scanopy-daemon-config
scanopy-pg-data:
name: scanopy-pg-data
scriberr_data:
name: scriberr_data
scriberr_env_data:
name: scriberr_env_data