Git Product home page Git Product logo

cockpit-project / cockpit Goto Github PK

View Code? Open in Web Editor NEW
10.7K 193.0 1.1K 189.58 MB

Cockpit is a web-based graphical interface for servers.

Home Page: http://www.cockpit-project.org/

License: GNU Lesser General Public License v2.1

Shell 1.30% CSS 0.19% HTML 0.96% JavaScript 34.60% C 34.41% Python 24.74% Makefile 0.48% M4 0.18% Dockerfile 0.01% SCSS 1.97% Roff 0.13% TypeScript 1.04%
cockpit javascript linux-servers

cockpit's Introduction

Cockpit

A sysadmin login session in a web browser

cockpit-project.org

Cockpit is an interactive server admin interface. It is easy to use and very lightweight. Cockpit interacts directly with the operating system from a real Linux session in a browser.

Using Cockpit

You can install Cockpit on many Linux operating systems including Debian, Fedora and RHEL.

Cockpit makes Linux discoverable, allowing sysadmins to easily perform tasks such as starting containers, storage administration, network configuration, inspecting logs and so on.

Jumping between the terminal and the web tool is no problem. A service started via Cockpit can be stopped via the terminal. Likewise, if an error occurs in the terminal, it can be seen in the Cockpit journal interface.

You can also easily add other machines that have Cockpit installed and are accessible via SSH and jump between these hosts.

Development

cockpit's People

Contributors

allisonkarlitskaya avatar andreasn avatar cgwalters avatar cockpituous avatar croissanne avatar dependabot[bot] avatar dperpeet avatar fridex avatar garrett avatar jelly avatar jscotka avatar kkoukiou avatar larskarlitski avatar leomoty avatar lnussel avatar mareklibra avatar martinpitt avatar marusak avatar mvollmer avatar pdonlon avatar petervo avatar porscheyin avatar puiterwijk avatar sgallagher avatar skobyda avatar stefwalter avatar sub-mod avatar suomiy avatar tomasmatus avatar yunmingyang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cockpit's Issues

Services pane inconsistent with cli

Andreas: "systemctl --type=service" shows only all active services, while Services in Cockpit shows all active and inactive services.

The command line interface needs --all in order to also show the inactive services.
Since a smooth transition from web ui to cli would be good, it could make sense to do a similar thing for the web ui. Show only active services by default, and a button to allow to also see inactive services.

Logging support

This includes the ability to view device- and service- specific log entries, time lines, and support for searching and filtering.

Unify partitions, logical volumes, and raid re filesystem creation, maybe.

Partitions are created and formatted with one operation, while logical volumes are created in a separate step from formatting them.

Formatting needs many parameters, but partition creation only needs the size, so it made sense to put them into one dialog. (I think I copied that from GNOME Disks.)

Logical volume creation might be complex in terms of UI, just like raid creation, so it is probably better off as a seperate step from formatting, which is also complex.

To unify this, we might separate partition creation from formatting; or we might combine lv/raid creation and formatting and just pay attention that we have a manageable UI for this complex task (similar to Anaconda, maybe).

Improve time specification for shutdown / restart

Right now, when specifying a exact point in time when to do a shutdown or restart (as opposed to specifying a delay), the UI mimics the venerable /usr/bin/shutdown" interface.

We should have a nice date / time picker there, with calendar and everything.

Improve pvmove operation

  • Make it cleanly cancellable or disable cancelling
  • Also represent externally started pvmoves as jobs
  • Allow interrupted pvmoves to be resumed and aborted

Shutdown layout

The content on the Shutdown page is very wide. Maybe we can make this a dialog instead?

Only show services in Services pane

Andreas: I had a chat with Lennart where he suggested we should hide all but the services in the service pane, since it was a bit too technical and a bit overkill for Cockpit to also list the other types.

Improve Services UI by including relationship information

We can have information about Wants, WantedBy, Before, After, etc, complete with links to the other services.

We can also have information about conflicts, such as when enabling a unit file fails because its alias is already installed by some other unit file.

Test D-Bus reseeding after reconnection

When a lost connection comes back, the retrieve a complete object / interface / properties tree from the server and merge it with the remembered state from before the loss, synthesizing signals as appropriate.

This needs testing.

network configuration

We have some network monitoring support, but configuration has not been covered at all yet. For this, we need to talk to NetworkManager.

Sometimes can't talk to realmd when selinux is active

mvollmer: When selinux is 'enforcing' and cockpitd and realmd have been started in certain ways (which include both being auto-launched by D-Bus), cockpitd does not receive replies from realmd, and times out.

This happens to all replies, such as the initial call to retrieve property values.

I am not entirely sure which ways to start them work, and which don't. I think if it at least one of them is started from the command line, they can communicate. All other ways fail IIRC, like D-Bus autolaunching, systemctl start, and D-Bus autolaunching via systemd.

Which one starts first also doesn't seem to make a difference.

I haven't observed this with any other D-Bus service that cockpitd uses.
We use our own custom realmd package, and I might have broken it.
In any case, disabling selinux makes everything work.

Reconcile cgroup-show with systemd

The cgroup-show code is a butchered version of code in systemctl. It would be good to share this code with the systemd project, maybe by simply having identical source files, or maybe by making libsystemd-shared a externally useable library.

This is also related to logs: the journald API is only really accessible from inside the systemctl source tree, if I am not mistaken. We might want to change that, or not.

Collapse instanced services

Lennart proposed to collapse instanced services (like getty's) into one. This would help keep our list of services from getting too long.

Give human names to Journal entrys

Currently entrys in the Journal are named after their commandline names, but it might be a good idea to name them after their human names instead.

So:

  • cockpit-ws -> Cockpit Web Server
  • NetworkManager -> Network Manager
  • setroubleshoot -> SELinux Troubleshooter

etc. Is this possible?

Think about abstractions over systemd

The current Services UI is almost pure systemd, which is nice and powerful, but we might be able to put some nice abstractions over it with little effort.

For example, the user can choose the default target by enabling exactly one of the targets that install themselves as an alias for "default.target". Once you know this, it is fairly easy to do with raw systemd. Still, we can make a "Default Server Profile" page that presents these targets as radio buttons.

lvm support

(For better or worse, depending on who you talk to) LVM is an important part of Linux on the server, so Cockpit should support it. This is complicated by the fact that LVM does still not integrate very well with the modern udev world, and is not supported by udisks.

Our options for supporting it are:

  • bypass udisks
  • get lvm support into udisks

Improve UI when disconnected

Right now, a big ugly "Disconnected" popup pops up with a "Reconnect" button that doesn't seem to do anything. Let's hear it from the designers how this should be done nicely.

investigate glusterfs support

glusterfs is a distributed filesystem, which can be used in nas. Supporting this could be done either by adding support for it to udisks, or by directly using the glusterfs api. Adding it in udisks would have the advantage that we get desktop support for free (not sure how relevant that is).

Allow robust RAID cleanup

It is possible to do 'stupid' things with RAIDs in Cockpit that can't be undone with it.

When starting a RAID fails, this might leave inactive raids behind that udisks2 doesn't seem to handle well. Those arrays can keep disks busy, but udisks2 will not allow inactive arrays to be stopped. (It either ingnores them or pretends they are not running.)

See ​https://bugs.freedesktop.org/show_bug.cgi?id=60359

Also, udisks2 sometimes gets out of sync and shows RAIDs that don't exist anymore at all, and will disappear from udisk2 after a restart of it.

Maybe there are other things...

Get list of supported filesystem types from lower level.

Right now, the list is hard coded. It should be configurable.

In the extreme, we might offer support for discovering packages that would add more filesystem types, pretty much like totem can go looking for video codec packages.

Complete AD support

Enrolling in an AD domain was one of them. We do have support for it, but we may want to revisit it and make sure it makes sense.

Put system information to the Dashboard

It would be nice to get a quick overview of the characteristics of the machine already on the Dashboard. This would include the most crucial parts of information of the machine.

Some quick ideas on what this would be:

  • Host name
  • Operating System
  • Domain
  • Uptime

It would also be nice to put the identifying picture here.

Document our use of attribute((cleanup)), and clean up code.

We allow ourselves the use of GCC extensions, such as attribute((cleanup)) to simplify control flow due to temporary allocations.

This should be documented, including the replacement of the common "if (error) goto out;" idiom with "if (error) return;"

Then all code should be cleaned up to use this pattern. This might need extensions to libgsystem, or a more local approach.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.