Skip to content

Providing gateway, discovery and loadbalancing functions for the FestivalsApp project.

License

Notifications You must be signed in to change notification settings

Festivals-App/festivals-gateway

Repository files navigation



FestivalsApp Gateway

The service gateway for the FestivalsApp backend, providing access to the FestivalsAPI, static file server, database and the website node acting as a combined loadbalancer, ingress server and discovery service.

Figure 1: Architecture Overview Highlighted


DevelopmentDeploymentUsageDocumentationEngageLicensing


Development

TBA

Requirements

TBA

Setup

TBA

Deployment

The Go binaries are able to run without system dependencies so there are not many requirements for the system to run the festivals-gateway binary. The config file needs to be placed at /etc/festivals-gateway.conf or the template config file needs to be present in the directory the binary runs in.

You also need to provide certificates in the right format and location:

  • The default path to the root CA certificate is /usr/local/festivals-gateway/ca.crt
  • The default path to the server certificate is /usr/local/festivals-gateway/server.crt
  • The default path to the corresponding key is /usr/local/festivals-gateway/server.key

Where the root CA certificate is required to validate incoming requests and the server certificate and key is requires to make outgoing connections. For instructions on how to manage and create the certificates see the festivals-pki repository.

VM deployment

The install and update scripts should work with any system that uses systemd and firewalld.

Installing

curl -o install.sh https://raw.githubusercontent.com/Festivals-App/festivals-gateway/main/operation/install.sh
chmod +x install.sh
sudo ./install.sh

Updating

curl -o update.sh https://raw.githubusercontent.com/Festivals-App/festivals-gateway/main/operation/update.sh
chmod +x update.sh
sudo ./update.sh

Server

All of the scripts require Ubuntu 20 LTS as the operating system and that the server has already been initialised, see the steps to do that here.

Usage

TBA

base/health base/version base/info base/log

discovery.base/services discovery.base/loversear

api.base/*

files.base/*

Documentation

The gateway is documented in detail here.

The full documentation for the Festivals App is in the festivals-documentation repository. The documentation repository contains technical documents, architecture information, UI/UX specifications, and whitepapers related to this implementation.

Engage

I welcome every contribution, whether it is a pull request or a fixed typo. The best place to discuss questions and suggestions regarding the festivals-gateway is the issues section. More general information and a good starting point if you want to get involved is the festival-documentation repository.

The following channels are available for discussions, feedback, and support requests:

Type Channel
General Discussion
Other Requests

Licensing

Copyright (c) 2020-2023 Simon Gaus.

Licensed under the GNU Lesser General Public License v3.0 (the "License"); you may not use this file except in compliance with the License.

You may obtain a copy of the License at https://www.gnu.org/licenses/lgpl-3.0.html.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the LICENSE for the specific language governing permissions and limitations under the License.