services: silverbullet: image: zefhemel/silverbullet:latest restart: unless-stopped environment: SB_USER: "${SB_USER:-admin:changeme}" volumes: - ./notes:/space ports: - "3000:3000" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000"] interval: 30s timeout: 5s retries: 3 # Auto-commit notes to git every 5 minutes git-sync: image: alpine/git:latest restart: unless-stopped volumes: - ./notes:/space - ./.git:/repo-git:ro entrypoint: /bin/sh command: | -c ' cd /space git init 2>/dev/null || true git config user.name "NoteGraph Auto-Sync" git config user.email "notegraph@andreknie.de" while true; do sleep 300 cd /space git add -A if ! git diff --cached --quiet 2>/dev/null; then git commit -m "auto: sync notes $(date +%Y-%m-%d_%H:%M)" fi done ' # Ingestion pipeline: web upload + drop-folder watcher ingestion: build: context: ./ingestion restart: unless-stopped ports: - "8001:8001" volumes: - ./notes:/app/notes - ./ingestion/inbox:/app/inbox env_file: - .env environment: NOTES_DIR: /app/notes INBOX_DIR: /app/inbox depends_on: - silverbullet