COCKPIT-WS(8)
๐ COCKPIT-WS(8) โ the cockpit manual, bestie edition โจ
okay so. <rainbow>cockpit-ws</rainbow>?? That's the Cockpit web service, and it's section 8 of the cockpit manual. sit down, hydrate, and let's get into it ๐ซถ
โจ NAME โจ
cockpit-ws โ the Cockpit web service, aka the little guy doing all the talking ๐ฌ
๐ SYNOPSIS ๐
cockpit-ws [--help] [--port PORT] [--address ADDRESS] [--no-tls]
[--for-tls-proxy] [--local-ssh] [--local-session BRIDGE]
that's the whole vibe. onto the details ๐
๐ฆ DESCRIPTION ๐ฆ
cockpit-ws is the web service component. It's the thing that handles communication between your browser app and all the various configuration tools and services like cockpit-bridge(1). So it's basically the mutual bestie connecting two friend groups ๐
IMPORTANT: users and administrators should never need to start this program themselves. It gets started automatically by systemd(1) on boot up, through cockpit-tls(8). It starts itself. It's independent. main character energy, no notes ๐
๐ TRANSPORT SECURITY ๐
normally cockpit-ws runs behind the cockpit-tls TLS terminating proxy, and it only deals with unencrypted HTTP by itself. periodt.
BUT (and this is the plot twist ๐ฌ) for backwards compatibility it can also handle TLS connections by itself if you run it directly. and if you wanna know how to configure certificates? bestie, go read the cockpit-tls(8) documentation. iykyk ๐
โฐ TIMEOUT โฐ
when it's started via systemd(1), cockpit-ws will exit after 90 seconds if nobody logs in. or after the last user is disconnected. it simply will not wait around for you, bestie. it has boundaries โ๐
๐ OPTIONS ๐
--helpโ shows the help options. the classic. the icon ๐ซถ--port PORTโ serve HTTP requests onPORTinstead of port9090. but lowkey: usually Cockpit is started on demand by systemd socket activation, so this option has no effect. in that case you update theListenStreamdirective in thecockpit.socketfile in the usual systemd manner. (yes, the socket file. not a typo, it's the systemd way ๐ )--address ADDRESSโ bind to addressADDRESSinstead of binding to all available addresses. same deal as above: usually Cockpit starts on demand via systemd socket activation, so this option has no effect. in that case, update theListenStreamdirective in thecockpit.socketfile in the usual systemd manner.--no-tlsโ disable the http to https redirection. simple. clean. no drama ๐ซ๐--for-tls-proxyโ tellscockpit-wsthat it's running behind a local reverse proxy doing the TLS termination. then Cockpit putshttps://URLs into the default Content-Security-Policy, and accepts onlyhttps://origins instead ofhttp:ones by default. HOWEVER โ ifOriginsis set in thecockpit.conf(5)configuration file, that will override this default. the config file said "not today" ๐ญ--local-sshโ normallycockpit-wsusescockpit-sessionand PAM to authenticate the user and start a user session. with this option enabled, it will instead authenticate via SSH at127.0.0.1port22. plot twist, but make it SSH ๐ง--local-session BRIDGEโ skips all authentication andcockpit-session, and launches thecockpit-bridgespecified in BRIDGE in the local session. if BRIDGE is specified as-then expect an already running bridge that's connected to stdin and stdout of thiscockpit-wsprocess. this lets the web server run as any unprivileged user in an already running session โจ
this mode implies --no-tls, bestie. so you need to use http:// URLs with this. no cap.
โ ๏ธ WARNING โ ๏ธ with --local-session BRIDGE, you have to isolate the opened TCP port somehow โ for example in a network namespace โ otherwise all other users (or even remote machines, if the port isn't just listening on localhost) can access the session!! that's not a vibe. that's a security incident ๐๐ฅ
๐ ENVIRONMENT ๐
the cockpit-ws process will use the XDG_CONFIG_DIRS environment variable from the XDG basedir spec (https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) to find its cockpit.conf(5) configuration file ๐
in addition, the XDG_DATA_DIRS environment variable from the XDG basedir spec (https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) can be used to override the location to serve static files from. these are the files that get served to a non-logged in user. mysterious. anonymous. love that for them ๐ป
๐ BUGS ๐
please send bug reports to either the distribution bug tracker or the upstream bug tracker at https://github.com/cockpit-project/cockpit/issues/new โ they wanna hear it, fr fr ๐
๐ AUTHOR ๐
Cockpit has been written by many contributors ๐ธ โ https://github.com/cockpit-project/cockpit
๐ฅ SEE ALSO ๐ฅ
and that's the whole page bestie, we ate and left no crumbs ๐ this gorgeous little thing came out of cockpit and it's dated 2026-10-22 โ so go forth, never start cockpit-ws by hand, and slay ๐
โจ๐
๐ฆ where this page comes from
- arch rolling: cockpit 370-1 ยท LGPL-2.1-or-later
- centos-stream 10: cockpit-ws 370-1.el10 ยท LGPL-2.1-or-later AND GPL-3.0-or-later AND MIT AND CC-BY-SA-3.0 AND BSD-3-Clause
- centos-stream 9: cockpit-ws 370-1.el9 ยท LGPL-2.1-or-later AND GPL-3.0-or-later AND MIT AND CC-BY-SA-3.0 AND BSD-3-Clause
- fedora 43: cockpit-ws 370-1.fc43 ยท LGPL-2.1-or-later AND GPL-3.0-or-later AND MIT AND CC-BY-SA-3.0 AND BSD-3-Clause
- fedora 44: cockpit-ws 370-1.fc44 ยท LGPL-2.1-or-later AND GPL-3.0-or-later AND MIT AND CC-BY-SA-3.0 AND BSD-3-Clause
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms