Dummy Gemini Bot supports two deployment strategies on Linux. Docker Compose (recommended) is the simplest path — it handles all system dependencies, the React frontend build, and process management in one command. Systemd gives you a bare-metal installation if you prefer to manage the Python process directly on the host without containers.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/AmiraliNotFound/dummy-gemini-bot/llms.txt
Use this file to discover all available pages before exploring further.
- Docker (Recommended)
- Systemd (Manual)
Install Docker and Docker Compose
Update your package index and install Docker along with Docker Compose:
Clone the repository and configure environment variables
Clone the repository to Fill in all four required fields:
/opt/dummy_gemini_bot and create your .env file:TELEGRAM_TOKEN— Your bot API token from @BotFatherGEMINI_API_KEY— Your Google Gemini API key from Google AI StudioALLOWED_ADMINS— Comma-separated Telegram usernames with admin access (e.g.AmiraliNotFound,MyUser)WEBAPP_URL— (Optional) Your public HTTPS URL for the admin Mini App (e.g.https://admin.yourdomain.com)
Start the containers
Build the image and start the bot in detached mode:
Docker Compose Buildx Bake WarningIf you see the warning Option 2 — Disable Bake entirely:
WARN [0000] Docker Compose is configured to build using Bake, but buildx isn't installed, Docker Compose is trying to use the modern Bake build engine but the Buildx plugin is missing. Fix it one of two ways:Option 1 — Install the Buildx plugin (recommended):Database persistence
All persistent data is stored in the
./data folder on your host machine, mounted into the container at /app/data. The docker-compose.yml sets DB_FILE=/app/data/chat_history.db automatically via an environment override, so your entire chat history, settings, and VIP persona configurations survive container rebuilds and system reboots without any extra configuration.Admin WebApp port
The bot’s aiohttp-based Admin WebApp REST API is exposed on port
8080. This is the backend that serves the React admin dashboard. You can access it locally at http://localhost:8080 or expose it publicly via a reverse proxy or Cloudflare Tunnel (see Setting Up HTTPS below).Setting Up HTTPS for the Admin WebApp (Cloudflare Tunnel)
Telegram requires all Mini App WebApps to be served over HTTPS. The easiest way to satisfy this requirement without managing SSL certificates is a free Cloudflare Tunnel, which creates a secure public HTTPS endpoint that proxies traffic to your local port 8080.Point your domain to localhost:8080 in Cloudflare
In your Cloudflare dashboard, create a tunnel or DNS rule that routes your chosen subdomain (e.g.
admin.yourdomain.com) to http://localhost:8080.Docker Compose Reference
The fulldocker-compose.yml used by the project:
restart: always— the container restarts automatically on failure or system reboot.env_file: .env— loads all variables from your.envfile into the container environment.volumes: ./data:/app/data— mounts the local./datadirectory for database and config persistence.environment: DB_FILE=...— overrides the database path to the mounted volume location.ports: 8080:8080— exposes the Admin WebApp API to the host network.
Dockerfile Overview
The project uses a two-stage Docker build to keep the final image lean while fully automating the frontend compilation: Stage 1 — Frontend builder (node:20-alpine):
- Sets the working directory to
/app/webapp - Copies
package.json/package-lock.jsonand runsnpm install - Copies the full
webapp/source tree and runsnpm run build - Produces compiled static assets in
/app/webapp/dist
python:3.11-slim):
- Installs
build-essentialandffmpegviaapt-get(providesffprobeas well) - Copies the Deno binary directly from
denoland/deno:bininto/usr/local/bin/deno— this is the JavaScript runtime used byyt-dlpfor sites requiring JS evaluation - Installs all Python dependencies from
requirements.txtwithpip install --no-cache-dir - Copies the
src/package andmain.pyentry point - Copies the compiled frontend assets from Stage 1 into
./webapp/dist - Exposes port
8080and sets the default command topython main.py