---
collection: tech
type: database
---
## Intro

Weaviate is an open-source vector database. It allows you to store data objects and vector embeddings from your favourite ML-models, and scale seamlessly into billions of data objects.

## Docker install

### Prerequisite 

You must have [[Docker]] installed on the server you're gonna run.

### Configuration
#### API key

```
services:
  weaviate:
    ...
    environment:
      ...
      # Enables API key authentication.
      AUTHENTICATION_APIKEY_ENABLED: 'true'

      # List one or more keys, separated by commas. 
      # Each key corresponds to a specific user identity below.
      AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'jane-secret-key,anon-secret-key'

      # List one or more user identities, separated by commas. 
      # Each identity corresponds to a specific key above.
      AUTHENTICATION_APIKEY_USERS: 'jane,anon'
```

[source](https://weaviate.io/developers/weaviate/configuration/authentication)


#### Authorization


```
services:
  weaviate:
    ...
    environment:
      ...
      # Enables API key authentication.
      AUTHENTICATION_APIKEY_ENABLED: 'true'

      # List one or more keys, separated by commas. 
      # Each key corresponds to a specific user identity below.
      AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'jane-secret-key,anon-secret-key'

      # List one or more user identities, separated by commas. 
      # Each identity corresponds to a specific key above.
      AUTHENTICATION_APIKEY_USERS: 'jane,anon'
      AUTHORIZATION_ADMINLIST_ENABLED: 'true'
      AUTHORIZATION_ADMINLIST_USERS: 'jane'
      AUTHORIZATION_ADMINLIST_READONLY_USERS: 'anon'
```

[source](https://weaviate.io/developers/weaviate/configuration/authorization)


#### Persistence

```
services:  
  weaviate:  
    volumes:  
      - /path/to/weaviate/data:/var/lib/weaviate
```

Replace `/path/to/weaviate/data` to the path where you want to store the weaviate data on your server

### Running the Docker container

#### Manual start

Once the Weaviate docker-compose.yml is all set, you can simply start it by running `docker compose -f /path/to/weaviate/docker-compose.yml up`

#### Systemd service file

```
[Unit]

Description=Weaviate
After=network.target

[Service]

Type=simple
User=weav
ExecStart=/usr/bin/docker compose -f /path/to/weaviate/docker-compose.yml up
ExecStop=/usr/bin/docker compose -f /path/to/weaviate/docker-compose.yml down
Restart=on-failure
RestartSec=5

[Install]

WantedBy=multi-user.target
```

# CUDA GPU support

In order to enable the GPU support, you must install the NVIDIA Container Toolkit https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html