Skip to content

jenszech/cras

Repository files navigation

CRAS - Conference Room Assisting System

Dieses Projekt stellt einen Node.js Server bereit der alle Daten für ein Konferenzraum Anzeigesystem verwaltet

Das Projekt setzt sich dabei aus mehreren Modulen zusammen:

  • cras - Dieses Projekt stellt das Backend bereit
  • crasUI - Ein responsives Angular Frontend
  • Optional crasBadgeIt - Ein microcontroller projekt for small ePaper devices
  • Optional crasAndroidViewer - Eine Android App mit einem einfachem fullscreen Webviewer

Features

  • Abrufen der Raumbelegung von einem Exchange Server
  • Bereitstellung von Rest Schnittstellen

Roadmap

Für geplante Features und Änderungen siehe CHANGELOG.md

Getting Started

Diese Anleitung zeigt anhand einer Beispiel Installation auf dem Raspberry wie die der StatusMonitor installiert, eingerichtet und betrieben werden kann.

Prerequisites

  • Linux umgebung (z.B Raspberry Pi 3 mit Raspbian)
  • git
  • node.js

siehe: Raspberry Setup

Installation

Installation des CRAS Projekts

git clone https://github.com/jenszech/cras.git
cd cras
npm install

Einrichten als Hintergrundprocess

Einrichten als Process mit Autostart

sudo npm install pm2@latest -g
pm2 start bin/cras
pm2 startup systemd
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
pm2 list

Einrichten einer Umgebungsvariable

Um unterschiedliche Konfigurationen je Umgebung (Dev, Integ, Prod) nutzen zu können, muss auf dem System die aktuelle Umgebung gesetzt werden. Dafür muss in der environment Konfiguration

sudo vi /etc/environment 

die folgende Zeile hinzuggefügt werden

NODE_ENV=prod

Einrichten eines ssl Zertifikats

Eigenes Zertifikat erstellen

openssl req -x509 -newkey rsa:2048 -keyout keytmp.pem -out cert.pem -days 365
openssl rsa -in keytmp.pem -out key.pem

Die beiden Dateien cert.pem und key.pem müssen unter ./config/cert liegen.

Test

Wenn alles erfolgreich war ist http://:3000 das WebInterface erreichbar.

Konfiguration

Die Konfiguration erfolgt über eine Zentrale Konfigurationsdatei (default.json). Sie kann durch lokale Enviroment Konfigurationen (.z.B. prod.json oder dev.json) überschrieben werden. Dabei werden alle nicht überschriebenen Elemente aus der default.json vererbt. Die Lokale Datei muss dabei genauso heißen wie die in der Environment gesetzte Name (NODE_ENV=prod)

In der Default Konfiguration sollten keine Username, Passwörter oder lokalen Server eingetragen werden. Es sollten nur allgemeingültige Werte enthalten sein. Die Environment Konfiguration enthalten dagegen alle lokalen Anpassungen inkl. Passwörter. Sie sollten daher nichts ins Github eingecheckt werden.

Default.json

{
  "cras": {
    "mainSetting": {
      "env": "default",
      "port": "3001",
      "default_room_user": "example@mail.com",
      "workStart": 7,
      "workEnd": 19
    },
    "exchange": {
      "url": "<INSERT URL>",
      "user": "<INSERT USERNAME>",
      "password": "<INSERT PASSWORD>"
    }
  }
}

prod.json Example

{
    "cras": {
      "mainSetting": {
        "env": "prod",
        "default_room_user": "user@domain.de"
      }
    }
}

Betrieb

Das WebInterface: http://:3000 Konfigurationsdateien liegen unter: ~/cras/conf/ Logdateien liegen unter: ~/cras/logs/

Server Status abfragen

pm2 list

Server neustarten

pm2 restart cras

Update der Projekt Software

cd cras
git pull
pm2 restart cras

Entwicklung

Sourcecode formating

npm run format && npm run lint

Release a new version

npm version major|minor|patch

Built With

Contributing

Please read CODE_OF_CONDUCT.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE.md file for details

##Weitere Infos: Wiki - Raspberry Setup