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 }}
{% if app.package %}
Package
{{ app.package }}
{% endif %} {% if app.homepage %}
Homepage
{% assign link_html = href | replace: '#', app.homepage | replace: https, gt %}
{{ link_html }}
{% endif %} {% if app.source %}
Source
{% assign source = href | replace: '#', app_source | replace: https, gt %}
{{ source }}
{% endif %} {% if app.issues %}
Issue tracker
{% assign issues = href | replace: '#', app.issues | replace: https, gt %}
{{ issues }}
{% endif %}
{% endfor %} {% endcapture %}
{{ apps_html }}
================================================ FILE: _includes/email.html ================================================ {% capture output %} {% assign email = include.username | append: " AT " | append: include.domain | replace: ".", " DOT " | prepend: " RemoveThisText " | append: " RemoveThisText " %} {% if include.script != true %} {{ include.name }} {% else %} {% endif %} {% endcapture %}{{ output | strip_newlines | strip }}{{ include.after }} ================================================ FILE: _includes/feed.html ================================================ {% assign posts = include.posts | default: site.posts %}{% assign limit = include.limit | default: site.paginate | default: 10 %}{% assign title = include.title | default: site.title %}{% assign url_prefix = site.url | append: site.baseurl | append: '/' %} {{ title | xml_escape }} {{ site.description | xml_escape }} {{ url_prefix }} {{ site.time | date_to_rfc822 }} {{ site.time | date_to_rfc822 }} Jekyll v{{ jekyll.version }} {% for post in posts limit: limit %} {{ post.title | xml_escape }} {{ post.content | markdownify | replace: 'img src="/', 'img src="$SITE_GOES_HERE' | replace: 'a href="/', 'a href="$SITE_GOES_HERE' | replace: '$SITE_GOES_HERE', url_prefix | xml_escape }} {{ post.date | date_to_rfc822 }} {{ post.url | prepend: url_prefix }} {{ post.url | prepend: url_prefix }} {% for tag in post.tags %} {{ tag | xml_escape }} {% endfor %} {% for cat in post.categories %} {{ cat | xml_escape }} {% endfor %} {% endfor %} ================================================ FILE: _includes/feed_category.html ================================================ {% assign cat_default = page.url | split: '/' | last | split: '.' | first %}{% assign category = include.category | default: cat_default %}{% assign category_posts = site.posts | where: 'category', category %}{% assign title = category | capitalize | prepend: " - " | prepend: site.title %}{% include feed.html posts=category_posts title=title %} ================================================ FILE: _includes/github.html ================================================ {% if site.github %}{% capture github_link %} {% assign github_edit_text = site.github_edit_text | default: "Edit page on GitHub" %} {% if page.source %} {% if page.source contains '/wiki/' %} {% assign wiki = '/_edit'%} {% endif %} {{ github_edit_text }} {% else %} {{ github_edit_text }} {% endif %} {% endcapture %}{{ github_link | strip_new_lines | lstrip | rstrip }}{% endif %} ================================================ FILE: _includes/nav.html ================================================ {% assign navs = include.nav | default: site.data.navigation %} {% unless include.wrap == false %} {% endunless %} ================================================ FILE: _includes/nav_dir.html ================================================ {% comment %} This builds upon nav.html, but feeds it the current directory as the navigation source. It's intended for use in special layouts that are assigned by directories, but also can be used in individual files. TODO: Add filtering and weighted sorting. {% endcomment %} {% assign current_dir = site.html_pages | where: "dir", page.dir %} {% include nav.html nav=current_dir %} ================================================ FILE: _includes/page_footer.html ================================================

Privacy Policy Code of Conduct

{% include github.html %}

================================================ FILE: _includes/page_header.html ================================================ ================================================ FILE: _includes/pagination.html ================================================ {% if paginator.total_pages > 1 %} {% assign display_before = paginator.page | minus: 5 %} {% assign display_after = paginator.page | plus: 5 %} {% comment %} Balance after pages based on lack of previous pages {% endcomment %} {% if display_before < 0 %} {% assign display_after = display_after | minus: display_before %} {% endif %} {% endif %} ================================================ FILE: _includes/post.html ================================================ {% assign post = include.post | default: page %} {% assign excerpt = include.excerpt | default: false %} {% assign link_title = include.link | default: false %} {% assign author_card = include.author_card | default: false %} {% assign author = site.data.authors[post.author] %} {% assign separator = site.excerpt_separator | prepend: "

" | append: "

" %} {% assign summary_length = site.blog_summary_length | default: 50 %} {% assign ignore = include.ignore | default: site.blog_ignore | split: ',' %} {% assign summary_headings = site.blog_summary_headings %} {% assign heading_summary = include.heading_summary %} {% assign newline = ' ' %}

{% if link_title %} {{ post.title | escape }} {% else %} {{ post.title | escape }} {% endif %}

{% assign content_stripped = '' %} {% assign content_headings = '' %} {% assign content_lines = post.excerpt | split: newline %} {% for line in content_lines %} {% assign skip = ignore | where_exp: "item", "line contains item" | join: '' | strip %} {% if skip == '' %} {% assign line_stripped = line | strip_html %} {% if line contains '' | append: line_stripped | append: ' ' | append: newline %} {% else %} {% assign content_stripped = line_stripped | prepend: content_stripped %} {% endif %} {% endif %} {% endfor %}
{% if excerpt %} {% if summary_headings and content_headings != '' and heading_summary %} {{ content_headings | markdownify }} {% else %} {{ content_stripped | truncatewords: summary_length }} {% endif %} {% else %} {{ post.content | remove_first: separator }} {% endif %}
{% if excerpt %} {% endif %}
{% if author_card %} {% if author.name %} {% assign author_title = "About " | append: author.name %} {% assign author_blurb = "View all posts by " | append: author.name | append: " »" %} {% else %} {% assign author_title = "Other posts" %} {% assign author_blurb = "View all posts »" %} {% endif %}

{{ author_title }}

{{ author.description | markdownify }} {% if author.twitter or author.facebook %} {% endif %}
{% endif %} ================================================ FILE: _includes/posts.html ================================================ {% assign post_set = include.posts | default: site.posts %} {% assign limiter = include.limit | default: site.paginate %}
{% for post in post_set limit: limiter %} {% if post.category == "release" %} {% assign heading_summary = true %} {% else %} {% assign heading_summary = false %} {% endif %} {% include post.html post=post excerpt=true link=true heading_summary=heading_summary %} {% endfor %}
================================================ FILE: _includes/posts_category.html ================================================ {% assign cat_default = page.url | split: '/' | last %} {% assign category = include.category | default: cat_default %}

Category: {{ category | capitalize }}

{% assign category_posts = site.posts | where: 'category', category %} {% include posts.html posts=category_posts %} ================================================ FILE: _includes/rss.html ================================================

subscribe via RSS

================================================ FILE: _includes/search.html ================================================ {% unless include.js == false %} {% endunless %} {% unless include.template == false %}
{% endunless %} ================================================ FILE: _includes/search_json.html ================================================ {% assign _words = "" %}{% assign _wordlists = "" | split: "," %}{"pages": [ {% capture _docs %}{% include search_json_items.html type="doc" %}{% endcapture %}{% assign _docs = _docs | strip %}{% capture _pages %}{% include search_json_items.html pages=site.html_pages type="page" %}{% endcapture %}{% assign _pages = _pages | strip %} {{ _docs }}{% if _docs != "" and _pages != "" %},{% endif %}{{ _pages }} ]} ================================================ FILE: _includes/search_json_items.html ================================================ {% capture codeblock %} {% assign docs = include.pages | default: site.documents %} {% assign _type = include.type | default: 'doc' %} {% assign _first = true %} {% endcapture %} {% for _page in docs %}{% capture codeblock %} {% assign _content = _page.content | strip_html | markdownify | strip_html | remove: site.excerpt_separator | strip %} {% if _page.summary %} {% assign _blurb = _page.summary %} {% else %} {% if _content contains site.excerpt_separator %} {% assign _blurb = _content | split: site.excerpt_separator | first %} {% else %} {% assign _blurb = _content %} {% endif %} {% endif %} {% if _type == 'page' %} {% assign fallback_title = _page.content | split: "" | first | strip_html | truncatewords: 10 | strip %} {% assign _blurb = _blurb | replace_first: fallback_title, '' %} {% endif %} {% if _page.date %} {% assign _date_parts = _page.date | date: '%Y %B %-d' %} {% endif %} {% assign _wordlist = _content | append: " " | append: _page.title | append: " " | append: _page.tags | append: " " | append: _page.category | append: " " | append: _page.url | append: " " | append: _page.author | append: " " | append: _page.summary | append: " " | append: _date_parts | downcase | remove: '!' | remove: '"' | remove: '#' | remove: '$' | remove: '%' | remove: '&' | remove: '(' | remove: ')' | remove: '[' | remove: ']' | remove: '*' | remove: '+' | remove: ',' | remove: ';' | remove: '=' | remove: '?' | remove: '“' | remove: '”' | replace: "‘", "'" | replace: "’", "'" | replace: "'s ", " " | replace: " '", " " | replace: "' ", " " | replace: '-', ' ' | replace: '–', ' ' | replace: '—', ' ' | replace: '@', ' ' | replace: '...', ' ' | replace: '…', ' ' | replace: '.', ' ' | replace: '/', ' ' | replace: ':', ' ' | replace: ',', ' ' | split: ' ' | sort | uniq | where_exp: "item", "item.size > 2" | where_exp: "item", "item.size < 21" %} {% assign _wordlist_string = _wordlist | join: ',' %} {% assign _words = _words | append: "," | append: _wordlist_string %} {% assign _wordlists = _wordlists | push: _wordlist %} {% assign _id = forloop.index | minus: 1 %} {% endcapture %}{% assign codeblock = nil %}{% unless _page.index == false %}{% if _first == false %},{% endif %}{ "id": {{ _id }}, "title": {{ _page.title | strip | default: fallback_title | jsonify }}, "slug": {{ _page.slug | strip | jsonify }}, "url": "{{ site.baseurl }}{{ _page.url }}", "type": {{ _type | jsonify }}, "category": {{ _page.category | join: "," | strip | jsonify }}, "tags": {{ _page.tags | join: "," | strip | replace: ", ", "," | replace: ",,", "," | downcase | split: "," | sort | uniq | jsonify }}, {% if _page.date %} "date" : "{{ _page.date | date_to_xmlschema }}", "datestring" : "{{ _page.date | date: '%A %-d %B %Y' }}", {% endif %} "wordcount": {{ _content | remove: site.excerpt_separator | number_of_words }}, "wordlist": {{ _wordlist | join: " " | jsonify }}, "summary": {{ _blurb | replace: "\n", " " | strip | truncatewords: 50 | jsonify }} }{% assign _first = false %}{% endunless %}{% endfor %} ================================================ FILE: _includes/twitter.html ================================================ {% assign id = include.id | default: config.twitter_id %} {% assign _account = include.account | default: config.twitter_username %} {% assign limit = include.limit | default: 3 %} {% if include.id %} {% else %} ERROR: You must include a Twitter ID. {% endif %} ================================================ FILE: _layouts/default.html ================================================ --- layout: essential --- {% include page_header.html %}
{{ content }}
{% include page_footer.html %} ================================================ FILE: _layouts/essential.html ================================================ {% if page.title %}{{ page.title | strip_html }} — {% endif %}{{ site.title | strip_html }} {% if site.color %}{% endif %} {% assign _favicon = site.static_files | where_exp: "item", "item.path contains '/images/favicon.'" %} {% if _favicon[0] %} {% endif %} {% assign content_fixedyt = content | replace: 'youtube.com/embed', 'www.youtube-nocookie.com/embed' | replace: 'www.www.youtube', 'www.youtube' %} {% if site.rewrite_images == false %} {{ content_fixedyt }} {% else %} {% assign img_untreated = 'img src="/' %} {% assign baseurlslash = site.baseurl | append: "/" %} {% assign img_baseurl = img_untreated | replace: "/", baseurlslash | replace: 'img', 'img loading="lazy"' %} {% assign rewritten = content_fixedyt | replace: img_untreated, img_baseurl %} {% if site.baseurl != "" %} {% assign doublebase = site.baseurl | append: site.baseurl %} {{ rewritten | replace: doublebase, site.baseurl }} {% else %} {{ rewritten }} {% endif %} {% endif %} ================================================ FILE: _layouts/guide.html ================================================ --- layout: --- {% capture empty %} {% comment %} Cockpit-specific guide template {% endcomment %} {% assign html_tag = ' {% assign _favicon = site.static_files | where_exp: "item", "item.path contains '/images/favicon.'" %} {% if _favicon[0] %} {% endif %} {{ head_tag }} {% endcapture %} {% capture header_html %}{% include page_header.html %}{% endcapture %} {% if content contains book_tag %} {% assign header_orig = book_tag %} {% assign header_mod = book_tag | prepend: header_html %} {% assign toc_mod = toc_tag | append: role_main %} {% else %} {% assign header_orig = nav_tag %} {% assign header_mod = nav_tag | prepend: header_html | append: role_nav %} {% assign ref_mod = ref_tag | append: role_main %} {% assign chap_mod = chap_tag | append: role_main %} {% assign part_mod = part_tag | append: role_main %} {% assign toc_mod = toc_tag %} {% endif %} {% endcapture %}{{ content | replace_first: html_tag, html_mod | replace_first: head_tag, head_mod | replace_first: ref_tag, ref_mod | replace_first: chap_tag, chap_mod | replace_first: part_tag, part_mod | replace_first: toc_tag, toc_mod | replace_first: header_orig, header_mod }} ================================================ FILE: _layouts/markdown.html ================================================ --- layout: default ---

{{ page.title }}

THIS IS MARKDOWN

{{ content }}
================================================ FILE: _layouts/page.html ================================================ --- layout: default ---

{{ page.title }}

{{ 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... ![Cockpit login](/images/cockpit1.png) 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 terminal](/images/cockpit-terminal.png) [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: ![Cockpit simple networking configuration](/images/cockpit-simple-network.png) ================================================ 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/). ![Docker pull support](/images/cockpit-docker-pull.png) 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: ![Multi server dashboard wireframes](/images/navigation-horizontal-2.png) [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. ![Navigation menu](/images/pages-menu-top.png) 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: ![Tools menu with pinger](/images/cockpit-tools-pinger.png) The pinger tool itself looks like this: ![Pinger tool](/images/cockpit-pinger-tool.png) 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*: ![Pinger tool](/images/cockpit-zoner-tool.png) 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:

{
  "command": "open",
  "channel": "mychannel",
  "payload": "echo"
}
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:

{
  "command": "open",
  "channel": "mydbus",
  "payload": "dbus-json3",
  "name": "org.freedesktop.hostname1"
}
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.
mydbus
{
  "call": [ "/org/freedesktop/hostname1", "org.freedesktop.hostname1",
```unknown
        "SetStaticHostname", [ "mypinkpony.local", true ] ],
  "id": "cookie"
}
``` 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:
mydbus
{
  "error": [
```unknown
"org.freedesktop.DBus.Error.UnknownMethod",
[ "MyMethodName not available"]
  ],
  "id":"cookie"
}
``` 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:

{
  "command": "open",
  "channel": "myproc",
  "payload": "stream",
  "spawn": [ "ip", "addr", "show" ]
}
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:

{
  "command": "close",
  "channel": "myproc",
  "exit-status": 0
}
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*: ![Docker Info tool](/images/cockpit-docker-info.png) 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. ![Screenshot](https://trello-attachments.s3.amazonaws.com/55d623eddcb5795e8b5cff13/968x790/0e77b8ce653b79d29a2cc9de75b86b03/dc0c74d8-5e2f-11e5-91fc-901b633a059d.png) ### From the Future Andreas did designs for managing the SSH keys loaded for use when connecting to machines: ![Wireframes](https://trello-attachments.s3.amazonaws.com/55f14b769262e42e89775936/3555x3301/0c0166255eaf092025c8a5c95f84f15f/ssh-keys-v2.png) ### 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 ``` And after refreshing Cockpit, I can see that change: ![Showing the change made](/images/vagrant-change.png) 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. ![Cockpit is incompatible with sources](/images/cockpit-incompatible-sources.png) 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: [![OSTree Design Work](/images/cockpit-ostree-design.png)](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. [![Machine Dialogs Wireframes](/images/machine-dialogs.png)](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. [![Machine Dialogs Wireframes](/images/machine-dialogs.png)](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:
deb-src https://fedorapeople.org/groups/cockpit/debian-unstable ./
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: ![Container Storage Designs](https://raw.githubusercontent.com/cockpit-project/cockpit-design/9bd7086a4a8492b72269c58272d063b3372116c3/containers/container-storage.png) ### 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: ![Storage number slider](/images/cockpit-storage-slider.png) 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: ![Kubernetes persistent volume](/images/cockpit-kubernetes-storage.png) ### 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. ![Single dialog for logical volumes](/images/cockpit-logical-volume-one-dialog.png) ### 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. ![Insecure Registry option](/images/cockpit-insecure-registry.png) ### 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. ![Deleting Nodes](/images/cockpit-delete-nodes.png) ### 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: ![Image Layers](/images/cockpit-image-layers.png) ### 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. ![SELinux Enforcing](/images/cockpit-selinux-enforcing.png) ### 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. ![GlusterFS Persistent Volumes](/images/cockpit-glusterfs-volume.png) ### 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. ![Persistent Volume Claims](/images/cockpit-dashboard-claim.png) ![Persistent Volume Claims](/images/cockpit-volume-claims.png) ### 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. ![Bond Active/Backup](/images/cockpit-active-backup.png) ### 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. ![Resource Slider Text](/images/cockpit-resource-sliders-text.png) ### 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. ![SSH host keys](/images/cockpit-ssh-host-keys.png) ### 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: ![pwscore message](/images/cockpit-pwscore-message.png) ### 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: ![pwscore message](/images/cockpit-libvirt-message.png) ### 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). ![Timers](/images/cockpit-timers.png) ### 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). ![Incompatible Cockpit](/images/cockpit-incompatible.png) ### 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: ![Virtual Machines](/images/vms.png) ### 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 subprocesses](/images/cockpit-pv-sidebar.png) ### 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. ![SSH subprocesses](/images/cockpit-ssh.png) ### 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. ![User Unix Group](/images/cockpit-unix-group.png) ### 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. ![Virtual Machines](/images/debian-branding.png) ### 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. ![Virtual Machines](/images/image-scanning.png) ### 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 Language Dialog](/images/translatable.png) ### 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. ![Display Language Dialog](/images/ostree-signatures.png) ### 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. ![Expandable Logical Volumes](/images/storage-listing.png) ### 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. ![Expandable Logical Volumes](/images/shutdown-date.png) ### 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. ![Session virtual machines](/images/cockpit-machines-session.png) ### 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. ![SELinux without troubleshooting](/images/cockpit-selinux-disabled.png) ### 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. ![Message of the day](/images/cockpit-motd.png) ### 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```. ![Service actions](/images/cockpit-service-actions.png) ### 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. ![Sidebar navigation](/images/cockpit-page-menu.png) ### 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. ![Virtual machine disks](/images/cockpit-vm-disks.png) ### 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. ![Active Pages](/images/cockpit-active-pages.png) ### 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. ![Sidebar order](/images/cockpit-menu-order.png) ### 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. ![Remove RAID disk](/images/cockpit-remove-raid-disk.png) ![Add unpartitioned disk](/images/cockpit-storage-add-unpartitioned.png) ### 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: ![Machines inline console](/images/machines-inline-console.png) 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: ![Machines external console](/images/machines-external-console.png) 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: ![Automatic device teardown](/images/cockpit-storage-teardown-device.png) ### 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. ![Hackfest](/images/hackfest-1.jpg) 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). ![Hackfest](/images/hackfest-2.jpg) 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). ![Create dialog](https://raw.githubusercontent.com/cockpit-project/cockpit-design/master/virtual-machines/create-new-vm.png) ![Create dialog details](https://raw.githubusercontent.com/cockpit-project/cockpit-design/master/virtual-machines/create-vm-dialog.png) 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. ![Full-window terminal](/images/terminal-full-window.png) ### 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. ![Delete VM](/images/machines-delete.png) ### 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: ![ABRT list view](/images/logs-abrt-list.png) ![ABRT detail view](/images/logs-abrt-details.png) 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: ![Restart after Updates](/images/updates-restart.png) ### 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: ![Update History](/images/updates-history.png) The new Update Log expander shows the previous steps of the running update: ![Update Log](/images/updates-live-log.png) ### 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: ![Narrow Updates Page](/images/updates-narrow.png) 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. ![Image Stream Tag Design](/images/registry-imagestreams-design.png) ### 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: ![Software Updates on unregistered RHEL system](/images/updates-unregistered.png) ### 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. ![Unmet systemd service conditions](/images/services-conditions.png) ### 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. ![Machines NMI](/images/machines-nmi.png) ### 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. ![Automatic Updates](/images/updates-auto-day.png) ### 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. ![oVirt overview](/images/ovirt-overview.png) ### 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. ![oVirt Maintenance mode](/images/ovirt-maintenance.png) ### 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: ![desktop mode](/images/mobilenav-desktop.png) 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: | ![mobile mode with menu](/images/mobilenav-mobile-menu.png) |   | ![mobile login page](/images/mobilenav-login.png) | ### 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: ![apps homepage link](/images/apps-homepage-link.png) 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! ![virtual machine networks](/images/machines-networks.png) ### 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. ![NFS option checkboxes](/images/storage-nfs-option-checkboxes.png) ### 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: ![VM error expander](/images/machines-error-expander.png) 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: ![Cluster kubevirt list](/images/kubernetes-kubevirt-list.png) 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. ![Software Updates redesign and Errata](/images/packagekit-errata.png) * [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. ![Software Updates markdown](/images/packagekit-markdown.png) ### 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. ![Machines Create new VM](/images/machines-create-iso.png) 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. ![kubevirt Delete](/images/kubernetes-kubevirt-delete.png) 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. ![System Hardware Info](/images/system-hwinfo.png) ### 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. ![KubeVirt pod name](/images/kubernetes-kubevirt-podname.png) ![KubeVirt Disks](/images/kubernetes-kubevirt-disks.png) 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: ![starter kit](/images/starter-kit.png) 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: ![Storage RAID action buttons](/images/storage-raid-action-buttons.png) NFS mounts are now clickable: ![Storage NFS list](/images/storage-nfs-list.png) Clicking an NFS mount now shows a new details page with directly available actions: ![Storage NFS list](/images/storage-nfs-details.png) ### 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: ![System available security updates](/images/system-security-updates.png) As unregistered RHEL systems cannot receive updates they now display a warning: ![System unregistered](/images/system-unregistered.png) ### 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. ![System tuned profile](/images/system-tuned-profile.png) 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: ![Log severity levels](/images/logs-syslog-severity-levels.png) _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: ![Machines error notifications](/images/machines-error-notifications.png) _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. ![Storage NFS busy details](/images/storage-nfs-busy-details.png) ### 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: ![Machines libvirt not running](/images/machines-libvirt-not-running.png) 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": ![Machines VM creating](/images/machines-vm-creating.png) _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: ![Two Cockpit Applications](/images/cockpit-two-apps.png) 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-app CC0-1.0 Demo Application A demo add-on application for Cockpit

This is a demo application

org.cockpit_project.cockpit demo-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: ![KubeVirt Registry Disks](/images/kubernetes-registry-disks.png) _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: ![Services relationships](/images/services-relationships.png) ### 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. ![Updates Mobile](/images/updates-mobile.png) 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. ![Updates Truncating Version](/images/updates-version-truncated.png) ### 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: ![Machines vCPU](/images/machines-vcpu-config.png) 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. ![Kubevirt Pod Metrics](/images/kubernetes-kubevirt-pod-metrics.png) _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"): ![Docker Volumes](/images/docker-volumes-list.png) _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. ![System tuned permission check](/images/system-tuned-permission.png) ### 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: ![Enabled stopped NetworkManager](/images/network-nm-stopped-enabled.png) 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: ![Disabled stopped NetworkManager](/images/network-nm-stopped-disabled.png) ### 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: ![Account roles](/images/accounts-weldr-notification.png) ### 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. ![Time stamp localization](/images/moment-i18n.png) ### 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). ![Install PCP on demand](/images/pcp-install-on-demand.png) ### Software Updates: Improve layout in mobile mode The Software Updates page improves spacing and layout in small browser windows and mobile browsers: ![PackageKit mobile mode](/images/packagekit-mobile-optimization.png) ### 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". ![Privilege status](/images/cockpit-drop-privileges.png) ### 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). ![Install VDO on demand](/images/vdo-install-on-demand.png) ### 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. ![Machines Add Disk](/images/machines-add-disk.png) _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. ![Kubernets VM detail](/images/kubernetes-vm-detail.png) _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). ![Install realmd on demand](/images/realmd-install-on-demand.png) ### 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. ![Suggest other browser when browser is unsupported](/images/login-suggest-browser-when-unsupported.png) ### 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. ![Install auto-update backend on demand](/images/packagekit-auto-updates-install-on-demand.png) ### 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: ![Reuse my password for privileged tasks](/images/cockpit-reuse-password.png) 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: ![Unlocked option](/images/cockpit-unlocked.png) ## 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: ![Content Security Policy denial](/images/csp-denied.png) ## 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: ![Multi-host Transport](/images/transport-multi-small.png) [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: ![Login Alternate Server](/images/cockpit-login-alternate.png) 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. ![Detach disk](/images/machines-detach-disk.png) _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. ![Cockpit-machines app](/images/apps-cockpit-machines.png) ### 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: ![ssh SHA256 fingerprints](/images/ssh-sha256-fingerprints.png) 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: ![Detach disk](/images/machines-network-errors.png) 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. ![Screenshot of the new memory graph](/images/memory-graph.png) 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. ![screenshot of the NIC edit dialog](/images/nic-edit.png) ### 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. ![animation of a PatternFly style list](/images/list-patternfly-update.gif) ### 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. ![Creation dialog connection choice](/images/machines-libvirt-create-connection-choice.png) _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. ![Software Updates severity tooltip](/images/packagekit-severity-tooltips.png) 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. ![Software Updates unregistered system](/images/packagekit-unregistered-system.png) ### 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: ![kdump remote locations](/images/kdump-remote-locations.png) ### 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. ![Responsive layout](/images/machines-responsive-layout.png) ### 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. ![Filesystem label validation](/images/storage-label-validation.png) 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} ![network bridge dialog screenshot](/images/network-bridge-dialog-responsive.png) ![kdump crash dialog screenshot](/images/kdump-crash-dialog-responsive.png) ![user password dialog screenshot](/images/users-password-dialog-responsive.png) ### Docker: Include kubernetes containers in graphs Kubernetes containers will now also be present in CPU/memory graphs. ![Kubernetes containers in graphs](/images/docker-kubernetes-in-graphs.png){:.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. ![services screenshot](/images/services-relayout.png) ### 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. ![system page screenshot](/images/system-page-responsive.png) ### 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. ![Storage pool operation](/images/storage-pools.png) ### 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. ![Domain information](/images/domain-leave.png) 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. ![VDO options explained](/images/vdo-option-explainer.png) ### 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. ![Storage Volume User](/images/machines-storage-volume-usedby.png) ### Machines: Autostart configuration The VM details now have a new check box for enabling or disabling automatic startup when the host boots. ![Machines Autostart configuration](/images/machines-autostart-checkbox.png) _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)). ![Terminal theme and context menu](/images/terminal-context-menu.png) ### 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. ![Mobile NFS mount dialog](/images/storage-new-nfs-mount-mobile.png) ### 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. ![Update history table](/images/sw-updates-history-table.png) ### 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. ![Create VM with existing image](/images/machines-existing-disk-image.png) ### Machines: Show virtual networks Show the details and properties of virtual networks. ![Virtual networks in machines](/images/machines-virtual-networks.png) _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. ![Service filter cockpit](/images/services-filtering-cockpit.png) ### 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 ![Filtering logs by service](/images/logs-filter-service-name.png) The Logs page now allows you to only view the logs for a specific service. ### Machines: Support for Pausing/Resuming VMs ![Pause and Resume operations for VMs](/images/machines-pause-resume.png) 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 ![Autostart property for Virtual Networks](/images/machines-virtual-network-autostart.png) _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). ![Create VM with Network boot](/images/machines-pxe-boot.png) ### 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. ![iSCSI storage pool](/images/machines-iscsi.png) ### Machines: Better notifications Notifications about virtual machines have been streamlined and use a common presentation now. ![Notifications](/images/machines-notifications.gif) ### 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. ![Firewall ports](/images/networking-ports.png) ### 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. ![Machines OS auto-detection](/images/machines-os-autodetect.png) ### 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: ![New language dialog](/images/language-dialog-translated.png) 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. ![iSCSI direct storage pool](/images/machines-iscsi-direct.png) _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 format block device button](/images/storage-format-button.png) ### 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. ![Firewall zone list](/images/firewall-zone-list.png) Services can now be added to and removed from specific zones. ![Adding services to zones](/images/firewall-add-services-to-zones.png) Additionally, dialogs on the Firewall page now show error messages. ![Firewall error message](/images/firewall-error-message.png) ### 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/). ![Switch On](/images/firewall-switch-on.png) ![Switch On](/images/firewall-switch-off.png) The switch also features a native-like keyboard focus indicator: a blue glow for Chrome/WebKit-based browsers and a dotted outline for Firefox. ![Switch with keyboard focus, Epiphany](/images/firewall-switch-on-epiphany-focus.png) ![Switch with keyboard focus, Firefox](/images/firewall-switch-on-firefox-focus.png) ### 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. ![Adding firewall zones](/images/firewall-add-zone.png) ### Machines: Additional storage options During virtual machine creation it is now possible to select the storage pool to use for the machine. ![Select storage pool during machine creation](/images/machines-select-storage-pool.png) It is now also possible to create a storage pool using a physical disk device as the backing store. ![Create storage pool on physical disk device](/images/machines-new-pool-physical-disk-device.png) Finally, it is now possible to configure the disk cache policy when adding storage devices to virtual machines. ![Adjust virtual machine disk cache policy](/images/machines-disk-cache-policy.png) ### Machines: Support for changing memory allocation The Machines page also gained support for changing the current and maximum memory allocations of a virtual machine. ![Adjust virtual machine memory allocation](/images/machines-memory-allocation.png) ### 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. ![New encryption option](/images/storage-separate-encryption-option.png) ### 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. ![Virtual machine from URL](/images/machines-from-url.png) ### Machines: IP addresses for network interfaces The information about network interfaces now includes their IP addresses. ![Interface addresses](/images/machines-if-ip.png) ### 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). ![Disk on NFS](/images/disk-on-nfs.png) ![Disk on ISCSI](/images/disk-on-iscsi.png) ### 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. ![Available storage for new VM](/images/available-storage-for-new-vm.png) ### 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. ![login page](/images/login-pf4.png) ![system page](/images/system-pf4.png) ### 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): ![SELinux modifications](/images/selinux-modifications.png) 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: ![SELinux automation script](/images/selinux-autoscript.png) ### Machines: Deletion of Virtual Networks The Virtual Networks section of the Machines page now supports deleting networks. ![delete virtual network](/images/machines-delete-network.png) ### 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. ![VM creation with iSCSI pool](/images/machines-create-iscsi.png) ### 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. ![service-logs](/images/service-logs.png) ### Services: Design and accessibility improvements Services and other systemd units now sport a simpler on/off state with a clear status overview. ![service-details](/images/service-details.png) 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. ![dimm-memory](/images/dimm-hwinfo.png) _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. ![memory-for-os](/images/recommended-memory-os.png) ### 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 typeahead OS selection](/images/machines-os-typeahead.png) ### Machines: Create LVM storage pools Storage pools using LVM can be created on the Machines page. ![Machines LVM storage pools](/images/machines-lvm-pool.png) ### 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. ![Machines create network](/images/machines-create-network.png) ### 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: ![Firewall included services](/images/firewall-included-services.png) ### 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. ![Machines creating a VM by importing an existing disk](/images/machines-create-importing-disk-separate-dialog.png){:.screenshot} The Operating System input field is now mandatory; this allows the guest device assignment to be optimized, leading to better performance. ![Machines OS mandatory input](/images/machines-os-input-mandatory.png){:.screenshot} The storage size input field has to be at least the required minimum by the VM's OS. ![Machines storage input lower limit](/images/machines-storage-input-lower-limit.png){:.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. ![Machines direct interface type](/images/machines-direct-interface-type.png){:.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. ![Services more actions for services](/images/services-more-actions-services.png){:.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. ![VM Storage Volume creation](/images/create-storage-volume.png) ### 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. ![SSH Key Add](/images/ssh-key-add.png) ![Create VM source filesystem](/images/create-vm-source-filesystem.png) ### 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. ![VM Network Interface creation](/images/vm-network-interface.png) ### 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 on System page](/images/system-failed-services.png) 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: ![Show shareable option in VM list](/images/machines-shareable-disk-list.png) With the new "Edit" button these properties can now be changed: ![Edit shareable option](/images/machines-shareable-disk-edit.png) 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. ![Firewall Redesign](/images/firewall-ui-redesign.png) ### 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. ![Create VM dialog](/images/machines-create-vm-refactor.png) ### 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. ![Dark navigation](/images/nav-dark-nav.png) ### Software Updates: Use notifications for available updates info Cockpit will notify you about available updates in the navigation menu. ![Notify about available updates](/images/notify-available-updates.png) ### 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. ![Machines NIC deletion](/images/machines-nic-deletion.png) ### 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. ![login reuse password checkbox is checked](/images/login-reuse-password-checked.png) ### 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. ![Firewall removing a zone warns you](/images/firewall-removing-zone-warning.png) 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. ![Cockpit podman user containers](/images/podman-user-containers.png){:.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. ![Storage software devices](/images/storage-software-devices.png){:.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/). ![Alert firewall](/images/alert-firewall.png){:.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. ![Storage format dialog](/images/storage-format-mountpoint.png) ### 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. ![Transient virtual network](/images/machines-transient-network.png) ### 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. ![Machine creation size sliders](/images/machines-size-sliders.png) ### 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. ![Reportd crash submission](/images/logs-reportd.png) 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. ![Overview](/images/new-overview.png) ### Session timeouts Cockpit will automatically log you out of your current session after 15 minutes of inactivity. ![Automatic logout](/images/session-timeout.png) 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. ![/etc/issue](/images/etc-issue.png) 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. ![Overview](/images/overview-cpu-usage.png) ### 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. ![unlock-keyring](/images/unlock-keyring.png) ### 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. ![SElinux autoscript ansible](/images/selinux-autoscript-ansible.png) ### 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. ![VM NIC bridge](/images/vm-nic-bridge.png) ### 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. ![Disk choose bus type](/images/disk-choose-bus-type.png) ### 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". ![Cockpit podman CPU limit](/images/podman-cpu-limit.png){:.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. ![Documentation per page](/images/documentation-per-page.png){:.screenshot} ### Localize times The Overview, Accounts, and Logs pages now show dates and times in the correctly-localized format. ![Localized time formats](/images/overview-localized-time.png){:.screenshot} ### Podman: Show full log Show containers' logs since their startup, not just since opening the Logs tab. ![Podman historical logs](/images/cockpit-podman-historical-logs.png){:.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. ![Feature documentation](/images/network-inline-docs.png){:.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. ![Transient virtual machines](/images/transient-vms.png){:.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. ![Firmware selection](/images/vm-firmware-selection.png){:.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. ![Unattended installation](/images/vm-unattended.png){:.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. ![zone ports](/images/firewall-zone-ports.png) ### 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). ![Apply this solution](/images/selinux-apply-this-solution.png) 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. ![Last login banner](/images/last-login-banner.png) 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. ![Insights details](/images/health-insights.png) ### 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/). ![New button order](/images/new-button-order.png) ### 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. ![Sending keys to a VM](/images/vm-console-keys.png) ### 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. ![Services page mobile mode](/images/services-pf4-mobile.png) ### 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). ![Overview uptime](/images/overview-uptime.png) 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. ![SElinux autoscript ansible](/images/selinux-autoscript-ansible.png) 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. ![Journal Logs Filtering](/images/journal-logs-filtering.png) ### 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 ![New one-level navigation](/images/one-level-nav.png) | ![Integrated host switcher](/images/host-switcher.png) ### 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. ![Logs inline help](/images/logs-inline-help.png) ### 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. ![Storage side panel](/images/storage-details-side-panel.png) ### 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 ``` ![/etc/issue](/images/etc-issue.png) 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 ``` ![Automatic logout](/images/session-timeout.png) 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. ![Last login banner](/images/last-login-banner.png) 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 ![iPhone settings]({{ site.baseurl }}/images/safari/1.png) 2. Scroll down and tap on "**Safari**" ![iPhone settings, scrolled mid-way down]({{ site.baseurl }}/images/safari/2.png) ![Safari settings highlighted]({{ site.baseurl }}/images/safari/2-2.png) 3. Scroll down to the bottom and tap on "**Advanced**" ![Safari settings]({{ site.baseurl }}/images/safari/3.png) ![Advanced highlighted]({{ site.baseurl }}/images/safari/3-2.png) 4. Tap on "**Experimental Features**" at the bottom !["Experimental Features" highlighted]({{ site.baseurl }}/images/safari/4.png) 5. Scroll down until you see "**NSURLSession WebSocket**" ![Experimental Features]({{ site.baseurl }}/images/safari/5.png) !["NSURLSession Websocket" highlighted]({{ site.baseurl }}/images/safari/5-2.png) 6. Enable "**NSURLSession WebSocket**" !["NSURLSession Websocket" off by default]({{ site.baseurl }}/images/safari/6.png) !["NSURLSession Websocket" turned on manually]({{ site.baseurl }}/images/safari/6-2.png) 7. You're done! Navigate to Cockpit with Safari and sign in normally. ![Safari icon]({{ site.baseurl }}/images/site/browser-safari.svg){:.safari-icon} ## macOS on ARM (M1) 1. Open Safari's settings, select "**Advanced**", and enable "**Show Develop menu in menu bar**" ![Safari's settings]({{ site.baseurl }}/images/safari/macos-safari-advanced.png){:.full-width} 2. Go to Safari's "**Develop**" menu, select "**Experimental Features**", and enable "**NSURLSession WebSocket**" ![Safari's settings]({{ site.baseurl }}/images/safari/macos-safari-experimental.png){:.full-width} 3. You're done! Navigate to Cockpit with Safari and sign in normally. ![Safari icon]({{ site.baseurl }}/images/site/browser-safari.svg){:.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}![](/images/site/browser-0.svg){% 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.name }}](/images/site/os-{{ distro.first}}.svg)](#{{ 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 %}