Skip to content

Quickstart

Three ways to get an instance running, from quickest to most complete. All of them expose the API on http://localhost:8000: a landing page with a Try it box at the root, the interactive Swagger UI at /api and this documentation at /docs/.

1. A single container

docker run -d --name telegram-me -p 8000:3000 --restart unless-stopped \
  ghcr.io/koval01/telegram-me:latest

The image is also published on Docker Hub as koval01/telegram-me. Without further configuration it uses an in-process cache, which is ideal for a single small instance.

Check it:

curl http://localhost:8000/healthz          # {"status":"ok"}
curl http://localhost:8000/v1/body/durov    # channel page as JSON

The repository ships a compose.yaml that runs the API next to a Valkey (Redis-compatible) cache:

git clone https://github.com/koval01/telegram-me
cd telegram-me
docker compose up -d --wait

Pick a preset with PRESET:

Preset Feed Previews Rate limit Cache Parser
standard (default) off on off normal full
full on on off normal full
minimal off off 90 req/min per IP aggressive simplified
PRESET=full docker compose up -d --wait

Anything else is set in a .env file next to compose.yaml — copy .env.example and see Configuration for every option.

3. From source

Requires uv (it installs a suitable Python by itself):

git clone https://github.com/koval01/telegram-me
cd telegram-me
uv sync
uv run telegram-me serve --reload   # http://localhost:3000

See Local development for the full workflow.

Next steps