telegram-file-proxy icon indicating copy to clipboard operation
telegram-file-proxy copied to clipboard

Provide links to files by file_id without exposing bot token

📁 Telegram File Proxy

Docker Image Size (latest semver)

Introduction

Using this proxy you can provide links to files to users by file_id without exposing the bot's token. Extremely useful for the WebApp feature to use files from Telegram in your web app.

To get a link to a file, simply pass file_id of the file as the path:

http://telegram-file-proxy/<file_id>

Usage

Building from source

  1. Build
go mod download && go mod verify && go build -o proxy
  1. Run
./proxy --bot-token 12345:ABCDEFGHIJKLMNOPQRSTUVWXYZ

💡 Pro Tip! Run ./proxy --help to see all available command line arguments.

Using Docker Compose

version: "3"
services:
  telegram-file-proxy:
    image: deptyped/telegram-file-proxy
    ports:
      - "8080:80"
    environment:
      - BOT_TOKEN= # <-- place your bot token here
      - SERVER_PORT=80

Or configuration with command line arguments:

version: "3"
services:
  telegram-file-proxy:
    image: deptyped/telegram-file-proxy
    ports:
      - "8080:80"
    command: --bot-token <place your bot token here> --server-port 80

Using Docker Compose with a Local Bot API Server

version: "3"
services:
  telegram-file-proxy:
    image: deptyped/telegram-file-proxy
    ports:
      - "8080:80"
    volumes:
      - "./data:/var/lib/telegram-bot-api"
    environment:
      - BOT_TOKEN= # <-- place your bot token here
      - SERVER_PORT=80
      - API_ROOT=http://bot-api:8081
      - API_LOCAL=1

  bot-api:
    image: aiogram/telegram-bot-api:latest
    ports:
      - "8081:8081"
    volumes:
      - "./data:/var/lib/telegram-bot-api"
    environment:
      - TELEGRAM_LOCAL=1
      # Create an application with api id and api hash (get them from https://my.telegram.org/apps)
      - TELEGRAM_API_ID= # <-- place your api id here
      - TELEGRAM_API_HASH= # <-- place your api hash here

Configuration

ENV name CLI name Description
BOT_TOKEN bot-token Bot token
SERVER_PORT server-port Server port (8080 by default)
SERVER_HOST server-host Server hostname
API_ROOT api-root Bot API Root (https://api.telegram.org by default)
API_LOCAL api-local Allow providing files from the file system, useful when using a Local Bot API with the --local option (0 by default)

The values from the command line arguments are loaded first. If there are no command line arguments, then the values are loaded from the environment variables. Important! You cannot use environment variables and command line arguments at the same time to configure.