Skip to content

Self Portal is a cross-platform desktop application used to deploy software across your fleet via Chef and other frameworks

License

Notifications You must be signed in to change notification settings

amadotejada/self-portal

Repository files navigation

Self Portal

Written by Amado Tejada

build

Self Portal is a cross-platform desktop application used to deploy software across your endpoints fleet while providing the same user experience via Chef and other software management solutions.

How does Self Portal work?

This is a front-end GUI for users and does not connect directly with management tools. Instead, it calls out to the management framework below to install the packages.

E.g. For Chef, when a user selects an app, chef-client it will be executed running that specific app cookbook and installing the app in the background.

Features

  • cross-platform
  • supports various deployment frameworks
  • python framework bundled
  • no end-user runtime dependencies
  • dark & light themes
  • easy to use for end-users
  • log viewer for troubleshooting

Tested on

This tool was made around Chef on Linux, but since its a front-end, it can be used with any other frameworks.

macOS Windows Linux
Chef Chef Chef
Jamf Choco apt/yum/dnf
pip pip pip
autopkg Scoop snap/flatpak
  • last tested: 01/18/24
  • chef/salt used to test on macOS/linux
  • testing gorilla, munki, and brew

User Interface

UI Demo

macOS

Dark Light

Windows

Dark Light

Linux

Dark Light

Other

Theme Chooser Log Viewer

Chef Requirements:

  • Chef server and cookbooks needs to be pre-configured before using Self Portal.
  • Cookbooks need to exist on Chef and scoped to the endpoints
  • Node needs to be enrolled to the Chef instance.

(Other frameworks will have similar requirements. Defer to your framework documentation for more information on to setup, scoping, and enrolling.)

Self Portal Requirements:

  • pyinstaller to build executables
  • PyQt5 - Runtime files are bundled in executable for simple deployment.

Prepare a new app

  • Create JSON file for each cookbook/app to deploy - see below.
  • Self Portal needs to run with an admin account and the ability to run chef-client with elevated permissions.
    • Depending on your security posture and requirements.
    • There are several ways of doing this per OS. e.g. sudoers, polkit, pkexec, gsudo
Apps JSON schema
{
  "name": "Chrome",
  "id": "chrome",
  "description": "Chrome is a fast, secure, free web browser. The browser built by Google.",
  "category": ["browser"],
  "icon": "resources/icons/chrome.png",
  "bashcmd": "pkexec chef-client -o recipe[app_chrome] -L /var/log/chef/self_portal.log"
  \\ Self Portal calls the bashcmd to install the software via Chef.
}

Build executables and deploy

  • It's best to build on the targeted OS
pyinstaller build.spec

Executables output to /self-portal/dist/

  • If you're using Chef, create cookbook for Self Portal and deploy the endpoints.

    • If you're using other frameworks, use the alternative method to cookbook or remotely package policy.
  • Profit

Disclaimer

This software {Self Portal} has not been endorsed or supported by any of the software mentioned above and is in no way associated with them and/or its subsidiaries or affiliate.

License

Self Portal is released under the Apache 2.0 License

About

Self Portal is a cross-platform desktop application used to deploy software across your fleet via Chef and other frameworks

Topics

Resources

License

Stars

Watchers

Forks

Languages