Docker Discourse exposen aan NPM op NPM host met A-record.

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Ulysses
  • Registratie: Oktober 1999
  • Niet online
Nieuwe Status: Opgelost Afbeeldingslocatie: https://tweakers.net/i/XX_qHvPQHSwXiUELXXH5ISawvTo=/x800/filters:strip_exif()/f/image/P18xyF9mESGPnE12TEZxc1yx.png?f=fotoalbum_large

Nee, ik heb niet het hele internet nagelezen voordat ik het hier vraag aan iemand, dus als dat de strekking van je antwoord gaat zijn, dan zeg gewoon niets. Ja ik heb google, gemini, copilot, chatGPT, StackExchange, en diverse andere bronnen die ook kan raadplegen. Maar die/dat vraag ik allemaal niet nu.


Usecase: Discourse op LAN, met exposed netwerk functionaliteit via A-record, achter NGINX Proxy Manager, op dezelfde host als de container van NPM zelf.

Huidige situatie: IP adres met exposed poort laat de eerste pagina's van Discourse installatie procedure zien, maar de domeinnaam is nog niet goed gekoppeld en doorgestuurd kennelijk want ik krijg timeouts en het werkt kortom niet zoals ik hoopte.

Wat werkt niet?
De koppeling tussen LAN IP en extern domein - voor wie er blij van wordt, IP betreft 192.168.100.81 - waar mijn NPM op draait.

Docker laat dit zien:
code:
1
2
3
4
root@webproxy:/home/escovan# docker ps
CONTAINER ID   IMAGE                             COMMAND        CREATED       STATUS       PORTS    NAMES
3638cec157a3   local_discourse/app               "/sbin/boot"   7 hours ago   Up     7 hours   0.0.0.0:15920->80/tcp, [::]:15920->80/tcp  app
9ab84e88aa3d   jc21/nginx-proxy-manager:latest   "/init"     2 weeks ago  Up   2 weeks   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/



discourse app.yaml is als volgt:
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
root@webproxy:/home/escovan# cat discourse/containers/app.yml
## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Uncomment the next line to enable the IPv6 listener
  #- "templates/web.ipv6.template.yml"
  #- "templates/web.ratelimited.template.yml"
  ## Uncomment these two lines if you wish to add Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"
  #- "templates/web.socketed.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
   - "15920:80"   # http
#   - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ## will be set automatically by bootstrap based on detected RAM, or you can override
  db_shared_buffers: "2048MB"

  ## can improve sorting performance, but adds memory usage per-connection
  #db_work_mem: "40MB"

  ## Which Git revision should this container use? (default: tests-passed)
  version: tests-passed
  #upload_size: 100m

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## How many concurrent web requests are supported? Depends on memory and CPU cores.
  ## will be set automatically by bootstrap based on detected CPUs, or you can override
  #UNICORN_WORKERS: 3

  ## TODO: The domain name this Discourse instance will respond to
  ## Required. Discourse will not work with a bare IP number.
  DISCOURSE_HOSTNAME: 'nest.netpal.nl'

  ## Uncomment if you want the container to be started with the same
  ## hostname (-h option) as specified above (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: '*knip*'

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  # SMTP ADDRESS, username, and password are required
  # WARNING the char '#' in SMTP password can cause problems!
  DISCOURSE_SMTP_ADDRESS: *knip*
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: *knip*
  DISCOURSE_SMTP_PASSWORD: "*knip*"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
  DISCOURSE_SMTP_DOMAIN: *knip*   # (required by some providers)
  DISCOURSE_NOTIFICATION_EMAIL: *knip*    # (address to send notifications from)

  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  LETSENCRYPT_ACCOUNT_EMAIL: *knip*

  ## The http or https CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  #DISCOURSE_FORCE_HTTPS: true
  ## The maxmind geolocation IP account ID and license key for IP address lookups
  ## see https://meta.discourse.org/t/-/173941 for details
  DISCOURSE_MAXMIND_ACCOUNT_ID: *knip*
  DISCOURSE_MAXMIND_LICENSE_KEY: *knip*

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /home/escovan/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /home/escovan/shared/standalone/log/var-log
      guest: /var/log

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

## Any custom commands to run after building
run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"


Status is de volgende:
Afbeeldingslocatie: https://tweakers.net/i/slKh7mg-9omNtXFSXeNbv7-BlB8=/800x/filters:strip_exif()/f/image/C0wH5Ijuj3yYQW0DtCVAkKDG.png?f=fotoalbum_large

Waar het wellicht mis gaat, de lijm tussen de LAN-host/poort en de NPM-proxy. Afbeeldingslocatie: https://tweakers.net/i/F1syUcsy1Y8VW1nJ6VTqL9GD520=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/zzg6cV4o4233m9R4vAGPmk67.png?f=user_large
De Discourse verstuurt wel een mailtje, maar komt letterlijk alleen niet verder op het beoogde domeinnaam/host. En het vermoeden bestaat dus dat ik iets 'heel simpels' over het hoofd zie in mijn NPM.

Daarbij zoek ik dus nu assistentie. Wellicht heeft iemand dit al gedaan. Kortom, wat mis ik hier?

En zou ik mezelf een boel ellende kunnen besparen door eventjes in te tappen op het collectief in plaats van jarenlang dingen zelfstandig en alleen uit te zoeken omdat ik anders bang ben dat ik genadeloos afgefakkeld word met hoe dom ik wel niet ben dat ik iets niet zou snappen O-)

[ Voor 2% gewijzigd door Ulysses op 11-10-2024 11:52 . Reden: Opgelost. Fixed. Klaar. Dank u. ]

Het leven is als koffie: heel lekker, maar veel te duur en zo weer op.


Acties:
  • 0 Henk 'm!

  • Emperor_
  • Registratie: November 2004
  • Laatst online: 09-10 19:26
Wat probeer je precies te doen? Ik neem aan dat je een applicatie die je zelf host bereikbaar wilt maken via internet met het domein nest.netpal.nl. Dit domein geeft een publiek ipv4 adres terug.

Hiervoor zal je op zijn minst een port forward moeten maken op je router als je achter NAT zit op ipv4. De port forward stel je dan in naar je proxy manager of als je het simpel wil houden direct naar je discourse.

Hoe je port forwarding configureert voor je specifieke router is vast te vinden met Google.

Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Nu online

BCC

- machine hardenen - nginx proxy erop , letsencrypt erop voor het domein - machine in de DMZ. Je externe ip (whatismyip.com) plakken in dns record . En dan hoop ik dat je een vast ip hebt?

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • Ulysses
  • Registratie: Oktober 1999
  • Niet online
Dat is niet het probleem. Ik ben bekend met zaken als portforwarding heb en een compleet werkend lab verder waar bijvoorbeeld https://files.netpal.nl ook op staat. NPM werkt ook prima verder. Andere hosts in mijn netwerk kan ik ook bereikbaar maken.

Ik wil daarnaast extra, een discourse instantie beschikbaar maken, en gebruik de host van de proxy manager omdat die toevallig nog een flinke opslagcapaciteit heeft.

Op dit moment herbouw ik Discourse via de socket-route om met een extra NGINX nog eens op de host direct beschikbaar te maken. Ik vraag mij af of die dat eet, zowel een nginx vanuit de NPM container als een extra nginx op de host. (Uiteraard wel met andere naar buiten pratende poorten natuurlijk)

Update:
De discourse folder/container er af gegooid en opnieuw begonnen bij de basics. Ik volg deze handleiding - voor wie beter een idee van de usecase en de context nodig heeft.
Nu niet in mijn home map direct opgeslagen, maar via een symbolische link. De home partitie bevat de gewenste ruimte namelijk. Dus die ik heb gesymlinkt naar /var/discourse inmiddels. Zou ook goed moeten gaan.... Het pruttelt in ieder geval (dit duurt dan - telkens - een dik kwartier ofzo...)
Afbeeldingslocatie: https://tweakers.net/i/tcvF93Ik1963QtxwjeGUUeyJu7U=/800x/filters:strip_exif()/f/image/XIHx6CYMW8BZGigxx9PbvYec.png?f=fotoalbum_large

---
Terwijl dit is feitelijk het probleem allemaal niet.

Scenario was:
App luistert op lokale poort. NPM aanmaken van host werkt niet. Portforwarding werkt uiteraard, dat is het probleem niet. Gaat om App discourse. Zie meer mensen worstelen er mee online. App moet via reverse proxy gewoon babbelen met de rest van de wereld, zoals de rest van mijn gewenste netwerk ook doet. Verdachten? Zowel discourse als NPM in deze... maar mijn relatieve nieuwigheid met containers zou ook een rol kunnen spelen.

[ Voor 78% gewijzigd door Ulysses op 11-10-2024 08:00 . Reden: handleidingen die opties laten zien toegevoegd ]

Het leven is als koffie: heel lekker, maar veel te duur en zo weer op.


Acties:
  • 0 Henk 'm!

  • Ulysses
  • Registratie: Oktober 1999
  • Niet online
HOERA ! F*CK YEAH

Wat ik voor een magie heb uitgekookt weet ik verder niet helemaal zeker... Gewoon netjes opnieuw, en tevens de poorten toegelaten via UFW op de host - kan een *klein detail* zijn geweest ;-) , maar dit zegt mij: Niets meer aan doen!

Afbeeldingslocatie: https://tweakers.net/i/b_IFm0i40PHGd9Py-r7CfidT9xU=/800x/filters:strip_exif()/f/image/rz9QXxpS55zj9hitKHxdndFg.png?f=fotoalbum_large

Bedankt voor het meekijken iedereen!

[ Voor 6% gewijzigd door Ulysses op 11-10-2024 08:23 . Reden: handleiding toegevoegd - voor het eeuwige archief. ]

Het leven is als koffie: heel lekker, maar veel te duur en zo weer op.