Repository: cockpit-project/cockpit-project.github.io
Branch: main
Commit: afe8e36e56e0
Files: 501
Total size: 4.2 MB
Directory structure:
gitextract_v3tdzmoy/
├── .github/
│ └── workflows/
│ └── update-externals.yml
├── .gitignore
├── .travis.yml
├── .well-known/
│ └── org.flathub.VerifiedApps.txt
├── 404.md
├── CNAME
├── Gemfile
├── LICENSE
├── README.md
├── _config.yml
├── _data/
│ ├── applications.yml
│ ├── authors.yml
│ ├── browser_support.yml
│ ├── browsers.yml
│ ├── distros.yml
│ ├── maintainers.yml
│ └── navigation.yml
├── _includes/
│ ├── apps.html
│ ├── email.html
│ ├── feed.html
│ ├── feed_category.html
│ ├── github.html
│ ├── nav.html
│ ├── nav_dir.html
│ ├── page_footer.html
│ ├── page_header.html
│ ├── pagination.html
│ ├── post.html
│ ├── posts.html
│ ├── posts_category.html
│ ├── rss.html
│ ├── search.html
│ ├── search_json.html
│ ├── search_json_items.html
│ └── twitter.html
├── _layouts/
│ ├── default.html
│ ├── essential.html
│ ├── guide.html
│ ├── markdown.html
│ ├── page.html
│ └── post.html
├── _posts/
│ ├── 2014-02-13-introducing-cockpit.md
│ ├── 2014-04-22-cockpit-has-a-terminal.md
│ ├── 2014-04-25-cockpit-does-docker.md
│ ├── 2014-06-20-cockpit-simple-networking-configuration.md
│ ├── 2014-06-24-cockpit-has-docker-pull-support.md
│ ├── 2014-11-04-cockpit-multi-server-dashboard.md
│ ├── 2014-11-04-dbus-powerful-ipc.md
│ ├── 2014-11-13-cockpit-plugin-tutorial.md
│ ├── 2014-11-13-dbus-basics.md
│ ├── 2014-11-20-rhel-atomic-beta.md
│ ├── 2014-12-16-protocol-interaction.md
│ ├── 2015-06-09-cockpit-does-kubernetes.md
│ ├── 2015-07-10-rest-api-plugin.md
│ ├── 2015-09-23-cockpit-0.77.md
│ ├── 2015-09-30-cockpit-0.78.md
│ ├── 2015-10-07-cockpit-0.79.md
│ ├── 2015-10-08-cockpit-vagrantfile.md
│ ├── 2015-10-14-cockpit-0.80.md
│ ├── 2015-10-21-cockpit-0.81.md
│ ├── 2015-10-28-cockpit-0.82.md
│ ├── 2015-11-19-cockpit-0.84.md
│ ├── 2015-11-27-cockpit-0.85.md
│ ├── 2015-12-04-cockpit-0.86.md
│ ├── 2015-12-22-cockpit-0.89.md
│ ├── 2016-02-12-cockpit-0.95.md
│ ├── 2016-03-24-cockpit-0.99.md
│ ├── 2016-04-01-cockpit-0.100.md
│ ├── 2016-04-08-cockpit-0.101.md
│ ├── 2016-04-14-cockpit-0.102.md
│ ├── 2016-04-20-cockpit-0.103.md
│ ├── 2016-04-28-cockpit-0.104.md
│ ├── 2016-05-04-cockpit-0.105.md
│ ├── 2016-05-12-cockpit-0.106.md
│ ├── 2016-06-26-cockpit-0.111.md
│ ├── 2016-07-07-cockpit-0.113.md
│ ├── 2016-07-12-cockpit-0.114.md
│ ├── 2016-08-11-cockpit-0.117.md
│ ├── 2016-09-08-cockpit-118.md
│ ├── 2016-10-21-cockpit-120.md
│ ├── 2016-10-28-cockpit-121.md
│ ├── 2016-11-03-cockpit-122.md
│ ├── 2016-11-25-cockpit-125.md
│ ├── 2017-01-09-cockpit-127.md
│ ├── 2017-01-19-cockpit-129.md
│ ├── 2017-02-24-cockpit-132.md
│ ├── 2017-03-02-cockpit-133.md
│ ├── 2017-03-09-cockpit-134.md
│ ├── 2017-03-15-cockpit-135.md
│ ├── 2017-03-30-cockpit-137.md
│ ├── 2017-06-09-cockpit-142.md
│ ├── 2017-06-19-cockpit-143.md
│ ├── 2017-06-27-cockpit-hackfest.md
│ ├── 2017-07-03-cockpit-hackfest-wrapup.md
│ ├── 2017-07-07-cockpit-145.md
│ ├── 2017-07-21-cockpit-146.md
│ ├── 2017-07-25-cockpit-workshop-all-systems-go.md
│ ├── 2017-07-27-cockpit-147.md
│ ├── 2017-08-04-cockpit-148.md
│ ├── 2017-09-08-cockpit-150.md
│ ├── 2017-09-21-cockpit-151.md
│ ├── 2017-10-06-cockpit-152.md
│ ├── 2017-10-17-cockpit-153.md
│ ├── 2017-11-06-cockpit-155.md
│ ├── 2017-11-16-cockpit-156.md
│ ├── 2017-11-30-cockpit-157.md
│ ├── 2017-12-13-cockpit-158.md
│ ├── 2018-01-10-cockpit-159.md
│ ├── 2018-01-24-cockpit-160.md
│ ├── 2018-02-07-cockpit-161.md
│ ├── 2018-02-21-cockpit-162.md
│ ├── 2018-03-07-cockpit-163.md
│ ├── 2018-03-09-starter-kit.md
│ ├── 2018-03-21-cockpit-164.md
│ ├── 2018-03-28-puppeteer-tests.md
│ ├── 2018-04-04-cockpit-165.md
│ ├── 2018-04-11-making-a-cockpit-application.md
│ ├── 2018-04-18-cockpit-166.md
│ ├── 2018-05-02-cockpit-167.md
│ ├── 2018-05-16-cockpit-168.md
│ ├── 2018-05-28-sso-oauth.md
│ ├── 2018-05-30-cockpit-169.md
│ ├── 2018-06-13-cockpit-170.md
│ ├── 2018-06-27-cockpit-171.md
│ ├── 2018-07-11-cockpit-172.md
│ ├── 2018-07-25-cockpit-173.md
│ ├── 2018-08-01-cockpit-174.md
│ ├── 2018-08-08-cockpit-175.md
│ ├── 2018-08-22-cockpit-176.md
│ ├── 2018-09-05-cockpit-177.md
│ ├── 2018-09-13-is-cockpit-secure.md
│ ├── 2018-09-19-cockpit-178.md
│ ├── 2018-10-04-cockpit-179.md
│ ├── 2018-10-04-cockpit-180.md
│ ├── 2018-10-31-cockpit-181.md
│ ├── 2018-11-14-cockpit-182.md
│ ├── 2018-11-28-cockpit-183.md
│ ├── 2018-12-12-cockpit-184.md
│ ├── 2019-01-09-cockpit-185.md
│ ├── 2019-01-23-cockpit-186.md
│ ├── 2019-02-06-cockpit-187.md
│ ├── 2019-02-20-cockpit-188.md
│ ├── 2019-03-06-cockpit-189.md
│ ├── 2019-03-22-cockpit-190.md
│ ├── 2019-04-03-cockpit-191.md
│ ├── 2019-04-17-cockpit-192.md
│ ├── 2019-05-02-cockpit-193.md
│ ├── 2019-05-15-cockpit-194.md
│ ├── 2019-05-29-cockpit-195.md
│ ├── 2019-06-12-cockpit-196.md
│ ├── 2019-06-26-cockpit-197.md
│ ├── 2019-07-10-cockpit-198.md
│ ├── 2019-07-24-cockpit-199.md
│ ├── 2019-08-07-cockpit-200.md
│ ├── 2019-08-21-cockpit-201.md
│ ├── 2019-09-04-cockpit-202.md
│ ├── 2019-09-18-cockpit-203.md
│ ├── 2019-10-02-cockpit-204.md
│ ├── 2019-10-16-cockpit-205.md
│ ├── 2019-10-30-cockpit-206.md
│ ├── 2019-11-13-cockpit-207.md
│ ├── 2019-11-27-cockpit-208.md
│ ├── 2019-12-13-cockpit-209.md
│ ├── 2020-01-08-cockpit-210.md
│ ├── 2020-01-22-cockpit-211.md
│ ├── 2020-02-05-cockpit-212.md
│ ├── 2020-02-19-cockpit-213.md
│ ├── 2020-03-04-cockpit-214.md
│ ├── 2020-03-18-cockpit-215.md
│ ├── 2020-04-01-cockpit-216.md
│ ├── 2020-04-15-cockpit-217.md
│ ├── 2020-04-29-cockpit-218.md
│ ├── 2020-05-06-cockpit-ansible.md
│ ├── 2020-05-13-cockpit-219.md
│ ├── 2020-05-27-cockpit-220.md
│ ├── 2020-05-29-cockpit-common-criteria.md
│ ├── 2020-06-10-cockpit-221.md
│ ├── 2020-06-24-cockpit-222.md
│ ├── 2020-07-08-cockpit-223.md
│ ├── 2020-07-22-cockpit-224.md
│ ├── 2020-08-05-cockpit-225.md
│ ├── 2020-08-19-cockpit-226-cockpit-podman-22.md
│ ├── 2020-09-02-cockpit-227.md
│ ├── 2020-09-16-cockpit-228.md
│ ├── 2020-09-30-cockpit-229.md
│ ├── 2020-10-14-cockpit-230.md
│ ├── 2020-10-29-cockpit-231.md
│ ├── 2020-11-11-cockpit-232.md
│ ├── 2020-11-25-cockpit-233.md
│ ├── 2020-12-09-cockpit-234.md
│ ├── 2021-01-07-cockpit-235.md
│ ├── 2021-01-21-cockpit-236.md
│ ├── 2021-02-03-cockpit-237.md
│ ├── 2021-02-16-cockpit-238.md
│ ├── 2021-03-03-cockpit-239.md
│ ├── 2021-03-17-cockpit-240.md
│ ├── 2021-03-31-cockpit-241.md
│ ├── 2021-04-05-fmf-unified-testing.md
│ ├── 2021-04-14-cockpit-242.md
│ ├── 2021-04-28-cockpit-243.md
│ ├── 2021-05-06-pixel-tests.md
│ ├── 2021-05-12-244.md
│ ├── 2021-05-26-cockpit-245.md
│ ├── 2021-06-23-cockpit-247.md
│ ├── 2021-07-05-pcp-grafana.md
│ ├── 2021-07-07-cockpit-248.md
│ ├── 2021-07-13-ci-metrics.md
│ ├── 2021-08-04-cockpit-250.md
│ ├── 2021-08-18-cockpit-251.md
│ ├── 2021-09-01-cockpit-252.md
│ ├── 2021-09-15-cockpit-253.md
│ ├── 2021-09-29-cockpit-254.md
│ ├── 2021-10-13-cockpit-255.md
│ ├── 2021-10-27-cockpit-256.md
│ ├── 2021-11-10-cockpit-257.md
│ ├── 2021-12-08-cockpit-259.md
│ ├── 2022-01-05-cockpit-260.md
│ ├── 2022-01-25-cockpit-261.md
│ ├── 2022-02-02-cockpit-262.md
│ ├── 2022-02-03-pixel-tests-update.md
│ ├── 2022-02-16-cockpit-263.md
│ ├── 2022-03-16-cockpit-265.md
│ ├── 2022-03-30-cockpit-266.md
│ ├── 2022-04-13-cockpit-267.md
│ ├── 2022-04-28-cockpit-268.md
│ ├── 2022-05-12-cockpit-269.md
│ ├── 2022-05-24-cockpit-270.md
│ ├── 2022-06-08-cockpit-271.md
│ ├── 2022-06-23-cockpit-272.md
│ ├── 2022-07-20-cockpit-273.md
│ ├── 2022-08-25-cockpit-275.md
│ ├── 2022-09-22-cockpit-277.md
│ ├── 2022-10-18-cockpit-278.md
│ ├── 2022-10-20-login-issues.md
│ ├── 2022-11-03-cockpit-279.md
│ ├── 2022-11-16-cockpit-280.md
│ ├── 2022-12-01-cockpit-281.md
│ ├── 2022-12-14-cockpit-282.md
│ ├── 2023-01-12-cockpit-283.md
│ ├── 2023-01-25-cockpit-284.md
│ ├── 2023-02-08-cockpit-285.md
│ ├── 2023-02-22-cockpit-286.md
│ ├── 2023-03-09-cockpit-287.md
│ ├── 2023-03-22-cockpit-288.md
│ ├── 2023-03-29-matrix-channel.md
│ ├── 2023-04-06-cockpit-289.md
│ ├── 2023-04-19-cockpit-290.md
│ ├── 2023-05-03-cockpit-291.md
│ ├── 2023-05-03-patternfly-v5-alpha.md
│ ├── 2023-05-16-cockpit-292.md
│ ├── 2023-06-01-cockpit-293.md
│ ├── 2023-06-14-cockpit-294.md
│ ├── 2023-06-28-cockpit-295.md
│ ├── 2023-07-26-cockpit-297.md
│ ├── 2023-08-01-tmt-cross-project-testing.md
│ ├── 2023-08-09-cockpit-298.md
│ ├── 2023-08-23-cockpit-299.md
│ ├── 2023-09-06-cockpit-300.md
│ ├── 2023-09-20-cockpit-301.md
│ ├── 2023-10-05-cockpit-302.md
│ ├── 2023-10-18-cockpit-303.md
│ ├── 2023-11-01-cockpit-304.md
│ ├── 2023-11-29-cockpit-306.md
│ ├── 2023-12-14-cockpit-307.md
│ ├── 2024-01-18-cockpit-309.md
│ ├── 2024-01-31-cockpit-310.md
│ ├── 2024-02-14-cockpit-311.md
│ ├── 2024-03-27-cockpit-314.md
│ ├── 2024-04-24-cockpit-316.md
│ ├── 2024-05-28-cockpit-317.md
│ ├── 2024-06-10-first-cockpit-files-release.md
│ ├── 2024-06-12-cockpit-318.md
│ ├── 2024-06-26-cockpit-319.md
│ ├── 2024-07-03-cockpit-320.md
│ ├── 2024-08-08-cockpit-322.md
│ ├── 2024-09-04-cockpit-324.md
│ ├── 2024-09-25-cockpit-325.md
│ ├── 2024-10-08-cockpit-326.md
│ ├── 2024-10-23-cockpit-327.md
│ ├── 2024-11-06-cockpit-328.md
│ ├── 2024-11-20-cockpit-329.md
│ ├── 2024-12-04-cockpit-330.md
│ ├── 2024-12-18-cockpit-331.md
│ ├── 2025-01-29-cockpit-332.md
│ ├── 2025-02-13-cockpit-333.md
│ ├── 2025-02-27-cockpit-334.md
│ ├── 2025-03-12-cockpit-335.md
│ ├── 2025-04-17-cockpit-337.md
│ ├── 2025-05-21-cockpit-339.md
│ ├── 2025-06-04-cockpit-340.md
│ ├── 2025-06-25-cockpit-341.md
│ ├── 2025-07-23-cockpit-343.md
│ ├── 2025-08-19-cockpit-345.md
│ ├── 2025-09-03-cockpit-346.md
│ ├── 2025-09-17-cockpit-347.md
│ ├── 2025-10-02-cockpit-348.md
│ ├── 2025-10-15-cockpit-349.md
│ ├── 2025-10-29-cockpit-350.md
│ ├── 2025-11-11-cockpit-351.md
│ ├── 2025-11-26-cockpit-352.md
│ ├── 2025-12-10-cockpit-353.md
│ ├── 2026-01-29-cockpit-355.md
│ ├── 2026-02-11-cockpit-356.md
│ ├── 2026-02-25-cockpit-357.md
│ ├── 2026-03-18-cockpit-358.md
│ └── 2026-04-08-cockpit-360.md
├── _scripts/
│ ├── container-create
│ ├── container-delete
│ ├── container-jekyll
│ ├── container-ruby
│ ├── container-run
│ ├── container-update-gems
│ ├── generate-release-notes
│ ├── update-browser-data.rb
│ └── update-external-docs.rb
├── applications.md
├── assets/
│ ├── default.scss
│ ├── lib/
│ │ ├── blog.scss
│ │ ├── browser-support.js
│ │ ├── minima-unset.scss
│ │ ├── nav.scss
│ │ ├── pagination.scss
│ │ ├── quicklinks.scss
│ │ ├── screenshot-gallery.js
│ │ ├── scrollbar-on.scss
│ │ ├── search.coffee
│ │ ├── search.scss
│ │ ├── stickyfooter.scss
│ │ └── stickyheader.scss
│ ├── main.js
│ ├── main.scss
│ ├── site/
│ │ ├── animation.scss
│ │ ├── applications.scss
│ │ ├── fonts.scss
│ │ ├── frontpage.scss
│ │ └── guide.scss
│ ├── site.scss
│ └── vendor/
│ ├── gridlex-vars.scss
│ ├── gridlex.scss
│ ├── jquery.js
│ └── string_score.coffee
├── blog/
│ ├── authors.html
│ ├── category/
│ │ ├── index.md
│ │ ├── linux.md
│ │ ├── release.md
│ │ └── tutorial.md
│ ├── feeds/
│ │ ├── all.atom.xml
│ │ ├── index.md
│ │ ├── linux.atom.xml
│ │ ├── release.atom.xml
│ │ └── tutorial.atom.xml
│ ├── index.html
│ └── tags.html
├── code-of-conduct.md
├── documentation.md
├── external/
│ ├── bots/
│ │ └── README.md
│ ├── source/
│ │ ├── HACKING.md
│ │ └── test/
│ │ └── README.md
│ └── wiki/
│ ├── Cockpit-Coding-Guidelines.md
│ ├── Contributing.md
│ ├── Demos-and-Talks.md
│ ├── Proxying-Cockpit-over-Apache-with-LetsEncrypt.md
│ ├── Proxying-Cockpit-over-NGINX.md
│ └── Workflow.md
├── faq.md
├── feed.xml
├── files/
│ ├── docker-info.tgz
│ ├── pinger.tgz
│ ├── starter-kit/
│ │ └── check-puppeteer.js
│ └── zoner.tgz
├── guide/
│ ├── 195/
│ │ ├── api-base1-patternfly.html
│ │ ├── api-base1.html
│ │ ├── api-cockpit.html
│ │ ├── api-console-html.html
│ │ ├── api-docker.html
│ │ ├── api-logs-html.html
│ │ ├── api-shell-html.html
│ │ ├── api-shell.html
│ │ ├── api-system.html
│ │ ├── api-terminal-html.html
│ │ ├── authentication.html
│ │ ├── cockpit-bridge.1.html
│ │ ├── cockpit-cache.html
│ │ ├── cockpit-channels.html
│ │ ├── cockpit-dbus.html
│ │ ├── cockpit-desktop.1.html
│ │ ├── cockpit-error.html
│ │ ├── cockpit-file.html
│ │ ├── cockpit-http.html
│ │ ├── cockpit-locale.html
│ │ ├── cockpit-location.html
│ │ ├── cockpit-login.html
│ │ ├── cockpit-manifest.html
│ │ ├── cockpit-manual.html
│ │ ├── cockpit-metrics.html
│ │ ├── cockpit-series-data.html
│ │ ├── cockpit-spawn.html
│ │ ├── cockpit-util.html
│ │ ├── cockpit-ws.8.html
│ │ ├── cockpit.conf.5.html
│ │ ├── development.html
│ │ ├── embedding.html
│ │ ├── feature-docker.html
│ │ ├── feature-firewall.html
│ │ ├── feature-journal.html
│ │ ├── feature-kubernetes.html
│ │ ├── feature-machines.html
│ │ ├── feature-networkmanager.html
│ │ ├── feature-ovirtvirtualmachines.html
│ │ ├── feature-packagekit.html
│ │ ├── feature-pcp.html
│ │ ├── feature-realmd.html
│ │ ├── feature-selinux.html
│ │ ├── feature-sosreport.html
│ │ ├── feature-storaged.html
│ │ ├── feature-subscription.html
│ │ ├── feature-systemd.html
│ │ ├── feature-terminal.html
│ │ ├── feature-tuned.html
│ │ ├── feature-users.html
│ │ ├── feature-virtualmachines.html
│ │ ├── features.html
│ │ ├── gtk-doc.css
│ │ ├── guide.html
│ │ ├── https.html
│ │ ├── index.html
│ │ ├── index.sgml
│ │ ├── listen.html
│ │ ├── packages.html
│ │ ├── privileges.html
│ │ ├── remotectl.8.html
│ │ ├── sso.html
│ │ ├── startup.html
│ │ ├── style.css
│ │ └── urls.html
│ ├── index.md
│ └── latest/
│ ├── api-base1.html
│ ├── api-cockpit.html
│ ├── api-logs-html.html
│ ├── api-shell-html.html
│ ├── api-shell.html
│ ├── api-system.html
│ ├── api-terminal-html.html
│ ├── authentication.html
│ ├── cert-authentication.html
│ ├── cockpit-bridge.1.html
│ ├── cockpit-cache.html
│ ├── cockpit-channels.html
│ ├── cockpit-dbus.html
│ ├── cockpit-desktop.1.html
│ ├── cockpit-error.html
│ ├── cockpit-file.html
│ ├── cockpit-http.html
│ ├── cockpit-locale.html
│ ├── cockpit-location.html
│ ├── cockpit-login.html
│ ├── cockpit-manifest.html
│ ├── cockpit-manual.html
│ ├── cockpit-metrics.html
│ ├── cockpit-series-data.html
│ ├── cockpit-spawn.html
│ ├── cockpit-tls.8.html
│ ├── cockpit-util.html
│ ├── cockpit-ws.8.html
│ ├── cockpit.1.html
│ ├── cockpit.conf.5.html
│ ├── development.html
│ ├── embedding.html
│ ├── feature-firewall.html
│ ├── feature-journal.html
│ ├── feature-machines.html
│ ├── feature-networkmanager.html
│ ├── feature-packagekit.html
│ ├── feature-pcp.html
│ ├── feature-realmd.html
│ ├── feature-selinux.html
│ ├── feature-sosreport.html
│ ├── feature-storaged.html
│ ├── feature-systemd.html
│ ├── feature-terminal.html
│ ├── feature-tuned.html
│ ├── feature-users.html
│ ├── features.html
│ ├── https.html
│ ├── index.html
│ ├── listen.html
│ ├── multi-host.html
│ ├── packages.html
│ ├── pam_ssh_add.8.html
│ ├── privileges.html
│ ├── sso.html
│ ├── startup.html
│ └── urls.html
├── ideals.md
├── index.md
├── manifest.json
├── privacy.md
├── running/
│ └── safari.md
├── running.md
├── search.json
└── search.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/update-externals.yml
================================================
name: Update external pages
on:
schedule:
- cron: '30 1 * * 4'
workflow_dispatch:
jobs:
update:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Clone repository
uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ruby-bundler
- name: Run update script
run: _scripts/update-external-docs.rb
- name: Create pull request
uses: peter-evans/create-pull-request@v3
with:
title: Update external docs
body: ''
commit-message: Update external docs
# do *not* use any suffix here -- if there is an open unreviewed PR,
# we want to force-push to that, not create a new one
branch: update-externals
================================================
FILE: .gitignore
================================================
_site
.gem
.sass-cache
.jekyll-metadata
*.pyc
*.sw?
*~
================================================
FILE: .travis.yml
================================================
language: ruby
rvm:
- 2.1
script: "bundle exec jekyll build"
================================================
FILE: .well-known/org.flathub.VerifiedApps.txt
================================================
d57c9cbd-223d-40cf-91f0-eda43b53cb8b
================================================
FILE: 404.md
================================================
---
title: Document Not Found
index: false
permalink: /404.html
---
{% include search.html %}
================================================
FILE: CNAME
================================================
cockpit-project.org
================================================
FILE: Gemfile
================================================
source "https://rubygems.org"
ruby RUBY_VERSION
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
# To upgrade, run `bundle update github-pages`.
gem "github-pages", group: :jekyll_plugins
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima"
# Ruby 3.x doesn't have webrick; so it needs to be manually added
# https://github.com/github/pages-gem/issues/752#issuecomment-764647862
gem "webrick"
# Squelch Jekyll run's faraday message by installing the gem it recommends
gem "faraday-retry"
# CSV is no longer part of Ruby; it needs to explicitly be included
gem "csv"
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2015, 2016 Garrett LeSage & Red Hat, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: README.md
================================================
# Cockpit Project Website
[The Cockpit project website](https://cockpit-project.org/) is based on Springboard, which is a MIT-licensed preconfigured build of Jekyll, used for starting up a site quickly.
This repository manages the content and presentation of the Cockpit project's website, including blog articles, release notes, the Cockpit guide, and screenshots.
For more details on Springboard, see [jekyll-springboard](https://github.com/garrett/jekyll-springboard).
## Get Started
### Using a Podman container
#### Setting up the container for the first time
0. Install Podman (if you haven't already; it's preinstalled with Silverblue and available elsewhere). Depending on your distribution, use `sudo dnf install podman` or `sudo apt install podman`
1. Create the container and install the dependencies with:
`_scripts/container-create`
#### Initial setup on Windows
Running the container is possible on Windows by running a podman container in [Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/install):
0. Install some Linux distribution (Ubuntu is the default): `wsl --install`
1. Clone the repository to your Linux filesystem `/home/`
2. You can now follow the instructions for Linux, inside your WSL2 Linux environment
#### Running the Jekyll server locally
Run the website locally using Jekyll with:
1. `_scripts/container-jekyll`
2. Visit
You can pass arguments to the `container-jekyll` command. To see everything available, pass `--help`.
The most useful arguments are:
- `-I` for incremental, which speeds up page compilation by recompiling only parts that have changed
- `-l` for livereload, which updates the browser when parts of the page change
So, for instant rendering of local changes, you'd run:
- `_scripts/container-jekyll -Il`
#### Updating when Gemfile / Gemfile.lock changes
1. `_scripts/container-update-gems`
#### Deleting the container
1. `_scripts/container-delete`
This removes the container and the local `.gem` directory.
### Installing locally without a container
In order to convert content into web pages, you will need to have Ruby, Bundler, and Jekyll installed.
1. Install Ruby & Bundler (as root):
_Note: To become root, you must either run `su` or `sudo -s`_
* **Fedora** / **RHEL** / **CentOS**:
```
dnf install -y rubygem-bundler ruby-devel libffi-devel make gcc gcc-c++ \
redhat-rpm-config zlib-devel libxml2-devel libxslt-devel tar nodejs
```
* **openSUSE**:
```
zypper install ruby2.1-rubygem-bundler ruby2.1-devel make gcc-c++ \
libxml2-devel libxslt-devel tar
```
* **Debian** / **Ubuntu**:
```
apt update && apt install bundler zlib1g-dev
```
* **macOS** / **OS X**:
_Note: First, you must install Mac developer tools. Then, run the following:_
```
gem update --system
gem install bundler
```
2. Configure bundler to work as a user:
```
bundle config path ~/.gem
```
3. Install gems (as user):
```
bundle install
```
4. Run Jekyll:
```
bundle exec jekyll server
```
## Work with the Site
As this site scaffolding is built on Jekyll, most all Jekyll documentation applies.
Useful references:
- [the official Jekyll documentation](http://jekyllrb.com/docs/home/)
- [CloudCannon Jekyll tutorials](https://learn.cloudcannon.com/)
### Release Notes
Release notes are in the form of a Markdown-formatted blog post, and are located in `_posts` with the date and URL slug as parts of the filename.
For more details, read [the section on blog posts](#blog-posts).
### Frontmatter
Frontmatter is embedded YAML, included in every document Jekyll processes. If the Frontmatter YAML is left out, Jekyll will not process the file, and will merely copy it out, unprocessed, to the output `_site` sub-directory.
Example Markdown file with Frontmatter (at the top):
```markdown
---
title: This is a blog post!
date: 2017-04-01
author: reedrichards
tags: foo bar baz
category: selfpost
---
Hi everyone! Welcome to my first blog post!
```
The author should be a nickname (ideally) and you should fill out information in the `_data/authors.yml` file.
Blog posts _need_ Frontmatter with most of the above fields. The fields for `tags` and `category` are optional. All other files that are to be processed by Jekyll should have at least the opening and closing Frontmatter lines (the two triple dashes `---`), and should _probably_ at least include the `title` as well.
### Markdown
Jekyll uses Markdown... specifically, GitHub-flavored Markdown via Kramdown.
You're able to use all Markdown conventions that GitHub adds on top (including tables, etc.) and also able to add in classes and IDs (among other things) thanks to Kramdown.
In addition, Jekyll uses what's called "Liquid" tags for simple logic and flow control. (Variables, if/then/else, loops, etc.) Liquid is supported not just in HTML and what Jekyll considers plaintext (JSON, XML, etc.), but also in Markdown.
If you would like to mix Markdown with a bit more advanced layout, you may want to consider capture blocks with Markdown rendering in Liquid tags. It looks like this (using a simple [Grlidlex](http://gridlex.devlint.fr/) grid):
```markdown
{% capture intro %}
## Intro title here
A list:
1. Item 1
2. Item 2
{% endcapture %}
{% capture details %}
Some other information to the side...
{% endcapture %}
{{ intro | markdownify }}
{{ details | markdownify }}
```
This allows you to mix-and-match content in pure Markdown with a bit of HTML for more advanced layout. Generally, you'll want to just keep eveything in pure Markdown and keep this technique for special pages (such as landing pages or anything that needs to be a little more complex).
### Liquid
[Liquid is a templating language](https://shopify.github.io/liquid/) originally made by Shopify and included in Jekyll by default.
There are basically two types of Liquid tags:
1. Objects, which look like `{{ objectname }}`
2. Tags look similar to objects, but instead of using double brackets, tags use percent signs. `{% tagname %}`
Both objects and tags take filters, which is written as a pipe followed by a directive. Filters can (sometimes optionally) take arguments as well, and can also be chained.
Simple example (the assignment is a bit silly here, but important to point out):
```liquid
{% if person %}
{% assign role = person.job_title | capitalize %}
Hello, {{ person.name }}!
How long have you worked at {{ role }}?
{% endif %}
```
Please note that whitespace shows up in files. This usually doesn't matter much for HTML, but can matter a lot for XML or JSON (especially if the generated file loops and becomes large). Workarounds include breaking up Liquid tags over multiple lines and using throw-away capture groups for assignments.
Space-reducing example (mainly useful for loops):
```liquid
{%
if foo
%}{{
foo.bar
| split: "::"
| join: ", "
| strip
}}{%
endif
%}
```
- [Official Liquid documentation](https://shopify.github.io/liquid/basics/introduction/)
- [Jekyll Cheat Sheet](https://learn.cloudcannon.com/jekyll-cheat-sheet/) — Jekyll-specific liquid tags
- [Liquid for Designers](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers) — an excellent overview on how to use Liquid tags in documents (both Markdown and HTML)
### Blog Posts
All blog posts belong in the `_posts` directory and must be formatted with the year, slug (usually a shortened title, used as part of the URL), and extension. This look like `2017-04-01-welcome-to-the-blog.md`
In addition, every blog post needs to have Frontmatter including the fields `title` and `date` (which should be the same as the filename's date) and should also include `author` to give the person credit (as well as to show up under the author on the authors page). In addition, a blog post may have `tags` and a `category`, but they're not necessary (only suggested).
To make this process easier we have `_scripts/generate-release-notes` which will take release notes from all our Cockpit repos and generate a blog post for you.
```bash
_scripts/generate-release-notes --user YourAuthorName
```
For all arguments check `--help` section
```bash
_scripts/generate-release-notes --help
```
#### Blog Authors
While not necessary, it is suggested to use nicknames for authors in the Frontmatter of blog posts.
There's a bit of logic in the blog post code that uses information from a `_data/authors.yml` file if it exists.
The format for an authors file looks like this:
```yaml
default:
name: Site Admin
example:
name: Ann Example
twitter: example
googleplus: somegoogleaccount
facebook: somefacebookaccount
gravatar: 5658ffccee7f0ebfda2b226238b1eb6e
description: |
This is an example author. To get a gravatar, do something like:
echo -n email@example.com | md5sum
reedrichards:
name: 'Reed "Fantastic" Richards'
twitter: MrFantastic__
description: |
Along with a few of my friends, I was blasted by cosmic radiation,
and now I'm super bendy and stretchy.
We fight crime.
```
In the above snippet, `default`, `example`, and `reedrichards` are nicknames that are used in the blog posts. All fields are optional, but you'll probably at least want a `name`.
Note that some characters need to be escaped in quote marks. In the above snipped, the word __"Fantastic"__ has quotes around it, so it has single quotes around the string. In most cases, you can leave out the quote strings, but if in doubt, go ahead and wrap the string in quotes.
### Navigation
Navigation is controlled by a `_data/navigation.yml` file, if it exists.
Simply add navigation info in the correct format and your site will take care of all the navigation needs for you, including highlighting the current page.
```yaml
- title: Home
url: "/"
- title: Software
url: /software/
- title: Standards
url: /standards/
- title: Search
url: /search/
```
Note that the URL to "/" is in quotes. This is necessary, due to YAML. The other `title`s and `url`s skip quoting and still work, however.
You can even get fancy and add sub-navigation if you want to (although you probably shouldn't, for usability reasons):
```yaml
- title: About
url: /about/
nav:
- title: Things
url: /about/things/
- title: FAQ
url: /about/faq/
nav:
- title: Test1
url: /test1
- title: Test2
url: /test2
```
### Customization
Site customization happens mainly in two places: `_config.yml` and `assets/site.scss` (or `assets/site.sass`). By default, the site CSS file doesn't exist, so you'll need to create it.
#### Config YAML
The `_config.yaml` file is pretty straightforward. It has a configuration by default that makes things work locally in a similar manner to how GitHub Pages works.
For more details on the `_config.yaml` file, [read Jekyll's documentation](https://jekyllrb.com/docs/configuration/).
#### Custom CSS
Creating the custom site CSS is easy. Run one of the following commands:
- If you're using **SCSS**: `cp assets/default.scss assets/site.scss`
- If you'd rather use **SASS**: `sass-convert assets/default.scss assets/site.sass`
_**Note**: If you convert the default file to SASS, the comments about turning on and off imports will be in the wrong place. Thankfully, editing the comments is an easy one-time fix._
Next step is to edit the site scss/sass file.
Inside the file, you'll see a bunch of variables at the top and a whole lot of imports underneith. The variables are pretty self explanitory, and let you quickly tweak the look of your site without having to actually edit CSS. Imports are there to include special styling for your site. A good set of defaults are turned on, but you can turn on and off several by uncommenting to turn on or commenting (or deleting) to turn off various styles.
Add any custom style specific to your site below all the imports.
#### Custom Logo
Drop your logo, preferably in SVG format, in the images directory. Call it `logo.svg` (or `logo.png` if you don't have it available in SVG). That's it! Done!
### Directory structure
Exporting rule of thumb: Directories and files starting with an underscore are seen by Jekyll (and some are vital in most Jekyll codebases, such as `_layouts`), but are not included in the output.
- **`_data`** — [Data files](http://jekyllrb.com/docs/datafiles/), in YAML (`yml`) or JSON format. Referenced in Liquid tags as `site.data.`_`FILENAME`_`.`_`DATA…`_.
- `navigation.yml` _(optional, but strongly recommended)_ — Navigation used across the site
- `authors.yml` _(optional, but recommended)_ — Information about blog authors
- **`_includes`** — Partials used for inclusion in documents and layouts, useful for abstracting complex HTML & Liquid logic, especially when it may be reused across the site. Includes are invoked as `{% include FILENAME.html key=value %}` (key and value are optional, and can be anything — value itself can be a variable or a string enclosed in quotes).
- **`_layouts`** — Templates for pages, especially HTML — most noteworthy layouts are `essential`, which is "bare-bones" HTML, and leaving `layout:` in Frontmatter blank for no layout at all (which is useful for JSON, XML, plain text, etc.).
- **`_posts`** — Blog posts go here, in Markdown format. Posts should contain basic Frontmatter (YAML at the top of the file). The filename matters, too: `YYYY-MM-DD-your-post-short-title-in-lowercase.md`. For more information, please consult [the official Jekyll documentation on blog posts](http://jekyllrb.com/docs/posts/).
- **`_site`** — Output of the Jekyll compilation process. This should not be checked into git (and is already in the `.gitignore`). On a clean git checkout, this directory does not exist.
- **`assets`** — This is the place for CSS, JavaScript, and fonts. CoffeScript (`.coffee`) and SASS (`.sass`, `.scss`) are supported as Jekyll will process them to CSS and JavaScript, provided they have a Frontmatter directive (which can be empty, as in two immediate lines of three dashes `---`) for top-level processed files (files which are included via SASS includes need not — and even should not — have Frontmatter).
- **`fonts`** — Any fonts served locally should go here.
- **`lib`** — Custom CSS & JavaScript.
- **`vendor`** — Included CSS & JavaScript from other projects (such as jQuery, etc.)
- **`blog`** — This is not the place for blog posts. It is, however, the place for files that make blogs work (the index file, author file, category files, feeds, etc.). In most cases, you don't need to touch what's here.
- **`guide`** — Cockpit-specific guides, dumped as HTML and included in the website.
- **`latest`** — The latest guide. This is what the other pages should link. Other guides are included for posterity under their version number.
- **`images`** — Images live here. These are the images blog posts and other pages usually link to.
- **`site`** — Site-specific images (various icons, logos, etc.) should be placed here.
- **`logo.svg`** — Logo file, in SVG. Using `logo.png` is also supported, but using an SVG is recommended.
- **`favicon.png`** — Large 512px square version of the site icon.
- **`favicon-small.png`** — Small 16px square version of the site icon.
## Deployment
### GitHub Pages
If you're deploying on GitHub using GitHub pages, all you need to do is:
1. Click the "Settings" tables
2. Scroll down to "GitHub Pages"
3. Select "Master branch" (if it's not already selected)
4. Click "Save"
The first time it sets up your pages may take several minutes. Please be patient.
_**Tip**: If your development model has others fork this repo into their own personal namespace, they can follow these same directions to have their very own staging version of the site to demonstrate their changes._
_**Note**: GitHub may complain about the CNAME _"The CNAME cockpit-project.org is already taken"_. This is just a warningverything is fine and it should still work._
### Custom Deployment
The detailed process of deploying is outside of the scope of this document.
A quick overview, however, would be to do something such as:
1. Run `bundle exec jekyll build`
2. Sync the results of the `_site` directory to your webhost via some means (rsync, sftp, etc.)
================================================
FILE: _config.yml
================================================
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely edit after that. If you find
# yourself editing these this file very often, consider using Jekyll's data files
# feature for the data you need to update frequently.
#
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'jekyll serve'. If you change this file, please restart the server process.
# Site settings
# These are used to personalize your new site. If you look in the HTML files,
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.
title: Cockpit Project
#email: your-email@domain.com
description: > # this means to ignore newlines until "baseurl:"
Cockpit makes it easy to administer your Linux servers via a web browser.
#baseurl: "/cockpit" # the subpath of your site, e.g. /blog
#url: "http://example.com" # the base hostname & protocol for your site
#twitter_username: jekyllrb
#github_username: jekyll
#repository: cockpit/cockpit-website
#permalink: blog/:year/:month/:slug/
permalink: blog/:slug.html
paginate: 12
paginate_path: "/blog/page=:num"
# Publish articles with a date/time set in the future
future: true
# Ignore certain phrases from the blog listing (comma-separated)
blog_ignore: "We release regularly,Here are the release notes,Try it out,From the future,Note:,Cockpit is a user interface for servers"
# Summarize to blog content to headings?
blog_summary_headings: true
# Truncate blog summaries to this length
blog_summary_length: 50
lang: en
logo: /images/site/cockpit-logo.svg
color: "#3e5375"
# Build settings
markdown: kramdown
theme: minima
# YAML defaults for pages
defaults:
-
scope:
path: ""
values:
layout: "page"
-
scope:
path: _posts
values:
layout: "post"
# GitHub builds with safe mode, so enable it for previewing locally too
safe: true
excerpt_separator:
# Don't compile these files/dirs into the website
exclude:
- Gemfile
- Gemfile.lock
- README.md
- bin
- LICENSE
include:
- _stylesheets
- _javascript
- assets/site.js
- .well-known
sass:
sass_dir: assets/
style: compressed
# Let the following Jekyll plugins work in safemode
# (mimicking GitHub's config)
plugins:
- jekyll-redirect-from
- jekyll-sass-converter
- jemoji
- jekyll-mentions
- jekyll-sitemap
- jekyll-feed
- jekyll-gist
- jekyll-paginate
- jekyll-coffeescript
- jekyll-seo-tag
- jekyll-github-metadata
whitelist:
- jekyll-redirect-from
- jekyll-sass-converter
- jemoji
- jekyll-mentions
- jekyll-sitemap
- jekyll-feed
- jekyll-gist
- jekyll-paginate
- jekyll-coffeescript
- jekyll-seo-tag
- jekyll-github-metadata
================================================
FILE: _data/applications.yml
================================================
# Entries here are displayed under their respective maintainer field.
# If let unset it will be seen as third-party.
# Available options are seen in maintainers.yml and for example be
# - cockpit
# - redhat
# - suse
# The Cockpit group is special, it inherits source, issues, license for the `source: cockpit` entries
cockpit:
source: https://github.com/cockpit-project/cockpit/
issues: https://github.com/cockpit-project/cockpit/issues
license: LGPL 2.1
comment: |
This is the default template that "source: cockpit" pulls from, so source, issues, and license don't need to be filled out everywhere.
storaged:
title: Storage
package: cockpit-storaged
source: cockpit
maintainer: cockpit
description: |
Manage your system's storage. Supports local partitions, encryption, NFS, RAID, iSCSI, and more.
networkmanager:
title: Network
package: cockpit-networkmanager
source: cockpit
maintainer: cockpit
description: |
Manage your network interfaces and edit your firewall with ease.
packagekit:
title: Software Updates (PackageKit)
package: cockpit-packagekit
source: cockpit
maintainer: cockpit
description: |
See and apply updates to your system. Supports RPM and DEB based systems through PackageKit.
ostree:
title: Software Updates (OSTree)
package: cockpit-ostree
maintainer: cockpit
source: https://github.com/cockpit-project/cockpit-ostree
issues: https://github.com/cockpit-project/cockpit-ostree/issues
license: LGPL 2.1
description: |
Upgrade OSTree-based systems.
machines:
title: Virtual Machines
package: cockpit-machines
source: https://github.com/cockpit-project/cockpit-machines
issues: https://github.com/cockpit-project/cockpit-machines/issues
license: LGPL 2.1
maintainer: cockpit
description: |
Create, run, and manage virtual machines.
podman:
title: Podman Containers
package: cockpit-podman
source: https://github.com/cockpit-project/cockpit-podman
issues: https://github.com/cockpit-project/cockpit-podman/issues
license: LGPL 2.1
maintainer: cockpit
description: |
Download, use, and manage containers. (Podman replaces Docker.)
selinux:
title: SELinux
package: cockpit-selinux
source: cockpit
maintainer: cockpit
description: |
View and manage SELinux exceptions. Instantly apply overrides and export your rules to apply to other systems.
kdump:
title: Kernel Dump
package: cockpit-kdump
source: cockpit
maintainer: cockpit
description: |
Debugging the Linux kernel? This `kdump` add-on helps with catching stack traces.
image-builder:
title: Cockpit Image Builder
package: cockpit-image-builder
source: https://github.com/osbuild/image-builder-frontend
issues: https://github.com/osbuild/image-builder-frontend/issues
maintainer: redhat
description: |
On-premise frontend for image building. It allows users to create, manage, and compose custom operating system images, with images stored locally.
sosreport:
title: Diagnostic Reports
package: cockpit-sosreport
source: cockpit
maintainer: cockpit
description: |
Collect system configuration and diagnostic information from systems, to help with diagnosing problems.
files:
title: Cockpit Files
package: cockpit-files
source: https://github.com/cockpit-project/cockpit-files
issues: https://github.com/cockpit-project/cockpit-files/issues
maintainer: cockpit
description: |
A featureful file browser.
389-ds:
title: 389 Directory Server
package: cockpit-389-ds
homepage: https://directory.fedoraproject.org/docs/389ds/download.html
source:
maintainer: redhat
description: |
A web-based interface to the enterprise-class Open Source LDAP server for Linux.
session-recording:
title: Session Recording
package: cockpit-session-recording
source: https://github.com/Scribery/cockpit-session-recording
issues: https://github.com/Scribery/cockpit-session-recording/issues
maintainer: redhat
description: |
Session recording configuration and playback based on [Scribery](https://scribery.github.io/), to record a user's actions for watching later.
subscriptions:
title: Subscription Manager
package: subscription-manager-cockpit
source: https://github.com/cockpit-project/subscription-manager-cockpit
issues: https://github.com/cockpit-project/subscription-manager-cockpit/issues
maintainer: redhat
description: |
Manage subscriptions to Red Hat Enterprise Linux.
ha-cluster:
title: High Availability Cluster Management
package: cockpit-ha-cluster
source: https://github.com/ClusterLabs/pcs-web-ui
maintainer: redhat
description: |
Manage Pacemaker based clusters with [PCS](https://github.com/ClusterLabs/pcs).
# leapp:
# package: cockpit-leap
# title: Leapp
# homepage: https://leapp.readthedocs.io/en/latest/
# source: https://github.com/oamg/leapp
# license: Apache 2
# issues: https://github.com/oamg/leapp/issues
# description: |
# Leapp is an OS and application modernization framework. It is used to upgrade Red Hat Enterprise Linux. (For example: Upgrading RHEL 7 to 8.)
zfs:
title: ZFS Manager
package: cockpit-zfs
source: https://github.com/45Drives/cockpit-zfs
issues: https://github.com/45Drives/cockpit-zfs/issues
prerelease: false
description: |
Interactive ZFS on Linux administration.
file-sharing:
title: File Sharing
source: https://github.com/45Drives/cockpit-file-sharing
issues: https://github.com/45Drives/cockpit-file-sharing/issues
prerelease: false
description: |
Easily manage Samba and NFS file sharing.
navigator:
title: Navigator
source: https://github.com/45Drives/cockpit-navigator
issues: https://github.com/45Drives/cockpit-navigator/issues
prerelease: false
description: |
A featureful file browser.
benchmark:
title: Benchmark
source: https://github.com/45Drives/cockpit-benchmark
issues: https://github.com/45Drives/cockpit-benchmark/issues
prerelease: false
description: |
A storage benchmark utility.
tukit:
title: Software Updates (transactional-update from OpenSUSE with tukit)
package: cockpit-tukit
maintainer: suse
source: https://github.com/openSUSE/cockpit-tukit
issues: https://github.com/openSUSE/cockpit-tukit/issues
license: LGPL 2.1
description: |
Upgrade systems based on transactional-update from OpenSUSE with tukit.
sensors:
title: Sensors
package: cockpit-sensors
source: https://github.com/ocristopfer/cockpit-sensors
issues: https://github.com/ocristopfer/cockpit-sensors/issues
license: LGPL 2.1
description: |
List all available sensors on the machine provided by `lm-sensors`.
tailscale:
title: Tailscale
package: cockpit-tailscale
prerelease: true
source: https://github.com/spotsnel/cockpit-tailscale
issues: https://github.com/spotsnel/cockpit-tailscale/issues
license: LGPL 2.1
description: |
Manage Tailscale.
headscale:
title: Headscale
package: cockpit-headscale
prerelease: true
source: https://github.com/spotsnel/cockpit-headscale
issues: https://github.com/spotsnel/cockpit-headscale/issues
license: LGPL 2.1
description: |
Manage Headscale coordination server.
cloudflared:
title: Cloudflare tunnels
package: cockpit-cloudflared
prerelease: true
source: https://github.com/spotsnel/cockpit-cloudflared
issues: https://github.com/spotsnel/cockpit-cloudflared/issues
license: LGPL 2.1
description: |
Show Cloudflare tunnel state.
repos:
title: Manage Repositories
package: cockpit-repos
maintainer: suse
source: https://github.com/openSUSE/cockpit-repos
issues: https://github.com/openSUSE/cockpit-repos/issues
license: LGPL 2.1
description: |
Manage package manager repositories on SUSE/openSUSE systems
subscriptions-suse:
title: Subscription Manager
package: cockpit-subscriptions
maintainer: suse
source: https://github.com/openSUSE/cockpit-subscriptions
issues: https://github.com/openSUSE/cockpit-subscriptions/issues
license: LGPL 2.1
description: |
Manage your SUSE Linux Enterprise subscriptions.
packages:
title: Packages
package: cockpit-packages
maintainer: suse
source: https://github.com/openSUSE/cockpit-packages
issues: https://github.com/openSUSE/cockpit-packages/issues
license: LGPL 2.1
description: |
Install/Uninstall packages.
bootloader:
title: Bootloader
prerelease: true
package: cockpit-bootloader
maintainer: suse
source: https://github.com/openSUSE/cockpit-bootloader
issues: https://github.com/openSUSE/cockpit-bootloader/issues
license: LGPL 2.1
description: |
Manage bootloader configurations.
dockermanager:
title: Docker Manager
prerelease: true
source: https://github.com/chrisjbawden/cockpit-dockermanager
issues: https://github.com/chrisjbawden/cockpit-dockermanager/issues
description: |
A lightweight interface for simple management of docker containers.
backblaze-b2:
title: Backblaze B2 backup
prerelease: false
source: https://github.com/rabol/backblaze-b2
issues: https://github.com/rabol/backblaze-b2/issues
description: |
A lightweight interface for simple back up to Backblaze B2.
ros2-diagnostics:
title: ROS 2 Diagnostics
package: cockpit-ros2-diagnostics
source: https://github.com/clearpathrobotics/cockpit-ros2-diagnostics
issues: https://github.com/clearpathrobotics/cockpit-ros2-diagnostics/issues
license: LGPL 2.1
description: |
View ROS 2 diagnostics.
package-manager:
title: Package Manager
source: https://github.com/hatlabs/cockpit-package-manager
issues: https://github.com/hatlabs/cockpit-package-manager/issues
license: LGPL 2.1
description: |
DEB (APT) / RPM browsing and installation tool using PackageKit.
port-forward:
title: Port Forward Manager
source: https://github.com/kuznetz/cockpit-port-forward
issues: https://github.com/kuznetz/cockpit-port-forward/issues
license: MIT
description: |
Manage firewalld port forwarding rules and masquerading.
sudo-manager:
title: Sudo Manager
source: https://github.com/josephoaks/Cockpit-SUDO-Manager
issues: https://github.com/josephoaks/Cockpit-SUDO-Manager/issues
license: Apache-2.0
description: |
Manage sudo policy on Linux systems in a structured, auditable, and
policy-driven way. Developed for SUSE Linux.
pacman:
title: Pacman Package Manager
package: cockpit-pacman
source: https://github.com/pfeifferj/cockpit-pacman
issues: https://github.com/pfeifferj/cockpit-pacman/issues
license: GPL-3.0
description: |
Arch Linux package management using direct alpm.rs integration.
download-superstation:
title: Download Superstation
package: cockpit-download-superstation
source: https://github.com/dl-romero/cockpit-download-superstation
issues: https://github.com/dl-romero/cockpit-download-superstation/issues
license: MIT
prerelease: false
description: |
Torrent management backed by libtorrent. Add torrents via .torrent file or
magnet link, set per-torrent and per-file download priorities, and monitor
speeds, peers, and trackers in real time. Includes one-click Start/Stop for
the Download Superstation systemd service.
================================================
FILE: _data/authors.yml
================================================
default:
name: Cockpit Team
example:
name: Ann Example
twitter: example
googleplus: somegoogleaccount
facebook: somefacebookaccount
# gravatar:
description: |
This is an example author. To get a gravatar, do something like:
echo -n email@example.com | md5sum
dperpeet:
name: Dominik Perpeet
jelle:
name: Jelle van der Waa
lars:
name: Lars Karlitski
pitti:
name: Martin Pitt
stef:
name: Stef Walter
garrett:
name: Garrett LeSage
gravatar: ee31aa48c51297eb062133b15eaff702
description: |
Garrett has been a designer in the FOSS (free and open source software)
world since the late 90s and works at Red Hat in the Cockpit team.
mvo:
name: Marius Vollmer
lis:
name: Allison Karlitskaya
marusak:
name: Matej Marušák
kkoukiou:
name: Katerina Koukiou
tmatus:
name: Tomáš Matuš
Venefilyn:
name: Freya Gustavsson
description: |
The one who touches codebases everywhere and lead with smiles.
================================================
FILE: _data/browser_support.yml
================================================
---
comment: Generated by _scripts/update-browser-data.rb
browsers:
edge: '18'
firefox: '58'
chrome: '63'
safari: '11.1'
opera: '50'
ios_saf: '11.3'
rules:
websockets:
req:
- WebSocket
- window
xhr2:
req:
- XMLHttpRequest
- window
namevalue-storage:
req:
- sessionStorage
- window
json:
req:
- JSON
- window
es5:
req:
- defineProperty
- Object
console-basic:
req:
- console
- window
history:
req:
- pushState
- window.history
textcontent:
req:
- textContent
- document
css-variables:
req:
- CSS
- window
css-supports-api:
css: selector(test)
promise-finally:
req:
- finally
- Promise.prototype
mdn-javascript_builtins_string_replaceall:
req:
- replaceAll
- String.prototype
flexbox:
css:
- display
- flex
css-grid:
css:
- display
- grid
mdn-css_selectors_where:
css: selector(:is(*):where(*))
================================================
FILE: _data/browsers.yml
================================================
- firefox:
vendor: Mozilla
name: Firefox
version: 82
- chrome:
vendor: Google
name: Chrome
version: 88
- edge:
vendor: Microsoft
name: Edge
version: 88
- safari:
vendor: Apple
os: iOS
name: Safari
version: 14.5
================================================
FILE: _data/distros.yml
================================================
- fedora:
name: Fedora
tested: true
included: true
- rhel:
name: Red Hat Enterprise Linux
tested: true
included: true
- coreos:
name: Fedora CoreOS
tested: true
included: true
- centos:
name: CentOS
tested: true
included: true
- debian:
name: Debian GNU/Linux
tested: true
included: true
- archlinux:
name: Arch Linux
tested: true
included: true
- ubuntu:
name: Ubuntu
tested: true
included: true
- tumbleweed:
name: openSUSE Tumbleweed
included: true
- slemicro:
name: SUSE Linux Enterprise Micro
included: true
================================================
FILE: _data/maintainers.yml
================================================
# Entries on the page show up in the order listed here
# - cockpit (official) first
# - redhat (unofficial; non-team RH developed) second
# - suse (unofficial; developed and maintained by suse)
# - nil/not set (third party) last
cockpit:
title: Cockpit
redhat:
title: Red Hat
suse:
title: SUSE
================================================
FILE: _data/navigation.yml
================================================
- title: Home
url: "/"
- title: Install
url: /running.html
- title: Documentation
url: /documentation.html
- title: Contribute
url: /external/wiki/Contributing.html
- title: Blog
url: /blog/
- title: Search
url: /search.html
================================================
FILE: _includes/apps.html
================================================
{% capture apps_html %}
{% assign default = site.data.applications.cockpit %}
{% assign href = '#' %}
{% assign https = '>https://' %}
{% assign gt = '>' %}
{% for app in include.apps %}
{% assign slug = app.package %}
{% comment %} Title is mandatory for output {% endcomment %}
{% unless app.title %}{% continue %}{% endunless %}
{% if app.source == 'cockpit'
%}{% comment %}
Graft in Cockpit's defaults
{% endcomment %}{%
assign app_source = default.source
%}{%
assign app_issues = default.issues
%}{%
assign app_license = default.license
%}{% else %}{%
assign app_source = app.source
%}{%
assign app_issues = app.issues
%}{%
assign app_license = app.license
%}{% endif %}
{% assign link_url = app.homepage | default: app_source %}
{{ app.title }}
{% if app.official %}
official
{% endif %}
{% if app.prerelease %}
pre-release
{% endif %}
{{ app.description | markdownify }}
{% else %}
ERROR: You must include a Twitter ID.
{% endif %}
================================================
FILE: _layouts/default.html
================================================
---
layout: essential
---
{% include page_header.html %}
{{ content }}
================================================
FILE: _layouts/post.html
================================================
---
layout: default
---
{% include post.html author_card=true %}
================================================
FILE: _posts/2014-02-13-introducing-cockpit.md
================================================
---
title: Introducing Cockpit
date: 2014-02-13 12:46
tags: technical
slug: introducing-cockpit
category: release
---
Gave a [talk at DevConf][] in Brno about the project a bunch of us have
been working on: [Cockpit][]. It's a UI for Linux Servers. Currently in
the prototype stage...

Hopefully there'll be a video of the talk available soon. You can try
out the Cockpit prototype in Fedora like so:
```text
# yum install --enablerepo=updates-testing cockpit
# setenforce 0 # issue 200
# systemctl enable cockpit-ws.socket
$ xdg-open http://localhost:21064
**Don't run this on a system you care about (yet).** Sorry about the
```
certificate warning. Groan ... I know ... working on that.
Needless to say I'm excited about where this is going...
[talk at DevConf]: http://thewalter.net/stef/misc/cockpit-devconf-2014-talk.pdf
[Cockpit]: https://cockpit-project.org/
================================================
FILE: _posts/2014-04-22-cockpit-has-a-terminal.md
================================================
---
title: Cockpit has a terminal
date: 2014-04-22 16:06
tags: cockpit technical
slug: cockpit-has-terminal
category: release
---
[Cockpit][] 0.5 now has a nice terminal in a web browser. AKA
[term.js][] is awesome.

[Cockpit]: https://cockpit-project.org/
[term.js]: https://github.com/chjj/term.js/
================================================
FILE: _posts/2014-04-25-cockpit-does-docker.md
================================================
---
title: Cockpit does Docker
date: 2014-04-25 19:39
tags: cockpit technical
slug: cockpit-does-docker
category: release
---
Here's a short video showing how Cockpit manages Docker containers.
Cockpit is in RHEL branding here, but it's basically the same thing as
you get from [cockpit-project.org][]
This UI is going to be refined somewhat, but it's nice to see things
coming together.
[cockpit-project.org]: https://cockpit-project.org/
================================================
FILE: _posts/2014-06-20-cockpit-simple-networking-configuration.md
================================================
---
title: Cockpit Simple Networking Configuration
date: '2014-06-20'
category: release
tags: cockpit network-manager linux
---
Cockpit 0.11 now has an all new simple Networking UI. Still some work to do, but it's
coming together. You can see it here:

================================================
FILE: _posts/2014-06-24-cockpit-has-docker-pull-support.md
================================================
---
title: Cockpit has Docker pull support
date: '2014-06-24'
category: release
tags: cockpit docker
---
Cockpit 0.12 now has support for pulling Docker images from the
[Docker registry](https://registry.hub.docker.com/).

Unfortunately Docker doesn't have support for cancelling the pull of an image. So that
sort of hampers the UI a bit. At least for now.
================================================
FILE: _posts/2014-11-04-cockpit-multi-server-dashboard.md
================================================
---
title: Cockpit Multi-Server Dashboard
date: '2014-11-04'
category: release
tags: cockpit kubernetes
---
Andreas and Marius have been working on implementing a new multi-server dash
board for Cockpit. It's really looking great.
The goal here is that the dash board should work with either one server or several,
and give you an overview of what's going on. Problems that require attention should
be highlighted clearly. You should be able to click in spots to jump either to a
server, a sub-system, a service/container/pod or to the source of a problem.
The graphs will be correlated across multiple machines, and draggable. Hopefully down
road we'll be using a source of data like [PCP](http://www.performancecopilot.org/) to
gather the data more consistently. Problems will show up on the graphs as clickable.
You can add and remove servers, and we want to show the state of important services/server
applications/pods on those servers.
Once the basic code has landed, it would be good to tie this into Kubernetes as well.
If running a [Kubernetes](https://github.com/GoogleCloudPlatform/kubernetes) cluster,
and Cockpit is loaded on the master, we should use information from Kubernetes to
populate the dashboard.
Here are some wireframes, click to expand:

[Pull request is here ](https://github.com/cockpit-project/cockpit/pull/1455)
================================================
FILE: _posts/2014-11-04-dbus-powerful-ipc.md
================================================
---
title: DBus is powerful IPC
date: '2014-11-04'
category: linux
tags: dbus linux
slug: d-bus-is-powerful-ipc
---
D-Bus is powerful IPC Cockpit is heavily built around DBus. We send DBus over our
[WebSocket transport](https://github.com/cockpit-project/cockpit/blob/master/doc/protocol.md),
and marshal them in JSON.
DBus is powerful, with lots of capabilities. Not all projects use all of these, but so many of
these capabilities are what allow Cockpit to implement its UI.
* Method Call Transactions
* Object Oriented
* Efficient Signalling
* Properties and notifications
* Race free watching of entire Object trees for changes
* Broadcasting
* Discovery
* Introspection
* Policy
* Activation
* Synchronization
* Type-safe Marshalling
* Caller Credentials
* Security
* Debug Monitoring
* File Descriptor Passing
* Language agnostic
* Network transparency
* No trust required
* High-level error concept
* Adhoc type definitions
Lennart goes into these further [in a kdbus talk](http://youtu.be/HPbQzm_iz_k?t=2m6s), as well as some of the weaknesses of DBus.
================================================
FILE: _posts/2014-11-13-cockpit-plugin-tutorial.md
================================================
---
title: Creating Plugins for the Cockpit User Interface
author: stef
date: '2020-05-04'
category: tutorial
tags: cockpit linux
slug: creating-plugins-for-the-cockpit-user-interface
---
_**Note**: This post was updated in Aug 2022 to adjust to reflect Cockpit UI and development best practices._
{:.note}
[Cockpit is a web-based graphical interface for servers](https://cockpit-project.org). You can easily add your own custom pages to the navigation.

For this tutorial you need to [install your distribution's cockpit packages](../running.html) or [build it from git](https://github.com/cockpit-project/cockpit/blob/master/HACKING.md).
We'll make a package called *pinger* that checks whether your server has network connectivity to the Internet by pinging another host. It's simple and not too fancy. The package will spawn a process on the server to do all the work.
This example package is already [included in the Cockpit sources](https://github.com/cockpit-project/cockpit/tree/master/examples/pinger). You can look it over and modify it.
To start, let's get ready for development by launching a terminal on your local computer.
First, create a project directory and download the example:
```sh
mkdir pinger; cd pinger
curl -O https://raw.githubusercontent.com/cockpit-project/cockpit/master/examples/pinger/manifest.json
curl -O https://raw.githubusercontent.com/cockpit-project/cockpit/master/examples/pinger/ping.html
curl -O https://raw.githubusercontent.com/cockpit-project/cockpit/master/examples/pinger/pinger.js
```
Cockpit pages — more specifically their HTML and Javascript files — live in [package directories](https://cockpit-project.org/guide/latest/packages.html). In the package directory there's also a [manifest.json](https://cockpit-project.org/guide/latest/packages.html#package-manifest) file which tells Cockpit about the package. The `pinger` directory above is such a package. Its `manifest.json` file looks like this:
```text
{
"version": 0,
"tools": {
"pinger": {
"label": "Pinger",
"path": "ping.html"
}
}
}
```
The manifest above has a `"tools"` subsection, which means that it will appear in the lower section of the menu (see the [manifest documentation](https://cockpit-project.org/guide/latest/packages.html#package-manifest) for details). Each tool is listed in the menu by Cockpit. The `"path"` is the name of the HTML file that implements the tool, and the `"label"` is the text to show in the menu.
You'll notice that we haven't told Cockpit about how to find the package yet. To do so you either copy or symlink the package into one of two places:
* `~/.local/share/cockpit` in your home directory. It's used for user specific packages and ones that you're developing. You can edit these on the fly and refresh your browser to see changes.
* `/usr/share/cockpit` is the location for installed packages available to all users of a system. Changing files in this path requires administrator ("root") privileges. These should not be changed while Cockpit is running.
Since we're going to be actively editing this package, let's symlink it into the first location, in your home directory.
```sh
mkdir -p ~/.local/share/cockpit
ln -snf $PWD ~/.local/share/cockpit/pinger
```
To list the Cockpit packages which are installed, use the following command:
```text
$ cockpit-bridge --packages
...
pinger: /home/.../.local/share/cockpit/pinger
...
```
You should see `pinger` listed among all the active modules, like the above example.
Log into Cockpit on this machine with your current user name, as the package is installed in your home directory. (If you're already logged in to Cockpit with your user account, you can simply reload your browser.)
You should now see a new item:

The pinger tool itself looks like this:

Lets take a look at the pinger HTML, and see how it works.
```html
Pinger
```
Included in the `` block: `cockpit.js` is the basic API for interacting with the system, as well as Cockpit itself. You can find [detailed documentation in the Cockpit guide](https://cockpit-project.org/guide/latest/api-base1.html).
The HTML is pretty basic. It defines a little form with a field to type an address, a button to click to start pinging, and an area to present output and results.
The logic lives in `pinger.js`, shown in full here:
```js
const address = document.getElementById("address");
const output = document.getElementById("output");
const result = document.getElementById("result");
const button = document.getElementById("ping");
function ping_run() {
cockpit.spawn(["ping", "-c", "4", address.value])
.stream(ping_output)
.then(ping_success)
.catch(ping_fail);
result.innerHTML = "";
output.innerHTML = "";
}
function ping_success() {
result.style.color = "green";
result.innerHTML = "success";
}
function ping_fail() {
result.style.color = "red";
result.innerHTML = "fail";
}
function ping_output(data) {
output.append(document.createTextNode(data));
}
// Connect the button to starting the "ping" process
button.addEventListener("click", ping_run);
// Send a 'init' message. This tells integration tests that we are ready to go
cockpit.transport.wait(function() { });
```
First we get a bunch of variables pointing to the HTML elements we want to interact with. Next we attach a handler to the *Ping* button so that the `ping_run()` function is called when it is clicked.
```js
function ping_run() {
}
...
button.addEventListener("click", ping_run);
```
The `ping_run()` function is where the magic happens. [cockpit.spawn](https://cockpit-project.org/guide/latest/cockpit-spawn.html) lets you spawn processes on the server and interact with them via `stdin` and `stdout`.
Here we spawn the `ping` command with some arguments:
```js
cockpit.spawn(["ping", "-c", "4", address.val()])
```
In a web browser you cannot block and wait until a method call completes. Anything that doesn't happen instantaneously gets its results reported back to you by [means of callback handlers](https://cockpit-project.org/guide/latest/cockpit-spawn.html#cockpit-spawn-then).
JavaScript has a standard interface called a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). You add handlers by calling the `.then()` or `.catch()` methods and registering callbacks (Note: historically these have been called `.done()` and `.fail()`, but these should not be used any more in new code.) The `cockpit.spawn` specific `.stream()` handler registers a callback to be invoked whenever the process produces output.
```js
.stream(ping_output)
.then(ping_success)
.catch(ping_fail);
}
```
The `ping_success()` and `ping_fail()` and `ping_output()` update the display as you would expect.
_**Warning**: Don't start long-running, uninterruptible processes in this naïve way. Browser tabs are easily closed, network connections get severed, laptops suspend, and so on. Take care to use a mechanism like [systemd-run](https://www.freedesktop.org/software/systemd/man/systemd-run.html) (or similar) for processes that should not be interrupted, such as installation procedures._
{:.warning}
This should be enough to get you started with your first useful (but admittedly basic) Cockpit page! Please see the [Contributing](https://cockpit-project.org/external/wiki/Contributing.html) page for more documentation on where to grow from here.
================================================
FILE: _posts/2014-11-13-dbus-basics.md
================================================
---
title: Using DBus from Javascript in Cockpit
date: '2014-11-13'
category: tutorial
tags: cockpit linux
slug: using-dbus-from-javascript-in-cockpit
---
*Note: This post has been updated for changes in Cockpit 0.90 and later.*
{:.note}
[Cockpit is a user interface for servers](https://cockpit-project.org). As we covered in the [last tutorial](https://cockpit-project.org/blog/creating-plugins-for-the-cockpit-user-interface.html) you can add user interface component to Cockpit, and build your own parts of the Server UI.
Much of Cockpit interacts with the server using DBus. We have a powerful yet simple API for doing that, and you should use DBus too when building your own Cockpit user interfaces. For this tutorial you'll need at least Cockpit 0.41. A few tweaks landed in that release to solve a couple rough edges we had in our DBus support. You can install it in [Fedora 21](https://lists.fedorahosted.org/pipermail/cockpit-devel/2014-November/000196.html) or [build it from git](https://github.com/cockpit-project/cockpit/blob/master/HACKING.md).
Here we'll make a package called *zoner* which lets you set the time zone of your server. We use the systemd [timedated DBus API](http://www.freedesktop.org/wiki/Software/systemd/timedated/) to do actually switch time zones.
I've prepared the [zoner package here](https://cockpit-project.org/files/zoner.tgz). It's just two files. To download them and extract to your current directory, and installs it as a Cockpit package:
```text
$ wget https://cockpit-project.org/files/zoner.tgz -O - | tar -xzf -
$ cd zoner/
$ mkdir -p ~/.local/share/cockpit
$ ln -snf $PWD ~/.local/share/cockpit/zoner
```
Previously we [talked about](https://cockpit-project.org/blog/creating-plugins-for-the-cockpit-user-interface.html) how packages are installed, and what `manifest.json` does so I won't repeat myself here. But to make sure the above worked correctly, you can run the following command. You should see `zoner` listed in the output:
```text
$ cockpit-bridge --packages
...
zoner: .../.local/share/cockpit/zoner
...
```
If you're logged into Cockpit on this machine, first log out. And log in again. Make sure to log into Cockpit with your current user name, since you installed the package in your home directory. You should now see a new item in the *Tools* menu called *Time Zone*:

Try it out by typing `Australia/Tasmania` in the box, and clicking *Change*. You should see that the *Time Zone* changes. You can verify this by typing the following on the same server in a terminal:
```text
$ date
Sa 15. Nov 01:48:01 AEDT 2014
```
Try typing an invalid timezone like `blah`, and you'll see an error message displayed. Now try changing the timezone from the terminal using the `timedatectl` command while you have Cockpit open displaying your *Time Zone* screen:
```text
$ sudo timedatectl set-timezone UTC
```
You should see your timezone on your screen update immediately to reflect the new state of the server. So how does this work? Lets take a look at the zoner HTML:
```html
Time Zone
Time Zone
New Zone
```
First we include `jquery.js` and `cockpit.js`. `cockpit.js` defines the basic API for interacting with the system, as well as Cockpit itself. You can find [detailed documentation here](https://cockpit-project.org/guide/latest/api-cockpit.html).
```html
```
We also include the cockpit.css file to make sure the look of our tool matches that of Cockpit. The HTML is pretty basic, defining a little form where the current timezone is shown, a field to type an address, a button to click change to a new one, and an area to show errors.
In the javascript code, first we get a bunch of variables pointing to the HTML elements we want to interact with.
Next we attach a handler to the *Change* button so that the `change_zone()` function is called when it is clicked.
```javascript
$("#change").on("click", change_zone);
```
Next we connect to the [timedated](http://www.freedesktop.org/wiki/Software/systemd/timedated/) DBus service using the [`cockpit.dbus()`](https://cockpit-project.org/guide/latest/api-cockpit.html#latest-dbus-dbus) function:
```javascript
var service = cockpit.dbus('org.freedesktop.timedate1');
```
Now we make a proxy which represents a particular DBus interface containing methods and properties. Simple services have only one interface. When more than one interface or instance of that interface is present, there are additional arguments to the [`.proxy()`](https://cockpit-project.org/guide/latest/api-cockpit.html#latest-dbus-proxy) method that you can specify.
```javascript
var timedate = service.proxy();
```
Each interface proxy has a [`"changed"`](https://cockpit-project.org/guide/latest/api-cockpit.html#latest-dbus-proxy-onchanged) event we can connect to. When properties on the proxy change, or are received for the first time, this event is fired. We use this to call our `display_zone()` function and update the display of the current time zone:
```javascript
$(timedate).on("changed", display_zone);
`Timezone` is a property on the [timedated DBus interface](http://www.freedesktop.org/wiki/Software/systemd/timedated/). We can access these properties directly, and the proxy will keep them up to date. Here we use the property to update our display of the current time zone:
function display_zone() {
current.text(timedate.Timezone);
}
`SetTimezone` is a method on the [timedated DBus interface](http://www.freedesktop.org/wiki/Software/systemd/timedated/) interface, and we can invoke it directly as we would a javascript function. In this case we pass the arguments the DBus method expects, a `timezone` string, and a `user_interaction` boolean.
function change_zone() {
var call = timedate.SetTimezone(input.val(), true);
```
In a web browser you cannot block and wait until a method call completes. Anything that doesn't happen instantaneously gets its results reported back to you by [means of callback handlers](https://cockpit-project.org/guide/latest/api-cockpit.html#latest-dbus-done). jQuery has a standard interface [called a promise](http://api.jquery.com/deferred.promise/). You add handlers by calling the `.done()` or `.fail()` methods and registering callbacks.
```unknown
call.fail(change_fail);
failure.empty();
}
```
The `change_fail()` displays any failures that happen. In this case, `SetTimezone` DBus method has no return value, however if there were, we could use something like `call.done(myhandler)` to register a handler to receive them.
Notice that we relied on DBus to tell us when things changed and just updated the display from our event handler. That way we reacted both when the time zone changed due to an action in Cockpit, as well as an action on the server.
Again this is a simple example, but I hope it will whet your appetite to what [Cockpit can do with DBus](https://cockpit-project.org/guide/latest/api-cockpit.html#latest-dbus). Obviously you can also do signal handling, working with return values from methods, tracking all instances of a given interface, and other stuff you would expect to do as a DBus client.
================================================
FILE: _posts/2014-11-20-rhel-atomic-beta.md
================================================
---
title: Cockpit on RHEL Atomic Beta
date: '2014-11-20'
category: release
tags: cockpit linux rhel atomic
slug: cockpit-on-rhel-atomic-beta
---
If you've tried out the [RHEL Atomic Host Beta](http://developerblog.redhat.com/2014/11/11/red-hat-enterprise-linux-7-atomic-host-beta-now-available/) you might notice that Cockpit is not included by default, like it is in the Fedora Atomic or CentOS Atomic. But there's an easy work around:
```:text
$ sudo docker run --privileged -v /:/host -d stefwalter/cockpit-atomic:wip
```
This is an interim solution, and has some drawbacks:
* Only really allows Cockpit to be used as root.
* The Storage and user accounts UIs don't work.
And in general privileged containers are a mixed bag. They're not portable, and really not containers at all, in the sense that they're not contained. But this is an easy way to get Cockpit going on RHEL Atomic for the time being.
================================================
FILE: _posts/2014-12-16-protocol-interaction.md
================================================
---
title: Protocol for Web access to System APIs
date: '2014-12-16'
category: tutorial
tags: cockpit linux
slug: protocol-for-web-access-to-system-apis
---
*Note: This post has been updated for changes in Cockpit 0.48 and later.*
{:.note}
A Linux system today has a lot of local system configuration APIs. I'm not talking about library APIs here, but things like DBus services, command/scripts to be executed, or files placed in various locations. All of these constitute the API by which we configure a Linux system. In [Cockpit](https://cockpit-project.org) we access these APIs from a web browser (after authentication of course).
How do we access the system APIs? The answer is the `cockpit-bridge` tool. It proxies requests from the Cockpit user interface, running in a web browser, to the system. Typically the `cockpit-bridge` runs as the logged in user, in a user session. It has similar permissions and capabilities as if you had used `ssh` to log into the system.
Lets look at an example DBus API that we call from Cockpit. systemd has an API to set the system host name, called [SetStaticHostname](http://www.freedesktop.org/wiki/Software/systemd/hostnamed/). In Cockpit we can invoke that API using simple JSON like this:
```text
{
"call": [
"/org/freedesktop/hostname1",
"org.freedesktop.hostname1",
"SetStaticHostname", [ "mypinkpony.local", true ]
]
}
```
The protocol that the web browser uses is a [message based protocol](https://github.com/cockpit-project/cockpit/blob/master/doc/protocol.md), and runs over a [WebSocket](http://en.wikipedia.org/wiki/WebSocket). This is a "post-HTTP" protocol, and isn't limited by the request/response semantics inherent to HTTP. Our protocol has a lot of JSON, and has a number of interesting characteristics, which you'll see below. In general we've tried to keep this protocol readable and debuggable.
The `cockpit-bridge` tool speaks this protocol on its standard in and standard output. The `cockpit-ws` process hosts the WebSocket and passes the messages to `cockpit-bridge` for processing.
**Following along:** In order to follow along with the stuff below, you'll need at least Cockpit 0.48. The protocol is not yet frozen, and we merged some cleanup recently. You can install it on [Fedora 21 using a COPR](https://lists.fedorahosted.org/pipermail/cockpit-devel/2014-November/000196.html) or [build it from git](https://github.com/cockpit-project/cockpit/blob/master/HACKING.md).
Channels
--------
Cockpit can be doing lots of things at the same time and we don't want to have to open a new WebSocket each time. So we allow the protocol to be shared by multiple concurrent tasks. Each of these is assigned a *channel*. Channels have a string identifier. The data transferred in a channel is called the payload. To combine these into a message I simply concatenate the identifier, a new line, and the payload. Lets say I wanted to send the message `Oh marmalade!` over the channel called `scruffy` the message would look like this:
```text
scruffy
Oh marmalade!
```
How do we know what channel to send messages on? We send *control messages* on a *control channel* to open other channels, and indicate what they should do. The identifier for the control channel is an empty string. More on that below.
Framing
-------
In order to pass a message based protocol over a plain stream, such the standard in and standard out of `cockpit-bridge`, one needs some form of framing. This framing is not used when the messages are passed over a WebSocket, since WebSockets inherently have a message concept.
The framing the `cockpit-bridge` uses is simply the byte length of the message, encoded as a string, and followed by a new line. So Scruffy's 21 byte message above, when sent over a stream, would like this:
```text
21
scruffy
Oh marmalade!
```
Alternatively, when debugging or testing `cockpit-bridge` you can run in an interactive mode, where we frame our messages by using boundaries. That way we don't have to count the byte length of all of our messages meticulously, if we're writing them by hand. We specify the boundary when invoking `cockpit-bridge` like so:
```text
$ cockpit-bridge --interact=----
```
And then we can send a message by using the `----` boundary on a line by itself:
```text
scruffy
Oh marmalade!
----
```
Control channels
----------------
Before we can use a channel, we need to tell `cockpit-bridge` about the channel and what that channel is meant to do. We do this with a *control message* sent on the *control channel*. The *control channel* is a channel with an empty string as an identifier. Each control message is a JSON object, or dict. Each control message has a `"command"` field, which determines what kind of control message it is.
The `"open"` control message opens a new channel. The `"payload"` field indicates the type of the channel, so that `cockpit-bridge` knows what to do with the messages. The various [channel types are documented](https://github.com/cockpit-project/cockpit/blob/master/doc/protocol.md). Some channels connect talk to a DBus service, others spawn a process, etc.
When you send an `"open"` you also choose a new channel identifier and place it in the `"channel"` field. This channel identifier must not already be in use.
The `"echo"` channel type just sends the messages you send to the `cockpit-bridge` back to you. Here's the control message that is used to open an echo channel. Note the empty channel identifier on the first line:
Now we're ready to play ... Well almost.
The very first control message sent to and from `cockpit-bridge` should be an `"init"` message containing a version number. That version number is `1` for the foreseeable future.
{
"command": "init",
"version": 1
}
Try it out
----------
So combining our knowledge so far, we can run the following:
```text
$ cockpit-bridge --interact=----
```
In this debugging mode sent by `cockpit-bridge` will be bold in your terminal. Now paste the following in:
{ "command": "open", "channel": "mychannel", "payload": "echo" }
----
mychannel
This is a test
----
You'll notice that `cockpit-bridge` sends your message back. You can use this technique to experiment. Unfortunately
`cockpit-bridge` exits immediately when it's stdin closes, so you [can't yet use shell redirection from a file effectively](https://github.com/cockpit-project/cockpit/issues/1594).
Making a DBus method call
-------------------------
To make a DBus method call, we open a channel with the payload type `"dbus-json3"`. Then we send JSON messages as payloads inside that channel. An additional field in the `"open"` control message is required. The `"name"` field is the bus name of the DBus service we want to talk to:
Once the channel is open we send a JSON object as a payload in the channel with a `"call"` field. It is set to an array with the DBus interface, DBus object path, method name, and an array of arguments.
```
If we want a reply from the service we specify an `"id"` field. The resulting `"reply"` will have a matching `"id"` and would look something like this:
mydbus
{
"reply": [ null ],
"id": "cookie"
}
If an error occurred you would see a reply like this:
```
This is just the basics. You can do much more than this with DBus, including watching for signals, lookup up properties, tracking when they change, introspecting services, watching for new objects to show up, and so on.
Spawning a process
------------------
Spawning a process is easier than calling a DBus method. You open the channel with the payload type `"stream"` and you specify the process you would like to spawn in the `"open"` control message:
The process will send its output in the payload of one or more messages of the `"myproc"` channel, and at the end you'll encounter the `"close"` control message. We haven't looked at until now. A `"close"` control message is sent when a channel closes. Either the `cockpit-bridge` or its caller can send this message to close a channel. Often the `"close"` message contains additional information, such as a problem encountered, or in this case the exit status of the process:
Doing it over a WebSocket
-------------------------
Obviously in Cockpit we send all of these messages from the browser through a WebSocket hosted by `cockpit-ws`. `cockpit-ws` then passes them on to `cockpit-bridge`. You can communicate this way too, if you [configure Cockpit to accept different Websocket Origins](https://cockpit-project.org/guide/cockpit.conf.5.html).
And on it goes
--------------
There are payload types for reading files, replacing them, connecting to unix sockets, accessing system resource metrics, doing local HTTP requests, and more. Once the protocol is stable, solid documentation is in order.
I hope that this has given some insight into how Cockpit works under the hood. If you're interested in using this same protocol, I'd love to get feedback ... especially while the basics of the protocol are not yet frozen.
================================================
FILE: _posts/2015-06-09-cockpit-does-kubernetes.md
================================================
---
title: Cockpit's Kubernetes Dashboard
date: 2015-06-09 23:51
tags: cockpit technical kubernetes
slug: cockpit-kubernetes-dashboard
category: release
---
Here's a video showing what I've been working on together with some help from a couple Cockpit folks. It's a [Cockpit](https://cockpit-project.org) dashboard for Kubernetes.
If you haven't heard about [Kubernetes](http://kubernetes.io/) ... it's a way to schedule docker containers across a cluster of machines, and take care of their networking, storage, name resolution etc. It's not completely baked, but pretty cool when it works.
The Cockpit dashboard you see in the video isn't done by any means ... there's a lot missing. But I'm pretty happy with what we have so far. I'm using Cockpit 0.61 in the demo. There are some nagging details to make things work, but hopefully we can solve them later. The Nulecule support isn't merged yet, [Subin has been working on it](https://github.com/cockpit-project/cockpit/pull/2332).
The Cockpit dashboard actually mostly works with [Openshift v3](https://github.com/openshift/origin). Openshift v3 is based on Kubernetes underneath, which makes apps that are developed there really portable.
================================================
FILE: _posts/2015-07-10-rest-api-plugin.md
================================================
---
title: Making REST calls from Javascript in Cockpit
date: '2015-07-10'
category: tutorial
tags: cockpit linux
slug: making-rest-calls-from-javascript-in-cockpit
---
*Note: This post has been updated for changes in Cockpit 0.90 and later.*
{:.note}
[Cockpit is a user interface for servers](https://cockpit-project.org). In [earlier](https://cockpit-project.org/blog/creating-plugins-for-the-cockpit-user-interface.html) [tutorials](https://cockpit-project.org/blog/using-dbus-from-javascript-in-cockpit.html) there's a guide on how to add components to Cockpit.
Not all of the [system APIs use DBus](https://cockpit-project.org/blog/d-bus-is-powerful-ipc.html). So sometimes we find ourselves in a situation where we have to use REST (which is often just treated as another word for HTTP) to talk to certain parts of the system. For example [Docker has a REST API](https://docs.docker.com/reference/api/docker_remote_api/).
For this tutorial you'll need at least Cockpit 0.58. There was one last tweak that helped with the ```superuser``` option you see below. You can install it in [Fedora 22](https://cockpit-project.org/running.html) or [build it from git](https://github.com/cockpit-project/cockpit/blob/master/HACKING.md).
Here we'll make a package called *docker-info* which shows info about the docker daemon. We use the `/info` [docker API](https://docs.docker.com/reference/api/docker_remote_api_v1.18/#display-system-wide-information) to retrieve that info.
I've prepared the [docker-info package here](https://cockpit-project.org/files/docker-info.tgz). It's just two files. To download them and extract to your current directory, and installs it as a Cockpit package:
```text
$ wget https://cockpit-project.org/files/docker-info.tgz -O - | tar -xzf -
$ cd docker-info/
$ mkdir -p ~/.local/share/cockpit
$ ln -snf $PWD ~/.local/share/cockpit/
```
Previously we [talked about](https://cockpit-project.org/blog/creating-plugins-for-the-cockpit-user-interface.html) how packages are installed, and what `manifest.json` does so I won't repeat myself here. But to make sure the above worked correctly, you can run the following command. You should see `docker-info` listed in the output:
```text
$ cockpit-bridge --packages
...
docker-info: .../.local/share/cockpit/docker-info
...
```
If you're logged into Cockpit on this machine, first log out. And log in again. Make sure to log into Cockpit with your current user name, since you installed the package in your home directory. You should now see a new item in the *Tools* menu called *Docker Info*:

After a moment, you should see numbers pop up with some stats about the docker daemon. Now in a terminal try to run something like:
```text
$ sudo docker run -ti fedora /bin/bash
```
You should see the numbers update as the container is pulled and started. When you type ```exit``` in the container, you should see the numbers update again. How is this happening? Lets take a look at the `docker-info` HTML:
```html
Docker Info
Docker Daemon Info
Total Memory: ?
Go Routines: ?
File Descriptors: ?
Containers: ?
Images: ?
```
First we include `jquery.js` and `cockpit.js`. `cockpit.js` defines the basic API for interacting with the system, as well as Cockpit itself. You can find [detailed documentation here](https://cockpit-project.org/guide/latest/api-cockpit.html).
```html
```
We also include the cockpit.css file to make sure the look of our tool matches that of Cockpit. The HTML is pretty basic, defining a little list where the info shown.
In the javascript code, first we setup an HTTP client to access docker. Docker listens for HTTP requests on a Unix socket called `/var/run/docker.sock`. In addition the permissions on that socket often require escalated privileges to access, so we tell Cockpit to try to gain `superuser` privileges for this task, but continue anyway if it cannot:
```javascript
var docker = cockpit.http("/var/run/docker.sock", { superuser: "try" });
```
First we define how to retrieve info from Docker. We use the REST `/info` API to do this.
```javascipt
function retrieve_info() {
var info = docker.get("/info");
info.done(process_info);
info.fail(print_failure);
}
```
In a browser you cannot stop and wait until a REST call completes. Anything that doesn't happen instantaneously gets its results reported back to you by [means of callback handlers](https://cockpit-project.org/guide/latest/api-cockpit.html#cockpit-http-done). jQuery has a standard interface [called a promise](http://api.jquery.com/deferred.promise/). You add handlers by calling the `.done()` or `.fail()` methods and registering callbacks.
The result of the `/info` call is JSON, and we process it here. This is standard jQuery for filling in text data into the various elements:
```javascript
function process_info(data) {
var resp = JSON.parse(data);
$("#docker-memory").text(resp.MemTotal);
$("#docker-routines").text(resp.NGoroutines);
$("#docker-files").text(resp.NFd);
$("#docker-containers").text(resp.Containers);
$("#docker-images").text(resp.Images);
}
```
And then we trigger the invocation of our `/info` REST API call.
```javascript
/* First time */
retrieve_info();
```
Because we want to react to changes in Docker state, we also start a long request to its `/events` API.
```javascript
var events = docker.get("/events");
```
The `.get("/events")` call returns a jQuery Promise. When a line of event data arrives, the `.stream()` callback in invoked, and we use it to trigger a reload of the Docker info.
```javascript
events.stream(got_event);
events.always(print_failure);
function got_event() {
retrieve_info();
}
```
This is a simple example, but I hope it helps you get started. There are further REST [javascript calls](https://cockpit-project.org/guide/latest/api-cockpit.html#latest-http). Obviously you can also do `POST` and so on.
================================================
FILE: _posts/2015-09-23-cockpit-0.77.md
================================================
---
title: Cockpit 0.77 Released
date: 2015-09-23 21:23
tags: cockpit linux technical
slug: cockpit-0.77
summary: Cockpit releases every week. This week it was 0.77
category: release
---
Cockpit releases every week. This week it was 0.77
### Componentizing Cockpit
Marius and Stef completed a long running refactoring task of splitting
Cockpit into components.
In an age long gone Cockpit used to be one monolithic piece of HTML and
javascript. Over the last year we've steadily refactored to split this
out so various components can be loaded optionally and/or from different
servers depending on capabilities and operating system versions.
Marius also removed a cockpitd DBus service that we've also been moving
away from. Cockpit wants to talk to system APIs and not install its own
API wrappers like cockpitd.
### The URLs changed
Because of the above, we unfortunately had to change the URLs. But we've
taken the opportunity to make them a lot simpler and cleaner.
### Authentication when Embedding Cockpit
Stef worked on partitioning the cockpit authentication so that embedders
of Cockpit components don't need to share authentication state with a
normal instance of Cockpit loaded in a browser.
### Deleting and Adjusting Kubernetes Objects
Subin implemented deletion kubernetes objects, and adjust things like
the number of replicas in Replication Controllers.
### Warning when too many machines
Cockpit now gives a warning when adding "too many" machines to the
dashboard. We've set the warning to 20 machines, but various operating
systems can set this warning to be lower.

### From the Future
Andreas did designs for managing the SSH keys loaded for use when connecting to machines:

### Try it out
Cockpit 0.77 is available now here:
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.77)
* [Fedora 23 and Fedora Rawhide](https://bodhi.fedoraproject.org/updates/FEDORA-2015-16557)
* [COPR for Fedora 21, 22, CentOS and RHEL](https://copr.fedoraproject.org/coprs/sgallagh/cockpit-preview/)
================================================
FILE: _posts/2015-09-30-cockpit-0.78.md
================================================
---
title: Cockpit 0.78 Released
date: 2015-09-30 21:23
tags: cockpit linux technical
slug: cockpit-0.78
summary: Cockpit releases every week. This week it was 0.78
category: release
---
Cockpit releases every week. This week it was 0.78
### Multipath Storage
Cockpit now deals with multipath storage, although it doesn't yet provide a way to set it up.
### Cockpit Guide
The Cockpit Guide has been updated and includes information about how
various features are implemented, and what sort of privileges they use
on the system.
Here's a link to [the guide](https://cockpit-project.org/guide/latest/) or you can take a look at
the [privileges docs](https://cockpit-project.org/guide/latest/privileges.html).
### Compatibility with old Cockpit
Recent releases of Cockpit had some compatibility issues when older servers were added to the dashboard, and vice versa. These have been fixed in 0.78
### CPU usage issue
A CPU usage bug in Cockpit 0.77 was fixed.
### From the future
Marius has done some really cool work on iSCSI. It's not yet in a Cockpit release, but take a peek here:
### Try it out
Cockpit 0.78 is available now:
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.78)
* [Fedora 23 and Fedora Rawhide](https://bodhi.fedoraproject.org/updates/FEDORA-2015-977ba13a92)
* [COPR for Fedora 21, 22, CentOS and RHEL](https://copr.fedoraproject.org/coprs/sgallagh/cockpit-preview/)
================================================
FILE: _posts/2015-10-07-cockpit-0.79.md
================================================
---
title: Cockpit 0.79 Released
date: 2015-10-07 22:23
tags: cockpit linux technical
slug: cockpit-0.79
summary: Cockpit releases every week. This week it was 0.79
category: release
---
Cockpit releases every week. This week it was 0.79
### Vagrant File
Cockpit now has a vagrant file. If you want to checkout the latest
Cockpit, test pull requests, or hack on Cockpit, you can:
```text
$ sudo vagrant up
... in a Cockpit git repo. There's a
[tutorial with more information](https://cockpit-project.org/blog/cockpit-vagrantfile.html)
```
### Testing with libvirt
Dominik migrated the Cockpit integration tests to run on libvirt, rather
than using Qemu directly. This makes the tests more portable, and is an
important step towards running them distributed.
### From the future
Marius has done some work on configuring NTP servers. Hopefully this will
be in a release soon:
### Try it out
Cockpit 0.79 is available now:
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.79)
* [Fedora 23 and Fedora Rawhide](https://bodhi.fedoraproject.org/updates/FEDORA-2015-7e1880ba02)
* [COPR for Fedora 21, 22, CentOS and RHEL](https://copr.fedoraproject.org/coprs/sgallagh/cockpit-preview/)
================================================
FILE: _posts/2015-10-08-cockpit-vagrantfile.md
================================================
---
title: Using Vagrant to Develop Cockpit
date: '2015-10-08'
category: tutorial
tags: cockpit linux
slug: cockpit-vagrantfile
---
Starting with Cockpit release 0.79 you can use [Vagrant](https://www.vagrantup.com/) to bring up a VM in which
you can test or develop Cockpit. The VM is isolated from your main system so any system configuration
you change via Cockpit will only happen in the VM.
The Vagrant VM mounts the Cockpit package assets from your git repository checkout, so when you make on the
host system, you can refresh the browser and immediately see the resulting changes. For changes to
C code, the Cockpit binaries would have to be rebuilt and testing via Vagrant won't work.
## Getting Started
To start, you'll need Vagrant. On Fedora I use *vagrant-libvirt*. In addition keep in mind that on
*vagrant-libvirt* requires root privileges, so you'll need to use vagrant with `sudo`.
```text
$ sudo yum install vagrant vagrant-libvirt
```
Next, in a copy of the Cockpit git repository, you run `vagrant up`:
```text
$ git clone https://github.com/cockpit-project/cockpit
$ cd cockpit
$ sudo vagrant up
```
The first time this runs it'll take a while, but eventually you'll have a Vagrant VM running. When you
do this step again, it should be pretty fast.
The VM will
listen for connections on your local machine's [`http://localhost:9090`](http://localhost:9090), but
even though you're connecting to *localhost* it'll be Cockpit in the VM you're talking to.
If you already have Cockpit running on your local machine, then this won't work, and you'll need to
use the IP address of the VM instead of *localhost*. To find it:
```text
$ sudo vagrant ssh-config
```
Two user accounts are created in the VM, and you can use either one to log into Cockpit:
* User: "admin" Password: "foobar"
* User: "root" Password: "foobar"
## Testing a Pull Request
If there's a Cockpit [pull request](https://github.com/cockpit-project/cockpit/pulls) that you'd like to
test, you can now do that with the Vagrant VM. Replace the *0000* in the following command with the
number of the pull request:
```text
$ git fetch origin pull/0000/head
$ git checkout FETCH_HEAD
```
The pull request can only contain code to Cockpit package assets. If it contains changes to the `src/`
directory, then the pull request involves rebuilding binaries, and testing it via Vagrant won't work.
Now refresh your browser, or if necessary, login again. You should see the changes in the pull request
reflected in Cockpit.
## Making a change
You can make a change to Cockpit while testing that out in your Vagrant VM. The changes should be
to Cockpit package assets. If you change something in the `src/` directory, then binaries will have
to be rebuilt, and testing it via Vagrant won't work.
I chose change some wording in the sidebar in `pkg/shell/index.html`:
```text
- Tools
+ Beavers 'n Ducks
```
And after refreshing Cockpit, I can see that change:

The same applies to javascript or CSS changes as well. In order to actually contribute a change to Cockpit
you'll want to look at the information about
[Contributing](https://github.com/cockpit-project/cockpit/wiki/Contributing) and if you need help
understanding how to add a
[plugin package](https://cockpit-project.org/blog/creating-plugins-for-the-cockpit-user-interface.html)
you can look at the [Developer Guide](https://cockpit-project.org/guide/latest/development.html).
## Bringing the Vagrant VM in sync
After each Cockpit release, there will be new binary parts to Cockpit. In order to continue to use the
Vagrant VM, you'll need to rebuild it. A message like this should appear when that's necessary.

Rebuild the Vagrant VM like this:
```text
$ sudo vagrant destroy
$ sudo vagrant up
```
## Troubleshooting
On Fedora, FirewallD got in the way of Vagrants use of NFS. On my machine, I had to do this
to get it to work:
```text
$ sudo firewall-cmd --set-default-zone=trusted
================================================
FILE: _posts/2015-10-14-cockpit-0.80.md
================================================
---
title: Cockpit 0.80 Released
date: 2015-10-14 22:19
tags: cockpit linux technical
slug: cockpit-0.80
summary: Cockpit releases every week. This week it was 0.80
category: release
---
Cockpit releases every week. This week it was 0.80
### SSH private keys
You can now use Cockpit to load SSH private keys into the ssh-agent that's
running in the Cockpit login session. These keys are used to authenticate
against other systems when they are added to the dashboard. Cockpit also
supports inspecting and changing the passwords for SSH private keys.
### Always start an SSH agent
Cockpit now always starts an SSH agent in the Cockpit login session. Previously
this would happen if the correct PAM modules were loaded.
### From the future
Peter has done work to build an OSTree UI, useful for upgrading and rolling back
the operating system on Atomic Host:
[](https://raw.githubusercontent.com/cockpit-project/cockpit-design/master/software-updates/software-updates-ostree-alt.png)
Subin has done work to get Nulecule Kubernetes applications working with Atomic
and larger Kubernetes clusters.
### Try it out
Cockpit 0.80 is available now:
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.80)
* [Fedora 23 and Fedora Rawhide](https://bodhi.fedoraproject.org/updates/FEDORA-2015-28a7f2b07f)
* [COPR for Fedora 21, 22, CentOS and RHEL](https://copr.fedoraproject.org/coprs/sgallagh/cockpit-preview/)
================================================
FILE: _posts/2015-10-21-cockpit-0.81.md
================================================
---
title: Cockpit 0.81 Released
date: 2015-10-21 22:19
tags: cockpit linux technical
slug: cockpit-0.81
summary: Cockpit releases every week. This week it was 0.81
category: release
---
Cockpit releases every week. This week it was 0.81
### NTP servers
Cockpit now allows configuration of which NTP servers are used for time syncing. This configuration is possible when [timesyncd](http://www.freedesktop.org/software/systemd/man/systemd-timesyncd.service.html) is being used as the NTP service.
### Network switch regression
There was a regression in Cockpit 0.78 where certain on/off switches in the networking configuration stopped working. This has now been fixed.
### Delete Openshift routes and deployment configs
In the Kubernetes cluster dashboard, it's now possible to delete Openshift style routes and deployment configs.
### From the future
I've refactored the Cockpit Kubernetes [container terminal widget](https://github.com/kubernetes-ui/container-terminal/) for use by other projects. It's been integrated into the Openshift Web Console for starters. This widget will be used by Cockpit soon.
### Try it out
Cockpit 0.81 is available now:
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.81)
* [Fedora 23 and Fedora Rawhide](https://bodhi.fedoraproject.org/updates/FEDORA-2015-c3b74dffee)
* [COPR for Fedora 21, 22, CentOS and RHEL](https://copr.fedoraproject.org/coprs/sgallagh/cockpit-preview/)
================================================
FILE: _posts/2015-10-28-cockpit-0.82.md
================================================
---
title: Cockpit 0.82 Released
date: 2015-10-28 19:05
tags: cockpit linux technical
slug: cockpit-0.82
summary: Cockpit releases every week. This week it was 0.82
category: release
---
Cockpit releases every week. This week it was 0.82
### Distributed Tests
In Cockpit we run thousands of integration tests per day against pull requests and git master. Each test brings up up Cockpit in a full operating system VM, and hammers on it in some way. Without these tests it's impossible to validate that Cockpit actually works.
Last week, the server doing this testing work broke down. I've been working over the last week to fix that, along with others.
But we've done more, instead of just putting this on another server, we've worked to make these integration tests run in a distributed manner across several machines each doing a part of the tests.
The tests are staged via privileged containers, and run in libvirt VMs.
Here's [some documentation](https://github.com/cockpit-project/cockpit/blob/master/test/README) on how to use the new tests.
### Certificate Chains
Cockpit has supported using certificate chains for its cockpit-ws component, but only when the underying GLib (2.44+) supported it. In this release we start to support running TLS with proper certificate chains even on older GLib versions. The [documentation](https://cockpit-project.org/guide/0.82/https.html#https-certificates) and appropriate tests were updated.
### Try it out
Cockpit 0.82 is available now:
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.82)
* [Fedora 23 and Fedora Rawhide](https://bodhi.fedoraproject.org/updates/FEDORA-2015-273bc74c11)
* [COPR for Fedora 21, 22, CentOS and RHEL](https://copr.fedoraproject.org/coprs/sgallagh/cockpit-preview/)
================================================
FILE: _posts/2015-11-19-cockpit-0.84.md
================================================
---
title: Cockpit 0.83 and 0.84 Released
date: 2015-11-19 11:24
tags: cockpit linux technical
slug: cockpit-0.84
summary: Cockpit releases every week. This week it was 0.84
category: release
---
Cockpit releases every week. This week it was 0.84. I'll also include notes from 0.83 here.
### Building Cockpit on Debian
At systemd.conf Dominik worked with Michael Biebl one of the Debian systemd maintainers on packaging Cockpit for Debian. We're still looking for a maintainer long term.
Here's a [blog post](http://dominik.perpeet.eu/cockpit-on-debian-8-2) with more details.
### Cross Distro Integration Tests
In Cockpit we run hundreds of tests on real operating systems for each pull request. Without running these tests on an OS it's impossible to know that the features of Cockpit actually works. So far we've been running these tests on Fedora, Atomic, and RHEL. But we'd really like to run them on Debian as well. That'll make Cockpit much more well rounded.
Marius worked on the first steps toward running the tests on Debian, by doing the Cockpit [build inside of our test VM images](https://github.com/cockpit-project/cockpit/pull/3138). Hopefully we'll see more progress on this.
### SELinux certificate file type
The ```cockpit.service``` helpfully sets the appropriate user and group [on the certificates](https://cockpit-project.org/guide/latest/https.html) that cockpit-ws will use for TLS. Now it also sets the SELinux file context type properly, so this is one less things to break for an admin.
### Cockpit manual page
There is now a ```man cockpit``` overview manual page that links to the guide and elsewhere.
### From the future
Marius has done work on an SOS reporting view. Needs some further backend work, but should be ready soon:
Peter has mostly completed the work to add machines with alternate users, and non-standard SSH ports. Among other things, this is useful for cloud instances. I'm looking forward to seeing this in Cockpit 0.85.
[](https://raw.githubusercontent.com/cockpit-project/cockpit-design/master/add-system/machine-dialogs.png)
### Try it out
Cockpit 0.84 is available now:
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.84)
* [Fedora 23 and Fedora Rawhide](https://bodhi.fedoraproject.org/updates/FEDORA-2015-96b41c5190)
* [COPR for Fedora 22, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2015-11-27-cockpit-0.85.md
================================================
---
title: Cockpit 0.85 Released
date: 2015-11-27 11:24
tags: cockpit linux technical
slug: cockpit-0.85
summary: Cockpit releases every week. This week it was 0.85
category: release
---
Cockpit releases every week. This week it was 0.85.
### Varying users on dashboard machines
Cockpit now supports adding machines to the dashboard with different
user logins for each one. This can be useful in cases where you're
adding cloud instances to your dashboard, and they require logging in
with a *cloud-user* and not the same user as your other servers.
### Non standard SSH ports
When Cockpit connects to a machine that was added to the dashboard, it
does so over SSH. Cockpit can now connect on non-standard SSH ports.
See the video above.
### Troubleshooting machine connectivity
Cockpit now allows you to fix connectivity issues for servers that are
added to the dashboard. This includes adjusting authentication, checking
on host keys and more.
[](https://raw.githubusercontent.com/cockpit-project/cockpit-design/master/add-system/machine-dialogs.png)
### Fix SELinux certificate file type bug
Cockpit 0.84 failed to start on certain distros because SELinux wasn't
available or couldn't be used to reset the certificate file context.
This [bug has been fixed](https://github.com/cockpit-project/cockpit/issues/3206).
### Work around bug in Firefox 42
A bug in Firefox 42 caused Cockpit to often load with a blank screen,
due to layout calculation issues. The layout code has been changed to
work around [this issue](https://bugzilla.redhat.com/show_bug.cgi?id=1185136).
### Docker restart container timeout
Previously Cockpit called the Docker API without a timeout when
restarting containers. This caused Docker to immediately kill the
container without waiting for it to shutdown cleanly. Cockpit now
[passes a timeout](https://github.com/cockpit-project/cockpit/issues/3230).
### From the future
Marius has [made progress](https://github.com/cockpit-project/cockpit/pull/3202)
getting the Cockpit integration test suite to run on Debian. Without the
integration tests running for a certain distro, there's no way to ensure Cockpit
actually works there.
### Try it out
Cockpit 0.85 is available now:
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.85)
* [Fedora 23 and Fedora Rawhide](https://bodhi.fedoraproject.org/updates/FEDORA-2015-e368240084)
* [COPR for Fedora 22, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2015-12-04-cockpit-0.86.md
================================================
---
title: Cockpit 0.86 Released
date: 2015-12-04 13:04
tags: cockpit linux technical
slug: cockpit-0.86
category: release
summary: Cockpit releases every week. This week it was 0.86
---
Cockpit releases every week. This week it was 0.86.
### SOS Reporting
Users can now prepare an SOS Report containing information about the system and send it to their support representative.
### From the future
Stef has done work to cleanup the Javascript dependencies of Cockpit. Broadly these fall into two categories:
* Development dependencies: only used while developing Cockpit, not even used while building the tarball. These are ```node_modules```
* Runtime dependencies: used while Cockpit is running and built
into the various Cockpit packages. These are ```bower_components```
The latter should be replaceable at build-time. The cleanup work moves in this direction, but it's not complete yet.
### Try it out
Cockpit 0.86 is available now:
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.85)
* [Fedora 23 and Fedora Rawhide](https://bodhi.fedoraproject.org/updates/FEDORA-2015-36d1df063f)
* [COPR for Fedora 22, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2015-12-22-cockpit-0.89.md
================================================
---
title: Cockpit 0.89 Released
date: 2015-12-22 13:04
tags: cockpit linux technical
slug: cockpit-0.89
category: release
summary: Cockpit releases every week. This week it was 0.89
---
Cockpit releases every week. Here's a summary of the 0.87, 0.88 and 0.89 releases.
### OSTree upgrades and rollbacks
Peter worked to finish the basic OSTree UI has been merged into Cockpit.
This lets the admin perform upgrades and rollbacks on Atomic Host.
Colin, Peter and the OSTree guys worked together to build a DBus
interface in rpm-ostree so that callers can interact with the update system.
Demo: https://youtu.be/Tmj0Nrkasmk
Before this is usable by users, the cockpit-ostree package will need to
(be included in Atomic Host, first on Fedora)[https://bugzilla.redhat.com/show_bug.cgi?id=1292826].
Custom login authentication scripts
-----------------------------------
The Cockpit WebService cockpit-ws component now supports custom
authenticators for various auth mechanisms. Some assembly required.
Peter has implemented this as part of containerizing the kubernetes and
docker registry admin dashboards.
Stubbed out bridge for non-local users
--------------------------------------
This means that the Cockpit parts can be customized to that we can allow
non-local users to log in and interact with certain Cockpit components
that don't interact with the local system. Again this is part of
containerizing the kubernetes and docker registry admin dashboards.
Specific dashboards can now be shown as default
-----------------------------------------------
A specific Cockpit dashboard can now be shown as the default when
logging in, by specifying a lower "order" than default dashboard.
Fix login on Windows
--------------------
Cockpit no longer prompts for a strange second login (which had to do
with SSO) on Windows. There are some remaining issues with how Cockpit
works on Internet Explorer, but most have been solved.
Host name in self-signed certificate
------------------------------------
In order to make life easier, when generating a self-signed certificate,
Cockpit now includes the local host name. Self-signed certificates
remain a stop gap. Real world deployments should replace them with
properly signed certificates from a certificate authority:
Routine Debian testing
----------------------
The Cockpit Project has started routinely testing each Cockpit pull request on Debian Unstable using real Debian packaging. Marius did some great work here. This means we're are close to doing real continuous delivery to Debian. Next step, a repo, and a maintainer.
Case insensitive cockpit.conf
-----------------------------
The cockpit.conf file is now case insensitive for options and headings. This should make editing it less error prone.
Reorder graphs on server summary page
-------------------------------------
Thijs reordered the resource graphs on the server summary page in the same order as GNOME, Windows, and elsewhere.
Syncing of users when adding a server
-------------------------------------
Cockpit no longer requires or suggests that the admin accounts be synced between servers when adding another server to the dashboard. This feature is still available when editing the server options on the dashboard.
Weak dependencies on Fedora 24+
-------------------------------
On Fedora 24 and later, one can have 'Suggests' and 'Recommends' dependencies between packages. Cockpit now takes advantage of these for its 'cockpit' meta package making certain parts removable without removing 'cockpit'.
Vagrantfile working again
-------------------------
The Vagrant file now pulls from the correct latest binary builds of Cockpit. To use it:
```bash
$ git clone https://github.com/cockpit-project/cockpit
$ cd cockpit
$ sudo vagrant up
```
### SOS Reporting
Users can now prepare an SOS Report containing information about the system and send it to their support representative.
### From the future
Stef has done work to cleanup the Javascript dependencies of Cockpit. Broadly these fall into two categories:
* Development dependencies: only used while developing Cockpit, not even used while building the tarball. These are ```node_modules```
* Runtime dependencies: used while Cockpit is running and built
into the various Cockpit packages. These are ```bower_components```
The latter should be replaceable at build-time. The cleanup work moves in this direction, but it's not complete yet.
### From the future
Ryan Barry has posted a pull request adding tuned (system performance
profile) support to Cockpit:
### Try it out
Cockpit 0.86 is available now:
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.85)
* [Fedora 23 and Fedora Rawhide](https://bodhi.fedoraproject.org/updates/FEDORA-2015-36d1df063f)
* [COPR for Fedora 22, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-02-12-cockpit-0.95.md
================================================
---
title: Cockpit 0.95 Released
date: 2016-02-12 20:32
tags: cockpit linux technical
slug: cockpit-0.95
category: release
summary: Cockpit releases every week. Here's highlights from 0.90 through 0.95
---
Cockpit releases every week. Here are the highlights from 0.90 through 0.95.
Set CPU performance profile via tuned
-------------------------------------
Cockpit can now talk to tuned and set the CPU performance profile of the
system. Thanks to Ryan Barry for doing the initial prototype, and
Jaroslav Škarvada for fixing up tuned to include profile descriptions.
iSCSI initiator support
-----------------------
The iSCSI support that Marius worked on with the storaged folks has
finally landed in a Cockpit release. It was waiting on fixes in some
dependencies. Have a look:
Support for WebSocket client in cockpit-bridge
----------------------------------------------
In order to better talk to services like Kubernetes or the Atomic Docker
Registry we've added WebSocket support to the cockpit-bridge. It can now
connect to local WebSockets on the system.
But here's an example of what you can do with that: The demo below shows
GTK+ 3 apps running inside of Cockpit. GTK+ 3 supports HTML5 as a
display mode, and Cockpit can wrap that in authentication and a real
Linux login session:
Debian Source Packages
----------------------
As a step towards working getting Cockpit into Debian we now create
Debian source packages during our continuous delivery process. These end
up here for now:
Content Security Policy
-----------------------
Because the Cockpit javascript code has as much access to the system as
the logged in user, Cockpit needs to make sure that attackers cannot
sneak in javascript code into the browser session.
Obviously we do this by escaping HTML output carefully and other best
practices. But in addition to that we've started to deploy Content
Security Policy.
If you're unfamiliar with [Content Security Policy](https://en.wikipedia.org/wiki/Content_Security_Policy)
it's a bit like SELinux for a browser session. It tells the browser we explicitly don't
want to execute any code, styling or other resources that get loaded
from Cockpit itself.
We haven't turned on the strict policy for all of Cockpit yet, and we're
doing it component by component.
Fix cockpit-ws start while reading from /dev/urandom
----------------------------------------------------
Previously when there were interruptions during reading from
/dev/urandom while starting cockpit-ws, then initialization would fail.
This has now been fixed.
OAuth login support
-------------------
Cockpit now has OAuth login support. It doesn't exactly work out of the
box for logging into a local Linux system, but it can be used to create
custom dashboards or containers based on Cockpit components that use
OAuth to authenticate.
See [the documentation](https://rawgit.com/cockpit-project/cockpit/master/doc/authentication.md)
for more info.
Running RHEL QE Tests
---------------------
When you open a Cockpit pull request, take a look at the test suites
that are run against it.
This week we finished work to run the Cockpit RHEL QE tests upstream git
pull request. Rather than catching issues on the backend of things,
we'll be ahead of the game.
Vagrant without NFS
-------------------
Cockpit's Vagrantfile used to use NFS to keep the git checkout in sync
with the image. This caused many folks to have a hard time using Vagrant
to hack on Cockpit, so the NFS stuff is now dropped. You can still bring
up the vagrant VM as before:
```unknown
$ sudo vagrant up
```
And then access Cockpit on https://localhost:9090
However if you make changes to the stuff in the git repo, you need to
run an extra vagrant command before the running VM will pick it up:
```unknown
$ sudo vagrant rsync
```
See [HACKING.md in the git](https://rawgit.com/cockpit-project/cockpit/master/HACKING.md)
repo for more details.
### Try it out
Cockpit 0.95 is available now:
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.95)
* [Fedora 23 and Fedora Rawhide](https://bodhi.fedoraproject.org/updates/cockpit-0.95-1.fc23)
* [COPR for Fedora 22, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-03-24-cockpit-0.99.md
================================================
---
title: Cockpit 0.99 Released
date: 2016-03-24 18:35
tags: cockpit linux technical
slug: cockpit-0.99
category: release
summary: Cockpit releases every week. Here's highlights from 0.96 through 0.99
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release every week. Here are the highlights from 0.96 through 0.99.
### Kubernetes Cockpit Pod
The Kubernetes cluster admin interface is now deployable as a [Kubernetes](http://kubernetes.io) pod. Peter did a lot of work to make this happen. It's a good example of taking just one part Cockpit, containerizing it and running it in a completely different environment.
You can use the [commands listed in the documentation](https://cockpit-project.org/guide/latest/feature-kubernetes.html) to run the pod. Here's a demo:
### Locking down Cockpit with Content-Security-Policy
[Content-Security-Policy](http://content-security-policy.com/) is like SELinux in your browser. You declare
what your application is allowed to do, and the browser prevents other things from happening, like cross site scripting attacks. Because the Cockpit javascript code has as much access to the system as the logged in user, Cockpit needs to make sure that attackers cannot sneak in javascript code into the browser session.
In the last few releases, a strict policy was applied to the network, Kubernetes, Docker, storage, and accounts parts of the interface, just a few more remaining before all of Cockpit is locked down in this way.
### Debian packages
Cockpit has been testing each change and release against Debian during continuous integration for a while. Lars recently added installable Debian binary packages for each release. We're still looking for a [DD maintainer](https://wiki.debian.org/DebianDeveloper) to help take those tested packages and include them in Debian proper.
See the [documentation for how to use the Cockpit Debian packages](https://cockpit-project.org/running.html).
### From the future
The ability to troubleshoot [SELinux](http://stopdisablingselinux.com/) in Cockpit is pretty exciting. Dominik has lots of the work in this area and it's nearly ready. Watch the video below. Once it's finished you'll be able to just click a button to resolve many (most?) SELinux issues found on a server.
Garret designed a UI for using Docker with an LVM pool as you would on [Atomic Host](http://www.projectatomic.io/download/). That is: A UI for [docker-storage-setup](https://github.com/projectatomic/docker-storage-setup). I'm looking forward to this in Cockpit. Sneak peak here:

### Try it out
Cockpit 0.99 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.95)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.99-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-04-01-cockpit-0.100.md
================================================
---
title: Cockpit 0.100 Released
date: 2016-04-01 15:30
tags: cockpit linux technical kubernetes
slug: cockpit-0.100
category: release
summary: Cockpit releases every week. Here's highlights from 0.100
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release every week. Here are the highlights from this weeks 0.100 release. Even though 0.100 may seem to be a magical number ... it's really just the number after 0.99 :D
### SELinux Troubleshooting
Cockpit can now help you troubleshoot [SELinux](http://stopdisablingselinux.com/) problems, and show you fixes for repairing the various issues. This is pretty amazing for system admins who really would rather be secure, but keep bumping into stuff that SELinux is blocking. There's more to come on both SELinux and troubleshooting in the future. Take a look at what landed in this release:
### Image Registry Interface
There's a new Image Registry user interface. It works with [Atomic Platform](http://www.projectatomic.io/) or [Openshift](https://www.openshift.org/) clusters. By default this shows up in the Cockpit "Cluster" admin dashboard.
But more importantly you can deploy this as a standalone image registry, complete with storage, authentication and an interface. See [www.projectatomic.io/registry](http://www.projectatomic.io/registry) for more info.
Here's a quick demo:
### Storage sliders and more
Marius has been working on cleaning up the storage UI. One of the changes you'll notice is that you can now use a slider to choose a size for new volumes or file systems, and specify the size units you want to use:

Debian builds now also include the Storage page.
### From the future
Peter worked on adding Cluster storage configuration to the Kubernetes admin dashboard. Basic support will be in the next release. Here's a screenshot:

### Try it out
Cockpit 0.100 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.100)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.100-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-04-08-cockpit-0.101.md
================================================
---
title: Cockpit does Kubernetes Data Volumes
date: 2016-04-08 12:35
tags: cockpit linux technical kubernetes
slug: cockpit-0.101
category: release
summary: Cockpit releases every week. Here's highlights from 0.101
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release every week. Here are the highlights from this weeks 0.101 release.
### Kubernetes Volumes
You can now set up Kubernetes [persistent volume claims](http://kubernetes.io/docs/user-guide/persistent-volumes/) through the Cockpit cluster admin interface. These volumes are used to store persistent container data and possibly share them between containers. Each container pod declares the volumes it needs, and when deploying such an application admins configure the locations to store the data in those volumes.
Take a look:
### Show SELinux failure messages properly
As a follow up from last week, several bug fixes landed in the new SELinux troubleshooting support.
### Try it out
Cockpit 0.101 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.101)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.101-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-04-14-cockpit-0.102.md
================================================
---
title: Cockpit with Docker Restart Policy
date: 2016-04-14 13:33
tags: cockpit linux technical kubernetes
slug: cockpit-0.102
category: release
summary: Cockpit releases every week. Here's highlights from 0.102
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release every week. Here are the highlights from this weeks 0.102 release.
### Docker Restart Policy
When running a Docker container in Cockpit, you can now set the restart policy, so when the docker daemon restarts the containers will be restarted too. Justin Robertson contributed this feature. Take a look.
### Single Dialog for Creating Logical Volumes
The storage interface in Cockpit now has a single combined dialog when creating logical volumes.
This is a first tiny step towards advanced LVM2 features such as RAID layouts and caches. The dialog will get more fields and more interesting behavior as we implement more of the features offered by LVM2, such as the various RAID levels, as indicated by the hidden options for the "Purpose" and "Layout" fields.

### Storage interface now available on Debian
The storage interface in Cockpit has been enabled and built on Debian. The
[storaged API](https://github.com/storaged-project/storaged/) is now available on Debian too.
### Don't Distribute jshint due to License
We stopped distributing [jshint](http://jshint.com/) or requiring it as a build dependency due
to its [controversial license](https://github.com/jshint/jshint/issues/1234).
### Try it out
Cockpit 0.102 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.102)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.102-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-04-20-cockpit-0.103.md
================================================
---
title: Cockpit 0.103
date: 2016-04-20 15:45
tags: cockpit linux technical kubernetes
slug: cockpit-0.103
category: release
summary: Cockpit releases every week. Here's highlights from 0.102
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release every week. Here are the highlights from this weeks 0.103 release.
### Kubernetes connection configuration
When a Kubernetes client wants to access the API of the cluster, it looks for a "kubeconfig" file to tell it how to find the cluster and how to authenticate when accessing the API. The usual location for this file is in the current user's home directory at the ```~/.kube/config``` file path. If that doesn't exist, then usually the cluster isn't available. This applies to both clients like the ```kubectl``` command as well as Cockpit's cluster dashboard.
Cockpit can now prompt for this information, and build this file for you. If it doesn't exist, then there's a helpful "Troubleshoot" button to help get this configuration in place.
### Upload each Release to an Ubuntu PPA
Each weekly release of Cockpit is now uploaded to an Ubuntu PPA. Here's how to make use of it:
```unknown
sudo add-apt-repository ppa:cockpit-project/cockpit
sudo apt-get update
sudo apt-get install cockpit
```
### Remove jQuery Usage from cockpit.js API
As part of stabilizing the internals of Cockpit, we removed jQuery usage from the cockpit.js file. [The javascript API itself](https://cockpit-project.org/guide/latest/api-base1.html) hasn't changed, but this change helps to help keep a stable API in the future.
### Try it out
Cockpit 0.103 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.103)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.103-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-04-28-cockpit-0.104.md
================================================
---
title: Cockpit 0.104
date: 2016-04-28 15:21
tags: cockpit linux technical kubernetes
slug: cockpit-0.104
category: release
summary: Cockpit releases every week. Here's highlights from 0.104
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release every week. Here are the highlights from this weeks 0.104 release.
### Kubernetes iSCSI Volumes
Peter added support for iSCSI Kubernetes Volumes in the Cockpit Cluster dashboard. When you
have container pods that need to store data somewhere, it's now real easy to configure use
an iSCSI initiator. Take a look:
### Listing View Expansion
Andreas, Dominik, and I worked on a better listing view pattern. In Cockpit we like to give
admins the option to expand data inline, and compare it between multiple entries on the same
page. But after feedback from the [Patternfly folks](https://www.patternfly.org/) we added an
explicit expander to do this.
### Tagging Docker Images in the Registry
The Atomic Registry and Openshift Registry support mirroring images from another image registry
such as the Docker Hub. When the images are mirrored, they are copied and available in your
own registry. Cockpit now has support for telling the registry which specific tags you'd like
to mirror. And Aaron is adding support for various mirroring options as well.
### From the Future
Marius has a working proof of concept that lets you configure where Docker stores container and image
data on its host. Take a look at the demo below. Marius adds disks to the container storage pool:
### Try it out
Cockpit 0.104 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.104)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.104-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-05-04-cockpit-0.105.md
================================================
---
title: Cockpit 0.105
date: 2016-05-04 14:27
tags: cockpit linux technical kubernetes
slug: cockpit-0.105
category: release
summary: Cockpit releases every week. Here's highlights from 0.105
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release every week. Here are the highlights from this weeks 0.105 release.
### Strict Content-Security-Policy enforced everywhere
All of the Cockpit components now ship strict Content-Security-Policy. This is like
SELinux in your browser, where you declare the kind of things the application is
permitted to do and anything else is blocked.
Cockpit now only allows talking to and loading code from the server(s) that it's
running on. Everything else is blocked, including inline scripts, evaluating
javascript code, and using inline styles.
### Timeout for Cockpit Authentication
Cockpit uses PAM for authenticating local users. It now expects that authentication
process to complete within a certain timeout.
More details [in this document](https://github.com/cockpit-project/cockpit/blob/master/doc/authentication.md).
### Cluster Users can be Added and Removed from Groups
In the Cluster admin interface, users can be added to groups and remove
them with a few clicks. Here's a short video:
### Registry Mirroring from Insecure Registries
In [the Registry user interface](http://www.projectatomic.io/registry/) there's now a
checkbox that allows you to choose whether the registry from which you're mirroring
container images is insecure or not.

### Deletion of Kubernetes Nodes
In the Cluster admin interface you can now delete Nodes from the cluster, and select
which ones to delete. Andreas has also done design work to allow upgrading the
node operating system as well as cordoning nodes, which makes them unavailable for
scheduling containers.

### Try it out
Cockpit 0.105 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.105)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.105-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-05-12-cockpit-0.106.md
================================================
---
title: Cockpit 0.106
date: 2016-05-12 15:40
tags: cockpit linux technical kubernetes
slug: cockpit-0.106
category: release
summary: Cockpit releases every week. Here's highlights from 0.106
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release every week. Here are the highlights from this weeks 0.106 release.
### Stable Cockpit Styles
One of the annoying things about CSS is that when you bring in stylesheets from
multiple projects, they can conflict. You have to choose a nomen-clature to
namespace your CSS, or nest it appropriately.
We're stabilizing the internals of Cockpit in the browser, so when folks write
plugins, they can count on them working. To make that happen we had to namespace
all our own Cockpit specific CSS classes. Most of the styling used in Cockpit
come from [Patternfly](https://www.patternfly.org/) and this change doesn't affect
those styles at all.
[Documentation is on the wiki](https://github.com/cockpit-project/cockpit/wiki/Cockpit-CSS-Styling)
### Container Image Layers
Docker container image layers are now shown much more clearly. It should be clearer to tell
which is the base layer, and how the others are layered on top:

### Try it out
Cockpit 0.106 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.106)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.106-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-06-26-cockpit-0.111.md
================================================
---
title: Cockpit 0.111
date: 2016-06-26 09:00
tags: cockpit linux technical
slug: cockpit-0.111
category: release
summary: Cockpit releases every week. Here's highlights from 0.107 through 0.111.
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release every week, although it's been a while since the release notes were posted. Here are the highlights from this weeks 0.107 through 0.111 releases.
### SELinux enforcing policy
You can now temporarily disable SELinux enforcing mode from the SELinux troubleshooting
dashboard. This is useful when diagnosing permission issues that you might think are
SELinux related.

### Stable Javascript API
Cockpit now has a [stable Javascript API](https://cockpit-project.org/guide/latest/api-base1.html)
for components or plugins to build off of. Various unstable portions were removed from the
base1 package in preparation for this. There's more work going on to help make it easy to build
out of tree components or plugins.
### GlusterFS in Kubernetes Dashboard
The [Kubernetes](http://kubernetes.io/) dashboard now lists [Gluster](http://gluster.org/)
volumes in the dashboard, lets you configure them for pods to use.

### Kubernetes pending Persistent Volume Claims
The [Kubernetes](http://kubernetes.io/) dashboard lists pods which have
outstanding volume claims, and then allows you to fulfill those claims
by creating appropriate persistent volumes.


### From the Future
Marius [has worked on](https://github.com/cockpit-project/cockpit/pull/4571) adding support
for Linux [network teaming](http://libteam.org/) to the Cockpit admin interface. Teaming
is a better more coherent way of building a network bond.
### Try it out
Cockpit 0.111 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.111)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.111-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-07-07-cockpit-0.113.md
================================================
---
title: Cockpit 0.113
date: 2016-07-07 17:30
tags: cockpit linux technical
slug: cockpit-0.113
category: release
summary: Cockpit releases every week. Here's highlights from 0.112 and 0.113.
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release every week. Here are the highlights from this weeks 0.111 and 0.112 releases.
### Display time information for systemd timer jobs
Harish Anand a Google Summer of Code student working on Cockpit, and he's implementing
systemd timers. These are similar to cron jobs, and are a structured way of running
a command or other systemd unit at a specific time. Some of his initial work got merged,
and you can see it in action here:
### Hide Unmanaged Network Interfaces
NetworkManager has the concept of marking certain network interfaces as "unmanaged".
This is done with a ```NM_CONTROLLED="no"``` setting in a file placed in
```/etc/sysconfig/network-scripts/```. Cockpit now respects the admins wishes and
and hides such interfaces from its Network configuration.
The *On/Off* switch is also disabled appropriately for unknown interfaces.
### Network bonds are created with Active/Backup
When a new network bond is created the *Active/Backup* mode is used as
the default. This is a more common choice for admins, and makes sense
to point people in this direction.

### Added textual fields to container resource sliders
Users can now type actual amounts in memory megabytes, or CPU shares
when starting a container, in addition to being able to use a slider.

### Disable tuned correctly when disabling performance profiles
The tuned service needs to be stopped and disabled when choosing the "none"
performance profile. The behavior now lines up with what users expect
using the ```tuned-adm``` command line tooling.
### From the Future
Lars [is working on](https://github.com/cockpit-project/cockpit/pull/4633) making the
terminal be resizable, so you're not limited to a small display when working on
the machine.
### Try it out
Cockpit 0.113 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.113)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.113-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-07-12-cockpit-0.114.md
================================================
---
title: Cockpit 0.114
date: 2016-07-12 13:51
tags: cockpit linux technical
slug: cockpit-0.114
category: release
summary: Cockpit releases every week. Here's highlights from 0.114.
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release every week. Here are the highlights from this weeks 0.114 release.
### Test every change on CentOS
Cockpit runs all its tests suites against code before that code is merged, much less
becomes part of a release. This isn't just unit tests, but integration booting of
RHEL, Debian, Fedora and Atomic machines.
We now added CentOS to that list. We now boot CentOS 7.x instances many hundreds of times
a day to test aspects of the system, and how Cockpit and a given pull request interact with it.
### Show SSH host keys and machine ID
The main system info page now shows the
[local machine ID](https://www.freedesktop.org/software/systemd/man/machine-id.html) for
easy access.
You can also see the fingerprints of all the [SSH host keys](https://en.wikipedia.org/wiki/Secure_Shell).
These are the fingerprints that you would be expected to recognize and/or add to the
```known_hosts``` file when accessing the machine over SSH.

### Allow changing the ethernet MTU
You can now change the ethernet
[maximum transmission unit](https://en.wikipedia.org/wiki/Maximum_transmission_unit) in the
network configuration.
### Show intelligent password error messages
When choosing a password Cockpit validates the password using the ```pwscore``` tool.
Appropriate and descriptive error messages are now shown when the validation fails:

### Red Hat subscription registration options
The Red Hat subscriptions functionality has been enhanced. You can now specify an activation
key when registering the system. This key is generated in your organization in such a
way that it uniquely identifies whan kind of software should be available on the system.
You can now also specify an organization when registering the system.
### From the Future
Marek [is working on](https://github.com/cockpit-project/cockpit/pull/4434) a new part of
the admin interface to list the virtual machines running on the current system. This is
the beginnings of a web accessible [virt-manager](https://virt-manager.org/) tool:

### Try it out
Cockpit 0.114 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.114)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.114-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-08-11-cockpit-0.117.md
================================================
---
title: Cockpit 0.117
date: 2016-08-11 12:36
tags: cockpit linux technical
slug: cockpit-0.117
category: release
summary: Cockpit releases every week. Here's highlights from 0.115, 0.116 and 0.117.
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's a new release almost every week. Here are the highlights from this the 0.115, 0.116 and 0.117 releases.
### Configure volumes and environment for a Docker container
Vanlos Wang implemented support for configuring volumes and environment
variables when running a container in the Cockpit UI. This allows you
see what environment variables and volumes an image is pre-configured
to have. It then allows the user to define additional environment variables
and volumes for the new container, and then commit those changes to a
new image if desired.
Take a look:
### Setup container and image storage
Marius worked with Dan Walsh and and others to implement a UI for configuring
the Docker container and image storage pool. It's now easy to add additional
disks or storage to that pool, or reset it to a clean state.
On some operating systems like [Atomic Host](http://www.projectatomic.io/download/),
this storage pool is present by default,
and elsewhere this container storage pool can be set up.
Relatedly on the command line, checkout the new
[```atomic storage```](https://raw.githubusercontent.com/projectatomic/atomic/master/docs/atomic-storage.1.md)
sub-command which does the same configuration tasks, that previously had to be configured
with arcane configuration files.
### Support for Network Teaming
Marius also added support for
[configuring network teaming](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/ch-Configure_Network_Teaming.html)
to Cockpit. Network teams are
similar to network bonds, in that they combine two network interfaces into
one, and involve failover or load balancing modes. But teams have more robust
terminology and implementation.
Since teams are a server side feature, this will replace the functionality for
defining teams in Linux Desktop control center applications.
Support for configuring bonds in Cockpit will remain for the time being until
the team support can be relied upon to completely replace that functionality.
Both NetworkManager and Cockpit are involved in this.
Here's a video demoing the changes:
### Pulling images without authentication from the Openshift Registry
The Openshift image registry now supports pulling images without first
logging in. It can be configured to allow this on a per-project basis.
This allows images to be shared from the registry with a broader audience
of developers or image consumers, such as scripts.
Aaron Weitekamp worked on adding support the Registry console to
configure projects to allow pulling images without authentication.
Here's a video of those changes:
### Don't allow formatting extended partitions
Cockpit no longer erroneously allows formatting certain partitions, such as
extended partitions containing other logical partitions.
### Try it out
Cockpit 0.117 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/0.117)
* [Fedora 24](https://bodhi.fedoraproject.org/updates/cockpit-0.117-1.fc24)
* [COPR for Fedora 23, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-09-08-cockpit-118.md
================================================
---
title: Cockpit 118
date: 2016-09-08 14:50
tags: cockpit linux technical
slug: cockpit-118
category: release
summary: Cockpit releases regularly. Here's highlights from 118
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). There's usually
a release every week, but this time around we were delinquent and it's been nearly a month.
You'll notice that we've dropped the ```0.x``` from the beginning of the
version numbers. This underscores the fact that Cockpit is stable. We've been
regularly releasing functionally stable releases for most of the last year.
And over the last few months we've worked hard on identifying stable javascript
APIs and protocols for various Cockpit components to consume. We'll be itemizing
these stability guarantees in the documentation shortly.
### Timer jobs in systemd
Harish did great work during Google Summer of Code to add support for
[systemd timers](https://www.freedesktop.org/software/systemd/man/systemd.timer.html).
Timers let users schedule tasks similar to cron jobs. Timers are now listed,
and dialogs for defining jobs and their recurring patterns are now included
in Cockpit.
Harish [detailed his work in a blog post](https://medium.com/@harishanand95/gsoc-creating-timers-in-cockpit-f4034c79df51#.wdq8gtdxc).

### Two factor auth on login screen
Peter pulled off a major change to have full PAM conversations supported
on the Cockpit login screen. This means you can use two factor
authentication dongles or Yubikeys in your login workflow in Cockpit.
In addition, for the next release Stef worked on allowing the user to
change expired passwords while logging in, similar to how they would
on the console.
Take a look:
### Use Webpack to build the Cockpit interface
Most of Cockpit is written in javascript and runs in the browser. This
code is now built with [Webpack](https://webpack.github.io/). It's bundled
into single page application bundles per Cockpit component. Among
other things, this makes hacking on Cockpit much easier.
The [documentation has been updated](https://github.com/cockpit-project/cockpit/blob/master/HACKING.md)
to show what you need to do to make a change to Cockpit either with
Vagrant or on your local machine.
### SSH key loading and Docker resources work on Debian
The container resource usage graphs and resource limit dialogs now
work properly on Debian. Stef adapted the code to account for the different
CGroup layout than Docker uses on Debian.
In addition the SSH key listing code now works on Debian.
### Configure Cockpit URLs with an HTTP prefix
The HTTP URLs that Cockpit uses can now have a (mostly) arbitrary prefix
in their path. This is useful in scenarios where Cockpit is proxied by
another application or management console. Use the ```UrlRoot``` option
[in cockpit.conf](https://cockpit-project.org/guide/latest/cockpit.conf.5.html).
### Components can require a minimum Cockpit version
Cockpit is built from various components that are independently installable
and composable. Various components provide network configuration, or storage,
or container functionality.
These components can now indicate which part of the base javascript and base
```cockpit-bridge``` they require in order to function. This is
[configured in the package manifest](https://cockpit-project.org/guide/latest/packages.html#package-manifest).

### Try it out
Cockpit 118 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/118)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-118-1.fc25)
* [COPR for Fedora 24, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-10-21-cockpit-120.md
================================================
---
title: Cockpit 120
date: 2016-10-21 13:22
tags: cockpit linux technical
slug: cockpit-120
category: release
summary: Cockpit releases regularly. Here's highlights from 119 and 120
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release
regularly. Here are the release notes from versions 119 and 120.
You'll notice that we've dropped the ```0.x``` from the beginning of the
version numbers. This underscores the fact that Cockpit is stable. We've been
regularly releasing functionally stable releases for most of the last year.
### Expandable and Filterable Containers and Images
Lars reworked the Containers section of Cockpit. The various images and
containers are not expandable inline, and it's also easy to find a specific
image and container by using the filter bar to search for it.
Take a look:
### VM Configuration and Monitoring
Marek worked on a new interface in Cockpit for configuring and monitoring
virtual machines running on the current system. This has the ability to
grow into something like the desktop ```virt-manager``` tool.
It looks something like this:

### Unmanaged Network Devices
Cockpit now shows unmanaged network devices in its listing. You can't configure
them or do much with them, but their presence is acknowledged. This should make
troubleshooting non-standard configurations easier.
### Sidebar for Physical Volumes in a Volume Group
Marius added a sidebar that shows up on LVM groups or volumes, that shows
which physical devices are involved.
Here's an example:

### SSH connections are run in a separate process
When Cockpit connects to an additional server it uses SSH, much like
Ansible or other tools. We now launch a separate ```cockpit-ssh``` process
for each outgoing connection to another server.
This lets us isolate the involved code much better, providing security
benefits. But it also makes it possible to insert additional logic when
embedding Cockpit. It's possible to put in shims to lookup keys, single-sign-on
tokens or keytabs, and so on.

### Only connect to remote machines already known to Cockpit
When connecting to additional machines via SSH, Cockpit now refuses to
connect to machines it doesn't have a host key for. This tightens up
security and prevents certain reflection attacks.
### Fix bugs preventing Logs page from working in Firefox 49
The Logs section of Cockpit failed to function on Firefox 49. This
version includes a fix for that.
### Add tooltip describing group name in Roles list
When configuring local user accounts, one can assign various roles such
as 'Server Administrator' to the account. Cockpit now displays the Unix
user group that is involved in the role.

### From the future
Marius added support for NetworkManager checkpoints. This means that
while configuring network interfaces, if a change would cause Cockpit
to disconnect, then Cockpit can revert the change and retain connectivity
to the system.
This is similar to how a Linux Desktop asks you to click in a dialog
if you accept the new screen configuration. Except in the networking
case we can test the connectivity automatically.
### Try it out
Cockpit 120 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/120)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-120-1.fc25)
* [COPR for Fedora, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-10-28-cockpit-121.md
================================================
---
title: Cockpit 121
date: 2016-10-28 18:06
tags: cockpit linux technical
slug: cockpit-121
category: release
summary: Cockpit releases regularly. Network Checkpoints and other highlights from
version 121
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release
regularly. Here are the release notes from version 121
You'll notice that we've dropped the ```0.x``` from the beginning of the
version numbers. This underscores the fact that Cockpit is stable. We've been
regularly releasing functionally stable releases for most of the last year.
### Network Configuration Rollback
NetworkManager now has support in its API for detecting whether a network
configuration change broke connectivity to the system. Marius did work
so that Cockpit can detect this and have NetworkManager rollback the
changes that would have caused a remote admin to be disconnected from
the system.
This is similar to how a Linux desktop asks you to click in a dialog
if you accept the new display configuration. Except in the networking
case we can test the connectivity automatically.
Check it out:
### Debian Branding
Cockpit now shows proper branding when running on Debian, and uses the
logo installed on the system on its login screen.

### Fix Kerberos single sign on Debian and Ubuntu
Stef fixed Kerberos single sign on Debian and Ubuntu. More changes are
coming in the next release including support for use with
[gssproxy](https://fedoraproject.org/wiki/Features/gss-proxy) and expanding
support for non-Kerberos GSSAPI authentication mechanisms.
### Debugging info for Javascript and CSS
Cockpit now ships proper Javascript and CSS debugging "map" files in its
cockpit-debuginfo packages. These make it easier to troubleshoot issues
and develop code that runs in Cockpit.
### From the future
Peter is adding support for specifying an alternate server to connect
to on the login screen.
This completes the story of the "bastion host" which is accessible via
a web browser, in effect letting you connect via the Web Browser from
the login screen to other machines which only have SSH access available.
When using a bastion setup like this you only need a single trusted
TLS certificate and the remaining trust is ensured by SSH known host keys.
This feature will be used to implement click-through access to configure a host
in projects such as ManageIQ or RHEV.
### Try it out
Cockpit 121 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/121)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-121-1.fc25)
* [COPR for Fedora, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-11-03-cockpit-122.md
================================================
---
title: Cockpit 122
date: 2016-11-03 20:31
tags: cockpit linux technical
slug: cockpit-122
category: release
summary: About bastion hosts and other highlights from version 122
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release
regularly. Here are the release notes from version 122
### Logging into a system via a Bastion Host
On the Cockpit login screen you can now choose an alternate host to connect
to. Cockpit with use SSH to authenticate you against that host, and display
the admin interface for that host.
Although browsers cannot use SSH directly to connect to machines or
authenticate against them, Cockpit can make this happen. Only one host
needs to have Cockpit listen on port 9090 available to browsers over TLS,
and other hosts can only have SSH accessible on the usual port 22.
Here's an example:
### Works with UDisks in addition to storaged
[storaged](https://github.com/storaged-project/storaged)
is an actively maintained API for configuring storage on a Linux system.
It is a fork of the older
[UDisks](https://www.freedesktop.org/wiki/Software/udisks/). storaged
has additional functionality, like LVM, iSCSI and Btrfs and a large number
of stability fixes.
However some systems like older RHEL or Ubuntu don't yet have storaged.
Cockpit can now also use the older UDisks to configure storage on a system.
A large number of features are disabled, but basic functionality is present.
### Explicitly specify javascript dependency versions
Cockpit's bundles various javascript dependencies in its admin interfaces,
such as
[Patternfly](http://www.patternfly.org) or
[React](https://reactjs.org/). In order to help packagers
we've now explicitly specified the versions of those dependencies. And
during development we pull them in using the standard
[Bower](https://bower.io/) registry.
You can see [those versions here](https://raw.githubusercontent.com/cockpit-project/cockpit/master/bower.json).
### From the future
Lars has worked on functionality to show the OpenSCAP security scan results
for containers. This uses the usual ```atomic scan``` functionality that
you see on Atomic Host.

### Try it out
Cockpit 122 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/122)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-122-1.fc25)
* [COPR for Fedora, CentOS and RHEL](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/)
================================================
FILE: _posts/2016-11-25-cockpit-125.md
================================================
---
title: Cockpit 125
author: stef
date: 2016-11-25 09:14
tags: cockpit linux
slug: cockpit-125
category: release
summary: Cockpit is properly translatable and displays OSTree signatures.
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release
regularly. Here are the release notes from version 123, 124 and 125.
### Cockpit is now properly translatable
Cockpit is now properly translatable. It was a big task to extract
all the translatable strings and make translations work consistently
between the browser and installed tools like the bridge.
We now start also run the login user session with a proper locale and
```LANG``` environment variables.
You can help
[translate cockpit in Zanata](https://fedora.zanata.org/iteration/view/cockpit/master)
or if you find text in the frontend that isn't translatable, then
please do report it.

### Display OSTree signatures
Peter implement displaying
[OSTree tree](http://www.projectatomic.io/docs/os-updates/) signatures. You
can tell where a certain update tree came from and who signed it.

### New expandable views for storage partitions
Marius implemented expandable views in the *Storage* pages. These let
you dive into the details of a particular partition without having
to navigate away from the page describing where it lives.

### Other storage fixes
Marius did work to fix many other storage related bugs. In particular
Cockpit now deals properly with passphrases stored for LUKS encrypted
devices, and also no longer offers to format read-only block devices.
### Full testing on RHEL 7.3, Ubuntu 16.04 and Debian 8 Jessie
The Cockpit project started testing on Cockpit on RHEL 7.3, Ubuntu 16.04
and Debian 8 Jessie along with the operating systems we tested with earlier.
These will be part of our usual continuous integration, where we boot
thousands or tens of thousands of instances per day to test code changes
and contributions.
Marius fixed many bugs we found, and filed operating system bugs in
the issue trackers for those operating systems.
You can see the [which operating systems](https://cockpit-project.org/running.html)
we test Cockpit on. There's no Debian Jessie repository yet, but hopefully
we can have that ready as time permits.
### System shutdown can be scheduled by date
Fridolin did work a long time ago, so that users could select a specific
date and time to schedule a shutdown or reboot of the system. Stef
finished that work added tests and it's now in Cockpit.

### Properly terminate user sessions on the Accounts page
The *Accounts* page now properly terminates user sessions when the
*Terminate Session* button is clicked. We use the correct systemd
[loginctl](https://www.freedesktop.org/software/systemd/man/loginctl.html)
commands.
### Try it out
Cockpit 125 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/125)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-125-1.fc25)
================================================
FILE: _posts/2017-01-09-cockpit-127.md
================================================
---
title: Cockpit 126 and 127
author: stef
date: 2017-01-09 09:44
tags: cockpit linux
slug: cockpit-127
category: release
summary: Cockpit shows container image security scan info.
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release
regularly. Here are the release notes from version 126 and 127.
### Show security scan information about container images
Lars did work to show security scan information about container images. The
displayed scans happen via the
[atomic scan](https://developers.redhat.com/blog/2016/05/02/introducing-atomic-scan-container-vulnerability-detection/)
tools and the data comes from the [OpenSCAP](https://www.open-scap.org/) system.
Take a look at the video below.
### Choose whether password is cached and reused on the login screen
The typical workflow for performing privileged tasks on a Linux system is to
log in as a non-root user and then use [sudo](https://www.sudo.ws/) or
[Polkit](https://en.wikipedia.org/wiki/Polkit) to escalate privileges.
Stef did work to make Cockpit's privilege escalation reflect this properly.
Cockpit now has an option on the login screen to
*Reuse my password for privileged tasks*. Checking this option automatically
performs reuses the login password as necessary to escalate privileges. If
you leave this box unchecked then Cockpit will behave exactly as a normal
user login without special privileges.
In the future we'll have a way to enable this option once logged in, and
retype your password inside of the logged in session.
Here's a video which shows how this works:
### The remotectl command can now combine certificate and key files
Peter did work to make it easier to use TLS certificate and key files with
Cockpit for port 9090. Normally the server certificate(s) and key need to be
combined into a single file and placed into the ```/etc/cockpit/ws-certs.d```
directory. The ```remotectl``` command that comes with Cockpit can now be
used to build such a combined file:
```unknown
remotectl certificate server.pem chain.pem key.pem
```
Due to this, when Cockpit is deployed as an Openshift Pod it can use certificates
provided by Openshift.
### Cockpit respects /etc/shells
Martin fixed Cockpit so it only allows the user to log in if the user has a
valid shell listed in ```/etc/shells```. In addition bugs on Ubuntu and Debian
have been fixed where users were created without valid shells.
### Allow renaming of active devices in networking interface
You can now rename network devices like bonds or bridges while they're active.
The change will apply immediately and without any interruption in service.
### Rename cockpit-shell to cockpit-system
The ```cockpit-shell``` subpackage has been renamed to ```cockpit-system``` to
better reflect its focus: configuring and troubleshooting the local system.
### Kerberos authentication now work even if gss-proxy is in use
Sometimes Kerberos (or GSSAPI) single-sign-on authentication requires multiple
round trips to the server. Cockpit now supports this properly, and the end result
is that SSO works even when fancy things like
[GSS-Proxy](https://fedorahosted.org/gss-proxy/) are in use.
### Try it out
Cockpit 127 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/127)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-127-1.fc25)
================================================
FILE: _posts/2017-01-19-cockpit-129.md
================================================
---
title: Cockpit 128 and 129
author: dperpeet
date: 2017-01-19 09:00
tags: cockpit linux
slug: cockpit-129
category: release
summary: Cockpit supports rebasing on Atomic Host with OSTree.
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release
regularly. Here are the release notes from version 128 and 129.
### Manage remotes and rebasing in OSTree
When working with OSTrees on operating systems like [Atomic Host](http://www.projectatomic.io/docs/os-updates/)
there will often be multiple branches to choose from. For example there may be a beta version of the operating system.
Thanks to Peter's work, Cockpit can now switch between branches and view and activate OSTrees from those branches.
Also, Cockpit supports managing multiple remotes and viewing their branches. Remotes are a way of describing
where OSTree should pull updates from. Take a look at the video below for a demo.
### The subpackage cockpit-dashboard has been split out
The new ```cockpit-dashboard``` subpackage contains the dashboard itself and
the ```cockpit-ssh``` process. Eventually this paves the way for more flexibility
regarding authentication processes, but for now ```cockpit-ws``` unconditionally
depends on ```cockpit-dashboard```, and also requires the identical versions.
Nothing changes for those who install the ```cockpit``` package. But this allows more
flexibility when using Cockpit for specific use cases.
### Issues upgrading Cockpit on Debian and Fedora have been fixed
Our packaging changes in recent versions broke upgrading Cockpit on Debian and Fedora.
This is fixed now and updates should work properly once again.
### On Atomic, sosreport works again
A bug that prevented the diagnostic tool sosreport from working on Atomic systems was fixed.
Generating and accessing these diagnostic reports can be very helpful when diagnosing or
reporting an issue on the system.
### Optionally disable the dependency on libssh
When configuring Cockpit, the option ```disable-ssh``` disables building ```cockpit-ssh``` and removes the
dependency on ```libssh```. This is useful when building on an operating system where ```libssh``` is not available.
### Try it out
Cockpit 129 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/129)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-129-1.fc25)
================================================
FILE: _posts/2017-02-24-cockpit-132.md
================================================
---
title: Cockpit 130, 131 and 132
author: dperpeet
date: 2017-02-24 09:00
tags: cockpit linux
slug: cockpit-132
category: release
summary: Cockpit supports configuring kdump and MAC addresses
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release
regularly. Here are the release notes from version 130, 131 and 132.
### Kernel dump configuration support added
Kernel crash dump configuration is now possible in Cockpit: view and toggle the status of the kdump service,
with hints how to enable if the kernel boot parameters need to be changed. Cockpit shows the amount of reserved
memory and setting a path for dumping the kernel on the local filesystem, with a toggle for compressing the crash dumps.
Take a look at the video below for a demo.
### MAC addresses for ethernet adapters and bonds can be modified
On the Networking page, MAC addresses for ethernet adapters can now be clicked to edit them, starting with
NetworkManager version 1.4. For bonds, the MAC addresses are shown and can be edited starting with NetworkManager
version 1.6. Take a look at the video below for a demo.
### Show session virtual Machines on the machines page
Libvirt differentiates between system virtual machines and session ones, which are tied to the user. In Cockpit
all the virtual machines accessible to the logged in user, system and session, are now shown in a combined list.

### SELinux functionality is now available without setroubleshootd
The SELinux page in Cockpit can do more than just troubleshoot. It was therefore renamed to ```SELinux``` and
the functionality of toggling between enforcing/permissive mode is now also available even if ```setroubleshoot-server```
isn't installed. This was cause for unexpected behavior on Atomic Host systems without ```setroubleshoot-server```
where it's non-trivial and often undesired to add that package.

### Try it out
Cockpit 132 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/132)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-132-1.fc25)
Use the packages to install this version of Cockpit. When installing from the tarball, remove
/etc/systemd/system/cockpit.service.d/fatal.conf manually afterwards to prevent Cockpit from exiting in rare cases.
================================================
FILE: _posts/2017-03-02-cockpit-133.md
================================================
---
title: Cockpit 133
author: dperpeet
date: 2017-03-02 09:00
tags: cockpit linux
slug: cockpit-133
category: release
summary: Cockpit supports alternate bridges via packages
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release
regularly. Here are the release notes from version 133.
### Remotely managed machines are now configured in /etc/cockpit/machines.d
Cockpit plugins, other packages, admins, VM management software, or config management systems like
Ansible/puppet/cloud-init might want to pre-configure machines for cockpit. Previously this information
was stored in ```/var/lib/cockpit/machines.json```, but now that information is stored in individual json
files in ```/etc/cockpit/machines.d```. Existing ```machines.json``` files are migrated automatically to the new
format. Check out the documentation below for more information on the format and use.
[Multiple machines documentation](https://cockpit-project.org/guide/133/feature-machines.html)
### Packages can register additional bridges
On the server side the ```cockpit-bridge``` connects to various system APIs. There are additional bridges for specific
tasks that the main ```cockpit-bridge``` cannot handle, such as tasks that should be carried out with privilege
escalation. These additional bridges can be registered in the ```bridges``` section of a package's ```manifest.json```
file. Check out the documentation below for more information on the format and use.
[Additional bridges](https://cockpit-project.org/guide/133/packages.html#package-bridges)
### Split translations into individual packages
Behind the scenes there's been a lot of work on making translations work more smoothly and future-proof.
As part of this the translations have been split into the individual packages, which also means they can be updated
per package in the future. Check out the Zanata link below, it's very easy to contribute translations to Cockpit.
At this time our top 3 translations (>90%) are Polish (pl), Ukrainian (uk) and Chinese (zh-CN). Every bit of help
here is greatly appreciated and a big thank you to our contributors!
[Cockpit translations](https://fedora.zanata.org/project/view/cockpit?dswid=-8859)
### Try it out
Cockpit 133 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/133)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-133-1.fc25)
================================================
FILE: _posts/2017-03-09-cockpit-134.md
================================================
---
title: Cockpit 134
author: dperpeet
date: 2017-03-09 18:00
tags: cockpit linux
slug: cockpit-134
category: release
summary: Cockpit is now fully translatable
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 134.
### Login page is now translatable
The majority of Cockpit has long been translatable. Since the login page is a bit of a special case, it required some
special attention to make that also play well with the language display settings. Take a look at the video below for a demo.
Check out the Zanata link below, it's very easy to contribute translations to Cockpit.
At this time our top 3 translations (>90%) are Polish (pl), Ukrainian (uk) and Chinese (zh-CN). Every bit of help
here is greatly appreciated and a big thank you to our contributors!
[Cockpit translations](https://fedora.zanata.org/project/view/cockpit?dswid=-8859)
### Show message of the day on the System page
Cockpit now supports one more feature it was previously missing compared to the command line login: the ```System```
page now shows the current message of the day (```/etc/motd```). When dismissed by clicking on the ```X``` close button,
the message is hidden until it changes.

### Expose fewer system service actions
Cockpit previously exposed systemd unit actions such as ```Reload or Try Restart``` which are primarily intended for
scripts. The dropdown list now only shows actions which are useful for interactive human usage: ```Start```, ```Stop```,
```Restart``` and ```Reload```.

### Try it out
Cockpit 134 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/134)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-134-1.fc25)
================================================
FILE: _posts/2017-03-15-cockpit-135.md
================================================
---
title: Cockpit 135
author: dperpeet
date: 2017-03-15 22:00
tags: cockpit linux
slug: cockpit-135
category: release
summary: Cockpit with authorization and authentication changes
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 135.
### Redesigned sidebar navigation
The existing page menu took some getting used to for some use cases. It's now easier to use when connected to multiple
hosts and provides the basis for future improvements that will reduce or remove the horizontal menu entries. On systems
where the top navigation bar doesn't have any useful information, such as when there is no Dashboard, the top
navigation bar is removed entirely. Check out the screenshot below for a peek at the new sidebar design.

### Indicator in top bar shows privilege escalation
On the login page a user can allow Cockpit to use the password for privileged tasks. A new indicator in the top bar
shows an ```unlocked``` state when these privileges are available and a ```locked``` state if they aren't. The user
can click on the indicator in the ```unlocked``` state to drop privileges for the rest of the session. In some cases
privileges cannot be dropped - among others for root and no-password sudo users - and the indicator will disappear.
Check out the video below to see this in action.
### Disks are now shown for virtual machines
The expanded information for entries on the ```Virtual Machines``` page now contains information on a machine's disks,
such as the device, read only state and for disk images the local file path. Information on disk capacity is only
available with more recent versions of libvirt. Check out the screenshot below to see how this looks.

### New developer tool can close active Cockpit pages
Once pages in Cockpit, such as ```Networking``` or ```System```, are opened they usually stay open in the background,
even if they aren't visible. This is important on most pages to ensure the code can continue interacting with the
system in the background, user input isn't lost, and the page doesn't have to be reloaded when the user returns to it.
For the cases when a user wishes to actually close the page there is a new entry next to ```Display Language``` in
the user drop down menu, named ```Active Pages```. It only becomes visible when the ```ALT``` key is pressed while
clicking on the menu dropdown. On some drag enabled browsers it doesn't work to just use ```ALT```, but any combination
involving ```ALT```, such as ```CTRL+ALT```, also works. Check out the screenshot below for a peek.

### SSH connections established within the user session
When one Cockpit instance connects to other machines it does so via SSH. Previously
these connections were launched from cockpit-ws, the process listening on the network.
As part of making Cockpit mirror standard Linux practices better, SSH connections are
now made from within the logged in user session, launched from the cockpit-bridge
process. This allows Cockpit to use credentials from the logged in user session while
establishing those SSH connections, such as kerberos tickets, the ssh-agent or private keys.
### Try it out
Cockpit 135 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/135)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-135-1.fc25)
================================================
FILE: _posts/2017-03-30-cockpit-137.md
================================================
---
title: Cockpit 136 and 137
author: dperpeet
date: 2017-03-30 22:00
tags: cockpit linux
slug: cockpit-137
category: release
summary: Cockpit with menu and storage changes
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from versions 136 and 137.
### Reordered entries in the sidebar menu
As a followup to the new look, the entries in the sidebar menu have now been reordered in a more sensible fashion:
* System information
* Logs for troubleshooting
* Configuring major subsystems: Storage, Networking
* What's running: Containers and Virtual Machines
* Implementation details: Admin accounts, Services/Units
Check out the screenshot below to see how this looks now.

### Storage management is more convenient
In order to make configuring storage more convenient, the Cockpit UI now prevents removing disks from a RAID when
removal would lead to data loss due to an insufficient number of remaining volumes in the RAID. Also, when creating
a Volume Group (LVM) or adding disk space to a Volume Group, unpartitioned space is now offered as a choice.
If selected, Cockpit automatically creates a partition before adding it to the Volume Group. Check out the screenshots
below to see how these features look.


### Consider user known_hosts for ssh connections
When managing remote machines, Cockpit now considers known host keys in the user's `~/.ssh/known_hosts` in addition to
the system-wide `/etc/ssh/ssh_known_hosts`. This makes Cockpit behave more like the standard ssh client.
### Try it out
Cockpit 137 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/137)
* [Fedora 25](https://bodhi.fedoraproject.org/updates/cockpit-137-1.fc25)
================================================
FILE: _posts/2017-06-09-cockpit-142.md
================================================
---
title: Cockpit 142
author: pitti
date: 2017-06-09 16:00
tags: cockpit linux
slug: cockpit-142
category: release
summary: Cockpit with Virtual Machine improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from versions 141 and 142.
### Virtual machines display an interactive console
The Virtual Machines page now offers easy access to graphical consoles in the new "Console" tab. If the VM has a VNC server
enabled, then there is now an inline [noVNC](https://github.com/novnc/noVNC) console:

If the VM only has a SPICE server, or the inline console is not sufficient, you can use "Switch to Desktop Viewer" and with a
single button click open virt-viewer for that VM:

See it in action:
### Document how to grant/restrict access via polkit rules
Users who are not administrators can normally not perform actions such as
changing the hostname or start/stop systemd services. The
[Privileges and Permissions](https://cockpit-project.org/guide/latest/privileges.html#privileges-polkit)
section in the guide and the
[systemd feature page](https://cockpit-project.org/guide/latest/feature-systemd.html) now describe how to use polkit
rules allow fine-grained permissions such as "that user can restart this particular service".
### Attempt to tear down used partitions when formatting disks
Trying to format a disk on the "Disks" page which still has partitions which are in use (mounted or used as an LVM
physical volume) will now attempt to unmount/remove the physical volume, instead of just failing:

### Try it out
Cockpit 142 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/142)
* [Fedora 26](https://bodhi.fedoraproject.org/updates/cockpit-142-1.fc26)
================================================
FILE: _posts/2017-06-19-cockpit-143.md
================================================
---
title: Cockpit 143
author: pitti
date: 2017-06-19 14:00
tags: cockpit linux
slug: cockpit-143
category: release
summary: Cockpit with new Software Updates page
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 143.
### "Software Updates" page for package based operating systems
There is a new "Software Updates" page for classic dnf/yum/apt based systems,
to complement the already existing one for OSTree on
[Atomic](https://www.projectatomic.io). This uses the [PackageKit
API](https://www.freedesktop.org/software/PackageKit/) for platform
independence. This feature is shipped in the new `cockpit-packagekit`
sub-package.
See it in action:
### Inline VNC consoles
The inline VNC console advertised in [Cockpit 142](https://cockpit-project.org/blog/cockpit-142.html)
was not actually working from the released `cockpit-machine` package due to a
packaging problem. Cockpit 143 corrects this problem. Thanks to Marek Libra!
### Kubernetes RBAC authorization support
The Kubernetes page can now be used to log into Kubernetes installations that
use [RBAC authorization](https://kubernetes.io/docs/admin/authorization/rbac/).
### RPM packages for IBM Z systems
The `cockpit-docker` RPM package is now being built on the s390x (IBM Z
Systems) architecture, as the Fedora Docker package is available there.
([#1462113](https://bugzilla.redhat.com/show_bug.cgi?id=1462113))
### Try it out
Cockpit 143 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/143)
* [Fedora 26](https://bodhi.fedoraproject.org/updates/cockpit-143-1.fc26)
================================================
FILE: _posts/2017-06-27-cockpit-hackfest.md
================================================
---
title: Cockpit Virtual Hackfest
author: stef
date: 2017-06-27 10:25
tags: cockpit linux
slug: cockpit-virtual-hackfest
category: release
summary: There's a Cockpit Hackfest underway in Karlsruhe, Germany. We're working
on virtual machine functionality in Cockpit.
---
There's a Cockpit Hackfest underway in Karlsruhe, Germany. We're working on the
virtual machine functionality in Cockpit.

That means interacting with libvirt. Although libvirt has remoting functionality
it has no API that's actually remotable and callable from Cockpit javascript code.
So Lars and Pavel started working on a DBus wrapper for the API.
At the same time, Martin is working on making the current
[virsh](http://libvirt.org/virshcmdref.html) based access to libvirt more
performant, so we don't block on waiting until the DBus wrapper is done.
Lots of work was done understanding [redux](https://redux.js.org/). The initial
machines code in Cockpit was written using redux, and we needed to map it's
concept of models and state to the Cockpit way of storing state on the server
and UI concepts like dialogs. Everyone was involved.
Andreas, Garrett have been working on designs for creating a virtual machine
and editing virtual machines. Dominik started work on implementing that code.
Marius worked on deletion of virtual machines, and already has a
[pull request](https://github.com/cockpit-project/cockpit/pull/7113) open.
Stef worked on the integration tests for the virtual machine stuff
and is booting nested VMs [using nested images](https://github.com/cockpit-project/cockpit/pull/7117).

Wheeee.
================================================
FILE: _posts/2017-07-03-cockpit-hackfest-wrapup.md
================================================
---
title: Cockpit Virtual Hackfest Wrapup
author: stef
date: 2017-07-03 16:25
tags: cockpit linux
slug: cockpit-virtual-hackfest-wrapup
category: release
summary: Here's what happened at the Cockpit Hackfest last week in Karlsruhe, Germany.
We've were working on virtual machine functionality in Cockpit.
---
Last week a bunch of us met up in Karlsruhe in Germany to work on virtual
machines support in Cockpit. We had some specialists there who helped us
get up to speed with VMs. Tons of pull requests opened, designs put together.
Some of the changes are already merged and
[released in Cockpit 144](https://github.com/cockpit-project/cockpit/releases/tag/144).
Marek helped all of us understand how
[Redux](https://redux.js.org/)
stores
and models data. The oVirt folks are using Redux a lot in front end code
and want to be able to share code. Marius
[managed to reconcile](https://github.com/cockpit-project/cockpit/pull/7121)
Redux with our dialog and
[promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)
code.
Creating virtual machines is hard. There's a surprising amount of strange
little details and corner cases. Andreas, Garrett, Pavel, Dominik and Michal were
involved in long discussions about how to make this work. And Dominik opened a
[pull request](https://github.com/cockpit-project/cockpit/pull/7128).


Stef and Marek worked on
[sharing](https://github.com/cockpit-project/cockpit/pull/7139)
[code](https://github.com/cockpit-project/cockpit/pull/7133)
[between](https://github.com/cockpit-project/cockpit/pull/7128)
the oVirt javascript code based on Cockpit and the more general
virtual machines code in Cockpit. Since most of the code is shared, we decided we
didn't want to create any further API here that we had to keep stable, but rather
build and develop the two in tandem. In the future some of the specific UI widgets
will be factored out into reusable stable javascript NPM components.
Martin
[refactored Cockpit's access to libvirt](https://github.com/cockpit-project/cockpit/pull/7131)
to be more efficient and scalable with the number of VMs.
It currently uses [virsh](https://libvirt.org/sources/virshcmdref/html-single/).
At the same time Lars and Pavel started a
[DBus based wrapper for libvirt](https://github.com/larskarlitski/libvirt-dbus). This
wrapper should be maintained near other libvirt bindings, such as
[libvirt-python](https://libvirt.org/python.html).
Marius added functionality to
[Delete virtual machines](https://github.com/cockpit-project/cockpit/pull/7113) from the
Cockpit UI.
Stef wrote code to
[boot real virtual machines](https://github.com/cockpit-project/cockpit/pull/7117) during
CI testing. We're using the same [Cirros](http://cirros-cloud.net/) Linux that oVirt and
Openstack use during testing.
And there were more pull requests and discussions, but I'm running out of space.
================================================
FILE: _posts/2017-07-07-cockpit-145.md
================================================
---
title: Cockpit 145
author: pitti
date: 2017-07-07 16:00
tags: cockpit linux
slug: cockpit-145
category: release
summary: Cockpit with Machines, Terminal, and Software Updates improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 144 and 145.
### Terminal size
The Terminal now uses the full window size and dynamically resizes with it.
Previously its size was fixed to 80x24 characters.

### Machines page reactiveness
The Machines page now listens to libvirt events instead of reading the entire
state of all virtual machines every ten seconds. This makes the page much more
reactive to state changes and reduces the number of calls to `virsh`.
### Delete VM functionality
A "Delete" button/dialog was added to the Machines page. If the VM is still
running, it will be force-stopped first. The dialog also offers you the choice
to remove the VM's disk images as well.

### Retire external Machines provider API
Cockpit 132 introduced an external API for the Machines page that allowed third
party plugins to dynamically add/manage virtual machines from providers other
than libvirt. This was found to be not supportable in the long run and thus was
discontinued.
### ABRT integration
On Fedora 26 the Logs Page now shows Problem reports from the ABRT crash
reporting tool. They appear as new message class "Problem" in the journal view,
and their details can be visited when clicking on them:


Thanks to Matej Marusak for this feature!
### Always recommend restarting after applying Software Updates
Most supported operating systems in Cockpit don't provide a reliable
detection of whether they require restarting the machine after applying updates
for them to fully take effect. This particularly affects updates to the kernel,
but also restarting services. For now, Cockpit will always recommend to
restart the machine after applying updates:

### Cancelling Software Updates
The Software Updates page now has a Cancel button that is enabled while it is
still safe to abort a running update, i.e. while the updates are still being
downloaded.
### Try it out
Cockpit 145 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/145)
* [Fedora 26](https://bodhi.fedoraproject.org/updates/cockpit-145-1.fc26)
================================================
FILE: _posts/2017-07-21-cockpit-146.md
================================================
---
title: Cockpit 146
author: pitti
date: 2017-07-21 10:00
tags: cockpit linux
slug: cockpit-146
category: release
summary: Cockpit with Software Updates improvements and GCE support
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 146.
### Software Updates page shows more information
The Available Updates and Restart recommended pages now show the packages
from the previous update run. This makes it easier to see which services to
check or to decide whether a restart is really necessary:

The new Update Log expander shows the previous steps of the running update:

### Improve available Software Updates layout for small/mobile screens
The Available Updates page now folds all information into a single column on
very narrow/mobile screens, to stay readable:

In addition, updates with a long changelog or a large number of subpackages now
get truncated, with a `More information…` expander. This avoids lots of empty
space that makes it difficult browse the updates list.
### Support OAuth Kubernetes logins with Google Compute Engine
The Kubernetes pages (Cluster) can now log into Google Compute Engine. Note
that there is no way to get information about the user, so they are being
displayed as `Unknown`.
### Fix reporting ABRT crashes that are already known to the server
Trying to report a crash (`Problems` category on the Logs page) that the FAF
server already knows previously caused an error message. This has been
corrected, and the report is now properly shown as `Reported`.
Thanks to Matej Marušák for this fix!
### Scroll the virtual machine VNC console into view automatically
When opening the builtin VNC console of a virtual machine, the page now
automatically gets scrolled to maximize visibility of the console.
Thanks to Marek Libra for this improvement!
### Try it out
Cockpit 146 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/146)
* [Fedora 26](https://bodhi.fedoraproject.org/updates/cockpit-146-1.fc26)
================================================
FILE: _posts/2017-07-25-cockpit-workshop-all-systems-go.md
================================================
---
title: 'Cockpit Workshop before "All Systems Go!"'
author: lars
date: 2017-07-25 16:00
---
We're organizing a Cockpit workshop in Berlin on the 19th and 20th of October, the two days preceding the [All Systems Go! conference](https://all-systems-go.io/), the successor to last year's systemd.conf.
The idea is to bring the Cockpit community together to help each other out in various areas relating to Cockpit. For example: getting started writing a module, tackling beginner tasks, or understanding Cockpit's general architecture.
If you're interested, please let us know that you're planning on coming [on the list](https://lists.fedorahosted.org/archives/list/cockpit-devel@lists.fedorahosted.org/thread/KFHYTTUK4YK3JDKDXDMB4ONQNLZRJR6V/) and which topics you'd like to learn or teach about. This will help us to plan accordingly.
Also, spread the word if you like the idea!
================================================
FILE: _posts/2017-07-27-cockpit-147.md
================================================
---
title: Cockpit 147
author: pitti
date: 2017-07-27 15:00
tags: cockpit linux
slug: cockpit-147
category: release
summary: Cockpit with Accounts improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 147.
### Add configuration of expiry to Accounts page
The Accounts page can now display and change the expiration of user accounts
and their passwords. Note that the login page supports changing expired
passwords.
See it in action:
Thanks to Fridolin Pokorny for this improvement!
### Consistently ignore loopback traffic on all network load graphs
The network load graphics on the System, Networking, and Dashboard pages
sometimes accounted traffic on the loopback network device (`lo`), which in
most cases is not interesting for administrators. Now the graphs always ignore
the loopback device.
### Fix the Kdump page in Internet Exporer
This page previously produced errors when being opened in Internet Explorer due
to using unsupported JavaScript functions. These got replaced.
### Try it out
Cockpit 147 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/147)
* [Fedora 26](https://bodhi.fedoraproject.org/updates/cockpit-147-1.fc26)
================================================
FILE: _posts/2017-08-04-cockpit-148.md
================================================
---
title: Cockpit 148
author: pitti
date: 2017-08-04 12:00
tags: cockpit linux
slug: cockpit-148
category: release
summary: Cockpit with Internet Explorer support
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 148.
### Support Cockpit in Internet Explorer
When using Microsoft Windows Internet Explorer, navigating between pages and
various other operations caused lost state changes, flickering, and lots of
JavaScript errors. These have been corrected, and automatic tests now run with
Internet Explorer as well.
### Update Cluster/Registry design for image streams
The design of the image streams on the Cluster and Registry pages has been
updated to match the design of the current OpenShift Web Console.

### Delete OpenShift session tokens on logout
If the Registry Console or Dashboard creates a new OpenShift session token on
login, it will now delete that token again on logout. This behaviour now
matches what the OpenShift Web Console does.
### Detect unregistered RHEL systems on Software Updates page
On RHEL systems which have not yet been registered or whose registration
expired, the Software Page would previously have claimed that "the system is up
to date". Now it detects if the system is unregistered and thus cannot receive
updates:

### Try it out
Cockpit 148 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/148)
* [Fedora 26](https://bodhi.fedoraproject.org/updates/cockpit-148-1.fc26)
================================================
FILE: _posts/2017-09-08-cockpit-150.md
================================================
---
title: Cockpit 150
author: pitti
date: 2017-09-08 10:00
tags: cockpit linux
slug: cockpit-150
category: release
summary: Cockpit with systemd and GCE 1.7.x improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from versions 149 and 150.
### Add information about unmet conditions for systemd services
Systemd units can have conditions which must be met in order for the service to
start. Cockpit now shows unmet conditions in the details of a service, so that
users can see why a service is in active.

### Automatically enable and start newly created timers on the Services page
Cockpit allows the user to create custom systemd timers on the Services page,
to run commands at particular times or after boot. Previously they had to be
explicitly enabled and started to become effective; this now happens
automatically.
### Support Kubernetes authentication providers in kube config files
Some kubernetes deployments such as Google Compute Engine use Kubernetes
authentication providers so that they can automatically regenerate their access
token when needed. Cockpit now supports kube config files using this format.
### Support sending non-maskable interrupt to VMs
The Shut Down button on the Machines page got a new option "Send Non-Maskable
Interrupt". This normally does not trigger a reaction (other than a kernel
message), but the Linux kernel can be configured to react to this with a kernel
panic. This allows administrators to debug hung virtual machines.

### Support Dashboard installation into OSTree overlay
The cockpit-dashboard package can now be installed as package overlay into
rpm-ostree. This enables managing multiple remote servers through one Cockpit
instance on Atomic based systems.
### Clear cockpit cookie on logout
Previously, after logging out (explicitly or due to session timeout) it could
happen that revisiting a seen page would show a cached version instead of the
login page. This has now been fixed by properly clearing Cockpit's browser
cookie.
### Try it out
Cockpit 150 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/150)
* [Fedora 26](https://bodhi.fedoraproject.org/updates/cockpit-150-1.fc26)
================================================
FILE: _posts/2017-09-21-cockpit-151.md
================================================
---
title: Cockpit 151
author: pitti
date: 2017-09-21 09:00
tags: cockpit linux
slug: cockpit-151
category: release
summary: Cockpit with Kubernetes fixes and SSH improvement
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 151.
### Support loading SSH keys from arbitrary paths
The User menu's Authentication dialog now supports entering arbitrary paths to
SSH keys for adding to the SSH authentication agent. Previously this only
offered keys present in the standard `~/.ssh` home directory.
See it in action:
### Support X-Forwarded-Proto HTTP header for Kubernetes
Newer Kubernetes versions support reading the
[X-Forwarded-Proto](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto)
HTTP header, which helps to determine whether or not a client used SSL to
connect to an intermediate proxy, load balancer, or similar. Cockpit's
Kubernetes (Cluster) dashboard now sets this header. Earlier versions have
already done that when hosted in OpenShift.
### Fix Kubernetes connection hangs
The previous Cockpit release 150 introduced a regression when connecting to
Kubernetes clusters. In some cases, like specifying a wrong server name or when
the Cluster did not send Authentication Provider information, the connection
attempt would hang indefinitely. This version corrects this bug.
### Try it out
Cockpit 151 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/151)
* [Fedora 26](https://bodhi.fedoraproject.org/updates/cockpit-151-1.fc26)
================================================
FILE: _posts/2017-10-06-cockpit-152.md
================================================
---
title: Cockpit 152
author: pitti
date: 2017-10-06 09:00
tags: cockpit linux
slug: cockpit-152
category: release
summary: Cockpit with new Applications page and automatic software updates
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 152.
### Add Applications page
This version introduces the "Applications" tool page. This is an extension
point for third-party software to add themselves to the Cockpit interface, by
shipping appropriate [AppStream](https://www.freedesktop.org/wiki/Distributions/AppStream/)
metadata.
Note that at the moment there are no real Cockpit applications available yet.
For testing this feature on Fedora, Marius Vollmer provides a
[COPR](https://copr.fedorainfracloud.org/coprs/mvo/cockpit-app-freeipa/)
repository that can be enabled with these commands:
```
dnf copr enable mvo/cockpit-app-freeipa
dnf install appstream-data-mvo
```
See it in action:
### Add automatic update configuration for dnf to Software Updates
On Fedora ≥ 26, the Software Updates page now offers to enable and configure
[dnf-automatic](https://fedoraproject.org/wiki/AutoUpdates) for automatic daily
or weekly updates.
For now this is only shown if the `dnf-automatic` package is already installed.
Future Cockpit versions will install that on demand, and also cover
Debian/Ubuntu systems.

### Fix cockpit-bridge crash if /etc/os-release does not exist
Some environments (particularly Docker containers) might not have an
`/etc/os-release` file, which `cockpit-bridge` previously required.
### Try it out
Cockpit 152 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/152)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-152-1.fc27)
================================================
FILE: _posts/2017-10-17-cockpit-153.md
================================================
---
title: Cockpit 153
author: pitti
date: 2017-10-17 10:00
tags: cockpit linux
slug: cockpit-153
category: release
summary: Cockpit with new oVirt package
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 153.
### Add oVirt package
This version introduces the "oVirt Machines" page on Fedora for controlling
oVirt virtual machine clusters. This code was moved into Cockpit as it shares
a lot of code with the existing "Machines" page, which manages virtual machines
through libvirt.
This feature is packaged in cockpit-ovirt and when installed it will replace
the "Machines" page.

### Packaging cleanup
This release fixes a lot of small packaging issues that were spotted by
rpmlint/lintian.
### Try it out
Cockpit 153 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/153)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-153-1.fc27)
================================================
FILE: _posts/2017-11-06-cockpit-155.md
================================================
---
title: Cockpit 155
author: pitti
date: 2017-11-06 17:00
tags: cockpit linux
slug: cockpit-155
category: release
summary: Cockpit with NFS client support
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 155.
### NFS client support
The Storage page now shows currently mounted NFS volumes and offers to
mount/unmount them. Note that this does not yet support Kerberos
authentication; for now this relies on the classic `hosts.allow`/`hosts.deny` ACLs.
See it in action:
### Add "Maintenance" switch for oVirt hosts
Switching a host to maintenance mode causes all VMs to be migrated to another
running oVirt host.

### Fix Terminal rendering issues in Chrome
Console programs like Midnight Commander which use graphical characters
were previously distorted in the Terminal in the Chrome Browser.
### Improve Ctrl+W behaviour in the Terminal
Ctrl+W is commonly being used in a Terminal shell to delete the last word, but
in web browsers it closes the current window or tab. Cockpit now causes a
confirmation dialog to pop up on Ctrl+W when the Terminal is focused to avoid
accidental closing.
### Support the upcoming OpenShift 3.7 release
When available, use the `rbac.authorization` API instead of the `policybinding`
API for determining project permissions. OpenShift 3.7 now properly supports
the former and stops supporting the latter. Cockpit remains compatible with
older OpenShift releases.
### Try it out
Cockpit 155 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/155)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-155-1.fc27)
================================================
FILE: _posts/2017-11-16-cockpit-156.md
================================================
---
title: Cockpit 156
author: pitti
date: 2017-11-16 08:00
tags: cockpit linux
slug: cockpit-156
category: release
summary: Cockpit with navigation redesign
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 156.
### Redesign main navigation and support mobile browsing
The top-level dashboard menus and second-level menus of them have been
redesigned to clarify the structure, be more extensible, and use less vertical
screen space:

This version introduces proper support for using on mobile phones and tablets.
As part of this, the login screen was rearranged in mobile mode to avoid
overlapping the on-screen keyboard with the user/password input fields:
|  | |  |
### Add project homepage links to Apps page
Applications on the Apps page now show a link to the project home page, if
provided in the AppStream metadata:

Thanks Benjamin Deering for this feature!
### Support alternate Kerberos keytabs
If present, Cockpit will now use the Kerberos `/etc/cockpit/krb5.keytab` file
instead of the default system keytab `/etc/krb5.keytab`.
See the [Single Sign On documentation](/guide/latest/sso.html#sso-server) for
details.
### Maintain an /etc/issue(5) file with current Cockpit status
Cockpit now maintains a `/run/cockpit/issue` file with instructions how to
enable Cockpit (when disabled) or the Cockpit URL (when enabled).
The next util-linux 2.32 release will
[support](https://github.com/karelzak/util-linux/commit/1fc82a1360305f696dc1be6105c9c56a9ea03f52)
`/etc/issue.d/*.issue` drop-ins. Distributions or users can make use of this by
installing an `/etc/issue.d/01-cockpit.issue` symlink to the above file.
### Use event-driven refresh of oVirt virtual machine data instead of polling
This makes the page much more reactive and use less resources.
Thanks to Marek Libra for this improvement!
### Try it out
Cockpit 156 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/156)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-156-1.fc27)
================================================
FILE: _posts/2017-11-30-cockpit-157.md
================================================
---
title: Cockpit 157
author: pitti
date: 2017-11-30 15:00
tags: cockpit linux
slug: cockpit-157
category: release
summary: Cockpit with virtual machine improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 157.
### Virtual Machine network devices
The Machines page overview lists all libvirt defined virtual machines, which
now have a "Networks" tab. This shows the virtual machine's network devices and
buttons to plug/unplug them.
Thanks to Bohdan Iakymets for this feature!

### The Apps page now displays SVG app icons
Before only PNG icons were supported.
Thanks to jeepingben for this feature!
### Try it out
Cockpit 157 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/157)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-157-1.fc27)
================================================
FILE: _posts/2017-12-13-cockpit-158.md
================================================
---
title: Cockpit 158
author: pitti
date: 2017-12-13 09:30
tags: cockpit linux
slug: cockpit-158
category: release
summary: Cockpit with NFS client improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 158.
### Add check boxes for common NFS mount options
Setting up an NFS mount point on the Storage page now offers check boxes for
the most common mount options: "Mount at boot" and "Mount read only". Other
arbitrary options can still be given in the "Custom" input line, as before.

### Clarify Software Update status if only security updates are available
In that case the status message is now "n security fixes" instead of "n
updates, including n security fixes".
### Create self-signed certificates with SubjectAltName
When connecting to Cockpit through SSL (https://...) without explicitly
configuring a certificate, Cockpit generates a self-signed one. This
certificate now has a `SubjectAltName:` field that is valid for
localhost/127.0.0.1. Some browsers, like Chromium, require this field to accept
a certificate for an SSL connection.
This allows administrators or users to import Cockpit's certificate into the
system oder user certificate database so that web browsers can connect to
Cockpit without SSL errors:
```
openssl s_client -connect 127.0.0.1:9090 < /dev/null | \
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/cert.pem
certutil -d sql:$HOME/.pki/nssdb -A -t "TC,C,P" -n cockpit -i /tmp/cert.pem
```
### Try it out
Cockpit 158 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/158)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-158-1.fc27)
================================================
FILE: _posts/2018-01-10-cockpit-159.md
================================================
---
title: Cockpit 159
author: pitti
date: 2018-01-10 10:30
tags: cockpit linux
slug: cockpit-159
category: release
summary: Cockpit with VDO support and VM improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 159.
### Configure data deduplication with VDO devices
The "Virtual Data Optimizer" is a new feature to eliminate duplication and add
compression to block devices. This is mostly aimed at providing storage for
virtual machines or object storage systems like Ceph.
This is being developed upstream by the [dm-vdo GitHub
project](https://github.com/dm-vdo). It is currently available in
[RHEL 7.5 alpha](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/vdo)
and expected to land in other distributions eventually.
Cockpit's Storage page can now create and configure VDO devices. See it in action:
### Add serial console to virtual Machines page and redesign the Consoles tab
The Machines page has offered in-browser and external VNC console access to
virtual machines for some time. However, this does not work on "headless"
virtual machines that don't provide a (virtual) graphics card and VNC libvirt
device. The Consoles tab now offers a serial console for these kind of VMs to
be able to administer them from Cockpit as well.
This went along with a redesign of the Consoles tab to better fit the various
types of consoles.
See it in action:
Thanks to Marek Libra for this feature!
### Show more error message details for VM failures on virtual Machines page
Errors from virtual machine operations on the Storage page can now be expanded
to show more details:

Thanks to Marek Libra for this improvement!
### Try it out
Cockpit 159 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/159)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-159-1.fc27)
================================================
FILE: _posts/2018-01-24-cockpit-160.md
================================================
---
title: Cockpit 160
author: pitti
date: 2018-01-24 10:00
tags: cockpit linux
slug: cockpit-160
category: release
summary: Cockpit with Kubevirt, Software Updates, and AppStream improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 160.
### Add kubevirt Virtual Machines overview
[kubevirt](http://www.kubevirt.io) is a project for running KVM virtual
machines in [Kubernetes](https://kubernetes.io/). Cockpit's "Cluster"
(Kubernetes/OpenShift) dashboard can now show the status of these VMs in the
new "Virtual Machines" menu entry. This only appears when kubevirt is installed
and active:

In the future this will be extended to also do operations on the VMs.
Thanks to Jakub Niedermertl for this feature!
### Redesign package list on Software Updates page and show RHEL Errata
The table of available updates now looks and behaves much more consistently to
other products that handle software packages, like
[Satellite](https://www.redhat.com/de/technologies/management/satellite) and
[Welder](https://github.com/weldr/welder-web):
* It now only shows the first line of the description and number of fixed
security issues or bugs in the table, and moves the full description and
detailed bug/CVE lists into an expander.
* It shows icons for the severity of the update, i. e. "security", "bug fix",
or "enhancement".
* On Red Hat operating systems it also shows the
[classification](https://access.redhat.com/security/updates/classification)
of security updates and links to the corresponding Errata.

* [PackageKit](http://packagekit.org) often provides the update details in
[Markdown](https://en.wikipedia.org/wiki/Markdown) format. This now gets
rendered properly instead of shown verbatim in text.

### AppStream handling on Apps page
On Fedora, the Apps page now installs the `appstream-data` package when
checking for new applications, which ships the
[AppStream](https://www.freedesktop.org/wiki/Distributions/AppStream/) metadata
for discovering new Cockpit applications.
This Cockpit version also adds AppStream metadata for its own
`cockpit-sosreport` package (which is not installed by default). Once
`appstream-data` gets updated again in Fedora, cockpit-sosreport will appear on
the Apps page as an available extension.
### Change CPU graphs to use "100%" for a fully loaded multi-processor system
Previously, the CPU graphs on the System, Dashboard, and Containers pages were
calibrated to 100% for a single CPU core, so that the graph maxed out at e. g.
400% for a system with four busy CPU cores. Now it gets scaled so that "100%"
means "all cores are fully busy", which is the behaviour of command line
tools like `top`.
### Show storage, network, and other numbers with 3 digits of precision
Previously numbers like the free space on a storage device were shown with one
fractional digit only, which led to overly imprecise numbers like "0.1 GiB".
The new behaviour provices a more consistent accuracy regardless of the
number's magnitude.
### Add an example bastion container
A [bastion container](https://github.com/cockpit-project/cockpit/tree/master/containers/bastion)
provides Cockpit's web service without actually logging in to the machine on
which it runs, but only connects to remote hosts via ssh.
This is not a ready-to-use product for now, but we encourage you to experiment
with the example and give us feedback if you have such a use case.
### Try it out
Cockpit 160 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/160)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-160-1.fc27)
================================================
FILE: _posts/2018-02-07-cockpit-161.md
================================================
---
title: Cockpit 161
author: pitti
date: 2018-02-07 10:00
tags: cockpit linux
slug: cockpit-161
category: release
summary: Cockpit with Virtual Machines, LVM, and Hardware Information improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 161.
### New VMs can be created on Machines page
The Machines page now has a "Create New VM" button for installing a new libvirt
virtual machine from a local or remote ISO image. It allows the user to set
some basic properties such as memory and storage sizes.

Thanks to Dominik Perpeet and suomiy for this feature!
### VMs running in Kubernetes can now be deleted
[Cockpit 160](https://cockpit-project.org/blog/cockpit-160.html) added an
initial overview of kubevirt Virtual Machines. This page now got a first action
to delete a running VM.

Thanks to Marek Libra for this feature!
### Improve LVM volume resizing
Cockpit now knows upfront whether shrinking or growing an LVM logical volume is
possible, and whether the filesystem needs to be unmounted. Since shrinking
and growing are quite different in practice, the Storage page now shows
separate "Shrink" and "Grow" buttons. See it in action:
### Add new Hardware Information page
On the System page the "Hardware" name is now a link to a new "Hardware
information" page. For now this shows information about the system name, form
factor, CPU, BIOS, and PCI devices. Other types of hardware will be added in
future versions.

### Rename cockpit-ovirt package to cockpit-machines-ovirt
The previous package name collided with a package that is already available in
Red Hat Virtualization Host. This only affects Fedora, as other operating systems
do not ship the Cockpit ovirt extension.
### Stop advertising and supporting cockpit-bundled jQuery library
Cockpit's [JavaScript API documentation](https://cockpit-project.org/guide/latest/api-base1-jquery.html)
previously had some outdated information about jQuery, suggesting that users of
the Cockpit API should always load jQuery, and use the one bundled with `cockpit.js`.
This has not been true for a long time, and was just forgotten to be cleaned up.
Previously the Cockpit code examples also did that, misleading developers who
used them as a starting point for their own modules.
Both the documentation and the examples got cleaned up now, and issues got
filed on affected GitHub projects. From now on, please use your own jQuery
module for your projects instead of cockpit's bundled one. This avoids breaking
your project when cockpit's jQuery version gets updated.
### Try it out
Cockpit 161 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/161)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-161-1.fc27)
================================================
FILE: _posts/2018-02-21-cockpit-162.md
================================================
---
title: Cockpit 162
author: pitti
date: 2018-02-21 10:30
tags: cockpit linux
slug: cockpit-162
category: release
summary: Cockpit with Virtual Machines improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 162.
### Show pod name and disks of VMs running in Kubernetes
The KubeVirt Virtual Machines overview now shows the pod of running VMs.
Clicking on the name navigates to the pod's detail page.
The new "Disks" tab shows information about the emulated QEMU storage devices
in the VM, similar to the Machines page.


Thanks to Marek Libra for this feature!
### Tighten up the default Content-Security-Policy
Cockpit's pages now further restrict their
[Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)
to prevent forms and links from accidentally leaking data off-host.
An additional benefit is improved privacy, as `Referrer:` headers are no longer
sent when following a link in Cockpit to an external site. (One common place
where Cockpit links externally is on changelogs in the Software Updates page.)
Note that this is *not* an actual security device - once a malicious page runs
in Cockpit, it can use the Cockpit API to run arbitrary code on the host. This
change is intended as a defense against programming errors.
### Drop cockpit-subscriptions and cockpit-integration-tests on Fedora
There is a new package "subscription-manager-cockpit" now which supersedes the
"cockpit-subscriptions" package that was previously shipped by Cockpit.
The cockpit-integration-tests package had been an experiment, was never used
in Fedora CI, and requires additional files from Cockpit's upstream git tree to
work.
### Try it out
Cockpit 162 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/162)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-162-1.fc27)
================================================
FILE: _posts/2018-03-07-cockpit-163.md
================================================
---
title: Cockpit 163
author: pitti
date: 2018-03-07 11:00
tags: cockpit linux
slug: cockpit-163
category: release
summary: Cockpit with various bug fixes
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 163.
### Hide Docker storage pool reset button when it cannot work properly
Fedora Atomic used to configure a separate logical volume called
`docker-root-lv` as a Docker storage pool. Recently, Fedora Atomic switched to
using one large volume for both the root partition and Docker.
Due to this change in Fedora Atomic, Cockpit can no longer remove and free
previously added storage devices. As a result, we have removed the “Reset”
button on the storage pool page under these circumstances.
### Drop "Transfer data asynchronously" VDO option on Storage page
Recent versions of [VDO](https://github.com/dm-vdo/vdo) now automatically detect
the correct setting for asynchronous data transfer, so this option is no longer
needed.
Manually setting the option may also lead to unsupported configurations in the
future.
*[VDO]: virtual data optimizer
### Update jQuery to version 3.3.1
Cockpit updated jQuery from 2.2 to 3.3.1.
Third party projects should no longer use Cockpit’s bundled jQuery, as
announced in [Cockpit 161](https://cockpit-project.org/blog/cockpit-161.html).
All known consumers of this deprecated usage have been updated.
If you have a private cockpit extension that currently includes
`"../base1/jquery.js"`, please verify that your project still works, remove the
reference to Cockpit’s bundled jQuery, and include your own copy of jQuery
through [NPM](https://www.npmjs.com/) or a [CDN](https://code.jquery.com/).
*[NPM]: Node Package Manager
*[CDN]: Content Delivery Network
([More information](https://lists.fedorahosted.org/archives/list/cockpit-devel@lists.fedorahosted.org/thread/TDBKI4372I4ZPGQFCZB377DX2QG2YDDY/))
### Try it out
Cockpit 163 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/163)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-163-1.fc27)
================================================
FILE: _posts/2018-03-09-starter-kit.md
================================================
---
title: Starter Kit - the turn-key template for your own pages
author: pitti
date: 2018-03-09
category: tutorial
tags: cockpit starter-kit
slug: cockpit-starter-kit
comments: true
---
## The bare minimum
[Cockpit's API](https://cockpit-project.org/guide/latest/development.html) makes it easy to create your own pages (or
"extensions" if you will) that appear in Cockpit's menu and interact with your system in any way you like. Our pet
example is the [Pinger](https://github.com/cockpit-project/cockpit/tree/master/examples/pinger) which is just the bare
minimum: a [HTML file](https://github.com/cockpit-project/cockpit/blob/master/examples/pinger/ping.html) with a form to
enter an IP, a small [piece of JavaScript](https://github.com/cockpit-project/cockpit/blob/master/examples/pinger/pinger.js)
to call the `ping` Linux command through Cockpit [spawn()](https://cockpit-project.org/guide/latest/cockpit-spawn.html)
and capture its output; and a
[manifest file](https://github.com/cockpit-project/cockpit/blob/master/examples/pinger/manifest.json) which tells
cockpit how to add it to the menu and where the entry point is.
There is a rather old [blog post](https://cockpit-project.org/blog/creating-plugins-for-the-cockpit-user-interface.html)
which explains the Pinger example in detail. Cockpit changed its visual design quite dramatically since then, Pinger's
JavaScript got split into a separate file and does not use jQuery any more, but aside from these details that post is
still generally applicable.
## Requirements for real projects
Pinger is great for explaining and understanding the gist of how Cockpit works. But an actual production-ready project
requires a lot more:
* Separation of HTML, CSS, and JavaScript code: This ensures that your code can use a safe
[Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) and does not have to use e. g.
`unsafe-inline`. We *strongly* recommend this for third-party pages, and absolutely require this for Cockpit's own
pages.
* Modern frameworks for creating page contents. For any non-trivial page you really don't want to dabble with piecing
together `myelement.innerHTML = …` strings, but use something like [React](https://reactjs.org/) to build page
contents and [PatternFly](http://www.patternfly.org/) so that your page fits into Cockpit's design.
* Use [Babel](https://babeljs.io/) to write your code in modern [ES6 JavaScript](http://es6-features.org/).
* Use [ESLint](https://eslint.org/) to spot functional and legibility errors in your code.
* A build system like [webpack](https://webpack.js.org/) to drive all of the above and build blobs ("minified
Javascript in a single file") that are efficiently consumable by browsers.
* Building of release tarballs, source and binary RPMs for testing and distribution.
* Tests to make sure your code keeps working, new features work on all supported operating systems, and changes (pull
requests) get validated.
* As a bonus, easy and safe testing of your page in a [Vagrant virtual machine](https://www.vagrantup.com/).
Sounds complex? It indeed is for someone who is not familiar with the ever-changing "modern" JavaScript world, and
doesn't want to learn the details of all of these before you can even begin working on your code. This is where the
Starter Kit comes in!
## Bootstrapping your way from zero to "works!"
The [Cockpit Starter Kit](https://github.com/cockpit-project/starter-kit/) is an example project which provides all of
the above requirements. It provides a simple
[React page](https://github.com/cockpit-project/starter-kit/blob/master/src/starter-kit.jsx)
that uses the [cockpit.file() API](https://cockpit-project.org/guide/latest/cockpit-file.html) to read `/etc/hostname`
and show it. There is also an accompanying
[test](https://github.com/cockpit-project/starter-kit/blob/master/test/check-starter-kit) that verifies this page. The
other files are mostly build system boilerplate, i. e. the things you don't want to worry about as the first thing when
you start a project.
So, how to get this? Make sure you have the `npm` package installed. Then check out the repository and build it:
```
git clone https://github.com/cockpit-project/starter-kit.git
cd starter-kit
make
```
After that, install (or rather, symlink) the webpack-generated output page in `dist/` to where cockpit can see it:
```
mkdir -p ~/.local/share/cockpit
ln -s `pwd`/dist ~/.local/share/cockpit/starter-kit
```
Now you should be able to log into and see the "Starter Kit" menu entry:

The symlink into your source code checkout is a very convenient and efficient way of development as you can just type
`make` after changing code and directly see the effect in Cockpit after a page reload.
You should now play around with this a little by hacking src/starter-kit.jsx, running `make`, and reloading the page.
For example, try to read and show another file, run a program and show its output, or use
[cockpit.file("/etc/hostname").watch(callback)](https://cockpit-project.org/guide/latest/cockpit-file.html)
to react to changes of /etc/hostname and immediately update the page.
## Testing
Untested code is broken code. If not here and now, then in the future or some other operating system. This is why
Cockpit has a rather complex machinery of regularly building 26 (!) VM images ranging from RHEL-7 and Fedora 27 over
various releases of Debian and Ubuntu to OpenShift and Windows 8, and running hundreds of integration tests on each of
them for every PR in an OpenShift cluster.
Replicating this for other projects isn't easy, and this has been one, if not *the* major reason why there aren't many
third-party Cockpit projects yet. So we now made it possible for third-party GitHub projects to use Cockpit's CI
environment, test VM images, and (independently) Cockpit's browser test abstraction API.
starter-kit uses all three of those: When you run `make check`, it will:
* build an RPM out of your current code
* check out cockpit's [bots/ directory](https://github.com/cockpit-project/cockpit/tree/master/bots/) that has the
current image symlinks and tools to download, customize and run VM images
* check out cockpit's [tests/common directory](https://github.com/cockpit-project/cockpit/tree/master/test/common) from
a stable Cockpit release (as the API is not guaranteed to be stable)
which provides a convenient Python API for the [Chrome DevTools protocol](https://chromedevtools.github.io/devtools-protocol/)
* download Cockpit's current CentOS-7 VM image; you can test on a different operating system by setting the environment
variable `TEST_OS=fedora-27` (or a different operating system - but note that starter-kit does not currently build
debs)
* create an overlay on that pristine centos-7 image with the operating system's standard "cockpit" package and your
locally built starter-kit RPM installed
* run a VM with that overlay image with libvirt and QEMU
* launch a chromium (or chromium-headless) browser
* Run the actual [check-starter-kit](https://github.com/cockpit-project/starter-kit/blob/master/test/check-starter-kit)
test which instructs the web browser what to do and which assertions to make
```
[starter-kit] $ make check
[...]
rpmbuild -bb [...] cockpit-starter-kit.spec
[...]
git fetch --depth=1 https://github.com/cockpit-project/cockpit.git
From https://github.com/cockpit-project/cockpit
* branch HEAD -> FETCH_HEAD
git checkout --force FETCH_HEAD -- bots/
[...]
bots/image-customize -v -r 'rpm -e cockpit-starter-kit || true' -i cockpit -i `pwd`/cockpit-starter-kit-*.noarch.rpm -s /home/martin/upstream/starter-kit/test/vm.install centos-7
[...]
TEST_AUDIT_NO_SELINUX=1 test/check-starter-kit
1..1
# ----------------------------------------------------------------------
# testBasic (__main__.TestStarterKit)
#
ok 1 testBasic (__main__.TestStarterKit) # duration: 21s
# TESTS PASSED [22s on donald]
```
Note that the first time you run this will take a long time due to the rather large VM image download. But it will be
reused for further tests.
For writing your own tests with the Cockpit Python API, have a look at the `Browser` and `MachineCase` classes in
[testlib.py](https://github.com/cockpit-project/cockpit/blob/master/test/common/testlib.py). These provide both
low-level (like `click()` or `key_press()`) and high-level (like `login_and_go()`) methods for writing test cases. And
of course you have a wealth of [Cockpit tests](https://github.com/cockpit-project/cockpit/tree/master/test/verify) for
getting inspiration.
starter-kit itself is also covered by Cockpit's CI, i. e. pull requests will run tests on CentOS 7 and Fedora 27
([example](https://github.com/cockpit-project/starter-kit/pull/17), click on "View Details"). Please come and talk to us
once your project is mature enough to do the same, then we can enable automatic pull request testing on your project as well.
## Using different technologies
starter-kit makes opinionated choices like using React, webpack, and Cockpit's testing framework. These are the
technologies that we use for developing Cockpit itself, so if you use them you have the best chance that the Cockpit
team can help you with problems. Of course you are free to replace any of these, especially if you have already existing
code/tests or a build system.
For example, it is straightforward to just use Cockpit's test images with the `image-customize` tool and running these
as ephemeral VMs with [testvm.py](https://github.com/cockpit-project/cockpit/blob/master/bots/machine/testvm.py), but
not use Cockpit's `test/common`. Tests can also be written with e. g. [puppeteer](https://github.com/GoogleChrome/puppeteer)
or [nightmare](https://github.com/segmentio/nightmare). I will write about that separately.
## Feedback
starter-kit is still fairly new, so there are for sure things that could work more robustly, easier, more flexibly, or
just have better documentation. If you run into trouble, please don't hesitate telling us about it, preferably by
[filing an issue](https://github.com/cockpit-project/starter-kit/issues).
Happy hacking!
The Cockpit Development Team
================================================
FILE: _posts/2018-03-21-cockpit-164.md
================================================
---
title: Cockpit 164
author: pitti
date: 2018-03-21 13:00
tags: cockpit linux
slug: cockpit-164
category: release
summary: Cockpit with usability and accessibility improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 164.
### Storage: Usability improvements
We recently ran a usability study targeting the storage area. Based on the
findings, we redesigned and adjusted the NFS, VDO, and RAID storage devices.
Previously, Cockpit used checkbox "arming" and drop-down buttons to reveal
available actions. Usability tests indicated these interface elements
were too hard and unintuitive to discover. Cockpit now expresses these
concepts in a more straightforward way.
Available RAID and VDO actions are now directly shown next to the
corresponding device:

NFS mounts are now clickable:

Clicking an NFS mount now shows a new details page with directly
available actions:

### System: Show available package updates and missing registration
The System overview page now shows pending enhancements, bug fixes, and
security updates when they are available:

As unregistered RHEL systems cannot receive updates they now display a warning:

### System: Fix inconsistent tooltips
Before this release, the System page had three different styles of tool tips.
Thee have been unified to use the standard
[Bootstrap tooltips](https://getbootstrap.com/docs/4.0/components/tooltips/)
like other Cockpit pages. Relatedly, the performance profile used a static blue
"i" for additional information. We removed the icon and attached the tooltip
directly to the profile name.

The navigation redesign in
[Cockpit 156](https://martinpitt.github.io/cockpit-project.github.io/blog/cockpit-156.html)
increased the width of host navigation items. As the navigation labels are no
longer truncated, their corresponding tooltips have been removed.
### Logs: Change severities
On the Logs page, the severity filter now displays the officially defined
[syslog(3) levels](https://linux.die.net/man/3/syslog) instead of the previous
Cockpit-specific names:

_Thanks to Kirill Glebov for this improvement!_
### Machines: Add error notifications
The Machines page now shows individual and dismissable error notifications for
all virtual machines:

_Thanks to suomiy for this improvement!_
### Accessibility improvements
This Cockpit release includes several accessibility fixes. Notably,
[ARIA markers](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA),
role tags, tabindex fixes, and several other improvements should help with
keyboard navigation and screen reader support.
There's still more accessibility related work to do, but these changes are
a step in the right direction.
### Reloading the page in the browser now reloads Cockpit package manifests
Cockpit now refreshes the navigation menu on a browser reload. Installing,
removing, or updating Cockpit-related packages previously required logging
out and back in to see the changes.
### Try it out
Cockpit 164 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/164)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-164-1.fc27)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-164-1.fc28)
*[RHEL]: Red Hat Enterprise Linux
*[NFS]: Network File System
*[VDO]: Virtual Data Optimizer
*[RAID]: Redundant Array of Inexpensive Disks
*[ARIA]: Accessible Rich Internet Applications
================================================
FILE: _posts/2018-03-28-puppeteer-tests.md
================================================
---
title: Using Cockpit test VMs with your own test framework
author: pitti
date: 2018-03-28
category: tutorial
tags: cockpit starter-kit tests puppeteer
slug: cockpit-custom-test-framework
comments: true
---
The [Cockpit Starter Kit](https://github.com/cockpit-project/starter-kit/) provides the scaffolding for your own Cockpit
extensions: a simple page (in React), build system (webpack, babel, eslint, etc.), and an integration test using
Cockpit's own Python test API on top of the
[Chromium DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/). See the recent
[introduction](https://cockpit-project.org/blog/cockpit-starter-kit.html) for details.
But in some cases you want to use a different testing framework; perhaps you have an already existing project and tests.
Then it is convenient and recommended to still using Cockpit's test VM images: they provide an easy way to test your
project on various Fedora/Red Hat/Debian/Ubuntu flavors; and they take quite a lot of effort to maintain! Quite
fortunately, using the test images is not tightly bound to using Cockpit's test API, and not even to tests being written
Python. They can be built and used entirely through command line tools from Cockpit's [bots/
directory](https://github.com/cockpit-project/cockpit/tree/master/bots/), so you can use those with any programming
language and test framework.
## Building and interacting with a test VM
To illustrate this, let's check out the Starter Kit and build a CentOS 7 based VM with cockpit and the starter kit
installed:
```sh
$ git clone https://github.com/cockpit-project/starter-kit.git
$ cd starter-kit
$ make vm
```
Ordinarily, the generated `test/images/centos-7.qcow2` would be used by
[test/check-starter-kit](https://github.com/cockpit-project/starter-kit/blob/master/test/check-starter-kit). But let's
tinker around with the VM image manually. Cockpit's
[testvm.py](https://github.com/cockpit-project/cockpit/blob/master/bots/machine/testvm.py) module for using these VMs
can be used as a command line program:
```sh
$ bots/machine/testvm.py centos-7
ssh -o ControlPath=/tmp/ssh-%h-%p-%r-23253 -p 2201 root@127.0.0.2
http://127.0.0.2:9091
RUNNING
```
It takes a few seconds to boot the VM, then it prints three lines:
* The SSH command to run something inside the VM
* The URL for the forwarded Cockpit port 9090
* A constant `RUNNING` flag that test suites can poll for to know when to proceed.
You can now open that URL in your browser to log into Cockpit (user "admin", password "foobar") and see the installed
Starter Kit page, or run a command in the VM through the given SSH command:
```sh
$ ssh -o ControlPath=/tmp/ssh-%h-%p-%r-23253 -p 2202 root@127.0.0.2 head -n2 /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
```
The VM gets shut down once the `testvm.py` process gets a `SIGTERM` (useful for test suites) or `SIGINT` (useful for
just pressing Control-C when interactively starting this in a shell).
## Using testvm.py in your test suite
Let's use the above in a [Puppeteer](https://github.com/GoogleChrome/puppeteer) test.
[check-puppeteer.js](../files/starter-kit/check-puppeteer.js) is a straight port of
[check-starter-kit](https://github.com/cockpit-project/starter-kit/blob/master/test/check-starter-kit); of course it is
a little longer than the original as we don't have the convenience functions of
[testlib.py](https://github.com/cockpit-project/cockpit/blob/master/test/common/testlib.py) to automatically start and
tear down VMs or do actions like "log into Cockpit", but it is still fairly comprehensible. Download it into the tests/ directory of
your starter-kit checkout, then install puppeteer:
```sh
$ PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 npm install puppeteer@0.12.0
```
This will avoid downloading an entire private copy of chromium-browser and use the system-installed one. (Of course you
can also just call `npm install puppeteer` if you don't care about the overhead). Now run the tests:
```sh
$ DEBUG="puppeteer:page,puppeteer:frame" PYTHONPATH=bots/machine test/check-puppeteer.js
```
This will run them in a verbose mode where you can follow the browser queries and events.
Let's walk through some of the code:
```js
function startVm() {
return new Promise((resolve, reject) => {
let proc = child_process.spawn("bots/machine/testvm.py", [testOS], { stdio: ["pipe", "pipe", "inherit"] });
let buf = "";
proc.stdout.on("data", data => {
buf += data.toString();
if (buf.indexOf("\nRUNNING\n") > 0) {
let lines = buf.split("\n");
resolve({ proc: proc, ssh: lines[0], cockpit: lines[1] });
}
});
proc.on("error", err => { throw `Failed to start vm-run: ${err}` });
});
}
```
This uses `testvm.py` as above to launch the VM. In a "real" test suite this would go into the per-test setup code.
`check-puppeteer.js` does not use any test case organization framework (like [jest](https://www.npmjs.com/package/jest)
or [QUnit](https://qunitjs.com/)), but if you have more than two or three test cases it's recommended to use one.
```js
async function testStarterKit() {
const vm = await startVm();
const browser = await puppeteer.launch(
// disable sandboxing to also work in docker
{ headless: true, executablePath: 'chromium-browser', args: [ "--no-sandbox" ] });
```
This is the actual test case. Here we start Puppeteer, and here you can change various
[options](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#puppeteerlaunchoptions)
to influence the test. For example, set `headless: false` to get a visible Chomium window and follow live what the test
does (or where it hangs).
```js
const page = await browser.newPage();
try {
// log in
await page.goto(vm.cockpit);
await page.type('#login-user-input', 'admin');
await page.type('#login-password-input', 'foobar');
await page.click('#login-button');
```
This is the equivalent of Cockpit test's `Browser.login_and_go()`. In a real test you would probably factorize this into
a helper function.
```js
await page.waitFor('#host-nav a[title="Starter Kit"]');
await page.goto(vm.cockpit + "/starter-kit");
let frame = getFrame(page, 'cockpit1:localhost/starter-kit');
// verify expected heading
await frame.waitFor('.container-fluid h2');
await frame.waitForFunction(() => document.querySelector(".container-fluid h2").innerHTML == "Starter Kit");
// verify expected host name
let hostname = vmExecute(vm, "cat /etc/hostname").trim();
await frame.waitFor('.container-fluid span');
await frame.waitForFunction(
h => document.querySelector(".container-fluid span").innerHTML == ("Running on " + h),
{}, hostname);
}
```
This is a direct translation of what check-starter-kit does: Assert the expected heading and host name message.
```js
catch (err) {
const attachments = process.env["TEST_ATTACHMENTS"];
if (attachments) {
console.error("Test failed, taking screenshot...");
await page.screenshot({ path: attachments + "/testStarterKit-FAIL.png"});
}
throw err;
}
```
This part is optional, but very useful for debugging failed tests. If any assertion fails, this creates a PNG screenshot
from the current browser page state. Run the test with `TEST_ATTACHMENTS=/some/existing/directory` to enable this. The
Cockpit CI machinery will export any files in this directory to the http browsable test results directory.
```js
finally {
await browser.close();
vm.proc.kill();
}
};
```
This is a poor man's "test teardown" which closes the browser and VM.
## Feedback
starter-kit and external Cockpit project tests are still fairly new, so there are for sure things that could work more
robustly, easier, more flexibly, or just have better documentation. If you run into trouble, please don't hesitate
telling us about it, preferably by [filing an issue](https://github.com/cockpit-project/starter-kit/issues).
Happy hacking!
The Cockpit Development Team
================================================
FILE: _posts/2018-04-04-cockpit-165.md
================================================
---
title: Cockpit 165
author: pitti
date: 2018-04-04 12:00
tags: cockpit linux
slug: cockpit-165
category: release
summary: Cockpit with NFS and VM improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 165.
### Storage: Show more details of sessions and services that keep NFS busy
When trying to unmount an NFS share that is currently in use, Cockpit offers a
dialog to terminate the processes that keep it busy. That dialog now shows the
systemd service names, process command lines, and since when these have been
active. This allows the administrator a more informed decision whether it is
okay to forcefully terminate these.

### Machines: Detect if libvirtd is not running
The Virtual Machines page now detects if libvirtd.service is running. It offers
to start and optionally enable the unit if it is not currently running:

Previously it just showed that "no VMs are running", which was misleading.
_Thanks to suomiy for this improvement!_
### Machines: Show virtual machines that are being created
When creating a new virtual machine it takes a while to allocate and create the
disk image. During that time the new VM was not visible anywhere, which caused
the impression that the creation failed. Now the VM overview lists it
immediately with state "creating VM installation":

_Thanks to suomiy for this improvement!_
### Try it out
Cockpit 165 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/165)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-165-1.fc27)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-165-1.fc28)
================================================
FILE: _posts/2018-04-11-making-a-cockpit-application.md
================================================
---
title: Make your Cockpit page easily installable
author: mvo
date: 2018-04-09 10:00
tags: cockpit
slug: making-a-cockpit-application
category: tutorial
comments: 'true'
---
Since version 152, Cockpit can discover and install packages that add
pages to Cockpit. We call them "Applications" and as of now, only two
of them exist: We have Fleet Commander and Cockpit's own Diagnostic
Reports in Fedora. You might have seen them on the Applications page:

If you want your own page to appear there, you have to add suitable
[AppStream](https://www.freedesktop.org/wiki/Distributions/AppStream/)
data to your package in the right location.
When your package is included in a distribution repository, the
repository machinery will find the data in your package and make it
available to software managers, such as the Cockpit "Applications"
page.
For a Cockpit component, the AppStream data looks like this:
```xml
org.cockpit_project.demo-appCC0-1.0Demo Application
A demo add-on application for Cockpit
This is a demo application
org.cockpit_project.cockpitdemo-app
```
This would be placed at
`/usr/share/metainfo/org.cockpit_project.demo-app.metainfo.xml` in
your package.
The important bit is the `launchable` element with type
`cockpit-manifest`. Any such AppStream component will be offered for
installation by Cockpit. The value is the name of the [Cockpit
package](https://cockpit-project.org/guide/latest/packages.html) for
your page.
Use the component type `addon` and add an `extends` element for
`org.cockpit_project.cockpit`.
You should of course come up with your own value for the `id` element,
in the usual reverse-DNS style, and adjust the filename accordingly.
================================================
FILE: _posts/2018-04-18-cockpit-166.md
================================================
---
title: Cockpit 166
author: pitti
date: 2018-04-18 10:30
tags: cockpit linux
slug: cockpit-166
category: release
summary: Cockpit with KubeVirt and FreeIPA improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 166.
### Kubernetes: Add creation of Virtual Machines
The KubeVirt Virtual Machines page now offers a "Create" button for defining a
new virtual machine. The JSON definition can be provided with a file upload,
with drag & drop, or by copy & pasting. See it in action:
_Thanks to suomiy for this improvement!_
### Realms: Automatically set up Kerberos keytab for Cockpit web server
When joining a FreeIPA domain, Cockpit now automatically sets up Kerberos
[Single Sign-On](https://cockpit-project.org/guide/latest/sso.html) for its web
server. With that, users with a valid kerberos ticket (from `kinit`) will be
logged into Cockpit without having to go through the login page.
### Numbers now get formatted correctly for the selected language
Numbers like disk sizes or network bandwidth usages are now shown with the
correct decimal separator for the current browser language.
### Try it out
Cockpit 166 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/166)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-166-1.fc27)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-166-1.fc28)
================================================
FILE: _posts/2018-05-02-cockpit-167.md
================================================
---
title: Cockpit 167
author: pitti
date: 2018-05-02 14:00
tags: cockpit linux
slug: cockpit-167
category: release
summary: Cockpit with new Firewall UI
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 167.
### Networking: Add Firewall Configuration
The Networking page now displays the firewall status using
[firewalld](https://www.firewalld.org/). Services and ports can be configured
on the new new "Allowed Services" details page.
See it in action:
### Kubernetes: Show KubeVirt Registry Disks
[Registry Disks](https://github.com/kubevirt/kubevirt/blob/master/docs/container-register-disks.md) are a new feature of
[KubeVirt](http://www.kubevirt.io/) to distribute Virtual Machine disk images
through a container registry. The "Disks" tab in the Kubernetes cluster's
"Virtual Machines" overview now shows these:

_Thanks to Marek Libra for this improvement!_
### Try it out
Cockpit 167 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/167)
* [Fedora 27](https://bodhi.fedoraproject.org/updates/cockpit-167-1.fc27)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-167-1.fc28)
================================================
FILE: _posts/2018-05-16-cockpit-168.md
================================================
---
title: Cockpit 168
author: pitti
date: 2018-05-16 11:00
tags: cockpit linux
slug: cockpit-168
category: release
summary: Cockpit with improved root privilege check
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 168.
### Improve checks for root privilege availability
Many actions, like joining an IPA domain or rebooting, can only be performed by
an administrator (`root` user).
Cockpit previously checked if the user was a member of the `wheel` (used in
Red Hat Enterprise Linux, CentOS, and Fedora) or `sudo` (used in Debian and
Ubuntu) groups to enable these actions. Simple group checking was insufficient,
as different group names are used by other operating systems and configurations,
or a system might be set up to rely on custom user-based sudo rules.
Cockpit no longer makes assumptions about special groups. Now, Cockpit simply
checks if the user is capable of running commands as `root`.
As a result of this fix, privileged operations now work by default with
[FreeIPA](https://freeipa.org/), which uses the `admins@domain.name` group.
### Try it out
Cockpit 168 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/168)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-168-1.fc28)
*[IPA]: identity management system ("Identity, Policy, Audit")
================================================
FILE: _posts/2018-05-28-sso-oauth.md
================================================
---
title: Seamless single-sign-on
author: mvo
date: 2018-05-28 10:00
tags: cockpit
slug: sso-oauth
category: blog
---
## Beyond a "single pane of glass"
Organizations who use several machines often run management display software in an attempt to integrate all infrastructure. [ManageIQ](http://manageiq.org/) and [Foreman](https://www.theforeman.org/) are great examples of this kind of software.
Managing machines from the outside is usually adequate, but sometimes it's best to log into the machine itself and have a look around. Cockpit excels in this task. In fact, both ManageIQ and Foreman have Cockpit integration built-in.
## Seamless single-sign-on
Machine management software already has administrative access over the machines (both virtual and on bare metal), so there should not be a need to type credentials a second time.
Indeed, ManageIQ currently opens Cockpit in a seamless manner, using [OAuth](https://en.wikipedia.org/wiki/OAuth) and external authentication helpers, all without requiring additional username and passwords.
Foreman currently does not have a seamless handover; it simply provides a standard link. As a result, when Foreman opens Cockpit, you're greeted with the log in page.
## How can we improve Foreman?
It would be ideal for Foreman to also have seamless Cockpit integration.
- As a first step, I have written a prototype based on what I have figured out so far in [a `seamless-cockpit` git repo](https://github.com/mvollmer/seamless-cockpit).
- Additionally, I have also written a version that uses a reverse proxy on [the `nginxed` branch](https://github.com/mvollmer/seamless-cockpit/tree/nginxed). This approach is altogether nicer — but, before it works, we need to [fix a Cockpit bug (#9237)](https://github.com/cockpit-project/cockpit/pull/9237){:title="ws: Also strip query from original_path"}.
## Test it out
If you are using Foreman to manage your machines and would seamless credentials handover, we welcome you to try out the above code — and please let us know how it works for you!
*[single pane of glass]: console that provides high-level management of multiple machines, also known as a "single-pane view"
*[repo]: repository
================================================
FILE: _posts/2018-05-30-cockpit-169.md
================================================
---
title: Cockpit 169
author: pitti
date: 2018-05-30
tags: cockpit linux
slug: cockpit-169
category: release
summary: Cockpit with NFS, FreeIPA, and systemd improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 169.
### Storage: Offer installation of NFS client support
The "NFS Mounts" pane on the Storage page now shows an "Install NFS Support"
button if the necessary packages are not already available:
### System: Request FreeIPA SSL certificate for Cockpit's web server
When enrolling into a [FreeIPA](https://freeipa.org/) domain, an SSL
certificate is requested from the IPA server and stored in
`/etc/cockpit/ws-certs.d/10-ipa.cert`. Cockpit's web server will then use that
certificate instead of the default self-signed one. The IPA server's
certificate authority is trusted by default and accepted by web browsers,
OpenSSL, curl, and other network clients.
### Services: Show unit relationships
The details of a systemd service now shows dependency, ordering, and other
relationships to units:

### Provide motd help about how to access cockpit
Cockpit now provides an `/etc/motd.d/cockpit`
[motd](https://linux.die.net/man/5/motd) message that explains how to enable
and start Cockpit if it's not running, or how to access it if it is running.
This requires [PAM 1.3.1](https://github.com/linux-pam/linux-pam/releases/tag/v1.3.1)
and enabling the `pam_motd` module:
session optional pam_motd.so
### Try it out
Cockpit 169 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/169)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-169-1.fc28)
*[NFS]: Network File System
*[IPA]: identity management system ("Identity, Policy, Audit")
*[motd]: message of the day
================================================
FILE: _posts/2018-06-13-cockpit-170.md
================================================
---
title: Cockpit 170
author: pitti
date: 2018-06-13
tags: cockpit linux
slug: cockpit-170
category: release
summary: Cockpit with many bug fixes
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 170.
### Software Updates: Layout rework
The Software Updates page has improved mobile browser support.

On desktop browsers, the updates list avoids line breaks in the version column.
Versions become truncated when there's not enough room to display the complete
string. Hovering over the shortened string shows the complete version.

### oVirt: Use authenticated libvirt connection by default
The [oVirt](https://www.ovirt.org/) version of the Machines page now uses a
TLS-enabled libvirt connection URI instead of `qemu:///`. This enables libvirt
operations that require authentication. One common example is sending an NMI.
A machines-ovirt.config file with a `VIRSH_CONNECTION_URI` option may override
the connection address.
_Thanks to Sharon Gratch for this improvement!_
### Try it out
Cockpit 170 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/170)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-170-1.fc28)
*[TLS]: Transport Layer Security
*[NMI]: Non-Maskable Interrupt
================================================
FILE: _posts/2018-06-27-cockpit-171.md
================================================
---
title: Cockpit 171
author: pitti
date: 2018-06-27
tags: cockpit linux
slug: cockpit-171
category: release
summary: Cockpit with VM/Kubevirt improvements, permission checks, and time localization
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 171.
### Machines: Add virtual CPU configuration
The Machines page can now flexibly configure the number and layout of virtual CPUs:

When changing the values for an already running VM, they become effective after
stopping and restarting it.
_Thanks to Bohdan Iakymets!_
### Kubernetes: Add KubeVirt pod metrics
The details page of a KubeVirt VM now shows the current CPU, memory, and
network usage. This is similar to the libvirt VM on the Machines page.

_Thanks to suomiy_!
### Docker: Show container volumes
The details page of a running Docker container now shows its volumes and their
mode (like "read only"):

_Thanks to Katerina Koukiou!_
### Fix broken actions for non-administrators
The tuned, system time, and host name links on the System page, as well as the
unit and service buttons on the Services page now check if the user is actually
allowed to carry out the action. If not, the elements now get disabled and show
a proper tooltip.

### Networking: Handle non-running NetworkManager
The Networking page now hides the non-functional network graphs and action
buttons while NetworkManager is not running, and shows an appropriate
notification. If NetworkManager is enabled, this usually indicates a crash or
otherwise unexpected situation:

If NetworkManager is disabled, this usually just means that some other
software manages the network, or that this might be a fresh installation where
NetworkManager is not configured yet:

### Accounts: User role improvements
The Accounts page now offers adding an "Image Builder" role to a user, which
puts that user into the [weldr](http://weldr.io/) Unix group. It also points
out that this does not become immediately effective but only applies to new
logins:

### Localize times
Dates and times on all affected pages (System, Storage, and Docker) now use the
format matching the selected Display Language instead of the U.S.format.

### Try it out
Cockpit 171 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/171)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-171-1.fc28)
*[VM]: Virtual Machine
================================================
FILE: _posts/2018-07-11-cockpit-172.md
================================================
---
title: Cockpit 172
author: pitti
date: 2018-07-11
tags: cockpit linux
slug: cockpit-172
category: release
summary: Cockpit with on-demand PCP install, flow control, and Python 3 support
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 172.
### System: Offer installation of PCP
The System page now shows an "Enable persistent metrics…" link if the
[PCP](https://pcp.io/) package is not installed. This is similar to the
on-demand installation of the NFS client packages in
[Cockpit 169](https://cockpit-project.org/blog/cockpit-169.html).

### Software Updates: Improve layout in mobile mode
The Software Updates page improves spacing and layout in small browser windows
and mobile browsers:

### Remove ability to drop privileges from navigation bar
Before this release, Cockpit showed a “Locked” or “Unlocked” status in the
navigation bar. It reflected the “Reuse my password for privileged tasks”
checkbox on the login page. Clicking on “Unlocked” would lock the interface and
drop administrator capabilities.
In general, the capability downgrade feature is not well supported across
Cockpit. Most pages do not respond well to privilege changes.
A non-clickable administrative privilege badge (“Privileged”) replaces the old
interactive locked/unlocked status.
The ability to start cockpit without escalating privileges remains on the login
screen. Dropping privileges at runtime is still available in the user menu,
under "Authentication".

### Introduce flow control for all channels
The Cockpit API now has flow control to reduce buffering, improve memory usage,
and make the user interface more responsive.
Third-party Cockpit extensions may use the API to transfer large amounts of
data.
A notable example: [Welder](https://github.com/weldr/welder-web) downloads
customized operating system from remote machines. Without flow control, Welder
would become unresponsive and use large amounts of memory.
### Python 3 support
Cockpit, along with all unit tests and most integration tests, now supports
Python 3. Building with Python 2 still works, but it is now deprecated.
### Try it out
Cockpit 172 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/172)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-172-1.fc28)
*[PCP]: Performance Co-Pilot
*[API]: Application Programming Interface
================================================
FILE: _posts/2018-07-25-cockpit-173.md
================================================
---
title: Cockpit 173
author: pitti
date: 2018-07-25
tags: cockpit linux
slug: cockpit-173
category: release
summary: Cockpit with on-demand VDO install and VM disk creation
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 173.
### Storage: Offer installation of VDO
The Storage page now shows an "Install VDO support" link if the
[VDO](https://github.com/dm-vdo/vdo) package is not installed. This is similar
to the on-demand installation of the NFS client packages in
[Cockpit 169](https://cockpit-project.org/blog/cockpit-169.html).

### Machines: Add disks to a virtual machine
The "Disks" tab of a virtual machine now has an "Add Disk" button. Using
this new feature, it's possible to create a virtual disk in a
[libvirt storage pool](https://libvirt.org/storage.html) or attach an existing disk.

_Thanks to Marek Libra!_
### Try it out
Cockpit 173 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/173)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-173-1.fc28)
*[VDO]: Virtual Data Optimizer
================================================
FILE: _posts/2018-08-01-cockpit-174.md
================================================
---
title: Cockpit 174
author: Gundersanne
date: 2018-08-01
tags: cockpit linux
slug: cockpit-174
category: release
summary: VM detail page for kubernetes, realmd install on demand
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 174.
### Kubernetes: VM detail page
Virtual machines now have a details page. On the Machines page, click a VM to
see extended information.

_Thanks to suomiy!_
### Realmd: Install on demand
The [realmd](https://www.freedesktop.org/software/realmd/) system service
provides network authentication and domain membership. If realmd is not already
installed, the System page now shows a link for an on-demand installation,
similar to NFS support in [Cockpit
169](https://cockpit-project.org/blog/cockpit-169.html).

### Try it out
Cockpit 174 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/174)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-174-1.fc28)
*[VM]: Virtual Machine
================================================
FILE: _posts/2018-08-08-cockpit-175.md
================================================
---
title: Cockpit 175
author: mvo
date: 2018-08-08
tags: cockpit linux
slug: cockpit-175
category: release
summary: Key management for encrypted devices
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 175.
### Storage: Key management for encrypted devices
This release adds encrypted storage support for passphrases and
network keyservers.
Under the hood, LUKSv1 manages encrypted devices, allowing up to 8
different key "slots". Each slot may contain a passphrase or can
provide NBDE by binding to a [Tang](https://github.com/latchset/tang)
server using [Clevis](https://github.com/latchset/clevis).
In a future release, we're planning to add key groups and more
authentication types. Key groups bypass the 8 slot limitation and
provide complex authentication rules. Stay tuned!
### Try it out
Cockpit 175 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/175)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-175-1.fc28)
*[NBDE]: network-bound disk encryption
================================================
FILE: _posts/2018-08-22-cockpit-176.md
================================================
---
title: Cockpit 176
author: Gundersanne
date: 2018-08-22
tags: cockpit linux
slug: cockpit-176
category: release
summary: suggest browsers when browser is unsupported, auto-update backend install on demand
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 176.
### Login: Suggest other browser when browser is unsupported
Some browsers are not supported, for instance because they don't support
WebSockets. Cockpit now shows a list of browsers which are known to work.

### PackageKit: Install auto-updates backend on demand
If no auto-update backend is installed, the user will be prompted for
installation when enabling auto-updates. Only systems where dnf-automatic is
available are currently supported.

### Try it out
Cockpit 176 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/176)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-176-1.fc28)
================================================
FILE: _posts/2018-09-05-cockpit-177.md
================================================
---
title: Cockpit 177
author: pitti
date: 2018-09-05
tags: cockpit linux
slug: cockpit-177
category: release
summary: Cockpit with LUKSv2 support and FreeIPA ssh known hosts integration
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 177.
### Storage: Support LUKS v2
Cockpit's Storage page can now create, lock, unlock, resize, and otherwise
configure encrypted devices using the [LUKS
v2](https://www.saout.de/pipermail/dm-crypt/2017-December/005771.html) format.
This includes support for LUKS v2 based Network Bound Disk Encryption (NBDE)
through Clevis and Tang.
This new version of LUKS offers more flexible unlocking policies, stronger
cryptography, and better compatibility with future changes.
### Support centrally-managed SSH known hosts
[FreeIPA](https://www.freeipa.org/) centrally manages the list and fingerprints
of known SSH hosts. Cockpit now queries FreeIPA when to avoid fingerprint
verification prompts of already-known hosts. This new flow now matches the
behavior of the `ssh` command line client.
SSSD version 1.16.3 or 2.0 is required for improved remote host verification.
When using earlier versions of SSSD, Cockpit will still not consider
centrally-managed known hosts.
### Drop support for Internet Explorer
Opening Cockpit in Microsoft Internet Explorer now shows the "Unsupported
Browser" page.
Feature detection is used to determine if a browser is supported. Cockpit now
requires additional web technologies introduced in all modern browsers between
2012 - 2015.
When using Windows, please use Edge, the direct successor to Internet Explorer,
or any other modern browser to use Cockpit.
Specific minimum versions of Firefox, Chrome, Edge, Safari, and Opera are
listed on [the running page of the Cockpit website](https://cockpit-project.org/running.html).
Any browser with modern web support released in the past several years should
work well with Cockpit.
### Try it out
Cockpit 177 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/177)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-177-1.fc28)
================================================
FILE: _posts/2018-09-13-is-cockpit-secure.md
================================================
---
title: Is Cockpit Secure?
date: 2018-09-13 10:00
category: blog
tags: cockpit
slug: is-cockpit-secure
---
Security is vital to your Linux systems. It's not a binary thing though.
Depending on your requirements you end up choosing a level of security that
still allows you and your systems to accomplish what they need to do.
Here's info about [Cockpit's](http://cockpit-project.org/) security, to help
you make those choices. You'll find not only has Cockpit got a solid security
story, but you can use it in all sorts of different ways depending on what
kind of security your systems need.
## Cockpit is a Linux session in your browser
Let's start by stacking the deck against Cockpit. First off it's important to
remember that Cockpit is actually an alternative Linux session ... along side X11,
SSH and VT logins. It's a session in the [PAM](http://www.linux-pam.org/),
[logind](https://www.freedesktop.org/wiki/Software/systemd/logind/), TTY,
[SELinux](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Confining_Users-Confining_Existing_Linux_Users_semanage_login.html)
and other senses.
The logged in browser and the javascript code it is running can interact directly
with the system as part of that session.
Try this out if you want. [Log into Cockpit](http://cockpit-project.org/running.html),
and pop up the Javascript console by pressing *Ctrl-Shift-J* in your browser. Now type
commands like the following:
> zz = cockpit.spawn(["id"])
> proxy = cockpit.dbus("org.freedesktop.hostname1").proxy()
> proxy.KernelName
Pretty cool, huh. And that's why Cockpit can be such a powerful and quick way to build
Linux system admin interfaces.
## But are browsers secure?
But can we trust browsers with your security? Firefox is about
[15 million lines of code](https://www.openhub.net/p/firefox/analyses/latest/languages_summary)
that all have to work together, and after looking at the list of
[security updates](https://www.mozilla.org/en-US/security/known-vulnerabilities/firefox/)
you gotta think about what that means for your security.
Any management system with a browser interface requires a secure browser.
That includes
[Satellite](https://www.redhat.com/en/technologies/management/satellite),
[Tower](https://www.ansible.com/tower),
[Foreman](https://www.theforeman.org/),
[Landscape](https://landscape.canonical.com/),
[CloudForms](https://www.redhat.com/en/technologies/management/cloudforms),
[cPanel](https://cpanel.com/) and more. If anything like this interacts with
your systems, then security bugs in browsers have a direct effect on your
system security.
Secondly take a look at any browser based tools that were involved in the
creation or curation of the software installed on your system, including
tools used by your Linux distribution.
If your security requirements are strict and you must avoid browsers at all
costs, then be sure to audit all possible places that browsers were involved
in what's running on your systems. It's harder than you think.
Unless your system is extremely isolated and hand crafted, it turns out that
browsers are already highly involved in many security paths for your systems.
Cockpit does not change this situation significantly.
## Cockpit has no special privileges
Back to Cockpit. What does that session look like? Cockpit itself has no
special privileges. The credentials of the logged in user start a login
session, and Cockpit can perform exactly the tasks that the logged in user
has access to. It has no more or less permissions.
You can examine anything about Cockpit security. Log into Cockpit, open the
*Terminal* page and run commands like the following:
$ id
uid=1000(stef) gid=1000(stef) groups=1000(stef),10(wheel)
$ cat /etc/shadow
cat: /etc/shadow: Permission denied
If you logged in as a non-root user, you'll find that Cockpit has no
elevated privileges on the system. Try this out via Javascript by
pressing *Ctrl-Shift-J* in Cockpit. Now type commands like
the following:
> zz = cockpit.spawn(["id"])
> zz = cockpit.spawn(["cat", "/etc/shadow"])
## Escalating privileges
So if Cockpit only has the privileges of the authenticated user, how does
it perform admin tasks? Well obviously one could log in as root, and the logged
in session would have all capabilities and access to the system.
But logging in directly as root is a poor security practice. Cockpit supports
escalating privileges via [sudo](https://www.sudo.ws/) and/or
[polkit](https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html).
If, and only if, the logged in user has permission to use sudo or polkit to
escalate privileges.
On the login screen you'll see a checkbox to enable privilege escalation:

This checkbox allows Cockpit to use your login password to escalate
privileges via sudo and/or polkit when necessary to perform admin
tasks. This is as if you log in with SSH and then used ```sudo -s```
or similar to perform some admin tasks. Try the following command once
you've logged in with the checkbox:
$ pkexec bash
# id
# uid=0(root) gid=0(root) groups=0(root)
You can track the state of this privilege escalation in the upper right
corner of Cockpit:

## Principle of Least Privilege
A good security practice is to run services, processes or tools with
the least amount of security privilege necessary to perform their task.
To accomplish this, Cockpit is split up in multiple components, each of
which runs with as little access to the system as possible.
On RHEL, Fedora, Ubuntu, Debian and any other distro that we distribute
Cockpit for ... we test and make sure that this privilege separation is
in effect: Including correct SELinux policies, and unprivileged unix users.
Here's some of the privilege separation described:
stef 9690 ... Sl 06:08 0:00 cockpit-bridge
The ```cockpit-bridge``` is the part of Cockpit that runs in the login session.
It is similar to a login shell, in that it runs with the privileges and security
context of the logged in user. In the above case I logged in as the ```stef``` user.
If you checked the *Reuse my password for privileged tasks* option on the login
screen, you might also see this process running as ```root``` in which case
```pkexec``` or ```sudo``` was used (see above) to escalate privileges.
root 9947 ... S 06:10 0:00 /usr/libexec/cockpit-session
The ```cockpit-session``` part of Cockpit is a small binary that performs
authentication for the logged in user. It uses [PAM](http://www.linux-pam.org/)
or [GSSAPI](https://web.mit.edu/kerberos/krb5-devel/doc/appdev/gssapi.html)
to perform that authentication. ```cockpit-session``` is installed setuid,
in such a way that it can be launched by the unprivileged ```cockpit-ws``` user
(see below) during user login. This process performs limited tasks, and has a
restrictive SELinux ```cockpit_session_t``` context. Lastly is a reasonably short
program written in plain C so it is easier to audit.
cockpit-ws 11295 ... Ssl 06:14 0:00 /usr/libexec/cockpit-ws
This is the component that listens on the network. It hands off
authentication information to the ```cockpit-session``` to perform a login
and launch cockpit-bridge. The ```cockpit-ws``` binary runs as an
unprivileged unix ```cockpit-ws``` user, with a restrictive
SELinux ```cockpit_ws_t``` policy.
## Security Policy within the browser
Cockpit runs javascript code from the system it's logged into. Obviously that
code is protected by the standard
[Same Origin Policy](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy)
that web browsers adhere to.
But how does Cockpit protect against bugs in the code. How can we be sure that
only the javascript code installed on the system is run, and bugs are not
exploited to run code trojaned into logs or other data loaded by Cockpit?
Browsers have a security technology called
[Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)
which is sorta like SELinux or Apparmor in your browser. The policy describes
exactly where code can be loaded, what can be run, and what sorts of connections
can be made by the browser.
In Cockpit's case we send a strict ```Content-Security-Policy``` header that
only allows code installed in Cockpit packages on the logged into system to be run.
Although individual parts of Cockpit can
[override this default](http://cockpit-project.org/guide/latest/packages.html#package-manifest),
it's rarely done. The default security policy looks like this:
Content-Security-Policy: default-src 'self' connect-src 'self' ws: wss:
A failure of *Content Security Policy* will look something like this in your browser's
javascript console:

## Security of the network facing TCP port
Cockpit typically listens on TCP port 9090 on a host. This is the
[websm or "Web Systems Manager" network port](https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt).
Opening a network facing port has security risks. Both the exposed surface
area and stuff listening on that port, in this case ```cockpit-ws```, are risky.
If this is an issue for your systems, you can use Cockpit over the SSH port
already have open. But wait, how does that work? Browsers don't natively speak
the SSH protocol, and getting a browser to do so would be an impressive party trick.
To use Cockpit over SSH, use a *bastion host model*: Start ```cockpit-ws``` on port 9090
on a single host, perhaps even your localhost. Connect to that with your
browser and use that first Cockpit instance to log into to Cockpit on other machines
others over SSH. If you draw it up, it looks something like this:

[Atomic Host includes Cockpit by default](http://www.projectatomic.io/docs/cockpit/),
in this way. Atomic Host doesn't include ```cockpit-ws``` or open port 9090 by default,
but expects you to connect from another running Cockpit instance over port 22. There's
also the possibility to run ```cockpit-ws``` as a container to accomplish this.
When you're trying this out in real life, specify an alternate server on the Cockpit
login screen. The SSH protocol will be used to connect to it:

Or you can add other machines to a local dashboard, and Cockpit will connect to
them via SSH. Even usage of SSH key based authentication works great:
Obviously, when you use Cockpit over SSH, it's not just a real Linux session,
it's also an SSH session in every way. Try it out.
## But what about the Web Server
Cockpit doesn't use a web server like Apache, NGINX or Lightttp. It doesn't use an
application server like Tomcat. So by and large the security concerns related to
deploying those projects do not apply here. Cockpit implements just enough of an HTTP
server to serve the Cockpit application to your browser.
This tiny HTTP server is included in the ```cockpit-ws``` process, and protected
via strong SELinux and unix privilege separation.
But if you're environment is uncomfortable with use of the Cockpit built-in HTTP server,
environments use Cockpit over SSH as seen in the section above.
## In conclusion
I could go further about how Cockpit uses
[Kerberos to do single sign on](http://cockpit-project.org/guide/latest/sso.html)
or [how it works with certificates](http://cockpit-project.org/guide/latest/https.html)
or how you can even bring
[your own authentication tool](https://raw.githubusercontent.com/cockpit-project/cockpit/master/doc/authentication.md)
to replace ```cockpit-session```. and much, much more.
But suffice it to say, that Cockpit's security is well thought out, layered and
matches that of Linux in general.
================================================
FILE: _posts/2018-09-19-cockpit-178.md
================================================
---
title: Cockpit 178
author: mvo
date: 2018-09-19
tags: cockpit linux
slug: cockpit-178
category: release
summary: Fixed crashers and dropped KubeVirt support
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 178.
### KubeVirt support has been removed
Cockpit ships `cockpit-kubernetes` for managing Kubernetes and
OpenShift deployments. Since its introduction, important points have
come to light:
- The OpenShift Console is adding support for
[KubeVirt](http://kubevirt.io/). It will become _the_ place for
managing KubeVirt-based VMs that run in OpenShift.
- `cockpit-kubernetes` has been in maintenance mode for a while. It
is difficult to support, as it uses a very old version of Angular.
- We haven't been able to build a recent kubevirt-enabled OpenShift image in four months. (Issues [#9479](https://github.com/cockpit-project/cockpit/issues/9479) & [#9638](https://github.com/cockpit-project/cockpit/pull/9638).) As a result, it is impossible to test recent KubeVirt versions.
- Community interest has waned on KubeVirt support in Cockpit.
As a result, we have removed KubeVirt support from
`cockpit-kubernetes` in this release. In the future, we will likely
remove all of `cockpit-kubernetes`.
#### Migration path
Fedora 29 will keep `cockpit-kubernetes`, but it will be dropped from the "rawhide" rolling release. (Rawhide is the name of the unstable version of Fedora. For the immediate future, it is currently what will become Fedora 30). Thus, `cockpit-kubernetes` will still be supported for approximately the next year-and-a-half.
During this time, the Cockpit team suggests migrating to [OpenShift Console's native KubeVirt support](https://blog.openshift.com/a-first-look-at-kubevirt/).
### Stabilization & security fixes
Cockpit 178 also includes several minor stabilization improvements and [a denial of service security fix](https://github.com/cockpit-project/cockpit/issues/10003).
### Try it out
Cockpit 178 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/178)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-178-1.fc28)
================================================
FILE: _posts/2018-10-04-cockpit-179.md
================================================
---
title: Cockpit 179
author: Gundersanne
date: 2018-10-04
tags: cockpit linux
slug: cockpit-179
category: release
summary: Cockpit with Machines improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 179.
### Machines: Detach disk support
When using the libvirt D-Bus provider, the Machines page now supports detaching
a disk from VMs.

_Thanks to Katerina Koukiou for this improvement!_
### Machines: Offer cockpit-machines as Application
This Cockpit version adds AppStream metadata for its own `cockpit-machines`
package (which is not installed by default). Once `appstream-data` gets updated
again in Fedora, cockpit-machines will appear on the Applications page as an available
extension.

### Try it out
Cockpit 179 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/179)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-179-1.fc28)
*[VM]: virtual machine
*[VMs]: virtual machines
================================================
FILE: _posts/2018-10-04-cockpit-180.md
================================================
---
title: Cockpit 180
author: pitti
date: 2018-10-04
tags: cockpit linux
slug: cockpit-180
category: release
summary: Cockpit with ssh and virtual machines improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 180.
### Move to ssh SHA256 fingerprints
Until version 179, Cockpit has shown MD5 based SSH host key fingerprints when
connecting to unknown remote machines.
The "ssh" command line program hasn't shown MD5 fingerprints in a long time,
but uses SHA1 and SHA256. MD5 and SHA1 are cryptographically weak, and using
them is not allowed when running in [FIPS mode](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sect-security_guide-federal_standards_and_regulations-federal_information_processing_standard).
Cockpit will now show SHA256 fingerprints when available:

This feature requires libssh 0.8, so it is only available on more recent
operating system releases. MD5 fingerprints are being used on older ones.
### Machines: Show error messages in the correct place
If there is an error with applying changes to a VM's networking configuration,
the error message is now shown in the correct ("Networking") tab:

Previously it was only shown in the "Overview" tab, and thus not immediately
visible.
_Thanks to Katerina Koukiou for this improvement!_
### Try it out
Cockpit 180 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/180)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-180-1.fc28)
*[VM]: virtual machine
*[FIPS]: Federal Information Processing Standard
================================================
FILE: _posts/2018-10-31-cockpit-181.md
================================================
---
title: Cockpit 181
author: mvo
date: 2018-10-31
tags: cockpit linux
slug: cockpit-181
category: release
summary: ...
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 181.
### System: Memory graph improvements
The appearance of memory and CPU graphs has been improved, and their
colors are more accessible.

Memory on Linux is often hard to understand and usually presented
incorrectly in most tools, including Cockpit's memory graphs.
The new presentation of memory in Cockpit is aligned with the way
people think about how RAM is used. It now shows:
1. the amount of RAM actively used by software
2. the amount of RAM used for cache
3. unused RAM
4. swap
On Cockpit's overview, the memory graph displays only the value of
active RAM and has a separate, small area to indicate swap usage. The
detailed memory view also shows cache.
Why do we not show cache on the overview and de-emphaize it on the
detailed memory view? Linux stores often-used files in memory as cache
to speed up performance. As cache is quickly reclaimed when needed,
it's effectively available RAM. That's why Cockpit shows it a free
space, as Linux considers it free too.
Additional information on can be found on the website [Linux Ate My
RAM](https://www.linuxatemyram.com/).
### Machines: Edit network interfaces of virtual machines
The configuration of the network interfaces of a virtual machine can
now be changed in Cockpit.

### Update look of lists to match PatternFly
Lists have been refreshed to look and act more similarly to PatternFly,
complete with a little animation when items are expanded.

### Try it out
Cockpit 181 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/181)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-181-1.fc28)
================================================
FILE: _posts/2018-11-14-cockpit-182.md
================================================
---
title: Cockpit 182
author: Gundersanne
date: 2018-11-14
tags: cockpit linux
slug: cockpit-182
category: release
summary: Cockpit with libvirt connection choice in VM creation and Software Updates improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 182.
### Machines: Add libvirt connection choice in VM creation dialog
The VM creation dialog now offers different connections to libvirt. The options
result in either a user session or system URI.

_Thanks to Katerina Koukiou for this improvement!_
### Software Updates page improvements
Update severity icons now have tooltips. The severity shown is equal to the
severity of the update with the highest severity among the available updates for
a package.

If the system is not registered, the Software Updates page now always points
this out. This avoids confusion if there are available updates from third-party
repositories, but the system as a whole still does not receive updates.

### Try it out
Cockpit 182 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/182)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-182-1.fc28)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-182-1.fc29)
*[VM]: virtual machine
================================================
FILE: _posts/2018-11-28-cockpit-183.md
================================================
---
title: Cockpit 183
author: pitti
date: 2018-11-28
tags: cockpit linux
slug: cockpit-183
category: release
summary: Cockpit with Machines, Kdump, and SSH improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 183.
### Machines: Manage storage pools
The Machines page now shows existing VM storage pools, and can also create new
pools. This currently supports pools on the local file system and on an NFS
volume.
_Thanks to Katerina Koukiou for this feature!_
### Kernel Dump: Support non-local targets
The Kernel Dump page now recognizes all possible types of kdump locations in
`/etc/kdump.conf`, such as raw disk devices or ext4 file systems. It can now
graphically configure SSH and NFS targets:

### Respect SSH configuration
When connecting to remote machines on the Login page or on the Dashboard,
Cockpit now respects the global (`/etc/ssh/ssh_config`) and user's
(`~/.ssh/config`) SSH configuration files. As a result, host name aliases,
different settings for ports, users, private keys, or `ProxyCommand` now take
effect.
Now Cockpit's SSH connections are consistent with the `ssh` command line
program.
### Never send Content-Length with chunked encoding
For some HTTP requests, Cockpit's web server previously sent replies using
chunked transfer encoding that contained a `Content-Length:` header field. This
is forbidden by the [HTTP specification](https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4)
and caused problems with some proxies (such as the [cypress.io](https://www.cypress.io/) test framework).
If you use Cockpit behind a proxy (forward or reverse) or any other non-trivial
web server setup, and notice regressions with this version, please
[report an issue](https://github.com/cockpit-project/cockpit/issues/new).
### Try it out
Cockpit 183 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/183)
* [Fedora 28](https://bodhi.fedoraproject.org/updates/cockpit-183-1.fc28)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-183-1.fc29)
*[VM]: Virtual Machine
*[NFS]: Network File System
*[SSH]: Secure Shell
*[NFS]: Network File System
================================================
FILE: _posts/2018-12-12-cockpit-184.md
================================================
---
title: Cockpit 184
author: mvollmer
date: 2018-12-12
tags: cockpit linux
slug: cockpit-184
category: release
summary: Cockpit with machines and storage improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 184.
### Machines: Dialog and tab layout is now responsive
These UI elements now adjust their layout to small and mobile browser
windows. This improvement will come to all dialogs in the near
future.

### Storage: Filesystem labels are validated upfront
The names one can give to filesystems have some limits put on them,
and Cockpit now knows about them and tells you if you violate them.

This prevents possibly confusing error messages from the underlying
tools, and it also prevents silent truncation.
### Storage: Some mount options are prefilled when needed
When configuring a filesystem to be mounted at boot, one has to give
it the special "_netdev" option if the block device only becomes
available when the network is up. Cockpit will now prefill this option
when it detects this case.
This is also used to deploy the [recommended workaround for the VDO
boot problems](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/vdo-quick-start).
### Integration of Cockpit pages on the desktop
For some use cases it may be desirable to use a particular Cockpit
page on a desktop, if a native application does not exist. This can be
done with the new "cockpit-desktop" tool, which runs a Cockpit web
server and a web browser (Webkit, Firefox, or Chromium/Chrome) in an
isolated network namespace. This avoids having to enable Cockpit
system-wide and having to log into it through the web browser again.
The cockpit-desktop tool may be used by system integrators or local
administrators through a standard [desktop
launcher](https://standards.freedesktop.org/desktop-entry-spec/latest/). Cockpit
ships no pre-defined launchers by itself.
### Try it out
Cockpit 184 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/184)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-184-1.fc29)
================================================
FILE: _posts/2019-01-09-cockpit-185.md
================================================
---
title: Cockpit 185
author: Gundersanne
date: 2019-01-09
tags: cockpit linux
slug: cockpit-185
category: release
summary: Responsive dialogs and kubernetes containers included in docker page graphs
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 185.
### Responsive dialogs
Dialogs on the Networking and KDump pages, as well as the password dialogs on
the Accounts page are now responsive.
{:.side-by-side}



### Docker: Include kubernetes containers in graphs
Kubernetes containers will now also be present in CPU/memory graphs.
{:.screenshot}
### Try it out
Cockpit 185 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/185)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-185-1.fc29)
================================================
FILE: _posts/2019-01-23-cockpit-186.md
================================================
---
title: Cockpit 186
author: Katerina Koukiou
date: 2019-01-23
tags: cockpit linux
slug: cockpit-186
category: release
summary: Responsive system page and improvement in services page
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 186.
### Services: Redesign Services page
During usability testing, we discovered the Service Details page was hard to
understand for administrators with a non-Linux background. The page now
uses neutral, well-known terminology. Additionally, action buttons are now next to service status.

### Responsive System Overview page
The overview page layout has been improved and includes fixes for mobile
devices. This is part of an ongoing process to improve layout across all of
Cockpit.

### Try it out
Cockpit 186 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/186)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-186-1.fc29)
================================================
FILE: _posts/2019-02-06-cockpit-187.md
================================================
---
title: Cockpit 187
author: mvollmer
date: 2019-02-06
tags: cockpit linux
slug: cockpit-187
category: release
summary: Cockpit with machines and storage improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 187.
### Machines: More operations for Storage Pools
You can now activate, deactivate, and delete the storage pools for
your virtual machines.

### Domains: More information about the joined domain
Clicking on the name of the joined domain will now open a dialog with
more information about that domain.

You can also leave the domain from this dialog.
### Storage: The options for VDO volumes are explained
When creating a VDO volume, the options are now explained with
tooltips.

### Machines: Support for oVirt will be dropped in the future
The oVirt project is mostly stalled and thus we don't plan to invest
much in Cockpit's oVirt support either. Cockpit will keep the current
support for oVirt in stable distributions, but will no longer provide
it from Fedora 30 and RHEL 8 on.
### Try it out
Cockpit 187 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/187)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-187-1.fc29)
================================================
FILE: _posts/2019-02-20-cockpit-188.md
================================================
---
title: Cockpit 188
author: pitti
date: 2019-02-20
tags: cockpit linux
slug: cockpit-188
category: release
summary: Cockpit with Machines and Terminal improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 188.
### Machines: Show Storage Volume user
The volume details on the "Storage Pool" page now show which libvirt domains
(virtual machines) use that volume.

### Machines: Autostart configuration
The VM details now have a new check box for enabling or disabling automatic
startup when the host boots.

_Thanks to Simon Kobyda for this feature!_
### Terminal: Themes and context menu
The Terminal can now copy and paste text via the new context menu or by using
key combinations (Ctrl+Insert and Shift+Insert).
You can now chose between four colour themes: white-on-black (the default),
black-on-white, and light or dark [Solarized](https://en.wikipedia.org/wiki/Solarized_(color_scheme)).

### Storage: Responsive dialogs
All dialogs on the Storage page now adjust their layout to small and mobile
browser windows. This is part of an ongoing process to improve layout across
all of Cockpit.

### Software Updates: Show three most recent updates
The Update History was redesigned to show the three most recent updates and a
package count. This design allows other information and features (such as
snapshots) to be integrated in the future.

### Try it out
Cockpit 188 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/188)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-188-1.fc29)
*[VM]: Virtual Machine
================================================
FILE: _posts/2019-03-06-cockpit-189.md
================================================
---
title: Cockpit 189
author: Gundersanne
date: 2019-03-06
tags: cockpit linux
slug: cockpit-189
category: release
summary: Cockpit with Machines and Services improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 189.
### Machines: Import existing image
You can now choose an existing qcow image when creating an new VM. This will not
run an installer, but just import it into libvirt.

### Machines: Show virtual networks
Show the details and properties of virtual networks.

_Thanks to Simon Kobyda for this feature!_
### Services: Filtering of services
Services can now be filtered using text. Results can be filtered additionally by
name, description, and state.
In addition, service states have been merged into one list. The switcher buttons
at the top have also been changed to tabs to make switching more obvious.

### Try it out
Cockpit 189 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/189)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-189-1.fc29)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/cockpit-189-1.fc30)
*[VM]: Virtual Machine
================================================
FILE: _posts/2019-03-22-cockpit-190.md
================================================
---
title: Cockpit 190
author: kkoukiou
date: 2019-03-22
tags: cockpit linux
slug: cockpit-190
category: release
summary: Cockpit with new features in logs and machines
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 190.
### Logs: Filter log entries by service

The Logs page now allows you to only view the logs for a specific service.
### Machines: Support for Pausing/Resuming VMs

You can now pause a running VM or resume a paused a VM.
_Thanks to Simon Kobyda for this feature!_
### Machines: Make Autostart property of a Virtual Network configurable

_Thanks to Simon Kobyda for this feature!_
### Machines: Support for creating VM with option to boot from PXE
You can now choose Network boot when creating a new VM. Supported sources are
libvirt Virtual Networks and host network devices used with
[direct assignment](https://libvirt.org/formatdomain.html#elementsNICSDirect).

### Accessibility improvements
Dropdowns in all pages are now properly accessible and allow keyboard navigation.
### Try it out
Cockpit 190 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/190)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-190-1.fc29)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/cockpit-190-1.fc30)
*[VM]: Virtual Machine
================================================
FILE: _posts/2019-04-03-cockpit-191.md
================================================
---
title: Cockpit 191
author: mvo
date: 2019-04-03
tags: cockpit linux
slug: cockpit-191
category: release
summary: Cockpit with Machines and Networking improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 191.
### Machines: iSCSI storage pools
You can now add an iSCSI target as a storage pool for your virtual
machines.

### Machines: Better notifications
Notifications about virtual machines have been streamlined and use a
common presentation now.

### Network: Firewall supports custom ports
In addition to services, which represent a predefined set of ports,
you now can now open individual ports in the firewall by directly
specifying their numbers.

### System: CPU security mitigation
Cockpit can now help you with enabling certain security vulnerability
mitigations, starting with the [nosmt option](https://access.redhat.com/security/vulnerabilities/L1TF).
### Try it out
Cockpit 191 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/191)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-191-1.fc29)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/cockpit-191-1.fc30)
================================================
FILE: _posts/2019-04-17-cockpit-192.md
================================================
---
title: Cockpit 192
author: pitti
date: 2019-04-17
tags: cockpit linux
slug: cockpit-192
category: release
summary: Cockpit with Machines and translation improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 192.
### Machines: Auto-detect guest operating system
When creating a new VM, the "OS Vendor" and "Operating System" fields are now
set automatically after specifying the installation sources for many vendors.
This uses the libvirt [osinfo-detect](https://libosinfo.org/) utility.

### Translation cleanup
Instead of showing just a predetermined set of languages, the language dialog
now offers all available translations, ordered alphabetically, in their native
translations:

Also, translations with less than 50% completion coverage were removed.
### Allow accounts with non-standard shells
Previously, logging into Cockpit was restricted to users who have a shell
specified in [/etc/shells](https://linux.die.net/man/5/shells), enforced
through [`pam_shells`](https://linux.die.net/man/8/pam_shells). This was found
to be too strict, and excludes users with e. g. the `tlog-rec-session` shell for
[session recording](https://github.com/Scribery/tlog).
Cockpit now accepts shells that are unchangeable by non-administrastors, yet
still allow a user to log in. However, shells which do not allow a user to log
in, such as /sbin/nologin or /bin/false, may still be used to deny access to
Cockpit.
### Try it out
Cockpit 192 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/192)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-192-1.fc29)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/cockpit-192-1.fc30)
*[VM]: Virtual Machine
================================================
FILE: _posts/2019-05-02-cockpit-193.md
================================================
---
title: Cockpit 193
author: Gundersanne
date: 2019-05-02
tags: cockpit linux
slug: cockpit-193
category: release
summary: Machine and storage page improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 193.
### Machines: iSCSI direct storage pools
You can now add an iSCSI direct target as a storage pool for your virtual
machines.

_Thanks to Han Han for this improvement!_
### Storage: The "Format" button is no longer hidden
The button to format a block device used to be in the tab that describes the
current content of the device, such as in the "Filesystem" or "Physical Volume"
tab. Now it is in the header row where it should be easier to find.

### Storage: Improve performance with many block devices
Cockpit now survives much better when there are thousands of block devices on
the Storage page.
### Try it out
Cockpit 193 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/193)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-193-1.fc29)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/cockpit-193-1.fc30)
*[VM]: Virtual Machine
================================================
FILE: _posts/2019-05-15-cockpit-194.md
================================================
---
title: Cockpit 194
author: lis
date: 2019-05-15
tags: cockpit linux
slug: cockpit-194
category: release
summary: Firewall page improvements and a new switch
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 194.
### Firewall: Add services to a specific zone
The firewall page now supports zones.

Services can now be added to and removed from specific zones.

Additionally, dialogs on the Firewall page now show error messages.

### Redesigned on/off switch
This release of Cockpit features a redesigned on/off switch. Compared
with the old version, the new switch is easier to use (with a bigger
clickable area), uses iconography to avoid translation problems, is
accessible, and is keyboard-navigatable. The new design corresponds
to the design of the
[switch from PatternFly 4](https://pf4.patternfly.org/components/Switch/examples/).


The switch also features a native-like keyboard focus indicator: a blue glow for
Chrome/WebKit-based browsers and a dotted outline for Firefox.


### Try it out
Cockpit 194 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/194)
* [Fedora 29](https://bodhi.fedoraproject.org/updates/cockpit-194-1.fc29)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/cockpit-194-1.fc30)
*[VM]: Virtual Machine
================================================
FILE: _posts/2019-05-29-cockpit-195.md
================================================
---
title: Cockpit 195
author: lis
date: 2019-05-29
tags: cockpit linux
slug: cockpit-195
category: release
summary: Firewall, Storage and Machines improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 195.
### Simplified support for external TLS termination
It's now easier to configure Cockpit's web server `cockpit-ws` to run
behind a
[TLS termination proxy](https://en.wikipedia.org/wiki/TLS_termination_proxy).
If the proxy runs on the same machine, then `cockpit-ws` can be run with
the new `--for-tls-proxy` option, which will adjust the allowed
[Origins](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin)
and
[Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)
to `https://` URLs. With this option, it's no longer necessary to
explicitly configure
[cockpit.conf](https://cockpit-project.org/guide/latest/cockpit.conf.5.html).
### Firewall: More support for zones
In addition to the support for adding services to specific zones in the
last release, the firewall page now allows adding and removing of the zones
themselves.

### Machines: Additional storage options
During virtual machine creation it is now possible to select the
storage pool to use for the machine.

It is now also possible to create a storage pool using a physical disk
device as the backing store.

Finally, it is now possible to configure the disk cache policy when
adding storage devices to virtual machines.

### Machines: Support for changing memory allocation
The Machines page also gained support for changing the current and
maximum memory allocations of a virtual machine.

### Storage: Select encryption type separately from filesystem
The selection of the filesystem type and filesystem encryption options
have been uncoupled on the storage page, allowing for the use of LUKS
with filesystems other than ext4 and xfs.

### Try it out
Cockpit 195 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/195)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-553472e6c2)
================================================
FILE: _posts/2019-06-12-cockpit-196.md
================================================
---
title: Cockpit 196
author: mvo
date: 2019-06-12
tags: cockpit linux
slug: cockpit-196
category: release
summary: Machines improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 196.
### Machines: Installation ISOs can be specified with a URL
Cockpit can now create a virtual machine from a ISO disc image URL.

### Machines: IP addresses for network interfaces
The information about network interfaces now includes their IP addresses.

### Try it out
Cockpit 196 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/196)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-07ec9aac9f)
================================================
FILE: _posts/2019-06-26-cockpit-197.md
================================================
---
title: Cockpit 197
author: kkoukiou
date: 2019-06-26
tags: cockpit linux
slug: cockpit-197
category: release
summary: Machines new features
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 197.
### Machines: Support all storage pool types for new disks
A cockpit user can now add a disk to a VM either by creating a new volume or
by choosing an existing volume, which can now reside on [any libvirt-supported pool
type](https://libvirt.org/storage.html#StorageBackendDir).


### Machines: Show available space on host at VM creation
When creating a new disk during VM creation, the dialog now has an indication
of the available space on the destination storage.
This prevents the user from overallocating storage to VMs which would lead to
installation failure.

### Try it out
Cockpit 197 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/197)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-07ec9aac9f)
*[VM]: Virtual Machine
================================================
FILE: _posts/2019-07-10-cockpit-198.md
================================================
---
title: Cockpit 198
author: pitti
date: 2019-07-10
tags: cockpit linux
slug: cockpit-198
category: release
summary: Cockpit with PatternFly 4 user interface design update
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 198.
### PatternFly4 user interface design
Cockpit has been restyled to match the
[PatternFly 4](https://pf4.patternfly.org/components/Button/examples/)
User Interface design, including the
[Red Hat Text and Display fonts](https://github.com/RedHatOfficial/RedHatFont).
This style refresh aligns Cockpit with other web user interfaces that use
[PatternFly](https://www.patternfly.org/), such as
[OpenShift 4](https://www.redhat.com/en/openshift-4).
Over time, Cockpit will be ported to actually use PatternFly 4 widgets, but
this restyle allows us to change Cockpit gradually.


### SELinux: Show changes
The SELinux page now has a new section "System Modifications" which shows all
policy settings that were made to the system (with Cockpit or otherwise):

The "View Automation Script" link will show a dialog with a shell script that
can be used to apply the same changes to other machines:

### Machines: Deletion of Virtual Networks
The Virtual Networks section of the Machines page now supports deleting networks.

### Machines: Support more disk types
When creating a new VM, the disk can now be on a storage pool type other than a
plain file. The newly supported types are iSCSI, LVM, and physical volumes.

### Docker: Change menu label
The menu label changed from "Containers" to "Docker Containers". This avoids
confusion with the "Podman Containers" page from
[cockpit-podman](https://github.com/cockpit-project/cockpit-podman), and points
out that this page really is about Docker only, not any other container
technology.
### Web server: More flexible https redirection for proxies
[cockpit-ws](https://cockpit-project.org/guide/latest/cockpit-ws.8.html) now
supports redirecting unencrypted http to https (TLS) even when running in
`--no-tls` mode. Use this when running cockpit-ws behind a reverse http proxy
that also supports https, but does not handle the redirection from http to
https for itself. This is enabled with the new `--proxy-tls-redirect` option.
### Try it out
Cockpit 198 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/198)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-2284294b43)
*[VM]: Virtual Machine
================================================
FILE: _posts/2019-07-24-cockpit-199.md
================================================
---
title: Cockpit 199
author: kkoukiou
date: 2019-07-24
tags: cockpit linux
slug: cockpit-199
category: release
summary: Cockpit with Logs and Services and HWInfo design updates
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 199.
### Redesigned logs
Restyled logs across all of Cockpit.

### Services: Design and accessibility improvements
Services and other systemd units now sport a simpler on/off state with a clear status overview.

In addition, the tabs in Service page are now accessible.
### System: Show DIMM information on Hardware Info page
The Hardware Info page now displays memory-related information for DIMMs, such as: size, rank, speed, and other details.

_Thanks to Akshit Dua for this feature!_
### Machines: VM creation dialog now shows the recommended memory for the selected OS
During VM creation, memory fields are checked for validity. The Create VM dialog now displays a recommended RAM size for the selected OS and an error appears if memory is set too low.

### Try it out
Cockpit 199 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/199)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-d73df27df4)
*[VM]: Virtual Machine
*[DIMM]: Dual Inline Memory Module
*[RAM]: Random Access Memory
*[OS]: Operating System
================================================
FILE: _posts/2019-08-07-cockpit-200.md
================================================
---
title: Cockpit 200
author: pitti
date: 2019-08-07
tags: cockpit linux
slug: cockpit-200
category: release
summary: Cockpit with new TLS proxy, firewall, and Machines improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. This is version Two Hundred, prepared for you live and in person from the Cockpit team sprint in Berlin!
### Machines: Type-ahead OS selection
In the VM creation dialog, OS vendor and product dropdowns have been replaced by a singular "Operating System" selector. The new dropdown is keyboard-friendly and supports auto-completion.

### Machines: Create LVM storage pools
Storage pools using LVM can be created on the Machines page.

### Machines: Create virtual networks
[Virtual networks](https://libvirt.org/formatdomain.html#elementsNICSVirtual) can now be created on the Virtual Machines page. These are used for connecting VMs with each other and/or to the host, or isolating different groups of VMs from each other.

### Networking: Show included firewalld services
[firewalld 0.7.1](https://firewalld.org/2019/07/firewalld-0-7-1-release) introduces the concept of services that include other services. Cockpit's Firewall page shows these:

### Web server: Split out TLS handling
This release introduces [`cockpit-tls`](https://cockpit-project.org/guide/latest/cockpit-tls.8.html), a TLS terminating HTTP proxy that runs in front of [cockpit-ws](https://cockpit-project.org/guide/latest/cockpit-ws.8.html).
At the moment, `cockpit-tls` does not provide additional features over using `cockpit-ws` directly (other than better isolation), but it sets up a basis for future work, such as supporting smart card authentication.
This change is expected to be transparent to users. Please [report issues](https://github.com/cockpit-project/cockpit/issues/new?template=bug_report.md) if you encounter any page loading failures, stalls, or similar networking issues!
### Try it out
Cockpit 200 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/200)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-d73df27df4)
*[VM]: Virtual Machine
*[OS]: Operating System
================================================
FILE: _posts/2019-08-21-cockpit-201.md
================================================
---
title: Cockpit 201
author: Gundersanne
date: 2019-08-21
tags: cockpit linux
slug: cockpit-201
category: release
summary: Cockpit with Machines, services, and system improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly.
### Machines: VM creation changes
Creating a VM by importing an existing disk has been moved to a separate dialog.
{:.screenshot}
The Operating System input field is now mandatory; this allows the guest device
assignment to be optimized, leading to better performance.
{:.screenshot}
The storage size input field has to be at least the required minimum by the VM's
OS.
{:.screenshot}
### Machines: Enable interface type "direct" in NIC configuration
It's now possible to directly attach the VM's NIC to the specified physical
interface of the host.
{:.screenshot}
### systemd: Add more actions to services
It's now again possible to stop a service, without disabling it. Reloading is now
available only when the service allows it.
Furthermore, disabling or masking a service removes any lingering "failed" state,
reducing noise.
{:.screenshot}
### Try it out
Cockpit 201 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/201)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-2ee93529c0)
*[VM]: Virtual Machine
*[LVM]: Logical Volume Manager
*[OS]: Operating System
*[TLS]: Transport Layer Security
*[HTTP]: Hypertext Transport Protocol
================================================
FILE: _posts/2019-09-04-cockpit-202.md
================================================
---
title: Cockpit 202
author: kkoukiou
date: 2019-09-04
tags: cockpit linux
slug: cockpit-202
category: release
summary: Cockpit with Machines improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 202.
### Machines: Creation of Storage Volumes
Creation of Storage Volumes is now possible for a subset of the supported Storage Pool types.
The Storage Volumes can then be used as virtual disks for VMs.

### Improved component for selecting paths on the filesystem
The component used in dialogs for selecting paths on the filesystem was improved in order to be keyboard navigatable and accessible.
Multiple dialogs such as SSH key authentication from the Shell, Create VM and Create Storage Pool from Machines Page benefit from this change.


### Try it out
Cockpit 202 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/202)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-1446526b5e)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2019-cb9233ff6c)
*[VM]: Virtual Machine
================================================
FILE: _posts/2019-09-18-cockpit-203.md
================================================
---
title: Cockpit 203
author: mvo
date: 2019-09-18
tags: cockpit linux
slug: cockpit-203
category: release
summary: Cockpit with Machines improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 203.
### Machines: Network Interfaces
Virtual machines now support creation of virtual network interfaces.

### Try it out
Cockpit 203 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/203)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-0db41ff415)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2019-82189ed15b)
================================================
FILE: _posts/2019-10-02-cockpit-204.md
================================================
---
title: Cockpit 204
author: pitti
date: 2019-10-02
tags: cockpit linux
slug: cockpit-204
category: release
summary: Cockpit with Services and Machines improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 204.
### System: Highlight failed services
A "System Health" entry on the System overview page shows failed services, if any exist:

Failed services also cause a warning to appear in the navigation, next to the "Services" entry.
The Services page now shows failed services at the top of the list, to make it easier to spot problems.
### Machines: Configure read-only and shareable disks
The "Disks" tab now shows whether a disk is read-only or shareable between multiple VMs:

With the new "Edit" button these properties can now be changed:

Sharing is only supported for disks in raw format. Note that sharing writable disks can easily destroy data when multiple VMs write to the disk at the same time; so use this feature with caution.
Sharing will be enabled automatically when adding a disk to more than one VM.
### Playground: Add index page
Various "Playground" pages are meant for developers to test internal features of Cockpit; they are shipped in the "cockpit-tests" package. All these pages are now subsumed in a single "Development" menu entry that shows an index page, instead of a lot of individual menu entries that cluttered up the menu too much.
That index page now also shows playground elements that weren't previously visible, such as the "Speed Tests" page.
### Try it out
Cockpit 204 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/204)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-1da872f5fa)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2019-ddb9f2270b)
*[VM]: Virtual Machine
================================================
FILE: _posts/2019-10-16-cockpit-205.md
================================================
---
title: Cockpit 205
author: skobyda
date: 2019-10-16
tags: cockpit linux
slug: cockpit-205
category: release
summary: Cockpit with Design updates, page notifications, and security hardening
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly.
Here are the release notes from version 205.
### Firewall: UI restructuring
The firewall page was redesigned. Instead of having separate listings for services
and zones, the services are now listed per zone. This aims to make the relationship
between zones and services clearer.

### Machines: Refactor Create VM dialog and introduce a download option
A guest operating system can now be downloaded automatically by only
selecting its name. Memory and storage size will default to recommended
values for the selected OS.

### Adjust menu to PatternFly's current navigation design
The pages menu now has a dark theme, the recommended current design from PatternFly after an
[user study](https://blog.patternfly.org/patternfly/how-do-different-patternfly-visual-themes-affect-navigation-performance-perception-and-preference/).
### Searching with keywords
Enable searching by page names and keywords. Also works with translated page
names and translated keywords. Searching by page content is not available yet.

### Software Updates: Use notifications for available updates info
Cockpit will notify you about available updates in the navigation menu.

### Web server security hardening
The cockpit-tls proxy and the cockpit-ws instances now run as different system users,
and the instances are controlled by systemd. This provides better isolation and robustness.
### Try it out
Cockpit 205 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/205)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-077643f593)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2019-51df278ff3)
*[VM]: Virtual Machine
*[OS]: Operating System
================================================
FILE: _posts/2019-10-30-cockpit-206.md
================================================
---
title: Cockpit 206 and Cockpit-podman 10
author: Gundersanne
date: 2019-10-30
tags: cockpit linux
slug: cockpit-206
category: release
summary: Cockpit with machines, firewall, and login page improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly.
### Machines: Network interface deletion
Network interfaces can now be removed from virtual machines.

### login: Reuse password by default
For operations that change system state and for troubleshouting Cockpit needs
administrative rights, so make reusing the password for privileged tasks the
default.

### Firewall: Prevent accidental deletion
A confirmation now appears when removing zones and the Cockpit service.
In addition to making the interface less volatile, Cockpit will warn you when
you're removing the cockpit service or a zone which contains the Cockpit
service, as these could impact your current connection.

Furthermore, in order to avoid accidentally locking yourself out, Cockpit will
automatically add itself to all newly-created zones.
### Podman: User containers
The Cockpit-podman page now has support for user containers. These do not
require administrative privileges to run.
{:.screenshot}
### Try it out
Cockpit 206 and Cockpit-podman 10 are available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Cockpit Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/206)
* [Cockpit-podman Source Tarball](https://github.com/cockpit-project/cockpit-podman/releases/tag/10)
* [Cockpit Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-a460236814)
* [Cockpit-podman Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-77aeecbdbf)
* [Cockpit Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2019-0667dd1786)
* [Cockpit-podman Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2019-f72585793e)
================================================
FILE: _posts/2019-11-13-cockpit-207.md
================================================
---
title: Cockpit 207
author: kkoukiou
date: 2019-10-30
tags: cockpit linux
slug: cockpit-207
category: release
summary: Cockpit with authentication and storage page improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly.
### Web server: Accept EC certificates
The `/etc/cockpit/ws-certs.d` directory can now contain
[Elliptic Curve Cryptography](https://wiki.openssl.org/index.php/Elliptic_Curve_Cryptography) certificates in addition to the classic RSA ones.
### Storage: List all software devices in a single panel
This avoids showing empty panels for types of devices that you don't have.
{:.screenshot}
### Redesigned notifications
This release of Cockpit features a new notification design,
which corresponds to the [alert component from PatternFly 4](https://pf4.patternfly.org/components/Alert/examples/).
{:.screenshot}
### Try it out
Cockpit 207 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Cockpit Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/207)
* [Cockpit Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-2a9d6c73dc)
* [Cockpit Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2019-d2ecb54f20)
================================================
FILE: _posts/2019-11-27-cockpit-208.md
================================================
---
title: Cockpit 208
author: pitti
date: 2019-11-27
tags: cockpit linux
slug: cockpit-208
category: release
summary: Cockpit with Machines, file system creation, and crash reporting improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 208.
### Storage: Drop "default mount point" concept
Cockpit no longer offers a confusing "Default" choice when mounting a filesystem. Creating a new filesystem now always requires a specified mount point.
Additionally, Cockpit now hides the distinction between configuration (`/etc/fstab`) and run-time state (`/proc/mounts`). Changes made in Cockpit always apply to both the configuration and run-time state. When configuration and run-time state differ from each other, Cockpit will show a warning and let you easily bring them back in sync.

### Machines: Support transient virtual networks and storage pools
Transient resources exist only while active and cease to exist once deactivated. Cockpit now disables or hides functionality like autostart or deletion for transient networks and storage pools.

### Machines: Sliders for disk size and memory in VM creation
"Create New Virtual Machine" and "Import Virtual Machine" dialogs now have
sliders to configure memory and disk sizes.

### Logs: Improve crash reporting
Cockpit previously sent problem and crash reports directly to [ABRT Analytics](https://github.com/abrt/faf) from the Logs page. Switching to the new "reportd" framework allows Cockpit report to more places, such as [Bugzilla](https://bugzilla.redhat.com/), and has improved authentication methods.

Thanks to Ernestas Kulik for this work!
### Try it out
Cockpit 208 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/208)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-d3b55c4594)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2019-b29e09a8d4)
*[VM]: Virtual Machine
================================================
FILE: _posts/2019-12-13-cockpit-209.md
================================================
---
title: Cockpit 209
author: mvo
date: 2019-12-13
tags: cockpit linux
slug: cockpit-209
category: release
summary: Cockpit with Overview improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 209.
### A new design for the Overview page
The landing page has been completely redesigned. Information is
grouped into easier to understand panels, health information is much
more prominent, the resource graphs have been moved to their own page,
and the hardware information page should now be easier to find.

### Session timeouts
Cockpit will automatically log you out of your current session after
15 minutes of inactivity.

You can configure the timeout, in minutes, in
`/etc/cockpit/cockpit.conf`. For example, this will disable automatic
logouts completely:
```
[Session]
IdleTimeout=0
```
### Support for banners on the login page
Like SSH, Cockpit can now optionally show the content of banner files
on the login screen.

This needs to be configured in `/etc/cockpit/cockpit.conf`. For example:
```
[Session]
Banner=/etc/issue.cockpit
```
### Support for TLS client certificate authentication
You can now log into Cockpit with a TLS client certificate that is
provided by your browser or a device like a Smart Card or YubiKey.
See it in action:
And read the documentation [here](https://cockpit-project.org/guide/latest/cert-authentication.html).
### Support for Fedora CoreOS
[Fedora CoreOS](https://docs.fedoraproject.org/en-US/fedora-coreos/)
is a minimal and robust Fedora based operating system for hosting
container workloads. It is the successor of [Fedora Atomic
Host](http://www.projectatomic.io/), which is not supported any more.
We now fully support running Cockpit on this platform.
Please see the [Running
Cockpit](https://cockpit-project.org/running.html) documentation or
the [cockpit/ws docker hub](https://hub.docker.com/r/cockpit/ws/) page
for how to install Cockpit on Fedora CoreOS.
### List cockpit logins in wtmp/utmp
Logins via the web console are now correctly registered in utmp and
wtmp, allowing them to be visible in tools such as `who`, `w`, and
`last`.
```
[root@m1 ~]# who
root pts/0 2019-12-13 08:09 (172.27.0.2)
admin web console 2019-12-13 08:09
```
### Dropped support for the pam_rhost module
The `pam_rhosts` module is not in Cockpit's PAM stack by default (nor
in any other stack) and the remote IP is not a reliable piece of
information. NAT, VPNs, or reverse proxies (such as Cockpit's own
cockpit-tls) all destroy the actual IP of the browser's machine.
For these reasons, Cockpit does not set the `PAM_RHOST` variable
anymore when running its PAM stack.
### Try it out
Cockpit 209 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/209)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2019-53834396c7)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2019-3df1269346)
================================================
FILE: _posts/2020-01-08-cockpit-210.md
================================================
---
title: Cockpit 210 and Cockpit-podman 12
author: kkoukiou
date: 2020-01-08
tags: cockpit linux podman
slug: cockpit-210
category: release
summary: Cockpit with Overview, Dashboard and Machines improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 210.
### Overview: Add CPU utilization to usage card
Display CPU usage information in the usage card of the Overview page. For detailed CPU usage information, please consult the graphs page.

### Dashboard: Support SSH identity unlocking when adding new machines
Cockpit now offers an inline feature to unlock SSH identities when adding a new machine to the Dashboard.

### SElinux: Introduce an Ansible automation script
SELinux modifications can be reviewed and exported also as Ansible tasks. These exported tasks can be applied to other servers.

### Machines: Support "bridge" type network interfaces
Virtual machines can now use "bridge" networking. VMs with bridged networking have full incoming and outgoing network access on a LAN, just like a physical machine.

### Machines: Support bus type disk configuration
Adding and editing VM disks now supports different bus types, such as SATA, SCSI, USB, or Virtio.
Using Virtio is generally the best option, for performance reasons. Other bus types may be used if an operating system doesn't support Virtio. (For example: Windows does not support Virtio by default; additional drivers need to be installed.) Another valid reason to choose something other than Virtio is if the guest OS expects the disk to show up as another type of device.

### Podman: Configure CPU share for system containers
System containers now have a configuration option to adjust CPU shares.
By default, all containers have the same proportion of CPU cycles. A container’s CPU share weighting can be changed relative to the weighting of all other running containers. For more information, please refer to [`podman run`'s documentation](https://github.com/containers/libpod/blob/master/docs/source/markdown/podman-run.1.md#options), under "cpu-shares".
{:.screenshot}
### Try it out
Cockpit 210 and Cockpit-podman 12 are available now:
* [For your Linux system](https://cockpit-project.org/running.html)
#### Source
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/210)
* [Cockpit-podman Source Tarball](https://github.com/cockpit-project/cockpit-podman/releases/tag/12)
#### Fedora 30
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2020-8ff69018de)
* [Cockpit-podman Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2020-63b7f0d62a)
#### Fedora 31
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-afa121b867)
* [Cockpit-podman Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-fbffc4a3a3)
*[VM]: Virtual Machine
*[VMs]: Virtual Machines
*[NIC]: Network Interface Card
*[SATA]: Serial "Advanced Technology" Attachment, a bus interface to attach storage devices to a computer
*[SCSI]: Small Computer System Interface, commands and protocols for communication with (mainly storage) devices
*[USB]: Universal Serial Bus, a protocol for hot-pluggable (and usually external) devices
*[Virtio]: Virtual Input/Output, a standard for network and disk drivers where the guest cooperates with the host for performant virtualization
*[SELinux]: Security-Enhanced Linux, policies for enforcing access controls in Linux
*[SSH]: Secure Shell, a common protocol to securely connect to a remote computer
*[CPU]: Central Processing Unit, the "brain" of a computer
*[LAN]: Local Area Network
*[OS]: Operating System
================================================
FILE: _posts/2020-01-22-cockpit-211.md
================================================
---
title: Cockpit 211
author: mvo
date: 2020-01-22
tags: cockpit linux
slug: cockpit-211
category: release
summary: Cockpit with certificate and layout improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 211.
### Better support for various TLS certificate formats
Cockpit can now read certificates in a number of formats, such as the
one from LetsEncrypt.
Specifically, the web server now accepts certificates in
`/etc/cockpit/ws-certs.d` which have a `.crt` extension, in addition
to `.cert`. Also, private keys can now be in a separate file with a
`.key` extension.
### Switch from Zanata to Weblate
The Fedora project is [moving away from
Zanata](https://communityblog.fedoraproject.org/fedora-localization-platform-migrates-to-weblate/),
and so is the Cockpit project. Translations are now maintained with
[Weblate](https://translate.fedoraproject.org/projects/cockpit/).
### Overview layout optimizations
The cards of the Overview page now work better at various screen
resolutions.
### Try it out
Cockpit 211 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
#### Source
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/211)
#### Fedora 30
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2020-e70cf11146)
#### Fedora 31
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-d5974928d6)
================================================
FILE: _posts/2020-02-05-cockpit-212.md
================================================
---
title: Cockpit 212 and Cockpit-podman 13
author: Gundersanne
date: 2020-02-05
tags: cockpit linux podman
slug: cockpit-212
category: release
summary: Cockpit with documentation and time localization improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We
release regularly. Here are the release notes from version 212.
### Per-page documentation
The help menu now includes links to page- and OS-specific documentation.
{:.screenshot}
### Localize times
The Overview, Accounts, and Logs pages now show dates and times in the
correctly-localized format.
{:.screenshot}
### Podman: Show full log
Show containers' logs since their startup, not just since opening the Logs tab.
{:.screenshot}
### Try it out
Cockpit 212 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
#### Source
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/212)
* [Cockpit-podman Source Tarball](https://github.com/cockpit-project/cockpit-podman/releases/tag/13)
#### Fedora 30
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2020-f951136bb9)
* [Cockpit-podman Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2020-cb167d1ce6)
#### Fedora 31
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-ebfb75d52f)
* [Cockpit-podman Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-88578e70da)
================================================
FILE: _posts/2020-02-19-cockpit-213.md
================================================
---
title: Cockpit 213
author: mvo
date: 2020-02-19
tags: cockpit linux
slug: cockpit-213
category: release
summary: Cockpit with documentation and virtual machine improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 213.
### Inline documentation
Cockpit has started to include documentation for specific features, such as network bonds.
{:.screenshot}
We plan to expand this in the future and add many more short documentation popups.
### Support for transient virtual machines
Not all operations make sense for transient virtual machines, and Cockpit is now aware of that.
{:.screenshot}
### Virtual machines can now use UEFI
Cockpit now supports selecting UEFI as the firmware for a new virtual machine. This needs to be done before the first boot of that machine.
{:.screenshot}
### Unattended virtual machine installation
When creating a virtual machine with a supported OS, Cockpit can install and configure that OS automatically, without requiring interactions.
{:.screenshot}
### Try it out
Cockpit 213 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/213)
* [Fedora 30](https://bodhi.fedoraproject.org/updates/FEDORA-2020-657c52197c)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-ec0a7fdc82)
* [Fedora 32](https://bodhi.fedoraproject.org/updates/FEDORA-2020-0dbb2a50e0)
================================================
FILE: _posts/2020-03-04-cockpit-214.md
================================================
---
title: Cockpit 214
author: pitti
date: 2020-03-04
tags: cockpit linux
slug: cockpit-214
category: release
summary: Cockpit with bug fixes
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 214.
### Networking: List Firewall active zones when unprivileged
[firewalld](https://firewalld.org/) recently became more restrictive. Listing services in a zone is no longer possible for anyone but superusers. As a result, the Firewall page was empty in unprivileged mode.
With this new Cockpit version, the Firewall page shows active zones again, however without services listed.
### Selenium tests deprecation
The Cockpit team has adjusted many "verify" browser tests to be non-destructive. This reworking was done to allow test VMs to be reused without resetting, which was our primary remaining reason for still having the Selenium tests.
Compared to verify tests, Selenium tests are much harder to debug and coverage is not quite as complete. Therefore, we will no longer develop Selenium tests. Eventually, the Selenium tests will be completely removed.
If you work with the Selenium tests, please get in touch with us.
### Try it out
Cockpit 214 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/214)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-22b3a559ff)
* [Fedora 32](https://bodhi.fedoraproject.org/updates/FEDORA-2020-6c27781454)
*[VM]: Virtual Machine
================================================
FILE: _posts/2020-03-18-cockpit-215.md
================================================
---
title: Cockpit 215
author: kkoukiou
date: 2020-03-18
tags: cockpit linux
slug: cockpit-215
category: release
summary: Cockpit with Network improvements and Docker deprecation
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 215.
### Networking: Show additional included ports in firewall zones
The Firewall page now shows ports that are directly added to a zone at the end of the services list.

### Docker: Deprecate `cockpit-docker` in favor of `cockpit-podman`
`cockpit-docker` is being deprecated in favor of `cockpit-podman`, and will not be
maintained upstream. We have stopped building it for Ubuntu ≥ 20.04,
Debian ≥ 11, and Fedora >= 32 (i. e. the current development series), but will keep it for the
stable releases (i. e. backports).
### Try it out
Cockpit 215 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/215)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-6f3212b6fa)
* [Fedora 32](https://bodhi.fedoraproject.org/updates/FEDORA-2020-a63046430d)
================================================
FILE: _posts/2020-04-01-cockpit-216.md
================================================
---
title: Cockpit 216
author: lis
date: 2020-04-01
tags: cockpit linux
slug: cockpit-216
category: release
summary: Cockpit with improved SELinux page and last login banner
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 216.
### SELinux: Automatic application of solutions that set booleans
The SELinux page can now automatically apply solutions that set [SELinux booleans](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/sect-security-enhanced_linux-working_with_selinux-booleans).

In addition, command lines in solution details are now formatted properly.
### Machines: Drop virsh backend support
This release drops virsh backend support from the Machines page and
switches to using libvirt-dbus exclusively. As a result, as of this
release, cockpit-machines is no longer supported on Ubuntu 18.04.
### Overview: New "last login" banner
Similar to text logins at the console, or via SSH, Cockpit now displays a
banner showing the last successful login. If there have been failed login
attempts, the number of attempts and the time of the most recent failed attempt
will be shown as well.

A side-effect of this work is that Cockpit now correctly updates
`/var/log/lastlog` (the record of last login times) and `btmp` (the
record of failed login attempts).
### Try it out
Cockpit 216 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/216)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-6bf666bd24)
* [Fedora 32](https://bodhi.fedoraproject.org/updates/FEDORA-2020-29e40ad324)
*[SELinux]: security-enhanced Linux, a way to ensure better access control to resources
*[virsh]: virtual machine shell, a utility to control virtual machines at the command line
*[libvirt-dbus]: a way to control virtual machines over the common "D-Bus" inter-process communication layer
*[SSH]: secure shell
================================================
FILE: _posts/2020-04-15-cockpit-217.md
================================================
---
title: Cockpit 217
author: mvo
date: 2020-04-15
tags: cockpit linux
slug: cockpit-217
category: release
summary: Cockpit with improved Insights details, dialog buttons, and VM consoles
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 217.
### Overview: More details about Insights rule hits
When a machine is connected to Red Hat Insights, the Health card on
the Overview page now shows more details.

### Dialogs: Buttons have been improved
Following [PatternFly's revised design guidelines](https://www.patternfly.org/v4/design-guidelines/usage-and-behavior/buttons-and-links#button-placement), button placement in all modal dialogs has been changed [to improve usability and accessibility](https://blog.patternfly.org/patternfly/button-placement-on-forms/).

### Machines: Sending more keys to the console
Many more special keys can be sent to running virtual machines:
- Control+Alt+Delete is usually used for rebooting a computer. On Windows systems, it is also sometimes used for signing in.
- Control+Alt+Backspace is useful for force-quitting the X Window System.
- The rest of of these key combinations are for switching Linux virtual consoles.

### Try it out
Cockpit 217 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/217)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-dd9f5f6216)
* [Fedora 32](https://bodhi.fedoraproject.org/updates/FEDORA-2020-b072ad14c8)
================================================
FILE: _posts/2020-04-29-cockpit-218.md
================================================
---
title: Cockpit 218
author: pitti
date: 2020-04-29
tags: cockpit linux
slug: cockpit-218
category: release
summary: Cockpit with Services page improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 218.
### Services: Improved accessibility and mobile support
The Services page has been rewritten using [PatternFly 4](https://www.patternfly.org/v4/) for improved accessibility. It now also works properly in mobile mode.

### Overview: Add uptime information
The "System Information" card on the Overview page now shows the machine's uptime (i.e. how long it has been running since the last boot).

Thanks to Martin Schiffner for this contribution!
### Disable idle timeout by default
As a response to user feedback, the automatic session timeout after 15 minutes introduced in [Cockpit 209](https://cockpit-project.org/blog/cockpit-209.html) is now disabled by default. As Cockpit is never the primary session on a device, it is generally sufficient to let screen lock on desktops and mobile devices protect the session.
The idle timeout can still be enabled in [cockpit.conf](https://cockpit-project.org/guide/latest/cockpit.conf.5.html). Any existing explicit setting continues to work as before.
### Support building without polkit
Cockpit integrates a [polkit](https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html) agent, to handle D-Bus services like firewalld and udisks for users who are not full administrators. However, polkit has some large dependencies like mozjs which may be undesirable for embedded systems. With this Cockpit version, building without the polkit libraries is possible. This will, of course, disable the polkit agent within Cockpit sessions.
Thanks to Michael Häner for this contribution!
### Try it out
Cockpit 218 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/218)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-3404e09362)
* [Fedora 32](https://bodhi.fedoraproject.org/updates/FEDORA-2020-d3da290f23)
*[VM]: Virtual Machine
================================================
FILE: _posts/2020-05-06-cockpit-ansible.md
================================================
---
title: Scale Cockpit troubleshooting to your computing fleet
author: pitti
date: 2020-05-06
category: announcement
tags: cockpit selinux ansible scaling troubleshooting
comments: true
---
You might know Cockpit as a troubleshooting tool for individual machines. But once you discover and test a solution, wouldn't it be nice to apply it to all your other machines in your data center?
Of course, not every problem works this way. You wouldn't extend LVM with a new hard disk on a hundred machines at the same time. But there *are* situations where applying the same task across a multitude of computers makes sense.
In this example, we will adjust the [SELinux policy](https://www.redhat.com/en/topics/linux/what-is-selinux) to our needs and apply it elsewhere.
[Cockpit 210](./cockpit-210.html) introduced a new approach that we want to explore; asking the computer to "show me what I have done". It's now easy to look at SELinux policy changes, compared to the defaults on a machine, in a human-readable form, as a shell script, or an [Ansible](https://www.ansible.com/) [role](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse). The shell script and Ansible role are both suitable for automation across multiple machines.

To see SELinux debugging, fixing, and deploying in action, watch this short three-and-a-half minute demo covering the whole workflow. Follow along with steps from "_there's a problem I need to debug_" to "_I'll figure out a solution with Cockpit_" and finally to "_I'll apply this tested solution to my entire fleet of computers_".
While this approach works for SELinux, not every part of Cockpit can be used in a similar manner. First and foremost, Cockpit always shows the server's current *state*, not its configuration. At a glance, the difference between static configuration, dynamic state (like the IP address of a DHCP network card), or even hardware properties (like the number, capacity, and serials of hard disks) are not necessarily obvious.
But there are certainly more configuration-related places and actions in Cockpit. For example:
* Enabling or disabling [Simultaneous Multi-Threading](https://access.redhat.com/security/vulnerabilities/L1TF) to mitigate CPU vulnerabilities
* Enabling or disabling PCP, firewall, kdump, or general systemd units
* Setting up automatic package updates
Would copying the settings of these and applying them across other machines be useful to you? Do you have other ideas and uses for something like this? If so, please [give us your feedback](https://github.com/cockpit-project/cockpit/issues)!
================================================
FILE: _posts/2020-05-13-cockpit-219.md
================================================
---
title: Cockpit 219
author: kkoukiou
date: 2020-05-13
tags: cockpit linux
slug: cockpit-219
category: release
summary: Logs filtering and privilege changing improvements
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 219.
### Logs: Improved filtering
Logs can now be filtered by keywords and free text. Keywords include units, time constraints, priority, and [arbitrary journal fields](https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html). Dropdowns adjust the query string — so there's no need to remember the most common journal keywords. Also, copying and pasting this query string across machines allows administrators to have a precise filtered view of logs.
A pause button has been included next to the filters, to pause the streaming of logs. When toggled, it changes to a resume button, letting you quickly switch back to a stream of incoming journal entries.
Additionally, log excerpts in other pages, such as those in Networking and Storage, now have links to view the the full journal in the Logs page with the same filter.

### Gain or drop administrative access in a running Cockpit session
Cockpit now allows more control over your access level. You can gain and drop administrative access in a running session, and Cockpit will remember the state for the next session.
This finally allows the user to do administrative actions without a password on the login page,
such as when using smart card or Kerberos authentication, or ssh/Dashboard login with an SSH public key.
Cockpit respects the "`sudo`" configuration for your account. For example: When `NOPASSWD` is in your configuration, you don't have to provide a password in Cockpit to gain administrative access. And if "`sudo`" is configured for two factor authentication, Cockpit will ask twice.
Cockpit only supports "sudo" to elevate the access level. If your
custom Cockpit page relies on Polkit to grant access, you now need to
use the superuser option for the relevant channels. For example,
using the UDisks2 D-Bus API now has to look like this:
`conn = cockpit.dbus("org.freedesktop.UDisks2", { superuser: "try" })`
We plan to bring Polkit support back shortly.
### Try it out
Cockpit 219 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/219)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-9196806743)
* [Fedora 32](https://bodhi.fedoraproject.org/updates/FEDORA-2020-8bffc7d9dd)
================================================
FILE: _posts/2020-05-27-cockpit-220.md
================================================
---
title: Cockpit 220
author: marusak
date: 2020-05-27
tags: cockpit linux
slug: cockpit-220
category: release
summary: Cockpit with new navigation
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 220.
### New navigation with integrated switching of hosts
The navigation has been redesigned and brings four major improvements:
- **One-level navigation**: The current two-level navigation has been squashed for better use of space and better discoverability
- **Integrated hosts switching**: Switching between hosts as well as editing them can be done now directly from the navigation without using the 'Dashboard' component
- **Better discoverability of applications**: Applications are shown as the first group in the menu and are also searchable
- **Access level for all hosts**: You can change between Administrative and Limited access on every host, right from the navigation
 | 
### Logs: Inline help for filtering
The [previous release](https://cockpit-project.org/blog/cockpit-219.html) introduced new advanced search features for logs.
This release adds a help button that shows an overview of accepted options, and the `journalctl` command corresponding to the current filter.

### Storage: Improve side panel on details page
The side panel on the storage details page has been unified and uses the same layout as on the storage overview page.

### Try it out
Cockpit 220 is available now:
* [For your Linux system](https://cockpit-project.org/running.html)
* [Source Tarball](https://github.com/cockpit-project/cockpit/releases/tag/220)
* [Fedora 31](https://bodhi.fedoraproject.org/updates/FEDORA-2020-be42373991)
* [Fedora 32](https://bodhi.fedoraproject.org/updates/FEDORA-2020-c21a90d666)
================================================
FILE: _posts/2020-05-29-cockpit-common-criteria.md
================================================
---
title: Aligning Cockpit with Common Criteria
author: marusak
date: 2020-05-29
category: announcement
tags: cockpit common-criteria
slug: cockpit-common-criteria
comments: true
---
In the last few releases new features were delivered to make Cockpit meet the [Common Criteria](https://www.commoncriteriaportal.org/) and thus making it possible to undergo the certification process in the near future.
This certification is often required for large organizations, particularly in the public sector, and also gives users more confidence in using the Web Console without risking their security.
This article provides a summary of these new changes with reference to the given CC norms.
### Cockpit session tracking
There is a multitude of tools to track logins. Cockpit sessions are now correctly registered in
`utmp`, `wtmp` and `btmp`, allowing them to be displayed in tools like `who`, `w`, `last` and `lastlog`.
Cockpit also works correctly with `pam_tally2` and `pam_faillock`.
```
[root@m1 ~]# who
root pts/0 2019-12-13 08:09 (172.27.0.2)
admin web console 2019-12-13 08:09
```
Delivered in version [209](https://cockpit-project.org/blog/cockpit-209.html) and [216](https://cockpit-project.org/blog/cockpit-216.html).
[AC-9 Previous Logon (Access) Notification](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r4.pdf)
### Support for banners on the login page
Companies or agencies may need to show warning which states that use of the computer is for lawful purposes, the user is subject to surveillance, and anyone trespassing will be prosecuted.
This must be stated before login so they had fair warning.
Like SSH, Cockpit can optionally show the content of a banner file on the login screen.
This needs to be configured in [/etc/cockpit/cockpit.conf](https://cockpit-project.org/guide/latest/cockpit.conf.5.html). For example to show content of `/etc/issue.cockpit` on the login page:
```
[Session]
Banner=/etc/issue.cockpit
```

Delivered in version [209](https://cockpit-project.org/blog/cockpit-209.html).
[FTA_TAB.1 Default TOE access banners](https://www.niap-ccevs.org/MMO/PP/-442-/)
### Session timeouts
To prevent abusing forgotten Cockpit sessions, Cockpit can be set up to automatically log users out of their current session after some time of inactivity.
The timeout (in minutes) can be configured in `/etc/cockpit/cockpit.conf`. For example, to log out the user after 15 minutes of inactivity:
```
[Session]
IdleTimeout=15
```

Delivered in version [209](https://cockpit-project.org/blog/cockpit-209.html) (with default timeout
of 15 minutes, but since version [218](https://cockpit-project.org/blog/cockpit-218.html) the
default timeout is disabled).
[FMT_SMF_EXT.1.1 Enable/disable session timeout](https://www.niap-ccevs.org/MMO/PP/-442-/)
### Show "last login" information upon log in
Cockpit displays information about the last time the account was used and how many failed login attempts for this account have occurred since the last successful login.
This is an important and required security feature so that users are aware if their account has been logged into without their knowledge or if someone is trying to guess their password.

Delivered in version [216](https://cockpit-project.org/blog/cockpit-216.html).
[AU-14 Session Audit (2)](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r4.pdf)
================================================
FILE: _posts/2020-06-10-cockpit-221.md
================================================
---
title: Cockpit 221
author: mvo
date: 2020-06-10
tags: cockpit linux
slug: cockpit-221
category: release
summary: Cockpit with improved information protection and deprecated patternfly CSS API
comments: 'true'
---
Cockpit is the [modern Linux admin interface](https://cockpit-project.org/). We release regularly. Here are the release notes from version 221.
### Support for Cross-Origin-Resource-Policy
Cockpit's web server now sets the
[Cross-Origin-Resource-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy_(CORP))
header to `same-origin`. Web browsers use this header to prevent other
web sites from loading individual HTML, JavaScript, or image resources
from Cockpit via ``, `
{% endcapture %}{{ output }}
================================================
FILE: manifest.json
================================================
---
layout:
---
{
"name": {{ site.title | jsonify }},
"short_name": {{ site.title | jsonify }},
"lang": {{ site.lang | default: 'en' | jsonify }},
"start_url": ".",
"scope": {{ site.baseurl | default: '/' | jsonify }},
"background_color": "#fff",
{% if site.color %}"theme_color": {{ site.color | jsonify }},{% endif %}
"description": {{ site.description | strip | jsonify }},
{% assign _favicon_small = site.static_files | where_exp: "item", "item.path contains '/images/favicon-small.'" %}
{% assign _favicon = site.static_files | where_exp: "item", "item.path contains '/images/favicon.'" %}
{% if _favicon[0] or _favicon_small[0] %}
"icons": [
{% if _favicon_small[0] %}
{
"src": {{ _favicon_small[0].path | prepend: site.baseurl | jsonify }},
"sizes": "16x16",
"type": "image/{{ _favicon_small[0].extname | replace: '.', '' }}"
}{% if _favicon[0] %},{% endif %}
{% endif %}
{% if _favicon[0] %}
{
"src": {{ _favicon[0].path | prepend: site.baseurl | jsonify }},
"sizes": "512x512",
"type": "image/{{ _favicon[0].extname | replace: '.', '' }}"
}
{% endif %}
],{% endif %}
"display": "{{ site.display | default: 'browser' }}"
}
================================================
FILE: privacy.md
================================================
---
title: Privacy Policy
---
## Preamble: Hosting Details
The Cockpit Project website is a static site that does not track, collect, store any information, or set any cookies. There is no account on the website itself.
There are some third party places where the Cockpit Project stores data:
- [GitHub Pages](https://help.github.com/articles/what-is-github-pages/) is the website host. Please [refer to GitHub's privacy practices document for details](https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement).
- [YouTube](https://youtube.com/) videos are embedded in some pages on the website. YouTube embeds are rewritten as to not use cookies. [Refer to YouTube's privacy policy for details](https://support.google.com/youtube/answer/7671399?hl=en).
- The Cockpit Project has [a mailing list for development](https://lists.fedorahosted.org/archives/list/cockpit-devel@lists.fedorahosted.org/), and a [Matrix channel](https://matrix.to/#/#cockpit:fedoraproject.org) hosted by [the Fedora Project](https://fedoraproject.org/). [Refer to Fedora's privacy policy for more details](https://fedoraproject.org/wiki/Legal:PrivacyPolicy).
- The Cockpit software is stored in git, on [GitHub](https://github.com/). The git software does collect names and email addresses in repositories. GitHub has account information. [Refer to GitHub's privacy practices document for details](https://help.github.com/articles/global-privacy-practices/).
## Privacy Statement for the Cockpit Project
### Scope of This Notice
This Privacy Statement is intended to describe the Cockpit Project's privacy practices and provide information about the choices you have regarding the ways in which information collected by the Cockpit Project is used and disclosed.
### Our Commitment to Privacy
At the Cockpit Project, your privacy is important to us. To better protect your privacy, we have provided this Statement explaining our information practices and the choices you can make about the way your personal information is collected, used and disclosed. To make this Statement easy to find, we have made it available on our homepage and at every location where personally-identifiable information may be requested.
### The Information We Collect
This Privacy Statement applies to all information collected by or submitted to the Cockpit Project, including personal data. "Personal data" is data that can be used to identify an individual.
The Cockpit Project collects personal data when:
* you participate in surveys and evaluations;
* you participate in promotions, contests or giveaways;
* you submit questions or comments to us.
The Cockpit Project may also collect personal data from individuals (with their consent) at conventions, trade shows and expositions.
The types of personal data collected may include (but are not limited to):
* your first and last name;
* your title and your company's name;
* your home, billing, or other physical address (including street name, name of a city or town, state/province);
* your country code;
* your e-mail address;
* your Matrix identity,
* your telephone number;
* any other identifier that permits the Cockpit Project to make physical or online contact with you;
* any information that the Cockpit Project collects online from you and maintains in association with your account, such as:
* your GPG key ID,
* your SSH public key,
* your language preference,
* your timezone,
* your geographic coordinates (longitude/latitude),
* your affiliation(s).
### Using (Processing) Your Personal Data
The Cockpit Project uses the personal data you provide to:
* attribute data and content you produce directly and indirectly in our public-facing services;
* answer your questions;
* send you information;
* for research activities, including the production of statistical reports (such aggregated information is not used to contact the subjects of the report);
* send you surveys.
### Sharing Your Personal Data
Unless you consent, the Cockpit Project will never process or share the personal data you provide to us except as described below.
The Cockpit Project may disclose your personal data to third parties under any of the following circumstances:
* As required to provide service, and for e-mail housing (as a consequence of uses already described in this Privacy Statement). It is in the Cockpit Project’s legitimate interest to provide all users an accurate record of data and content provided by The Cockpit Project’s services, and to maintain the integrity of that data and content for historical, scientific, and research purposes. This data and content may include but is not limited to email, code changes, comments, and artifacts.
* As required by law (such as responding to a valid subpoena, warrant, audit, or agency action, or to prevent fraud).
* For research activities, including the production of statistical reports (such aggregated information is used to describe our services and is not used to contact the subjects of the report).
### Receiving E-Mail
The Cockpit Project may send you e-mail to inform you of important upcoming events or to respond to your questions. For your protection, The Cockpit Project may contact you in the event that we find an issue that requires your immediate attention. The Cockpit Project processes your personal data in these cases to fulfill and comply with its contractual obligations to you, to provide the services you have requested, and to ensure the security of your account.
### Our Commitment to Data Security
Our website uses Secure Socket Layer (SSL) technology, which encrypts data to and from our website.
### Public Forums Reminder
The Cockpit Project often makes chat rooms, mailing lists, and discussions on GitHub available to its users. Please remember that any information that is disclosed in these areas becomes public information. Exercise caution when deciding to disclose your personal data. Although we value individual ideas and encourage free expression, the Cockpit Project reserves the right to take necessary action to preserve the integrity of these areas, such as removing any posting that is vulgar or inappropriate. It is in The Cockpit Project’s legitimate interests to provide all users an accurate record of data and content provided in the public forums it maintains and uses; to maintain the integrity of that data and content for historical, scientific, and research purposes; and to provide an environment for the free exchange of ideas relevant and constructive to the development and propagation of open source software.
### Our Commitment to Children's Online Privacy
Out of special concern for children's privacy, the Cockpit Project does not knowingly accept online personal information from children under the age of 13. The Cockpit Project does not knowingly allow children under the age of 13 to become registered members of our sites. The Cockpit Project does not knowingly collect or solicit personal information about children under 13.
In the event that the Cockpit Project ever decides to expand its intended site audience to include children under the age of 13, those specific web pages will, in accordance with the requirements of the Children's Online Privacy Protection Act (COPPA), be clearly identified and provide an explicit privacy notice addressed to children under 13. In addition, The Cockpit Project will provide an appropriate mechanism to obtain parental approval, allow parents to subsequently make changes to or request removal of their children's personal information, and provide access to any other information as required by law.
### About Links to Other Sites
This site contains links to other sites. The Cockpit Project does not control the information collection of sites that can be reached through links from [cockpit-project.org](/). If you have questions about the data collection procedures of linked sites, please contact these sites directly.
### Your Rights and Choices in the EEA
Where the EU General Data Protection Regulation 2016/679 (“GDPR”) applies to the processing of your personal data, especially when you access the website from a country in the European Economic Area (“EEA”), you have the following rights, subject to some limitations, against the Cockpit Project:
* The right to access your personal data;
* The right to rectify the personal data we hold about you;
* The right to erase your personal data;
* The right to restrict our use of your personal data;
* The right to object to our use of your personal data;
* The right to receive your personal data in a usable electronic format and transmit it to a third party (also known as the right of data portability); and
* The right to lodge a complaint with your local data protection authority.
If you would like to exercise any of these rights, you may do so by [contacting the Cockpit Project on Matrix](https://matrix.to/#/#cockpit:fedoraproject.org). Please understand, however, the rights enumerated above are not absolute in all cases.
Where the GDPR applies, you also have the right to withdraw any consent you have given to uses of your personal data. If you wish to withdraw consent that you have previously provided to the Cockpit Project, [please contact us via Matrix](https://matrix.to/#/#cockpit:fedoraproject.org) (`#cockpit:fedoraproject.org`). However, the withdrawal of consent will not affect the lawfulness of processing based on consent before its withdrawal.
### How to Access, Modify or Update Your Information
If you wish to remove your personal data from the Cockpit Project website, you may contact us on Matrix and request that we remove this information from the Cockpit Project website. Other locations where you may have used your personal data as an identifier (e.g. GitHub comments, list postings in the archives, git history, chat rooms, and changelogs) will not be altered.
### How to Contact Us
If you have any questions about any of these practices or the Cockpit Project's use of your personal information, please feel free to [contact us on Matrix](https://matrix.to/#/#cockpit:fedoraproject.org) (`#cockpit:fedoraproject.org`).
The Cockpit Project will work with you to resolve any concerns you may have about this Statement.
### Changes to this Privacy Statement
The Cockpit Project reserves the right to change this Privacy Statement from time to time. If we do make changes, the revised Privacy Statement will be posted on the main project’s website.
This Privacy Statement was last amended on May 24, 2018.
================================================
FILE: running/safari.md
================================================
---
title: Use Cockpit with Safari on an iPhone or iPad
---
Safari's default WebSocket framework on [iOS, iPadOS,](#ios-and-ipados) and [ARM-based Macs](#macos-on-arm-m1) does not support the WebSocket Secure sessions which Cockpit needs to function when using a self-signed or otherwise invalid certificate, even when they are manually marked as trusted. [Installing a valid certificate]({{ site.baseurl }}/guide/latest/https.html) should resolve this issue.
As an alternative workaround, you can enable Apple's future/experimental WebSocket framework which does work as expected.
## iOS and iPadOS
1. Open the Settings app

2. Scroll down and tap on "**Safari**"


3. Scroll down to the bottom and tap on "**Advanced**"


4. Tap on "**Experimental Features**" at the bottom

5. Scroll down until you see "**NSURLSession WebSocket**"


6. Enable "**NSURLSession WebSocket**"


7. You're done! Navigate to Cockpit with Safari and sign in normally.
{:.safari-icon}
## macOS on ARM (M1)
1. Open Safari's settings, select "**Advanced**", and enable "**Show Develop menu in menu bar**"
{:.full-width}
2. Go to Safari's "**Develop**" menu, select "**Experimental Features**", and enable "**NSURLSession WebSocket**"
{:.full-width}
3. You're done! Navigate to Cockpit with Safari and sign in normally.
{:.safari-icon}
================================================
FILE: running.md
================================================
---
title: Running Cockpit
class: running-cockpit body-cockpit
---
{% capture newline %}
{% endcapture %}
If you already have Cockpit on your server, point your web browser to:
**https://**_ip-address-of-machine_**:9090**
Use your system user account and password to log in. See [the guide](guide/latest/guide.html) for more info.
After installing Cockpit itself, consider [installing additional applications in Cockpit](applications.html).
## Recommended client browsers
{% capture icon %}{:.browser-0}{% endcapture %}
{% capture label %}0{% endcapture %}
Cockpit is developed with and has automated tests for:
{:.browser-support}
- {{icon | replace: "0", "firefox"}}{{label | replace: "0", "Mozilla Firefox"}}
- {{icon | replace: "0", "chrome"}}{{label | replace: "0", "Google Chrome"}}
Cockpit is also periodically checked with:
{:.browser-support}
- {{icon | replace: "0", "edge"}}{{label | replace: "0", "Microsoft Edge"}}
- {{icon | replace: "0", "safari"}}{{label | replace: "0", "Apple Safari"}}
_[iPhones, iPads, and macOS on ARM/M1 may require a workaround]({{ site.baseurl }}/running/safari.html)_{:.note-safari}
- {{icon | replace: "0", "epiphany"}}{{label | replace: "0", "GNOME Web (Epiphany)"}}
Your current browser should work with Cockpit.
Sorry! Your current browser appears to lack necessary features.
### Minimum client browser versions
The following browsers (and up) _may_ also work with Cockpit:
{% comment %}
## Data for the browser table comes from `_data/browsers.yml`
## Browser versions come from `_data/browser_support.yml` (generated)
## Browser features are defined in `_scripts/update-browser-data.rb`
{% endcomment %}
{:.browser-support}
{% for browser in site.data.browsers %}{%
assign slug = browser.name | downcase
%}
- {{
browser.vendor
}} {{
browser.name
}} {%
assign ver_caniuse = site.data.browser_support["browsers"][slug] | plus: 0
%}{%
assign ver_caniuse_float = ver_caniuse | plus: 0
%}{%
if browser.version > ver_caniuse_float
%}{{
browser.version
}}{% else %}{{
ver_caniuse
}}{%
endif
%}{% endfor %}
However, we __strongly__ encourage you to use the latest version of your browser for security reasons.
## Installation & Setup
{% comment %}
## Data for the distros table comes from `_data/distros.yml` ##
{% endcomment %}
{% assign check = '✓' %}
| |Tested|Available||
|-|-|-|-|-|-|{%
for distro in site.data.distros
%}
|[](#{{ distro.first }})|{%
if distro.tested %}{{ check | replace: "#", "tested" }}{% endif
%}|{%
if distro.included %}{{ check | replace: "#", "included" }}{% endif
%}|[View instructions](#{{ distro.first }})|{% endfor %}
{:.support-table}
{:.note}
"Tested" in this table means actively tested by the Cockpit team using automated integration testing with a specific virtual machine image. Distributions listed on this page likely do their own downstream testing in addition.
### Fedora
Cockpit comes **installed by default in Fedora Server**.
To install Cockpit on other variants of Fedora use the following commands. For the latest versions [use COPR](https://copr.fedoraproject.org/coprs/g/cockpit/cockpit-preview/).
1. Install cockpit:
```
sudo dnf install cockpit
```
2. Enable cockpit:
```
sudo systemctl enable --now cockpit.socket
```
3. Open the firewall if necessary:
```
sudo firewall-cmd --add-service=cockpit
sudo firewall-cmd --add-service=cockpit --permanent
```
### Red Hat Enterprise Linux
{:#rhel}
Cockpit is available in Red Hat Enterprise Linux 7 and later.
1. On RHEL 7, enable the _Extras_ repository.
```
sudo subscription-manager repos --enable rhel-7-server-extras-rpms
```
RHEL 8 does not need any non-default repositories.
2. Install cockpit:
```
sudo yum install cockpit
```
3. Enable cockpit:
```
sudo systemctl enable --now cockpit.socket
```
4. On RHEL 7, or if you use non-default zones on RHEL 8, open the firewall:
```
sudo firewall-cmd --add-service=cockpit
sudo firewall-cmd --add-service=cockpit --permanent
```
### Fedora CoreOS
{:#coreos}
The standard Fedora CoreOS image does not contain Cockpit packages.
1. Install Cockpit packages as overlay RPMs:
```
rpm-ostree install cockpit-system cockpit-ostree cockpit-podman
```
Depending on your configuration, you may want to use other [`cockpit-*` extensions](https://cockpit-project.org/applications.html) as well, such as `cockpit-kdump` or `cockpit-networkmanager`.
If you have a custom-built OSTree, simply include the same packages in your build.
2. Reboot
Steps 1 and 2 are enough when the CoreOS machine is only connected to through another host running Cockpit.
If you want to also run a web server to log in directly on the CoreOS host:
3. Enable password based SSH logins, unless you only use [SSO logins](https://cockpit-project.org/guide/latest/sso.html):
```
echo 'PasswordAuthentication yes' | sudo tee /etc/ssh/sshd_config.d/02-enable-passwords.conf
sudo systemctl try-restart sshd
```
4. Run the Cockpit web service with a privileged container (as root):
```
podman container runlabel --name cockpit-ws RUN quay.io/cockpit/ws
```
5. Make Cockpit start on boot:
```
podman container runlabel INSTALL quay.io/cockpit/ws
systemctl enable cockpit.service
```
Afterward, use a web browser to log into port `9090` on your host IP address as usual.
### CentOS
Cockpit is available in CentOS 7 and later:
1. Install cockpit:
```
sudo yum install cockpit
```
2. Enable cockpit:
```
sudo systemctl enable --now cockpit.socket
```
3. Open the firewall if necessary:
```
sudo firewall-cmd --permanent --zone=public --add-service=cockpit
sudo firewall-cmd --reload
```
### Debian
{:.note}
These commands require a POSIX compatible shell like `bash`. For other shells like `fish`, temporarily run `bash -i`.
Cockpit is available in Debian since version 10 (Buster).
1. To get the latest version, we recommend to enable the [backports repository](https://backports.debian.org):
```
. /etc/os-release
echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" | \
sudo tee /etc/apt/sources.list.d/backports.list
sudo apt update
```
2. Install or update the package:
```
sudo apt install -t ${VERSION_CODENAME}-backports cockpit
```
{:.note}
When updating Cockpit-related packages and any dependencies, make sure to use `-t ...-backports` as above, so backports are included.
### Ubuntu
{:.note}
These commands require a POSIX compatible shell like `bash`. For other shells like `fish`, temporarily run `bash -i`.
Cockpit is available in Ubuntu, with [updated versions in official backports for LTS releases](https://help.ubuntu.com/community/UbuntuBackports).
We recommend installing or updating the latest version from backports. This repository is enabled by default, but if you customized apt sources you might need to [enable them manually](https://help.ubuntu.com/community/UbuntuBackports#Enabling_Backports).
```
. /etc/os-release
sudo apt install -t ${VERSION_CODENAME}-backports cockpit
```
{:.note}
When updating Cockpit-related packages and any dependencies, make sure to use `-t ...-backports` as above, so backports are included.
### Arch Linux
{:#archlinux}
[Cockpit](https://archlinux.org/packages/extra/x86_64/cockpit/) is available in [Arch Linux](https://www.archlinux.org/packages/):
```
sudo pacman -S cockpit
sudo systemctl enable --now cockpit.socket
```
If the first command fails with "database file for ... does not exist", refresh/update your system with `sudo pacman -Syu` first.
### openSUSE Tumbleweed and Leap
{:#tumbleweed}
[Cockpit](https://software.opensuse.org/package/cockpit) is available in both [openSUSE Tumbleweed](https://get.opensuse.org/tumbleweed) and [openSUSE Leap](https://get.opensuse.org/leap) starting by 15.6:
1. Install cockpit:
```
zypper in cockpit
```
2. Enable cockpit:
```
systemctl enable --now cockpit.socket
```
3. Open the firewall if necessary:
```
firewall-cmd --permanent --zone=public --add-service=cockpit
firewall-cmd --reload
```
4. Optionally allow root access (disabled by default)
```
$EDITOR /etc/cockpit/disallowed-users
```
### SUSE Linux Enterprise Micro
{:#slemicro}
Cockpit is included in SUSE Linux Enterprise (SLE) Micro 5.x.
1. Install cockpit (already present in the pre-built images):
```
transactional-update pkg install -t pattern microos_cockpit
```
2. Enable the socket:
```
systemctl enable --now cockpit.socket
```
3. In case you have enabled the firewall, you also must open the port:
```
firewall-cmd --permanent --zone=public --add-service=cockpit
firewall-cmd --reload
```
4. Access through the web interface:
```
https://IP_ADDRESS_OF_MACHINE:9090
```
================================================
FILE: search.json
================================================
---
layout:
---
{% include search_json.html %}
================================================
FILE: search.md
================================================
---
index: false
layout: default
---
## Search
{% include search.html %}