GitNexus Docker & Self-Hosted Deployment

GitHub

GitNexus: The Zero-Server Code Intelligence Engine

47,840 stars TypeScript TypeScript 1 file ยท ~49,287 tokens
RAW Compose
1. Pull Image (DOCKERHUB) docker pull library/${SERVER_IMAGE
2. Docker Run (1-Click Launch) docker run -d --name gitnexus -p 4747:4747 --restart always ${SERVER_IMAGE:-ghcr.io/abhigyanpatwari/gitnexus:latest}
3. Podman Run podman run -d --name gitnexus -p 4747:4747 --restart always ${SERVER_IMAGE:-ghcr.io/abhigyanpatwari/gitnexus:latest}
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/library/${SERVER_IMAGE:-ghcr.io/abhigyanpatwari/gitnexus
5. ORAS Pull (OCI Artifact) oras pull ${SERVER_IMAGE:-ghcr.io/abhigyanpatwari/gitnexus:latest}
6. Compose Deployment docker compose up -d
docker-compose.yaml
Download .yml
services:
  gitnexus-server:
    image: ${SERVER_IMAGE:-ghcr.io/abhigyanpatwari/gitnexus:latest}
    container_name: ${SERVER_CONTAINER_NAME:-gitnexus-server}
    # Map the server to the same host port the web UI expects by default
    # (http://localhost:4747). The browser runs on the host, so the UI's
    # built-in default works without any reconfiguration.
    ports:
      - '${SERVER_HOST_PORT:-4747}:4747'
    volumes:
      # Persist the global registry, indexes, and cloned repos across runs.
      - gitnexus-data:/data/gitnexus
      # Optional: mount a host workspace so `gitnexus index <path>` can see
      # repos you already have on disk. The default points at an empty
      # `./workspace/` sibling that compose will create on first start โ€”
      # it intentionally does NOT bind-mount the repo root, which would
      # expose `.git`, `.env`, and CI secrets to the container.
      # Override with `WORKSPACE_DIR=/abs/path/to/your/repos`.
      - ${WORKSPACE_DIR:-./workspace}:/workspace:ro
    restart: unless-stopped
    healthcheck:
      test: ['CMD', 'curl', '-f', 'http://localhost:4747/api/health']
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 15s

  gitnexus-web:
    image: ${WEB_IMAGE:-ghcr.io/abhigyanpatwari/gitnexus-web:latest}
    container_name: ${WEB_CONTAINER_NAME:-gitnexus-web}
    ports:
      - '${WEB_HOST_PORT:-4173}:4173'
    # Override the backend URL served to the browser. The default
    # (http://localhost:4747) works when both containers run locally.
    # Set GITNEXUS_BACKEND_URL in your .env or shell for remote/custom setups:
    #   GITNEXUS_BACKEND_URL=http://<server-ip>:4747
    environment:
      - GITNEXUS_BACKEND_URL=${GITNEXUS_BACKEND_URL:-}
    depends_on:
      gitnexus-server:
        condition: service_healthy
    restart: unless-stopped
    healthcheck:
      test: ['CMD', 'curl', '-f', 'http://localhost:4173/']
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 10s

volumes:
  gitnexus-data: