
Self-hosting Weaviate the easy way
Yulei ChenWeaviate is an open-source vector database that stores both objects and vectors. It lets you combine vector search with structured filtering, making it a go-to choice for AI applications, semantic search, and RAG pipelines. Weaviate Cloud offers a managed option, but pricing scales with usage and you lose control over your data.
Sliplane is a managed container platform that makes self-hosting painless. With one-click deployment, you can get Weaviate up and running in minutes - no server setup, no reverse proxy config, no infrastructure to maintain.
Prerequisites
Before deploying, ensure you have a Sliplane account (free trial available).
Quick start
Sliplane provides one-click deployment with presets.
- Click the deploy button above
- Select a project
- Select a server. If you just signed up you get a 48-hour free trial server
- Click Deploy!
About the preset
The one-click deploy above uses Sliplane's Weaviate preset. Here's what it includes:
- Weaviate 1.37.2 from the official
cr.weaviate.ioregistry - Persistent storage mounted to
/var/lib/weaviate - API key authentication enabled by default (a random key is generated for you)
- Anonymous access disabled for security
- Telemetry disabled
- Default vectorizer set to
noneso you can choose your own - OpenAI modules enabled (
text2vec-openai,generative-openai,qna-openai) - Memory limit set to
1024 MiBand max CPU threads to2for stable performance on smaller servers
Next steps
Once Weaviate is running on Sliplane, access it using the domain Sliplane provided (e.g. weaviate-xxxx.sliplane.app).
Authenticating with your API key
The preset generates a random API key for you. You can find it in the AUTHENTICATION_APIKEY_ALLOWED_KEYS environment variable in your service settings. Use this key in the Authorization header when making requests:
curl https://weaviate-xxxx.sliplane.app/v1/meta \
-H "Authorization: Bearer YOUR_API_KEY"
Or when using the Weaviate Python client:
import weaviate
client = weaviate.connect_to_custom(
http_host="weaviate-xxxx.sliplane.app",
http_port=443,
http_secure=True,
grpc_host="weaviate-xxxx.sliplane.app",
grpc_port=443,
grpc_secure=True,
auth_credentials=weaviate.auth.AuthApiKey("YOUR_API_KEY"),
)
Environment variables you might want to customize
| Variable | Default | Description |
|---|---|---|
ENABLE_MODULES | text2vec-openai,generative-openai,qna-openai | Comma-separated list of modules to load |
DEFAULT_VECTORIZER_MODULE | none | Default vectorizer for new collections |
QUERY_DEFAULTS_LIMIT | 1000 | Default result limit for queries |
LOG_LEVEL | info | Log verbosity (debug, info, warning, error) |
GOMEMLIMIT | 1024MiB | Go runtime memory limit |
GOMAXPROCS | 2 | Max CPU threads for the Go runtime |
If you want to use a different vectorizer (like Cohere or Hugging Face), update ENABLE_MODULES accordingly. Check the Weaviate modules documentation for the full list.
Logging
Weaviate logs to STDOUT by default, which works perfectly with Sliplane's built-in log viewer. If you need more detail for debugging, set LOG_LEVEL to debug. For general Docker log tips, check out our post on how to use Docker logs.
Troubleshooting
If Weaviate is slow to start or runs out of memory, try adjusting GOMEMLIMIT and GOMAXPROCS to match your server's resources. On a 2 GB server, 1024MiB and 2 are good defaults.
You can check if Weaviate is healthy by hitting the readiness endpoint:
curl https://weaviate-xxxx.sliplane.app/v1/.well-known/ready
Cost comparison
Of course you can also self-host Weaviate with other cloud providers. Here is a pricing comparison for the most common ones:
| Provider | vCPU | RAM | Disk | Monthly Cost | Note |
|---|---|---|---|---|---|
| Sliplane | 2 | 2 GB | 40 GB | €9 (~$10.65) | Flat rate, 1 TB bandwidth, SSL included |
| Fly.io | 2 | 2 GB | 40 GB | ~$18 | Disk and bandwidth billed separately |
| Render | 1 | 2 GB | 40 GB | ~$35 | 100 GB bandwidth, Disk billed separately |
| Railway | 2 | 2 GB | 40 GB | ~$67 + $20 plan | Pro plan floor, usage-based, bandwidth billed separately |
Click here to see how these numbers were calculated.
(Assuming an always-on instance running 730 hrs/month)
- Sliplane: flat €9/month for the Base server. Unlimited services on the same server, 1 TB egress and SSL included.
- Fly.io:
shared-cpu-2x2 GB = $11.83/mo + 40 GB volume × $0.15/GB = $6 -> ~$17.83/mo. Egress billed separately ($0.02/GB in EU). - Render: closest match is Standard ($25, 1 vCPU / 2 GB) plus 40 GB disk × $0.25/GB = $10 -> ~$35/mo. Stepping up to Pro (2 vCPU / 4 GB) costs $85/mo + disk.
- Railway (Pro plan): CPU 2 × $0.00000772/s × 2,628,000 s = $40.57; RAM 2 × $0.00000386/s × 2,628,000 s = $20.29; volume 40 × $0.00000006/s × 2,628,000 s = $6.31 -> ~$67/mo compute, plus the $20/mo Pro plan floor and $0.05/GB egress.
Bandwidth costs can add up fast on usage-based providers. Use our bandwidth cost comparison tool to see what your egress would cost on each platform.
FAQ
What can I use Weaviate for?
Weaviate is ideal for AI-powered search, recommendation engines, RAG (Retrieval-Augmented Generation) pipelines, and any application that needs semantic similarity search. You store objects with their vector embeddings and query them using natural language or vector similarity. It also supports hybrid search combining vectors with traditional keyword (BM25) filtering.
How do I configure vectorizer modules?
Set the ENABLE_MODULES environment variable to a comma-separated list of modules you want. For example, to use Cohere instead of OpenAI, set it to text2vec-cohere,generative-cohere. Then set DEFAULT_VECTORIZER_MODULE to your preferred default. You'll also need to provide the relevant API key (e.g. COHERE_APIKEY) as an environment variable.
How do I update Weaviate?
Change the image tag in your service settings from cr.weaviate.io/semitechnologies/weaviate:1.37.2 to the new version and redeploy. Check the Weaviate GitHub releases for the latest stable version. Weaviate handles data migrations automatically on startup.
Are there alternatives to Weaviate?
Yes. Qdrant is another popular open-source vector database you can self-host on Sliplane. Other options include Milvus, Chroma, and Pinecone (cloud-only). Each has different trade-offs in terms of performance, API design, and feature set.
Can I use Weaviate without an external embedding provider?
Yes. Set DEFAULT_VECTORIZER_MODULE to none and provide your own vectors when importing data. This way you can use any embedding model you like (including local ones running on Ollama) and just store the resulting vectors in Weaviate.