Migrate to new Gitea instance (gitea.wbd-rd.nl)
- Update all submodule URLs from gitea.centraal.wbd-rd.nl to gitea.wbd-rd.nl - Add settler as proper submodule in .gitmodules - Add agent skills, function anchors, decisions, and improvements - Add Docker configuration and scripts - Add manuals and third_party docs - Update .gitignore with secrets and build artifacts - Remove stale .tgz build artifact Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
6585
docker/demo-flow.json
Normal file
6585
docker/demo-flow.json
Normal file
File diff suppressed because one or more lines are too long
84
docker/entrypoint.sh
Normal file
84
docker/entrypoint.sh
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
EVOLV_DIR="/data/evolv"
|
||||
USER_DIR="/data"
|
||||
|
||||
echo "=== EVOLV Node-RED Development Container ==="
|
||||
echo "Starting at $(date)"
|
||||
|
||||
# -------------------------------------------------------
|
||||
# 1. Verify node_modules exist (first start or volume wipe)
|
||||
# -------------------------------------------------------
|
||||
if [ ! -d "$EVOLV_DIR/node_modules" ]; then
|
||||
echo "[entrypoint] node_modules missing — running npm install..."
|
||||
cd "$EVOLV_DIR"
|
||||
npm install --ignore-scripts
|
||||
echo "[entrypoint] npm install complete."
|
||||
fi
|
||||
|
||||
# -------------------------------------------------------
|
||||
# 2. Repair generalFunctions symlink if broken by bind mount
|
||||
# -------------------------------------------------------
|
||||
GF_LINK="$EVOLV_DIR/node_modules/generalFunctions"
|
||||
GF_TARGET="$EVOLV_DIR/nodes/generalFunctions"
|
||||
|
||||
if [ -L "$GF_LINK" ] && [ ! -e "$GF_LINK" ]; then
|
||||
echo "[entrypoint] Repairing broken generalFunctions symlink..."
|
||||
rm -f "$GF_LINK"
|
||||
ln -s "$GF_TARGET" "$GF_LINK"
|
||||
echo "[entrypoint] Symlink repaired."
|
||||
elif [ ! -e "$GF_LINK" ]; then
|
||||
echo "[entrypoint] Creating generalFunctions symlink..."
|
||||
ln -s "$GF_TARGET" "$GF_LINK"
|
||||
echo "[entrypoint] Symlink created."
|
||||
fi
|
||||
|
||||
# -------------------------------------------------------
|
||||
# 3. Install EVOLV into Node-RED user dir
|
||||
# This ensures node-red.nodes mapping is discovered
|
||||
# -------------------------------------------------------
|
||||
if [ ! -f "$USER_DIR/package.json" ]; then
|
||||
echo "[entrypoint] Initializing Node-RED user dir..."
|
||||
cat > "$USER_DIR/package.json" << 'PKGJSON'
|
||||
{
|
||||
"name": "evolv-nodered-userdir",
|
||||
"description": "Node-RED user directory for EVOLV dev",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"dependencies": {}
|
||||
}
|
||||
PKGJSON
|
||||
fi
|
||||
|
||||
# Link EVOLV package into the Node-RED user dir
|
||||
cd "$USER_DIR"
|
||||
npm install --no-save "$EVOLV_DIR" 2>/dev/null || {
|
||||
echo "[entrypoint] npm install of EVOLV package failed, attempting symlink fallback..."
|
||||
mkdir -p "$USER_DIR/node_modules"
|
||||
rm -rf "$USER_DIR/node_modules/EVOLV"
|
||||
ln -s "$EVOLV_DIR" "$USER_DIR/node_modules/EVOLV"
|
||||
}
|
||||
|
||||
echo "[entrypoint] EVOLV nodes installed into Node-RED user dir."
|
||||
|
||||
# -------------------------------------------------------
|
||||
# 4. Deploy demo flow if no user flow exists yet
|
||||
# -------------------------------------------------------
|
||||
DEMO_FLOW="$EVOLV_DIR/docker/demo-flow.json"
|
||||
FLOW_FILE="/data/flows.json"
|
||||
|
||||
if [ -f "$DEMO_FLOW" ]; then
|
||||
# Deploy demo flow if flows.json is missing or is the default stub
|
||||
if [ ! -f "$FLOW_FILE" ] || grep -q "WARNING: please check" "$FLOW_FILE" 2>/dev/null; then
|
||||
echo "[entrypoint] Deploying demo flow..."
|
||||
cp "$DEMO_FLOW" "$FLOW_FILE"
|
||||
echo "[entrypoint] Demo flow deployed to $FLOW_FILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
# -------------------------------------------------------
|
||||
# 5. Start Node-RED with custom settings
|
||||
# -------------------------------------------------------
|
||||
echo "[entrypoint] Starting Node-RED..."
|
||||
exec node-red --settings "$EVOLV_DIR/docker/settings.js"
|
||||
16
docker/grafana/provisioning/datasources/influxdb.yaml
Normal file
16
docker/grafana/provisioning/datasources/influxdb.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
apiVersion: 1
|
||||
|
||||
datasources:
|
||||
- name: InfluxDB
|
||||
type: influxdb
|
||||
access: proxy
|
||||
url: http://influxdb:8086
|
||||
uid: cdzg44tv250jkd
|
||||
jsonData:
|
||||
version: Flux
|
||||
organization: evolv
|
||||
defaultBucket: telemetry
|
||||
secureJsonData:
|
||||
token: evolv-dev-token
|
||||
isDefault: true
|
||||
editable: true
|
||||
47
docker/settings.js
Normal file
47
docker/settings.js
Normal file
@@ -0,0 +1,47 @@
|
||||
/**
|
||||
* Node-RED Settings for EVOLV Docker Development Environment
|
||||
*
|
||||
* This configuration is for LOCAL DEVELOPMENT ONLY.
|
||||
* No authentication — do not expose to untrusted networks.
|
||||
*/
|
||||
module.exports = {
|
||||
flowFile: '/data/flows.json',
|
||||
userDir: '/data',
|
||||
|
||||
// Bind to all interfaces inside the container
|
||||
uiHost: '0.0.0.0',
|
||||
uiPort: 1880,
|
||||
|
||||
// No authentication for dev environment
|
||||
adminAuth: null,
|
||||
|
||||
// Disable projects (we use git directly)
|
||||
editorTheme: {
|
||||
projects: {
|
||||
enabled: false
|
||||
}
|
||||
},
|
||||
|
||||
// Global context available to function nodes
|
||||
functionGlobalContext: {
|
||||
locationId: process.env.LOCATION_ID || 'docker-dev',
|
||||
uuid: require('crypto').randomUUID()
|
||||
},
|
||||
|
||||
// Logging
|
||||
logging: {
|
||||
console: {
|
||||
level: 'info',
|
||||
metrics: false,
|
||||
audit: false
|
||||
}
|
||||
},
|
||||
|
||||
// Increase max message size for large telemetry payloads
|
||||
apiMaxLength: '5mb',
|
||||
|
||||
// Diagnostic reporting off for dev
|
||||
diagnostics: {
|
||||
enabled: false
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user