Skip to content

Server Applications

Marius Vollmer edited this page May 5, 2017 · 18 revisions

This is a whiteboard of sorts, where I scribble things while I talk to myself.

Server Apps aka Server Roles

Users want to add stuff to their servers so that they can do their real job, such as serving web pages, running data bases, etc. We call this stuff "Server Applications".

Users also want to add stuff to extend the functionality of the operating system and its UI, such as lvm2, network teams, container runtimes, selinux troubleshooting, etc. We call this other stuff "Operating System Extenstions".

This here is about Server Applications.

(Cockpit should also be able to manage Operating System Extensions, of course, and it isn't any good at it right now.)

We model "Server Applications" after other kinds of applications that people are familiar with: You discover them in some sort of AppStore, you install them without any dialog wizards, and after that you can use them.

Unlike desktop applications, you don't launch server applications. They are always there, just like "Storage" and "Journal" are always there.

Some applications have their UI entirely inside Cockpit, and installing them will make them appear in the Cockpit navigation menus.

Some applications have their setup configuration and basic monitoring in Cockpit, but the main UI is reached via a link.

Others are one or more systemd units without any dedicated Cockpit UI, and Cockpit will create a suitable UI for them.

Application Manager

Applications are managed in a new "Applications" tool. It lists the installed applications, and has a way to discover and install more.

The details for one application can be shown on a full page. This includes icon, description, and screenshots. The user can install and remove the application on that page.

For a installed application, the description and screenshots is replaced with a minimal UI tailored to that application. It might be a link to the real UI inside Cockpit, or a list of services with Start/Stop buttons and their journal entries. Or a terminal for console applications.

Application Store

Applications will come as OS packages or various kinds of container images. So we use the existing sources for these things to also retrieve Server Application meta data and to download the actual application.

OS packages

We copy what GNOME Software does and maybe extend it.

Container images

We check what "System Containers" are doing and maybe extend it. Maybe push them into the appstream. After downloading the container image, there will be a systemd service for it.

Other kind of containers, such as from Docker or Atomic App, are also worth investigating.

Concrete Applications

FreeIPA - Domain Controller

There is a dedicated FreeIPA UI in Cockpit that handles setup and monitoring, and shows a link to the real FreeIPA web UI.

At least initially, this application will use OS packages and be developed in the Cockpit source tree.

PostgreSQL - Database

TBD

NFS - File Sharing

TBD

Apache - Web Server

TBD

References

Older "Roles" page: https://github.com/cockpit-project/cockpit/wiki/Roles

Older Mockups: https://github.com/cockpit-project/cockpit-design/tree/master/roles

Appstream: https://www.freedesktop.org/wiki/Distributions/AppStream/

System Containers: http://www.projectatomic.io/blog/2016/09/intro-to-system-containers/

Clone this wiki locally