I'm deploying Typesense on Railway.app using the official Docker image typesense/typesense:0.25.2, but the HTTP API server never starts despite the raft clustering layer working correctly. Problem
Raft clustering logs present: Leader election works, peer refresh succeeds HTTP API server logs missing: No "Starting Typesense HTTP server" messages External connections fail: curl https://domain.railway.app:8108/health times out Internal connections fail: Backend services get Connection refused on port 8108
Current Configuration Environment Variables:
TYPESENSE_API_ADDRESS="::"
TYPESENSE_API_KEY="something"
TYPESENSE_API_PORT="8108"
TYPESENSE_DATA_DIR="/data"
TYPESENSE_ENABLE_CORS="true"
TYPESENSE_NODES=""
Custom Start Command:
/opt/typesense-server --data-dir /data --api-key=something --listen-address :: --api-port 8108 --enable-cors
Logs Output Raft clustering is working but HTTP server never starts:
I20250904 04:37:42.810342 89 typesense_server_utils.cpp:283] Typesense peering service is running on 10.250.10.204:8107
I20250904 04:37:53.572160 128 node.cpp:1899] node default_group:10.250.10.204:8107:8108 term 30 become leader of group 10.250.10.204:8107:8108
I20250904 04:38:02.817142 104 raft_server.h:60] Peer refresh succeeded!
Missing Expected Logs:
Starting Typesense HTTP server on [::]:8108 # This never appears
Error in Backend Service
requests.exceptions.ConnectionError: HTTPConnectionPool(host='typesense.railway.internal', port=8108):
Max retries exceeded with url: /collections (Caused by NewConnectionError(
'Failed to establish a new connection: [Errno 111] Connection refused'))
Railway Setup
Public Networking: Port 8108 exposed, domain generated Private Networking: typesense.railway.internal with IPv6 support Source: Official typesense/typesense:0.25.2 image Volume: Persistent /data directory mounted
What I've Tried
Single-node configuration: Set TYPESENSE_NODES="" to force single-node mode IPv4/IPv6 binding: Tried both 0.0.0.0 and :: Custom start command: Direct command line parameters Cluster reset attempts: Added reset environment variables Port configuration: Verified 8108 is exposed correctly
Questions
Why does the Raft layer start but HTTP API server doesn't? How can I force Typesense to start in pure single-node mode? Is there a Railway-specific configuration needed? Should I use a different Docker image or startup approach?
Environment
Platform: Railway.app Image: typesense/typesense:0.25.2 Region: Southeast Asia (Singapore) Networking: IPv6 enabled
Any help debugging why the HTTP API server component isn't starting would be greatly appreciated.