Docker & nextcloud op port 443, waar zit de fout?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Muncher
  • Registratie: Maart 2009
  • Laatst online: 21-09 00:41
Ik worstel een beetje met Traefik en nextcloud. Het nextcloud docker image dat ik wil gebruiken heeft een voorkeur voor poort 443, maar traefik heeft die poort al in gebruik. Ik heb al geprobeerd de poort van nextcloud naar iets anders om te zetten (bijv. 4443) en vraag Traefik dan naar die poort te luisteren. Ik kreeg echter geen response als ik ga naar url.com/nextcloud.

Er zit ergens een fout in mijn config, maar ik kan hem niet vinden. Wie kan mij helpen? Ik gebruik overigens Docker-compose.

Traefik stuk:

code:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
    #### TRAEFIK #####
    version: '3'
    services:
      traefik:
        image: traefik:v1.7.16
        container_name: traefik
        restart: always
        domainname: ${DOMAINNAME}
        networks:
                #      - default
          - traefik_proxy
        ports:
          - "80:80"
          - "443:443"
    #      - "XXXX:8080"
        environment:
           - TRANSIP_ACCOUNT_NAME=${TRANSIP_ACCOUNT_NAME}
           - TRANSIP_PRIVATE_KEY_PATH=shared/transip.key
        labels:
          - "traefik.enable=true"
          - "traefik.backend=traefik"
          - "traefik.frontend.rule=Host:traefik.${DOMAINNAME}"
    #      - "traefik.frontend.rule=Host:${DOMAINNAME}; PathPrefixStrip: /traefik"
          - "traefik.port=8080"
          - "traefik.docker.network=traefik_proxy"
          - "traefik.frontend.headers.SSLRedirect=true"
          - "traefik.frontend.headers.STSSeconds=315360000"
          - "traefik.frontend.headers.browserXSSFilter=true"
          - "traefik.frontend.headers.contentTypeNosniff=true"
          - "traefik.frontend.headers.forceSTSHeader=true"
          - "traefik.frontend.headers.SSLHost=capturetheflag.eu"
          - "traefik.frontend.headers.STSIncludeSubdomains=true"
          - "traefik.frontend.headers.STSPreload=true"
          - "traefik.frontend.headers.frameDeny=true"
          - "traefik.frontend.auth.basic.users=${HTTP_USERNAME}:${HTTP_PASSWORD}"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock:ro
          - ${USERDIR}/docker/traefik:/etc/traefik
          - ${USERDIR}/docker/shared:/shared


Nextcloud stuk:
code:
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
    ### Nextcloud ###
      nextcloud:
        image: linuxserver/nextcloud
        container_name: nextcloud
        environment:
          - PUID=${PUID}
          - PGID=${PGID}
          - TZ=Europe/London
        volumes:
          - ${USERDIR}/docker/nextcloud/config:/config
          - ${USERDIR}/data:/data
        ports:
          - 443:443
        restart: unless-stopped
        labels:
          - "traefik.enable=true"
          - "traefik.backend=nextcloud"
          - "traefik.frontend.rule=Host:nextcloud.${DOMAINNAME}"
    #      - "traefik.frontend.rule=Host:${DOMAINNAME}; PathPrefixStrip: /portainer"
          - "traefik.port=443"
          - "traefik.docker.network=traefik_proxy"
          - "traefik.frontend.headers.SSLRedirect=true"
          - "traefik.frontend.headers.STSSeconds=315360000"
          - "traefik.frontend.headers.browserXSSFilter=true"
          - "traefik.frontend.headers.contentTypeNosniff=true"

Alle reacties


Acties:
  • 0 Henk 'm!

  • Berlinetta
  • Registratie: Juli 2015
  • Niet online
Ik denk dat je bij je firewall ook moet aangeven dat nextcloud een andere poort gebruikt. Je kan het firewall op service of of op adressen/protocol doen.

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 20:52

Rmg

Je moet sowieso de ports declaratie weghalen bij je nextcloud, het hele idee van traefik & docker is dat je geen ports meer hoeft te exposen op je host maar dat traefik dat onderwater regelt via docker networks.

Dat is meteen een 2e tip, maak een docker network aan voor alle containers die je me traefik wil proxyen. Dat maakt je leven makkelijker.

Acties:
  • 0 Henk 'm!

  • Muncher
  • Registratie: Maart 2009
  • Laatst online: 21-09 00:41
Rmg schreef op woensdag 22 april 2020 @ 06:56:
Je moet sowieso de ports declaratie weghalen bij je nextcloud, het hele idee van traefik & docker is dat je geen ports meer hoeft te exposen op je host maar dat traefik dat onderwater regelt via docker networks.

Dat is meteen een 2e tip, maak een docker network aan voor alle containers die je me traefik wil proxyen. Dat maakt je leven makkelijker.
Alle containers zitten onderling in een netwerk (genaamd traefik_proxy). Traefik moet toch wel weten naar welke container en welke poort hij een bepaald request moet sturen om een antwoord te kunnen geven?

Acties:
  • 0 Henk 'm!

  • vj_slof
  • Registratie: Mei 2010
  • Laatst online: 22:02
url.com/nextcloud:4443 misschien?

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 20:52

Rmg

Muncher schreef op woensdag 22 april 2020 @ 07:10:
[...]


Alle containers zitten onderling in een netwerk (genaamd traefik_proxy). Traefik moet toch wel weten naar welke container en welke poort hij een bepaald request moet sturen om een antwoord te kunnen geven?
Ja en dat doet ie door - "traefik.port=443" daar zeg je ga over je traefik_proxy network naar container:443
Afbeeldingslocatie: https://tweakers.net/i/NGWTCJORmkt6sz2o47X6Bl40Ygs=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/uspvXRhbTEgHWa8M3t5bsZNd.png?f=user_large

Dit plaatje zegmaar, alleen traefik heeft een externe portmapping naar buiten toe, je containers niet.


code:
1
2
ports:
          - 443:443


Hier zeg je map de port van je docker host:443 naar container:443, dat is nou juist het gedeelte wat je door traefik wilt laten doen en niet door host port mappings

Sowieso hangt je nextcloud niet in een netwerk nu. Daar zou je nog een

code:
1
2
networks:
          - traefik_proxy


moeten toevoegen

code:
1
- "traefik.frontend.rule=Host:nextcloud.${DOMAINNAME}"


Ook staat hier dat je naar nextcloud.domain.tld luistert en niet naar domain.tld/nextcloud

Werkt je traefik frontend trouwens wel? (op - "traefik.frontend.rule=Host:traefik.${DOMAINNAME}" , dus traefik.domain.tld )

Daar kan je ook zien welke containers traefik ziet en de frontend rules die er aan hangen.


Ik heb mijn eigen docker compose files er even bijgepakt, ik draai op dit moment ook nog 1.7,x Nog een verschil is dat ik docker in een swarm draai, maar dit is wel een werkende configuratie met 17.x


Docker compose voor traefik
code:
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
27
28
version: '3.7'

networks:
  traefik-swarm:
    driver: overlay
    external: true

services:
  traefik:
    image: traefik:v1.7.19-alpine
    deploy:
      placement:
        constraints:
          - node.role == manager
    command:
      - "--configFile=/var/traefik/traefik.toml"
      - "--docker"
      - "--docker.swarmMode"
      - "--docker.domain=domain.tld"
      - "--docker.watch"
    networks:
      - traefik-swarm
    ports:
      - "443:443"
      - "80:80"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik/config:/etc/traefik



traefik.toml file.

code:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
debug = true
checkNewVersion = true
defaultEntryPoints = ["https","http"]
InsecureSkipVerify = true

[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]

[retry]

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "domain.tld"
watch = true
swarmMode = true
exposedbydefault = true

[acme]
email = "-@-.-"
storage = "/etc/traefik/acme/acme.json"
entryPoint = "https"
OnHostRule = true
acmeLogging = true
[acme.httpChallenge]
  entryPoint = "http"

[web]
address = ":9999"
[web.auth.basic]
  users = [":$$$"]

[file]

[backends]
  [backends.traefik]
    [backends.traefik.servers.server1]
    url = "http://localhost:9999"

[frontends]
  [frontends.traefik]
  backend = "traefik"
  entrypoints = ["http", "https"]
    [frontends.traefik.routes.traefik]
    rule = "Host: domain.tld"



nextcloud.yml

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
version: '3.7'
networks:
  traefik-swarm:
    external: true

services:
  NextCloud:
    networks:
      traefik-swarm:
        aliases:
          - nextcloud
    image: linuxserver/nextcloud:latest
    volumes:
      - /config:/config
    deploy:
      placement:
        constraints:
          - node.role == manager
      labels:
        - "traefik.enable=true"
        - "traefik.docker.network=traefik-swarm"
        - "traefik.frontend.rule=Host:cloud.domain.tld"
        - "traefik.port=80"

[ Voor 97% gewijzigd door Rmg op 22-04-2020 13:34 ]


Acties:
  • 0 Henk 'm!

  • Muncher
  • Registratie: Maart 2009
  • Laatst online: 21-09 00:41
vj_slof schreef op woensdag 22 april 2020 @ 07:26:
url.com/nextcloud:4443 misschien?
Ik zie nu dat ik een foutje heb gemaakt in mijn openingspost. Nextcloud moet bereikbaar zijn op nextcloud.domain.tld. Ik ben gegaan naar nextcloud.domain.tld:443 en zie daar het setup scherm. na het invullen van credentials voor aanmaken van admin account, krijg ik een 504 - Bad gateway melding.

Rmg heeft mij met zijn post ervan overtuigd dat ik alles een keer opnieuw moet bekijken en opbouwen. Jammer, maar helaas..
Pagina: 1