Skip to content

Reverse proxy setup

Securing your bot with SSL/TLS encryption is strongly recommended.

To do this, you need:

  1. An FQDN (e.g. example.com)
  2. To set up a web server as a reverse proxy

Tip

If your bot is running on a supported port, you can use Cloudflare's Proxy and free SSL/TLS instead.

If you already have a domain and know how to create an HTTPS proxy, you can safely skip this page. If not, there are several options available:

Traefik Nginx Caddy PebbleHost
Difficulty Most difficult Moderate Easy Easy
Bot installations Docker only Any Any PebbleHost only

Make sure you set the bot's HTTP_TRUST_PROXY environment variable to true.

If you already have Caddy running, update your existing configuration and use caddy reload instead.

First, install Caddy, then create a Caddyfile:

Caddyfile
1
2
3
tickets.example.com {
    reverse_proxy 127.0.0.1:8169
}

Now start Caddy:

1
sudo caddy start

Nginx

Community guides

Configuration

This example will proxy traffic from http://tickets.example.com to your bot. To secure the connection, refer to the guides linked above.

/etc/nginx/sites-available/tickets.example.com
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
server {
    listen 80;
    listen [::]:80;

    server_name tickets.example.com;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_http_version 1.1;
        proxy_pass http://127.0.0.1:8169;
    }
}

Traefik

Documentation

Configuration

This example shows the additions you may need to make to your docker-compose.yml file to configure Traefik. After installing and configuring Traefik (referring to the documentation linked above), change the highlighted values to match your configuration.

This example shows the configuration you may need to add to the bot service & router in example docker-compose.yml file. Refer to the documentation linked above for more information.

docker-compose.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
version: "3.9"

services:
  mysql:
    #(...)
  bot:
    #(...)
    networks:
      - discord-tickets
      - traefik_network 
    #(...)
  env:
    #(...)
      HTTP_TRUST_PROXY: "true" 
    labels:
      - "traefik.enable=true" 
      - "traefik.docker.network=traefik_network" 
      - "traefik.http.routers.tickets.entrypointswebsecure" 
      - "traefik.http.routers.tickets.rule=Host(`tickets.example.com`)" 
      - "traefik.http.services.tickets.loadbalancer.server.port=8169" 

networks:
  discord-tickets:
  traefik_network: 
    external: true
#(...)

PebbleHost

Was this page helpful?

Comments