The Fulgens Plugin-based web server (beta)
Go to file
Tracker-Friendly 3fe89adee8 Fixed gitignore again
Signed-off-by: arzumify <jliwin98@danwin1210.de>
2024-10-29 14:37:04 +00:00
services-src Fixed gitignore, fixed a font file being missing 2024-10-29 14:36:44 +00:00
.gitignore Fixed gitignore again 2024-10-29 14:37:04 +00:00
LICENSE.md Initial commit 2024-09-28 19:41:34 +01:00
README.md Add support for static files 2024-10-24 19:27:25 +01:00
build.sh Added fancy printing when building, fixed compressionlevel attempting to be set when no compression is specified 2024-10-29 12:51:04 +00:00
config.json.example Rename config.json, removed some accidental third-party modules that slipped in there 2024-10-22 20:22:25 +01:00
go.mod Added compression support, made all fetches use jsFetch for improved binary sizes 2024-10-29 11:20:01 +00:00
go.sum Added compression support, made all fetches use jsFetch for improved binary sizes 2024-10-29 11:20:01 +00:00
main.go Added fancy printing when building, fixed compressionlevel attempting to be set when no compression is specified 2024-10-29 12:51:04 +00:00

README.md

Fulgens Web Server

A simple and fast plugin-based web server written in Golang.

Go Report Card Go Reference wakatime

It utilises Chi and the Go standard library to provide a fast and efficient web server, with the ability to add plugins to extend its functionality.

Features

  • Fast and efficient
  • Plugin-based
  • Easy to use
  • Comes with OAuth2 and Blob storage (known as the "nucleus" services)
  • SQLite and PostgreSQL support
  • Easy to extend

Installation

To install, git clone the repository:

git clone https://git.ailur.dev/Ailur/fulgens.git --depth 1

Then, build the server:

./build.sh

After that, configure the server using the config.json file (see below), and you're ready to go!

Usage

To run the server, simply run the binary:

./fulgens

Configuration

The server can be configured using a config.json file. An example configuration file is provided in the repository as config.json.example. The configuration file is structured as follows:

Global

  • port - The port the server listens on
  • ip - The IP address the server listens on
  • serviceDirectory - The directory where services are stored
  • resourceDirectory - The directory where service resources are stored

Logging

  • enabled - Whether file logging is enabled
  • file - The file to log to

Database

  • type - The type of database to use (sqlite or postgres)
  • connectionString - The connection string for the database (postgres only)
  • databasePath - The directory to store the databases (sqlite only) It is necessary to have a separate directory for each service, as SQLite does not support multiple schemas in a single file.

Static (optional)

Each entry here is in a JSON list, with the following fields:

  • directory - The directory to serve static files from
  • subdomain - The subdomain the static files are hosted on (optional, will run on the root domain if not specified)
  • pattern - The pattern to match for the static files (optional, defaults to /*)

Services

For all services

  • subdomain - The subdomain the service is hosted on (optional, will run on the root domain if not specified)

Storage

  • path - The path to store blobs
  • defaultQuota - The maximum size of the storage in bytes

Auth

  • privacyPolicy - The URL to the privacy policy
  • url - The URL it is being hosted on
  • testAppEnabled - Whether to enable the OAuth2 test app
  • testAppIsInteralApp - Whether the test app should have seamless logon like an internal service (required if testAppEnabled is true)
  • identifier - The name of the OAuth2 service
  • adminKey - The key used to access the admin panel and list users

Contributing

Contributions are welcome! Please open a pull request with your changes.

Plugin development

Plugins require the use of the library package, found here. This provides them with the necessary resources to interact with the rest of the server

Enterprise support

For enterprise support, please visit Ailur Enterprise.