Welcome to Gember

Gember is a responsive web application for controlling a model railroad. It needs srcp-rs as a provider of a REST backend.

Gember

Installation

One other thing is needed, a reverse proxy to bring Gember and Srcp-rs together:

server {
  listen 192.168.42.1:80 default_server;

  root /usr/local/gember;
  index index.html;
  location / { 
    try_files $uri $uri/ /index.html;
  }

  location /api/v1/ws {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
    proxy_read_timeout 60m;
    rewrite ^/api/v1/ws/?(.*) /$1 break;
    proxy_pass http://192.168.42.1:4201;
  }

  location /api/v1/rs {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    rewrite ^/api/v1/rs/?(.*) /$1 break;
    proxy_pass http://192.168.42.1:4202;
    proxy_redirect off;
  }
}

If all went well Gember should be available at 192.168.42.1 (e.g. wenn a Raspberry Pi is configured as an access point).

In the upper right corner a yaml configuration file can be uploaded. The docs directory contains an example: gember.yaml.

Developing

For development purposes a different setup is needed:

server {
  listen 80 default_server;
  listen 127.0.0.1:80 default_server;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:4200;
    proxy_redirect off;
  }

  location /api/v1/ws {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
    proxy_read_timeout 60m;
    rewrite ^/api/v1/ws/?(.*) /$1 break;
    proxy_pass http://127.0.0.1:4201;
  }

  location /api/v1/rs {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    rewrite ^/api/v1/rs/?(.*) /$1 break;
    proxy_pass http://127.0.0.1:4202;
    proxy_redirect off;
  }
}

Adding a general loco:

Add GL

Editing of a general loco:

Edit GL