Struct CoreConfig

Source
pub struct CoreConfig {
Show 32 fields pub title: String, pub host: String, pub port: u16, pub passkey: String, pub ui_write_disabled: bool, pub ensure_server: String, pub mongo: MongoConfig, pub local_auth: bool, pub transparent_mode: bool, pub enable_new_users: bool, pub jwt_secret: String, pub jwt_ttl: Timelength, pub google_oauth: OauthCredentials, pub github_oauth: OauthCredentials, pub webhook_secret: String, pub webhook_base_url: Option<String>, pub github_webhook_app: GithubWebhookAppConfig, pub logging: LogConfig, pub keep_stats_for_days: u64, pub keep_alerts_for_days: u64, pub stack_poll_interval: Timelength, pub sync_poll_interval: Timelength, pub build_poll_interval: Timelength, pub repo_poll_interval: Timelength, pub monitoring_interval: Timelength, pub aws: AwsCredentials, pub hetzner: HetznerCredentials, pub git_providers: Vec<GitProvider>, pub docker_registries: Vec<DockerRegistry>, pub aws_ecr_registries: Vec<AwsEcrConfigWithCredentials>, pub secrets: HashMap<String, String>, pub repo_directory: PathBuf,
}
Expand description

§Core Configuration File

The Core API initializes it’s configuration by reading the environment, parsing the CoreConfig schema from the file path specified by env.monitor_config_path, and then applying any config field overrides specified in the environment.

Note. The monitor core docker image includes the default core configuration found below. To configure the core api, you can either mount your own custom configuration file to /config/config.toml inside the container, or simply override whichever fields you need using the environment.

Refer to the example file for a full example.

Fields§

§title: String

The title of this monitor deployment. Will be used in the browser page title. Default: ‘Monitor’

§host: String

The host to use with oauth redirect url, whatever host the user hits to access monitor. eg https://monitor.mogh.tech. Only used if oauth used without user specifying redirect url themselves.

§port: u16

Port the core web server runs on. Default: 9120.

§passkey: String

Sent in auth header with req to periphery. Should be some secure hash, maybe 20-40 chars.

§ui_write_disabled: bool

Disable user ability to use the UI to update resource configuration.

§ensure_server: String

If defined, ensure an enabled server exists at this address. Use with All In One compose. Example: http://monitor-periphery:8120

§mongo: MongoConfig

Configure core mongo connection.

An easy deployment method is to use Mongo Atlas to provide a reliable database.

§local_auth: bool

enable login with local auth

§transparent_mode: bool

Enable transparent mode, which gives all (enabled) users read access to all resources.

§enable_new_users: bool

New users will be automatically enabled. Combined with transparent mode, this is suitable for a demo instance.

§jwt_secret: String

Optionally provide a specific jwt secret. Passing nothing or an empty string will cause one to be generated. Default: “” (empty string)

§jwt_ttl: Timelength

Control how long distributed JWT remain valid for. Default: 1-day.

§google_oauth: OauthCredentials

Configure google oauth

§github_oauth: OauthCredentials

Configure github oauth

§webhook_secret: String

Used to verify validity from webhooks. Should be some secure hash maybe 20-40 chars. It is given to git provider when configuring the webhook.

§webhook_base_url: Option<String>

Override the webhook listener base url, if None will use the address defined as ‘host’. Example: https://webhooks.mogh.tech

This can be used if core sits on an internal network which is unreachable directly from the open internet. A reverse proxy in a public network can forward webhooks to the internal monitor.

§github_webhook_app: GithubWebhookAppConfig

Configure a Github Webhook app. Allows users to manage repo webhooks from within the Monitor UI.

§logging: LogConfig

Configure logging

§keep_stats_for_days: u64

Number of days to keep stats, or 0 to disable pruning. Stats older than this number of days are deleted on a daily cycle Default: 14

§keep_alerts_for_days: u64

Number of days to keep alerts, or 0 to disable pruning. Alerts older than this number of days are deleted on a daily cycle Default: 14

§stack_poll_interval: Timelength

Interval at which to poll stacks for any updates / automated actions. Options: 15-sec, 1-min, 5-min, 15-min, 1-hr Default: 5-min.

§sync_poll_interval: Timelength

Interval at which to poll syncs for any updates / automated actions. Options: 15-sec, 1-min, 5-min, 15-min, 1-hr Default: 5-min.

§build_poll_interval: Timelength

Interval at which to poll build commit hash for any updates / automated actions. Options: 15-sec, 1-min, 5-min, 15-min, 1-hr Default: 5-min.

§repo_poll_interval: Timelength

Interval at which to poll repo commit hash for any updates / automated actions. Options: 15-sec, 1-min, 5-min, 15-min, 1-hr Default: 5-min.

§monitoring_interval: Timelength

Interval at which to collect server stats and send any alerts. Default: 15-sec

§aws: AwsCredentials

Configure AWS credentials to use with AWS builds / server launches.

§hetzner: HetznerCredentials

Configure Hetzner credentials to use with Hetzner builds / server launches.

§git_providers: Vec<GitProvider>

Configure git credentials used to clone private repos. Supports any git provider.

§docker_registries: Vec<DockerRegistry>

Configure docker credentials used to push / pull images. Supports any docker image repository.

§aws_ecr_registries: Vec<AwsEcrConfigWithCredentials>

Configure aws ecr registries, which are handled differently than other registries

§secrets: HashMap<String, String>

Configure core-based secrets. These will be preferentially interpolated into values if they contain a matching secret. Otherwise, the periphery will have to have the secret configured.

§repo_directory: PathBuf

Specify the directory used to clone stack / repo / build repos, for latest hash / contents. The default is fine when using a container. This directory has no need for persistence, so no need to mount it. Default: /repos

Implementations§

Trait Implementations§

Source§

impl Clone for CoreConfig

Source§

fn clone(&self) -> CoreConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CoreConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for CoreConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for CoreConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,