V 3.0.0
Jetzt läufts erst mal auf citysensor.de (strato) mit der MongoDB auf IONOS
This commit is contained in:
30
.env.example
Normal file
30
.env.example
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Environment Variables für docker-compose.prod.yml
|
||||||
|
# WICHTIG: Kopiere diese Datei zu .env und passe die Werte an!
|
||||||
|
# cp .env.example .env
|
||||||
|
#
|
||||||
|
# ACHTUNG: .env sollte NICHT ins Git committed werden!
|
||||||
|
|
||||||
|
# Server Configuration
|
||||||
|
SERVERPORT=3005
|
||||||
|
EXTERNAL_PORT=3005
|
||||||
|
DEBUG=false
|
||||||
|
|
||||||
|
# MongoDB Configuration - EXTERNER SERVER
|
||||||
|
# Beispiel für Produktionsserver:
|
||||||
|
MONGOHOST=your-mongodb-server.example.com
|
||||||
|
MONGOPORT=27017
|
||||||
|
MONGOBASE=allsensors
|
||||||
|
|
||||||
|
# MongoDB Authentication
|
||||||
|
# Setze auf "true" wenn MongoDB Authentifizierung verwendet
|
||||||
|
MONGOAUTH=true
|
||||||
|
|
||||||
|
# MongoDB User und Password im Format: username:password
|
||||||
|
# Beispiel: MONGOUSRP=admin:SecurePassword123
|
||||||
|
MONGOUSRP=admin:your-secure-password-here
|
||||||
|
|
||||||
|
# Node Environment
|
||||||
|
NODE_ENV=production
|
||||||
|
|
||||||
|
# Timezone
|
||||||
|
TZ=Europe/Berlin
|
||||||
18
.env.local
Normal file
18
.env.local
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Environment Variables für lokale Entwicklung mit docker-compose.local.yml
|
||||||
|
# Diese Datei kann für lokale MongoDB-Verbindungseinstellungen verwendet werden
|
||||||
|
|
||||||
|
# Server Configuration
|
||||||
|
SERVERPORT=3005
|
||||||
|
DEBUG=true
|
||||||
|
|
||||||
|
# MongoDB Configuration - REMOTE SERVER
|
||||||
|
MONGOHOST=217.72.203.152
|
||||||
|
MONGOPORT=27037
|
||||||
|
MONGOBASE=sensor_data
|
||||||
|
MONGOAUTH=true
|
||||||
|
MONGOUSRP=admin:mongo4noise
|
||||||
|
|
||||||
|
# Timezone
|
||||||
|
TZ=Europe/Berlin
|
||||||
|
|
||||||
|
LOCALDIR=/Users/rxf/Projekte/Geiger_WEB_26
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -2,3 +2,6 @@
|
|||||||
Feinstaub_ToDos.pdf
|
Feinstaub_ToDos.pdf
|
||||||
this_is_MacBig
|
this_is_MacBig
|
||||||
.idea
|
.idea
|
||||||
|
.env
|
||||||
|
.env.local.custom
|
||||||
|
.DS_Store
|
||||||
|
|||||||
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -26,7 +26,7 @@
|
|||||||
"MONGOUSRP": "admin:mongo4noise",
|
"MONGOUSRP": "admin:mongo4noise",
|
||||||
"MONGOBASE": "sensor_data"
|
"MONGOBASE": "sensor_data"
|
||||||
},
|
},
|
||||||
"program": "${workspaceFolder}/geiger-app.js"
|
"program": "${workspaceFolder}/app.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
235
DOCKER.md
Normal file
235
DOCKER.md
Normal file
@@ -0,0 +1,235 @@
|
|||||||
|
# Docker Deployment Anleitung
|
||||||
|
|
||||||
|
## Übersicht
|
||||||
|
|
||||||
|
Es gibt zwei Docker Compose Konfigurationen:
|
||||||
|
- `docker-compose.local.yml` - Für lokale Entwicklung (mit externem MongoDB)
|
||||||
|
- `docker-compose.prod.yml` - Für Server/Produktion (mit externem MongoDB)
|
||||||
|
|
||||||
|
Beide Konfigurationen verwenden einen **externen MongoDB Server** und starten keinen eigenen MongoDB Container.
|
||||||
|
|
||||||
|
## Lokale Entwicklung
|
||||||
|
|
||||||
|
### Voraussetzungen
|
||||||
|
- Docker und Docker Compose installiert
|
||||||
|
- Zugriff auf MongoDB Server (lokal oder remote)
|
||||||
|
|
||||||
|
### Konfiguration
|
||||||
|
|
||||||
|
Die lokale Entwicklung verwendet einen **externen MongoDB Server**. Konfiguriere die Verbindung:
|
||||||
|
|
||||||
|
**Option 1: .env.local Datei verwenden (empfohlen)**
|
||||||
|
```bash
|
||||||
|
cp .env.local .env.local.custom
|
||||||
|
nano .env.local.custom # Anpassen
|
||||||
|
docker compose -f docker-compose.local.yml --env-file .env.local.custom up
|
||||||
|
```
|
||||||
|
|
||||||
|
**Option 2: Direkt in docker-compose.local.yml anpassen**
|
||||||
|
Ändere die Environment-Variablen im File entsprechend deinem Setup.
|
||||||
|
|
||||||
|
**MongoDB auf Host-Maschine:**
|
||||||
|
```yaml
|
||||||
|
- MONGOHOST=host.docker.internal # für Mac/Windows
|
||||||
|
- MONGOHOST=172.17.0.1 # für Linux
|
||||||
|
```
|
||||||
|
|
||||||
|
**MongoDB auf anderem Server:**
|
||||||
|
```yaml
|
||||||
|
- MONGOHOST=mongodb-dev.example.com
|
||||||
|
- MONGOPORT=27017
|
||||||
|
- MONGOAUTH=true
|
||||||
|
- MONGOUSRP=user:password
|
||||||
|
```
|
||||||
|
|
||||||
|
### Verwendung
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Starten (baut beim ersten Mal automatisch das Image)
|
||||||
|
docker compose -f docker-compose.local.yml up
|
||||||
|
|
||||||
|
# Mit .env.local
|
||||||
|
docker compose -f docker-compose.local.yml --env-file .env.local up
|
||||||
|
|
||||||
|
# Im Hintergrund starten
|
||||||
|
docker compose -f docker-compose.local.yml up -d
|
||||||
|
|
||||||
|
# Logs anzeigen
|
||||||
|
docker compose -f docker-compose.local.yml logs -f
|
||||||
|
|
||||||
|
# Stoppen
|
||||||
|
docker compose -f docker-compose.local.yml down
|
||||||
|
```
|
||||||
|
|
||||||
|
### Zugriff
|
||||||
|
- Anwendung: http://localhost:3005/fs/
|
||||||
|
|
||||||
|
### Hinweis: network_mode host
|
||||||
|
|
||||||
|
Wenn MongoDB auf `localhost` der Host-Maschine läuft, kannst du in `docker-compose.local.yml` auskommentieren:
|
||||||
|
```yaml
|
||||||
|
network_mode: host
|
||||||
|
```
|
||||||
|
Dann ist die App direkt auf dem Host-Netzwerk und kann `localhost:27017` erreichen.
|
||||||
|
|
||||||
|
## Server/Produktion
|
||||||
|
|
||||||
|
### Voraussetzungen
|
||||||
|
- Docker und Docker Compose installiert
|
||||||
|
- Zugriff auf externen MongoDB Server
|
||||||
|
- Image auf docker.citysensor.de Registry
|
||||||
|
|
||||||
|
### Erste Einrichtung
|
||||||
|
|
||||||
|
1. **Environment-Datei erstellen:**
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
nano .env # oder ein anderer Editor
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Werte in .env anpassen:**
|
||||||
|
```env
|
||||||
|
MONGOHOST=ihre-mongodb-server.example.com
|
||||||
|
MONGOPORT=27017
|
||||||
|
MONGOBASE=allsensors
|
||||||
|
MONGOAUTH=true
|
||||||
|
MONGOUSRP=admin:securepassword
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Zur Registry einloggen:**
|
||||||
|
```bash
|
||||||
|
docker login docker.citysensor.de
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Image pullen:**
|
||||||
|
```bash
|
||||||
|
docker compose -f docker-compose.prod.yml pull
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deployment
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Starten
|
||||||
|
docker compose -f docker-compose.prod.yml up -d
|
||||||
|
|
||||||
|
# Status prüfen
|
||||||
|
docker compose -f docker-compose.prod.yml ps
|
||||||
|
|
||||||
|
# Logs anzeigen
|
||||||
|
docker compose -f docker-compose.prod.yml logs -f geiger-web
|
||||||
|
|
||||||
|
# Neustarten
|
||||||
|
docker compose -f docker-compose.prod.yml restart
|
||||||
|
|
||||||
|
# Stoppen
|
||||||
|
docker compose -f docker-compose.prod.yml down
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update auf neue Version
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Neues Image pullen
|
||||||
|
docker compose -f docker-compose.prod.yml pull
|
||||||
|
|
||||||
|
# Container neu starten mit neuem Image
|
||||||
|
docker compose -f docker-compose.prod.yml up -d
|
||||||
|
|
||||||
|
# Alte Images aufräumen
|
||||||
|
docker image prune -f
|
||||||
|
```
|
||||||
|
|
||||||
|
### Monitoring
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Live Logs
|
||||||
|
docker compose -f docker-compose.prod.yml logs -f
|
||||||
|
|
||||||
|
# Ressourcen-Nutzung
|
||||||
|
docker stats geiger_web_prod
|
||||||
|
|
||||||
|
# Health Check Status
|
||||||
|
docker inspect --format='{{.State.Health.Status}}' geiger_web_prod
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build & Push (für Entwickler)
|
||||||
|
|
||||||
|
Das deploy.sh Script übernimmt Build und Push automatisch:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Mit automatischem Datums-Tag
|
||||||
|
./deploy.sh
|
||||||
|
|
||||||
|
# Mit spezifischem Tag
|
||||||
|
TAG=v2.9.6 ./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Oder manuell:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Image bauen
|
||||||
|
docker build -t docker.citysensor.de/geiger_web_26:latest .
|
||||||
|
|
||||||
|
# Image zu Registry pushen
|
||||||
|
docker push docker.citysensor.de/geiger_web_26:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Container startet nicht
|
||||||
|
```bash
|
||||||
|
# Detaillierte Logs
|
||||||
|
docker compose -f docker-compose.prod.yml logs geiger-web
|
||||||
|
|
||||||
|
# Container Shell betreten
|
||||||
|
docker exec -it geiger_web_prod sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### MongoDB Verbindungsprobleme
|
||||||
|
- Prüfe MONGOHOST und MONGOPORT in .env oder .env.local
|
||||||
|
- Prüfe Netzwerk-Konnektivität: `docker exec -it geiger_web_prod ping mongodb`
|
||||||
|
- Prüfe MongoDB Credentials
|
||||||
|
- **Lokal:** Wenn MongoDB auf localhost läuft, verwende `MONGOHOST=host.docker.internal` (Mac/Windows) oder `MONGOHOST=172.17.0.1` (Linux)
|
||||||
|
- **Lokal:** Alternativ aktiviere `network_mode: host` in docker-compose.local.yml
|
||||||
|
|
||||||
|
### Port bereits belegt
|
||||||
|
Ändere EXTERNAL_PORT in .env auf einen anderen Port:
|
||||||
|
```env
|
||||||
|
EXTERNAL_PORT=3006
|
||||||
|
```
|
||||||
|
|
||||||
|
### Logs zu groß
|
||||||
|
Die Produktionskonfiguration limitiert Logs auf 3 × 10MB. Bei Bedarf anpassen in docker-compose.prod.yml:
|
||||||
|
```yaml
|
||||||
|
logging:
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Sicherheitshinweise
|
||||||
|
|
||||||
|
1. **.env Datei NIEMALS ins Git committen!**
|
||||||
|
- Ist bereits in .gitignore
|
||||||
|
- Enthält sensible Zugangsdaten
|
||||||
|
|
||||||
|
2. **Starke Passwörter verwenden**
|
||||||
|
- Besonders für Produktions-MongoDB
|
||||||
|
|
||||||
|
3. **Firewall konfigurieren**
|
||||||
|
- Nur notwendige Ports öffnen
|
||||||
|
- MongoDB Port (27017) nicht öffentlich zugänglich machen
|
||||||
|
|
||||||
|
4. **Regelmäßige Updates**
|
||||||
|
- Base Image (node:alpine) aktuell halten
|
||||||
|
- Dependencies in package.json aktualisieren
|
||||||
|
|
||||||
|
## Systemanforderungen
|
||||||
|
|
||||||
|
### Lokal
|
||||||
|
- Minimum: 2 GB RAM, 2 CPU Cores
|
||||||
|
- Docker >= 20.10
|
||||||
|
- Docker Compose >= 2.0 (oder Docker mit integriertem compose plugin)
|
||||||
|
|
||||||
|
### Server
|
||||||
|
- Empfohlen: 2 GB RAM, 2 CPU Cores
|
||||||
|
- Anpassbar in docker-compose.prod.yml unter `deploy.resources`
|
||||||
@@ -40,6 +40,7 @@ async function checkHost(req, res, next) {
|
|||||||
(req.headers.host == 'multigeiger.rexfue.de') ||
|
(req.headers.host == 'multigeiger.rexfue.de') ||
|
||||||
(req.headers.host == 'multigeiger.citysensor.de') ||
|
(req.headers.host == 'multigeiger.citysensor.de') ||
|
||||||
(req.headers.host == 'test2.citysensor.de') ||
|
(req.headers.host == 'test2.citysensor.de') ||
|
||||||
|
(req.headers.host == 'geiger2.citysensor.de') ||
|
||||||
(req.headers.host == 'localhost:'+PORT) ||
|
(req.headers.host == 'localhost:'+PORT) ||
|
||||||
(req.headers.host == 'nuccy:3005') ||
|
(req.headers.host == 'nuccy:3005') ||
|
||||||
(req.headers.host == 'h2953026.stratoserver.net:8082') ||
|
(req.headers.host == 'h2953026.stratoserver.net:8082') ||
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Build Docker-Container
|
|
||||||
#
|
|
||||||
# Call: buildit.sh name [target]
|
|
||||||
#
|
|
||||||
# The Dockerfile must be named like Dockerfile_name
|
|
||||||
#
|
|
||||||
# 2018-09-20 rxf
|
|
||||||
# - before sending docker image to remote, tag actual remote image
|
|
||||||
#
|
|
||||||
# 2018-09-14 rxf
|
|
||||||
# - first Version
|
|
||||||
#
|
|
||||||
|
|
||||||
set -x
|
|
||||||
port=""
|
|
||||||
orgName=geiger-web
|
|
||||||
name=geiger-web
|
|
||||||
|
|
||||||
usage()
|
|
||||||
{
|
|
||||||
echo "Usage build_and_copy.sh [-p port] [-n name] target"
|
|
||||||
echo " Build docker container $name and copy to target"
|
|
||||||
echo "Params:"
|
|
||||||
echo " target: Where to copy the container to "
|
|
||||||
echo " -p port: ssh port (default 22)"
|
|
||||||
echo " -n name: new name for container (default: $orgName)"
|
|
||||||
}
|
|
||||||
|
|
||||||
while getopts n:p:h? o
|
|
||||||
do
|
|
||||||
case "$o" in
|
|
||||||
n) name="$OPTARG";;
|
|
||||||
p) port="-p $OPTARG";;
|
|
||||||
h) usage; exit 0;;
|
|
||||||
*) usage; exit 1;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
shift $((OPTIND-1))
|
|
||||||
|
|
||||||
while [ $# -gt 0 ]; do
|
|
||||||
if [[ -z "$target" ]]; then
|
|
||||||
target=$1
|
|
||||||
shift
|
|
||||||
else
|
|
||||||
echo "bad option $1"
|
|
||||||
# exit 1
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
docker build -f Dockerfile_$orgName -t $name .
|
|
||||||
|
|
||||||
dat=`date +%Y%m%d%H%M`
|
|
||||||
|
|
||||||
if [ "$target" == "localhost" ]
|
|
||||||
then
|
|
||||||
docker tag $name $name:V_$dat
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
ssh $port $target "docker tag $name $name:V_$dat"
|
|
||||||
docker save $name | bzip2 | pv | ssh $port $target 'bunzip2 | docker load'
|
|
||||||
13
compose.yml
Normal file
13
compose.yml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
services:
|
||||||
|
geiger2:
|
||||||
|
image: docker.citysensor.de/geiger_web_26:latest
|
||||||
|
container_name: geiger2
|
||||||
|
restart: unless-stopped
|
||||||
|
env_file:
|
||||||
|
- .env.local
|
||||||
|
volumes:
|
||||||
|
- ${LOCALDIR}/log:/var/log
|
||||||
|
environment:
|
||||||
|
TZ: ${TZ:-Europe/Berlin}
|
||||||
|
ports:
|
||||||
|
- "3005:3005"
|
||||||
93
debug-server.sh
Executable file
93
debug-server.sh
Executable file
@@ -0,0 +1,93 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Debug Script für Geiger Web Server
|
||||||
|
# Diagnostiziert Probleme mit dem Container
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
CONTAINER_NAME="geiger_web_prod"
|
||||||
|
VOLUME_NAME="geiger_logs_prod"
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo " Geiger Web Server Debug"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 1. Container Status prüfen
|
||||||
|
echo ">>> Container Status:"
|
||||||
|
docker ps -a --filter "name=${CONTAINER_NAME}" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 2. Container stoppen (falls läuft)
|
||||||
|
echo ">>> Stoppe Container..."
|
||||||
|
docker stop ${CONTAINER_NAME} 2>/dev/null || echo "Container war bereits gestoppt"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 3. Logs aus Volume extrahieren
|
||||||
|
echo ">>> Extrahiere Logs aus Volume..."
|
||||||
|
docker run --rm \
|
||||||
|
-v ${VOLUME_NAME}:/logs \
|
||||||
|
alpine:latest \
|
||||||
|
cat /logs/geiger-web.log 2>/dev/null | tail -100 > /tmp/geiger-debug.log || echo "Keine Logs gefunden"
|
||||||
|
|
||||||
|
if [ -s /tmp/geiger-debug.log ]; then
|
||||||
|
echo ">>> Letzte 100 Log-Zeilen:"
|
||||||
|
cat /tmp/geiger-debug.log
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
echo "Keine Logs im Volume gefunden"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. Container Umgebungsvariablen prüfen
|
||||||
|
echo ">>> Container Environment (ohne Passwörter):"
|
||||||
|
docker inspect ${CONTAINER_NAME} 2>/dev/null | jq -r '.[0].Config.Env[]' | grep -E '^MONGO|^DEBUG|^SERVERPORT|^TZ' || echo "Container nicht gefunden"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 5. MongoDB Verbindung testen
|
||||||
|
echo ">>> Teste MongoDB Verbindung:"
|
||||||
|
MONGOHOST=$(docker inspect ${CONTAINER_NAME} 2>/dev/null | jq -r '.[0].Config.Env[]' | grep '^MONGOHOST=' | cut -d'=' -f2)
|
||||||
|
MONGOPORT=$(docker inspect ${CONTAINER_NAME} 2>/dev/null | jq -r '.[0].Config.Env[]' | grep '^MONGOPORT=' | cut -d'=' -f2)
|
||||||
|
|
||||||
|
if [ ! -z "$MONGOHOST" ] && [ ! -z "$MONGOPORT" ]; then
|
||||||
|
echo "Teste Verbindung zu ${MONGOHOST}:${MONGOPORT}..."
|
||||||
|
timeout 5 bash -c "cat < /dev/null > /dev/tcp/${MONGOHOST}/${MONGOPORT}" 2>/dev/null && \
|
||||||
|
echo "✓ MongoDB Port ist erreichbar" || \
|
||||||
|
echo "✗ Fehler: MongoDB Port ${MONGOHOST}:${MONGOPORT} ist NICHT erreichbar!"
|
||||||
|
else
|
||||||
|
echo "✗ MONGOHOST oder MONGOPORT nicht gesetzt"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 6. Image Info
|
||||||
|
echo ">>> Image Info:"
|
||||||
|
docker inspect ${CONTAINER_NAME} 2>/dev/null | jq -r '.[0].Config.Image' || echo "Container nicht gefunden"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 7. Restart Count
|
||||||
|
echo ">>> Restart Count:"
|
||||||
|
docker inspect ${CONTAINER_NAME} 2>/dev/null | jq -r '.[0].RestartCount' || echo "Container nicht gefunden"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo "Debug-Informationen gesammelt!"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
echo "Vollständige Logs gespeichert in: /tmp/geiger-debug.log"
|
||||||
|
echo ""
|
||||||
|
echo "Nächste Schritte:"
|
||||||
|
echo ""
|
||||||
|
echo "1. Container OHNE Auto-Restart starten (um Logs zu sehen):"
|
||||||
|
echo " docker run --rm -it \\"
|
||||||
|
echo " -p 3005:3005 \\"
|
||||||
|
echo " -e MONGOHOST=${MONGOHOST} \\"
|
||||||
|
echo " -e MONGOPORT=${MONGOPORT} \\"
|
||||||
|
echo " -e MONGOBASE=sensor_data \\"
|
||||||
|
echo " -e MONGOAUTH=true \\"
|
||||||
|
echo " -e MONGOUSRP=user:password \\"
|
||||||
|
echo " -e TZ=Europe/Berlin \\"
|
||||||
|
echo " docker.citysensor.de/geiger_web_26:latest"
|
||||||
|
echo ""
|
||||||
|
echo "2. Original Container wieder starten:"
|
||||||
|
echo " docker start ${CONTAINER_NAME}"
|
||||||
|
echo ""
|
||||||
67
deploy.sh
Executable file
67
deploy.sh
Executable file
@@ -0,0 +1,67 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Deploy Script für laufschrift
|
||||||
|
# Baut das Docker Image und lädt es zu docker.citysensor.de hoch
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
|
||||||
|
# Konfiguration
|
||||||
|
REGISTRY="docker.citysensor.de"
|
||||||
|
IMAGE_NAME="geiger_web_26"
|
||||||
|
TAG="${TAG:-$(date +%Y%m%d%H%M)}" # default Datum
|
||||||
|
FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${TAG}"
|
||||||
|
|
||||||
|
# Build-Datum
|
||||||
|
BUILD_DATE=$(date +%d.%m.%Y)
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo " Deploy Script"
|
||||||
|
echo "=========================================="
|
||||||
|
echo "Registry: ${REGISTRY}"
|
||||||
|
echo "Image: ${IMAGE_NAME}"
|
||||||
|
echo "Tag: ${TAG}"
|
||||||
|
echo "Build-Datum: ${BUILD_DATE}"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 1. Login zur Registry (falls noch nicht eingeloggt)
|
||||||
|
echo ">>> Login zu ${REGISTRY}..."
|
||||||
|
docker login "${REGISTRY}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 2. Multiplatform Builder einrichten (docker-container driver erforderlich)
|
||||||
|
echo ">>> Richte Multiplatform Builder ein..."
|
||||||
|
if ! docker buildx inspect multiplatform-builder &>/dev/null; then
|
||||||
|
docker buildx create --name multiplatform-builder --driver docker-container --bootstrap
|
||||||
|
fi
|
||||||
|
docker buildx use multiplatform-builder
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 3. Docker Image bauen und pushen (Multiplatform)
|
||||||
|
echo ">>> Baue Multiplatform Docker Image und pushe zu Registry..."
|
||||||
|
docker buildx build \
|
||||||
|
--platform linux/amd64,linux/arm64 \
|
||||||
|
--build-arg BUILD_DATE="${BUILD_DATE}" \
|
||||||
|
-t "${FULL_IMAGE}" \
|
||||||
|
--push \
|
||||||
|
.
|
||||||
|
|
||||||
|
# 4. Keep :latest in sync for simple rollbacks and manual usage.
|
||||||
|
echo ">>> Tagge das image zusätzlich als :latest ..."
|
||||||
|
docker buildx imagetools create \
|
||||||
|
-t "${REGISTRY}/${IMAGE_NAME}:latest" \
|
||||||
|
"${FULL_IMAGE}"
|
||||||
|
|
||||||
|
|
||||||
|
echo ">>> Build und Push erfolgreich!"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=========================================="
|
||||||
|
echo "✓ Deploy erfolgreich abgeschlossen!"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
echo "Auf dem Server ausführen:"
|
||||||
|
echo " docker pull ${FULL_IMAGE}"
|
||||||
|
echo " docker-compose -f docker-compose.prod.yml up -d"
|
||||||
|
echo ""
|
||||||
29
docker-compose.local.yml
Normal file
29
docker-compose.local.yml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Docker Compose für lokale Entwicklung
|
||||||
|
# Verwendet externen MongoDB Server (wie Produktion)
|
||||||
|
# Verwendung: docker compose -f docker-compose.local.yml up
|
||||||
|
#
|
||||||
|
# HINWEIS: Passe die MongoDB-Verbindungsdaten unten an oder erstelle eine .env.local Datei
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Geiger Web Application
|
||||||
|
geiger-web:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: geiger_web_local
|
||||||
|
restart: unless-stopped
|
||||||
|
env_file:
|
||||||
|
- .env.local
|
||||||
|
environment:
|
||||||
|
# Timezone (kann überschrieben werden)
|
||||||
|
- TZ=${TZ:-Europe/Berlin}
|
||||||
|
ports:
|
||||||
|
- "3005:3005"
|
||||||
|
volumes:
|
||||||
|
- ${PWD}/log:/var/log
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:3005/fs/"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 40s
|
||||||
64
docker-compose.prod.yml
Normal file
64
docker-compose.prod.yml
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
# Docker Compose für Server/Produktion
|
||||||
|
# Verwendet externen MongoDB Server
|
||||||
|
# Verwendung: docker compose -f docker-compose.prod.yml up -d
|
||||||
|
#
|
||||||
|
# ACHTUNG: Erstelle zuerst eine .env Datei mit den korrekten Werten!
|
||||||
|
# Beispiel: cp .env.example .env und dann anpassen
|
||||||
|
|
||||||
|
services:
|
||||||
|
geiger-web:
|
||||||
|
image: docker.citysensor.de/geiger_web_26:latest
|
||||||
|
container_name: geiger_web_prod
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
# Server Configuration
|
||||||
|
- SERVERPORT=${SERVERPORT:-3005}
|
||||||
|
- DEBUG=${DEBUG:-false}
|
||||||
|
|
||||||
|
# MongoDB Configuration (externer Server)
|
||||||
|
- MONGOHOST=${MONGOHOST}
|
||||||
|
- MONGOPORT=${MONGOPORT:-27017}
|
||||||
|
- MONGOBASE=${MONGOBASE}
|
||||||
|
- MONGOAUTH=${MONGOAUTH:-true}
|
||||||
|
- MONGOUSRP=${MONGOUSRP}
|
||||||
|
|
||||||
|
# Timezone
|
||||||
|
- TZ=Europe/Berlin
|
||||||
|
|
||||||
|
# Node Environment
|
||||||
|
- NODE_ENV=production
|
||||||
|
ports:
|
||||||
|
- "${EXTERNAL_PORT:-3005}:3005"
|
||||||
|
volumes:
|
||||||
|
# Logs persistent speichern
|
||||||
|
- geiger_logs_prod:/var/log
|
||||||
|
networks:
|
||||||
|
- geiger_network
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:3005/fs/"]
|
||||||
|
interval: 60s
|
||||||
|
timeout: 15s
|
||||||
|
retries: 5
|
||||||
|
start_period: 60s
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
# Resource Limits (bei Bedarf anpassen)
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '2.0'
|
||||||
|
memory: 1G
|
||||||
|
reservations:
|
||||||
|
cpus: '0.5'
|
||||||
|
memory: 512M
|
||||||
|
|
||||||
|
networks:
|
||||||
|
geiger_network:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
geiger_logs_prod:
|
||||||
|
driver: local
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
version: '3'
|
|
||||||
services:
|
|
||||||
|
|
||||||
fst-mongo:
|
|
||||||
image: mongo
|
|
||||||
volumes:
|
|
||||||
- /private/var/lib/mongodb:/data/db
|
|
||||||
- /private/var/log/feinstaub:/var/log
|
|
||||||
ports:
|
|
||||||
- '27017:27017'
|
|
||||||
container_name: fst-mongo
|
|
||||||
# command: '--auth'
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
fst-data:
|
|
||||||
image: fst-data
|
|
||||||
volumes:
|
|
||||||
- /private/var/log/feinstaub:/var/log
|
|
||||||
environment:
|
|
||||||
- TTS_KEY=YU4D8C6L39L53B8Q
|
|
||||||
- MONGOHOST=fst-mongo
|
|
||||||
# - MONGOAUTH=true
|
|
||||||
# - "MONGOUSRP=rxf:5C5dB|m"
|
|
||||||
container_name: fst-data
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
# fst-web:
|
|
||||||
# image: fst-web
|
|
||||||
# volumes:
|
|
||||||
# - /private/var/log/feinstaub:/var/log
|
|
||||||
## - "/etc/timezone:/etc/timezone:ro"
|
|
||||||
## - "/etc/localtime:/etc/localtime:ro"
|
|
||||||
# environment:
|
|
||||||
## - VIRTUAL_HOST=feinstaub.rexfue.de
|
|
||||||
# - MONGOHOST=fst-mongo
|
|
||||||
## - MONGOAUTH=true
|
|
||||||
## - "MONGOUSRP=rxf:5C5dB|m"
|
|
||||||
# - TZ=Europe/Berlin
|
|
||||||
# ports:
|
|
||||||
# - '3005:3005'
|
|
||||||
# container_name: fst-web
|
|
||||||
# restart: always
|
|
||||||
|
|
||||||
627
log/geiger-web.log
Normal file
627
log/geiger-web.log
Normal file
@@ -0,0 +1,627 @@
|
|||||||
|
92921c305856
|
||||||
|
MongoURL = "mongodb://217.72.203.152:27037" and Database = sensor_data
|
||||||
|
2026-03-27 20:55 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
/opt/app/node_modules/mongodb/lib/cmap/connection.js:462
|
||||||
|
callback(new error_1.MongoServerError(document));
|
||||||
|
^
|
||||||
|
|
||||||
|
MongoServerError: Command find requires authentication
|
||||||
|
at MessageStream.messageHandler (/opt/app/node_modules/mongodb/lib/cmap/connection.js:462:30)
|
||||||
|
at MessageStream.emit (node:events:508:28)
|
||||||
|
at processIncomingData (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:108:16)
|
||||||
|
at MessageStream._write (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:28:9)
|
||||||
|
at writeOrBuffer (node:internal/streams/writable:570:12)
|
||||||
|
at _write (node:internal/streams/writable:499:10)
|
||||||
|
at Writable.write (node:internal/streams/writable:508:10)
|
||||||
|
at Socket.ondata (node:internal/streams/readable:1008:24)
|
||||||
|
at Socket.emit (node:events:508:28)
|
||||||
|
at addChunk (node:internal/streams/readable:559:12) {
|
||||||
|
ok: 0,
|
||||||
|
code: 13,
|
||||||
|
codeName: 'Unauthorized'
|
||||||
|
}
|
||||||
|
|
||||||
|
Node.js v25.2.1
|
||||||
|
92921c305856
|
||||||
|
MongoURL = "mongodb://217.72.203.152:27037" and Database = sensor_data
|
||||||
|
2026-03-27 20:55 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
/opt/app/node_modules/mongodb/lib/cmap/connection.js:462
|
||||||
|
callback(new error_1.MongoServerError(document));
|
||||||
|
^
|
||||||
|
|
||||||
|
MongoServerError: Command find requires authentication
|
||||||
|
at MessageStream.messageHandler (/opt/app/node_modules/mongodb/lib/cmap/connection.js:462:30)
|
||||||
|
at MessageStream.emit (node:events:508:28)
|
||||||
|
at processIncomingData (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:108:16)
|
||||||
|
at MessageStream._write (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:28:9)
|
||||||
|
at writeOrBuffer (node:internal/streams/writable:570:12)
|
||||||
|
at _write (node:internal/streams/writable:499:10)
|
||||||
|
at Writable.write (node:internal/streams/writable:508:10)
|
||||||
|
at Socket.ondata (node:internal/streams/readable:1008:24)
|
||||||
|
at Socket.emit (node:events:508:28)
|
||||||
|
at addChunk (node:internal/streams/readable:559:12) {
|
||||||
|
ok: 0,
|
||||||
|
code: 13,
|
||||||
|
codeName: 'Unauthorized'
|
||||||
|
}
|
||||||
|
|
||||||
|
Node.js v25.2.1
|
||||||
|
92921c305856
|
||||||
|
MongoURL = "mongodb://217.72.203.152:27037" and Database = sensor_data
|
||||||
|
2026-03-27 20:55 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
/opt/app/node_modules/mongodb/lib/cmap/connection.js:462
|
||||||
|
callback(new error_1.MongoServerError(document));
|
||||||
|
^
|
||||||
|
|
||||||
|
MongoServerError: Command find requires authentication
|
||||||
|
at MessageStream.messageHandler (/opt/app/node_modules/mongodb/lib/cmap/connection.js:462:30)
|
||||||
|
at MessageStream.emit (node:events:508:28)
|
||||||
|
at processIncomingData (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:108:16)
|
||||||
|
at MessageStream._write (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:28:9)
|
||||||
|
at writeOrBuffer (node:internal/streams/writable:570:12)
|
||||||
|
at _write (node:internal/streams/writable:499:10)
|
||||||
|
at Writable.write (node:internal/streams/writable:508:10)
|
||||||
|
at Socket.ondata (node:internal/streams/readable:1008:24)
|
||||||
|
at Socket.emit (node:events:508:28)
|
||||||
|
at addChunk (node:internal/streams/readable:559:12) {
|
||||||
|
ok: 0,
|
||||||
|
code: 13,
|
||||||
|
codeName: 'Unauthorized'
|
||||||
|
}
|
||||||
|
|
||||||
|
Node.js v25.2.1
|
||||||
|
92921c305856
|
||||||
|
MongoURL = "mongodb://217.72.203.152:27037" and Database = sensor_data
|
||||||
|
2026-03-27 20:55 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
/opt/app/node_modules/mongodb/lib/cmap/connection.js:462
|
||||||
|
callback(new error_1.MongoServerError(document));
|
||||||
|
^
|
||||||
|
|
||||||
|
MongoServerError: Command find requires authentication
|
||||||
|
at MessageStream.messageHandler (/opt/app/node_modules/mongodb/lib/cmap/connection.js:462:30)
|
||||||
|
at MessageStream.emit (node:events:508:28)
|
||||||
|
at processIncomingData (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:108:16)
|
||||||
|
at MessageStream._write (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:28:9)
|
||||||
|
at writeOrBuffer (node:internal/streams/writable:570:12)
|
||||||
|
at _write (node:internal/streams/writable:499:10)
|
||||||
|
at Writable.write (node:internal/streams/writable:508:10)
|
||||||
|
at Socket.ondata (node:internal/streams/readable:1008:24)
|
||||||
|
at Socket.emit (node:events:508:28)
|
||||||
|
at addChunk (node:internal/streams/readable:559:12) {
|
||||||
|
ok: 0,
|
||||||
|
code: 13,
|
||||||
|
codeName: 'Unauthorized'
|
||||||
|
}
|
||||||
|
|
||||||
|
Node.js v25.2.1
|
||||||
|
92921c305856
|
||||||
|
MongoURL = "mongodb://217.72.203.152:27037" and Database = sensor_data
|
||||||
|
2026-03-27 20:55 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
/opt/app/node_modules/mongodb/lib/cmap/connection.js:462
|
||||||
|
callback(new error_1.MongoServerError(document));
|
||||||
|
^
|
||||||
|
|
||||||
|
MongoServerError: Command find requires authentication
|
||||||
|
at MessageStream.messageHandler (/opt/app/node_modules/mongodb/lib/cmap/connection.js:462:30)
|
||||||
|
at MessageStream.emit (node:events:508:28)
|
||||||
|
at processIncomingData (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:108:16)
|
||||||
|
at MessageStream._write (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:28:9)
|
||||||
|
at writeOrBuffer (node:internal/streams/writable:570:12)
|
||||||
|
at _write (node:internal/streams/writable:499:10)
|
||||||
|
at Writable.write (node:internal/streams/writable:508:10)
|
||||||
|
at Socket.ondata (node:internal/streams/readable:1008:24)
|
||||||
|
at Socket.emit (node:events:508:28)
|
||||||
|
at addChunk (node:internal/streams/readable:559:12) {
|
||||||
|
ok: 0,
|
||||||
|
code: 13,
|
||||||
|
codeName: 'Unauthorized'
|
||||||
|
}
|
||||||
|
|
||||||
|
Node.js v25.2.1
|
||||||
|
92921c305856
|
||||||
|
MongoURL = "mongodb://217.72.203.152:27037" and Database = sensor_data
|
||||||
|
2026-03-27 20:55 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
/opt/app/node_modules/mongodb/lib/cmap/connection.js:462
|
||||||
|
callback(new error_1.MongoServerError(document));
|
||||||
|
^
|
||||||
|
|
||||||
|
MongoServerError: Command find requires authentication
|
||||||
|
at MessageStream.messageHandler (/opt/app/node_modules/mongodb/lib/cmap/connection.js:462:30)
|
||||||
|
at MessageStream.emit (node:events:508:28)
|
||||||
|
at processIncomingData (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:108:16)
|
||||||
|
at MessageStream._write (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:28:9)
|
||||||
|
at writeOrBuffer (node:internal/streams/writable:570:12)
|
||||||
|
at _write (node:internal/streams/writable:499:10)
|
||||||
|
at Writable.write (node:internal/streams/writable:508:10)
|
||||||
|
at Socket.ondata (node:internal/streams/readable:1008:24)
|
||||||
|
at Socket.emit (node:events:508:28)
|
||||||
|
at addChunk (node:internal/streams/readable:559:12) {
|
||||||
|
ok: 0,
|
||||||
|
code: 13,
|
||||||
|
codeName: 'Unauthorized'
|
||||||
|
}
|
||||||
|
|
||||||
|
Node.js v25.2.1
|
||||||
|
92921c305856
|
||||||
|
MongoURL = "mongodb://217.72.203.152:27037" and Database = sensor_data
|
||||||
|
2026-03-27 20:56 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
/opt/app/node_modules/mongodb/lib/cmap/connection.js:462
|
||||||
|
callback(new error_1.MongoServerError(document));
|
||||||
|
^
|
||||||
|
|
||||||
|
MongoServerError: Command find requires authentication
|
||||||
|
at MessageStream.messageHandler (/opt/app/node_modules/mongodb/lib/cmap/connection.js:462:30)
|
||||||
|
at MessageStream.emit (node:events:508:28)
|
||||||
|
at processIncomingData (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:108:16)
|
||||||
|
at MessageStream._write (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:28:9)
|
||||||
|
at writeOrBuffer (node:internal/streams/writable:570:12)
|
||||||
|
at _write (node:internal/streams/writable:499:10)
|
||||||
|
at Writable.write (node:internal/streams/writable:508:10)
|
||||||
|
at Socket.ondata (node:internal/streams/readable:1008:24)
|
||||||
|
at Socket.emit (node:events:508:28)
|
||||||
|
at addChunk (node:internal/streams/readable:559:12) {
|
||||||
|
ok: 0,
|
||||||
|
code: 13,
|
||||||
|
codeName: 'Unauthorized'
|
||||||
|
}
|
||||||
|
|
||||||
|
Node.js v25.2.1
|
||||||
|
92921c305856
|
||||||
|
MongoURL = "mongodb://217.72.203.152:27037" and Database = sensor_data
|
||||||
|
2026-03-27 20:56 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
/opt/app/node_modules/mongodb/lib/cmap/connection.js:462
|
||||||
|
callback(new error_1.MongoServerError(document));
|
||||||
|
^
|
||||||
|
|
||||||
|
MongoServerError: Command find requires authentication
|
||||||
|
at MessageStream.messageHandler (/opt/app/node_modules/mongodb/lib/cmap/connection.js:462:30)
|
||||||
|
at MessageStream.emit (node:events:508:28)
|
||||||
|
at processIncomingData (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:108:16)
|
||||||
|
at MessageStream._write (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:28:9)
|
||||||
|
at writeOrBuffer (node:internal/streams/writable:570:12)
|
||||||
|
at _write (node:internal/streams/writable:499:10)
|
||||||
|
at Writable.write (node:internal/streams/writable:508:10)
|
||||||
|
at Socket.ondata (node:internal/streams/readable:1008:24)
|
||||||
|
at Socket.emit (node:events:508:28)
|
||||||
|
at addChunk (node:internal/streams/readable:559:12) {
|
||||||
|
ok: 0,
|
||||||
|
code: 13,
|
||||||
|
codeName: 'Unauthorized'
|
||||||
|
}
|
||||||
|
|
||||||
|
Node.js v25.2.1
|
||||||
|
92921c305856
|
||||||
|
MongoURL = "mongodb://217.72.203.152:27037" and Database = sensor_data
|
||||||
|
2026-03-27 20:56 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
/opt/app/node_modules/mongodb/lib/cmap/connection.js:462
|
||||||
|
callback(new error_1.MongoServerError(document));
|
||||||
|
^
|
||||||
|
|
||||||
|
MongoServerError: Command find requires authentication
|
||||||
|
at MessageStream.messageHandler (/opt/app/node_modules/mongodb/lib/cmap/connection.js:462:30)
|
||||||
|
at MessageStream.emit (node:events:508:28)
|
||||||
|
at processIncomingData (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:108:16)
|
||||||
|
at MessageStream._write (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:28:9)
|
||||||
|
at writeOrBuffer (node:internal/streams/writable:570:12)
|
||||||
|
at _write (node:internal/streams/writable:499:10)
|
||||||
|
at Writable.write (node:internal/streams/writable:508:10)
|
||||||
|
at Socket.ondata (node:internal/streams/readable:1008:24)
|
||||||
|
at Socket.emit (node:events:508:28)
|
||||||
|
at addChunk (node:internal/streams/readable:559:12) {
|
||||||
|
ok: 0,
|
||||||
|
code: 13,
|
||||||
|
codeName: 'Unauthorized'
|
||||||
|
}
|
||||||
|
|
||||||
|
Node.js v25.2.1
|
||||||
|
92921c305856
|
||||||
|
MongoURL = "mongodb://217.72.203.152:27037" and Database = sensor_data
|
||||||
|
2026-03-27 20:57 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
/opt/app/node_modules/mongodb/lib/cmap/connection.js:462
|
||||||
|
callback(new error_1.MongoServerError(document));
|
||||||
|
^
|
||||||
|
|
||||||
|
MongoServerError: Command find requires authentication
|
||||||
|
at MessageStream.messageHandler (/opt/app/node_modules/mongodb/lib/cmap/connection.js:462:30)
|
||||||
|
at MessageStream.emit (node:events:508:28)
|
||||||
|
at processIncomingData (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:108:16)
|
||||||
|
at MessageStream._write (/opt/app/node_modules/mongodb/lib/cmap/message_stream.js:28:9)
|
||||||
|
at writeOrBuffer (node:internal/streams/writable:570:12)
|
||||||
|
at _write (node:internal/streams/writable:499:10)
|
||||||
|
at Writable.write (node:internal/streams/writable:508:10)
|
||||||
|
at Socket.ondata (node:internal/streams/readable:1008:24)
|
||||||
|
at Socket.emit (node:events:508:28)
|
||||||
|
at addChunk (node:internal/streams/readable:559:12) {
|
||||||
|
ok: 0,
|
||||||
|
code: 13,
|
||||||
|
codeName: 'Unauthorized'
|
||||||
|
}
|
||||||
|
|
||||||
|
Node.js v25.2.1
|
||||||
|
50b81c5b3ae2
|
||||||
|
MongoURL = "mongodb://admin:mongo4noise@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
2026-03-27 20:57 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
e2ca2e9d0190
|
||||||
|
MongoURL = "mongodb://admin:mongo4noise@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
2026-03-27 21:00 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
2026-03-27T21:04:36+01:00 /api/getaddress?sensorid=69441 unKnown
|
||||||
|
(node:19) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
|
||||||
|
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||||
|
Get properties for 69441 from DB
|
||||||
|
got properties - time: 25
|
||||||
|
Operating System = Macintosh
|
||||||
|
Get properties for 69441 from DB
|
||||||
|
got properties - time: 25
|
||||||
|
Operating System = Macintosh
|
||||||
|
Get properties for 69441 from DB
|
||||||
|
got properties - time: 20
|
||||||
|
e2ca2e9d0190
|
||||||
|
MongoURL = "mongodb://admin:mongo4noise@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
2026-03-27 21:57 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
2026-03-27T21:57:51+01:00 /api/getaddress?sensorid=38695 unKnown
|
||||||
|
(node:19) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
|
||||||
|
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||||
|
Get properties for 38695 from DB
|
||||||
|
got properties - time: 22
|
||||||
|
Operating System = Macintosh
|
||||||
|
Get properties for 38695 from DB
|
||||||
|
got properties - time: 19
|
||||||
|
Operating System = Macintosh
|
||||||
|
Get properties for 38695 from DB
|
||||||
|
got properties - time: 19
|
||||||
|
668cd3a93a18
|
||||||
|
MongoURL = "mongodb://admin:mongo4noise@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
2026-03-27 22:14 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
9a20d796aeb0
|
||||||
|
MongoURL = "mongodb://admin:mongo4noise@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
2026-03-27 22:15 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
a250e82c9c85
|
||||||
|
MongoURL = "mongodb://admin:mongo4noise@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
2026-03-27 22:16 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
1619bdaeee6c
|
||||||
|
2026-03-28 12:21 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
1619bdaeee6c
|
||||||
|
2026-03-28 12:22 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
97af434d0a4c
|
||||||
|
2026-03-28 12:24 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 0
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 0
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 0
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 0
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 0
|
||||||
|
97af434d0a4c
|
||||||
|
2026-03-28 12:31 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 0
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 0
|
||||||
|
e68353ece841
|
||||||
|
MongoURL = "mongodb://localhost:27017" and Database = allsensors
|
||||||
|
MongoServerSelectionError
|
||||||
|
at Timeout._onTimeout (/opt/app/node_modules/mongodb/lib/sdam/topology.js:312:38)
|
||||||
|
at listOnTimeout (node:internal/timers:605:17)
|
||||||
|
at process.processTimers (node:internal/timers:541:7) {
|
||||||
|
reason: TopologyDescription {
|
||||||
|
type: 'Unknown',
|
||||||
|
servers: Map(1) { 'localhost:27017' => [ServerDescription] },
|
||||||
|
stale: false,
|
||||||
|
compatible: true,
|
||||||
|
heartbeatFrequencyMS: 10000,
|
||||||
|
localThresholdMS: 15,
|
||||||
|
logicalSessionTimeoutMinutes: undefined
|
||||||
|
},
|
||||||
|
code: undefined
|
||||||
|
}
|
||||||
|
e68353ece841
|
||||||
|
MongoURL = "mongodb://localhost:27017" and Database = allsensors
|
||||||
|
90461f515b56
|
||||||
|
MongoURL = "mongodb://localhost:27017" and Database = allsensors
|
||||||
|
MongoServerSelectionError
|
||||||
|
at Timeout._onTimeout (/opt/app/node_modules/mongodb/lib/sdam/topology.js:312:38)
|
||||||
|
at listOnTimeout (node:internal/timers:605:17)
|
||||||
|
at process.processTimers (node:internal/timers:541:7) {
|
||||||
|
reason: TopologyDescription {
|
||||||
|
type: 'Unknown',
|
||||||
|
servers: Map(1) { 'localhost:27017' => [ServerDescription] },
|
||||||
|
stale: false,
|
||||||
|
compatible: true,
|
||||||
|
heartbeatFrequencyMS: 10000,
|
||||||
|
localThresholdMS: 15,
|
||||||
|
logicalSessionTimeoutMinutes: undefined
|
||||||
|
},
|
||||||
|
code: undefined
|
||||||
|
}
|
||||||
|
90461f515b56
|
||||||
|
MongoURL = "mongodb://localhost:27017" and Database = allsensors
|
||||||
|
90461f515b56
|
||||||
|
MongoURL = "mongodb://localhost:27017" and Database = allsensors
|
||||||
|
0dd3d30525d9
|
||||||
|
MongoURL = "mongodb://@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:163:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1760:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1892:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1480:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1299:12)
|
||||||
|
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
|
||||||
|
0dd3d30525d9
|
||||||
|
MongoURL = "mongodb://@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:163:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1760:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1892:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1480:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1299:12)
|
||||||
|
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
|
||||||
|
0dd3d30525d9
|
||||||
|
MongoURL = "mongodb://@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:163:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1760:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1892:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1480:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1299:12)
|
||||||
|
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
|
||||||
|
0dd3d30525d9
|
||||||
|
MongoURL = "mongodb://@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:163:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1760:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1892:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1480:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1299:12)
|
||||||
|
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
|
||||||
|
0dd3d30525d9
|
||||||
|
MongoURL = "mongodb://@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:163:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1760:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1892:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1480:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1299:12)
|
||||||
|
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
|
||||||
|
0dd3d30525d9
|
||||||
|
MongoURL = "mongodb://@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:163:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1760:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1892:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1480:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1299:12)
|
||||||
|
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
|
||||||
|
0dd3d30525d9
|
||||||
|
MongoURL = "mongodb://@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:163:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1760:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1892:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1480:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1299:12)
|
||||||
|
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
|
||||||
|
0dd3d30525d9
|
||||||
|
MongoURL = "mongodb://@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:163:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1760:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1892:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1480:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1299:12)
|
||||||
|
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
|
||||||
|
0dd3d30525d9
|
||||||
|
MongoURL = "mongodb://@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:163:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1760:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1892:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1480:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1299:12)
|
||||||
|
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
|
||||||
|
0b395a1691cc
|
||||||
|
MongoURL = "mongodb://admin:mongo4noise@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
2026-03-28 12:35 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
2026-03-28T12:36:29+01:00 /api/getaddress?sensorid=31122 unKnown
|
||||||
|
(node:18) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
|
||||||
|
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||||
|
2026-03-28T12:36:43+01:00 /api/getaddress?sensorid=68890 unKnown
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
2026-03-28T13:50:05+01:00 /api/getaddress?sensorid=57613 unKnown
|
||||||
|
2026-03-28T13:53:00+01:00 /api/getaddress?sensorid=68627 unKnown
|
||||||
|
0b4257f37974
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:160:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1829:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1969:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1552:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1354:12)
|
||||||
|
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
|
||||||
|
0b4257f37974
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:160:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1829:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1969:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1552:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1354:12)
|
||||||
|
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
|
||||||
|
0b4257f37974
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:160:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1829:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1969:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1552:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1354:12)
|
||||||
|
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
|
||||||
|
0b4257f37974
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:160:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1829:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1969:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1552:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1354:12)
|
||||||
|
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
|
||||||
|
0b4257f37974
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:160:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1829:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1969:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1552:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1354:12)
|
||||||
|
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
|
||||||
|
0b4257f37974
|
||||||
|
MongoParseError: URI contained empty userinfo section
|
||||||
|
at new ConnectionString (/opt/app/node_modules/mongodb-connection-string-url/lib/index.js:111:27)
|
||||||
|
at parseOptions (/opt/app/node_modules/mongodb/lib/connection_string.js:213:17)
|
||||||
|
at new MongoClient (/opt/app/node_modules/mongodb/lib/mongo_client.js:62:63)
|
||||||
|
at MongoClient.connect (/opt/app/node_modules/mongodb/lib/mongo_client.js:184:33)
|
||||||
|
at Object.<anonymous> (/opt/app/app.js:160:29)
|
||||||
|
at Module._compile (node:internal/modules/cjs/loader:1829:14)
|
||||||
|
at Object..js (node:internal/modules/cjs/loader:1969:10)
|
||||||
|
at Module.load (node:internal/modules/cjs/loader:1552:32)
|
||||||
|
at Module._load (node:internal/modules/cjs/loader:1354:12)
|
||||||
|
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
|
||||||
|
ea91455ac28a
|
||||||
|
MongoURL = "mongodb://admin:mongo4noise@217.72.203.152:27037/?authSource=admin" and Database = allsensors
|
||||||
|
2026-03-28 14:06 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: Query filter: {"type":"radioactivity"}
|
||||||
|
getaktdata: data fetched, length= 0
|
||||||
|
4f19ae493507
|
||||||
|
MongoURL = "mongodb://admin:mongo4noise@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
2026-03-28 14:09 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: Query filter: {"type":"radioactivity"}
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
97d37d72054f
|
||||||
|
MongoURL = "mongodb://admin:mongo4noise@217.72.203.152:27037/?authSource=admin" and Database = sensor_data
|
||||||
|
2026-03-28 14:12 App listens on port 3005, Mongo at 217.72.203.152
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: Query filter: {"type":"radioactivity"}
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
2026-03-28T14:12:22+01:00 /api/getaddress?sensorid=38695 unKnown
|
||||||
|
(node:19) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
|
||||||
|
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||||
|
Get properties for 38695 from DB
|
||||||
|
got properties - time: 20
|
||||||
|
Operating System = Macintosh
|
||||||
|
Get properties for 38695 from DB
|
||||||
|
got properties - time: 21
|
||||||
|
Operating System = Macintosh
|
||||||
|
Get properties for 38695 from DB
|
||||||
|
got properties - time: 21
|
||||||
|
getaktdata: now fetching data from DB
|
||||||
|
getaktdata: Query filter: {"type":"radioactivity"}
|
||||||
|
getaktdata: data fetched, length= 108
|
||||||
|
2026-03-28T14:20:35+01:00 /api/getaddress?sensorid=39280 unKnown
|
||||||
|
Get properties for 39280 from DB
|
||||||
|
got properties - time: 22
|
||||||
|
Operating System = Macintosh
|
||||||
|
Get properties for 39280 from DB
|
||||||
|
got properties - time: 21
|
||||||
|
Operating System = Macintosh
|
||||||
|
Get properties for 39280 from DB
|
||||||
|
got properties - time: 16
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "multigeiger",
|
"name": "geiger2",
|
||||||
"version": "2.9.6",
|
"version": "3.0.0",
|
||||||
"date": "2022-03-16",
|
"date": "2022-03-16",
|
||||||
"description": "Graphics for multigeiger sensors",
|
"description": "Graphics for multigeiger sensors",
|
||||||
"main": "geiger-app.js",
|
"main": "app.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
"start": "node geiger-app.js >>/var/log/geiger-web.log 2>&1"
|
"start": "node app.js"
|
||||||
},
|
},
|
||||||
"author": "rxf@gmail.com",
|
"author": "rxf@gmail.com",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
|
|||||||
@@ -383,7 +383,7 @@ $(document).ready(function() {
|
|||||||
console.log(`New zoom: ${map.getZoom()}`);
|
console.log(`New zoom: ${map.getZoom()}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
await buildAKWs();
|
// await buildAKWs();
|
||||||
await buildMarkers(bounds);
|
await buildMarkers(bounds);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ router.get('/getaktdata/', async function (req, res) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
console.log("getaktdata: Query filter:", JSON.stringify(loc));
|
||||||
let docs = await collection.find(loc).toArray();
|
let docs = await collection.find(loc).toArray();
|
||||||
|
|
||||||
if (docs == null) {
|
if (docs == null) {
|
||||||
|
|||||||
26
test-server.sh
Executable file
26
test-server.sh
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Test Script - Startet Container OHNE Auto-Restart
|
||||||
|
# So können wir die Fehlermeldungen direkt sehen
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo " Test-Start (ohne Auto-Restart)"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
echo "Der Container wird im Vordergrund gestartet."
|
||||||
|
echo "Fehler werden direkt angezeigt."
|
||||||
|
echo "Zum Beenden: Ctrl+C"
|
||||||
|
echo ""
|
||||||
|
echo "Starte in 3 Sekunden..."
|
||||||
|
sleep 3
|
||||||
|
|
||||||
|
docker run --rm -it \
|
||||||
|
-p 3005:3005 \
|
||||||
|
-e MONGOHOST=207.180.224.98 \
|
||||||
|
-e MONGOPORT=20019 \
|
||||||
|
-e MONGOBASE=sensor_data \
|
||||||
|
-e MONGOAUTH=true \
|
||||||
|
-e MONGOUSRP=rexfueAdmin:D6grTasE56 \
|
||||||
|
-e TZ=Europe/Berlin \
|
||||||
|
-e DEBUG=true \
|
||||||
|
docker.citysensor.de/geiger_web_26:latest
|
||||||
Reference in New Issue
Block a user