xBrowserSync über Docker

mabox

Benutzer
Mitglied seit
10. Jul 2013
Beiträge
192
Punkte für Reaktionen
12
Punkte
24
Hallo Zusammen,
ich hab zu dem Thema nichts gefunden im Forum, daher möchte ich mal das Thema gerne starten.

Hat hier jemand "xBrowserSync" über Docker am laufen? Ich finde es als Alternative z.B. zu Firefox Sync gar nicht so schlecht und es wäre am Ende auch Browser übergreifend einsetzbar.
Ich habe aktuell im Firefox das xBrowserSync über das AddOn eingebunden und auf dem Handy verwende ich die APP mit aktuell einer "öffentlichen Instanz". Gerne würde ich das aber mal ausprobieren, wie Firefox Sync, selbst zu hosten.

Ich wollte das auf der Synology über Docker realisieren, leider bekomme ich es nicht hin.
Man findet das offizielle Image über die Docker GUI auf der Synology oder hier.
Da mir die erste Möglichkeit "Running the API Image" etwas zu kompliziert schien, mit zuerst eine DB einrichten usw. versuche ich mich an der zweiten Möglichkeit "Running a production-ready service" da dort soweit ich es verstehe alles "mitkommt".

Da ich denke das die Ports 443 und 80 auf der Synology schon belegt sind habe ich in der "docker-compose.yml" die Porteinträge 443:443 und 80:80 dann auf 8443:443 und 8888:80 angepasst. Anschließend das Ganze mit docker compose gestartet...... Tatsächlich laufen jetzt auch alle Container schonmal.

Da ich auch schon beim Firefox Sync mit dem Reverse Proxy der Synology gearbeitet habe, habe ich das hier jetzt mal 1 zu 1 nachbilden wollen.
Ich habe z.B. meine URL https://xsync.DOMAIN-NAME auf den lokalen Port 8443 (https) weitergeleitet.
Leider erhalte ich unter meiner URL dann eine Fehlerseite vom Synology Webserver das die Seite nicht gefunden werden kann.

Wenn ich https://xsync.DOMAIN-NAME auf den lokalen Port 8888 (http) umleite erhalte ich einen "Umleitungsfehler" im Browser weil man anscheinend zu oft weitergeleitet wurde.

Ich denke im ersten Moment wäre es wichtig zu wissen ob die Container sauber laufen aber da hab ich überhaupt keine Idee wie man das prüfen könnte. Auf jedenfall stoppen sie schonmal nicht und laufen erstmal soweit stabil.

Hat evtl. jemand xBrowserSync bei sich laufen oder auch Interesse das vielleicht mal auszuprobieren um ggfl. eine Anleitung für "Dummys" hier zu posten :giggle:


Viele Grüße
mabox
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
1.978
Punkte für Reaktionen
576
Punkte
134
Was ich jetzt vermisse: Kommst Du denn auf die URL vom Docker selber, also ohne Reverse Proxy?
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.137
Punkte für Reaktionen
898
Punkte
424
Wenn du nur die Ports geändert hast... Anleitung nochmal lesen.
Mindestens den API_HOSTNAME muss man noch setzen in den Umgebungsvariablen. Ebenso Datenbank-Nutzer/Passwort.

Welche Einstellungen man noch für den Proxy setzen muss für den Container selber habe ich nicht recherchiert.
Bei vielen Proxies sind folgende Header im Reverse Proxy zu setzen (in der Syno GUI sind nur Spalte 2 und 3 sichtbar / einzutragen.
(Ist ein Schuss ins Blaue aus Erfahrungswerten, nicht explizit für XBS recherchiert)
Code:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

Hinweise bekommt man eventuell auch im Log. Doppelklick laufender Container / Details.
 

mabox

Benutzer
Mitglied seit
10. Jul 2013
Beiträge
192
Punkte für Reaktionen
12
Punkte
24
@Adama
Danke das Du mal reinschaust. Ich bin bis jetzt auch Firefox only User aber ich find es als Alternative echt gut. Aktuell fahr ich quasi zweigleisig. Firefox synct und über das xBrowserSync AddOn im Firefox sync ich auch..... möchte das einfach mal eine Weile testen......

Also zu Deiner Frage..... für mein Verständnis müsste es eigentlich klappen über https://SYNO-IP:8443 oder http://SYNO-IP:8888. Beides mal geht es aber nicht. Bei der 8433 kommt "Fehler: Gesicherte Verbindung fehlgeschlagen - Fehlercode: SSL_ERROR_INTERNAL_ERROR_ALERT"
Bei der 8888 werde ich auf die Startseite der SYNO weitergeleitet.

@Fusion
Au das hatte ich vergessen zu schreiben. Ich habe tatsächlich auch den API_HOSTNAME und DB Werte angepasst. Im Proxie habe ich auch tatsächlich die beiden oberen Werte drin.
Von xBrowserSync über das offizielle GIT Repo hat es am Ende drei Container, xbs-api, xbs-db und xbs-reverse-proxy. Bei den ersten beiden Container gibt es keine Fehlermeldungen. Beim Reverse Proxy Container jede Menge, siehe unten.

Code:
{"level":"warn","ts":1642262760.9427252,"logger":"admin","msg":"admin endpoint disabled"}

{"level":"info","ts":1642262760.9431336,"logger":"http","msg":"server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS","server_name":"proxy","https_port":443}

{"level":"info","ts":1642262760.9431632,"logger":"http","msg":"enabling automatic HTTP->HTTPS redirects","server_name":"proxy"}

{"level":"info","ts":1642262760.9437025,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc000446310"}

{"level":"info","ts":1642262760.944413,"logger":"http","msg":"enabling automatic TLS certificate management","domains":["DOMAIN-URL"]}

{"level":"info","ts":1642262760.9448624,"msg":"autosaved config","file":"/config/caddy/autosave.json"}

Caddy proxying https://DOMAIN-URL -> http://api:8080

{"level":"info","ts":1642262760.950891,"logger":"tls.obtain","msg":"acquiring lock","identifier":"DOMAIN-URL"}

{"level":"info","ts":1642262760.9521713,"logger":"tls","msg":"cleaned up storage units"}

{"level":"info","ts":1642262760.9529068,"logger":"tls.obtain","msg":"lock acquired","identifier":"DOMAIN-URL"}

{"level":"info","ts":1642262760.9722378,"logger":"tls.issuance.acme","msg":"waiting on internal rate limiter","identifiers":["DOMAIN-URL"]}

{"level":"info","ts":1642262760.972603,"logger":"tls.issuance.acme","msg":"done waiting on internal rate limiter","identifiers":["DOMAIN-URL"]}

{"level":"info","ts":1642262762.702999,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"DOMAIN-URL","challenge_type":"http-01","ca":"https://acme-v02.api.letsencrypt.org/directory"}

{"level":"error","ts":1642262773.8232303,"logger":"tls.issuance.acme.acme_client","msg":"challenge failed","identifier":"DOMAIN-URL","challenge_type":"http-01","status_code":400,"problem_type":"urn:ietf:params:acme:error:connection","error":"Fetching http://DOMAIN-URL/.well-known/acme-challenge/Thr_QO0IWh-lynRWR7fjJEbJhJcawtyQOvOBvR4ZWFs: Timeout during connect (likely firewall problem)"}

{"level":"error","ts":1642262773.8232787,"logger":"tls.issuance.acme.acme_client","msg":"validating authorization","identifier":"DOMAIN-URL","error":"authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - Fetching http://DOMAIN-URL/.well-known/acme-challenge/Thr_QO0IWh-lynRWR7fjJEbJhJcawtyQOvOBvR4ZWFs: Timeout during connect (likely firewall problem)","order":"https://acme-v02.api.letsencrypt.org/acme/order/359020980/55634057560","attempt":1,"max_attempts":3}

{"level":"info","ts":1642262775.341147,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"DOMAIN-URL","challenge_type":"tls-alpn-01","ca":"https://acme-v02.api.letsencrypt.org/directory"}

{"level":"error","ts":1642262786.3708692,"logger":"tls.issuance.acme.acme_client","msg":"challenge failed","identifier":"DOMAIN-URL","challenge_type":"tls-alpn-01","status_code":400,"problem_type":"urn:ietf:params:acme:error:connection","error":"Timeout during connect (likely firewall problem)"}

{"level":"error","ts":1642262786.3709104,"logger":"tls.issuance.acme.acme_client","msg":"validating authorization","identifier":"DOMAIN-URL","error":"authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - Timeout during connect (likely firewall problem)","order":"https://acme-v02.api.letsencrypt.org/acme/order/359020980/55634115390","attempt":2,"max_attempts":3}

{"level":"info","ts":1642262788.124512,"logger":"tls.issuance.acme","msg":"waiting on internal rate limiter","identifiers":["DOMAIN-URL"]}

{"level":"info","ts":1642262788.1245701,"logger":"tls.issuance.acme","msg":"done waiting on internal rate limiter","identifiers":["DOMAIN-URL"]}

{"level":"info","ts":1642262797.606111,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"DOMAIN-URL","challenge_type":"http-01","ca":"https://acme.zerossl.com/v2/DV90"}

{"level":"error","ts":1642263108.1145225,"logger":"tls.obtain","msg":"will retry","error":"[DOMAIN-URL] Obtain: [DOMAIN-URL] solving challenges: [DOMAIN-URL] authorization took too long (order=https://acme.zerossl.com/v2/DV90/order/n-UA8mxrEpTc2YuUHcec0g) (ca=https://acme.zerossl.com/v2/DV90)","attempt":1,"retrying_in":60,"elapsed":347.161389022,"max_duration":2592000}

{"level":"info","ts":1642263170.5598059,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"DOMAIN-URL","challenge_type":"tls-alpn-01","ca":"https://acme-staging-v02.api.letsencrypt.org/directory"}

{"level":"error","ts":1642263181.6073132,"logger":"tls.issuance.acme.acme_client","msg":"challenge failed","identifier":"DOMAIN-URL","challenge_type":"tls-alpn-01","status_code":400,"problem_type":"urn:ietf:params:acme:error:connection","error":"Timeout during connect (likely firewall problem)"}

{"level":"error","ts":1642263181.6073582,"logger":"tls.issuance.acme.acme_client","msg":"validating authorization","identifier":"DOMAIN-URL","error":"authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - Timeout during connect (likely firewall problem)","order":"https://acme-staging-v02.api.letsencrypt.org/acme/order/40108418/1539686798","attempt":1,"max_attempts":3}

{"level":"info","ts":1642263183.0128043,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"DOMAIN-URL","challenge_type":"http-01","ca":"https://acme-staging-v02.api.letsencrypt.org/directory"}

{"level":"error","ts":1642263193.8047545,"logger":"tls.issuance.acme.acme_client","msg":"challenge failed","identifier":"DOMAIN-URL","challenge_type":"http-01","status_code":400,"problem_type":"urn:ietf:params:acme:error:connection","error":"Fetching http://DOMAIN-URL/.well-known/acme-challenge/zzMGjLlcL8CNR0-IwRDc9NQRYQl0J1_KYYepKQBRe3E: Timeout during connect (likely firewall problem)"}

{"level":"error","ts":1642263193.8047996,"logger":"tls.issuance.acme.acme_client","msg":"validating authorization","identifier":"DOMAIN-URL","error":"authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - Fetching http://DOMAIN-URL/.well-known/acme-challenge/zzMGjLlcL8CNR0-IwRDc9NQRYQl0J1_KYYepKQBRe3E: Timeout during connect (likely firewall problem)","order":"https://acme-staging-v02.api.letsencrypt.org/acme/order/40108418/1539688228","attempt":2,"max_attempts":3}

{"level":"info","ts":1642263201.9753656,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"DOMAIN-URL","challenge_type":"http-01","ca":"https://acme.zerossl.com/v2/DV90"}

{"level":"error","ts":1642263511.54071,"logger":"tls.obtain","msg":"will retry","error":"[DOMAIN-URL] Obtain: [DOMAIN-URL] solving challenges: [DOMAIN-URL] authorization took too long (order=https://acme.zerossl.com/v2/DV90/order/5uwsyiL6OJd2vvB9SRi_hg) (ca=https://acme.zerossl.com/v2/DV90)","attempt":2,"retrying_in":120,"elapsed":750.587576636,"max_duration":2592000}

{"level":"info","ts":1642263632.9596949,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"DOMAIN-URL","challenge_type":"tls-alpn-01","ca":"https://acme-staging-v02.api.letsencrypt.org/directory"}

{"level":"error","ts":1642263644.2132509,"logger":"tls.issuance.acme.acme_client","msg":"challenge failed","identifier":"DOMAIN-URL","challenge_type":"tls-alpn-01","status_code":400,"problem_type":"urn:ietf:params:acme:error:connection","error":"Timeout during connect (likely firewall problem)"}

{"level":"error","ts":1642263644.213302,"logger":"tls.issuance.acme.acme_client","msg":"validating authorization","identifier":"DOMAIN-URL","error":"authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - Timeout during connect (likely firewall problem)","order":"https://acme-staging-v02.api.letsencrypt.org/acme/order/40108418/1539736488","attempt":1,"max_attempts":3}

{"level":"info","ts":1642263645.6743808,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"DOMAIN-URL","challenge_type":"http-01","ca":"https://acme-staging-v02.api.letsencrypt.org/directory"}

{"level":"error","ts":1642263656.0669105,"logger":"tls.issuance.acme.acme_client","msg":"challenge failed","identifier":"DOMAIN-URL","challenge_type":"http-01","status_code":400,"problem_type":"urn:ietf:params:acme:error:connection","error":"Fetching http://DOMAIN-URL/.well-known/acme-challenge/YprzlUJrky0WUz_DXjcLNwNIlNASAwZgwQbcFT_0lns: Timeout during connect (likely firewall problem)"}

{"level":"error","ts":1642263656.0669553,"logger":"tls.issuance.acme.acme_client","msg":"validating authorization","identifier":"DOMAIN-URL","error":"authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - Fetching http://DOMAIN-URL/.well-known/acme-challenge/YprzlUJrky0WUz_DXjcLNwNIlNASAwZgwQbcFT_0lns: Timeout during connect (likely firewall problem)","order":"https://acme-staging-v02.api.letsencrypt.org/acme/order/40108418/1539738228","attempt":2,"max_attempts":3}

{"level":"info","ts":1642263670.0521574,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"DOMAIN-URL","challenge_type":"http-01","ca":"https://acme.zerossl.com/v2/DV90"}

{"level":"error","ts":1642263978.5078063,"logger":"tls.obtain","msg":"will retry","error":"[DOMAIN-URL] Obtain: [DOMAIN-URL] solving challenges: [DOMAIN-URL] authorization took too long (order=https://acme.zerossl.com/v2/DV90/order/24Xk6f74BnWkBVN9nOiF6w) (ca=https://acme.zerossl.com/v2/DV90)","attempt":3,"retrying_in":120,"elapsed":1217.554673279,"max_duration":2592000}

{"level":"info","ts":1642264101.4310708,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"DOMAIN-URL","challenge_type":"tls-alpn-01","ca":"https://acme-staging-v02.api.letsencrypt.org/directory"}

{"level":"error","ts":1642264113.109139,"logger":"tls.issuance.acme.acme_client","msg":"challenge failed","identifier":"DOMAIN-URL","challenge_type":"tls-alpn-01","status_code":400,"problem_type":"urn:ietf:params:acme:error:connection","error":"Timeout during connect (likely firewall problem)"}

{"level":"error","ts":1642264113.1091828,"logger":"tls.issuance.acme.acme_client","msg":"validating authorization","identifier":"DOMAIN-URL","error":"authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - Timeout during connect (likely firewall problem)","order":"https://acme-staging-v02.api.letsencrypt.org/acme/order/40108418/1539778158","attempt":1,"max_attempts":3}

{"level":"info","ts":1642264114.9370942,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"DOMAIN-URL","challenge_type":"http-01","ca":"https://acme-staging-v02.api.letsencrypt.org/directory"}

{"level":"error","ts":1642264125.5711803,"logger":"tls.issuance.acme.acme_client","msg":"challenge failed","identifier":"DOMAIN-URL","challenge_type":"http-01","status_code":400,"problem_type":"urn:ietf:params:acme:error:connection","error":"Fetching http://DOMAIN-URL/.well-known/acme-challenge/5S-r4FDthZAMXync1t-PS3g6yPhgIVIaBWPYOdII3Kc: Timeout during connect (likely firewall problem)"}

{"level":"error","ts":1642264125.5712278,"logger":"tls.issuance.acme.acme_client","msg":"validating authorization","identifier":"DOMAIN-URL","error":"authorization failed: HTTP 400 urn:ietf:params:acme:error:connection - Fetching http://DOMAIN-URL/.well-known/acme-challenge/5S-r4FDthZAMXync1t-PS3g6yPhgIVIaBWPYOdII3Kc: Timeout during connect (likely firewall problem)","order":"https://acme-staging-v02.api.letsencrypt.org/acme/order/40108418/1539779108","attempt":2,"max_attempts":3}

{"level":"info","ts":1642264136.117751,"logger":"tls.issuance.acme.acme_client","msg":"trying to solve challenge","identifier":"xsync.bo73.d

EDIT: Ich denke ich versuche mich einfach mal auch am ersten Punkt der Anleitung im Github. Das sieht etwas schlanker aus, zumindest ist dieser Reverse Proxy von denen nicht mit dabei.
 
Zuletzt bearbeitet:

mabox

Benutzer
Mitglied seit
10. Jul 2013
Beiträge
192
Punkte für Reaktionen
12
Punkte
24
Ok ich habe es doch tatsächlich hinbekommen. Ich werde es mal hier dokumentieren für den Fall das jemand mal das gleiche Problem bzw. Interesse daran haben sollte......

Ich habe mich jetzt für die erste Möglichkeit im GIT entschieden "Running the API Image". Da ich ja auf der Synology sowieso mit dem Reverse Proxy arbeite, ist diese zweite Möglichkeit "Running a production-ready service" in der dann ein eigener Reverse Proxy Container mitkommt zu kompliziert, zumindest für mich.....
Voraussetzung für das Ganze ist eine vorhandene MongoDB, diese musste ich zunächst einrichten.

MongoDB
Diese habe ich aufgrund der Anleitung erstellt und dabei einen Datenbank Benutzer mit Passwort definiert. https://schwabencode.com/Blog/2018/07/23/Run-MongoDB-in-Docker-on-Synology
Wichtig war für mich die MongoDB in Version 4 zu nehmen da die 5er eine CPU mit AVX Support voraussetzt die meine DS920+ leider nicht hat. Ich habe die Version 4.4.9 genommen.

Der MongoDB Container läuft nun also und jetzt gilt es eine Datenbank "xbrowsersync" zu erstellen über das Terminal im Docker Container. Dazu kann man sich entweder über den Befehl docker exec verbinden oder über die Docker GUI über "Terminal - Erstellen - bash".

Hier meine Kommandos die im GIT unter Punkt 3 beschrieben sind :
Code:
mongo -u DB-USER-NAME -p

use admin
db.createUser({ user: "xbrowsersyncdb", pwd: "PASSWORD", roles: [ { role: "readWrite", db: "xbrowsersync" }, { role: "readWrite", db: "xbrowsersynctest" } ] })
use xbrowsersync
db.newsynclogs.createIndex( { "expiresAt": 1 }, { expireAfterSeconds: 0 } )
db.newsynclogs.createIndex({ "ipAddress": 1 })
exit


xBrowserSync
Im Pfad "/volume1/docker/" habe ich einen Ordner "xBrowserSync" erstellt und dort eine Datei "settings.json" erstellt.
Ich habe mir dazu die "settings.default.json" aus dem Git kopiert und mit meinen Werten angepasst.
Das sieht dann am Ende so aus:
Code:
{
  "allowedOrigins": [],
  "dailyNewSyncsLimit": 3,
  "db": {
    "authSource": "admin",
    "connTimeout": 30000,
    "host": "SYNO-IP",
    "name": "xbrowsersync",
    "password": "PASSWORD",
    "port": 27017,
    "ssl": false,
    "useSRV": false,
    "username": "xbrowsersyncdb"
  },
  "location": "",
  "log": {
    "file": {
      "enabled": true,
      "level": "info",
      "path": "/var/log/xBrowserSync/api.log",
      "rotatedFilesToKeep": 5,
      "rotationPeriod": "1d"
    },
    "stdout": {
      "enabled": true,
      "level": "info"
    }
  },
  "maxSyncs": 5242,
  "maxSyncSize": 512000,
  "server": {
    "behindProxy": false,
    "host": "127.0.0.1",
    "https": {
      "certPath": "",
      "enabled": false,
      "keyPath": ""
    },
    "port": 8080,
    "relativePath": "/"
  },
  "status": {
    "allowNewSyncs": true,
    "message": "",
    "online": true
  },
  "tests": {
    "db": "xbrowsersynctest",
    "port": 8081
  },
  "throttle": {
    "maxRequests": 1000,
    "timeWindow": 300000
  }
}

(Mit dieser Konfiguration hat man "nur" 500KB Syncspace zur Verfügung "maxSyncSize": 512000," was jetzt nicht soviel ist. Möchte man mehr dann einfach den Wert anpassen. Der Wert wird in Byte definiert)


Nun kann der Container gestartet werden. Zuvor natürlich nochmal kontrollieren ob der MongoDB Container gestartet ist.
Den xBrowserSync Container habe ich dann über die Shell gestartet.
Code:
docker run --name xbs-api -p 50012:8080 -e XBROWSERSYNC_DB_USER=DB-USER-NAME -e XBROWSERSYNC_DB_PWD=DB-USER-PASSWORD -v /volume1/docker/xbrowsersync/settings.json:/usr/src/api/config/settings.json -d xbrowsersync/api

Das wars, beide Container sollte nun laufen.

Was ich dann auch noch gemacht habe ist eben den Reverse Proxy auf der Synology konfiguriert und ein Zertifikat habe ich auch noch für meine xBrowserSync URL bestellt.
Reverse Proxy sieht so aus:
Code:
Protokoll: HTTPS
Hostname: DOMAIN-NAME
Port: 443
Protokoll: HTTP
Hostname: localhost
Port: 8080

Das Endergebnis sieht dann z.B. so aus wie hier: https://xbrowsersync.servicesforfree.com/
Im Firefox kann man nun über das AddOn seine Bookmarks auf seine eigene Instanz syncen: https://addons.mozilla.org/de/firefox/addon
Für das Smartphone gibt es dann noch die entsprechende APP in den jeweiligen Stores, sogar im F-Droid Store: F-Droid
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Fusion und taylor-77

One208

Benutzer
Mitglied seit
20. Jan 2022
Beiträge
1
Punkte für Reaktionen
1
Punkte
53
Hi Mabox
Thank you for the brilliant write up for Synology xbrowsersync docker setup, and it did work

Just for reference →
I had to get the IP of Mongodb container's IP, and add in at line 7 of settings.json
Otherwise I was getting error
{"message":"connect ECONNREFUSED 127.0.0.1:27017","name":"MongooseServerSelectionError","stack":"MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017\n at NativeConnection.Connection.openUri (/usr/src/api/node_modules/mongoose/lib/connection.js:845:32)\n at /usr/src/api/node_modules/mongoose/lib/index.js:348:10\n

Thank you again for helpful description of setUp
 
  • Like
Reaktionen: mabox

mabox

Benutzer
Mitglied seit
10. Jul 2013
Beiträge
192
Punkte für Reaktionen
12
Punkte
24
Hello One208,
thanks for the feedback and the info about your configuration. I am very happy that my contribution has helped you.
 
  • Like
Reaktionen: One208


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat