Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Traefik 2.0 verbosity in setting up HTTP to HTTPS redirects #4863

Closed
torarnv opened this issue May 9, 2019 · 40 comments
Closed

Traefik 2.0 verbosity in setting up HTTP to HTTPS redirects #4863

torarnv opened this issue May 9, 2019 · 40 comments
Assignees
Projects
Milestone

Comments

@torarnv
Copy link

@torarnv torarnv commented May 9, 2019

One thing that confused me a bit when trying to set up a 2.0 test was the verbosity of supporting both http and https but with redirects:

  whoami:
    image: containous/whoami
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami_insecure.rule=Host(`whoami.domain.com`)"
      - "traefik.http.routers.whoami_insecure.middlewares=file.https-redirect"
      - "traefik.http.routers.whoami.rule=Host(`whoami.domain.com`)"
      - "traefik.http.routers.whoami.tls=true"
[EntryPoints]
  [EntryPoints.HTTP]
    address = ":80"

  [EntryPoints.HTTPS]
    address = ":443"

[Providers]
  [Providers.Docker]
    Watch = true
    ExposedByDefault = false

  [Providers.File]

[http.middlewares]
  [http.middlewares.https-redirect.redirectscheme]
    scheme = "https"

With the current syntax I'd have to repeat that _insecure route for each service. It would be nice if there was a way to statically configure that as a default in traefik.toml, similar to the old way of adding a redirect to an entrypoint.

Thanks!

@torarnv

This comment has been minimized.

Copy link
Author

@torarnv torarnv commented May 9, 2019

An attempt to solve this by a catch-all static route did not seem to work, but would perhaps be an option:

[http.routers]
  [http.routers.https-redirect]
  rule = "HostRegexp(`{any:.*}`)"
  middlewares = ["https-redirect"]
  service = "dummy"

[http.middlewares]
  [http.middlewares.https-redirect.redirectscheme]
    scheme = "https"

[http.services]
  [http.services.dummy.LoadBalancer]
     [[http.services.dummy.LoadBalancer.servers]]
        url = "localhost"

Similar to the "Forwarding all (non-tls) requests on port 3306 to a database service" example here https://docs.traefik.io/v2.0/routing/routers/

Ideally without the dummy service.

@thebetterjort

This comment was marked as off-topic.

Copy link

@thebetterjort thebetterjort commented May 10, 2019

Have you been able to get TLS store going with 2.0?

@torarnv

This comment was marked as off-topic.

Copy link
Author

@torarnv torarnv commented May 10, 2019

Have you been able to get TLS store going with 2.0?

Yes, with ACME

@stkac

This comment was marked as off-topic.

Copy link

@stkac stkac commented May 10, 2019

Hi, have the same issue...

  whoami:
    image: containous/whoami
    labels:
      - "traefik.http.routers.whoami.tls=true"
      - "traefik.http.routers.whoami.entrypoints=https"
      - "traefik.http.routers.whoami.rule=Host(`whoami.domain.com`)"
      - "traefik.http.middlewares.whoami.redirectscheme.scheme=https"

traefik.toml

[entryPoints]
  [entryPoints.http]
    address = ":80"

  [entryPoints.https]
    address = ":443"

[acme] # every router with TLS enabled will now be able to use ACME for its certificates
   email = "your-email@your-domain.org"
   storage = "acme.json"
   onHostRule = true # dynamic generation based on the Host() & HostSNI() matchers
   [acme.httpChallenge]
      entryPoint = "https" # used during the challenge
@torarnv

This comment was marked as off-topic.

Copy link
Author

@torarnv torarnv commented May 10, 2019

@stkac Use the config I posted in #4863 (comment)

@stkac

This comment has been minimized.

Copy link

@stkac stkac commented May 10, 2019

@stkac Use the config I posted in #4863 (comment)

@torarnv it works! thanks
@torarnv @ldez Traefik v2.0 seems to be more complex in that sense but don't get info or real example like @torarnv on the official documentation site...

Here the example for the mature and well-knowled way of Traefik v1.X
image

@torarnv

This comment has been minimized.

Copy link
Author

@torarnv torarnv commented May 10, 2019

@stkac It's in alpha state, so lack of documentation is understandable 😃

@stkac

This comment has been minimized.

Copy link

@stkac stkac commented May 10, 2019

@stkac It's in alpha state, so lack of documentation is understandable

Agree with you, I really like traefik and spent all day trying to make it work until found your solution, great work @torarnv @ldez 💯

@torarnv

This comment has been minimized.

Copy link
Author

@torarnv torarnv commented May 10, 2019

I noticed you edited my comment from earlier @ldez and this seems to actually work:

[http.routers]
  [http.routers.https-redirect]
  rule = "HostRegexp(`{any:.*}`)"
  middlewares = ["https-redirect"]
  service = "dummy"

[http.middlewares]
  [http.middlewares.https-redirect.redirectscheme]
    scheme = "https"

[http.services]
  [http.services.dummy.LoadBalancer]
     [[http.services.dummy.LoadBalancer.servers]]
        url = ""

Thanks!! 😄

Is url = "" safe here for the dummy service?

@Tiger-zzZ

This comment was marked as off-topic.

Copy link

@Tiger-zzZ Tiger-zzZ commented May 25, 2019

How can i start swarmmode use traefik2.0 , when i use command curl -H Host:whoami.docker.localhost localhost, it's not running

@ldez ldez added this to To do in v2 via automation Jun 19, 2019
@apollo13

This comment was marked as off-topic.

Copy link

@apollo13 apollo13 commented Aug 8, 2019

@torarnv how does that play together with other services discovered for instance from docker? If they define a more specific regex/rule, wouldn't that override that router (I guess the main question here is how routers are evaluated and whether they have priorities or not)?

@denysvitali

This comment has been minimized.

Copy link

@denysvitali denysvitali commented Sep 6, 2019

I'm wondering what's the k8s equivalent of @torarnv's file provider configuration. Obviously there is still no documentation about it, but I can confirm that performing an http -> https redirect for all the hosts is ultra-verbose in Traefik 2.0 (RC)

@Yivan

This comment has been minimized.

Copy link

@Yivan Yivan commented Sep 11, 2019

Hi ! I confirm too this is too much verbose, especially in case of specific port... You cannot even create a generic middleware as redirection is done on 443 if "port" option is not specified.
It should keep the same port as the original one.

It ends to something like that (PORTAINER_PORT is 9543 for instance here):

- "traefik.http.routers.portainer-http.entrypoints=portainer"
- "traefik.http.routers.portainer-https.entrypoints=portainer"
- "traefik.http.routers.portainer-https.tls=true"
- "traefik.http.routers.portainer-http.middlewares=portainer-redirectscheme@docker"
- "traefik.http.routers.portainer-http.rule=Host(`portainer.${COMPOSE_PROJECT_ENV}.${BASE_DOMAIN}`)"
- "traefik.http.routers.portainer-https.rule=Host(`portainer.${COMPOSE_PROJECT_ENV}.${BASE_DOMAIN}`)"
- "traefik.http.middlewares.portainer-redirectscheme.redirectscheme.scheme=https"
- "traefik.http.middlewares.portainer-redirectscheme.redirectscheme.permanent=true"
- "traefik.http.middlewares.portainer-redirectscheme.redirectscheme.port=${PORTAINER_PORT}"

Same in V1:

- "traefik.frontend.entryPoints=portainer"
- "traefik.frontend.rule=Host:portainer.${COMPOSE_PROJECT_ENV}.${BASE_DOMAIN}"
- "traefik.frontend.headers.SSLRedirect=true"

We have some dockerfile with several services, all those labels in V2 will make them pretty diffult to read.

@HubbeKing

This comment has been minimized.

Copy link

@HubbeKing HubbeKing commented Sep 18, 2019

With the way middlewares work in traefik 2.0, I think the ideal solution would be to have some kind of defaultMiddlewares setting in the config file.

That way, you could define an HTTPS redirection middleware once, and tell traefik that every router should use that middleware.
Then override it per-router as necessary.

Something like this:
[global]
defaultMiddlewares = ["redirect"]

[entryPoints.web]
address = ":80"

[entryPoints.web-secure]
address = ":443"

[http.middlewares]
[http.middlewares.redirect.redirectScheme]
scheme = "https"

Because honestly, manually adding labels to refer to the redirection middleware on EVERY service is a bit crazy, considering that with LetsEncrypt support there's essentially no reason to NOT do HTTPS redirection in traefik 1.7

@vtempest

This comment has been minimized.

Copy link

@vtempest vtempest commented Sep 20, 2019

   image: traefik:v2.0-alpine
    command:
      - "--providers.docker=true"
      - "--entrypoints.http.address=:80"
      - "--entrypoints.https.address=:443"
      - "--global.sendAnonymousUsage=false"
      - "--certificatesresolvers.ssl.acme.httpchallenge=true"
      - "--certificatesresolvers.ssl.acme.httpchallenge.entrypoint=http"

# ...

   labels:
      traefik.http.routers.code.rule: Host(`team.${DOMAIN}`)
      traefik.http.routers.code.entrypoints: http
      traefik.http.routers.code.middlewares: redirect
      traefik.http.middlewares.redirect.redirectscheme.scheme: https
      traefik.http.routers.code2.rule: Host(`team.${DOMAIN}`)
      traefik.http.routers.code2.entrypoints: https
      traefik.http.routers.code2.tls.certresolver: ssl
@lumir-mrkva

This comment has been minimized.

Copy link

@lumir-mrkva lumir-mrkva commented Sep 21, 2019

you don't have to set it with every service, all you need to do is to set the middleware with the 1st service and rule HostRegexp(`{any:.*}`) - that will match every http request

@reisholmes

This comment was marked as off-topic.

Copy link

@reisholmes reisholmes commented Sep 23, 2019

@lumir-mrkva Do you have a complete example of how it would look? I'm still quite confused as to which setup is most practical.

@ldez

This comment has been minimized.

Copy link
Member

@ldez ldez commented Sep 23, 2019

@Sarke

This comment has been minimized.

Copy link
Contributor

@Sarke Sarke commented Oct 17, 2019

I would like to submit a proposal that is similar to this, but slightly different solution. If it's too different let me know and I will open a new issue.

I propose that we add router options to the entrypoints that will act as the default router options, unless they are specified by the router in which case those take precedence.

The big complaint is that the v2 config is too verbose for simple tasks. Specifying default options for the entrypoints would solve:

  1. Simpler HTTP to HTTPS redirect. E.g. setting a redirect middleware on the HTTP entrypoint. That is, this issue.

  2. Combined HTTP and HTTPS routers would be possible. For example, I just added this config (which sparked me to make this comment):

[http.routers."mydomain.com redirect"]
  rule = "Host(`mydomain.com`, `www.mydomain.com`)"
  entryPoints = ["web"]
  priority = 100
  middlewares = ["mydomain-redirect"]
  service = "noop@file"

[http.routers."mydomain.com ssl-redirect"]
  rule = "Host(`mydomain.com`, `www.mydomain.com`)"
  entryPoints = ["websecure"]
  priority = 100
  middlewares = ["mydomain-redirect"]
  service = "noop@file"
  [http.routers."mydomain.com".tls]

I can't think of a good reason why these need to be in different routers.

It is the exact same router, other that the HTTPS one has TLS enabled. This doesn't directly deal with HTTP to HTTPS redirect that this issue covers, but many of the issues that raise that concern are marked as duplicates of this issue (e.g. #5183, #5275, #5506 ).

Having the ability to set router options on the entry point level could solve both of these common scenarios.


I see now that my proposal is very similar to this one (#4863 (comment)) that @HubbeKing posted above. The two proposals are compatible, as being able to set default router options would include settings default middleware, bt would also allow setting the TLS option (amongst other things) which would solve the second scenario I posted above.

@xanderflood

This comment has been minimized.

Copy link

@xanderflood xanderflood commented Nov 18, 2019

@Sarke YAML functionality is all fine and dandy as a workaround if you're using YAML, but it doesn't buy you anything for most of the dynamic config providers, e.g. Kubernetes or Docker labels

@Sarke

This comment has been minimized.

Copy link
Contributor

@Sarke Sarke commented Nov 19, 2019

@xanderflood Yes, YAML will only work if you're using YAML. I'm only offering it as an alternative as something that is available now.

And you can use it with a dynamic config: https://docs.traefik.io/providers/file/#watch

@FuNK3Y

This comment has been minimized.

Copy link
Contributor

@FuNK3Y FuNK3Y commented Nov 21, 2019

I was also surprised by the verbosity needed for such a common use case. My proposal here would be to add an additional directive to the tls: redirect

If set to true, the router should do the redirection instead of ignoring non TLS traffic. That way several endpoint can be added to the router (or just all endpoints - as in my sample)

[http.routers.someservice]
  rule = "Host(`mydomain.com`, `www.mydomain.com`)"
  service = "someservice"
  [http.routers.someservice.tls]
  redirect = true

The only drawback that I can foresee right now is that precedence with the redirect middleware would need to be clearly defined. I'd naively suggest that the one in TLS should take precedence. Nevertheless having this & RedirectScheme setup on the same router should work just fine

@eclipticrick

This comment has been minimized.

Copy link

@eclipticrick eclipticrick commented Nov 23, 2019

Thanks!! 😄

I've used the following to make it work without the dummy service:

(file provider toml)

[http.middlewares]
  [http.middlewares.HTTPS-REDIRECT.redirectScheme]
    scheme = "https"

(traefiks docker-compose file)

      - traefik.http.routers.https-redirect.rule=HostRegexp(`{any:.*}`)
      - traefik.http.routers.https-redirect.middlewares=HTTPS-REDIRECT@file
      - traefik.http.routers.https-redirect.service=api@internal
@CuBiC3D

This comment has been minimized.

Copy link

@CuBiC3D CuBiC3D commented Nov 23, 2019

If you are using a dynamic provider, there is no need to define a middleware in file provider.

I'm using docker with the following labels on traefik:

    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=proxy_public"
      - "traefik.http.routers.https-redirect.entrypoints=http"
      - "traefik.http.routers.https-redirect.rule=HostRegexp(`{any:.*}`)"
      - "traefik.http.routers.https-redirect.middlewares=https-redirect"
      - "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"

This creates the redirect middleware and redirects all http requests to https. No dummy service required since docker provider generates service definitions for containers.

Containers using traefik have something like that:

    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=proxy_public"
      - "traefik.http.routers.my-app.entrypoints=https"
      - "traefik.http.routers.my-app.rule=Host(`my-app.example.com`)"
      - "traefik.http.routers.my-app.tls.certresolver=default"
@gaui

This comment has been minimized.

Copy link

@gaui gaui commented Nov 26, 2019

@CuBiC3D cool but the file provider way works also with Kubernetes.

@appleboy

This comment has been minimized.

Copy link

@appleboy appleboy commented Dec 1, 2019

The only way I think to redirect HTTP to HTTPS in file provider as followings for single service:

[http.routers]
  [http.routers.to-prometheus]
  rule = "Host(`prometheus.example.com`)"
  middlewares = ["https-redirect"]
  entrypoints = ["web"]
  service = "prometheus"

  [http.routers.to-prometheus-ssl]
  rule = "Host(`prometheus.example.com`)"
  entrypoints = ["web-secure"]
  service = "prometheus"
    [http.routers.to-prometheus-ssl.tls]
      certResolver = "sample"

for docker provider:

version: '3.7'

services:
  app:
    image: nginx:1.17
    restart: always
    ports:
      - "80"
    logging:
      options:
        max-size: "10k"
        max-file: "4"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nginx.rule=Host(`nginx.example.com`)"
      - "traefik.http.routers.nginx.entrypoints=web"
      - "traefik.http.routers.nginx.middlewares=redirect"
      - "traefik.http.middlewares.redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.nginx-ssl.rule=Host(`nginx.example.com`)"
      - "traefik.http.routers.nginx-ssl.entrypoints=web-secure"
      - "traefik.http.routers.nginx-ssl.tls.certresolver=sample"
@GustavoAmerico

This comment has been minimized.

Copy link

@GustavoAmerico GustavoAmerico commented Dec 8, 2019

It's worked for me.

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: http-to-https 
  namespace: traefik
spec:
  entryPoints:
    - http # The entrypoint name for port 80 (no secure)
  routes:
    - match: HostRegexp(`{any:.+}`)
      kind: Rule 
      services:
        - name: traefik #any service in the namespace
          port: 80  
      middlewares:
        - name: redirect-https
          namespace: traefik #case the Middleware has distinct namespace

---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware 
metadata:
  name: redirect-https
  namespace: traefik
spec:
  redirectScheme:
    scheme: https
    permanent: "true"
    port: 443
@xanderflood

This comment has been minimized.

Copy link

@xanderflood xanderflood commented Dec 9, 2019

Here's the approach I used:

In my static config:

[providers]
  [providers.file]
    watch = true
    filename = "${dynamic_toml_path}"

In the dynamic file config:

[http]
  # Add the router
  [http.routers]
    [http.routers.http-to-https]
      entryPoints = ["web"]
      middlewares = ["redirect-to-https"]
      rule = "HostRegexp(`{host:.+}`)"

      # Every router needs a service, even if it routes all its
      # traffic elsewhere
      service = "noop"

  [http.middlewares]
    [http.middlewares.redirect-to-https.redirectScheme]
      scheme = "https"

  [http.services]
    # noop service, the URL will be never called
    [http.services.noop.loadBalancer]
      [[http.services.noop.loadBalancer.servers]]
        url = "http://192.168.0.1"

Then use whichever other provider you like to provision real services, and those services only need to listen to your HTTPS entrypoint.

@cupcakearmy

This comment was marked as off-topic.

Copy link

@cupcakearmy cupcakearmy commented Dec 27, 2019

entryPoints:
  http:
    address: ":80"
  https:
    address: ":443"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"

tls:
  options:
    default:
      minVersion: VersionTLS12
      cipherSuites:
        - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
        - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
        - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
        - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
        - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
        - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305

certificatesResolvers:
  le:
    acme:
      KeyType: RSA4096
      email: ******
      storage: acme.json
      httpChallenge:
        entryPoint: http

http:
  middlewares:
    redirect-to-https:
      redirectsheme:
        scheme: "https"

  routers:
    redirs:
      rule: "hostregexp(`{host:.+}`)" 
      entrypoint: "http"
      middlewares: "redirect-to-https"

I can't get the global redirect to work. Any suggestions?

@xanderflood

This comment was marked as off-topic.

Copy link

@xanderflood xanderflood commented Dec 27, 2019

@cupcakearmy not sure if this is your issue but all routers need to have a service. Your redirect router will never access its service, since it routes all traffic elsewhere, but it still needs to have one

@expelledboy

This comment has been minimized.

Copy link

@expelledboy expelledboy commented Jan 8, 2020

For anyone having issues using the RedirectScheme middleware, be aware that --providers.docker.exposedbydefault=false would require that you include - traefik.enable=true as a label for traefik to actually pick up the configuration. That took me way too long to figure out..

Here is the complete working solution using only a docker-compose.yml file, including a working web service. Its not that verbose imho, and this is a complete drop-in replacement for jwilder/nginx-proxy that supports multiple ports per container 🙌 Thank you guys!!

version: '3'

services:

  reverse-proxy:
    image: traefik:v2.1
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - traefik-acme:/etc/traefik/acme
    command:
      # Enabling docker provider.
      - --providers.docker=true
      # Define entrypoints.
      - --entryPoints.http.address=:80
      - --entryPoints.https.address=:443
      # Do not expose containers unless explicitly told so.
      - --providers.docker.exposedbydefault=false
      # Use letsencrypt for https.
      - --certificatesResolvers.le.acme.caServer=https://acme-staging-v02.api.letsencrypt.org/directory
      - --certificatesResolvers.le.acme.email=${ADMIN_EMAIL}
      - --certificatesResolvers.le.acme.storage=acme.json
      - --certificatesResolvers.le.acme.httpChallenge.entryPoint=http
      - --certificatesResolvers.le.acme.tlsChallenge=true
    labels:
      # Force https everywhere.
      - traefik.enable=true
      - traefik.http.routers.https-redirect.entrypoints=http
      - traefik.http.routers.https-redirect.rule=HostRegexp(`{any:.*}`)
      - traefik.http.routers.https-redirect.middlewares=https-only
      - traefik.http.middlewares.https-only.redirectscheme.scheme=https

  whoami:
    image: containous/whoami
    labels:
      # Explicitly tell Traefik to expose this container.
      - traefik.enable=true
      # The domain the service will respond to.
      - traefik.http.routers.whoami.rule=Host(`whoami.${DOMAIN}`)
      # Use letsencrypt for https.
      - traefik.http.routers.whoami.tls.certresolver=le

networks:

  default:
    external:
      name: reverse-proxy

volumes:

  traefik-acme:
    external: true
@sirlatrom

This comment was marked as off-topic.

Copy link
Contributor

@sirlatrom sirlatrom commented Jan 13, 2020

@expelledboy FYI that config only works if you stick to a single replica of the whoami service. If you add:

    deploy:
      replicas: 2

and do e.g. docker stack deploy --compose-file docker-compose.yml tr you'll see Traefik complaining:

tr_reverse-proxy.1.kdcct5iq1r2z@lx64pc0265    | time="2020-01-13T18:08:34Z" level=error msg="Router defined multiple times with different configurations in [tr-whoami-1-uwvetwrajnzbwo97fxompctvy-0f820203a0fc30f3b76e0b847b5b13909ae40f38944dfbb4b47aed459b29f1dd tr-whoami-2-rhoirsr5cpqmidzmqoj90ht27-127a4a1e6d584378dda16f0913f06256ec54ab2702c9b8b70a25742975931e5d]" providerName=docker routerName=whoami

I believe that is related to #5134.

@xanderflood

This comment was marked as off-topic.

Copy link

@xanderflood xanderflood commented Jan 13, 2020

@expelledboy @sirlatrom I believe that's because you're using container labels instead of service labels. Using deploy: labels: instead of just labels: should fix this

@sirlatrom

This comment was marked as off-topic.

Copy link
Contributor

@sirlatrom sirlatrom commented Jan 13, 2020

@expelledboy @sirlatrom I believe that's because you're using container labels instead of service labels. Using deploy: labels: instead of just labels: should fix this

This is specifically in the scenario of deploying with Swarm Mode, but not enabling Traefik's Swarm Mode support, i.e. letting Traefik look at just containers.

See also this comment: #5134 (comment).

@ldez

This comment was marked as off-topic.

Copy link
Member

@ldez ldez commented Jan 13, 2020

@sirlatrom the current discussion is a bit off topic. The forum is better place to speak about that.

If I understand well you are using Swarm Mode without Traefik's Swarm Mode, the v1 or v2 Traefik will not work very well in this case, it's an expected behavior.

We can continue to discuss in the forum.

@ldez ldez self-assigned this Jan 24, 2020
@Yajo Yajo mentioned this issue Jan 28, 2020
0 of 1 task complete
@Yajo

This comment has been minimized.

Copy link

@Yajo Yajo commented Feb 5, 2020

I also find confusing that there are 2 options:

  1. traefik.http.middlewares.force-https.redirectscheme.scheme=https
  2. traefik.http.middlewares.force-https.headers.sslredirect=true

Which one is better? Are those equivalent?

FTR https://containo.us/blog/traefik-2-0-docker-101-fc2893944b9d/#i-want-https-redirection- explains how and why to configure global HTTP2HTTPS redirection.

@AndrewSav

This comment has been minimized.

Copy link
Contributor

@AndrewSav AndrewSav commented Feb 6, 2020

@Yajo for support it's better to use community forums.

@dimm0

This comment has been minimized.

Copy link

@dimm0 dimm0 commented Feb 6, 2020

This issue has been there since 2.0 release, no resolution still, no coverage in docs... What's the point to ask in forums?

@AndrewSav

This comment has been minimized.

Copy link
Contributor

@AndrewSav AndrewSav commented Feb 6, 2020

@dimm0

  • I was referring to Yajo's comment specifically, not to "the issue"
  • The forum is the proper avenue for support question, GitHub issue tracker is just for tracking issues.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
v2
Done
Linked pull requests

Successfully merging a pull request may close this issue.

You can’t perform that action at this time.