* add some network stuff to container summary * improve settings tables UI * periphery build supports additional tags * fix variable container sizing * alert types newline wrap * plumbing for Stack resource * plumbing for Stack resource * mount stack api * stack resource sync * get remote compose file * support image_name and image_tag * add server config placeholders. default server config address * configure image name and image tag * deployment work with build image_name and image_tag * stack UI * fe builds * configure registry provider and account * implement periphery stack api * stack poll interval * add UI provider management * deploy stacks * build push commit hash tag. * Destroy stack * update default core port to 9120 * remove git_account alias * finish stack (and container) api * frontend builds * cant cancel server based builds * fix * use git pull -f * 9120 * start UI updates (#15) * fix From<Stack> for CloneArgs * remove unused imports * UI Updates (#16) * cleanup dashboard charts for resources * bring back solid scrollbars * enable sidebar scrolling * remove alerts from all resources * pass jwt secret * stacks dont delete the target * parse services from yaml * stacks deploy * close * looking good * closer * destroy stack when file missing. onboard stacks * figure out stack container name matching * get stack state correct * work with service views * UI Updates - Sidebar, Topbar Alerts, and All Resources page (#17) * move sidebar to use fixed positioning instead of sticky * add alert details dialog to topbar alerts * cleanup all resources page layout * ensure resource links don't propagate clicks * periphery support passing env with --env-file * StackServicePage * default run_directory to ./ for clarify * add stack webhook listeners * add default compose name of stack name * stacks controlled with project name * migrate to dotenvy * add stack to dashboard * remove deploying / destroying stack services * update config files * fix getting service logs * git / docker provider management api * implement passing git / registry token from db * rename system user Github to Git Webhook * seperate deployed and latest services on stack info * add stack service level operations * UI Updates - Update Shadcn/UI components, prevent navbar menu layout shift (#20) * add dashboard pie for resource syncs * dashboard items same height * update shadcn components * ensure centered following sheet update * cleanup layout, prevent navbar menu layout shifts * add manual filter, fix toast call * guard webhooks * remove deployed_message, latest_message from StackListItemInfo * stop all containers on server correctly * support multiple compose files * cache all containers networks images projects * remove project missing from db cache * work on sync deploy stuff * rework deployment sync deploy to support stacks. they can depend on each other. * UI Updates - Remove topbar transparency, pretty status badges, tidy resource page layout with a 'back' button (#21) * remove topbar transparency * cleanup unused * responsive dashboard * better mobile header * dont need to calc 64px less since header is using position fixed * add status badge component * update status badges * further simplify layout * allow undefined status as prop * use new status badges for alerts * update status badges for all resources * undo layout change * tidy up resource page layout, add back button * no need for button wrapper * remove unused * build cancel log * update ts types * fix fe type changes * fe tweaks * remove on build logs * core refresh cache immediately on startup * jwt_ttl * canonicalize run directory on host * update canonicalize error message * core use docker-compose * fix incorrect project missing, add status string to stack info * remove entries in "after" that aren't deploying * fix dockerfiel * build custom tag postfix * sync fixes * ensure UpdateGitProviderAccount doesn't change id * ensure UpdateDockerRegistryAccount doesn't change id * configure providers in the UI * add // comment support to env, conversions * add updates for provider deletes * improve sync pending deploy log * add more deployment actions * add backward compat with v1.12 for clone repo * stack deploy format * fe * alert menus clone when click resource link * rename stacks * don't close on click * snake case stack state, in line with deployment state * sync redeploy stack if newer hash (optional behind resource field 'latest_hash') * remove nav to tree * RefreshStack/Sync debug instruments * improve inline UI docs * implement resource base_permission backend * plumbing for Repo build * build repos * write env file repos * add latest hash / message to build info * add optional hash to update * keep built_hash updated * add backend for build / repo latest hash management * remove unused resources * clean up repo dirs after cache update * fix repo info deser error * add build / repo git status * fix page layouts * improve layout responsive * most config incline docs * add descriptions for all resource types * default local auth false * fix omnibar arrow keys issue * add compose file to example config * image registry * dashboard display no resources messge * update deps. * show when no config * resource sync use config git_provider * fix networks * fix deploy error due to after * update lots of docs * fix server stat charts not working * update screenshots * update changelog * add a disclaimer * remove file paths docs stuff * build repo * v1.13 - Komodo * update docs for cli * fill out the compose example more --------- Co-authored-by: Karamvir Singh <67458484+karamvirsingh98@users.noreply.github.com>
3.8 KiB
Monitor Core Setup
To run Monitor Core, you will need Docker. See the docker install docs.
:::info Monitor Core itself can really only run remote builds. You also have to install the Monitor Periphery agent on your hosts and connect them as Servers in order to alert / deploy etc.
You can currently and always will be able to connect as many servers an you like using the Periphery agent. :::
Deploy Monitor Core with Docker Compose
There is an example compose file here: https://github.com/mbecker20/monitor/blob/main/config_example/core.compose.yaml.
Copy the contents to a compose.yaml, and deploy it with docker compose up -d.
Configuration
You can configure Monitor with environment variables, or using a config file.
The example config file in the Monitor repo documents all the configuration options, along with the corresponding environment variables. It can be found here: https://github.com/mbecker20/monitor/blob/main/config_example/core.compose.yaml.
Note that configuration passed in environment variables will take precedent over what is given in the file.
:::note
To enable OAuth2 login, you must create a client on the respective OAuth provider,
for example google
or github.
Monitor uses the web application login flow.
The redirect uri is <base_url>/auth/google/callback for google and <base_url>/auth/github/callback for github.
:::
First login
Core should now be accessible on the specified port, so navigating to http://<address>:<port> will display the login page.
The first user to log in will be auto enabled and made an admin. Any additional users to create accounts will be disabled by default, and must be enabled by an admin.
Tls
Core itself only supports http, so a reverse proxy like caddy should be used for https.
Deploy with Docker cli
1. Start Mongo
Mongo can be run locally using the docker cli:
docker run --name monitor-mongo \
--network host \
-v /local/storage/path:/data/db \
-e MONGO_INITDB_ROOT_USERNAME="admin" \
-e MONGO_INITDB_ROOT_PASSWORD="admin" \
mongo:latest
You should replace the username and password with your own. See the image docs for more details.
Note that this uses "host" networking, which will allow core to connect over localhost.
Many users will prefer the default "bridge" network, and to use port mapping with -p 27017:27017.
:::note
The disk space requirements of Monitor are dominated by the storage of system stats.
This depends on the number of connected servers (more system stats being produces / stored), stats collection frequency, and your stats pruning configuration.
If you need to save on space, you can configure these fields in your core config: - Stats poll frequency can be reduced using, for example, monitoring_interval = "15-sec" - Pruning can be tuned more aggresively using, for example, keep_stats_for_days = 7.
:::
2. Start Monitor core
Monitor core is distributed via Github Container Registry under the package mbecker20/monitor.
docker run -d --name monitor-core \
--network host \
-v $HOME/.monitor/core.config.toml:/config/config.toml \
ghcr.io/mbecker20/monitor:latest
Note that this uses "host" networking, which will allow it to connect to a local periphery agent on localhost.
Many users will prefer the default "bridge" network, and to use port mapping with -p 9120:9120.