diff --git a/surfsense_web/content/docs/docker-installation/docker-compose.mdx b/surfsense_web/content/docs/docker-installation/docker-compose.mdx index bf94c3dcc..560b64464 100644 --- a/surfsense_web/content/docs/docker-installation/docker-compose.mdx +++ b/surfsense_web/content/docs/docker-installation/docker-compose.mdx @@ -55,10 +55,50 @@ SurfSense publishes CPU and CUDA backend image variants. The frontend image is n All backend variants are published for `linux/amd64` and `linux/arm64`. CUDA on `linux/arm64` is best-effort. - -`SURFSENSE_VARIANT` only selects the GPU-built backend image. GPU device access is added separately in Phase 3. + +GPU acceleration needs two settings: `SURFSENSE_VARIANT` selects the CUDA image, and `COMPOSE_FILE` enables the GPU device overlay. The host must have the NVIDIA Container Toolkit installed. +### NVIDIA GPU Acceleration + +For most NVIDIA systems, add these values to `.env` to use the CUDA 12.8 image: + +```dotenv +SURFSENSE_VARIANT=cuda +COMPOSE_FILE=docker-compose.yml:docker-compose.gpu.yml +SURFSENSE_GPU_COUNT=1 +``` + +Use `SURFSENSE_VARIANT=cuda126` for older NVIDIA driver stacks or older GPUs that need the CUDA 12.6 fallback image. + +On Windows, use `;` instead of `:` in `COMPOSE_FILE` inside `.env`: + +```dotenv +COMPOSE_FILE=docker-compose.yml;docker-compose.gpu.yml +``` + +To switch variants later, edit `SURFSENSE_VARIANT` and `COMPOSE_FILE` in `.env`, then run: + +```bash +docker compose pull +docker compose up -d --wait +``` + +### Automatic Updates + +Manual Docker Compose installs do not start Watchtower automatically. To enable external automatic updates, run Watchtower separately: + +```bash +docker run -d --name watchtower \ + --restart unless-stopped \ + -v /var/run/docker.sock:/var/run/docker.sock \ + nickfedor/watchtower \ + --label-enable \ + --interval 86400 +``` + +SurfSense containers are labeled for Watchtower, so `--label-enable` limits updates to the SurfSense services. + ### Ports | Variable | Description | Default | diff --git a/surfsense_web/content/docs/docker-installation/install-script.mdx b/surfsense_web/content/docs/docker-installation/install-script.mdx index 50ccc7288..8b42c1962 100644 --- a/surfsense_web/content/docs/docker-installation/install-script.mdx +++ b/surfsense_web/content/docs/docker-installation/install-script.mdx @@ -3,7 +3,7 @@ title: One-Line Install Script description: One-command installation of SurfSense using Docker --- -Downloads the compose files, generates a `SECRET_KEY`, starts all services, and sets up [Watchtower](https://github.com/nicholas-fedor/watchtower) for automatic daily updates. +Downloads the compose files, generates a `SECRET_KEY`, starts all services with `docker compose up -d --wait`, and starts [Watchtower](https://github.com/nicholas-fedor/watchtower) as an external updater for automatic daily updates. **Prerequisites:** [Docker Desktop](https://www.docker.com/products/docker-desktop/) must be installed and running. @@ -19,7 +19,34 @@ curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scr irm https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.ps1 | iex ``` -This creates a `./surfsense/` directory with `docker-compose.yml` and `.env`, then runs `docker compose up -d`. +This creates a `./surfsense/` directory with `docker-compose.yml`, `docker-compose.gpu.yml`, and `.env`, then runs `docker compose up -d --wait`. + +If an NVIDIA GPU and NVIDIA Container Toolkit are detected, the installer prompts for the backend variant. Non-interactive installs default to CPU unless you pass an explicit flag. + +### GPU options + +Linux/macOS: + +```bash +# CUDA 12.8 +curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash -s -- --variant=cuda + +# CUDA 12.6 fallback for older driver stacks +curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash -s -- --variant=cuda126 + +# Reserve all available GPUs +curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash -s -- --gpu --gpu-count=all +``` + +PowerShell: + +```powershell +# Save the script locally first when passing PowerShell parameters. +.\install.ps1 -Variant cuda +.\install.ps1 -Variant cuda126 -GpuCount all +``` + +The installer writes the same `.env` settings you would configure manually: `SURFSENSE_VARIANT` selects the backend image and `COMPOSE_FILE` enables the GPU overlay. To skip Watchtower (e.g. in production where you manage updates yourself): @@ -29,6 +56,16 @@ curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scr To customise the check interval (default 24h), use `--watchtower-interval=SECONDS`. +Manual updates use the same compose state stored in `.env`, so GPU overlays and variants are preserved: + +```bash +cd surfsense +docker compose pull +docker compose up -d --wait +``` + +If Watchtower is enabled, it preserves the running image variant tag automatically. Because SurfSense images are large, use `--no-watchtower` when you prefer to manage update timing yourself. + --- ## Access SurfSense