Skip to content

Self hosted ​

The ICP-Forest Server can be self-hosted using Supabase. Below is a step-by-step guide to set up the server and process the data.

Links mentioned in the video:

Data flow ​

A self-hosted installation runs as one stack, fuk-platform. Data reaches its PostgreSQL database on four paths: sensor telemetry through ThingsBoard, the yearly ICP Forests delivery, DWD weather data and a nightly job that prepares the live values. Dashboard and REST API read all of them from the same database.

SourcesProcessingDatabaseAccessSupabase · PostgreSQL 17tb-history-loadRESTRESTDMITEC loggers18 stations · CSV via FTPadlmx historyMSSQL dump 2007 to 01/2026ICP deliveryfuk-icp-data · yearlyDWDRegional data · dailyftp-ingestNode · hourlyThingsBoard 4.3.1tb-node + PostgreSQL 16Telemetry ts_kvr-plumberR API · Port 7005icp-importStage → swap in one transactionCaddyTLS · single entry pointDashboardforstliche-umweltkontrolle.defuk-mcpClaude & agentsicp_download_thingsboardmm_meh · mm_mem · mm_plm · gr_irppublic · download viewsv_mm_mem · v_gr_irp · matviews 05:30icp_downloadDelivery, unchangedicp_dictionaries148 code listsfukdevice_map · sensor_map · dendro_eventdwd.meteo_dailyDaily values per plotpg_cron01:00 DWD · 03:00 Sync · 05:30 Viewsicp-import only
  • Sensors · hourlyThe loggers drop CSV files on the DMITEC FTP server; ftp-ingest writes them to ThingsBoard. The history back to 2007 was loaded once with tb-history-load.
  • Nightly run · 03:00pg_cron calls the R API. It reads ThingsBoard through device_map and sensor_map and writes to icp_download_thingsboard.
  • ICP delivery · yearlyicp-import loads it into a stage schema and swaps it in, giving icp_download and icp_dictionaries. icp_download stays exactly as delivered.
  • Weather · 01:00The R API fetches the DWD regional data into dwd.meteo_daily.
  • OutputThe download views join the delivery with the live data. The dashboard reads them through Caddy, fuk-mcp through the same REST API on the internal network.