---
title: "Deploy GEOInflow"
description: "Self-hosted GEO analytics: track AI crawlers and AI-referred visits"
category: "Analytics"
url: https://railway.com/deploy/deploy-geoinflow-ai-crawler-analytics
---

# Deploy GEOInflow

Self-hosted GEO analytics: track AI crawlers and AI-referred visits

**[Deploy GEOInflow on Railway](https://railway.com/template/deploy-geoinflow-ai-crawler-analytics)**

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

- **Creator:** onepush
- **Category:** Analytics

## Template content

### Postgres https://devicons.railway.app/postgres

- **Image:** postgres:16-alpine@sha256:aa6cb33cf4c19c765cefcf48d96176258800870a9a1e930ad126200f9d825139

### Redis https://devicons.railway.app/redis

- **Image:** redis:7.4-alpine
- **Start command:** `redis-server --bind '* -::*' --protected-mode no --maxmemory 256mb --maxmemory-policy allkeys-lru --save '' --appendonly no`

### geoinflow https://raw.githubusercontent.com/yaojingang/GEOInflow/13c32ec/public/apple-touch-icon.png

- **Image:** ghcr.io/onepush-dev/geoinflow:1.2.0-13c32ec-r3
- **Health check:** /api/heartbeat
- **Public domain:** Yes

## Documentation

# Deploy and Host self hosted GEOInflow (AI Crawler Analytics) on Railway

GEOInflow is a self-hosted web and AI crawler analytics platform for Generative Engine Optimization, for site owners, publishers, and GEO teams.

## About Hosting GEOInflow open-source software on Railway (self hosted GEOInflow template)

Running GEOInflow on Railway keeps analytics data in your own project. This is independent community packaging of upstream commit 13c32ec, not affiliated with or endorsed by the GEOInflow publishers.

## Why Deploy GEOInflow, the self-hosted GEO and web analytics platform on Railway (Railway Free Trial)

Self-hosting GEOInflow keeps visitor data and AI crawler logs on infrastructure you control, with the app, Postgres and Redis wired together and the default admin password replaced before first sign-in.

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 GEOInflow 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.

### Railway vs Other Hosting Providers and VPS for GEOInflow self hosting

Where the app, Postgres and Redis run sets how much you manage.

| Provider | What You Get with Railway | What You Get with the Other Provider |
| --- | --- | --- |
| DigitalOcean | Three linked services (app, Postgres 16, Redis 7.4) from one template, with volumes and private networking handled. | A Droplet or managed database where you install Docker and set up networking, HTTPS and backups. |
| AWS | One template that wires the services together, with no IAM, VPC or load balancer setup. | Fine-grained control over networking, storage and scaling, with more to maintain. |
| Hetzner | Hosted services with usage-based billing and no server to patch. | Low-cost bare servers where you manage the OS, Docker, reverse proxy and recovery yourself. |

Choose Railway for the fastest route, or a VPS for full control.

## Common Use Cases for hosted GEOInflow

- **Seeing which AI crawlers request your pages:** See which AI crawlers visit, which paths they request, and whether responses succeed.
- **Measuring visits and conversions from AI search:** Track sessions from supported AI search referrals, their landing pages, and goals.
- **Cookieless browser analytics:** Collect pageviews, events, goals, and funnels with one browser script, setting no cookies for basic tracking.
- **Finding blind spots against your content:** Import a sitemap or CSV inventory and compare it with crawl logs to find important pages no AI crawler has requested.
- **Running multi-site team workspaces:** Manage several sites in shared workspaces with per-user permissions.

## Dependencies for GEOInflow Docker hosted on Railway

This template runs three services: the GEOInflow app, a Postgres 16 database with its own volume, and a private Redis 7.4 cache.

### Deployment Dependencies for Managed GEOInflow Service (app, Postgres 16 and Redis)

The app exposes port 8080, mounts /app/managed-geo, and waits on Postgres and Redis over the private network.

### Implementation Details for GEOInflow (upstream 13c32ec build plus a Railway start script and in-container workers)

The ghcr.io/onepush-dev/geoinflow:1.2.0-13c32ec-r3 image wraps an unmodified build of upstream Dockerfile.liekan at commit 13c32ec.

| Variable | Service | Purpose |
| --- | --- | --- |
| APP_SECRET | geoinflow | Signs sessions and tokens; generated per deploy. |
| TWO_FACTOR_ENCRYPTION_KEY | geoinflow | 64-character hex key that encrypts two-factor secrets; generated per deploy. |
| LIEKAN_ADMIN_PASSWORD | geoinflow | Password for the admin user, generated per deploy; replaces the published default on first start. |
| DATABASE_URL | geoinflow | Postgres connection string, built from the Postgres service (private network). |
| LIEKAN_ANALYTICS_REDIS_URL | geoinflow | Redis address for the analytics queue, from the Redis service (private network). |
| LIEKAN_PUBLIC_URL | geoinflow | Public https address of the app (the Railway domain). |
| POSTGRES_PASSWORD | Postgres | Password of the bundled Postgres database, generated per deploy. |
| PGDATA | Postgres | Data directory, kept in a subfolder of the Postgres volume. |

All are generated or Railway references, so there are no manual inputs. Redis has no variables and no persistence.

The web app and both workers run in one container because they share the /app/managed-geo volume.

## How does GEOInflow compare against other tools

### GEOInflow vs Umami (Umami Alternative)

- **Focus:** GEOInflow builds on an Umami-derived codebase and adds AI crawler analytics.
- **AI referrals:** GEOInflow ties AI search referrals in browser tracking to landing pages and goals.
- **Where Umami wins:** for general web analytics only, Umami is simpler.

### GEOInflow vs Plausible (Plausible Alternative)

- **Scope:** Plausible is privacy-focused web analytics; GEOInflow adds server and CDN log analysis for crawlers that skip browser scripts.
- **Content coverage:** GEOInflow compares a sitemap or CSV inventory with observed crawls to show pages with no crawl activity.
- **Where Plausible wins:** for visitor-only analytics, Plausible is simpler.

### GEOInflow vs Google Analytics (Google Analytics Alternative)

- **Hosting:** Google Analytics is hosted; GEOInflow keeps data in your own Postgres database.
- **Crawler visibility:** GEOInflow reports on AI crawler requests from your logs; Google Analytics does not observe crawler traffic that skips page scripts.
- **Where Google Analytics wins:** for zero infrastructure and Google integration, the hosted option is easier.

### GEOInflow with Docker Compose vs Railway (Railway Alternative)

- **Setup:** Docker Compose runs GEOInflow on a single host you manage; on Railway it deploys as three services (app, Postgres 16, and Redis) from the template.
- **Maintenance:** on your own server you handle the reverse proxy, HTTPS, backups, and upgrades; Railway handles the hosting layer while you manage your data.
- **Where Docker Compose wins:** with a server that has spare capacity, Compose avoids usage-based fees.

## How to use GEOInflow on Railway?

1. Wait for geoinflow, Postgres and Redis to show green; first boot can take minutes while the demo site seeds.
2. Open the public domain and sign in as `admin` with the `LIEKAN_ADMIN_PASSWORD` value from the geoinflow Variables tab. The published default `admin/liekan` is replaced on first boot and now returns 401.
3. Confirm your country and analytics timezone on the first full sign-in, since the default is Asia/Shanghai.
4. Explore the labeled demo site before adding real data.
5. Create your website, then open Data Ingestion and copy the JS tracking snippet into the head of your site template.
6. Optionally connect server or CDN logs and import a sitemap inventory so AI crawler visits can be compared against your known pages.

Check health at `/api/heartbeat`:

```
curl --fail https://your-domain/api/heartbeat
```

## How to self host GEOInflow on other VPS Services (GEOInflow self hosting guide)

### Clone the Repository

Clone the upstream GEOInflow source and enter the project root.

```sh
git clone https://github.com/yaojingang/GEOInflow.git
cd GEOInflow
```

### Install Dependencies

You need Docker Engine or Docker Desktop with Docker Compose V2 and network access to pull images and Node dependencies. Check setup first:

```sh
sh scripts/liekan-deploy.sh --check
```

### Configure Environment Variables

The deploy script generates a private `.env` with random secrets. If a trusted reverse proxy supplies the visitor address in a header, set `CLIENT_IP_HEADER` to match it.

### Start the GEOInflow Application

Run the deploy script. It builds the image, runs migrations, imports demo data, and starts the app, two workers, Postgres and Redis, with the app on 127.0.0.1:3002.

```sh
sh scripts/liekan-deploy.sh
```

Put HTTPS and a trusted reverse proxy in front of that port before exposing it. Railway handles this.

## Pricing and License of GEOInflow (GEOInflow pricing)

GEOInflow is open-source software released under the MIT license, and the default geographic dataset, DB-IP City Lite, is provided under CC BY 4.0 with its attribution retained in the product.

## GEOInflow hosted vs self hosted comparison (Pricing, features, costs, and more)

GEOInflow has no upstream hosted plan, so you pay only for infrastructure. Optional AI analysis uses your own provider and is off by default.

### Monthly cost of self hosting GEOInflow on Railway

Railway billing is usage-based (RAM, CPU, volume, services). Check the dashboard after a few days of traffic.

### System Requirements for Hosting GEOInflow on a VPS

Upstream builds from source with Docker, which needs at least 6 GiB of Docker memory. 8 GiB or more and 2 CPUs are recommended.

## Frequently Asked Questions (FAQs)

### Where do I find the admin password?

It is LIEKAN_ADMIN_PASSWORD in the geoinflow Variables tab, generated on deploy.

### Why is there demo data in my instance?

Upstream bundles a sanitized, labeled example site, seeded after the app is healthy.

### Why did the first boot take several minutes?

The demo seed runs after the app is healthy, and workers start once it finishes. Allow 1 to 2 GB of RAM.

### Does GEOInflow need an AI API key?

No. AI analysis is disabled by default (LIEKAN_AI_ENABLED=false), and optional AI and MaxMind settings are not part of this template.

### How do my server logs get into GEOInflow?

Automatic log ingestion needs public HTTPS, an ingestion secret, and the Data Ingestion page installer. Cloudflare needs separate credentials. Crawl logs show observed access only; indexing, training and citations need their own evidence. Back up Postgres; Redis only holds cache.


## 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/deploy-geoinflow-ai-crawler-analytics
