Sanne 'SpuQ' Santens
Published © GPL3+

IoT with Edgeberry - Part 2: Setup Edgeberry Device Hub

Part 2 in the IoT course series with Edgeberry: setting up the Edgeberry Device Hub and exploring the essentials for connecting a device.

AdvancedWork in progress1 hour5
IoT with Edgeberry - Part 2: Setup Edgeberry Device Hub

Story

Read more

Code

NginX configuration file for Edgeberry Device Hub

Apache Conf
The NginX configuration file for the Edgeberry Device Hub on my server.
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    server_name devicehub.edgeberry.io;

    # Serve ACME challenges + proxy your app for now
    location /.well-known/acme-challenge/ { root /var/www/html; }
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host              $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;
        proxy_set_header Upgrade           $http_upgrade;
        proxy_set_header Connection        $connection_upgrade;
    }

    listen 443 ssl; # managed by Certbot
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/devicehub.edgeberry.io/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/devicehub.edgeberry.io/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}


server {
    if ($host = devicehub.edgeberry.io) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    listen [::]:80;
    server_name devicehub.edgeberry.io;
    return 404; # managed by Certbot


}

NginX configuration file for Node-RED

Apache Conf
# http{} level (ok at top of this file on Ubuntu)
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

# --- HTTP: ACME + redirect ---
server {
    if ($host = nodered.edgeberry.io) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    listen [::]:80;
    server_name nodered.edgeberry.io;

    # Let’s Encrypt challenges
    location /.well-known/acme-challenge/ { root /var/www/html; }

    # Everything else -> HTTPS
    return 301 https://$host$request_uri;


}

# --- HTTPS: reverse proxy to Node-RED (:1880) ---
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name nodered.edgeberry.io;

    location / {
        proxy_pass http://127.0.0.1:1880;
        proxy_http_version 1.1;

        proxy_set_header Host              $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;
        proxy_set_header Upgrade           $http_upgrade;
        proxy_set_header Connection        $connection_upgrade;
    }

    # (optional, after confirming HTTPS works)
    # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    ssl_certificate /etc/letsencrypt/live/nodered.edgeberry.io/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/nodered.edgeberry.io/privkey.pem; # managed by Certbot
}

Edgeberry Device Hub

The Edgeberry Device Hub source code on GitHub

Credits

Sanne 'SpuQ' Santens
3 projects • 1 follower

Comments