---
title: "Deploy Weaviate | (Just Updated) Vectors Survive Redeploys, Locked Behind A Key"
description: "Vector DB with a volume, a generated API key, and no anonymous access"
category: "Storage"
url: https://railway.com/deploy/weaviate-vector-da-1
---

# Deploy Weaviate | (Just Updated) Vectors Survive Redeploys, Locked Behind A Key

Vector DB with a volume, a generated API key, and no anonymous access

**[Deploy Weaviate | (Just Updated) Vectors Survive Redeploys, Locked Behind A Key on Railway](https://railway.com/template/weaviate-vector-da-1)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/weaviate-vector-da-1/manifest.json

- **Creator:** SuperSlowSloth
- **Category:** Storage

## Template content

### weaviate

- **Image:** semitechnologies/weaviate@sha256:d2a1b884d45844a012b4282081dfa896879a6ded7ea9d9e274e0b9e1d9920f86
- **Health check:** /v1
- **Public domain:** Yes

## Documentation

# Deploy and Host Weaviate on Railway

Weaviate is an open-source vector database for semantic search, hybrid (vector + keyword) search, and retrieval-augmented generation. It stores your objects together with their embeddings and answers nearest-neighbour queries over HTTP and GraphQL. This template deploys a single, lean Weaviate node — no sidecars, no inference container — locked behind a generated API key, with its index on a persistent volume.

## About Hosting Weaviate

The two things that decide whether a self-hosted vector database is usable are where the index lives and who can reach it, and both are set correctly here. Weaviate's `PERSISTENCE_DATA_PATH` points at a Railway volume mounted on `/var/lib/weaviate`, so your collections, objects and vectors survive every redeploy — verified by writing an object, redeploying, and reading it back. Anonymous access is disabled and API-key authentication is on, with the admin key generated per deployment rather than shipped as a shared literal, and RBAC enabled with that key's user as root. Weaviate refuses to start at all if the key is empty, so there is no window in which the database is public. The image is pinned by digest, the healthcheck points at `/v1` so Railway does not route traffic before the API is answering, and `DEFAULT_VECTORIZER_MODULE` is `none` — you bring your own embeddings, so no deployment can quietly spend an embedding API key. Idle memory measured at roughly 45 MB, so this fits every Railway plan including Free.

## Why Deploy Weaviate on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Weaviate on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

- **Your embeddings survive redeploys** — the index is on a volume, not on ephemeral disk. Re-embedding a corpus is the expensive part; you never pay it twice.
- **Not open to the internet** — anonymous access off, a unique API key generated at deploy, RBAC on. No shared default key to forget to change.
- **Pinned by digest** — the exact image that was tested is the exact image you get, with no surprise upgrade of a database that holds your data.
- **Lean by design** — one Go binary, ~45 MB idle. No transformer sidecar you did not ask for and do not want to pay for.

## Common Use Cases

- **RAG for a chatbot or agent** — store document chunks with their embeddings and retrieve the nearest ones as context at query time.
- **Semantic and hybrid search** — search a product catalogue, docs site, or knowledge base by meaning, blended with keyword (BM25) scoring in one query.
- **Recommendations and deduplication** — find near-duplicate records or similar items by vector distance instead of brittle string matching.

## Dependencies for Weaviate Hosting

- A volume mounted at `/var/lib/weaviate` (included in this template) — without it every embedding is lost on redeploy.
- An embedding model of your choice, running anywhere. This template stores vectors; it does not generate them.

### Deployment Dependencies

- [Weaviate](https://github.com/weaviate/weaviate) — the upstream database (BSD-3-Clause)
- [Weaviate documentation](https://weaviate.io/developers/weaviate) — API reference and client libraries
- [semitechnologies/weaviate](https://hub.docker.com/r/semitechnologies/weaviate) — the official image this template pins

### Implementation Details

The generated admin key is in the service's `AUTHENTICATION_APIKEY_ALLOWED_KEYS` variable. Send it as a bearer token:

```bash
# create a collection that takes vectors you supply
curl -X POST https:///v1/schema \
  -H "Authorization: Bearer $WEAVIATE_API_KEY" -H "Content-Type: application/json" \
  -d '{"class": "Doc", "vectorizer": "none"}'

# insert an object with its embedding
curl -X POST https:///v1/objects \
  -H "Authorization: Bearer $WEAVIATE_API_KEY" -H "Content-Type: application/json" \
  -d '{"class": "Doc", "properties": {"text": "hello"}, "vector": [0.1, 0.2, 0.3]}'

# nearest-neighbour search over GraphQL
curl -X POST https:///v1/graphql \
  -H "Authorization: Bearer $WEAVIATE_API_KEY" -H "Content-Type: application/json" \
  -d '{"query": "{ Get { Doc(nearVector: {vector: [0.1,0.2,0.3]}, limit: 3) { text } } }"}'
```

To use a vectorizer module instead of supplying your own vectors, set `ENABLE_MODULES` (for example `text2vec-openai`) and `DEFAULT_VECTORIZER_MODULE`, and add that provider's API key as a variable. `/v1/.well-known/ready` is the unauthenticated readiness endpoint if you want to poll it from your own code.


## Similar templates

- [Garage S3 Storage](https://railway.com/deploy/garage-s3-storage) — Ultra-light S3 server: fast, open-source, plug-and-play.
- [Redis](https://railway.com/deploy/redis-1) — Self Host Latest Redis with Railway
- [EasyImg](https://railway.com/deploy/easyimg) — Simple self-hostable Nuxt.js personal image hosting system.

Open this page in a browser: https://railway.com/deploy/weaviate-vector-da-1
