Deploy Manticore Search

Open-source database for full-text and vector search

Deploy Manticore Search

/data

/var/lib/manticore

manticore-backups

Bucket

Just deployed

Deploy and Host Manticore Search on Railway

Manticore Search is an open-source database built for search. It handles full-text ranking, vector search, filtering, faceting and analytics over the same tables, and it speaks two protocols developers already have clients for: SQL over the MySQL wire protocol, and JSON over HTTP with an Elasticsearch-compatible mode. Teams reach for it when Postgres full-text search stops being good enough and a full Elasticsearch cluster is more machinery than the problem deserves. It is written in C++, keeps its indexes on disk, and runs happily in a few hundred megabytes of RAM.

This template runs two services. manticore is the search daemon itself, with a volume for its tables, a public HTTPS endpoint for the JSON API and a TCP proxy for MySQL clients. dashboard runs the Grafana and Prometheus image the Manticore team publish, so you get their monitoring dashboard and their 21 alert rules without configuring anything. The dashboard scrapes the daemon's metrics endpoint over Railway's private network and also queries your tables directly through a MySQL data source. Manticore's built-in authentication is switched on before the daemon ever accepts a connection, and the first administrator is created on the first boot from the password you supply, so nothing is ever exposed unauthenticated.

Diagram of the Manticore and dashboard services on Railway

Getting Started with Manticore Search on Railway

Deploy the template, then set a password for the Manticore administrator and one for the Grafana administrator. Both services come up in under a minute. The manticore URL is the JSON API, not a web interface: every request needs HTTP Basic credentials, and an anonymous one is answered 401 with a WWW-Authenticate header, which is the quickest way to confirm the daemon is enforcing authentication. Create your first table and insert a document with two curl calls against /sql?mode=raw, then search it with MATCH() or through the /search endpoint. Open the dashboard URL, sign in with the Grafana credentials, and the Manticore dashboard loads as the home page showing uptime, queries per second, search latency percentiles and worker saturation. To query your own data, build a panel on the pre-configured Manticore Search data source, which talks to the daemon over the MySQL protocol.

Manticore health and query latency panels in Grafana

Full-text search results from a Manticore table in Grafana

Manticore alert rules listed in Grafana alerting

About Hosting Manticore Search

Manticore Search grew out of Sphinx and is now a general-purpose search database rather than an add-on index. Self-host it when you want search you can reason about: one process, one data directory, no JVM, no cluster to babysit, and a query language your team already knows.

  • Full-text search with BM25 ranking, stemming, wildcards, fuzzy matching and highlighting
  • Vector search for embeddings, alongside the text index in the same table
  • Real-time inserts, updates and deletes; no reindex step
  • SQL over MySQL, JSON over HTTP, and an Elasticsearch-compatible write API

The manticore service holds all the state on its volume: tables, binary log and the authentication store. The dashboard service holds none of your data — its volume is only Prometheus' time series and Grafana's own settings — so it can be redeployed or removed freely.

Why Deploy Manticore Search on Railway

Railway removes the parts of running a search database that are not search.

  • One click brings up the daemon, its volume and its monitoring
  • Authentication is on from the first boot, with no unauthenticated window
  • A private network link between the daemon and its dashboard, with no ports exposed
  • A TCP proxy for MySQL clients, provisioned automatically
  • Scheduled snapshots to Railway's object storage, kept to a fixed count

Common Use Cases

  • Product, document or listing search for a web app that has outgrown LIKE and tsvector
  • Log and event search where you want SQL aggregations over the same rows you full-text query
  • Retrieval for a RAG pipeline, mixing vector similarity with keyword filters in one query

Dependencies for Manticore Search

Both images are extended by a small source repository, github.com/gridalpha/manticore-search-railway, which adds the boot-time administrator bootstrap, the IPv6 listener the private network needs, an anonymous health endpoint, and the backup loop.

Environment Variables Reference

VariableServicePurpose
MANTICORE_PASSWORDmanticorePassword for the first administrator, created on first boot
MANTICORE_USERmanticoreName of that administrator; defaults to admin
BACKUP_INTERVAL_SECONDSmanticoreSeconds between snapshots; defaults to daily
BACKUP_KEEPmanticoreSnapshots retained in the bucket; defaults to 7
GF_SECURITY_ADMIN_PASSWORDdashboardGrafana administrator password
MANTICORE_TARGETSdashboardDaemon endpoints Prometheus scrapes

Any Manticore setting can be passed as searchd_ or common_, which the official image writes into the generated configuration file.

Deployment Dependencies

Hardware Requirements for Self-Hosting Manticore Search

MinimumRecommended
CPU1 vCPU2–4 vCPU
RAM512 MB2 GB and up, sized to your index
Storage1 GB volume2–4× the raw size of the data you index
RuntimeLinux containerLinux container

Memory matters most: Manticore memory-maps its disk chunks, so search stays fast while the working set fits in page cache.

Self-Hosting Manticore Search with Docker

The daemon is a single container with a data directory. This starts it locally:

docker run --name manticore -d \
  -p 9306:9306 -p 9308:9308 \
  -v manticore-data:/var/lib/manticore \
  manticoresearch/manticore:29.0.2

Every setting is an environment variable prefixed searchd_ or common_, so turning authentication on and capping the thread pool needs no configuration file:

docker run --name manticore -d \
  -e searchd_auth=1 -e searchd_threads=4 \
  -v manticore-data:/var/lib/manticore \
  manticoresearch/manticore:29.0.2

With authentication enabled, create the first administrator by piping the name and password twice into searchd --auth-non-interactive against the running daemon. After that, CREATE USER, GRANT and TOKEN manage accounts, per-table permissions and bearer tokens over SQL.

How Much Does Manticore Search Cost to Self-Host?

Manticore Search is free and open source under GPLv3, with no paid edition gating features, no node limit and no licence key. Grafana and Prometheus are open source too. The only cost is the infrastructure: on Railway you pay for the CPU, memory and storage the two services actually use, which for a small index is a few dollars a month.

FAQ

What is Manticore Search? An open-source database designed for search. It stores your rows, indexes them for full-text and vector search, and answers queries in SQL over the MySQL protocol or JSON over HTTP.

What does this Railway template deploy? Two services: manticore, the search daemon with a volume and both protocols exposed, and dashboard, the Grafana and Prometheus monitoring stack that the Manticore project publishes for it.

Why does the template include a monitoring service? Search behaviour degrades quietly — a slow p99, a saturated worker pool, a growing queue. The bundled dashboard and its 21 alert rules make those visible from the first minute rather than after a user complains.

Why is an object storage bucket included? The daemon runs as a single node, so its volume is the only copy of your index. The template takes a consistent snapshot on a schedule and uploads it to the bucket, keeping the most recent few.

How do I connect to self-hosted Manticore Search from my application? Point any MySQL client at the private hostname on port 9306, or send JSON to the HTTPS endpoint with HTTP Basic credentials. Both are authenticated; there is no anonymous access.

Can Manticore Search replace Elasticsearch? For text search, filtering and aggregations it usually can, and it accepts a subset of the Elasticsearch write API to ease the move. Distributed sharding across many nodes is where Elasticsearch remains ahead.


Template Content

More templates in this category

View Template
Garage S3 Storage
Ultra-light S3 server: fast, open-source, plug-and-play.

PROJETOS
8
View Template
Redis
Self Host Latest Redis with Railway

7
View Template
EasyImg
Simple self-hostable Nuxt.js personal image hosting system.

Muhammad Bilal
0