---
title: "Deploy GEOInflow"
description: "GEO analytics with AI crawler insights and demo data"
category: "Analytics"
url: https://railway.com/deploy/geoinflow
---

# Deploy GEOInflow

GEO analytics with AI crawler insights and demo data

**[Deploy GEOInflow on Railway](https://railway.com/template/geoinflow)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/geoinflow/manifest.json

- **Creator:** kmaki's Projects
- **Category:** Analytics

## Template content

### app

- **Image:** xiaosong233/geoinflow-railway:latest
- **Public domain:** Yes

### postgres

- **Image:** postgres:16-alpine

## Documentation

# Deploy and Host GEOInflow on Railway

GEOInflow is a self-hosted web and AI crawler analytics platform derived from Umami and jointly published by 猎看科技 and 北京日报社智源GEO. It combines browser analytics, AI-search referrals, crawler evidence, content coverage, traffic quality, GEO reports, permissions, and a sanitized synthetic demo website in one deployable workspace.

## About Hosting GEOInflow on Railway

Railway runs the application and PostgreSQL as Docker-image services on a private project network. The app is exposed through a Railway HTTPS domain, while PostgreSQL remains private and uses a persistent volume.

## Tech Stack

- Node.js 22 and Next.js 16
- PostgreSQL 16
- Prisma migrations
- GEOInflow/Liekan analytics and crawler evidence modules
- Docker and Railway private networking
- Built-in synthetic demonstration dataset

## Why Deploy GEOInflow on Railway

Railway provides managed deployments, HTTPS routing, private service discovery, persistent storage, logs, and straightforward environment-variable management. This configuration uses a prebuilt Docker image, so deployment does not depend on source-based builds or Railpack detection.

## Common Use Cases

- Self-hosted website and visitor analytics
- AI-search referral and crawler activity analysis
- GEO content coverage and crawler evidence review
- Traffic-quality and conversion reporting
- Demonstration and evaluation using the bundled synthetic website
- Team website permissions and analytics administration

## Deployment Notes

The app listens on container port 3000 and the Railway domain explicitly targets port 3000. No custom start command is required because the image includes its production startup process, database migrations, Liekan migrations, queue initialization, and demo-data initialization. PostgreSQL uses the persistent mount `/var/lib/postgresql/data` with `PGDATA=/var/lib/postgresql/data/pgdata`. The app has no volume mount. Fresh installations use `admin` / `liekan`; change the password after signing in. The bundled example is “猎看官网（示例数据）” at `www.liekan.com`. This minimal UI deployment does not include separate background worker services.

## Dependencies for GEOInflow on Railway

GEOInflow requires PostgreSQL for application data, migrations, accounts, analytics facts, crawler evidence, and the bundled demonstration dataset. The app connects to PostgreSQL through Railway private networking using service-variable references.

### Deployment Dependencies

| Service | Image | Port | Volume |
|---------|-------|------|--------|
| app | xiaosong233/geoinflow-railway:latest | 3000 | - |
| postgres | postgres:16-alpine | 5432 | /var/lib/postgresql/data |

## Similar templates

- [Plausible WordPress](https://railway.com/deploy/deploy-plausible-for-wordpress-sites) — Cookie-free WordPress stats from your own Plausible
- [Typesense Multilingual](https://railway.com/deploy/deploy-typesense-multilingual-search) — Locale-aware multilingual search with Typesense
- [Formbricks](https://railway.com/deploy/formbricks-surveys) — Surveys, NPS and in-app feedback on your own Postgres, Hub and Cube

Open this page in a browser: https://railway.com/deploy/geoinflow
