Our SDK usually contacts our servers at api.bugfender.com (or similar, this might be different if you have a private instance). You might be interested in sending the logs using a custom domain, for example logs.yourcompany.com. This article explains the steps necessary to set this up.

Requirements:

  • A DNS entry on your domain, for example logs.yourcompany.com

  • An SSL certificate for that domain name

  • A proxy that redirects the traffic to api.bugfender.com

Proxying the traffic using Cloudflare

If you're using Cloudflare to serve your DNS, you can easily configure a CNAME with proxying to achieve that.

  • Select the DNS tab on the top navigation bar

  • Click on Add record

  • Create a CNAME entry with the name you want (eg. logs) with target api.bugfender.com. (please note the dot at the end, it's important!) and select Proxied.

  • On the SSL/TLS tab, select the Full encryption mode. Please note "Full (strict)" will not work.

Proxying the traffic using a proxy and Let's Encrypt

You can run a small server that does the TLS termination with your domain name and forwards all traffic to our servers. You can do that with your proxy of preference, for example NGINX, Apache, HAProxy or Traefik.

Here is a sample set of configuration files for Traefik with a certificate generated using Let's Encrypt:

traefik.toml:

[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web.http.redirections.entryPoint]
to = "websecure"
scheme = "https"

[entryPoints.websecure]
address = ":443"

[certificatesResolvers.lets-encrypt.acme]
email = "[email protected]" #TODO: fill in your email address
storage = "ssl/acme.json"
[certificatesResolvers.lets-encrypt.acme.tlsChallenge]

[providers.file]
filename = "traefik_dynamic.toml"

traefik_dynamic.toml:

[http.routers.api]
rule = "Host(`logs.example.com`)" #TODO: fill in your hostname
entrypoints = ["websecure"]
service = "api"
[http.routers.api.tls]
certResolver = "lets-encrypt"

[http.services]
[http.services.api.loadBalancer]
passHostHeader = false
[[http.services.api.loadBalancer.servers]]
url = "https://api.bugfender.com/"

You can run this example with the following command:

docker run -d \
-v $PWD/traefik.toml:/traefik.toml \
-v $PWD/traefik_dynamic.toml:/traefik_dynamic.toml \
-v $PWD/ssl:/ssl \
-p 80:80 -p 443:443 \
traefik:2.4

Did this answer your question?