2024-11-03 11:58:33 +00:00
|
|
|
# This is just YAML, but I decided to use JSON-like formatting because I like it better.
|
|
|
|
|
|
|
|
# Global configuration
|
|
|
|
global: {
|
|
|
|
# IP defines the IP address to bind to.
|
|
|
|
ip: "0.0.0.0",
|
|
|
|
# serviceDirectory defines the directory to look for services in.
|
|
|
|
serviceDirectory: "./services",
|
|
|
|
# resourceDirectory defines the directory to look for resources in.
|
|
|
|
resourceDirectory: "./resources",
|
2024-11-03 13:03:49 +00:00
|
|
|
# compression defines the compression settings on a global level - per-route settings override these. It is optional.
|
2024-11-03 11:58:33 +00:00
|
|
|
compression: {
|
|
|
|
# algorithm defines the compression algorithm to use, possible values are "gzip", "brotli" and "zstd".
|
|
|
|
algorithm: "gzip",
|
|
|
|
# level defines the compression level to use, possible values are 1-9 for gzip, 0-11 for brotli and 1-22 for zstd.
|
|
|
|
level: 5
|
|
|
|
},
|
|
|
|
# logging defines the logging settings.
|
|
|
|
logging: {
|
|
|
|
# enabled defines whether logging is enabled.
|
|
|
|
enabled: true,
|
|
|
|
# file defines the file to log to, relative to the working directory.
|
|
|
|
file: "fulgens.log"
|
|
|
|
},
|
|
|
|
# database defines the database settings.
|
|
|
|
database: {
|
|
|
|
# type defines the type of database to use, possible values are "sqlite" and "postgres".
|
|
|
|
type: "sqlite",
|
|
|
|
# path defines the path to the directory to store database files in (sqlite only).
|
|
|
|
path: "./databases",
|
|
|
|
# connectionString defines the connection string to use for the database (postgres only).
|
|
|
|
connectionString: "postgres://user:password@localhost:5432/database"
|
2024-11-14 19:48:39 +00:00
|
|
|
},
|
|
|
|
# stealth enables stealth mode, which makes the server look like some preset http servers.
|
|
|
|
# stealth mode overrides all proxy preservations and headers.
|
|
|
|
stealth: {
|
|
|
|
# enabled defines whether stealth mode is enabled.
|
|
|
|
enabled: true,
|
|
|
|
# server defines the server to pretend to be, possible values are "nginx" or "net/http".
|
|
|
|
server: "nginx",
|
|
|
|
# php defines if the server should pretend to be running PHP. This should only be used on nginx.
|
|
|
|
php: {
|
|
|
|
# enabled defines whether PHP spoofing is enabled.
|
|
|
|
enabled: true,
|
|
|
|
# version defines the version of PHP to pretend to be.
|
|
|
|
version: "8.2.25"
|
|
|
|
},
|
|
|
|
# aspnet defines if the server should pretend to be running ASP.NET. This should only be used on nginx.
|
|
|
|
aspNet: true
|
2024-11-03 11:58:33 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# Routes define per-subdomain routing settings.
|
|
|
|
routes: [
|
|
|
|
{
|
|
|
|
# none is a special subdomain that matches all requests without a subdomain (Host header).
|
|
|
|
subdomain: "none",
|
2024-11-14 19:48:39 +00:00
|
|
|
# port defines the port to use for this route. They do not have to be unique.
|
|
|
|
port: "8080",
|
2024-11-03 11:58:33 +00:00
|
|
|
# services defines the services to use for this route. Services must be defined on a per-subdomain basis.
|
|
|
|
# Each service may not be used more than once globally. The server will fail to start if this is violated.
|
|
|
|
services: ["authentication"]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
# any subdomain value that isn't "none" will match that specific subdomain.
|
|
|
|
subdomain: "www.localhost",
|
2024-11-14 19:48:39 +00:00
|
|
|
# port defines the port to use for this route. They do not have to be unique.
|
|
|
|
port: "8443",
|
|
|
|
# https defines the HTTPS settings for this route. If this block is missing, HTTPS will not be enabled for this port.
|
|
|
|
# If https is set once for any subdomain with this port, it will be enabled for all subdomains with this port.
|
|
|
|
# The connection will fail if the above condition is true, but there is not an HTTPS block for that subdomain.
|
2024-11-03 11:58:33 +00:00
|
|
|
https: {
|
|
|
|
# certificate defines the path to the certificate file.
|
|
|
|
certificate: "./certs/localhost.crt",
|
|
|
|
# key defines the path to the key file.
|
|
|
|
key: "./certs/localhost.key"
|
|
|
|
},
|
|
|
|
# paths defines per-path settings (NOT for services, which MUST be defined on a per-subdomain basis).
|
|
|
|
paths: [
|
|
|
|
{
|
2024-11-14 19:48:39 +00:00
|
|
|
# paths defines the paths to match. They can contain wildcards.
|
|
|
|
paths: ["/static", "/static/*"],
|
2024-11-03 13:20:09 +00:00
|
|
|
# static defines the static file serving settings for this path. This conflicts with proxy and redirect.
|
|
|
|
# static > proxy > redirect in terms of precedence.
|
2024-11-03 11:58:33 +00:00
|
|
|
static: {
|
|
|
|
# root defines the root directory to serve static files from.
|
|
|
|
root: "./static",
|
|
|
|
# directoryListing defines whether to show a directory listing when a directory is requested.
|
|
|
|
# if it is false or unset, a 403 Forbidden will be returned instead.
|
|
|
|
directoryListing: true
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
2024-11-14 19:48:39 +00:00
|
|
|
# paths defines the paths to match. They can contain wildcards.
|
|
|
|
paths: ["/proxy", "/proxy/*"],
|
2024-11-03 13:20:09 +00:00
|
|
|
# proxy defines the proxy settings for this path. This conflicts with static and redirect.
|
|
|
|
# static > proxy > redirect in terms of precedence.
|
2024-11-03 11:58:33 +00:00
|
|
|
proxy: {
|
|
|
|
# url defines the URL to proxy requests to.
|
|
|
|
url: "http://localhost:8000",
|
|
|
|
# stripPrefix defines whether to strip the prefix from the path before proxying.
|
2024-11-14 19:48:39 +00:00
|
|
|
stripPrefix: true,
|
2024-11-03 19:10:28 +00:00
|
|
|
headers: {
|
|
|
|
# forbid defines the headers to forbid from being sent to the proxied server.
|
2024-11-14 19:48:39 +00:00
|
|
|
forbid: [ "User-Agent" ],
|
|
|
|
# preserveServer defines whether to preserve the server header from the proxied server.
|
|
|
|
preserveServer: true,
|
|
|
|
# preserveAltSvc defines whether to preserve the Alt-Svc header from the proxied server.
|
|
|
|
preserveAltSvc: true,
|
|
|
|
# preserveXPoweredBy defines whether to preserve the X-Powered-By header from the proxied server.
|
|
|
|
preserveXPoweredBy: true,
|
|
|
|
# passHost defines whether the host / :authority header should be sent to the proxied server.
|
|
|
|
passHost: true,
|
2024-11-03 19:10:28 +00:00
|
|
|
# xForward defines whether to send the X-Forwarded-For and X-Forwarded-Proto headers.
|
2024-11-14 19:48:39 +00:00
|
|
|
xForward: false
|
2024-11-03 19:10:28 +00:00
|
|
|
}
|
2024-11-03 13:20:09 +00:00
|
|
|
},
|
2024-11-14 19:48:39 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
# paths defines the paths to match. They can contain wildcards.
|
|
|
|
paths: ["/redirect", "/redirect/*"],
|
|
|
|
# redirect defines the redirect settings for this path. This conflicts with proxy and static.
|
|
|
|
# static > proxy > redirect in terms of precedence.
|
|
|
|
redirect: {
|
|
|
|
# url defines the URL to redirect to.
|
|
|
|
url: "https://www.ailur.dev",
|
|
|
|
# permanent defines whether the redirect is permanent (301) or temporary (302).
|
|
|
|
permanent: true
|
2024-11-03 11:58:33 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
|
|
|
|
# Services define the settings for services.
|
|
|
|
services: {
|
|
|
|
# authentication defines the settings for the authentication service, which is built-in.
|
|
|
|
authentication: {
|
|
|
|
# privacyPolicy defines the URL to the privacy policy.
|
|
|
|
privacyPolicy: "https://git.ailur.dev/Paperwork/nucleus/src/commit/5d191eea87cffae8bdca42017ac26dc19e6cb3de/Privacy.md",
|
|
|
|
# url defines the publicly-facing URL of the service, in case of it being behind a reverse proxy.
|
|
|
|
url: "http://localhost:8000",
|
|
|
|
# identifier defines the identifier for the service, in the form of [Identifier] Accounts.
|
|
|
|
identifier: "Authenticator",
|
|
|
|
# adminKey defines the key to use for administrative operations, such as listing all users.
|
|
|
|
adminKey: "supersecretkey",
|
|
|
|
# testAppIsInternalApp defines whether the test app is an internal app, which allows it to bypass the user consent screen.
|
|
|
|
testAppIsInternalApp: true,
|
|
|
|
# testAppEnabled defines whether the test app is enabled, which is recommended for testing purposes.
|
|
|
|
testAppEnabled: true
|
|
|
|
},
|
|
|
|
# storage defines the settings for the storage service, which is built-in.
|
|
|
|
storage: {
|
|
|
|
# path defines the path to store blobs in.
|
|
|
|
path: "./blob",
|
|
|
|
# defaultQuota defines the default quota for users in bytes.
|
|
|
|
defaultQuota: 50000000
|
|
|
|
}
|
|
|
|
}
|