services: lifeos: build: context: /opt/lifeos dockerfile: Dockerfile image: lifeos:local container_name: lifeos restart: unless-stopped ports: # 8080 on this node is taken by unifi-os-server. - "8095:8080" environment: - TZ=America/Chicago # AI companion -> Ollama on the GPU machine (OpenAI-compatible endpoint). - AI_BRIDGE_URL=http://192.168.86.150:11434 - AI_MODEL=gemma4:latest # Ollama needs ~46s to cold-load gemma4 (0.7s once warm); upstream's # hardcoded 30s timeout would fail every first message. - AI_TIMEOUT=120 volumes: # SQLite (WAL) stays on local disk: NFS v3 locking breaks it, same reason # guacamole-db lives on /var/lib. - /var/lib/lifeos:/data/.lifeos labels: - "com.centurylinklabs.watchtower.enable=false" mem_limit: 1g healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8080/api/health-check').read()"] interval: 60s timeout: 10s retries: 3 start_period: 30s