fleet/ee/fleetd-chrome
Victor Lyuboslavsky c9e8d89e52
In fleetd-chrome, fixed RuntimeError seen by some hosts. (#16839)
https://github.com/fleetdm/fleet/issues/16394
As suggested:
https://github.com/rhashimoto/wa-sqlite/issues/156#issuecomment-1942477704

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

<!-- Note that API documentation changes are now addressed by the
product design team. -->

- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Manual QA for all new/changed functionality
2024-02-21 13:10:20 -06:00
..
src In fleetd-chrome, fixed RuntimeError seen by some hosts. (#16839) 2024-02-21 13:10:20 -06:00
.gitignore ChromeOS support for Fleet dashboard (#11953) 2023-05-26 14:32:01 -04:00
jest.config.ts ChromeOS Tables: Integration test for 3 tables (#12844) 2023-08-02 11:31:22 -04:00
jest.setup.ts Fleetd for Chrome (#10281) 2023-03-16 09:01:10 -03:00
jsdomwithfetch.ts Fleetd for Chrome (#10281) 2023-03-16 09:01:10 -03:00
package-lock.json In fleetd-chrome, fixed RuntimeError seen by some hosts. (#16839) 2024-02-21 13:10:20 -06:00
package.json In fleetd-chrome, fixed RuntimeError seen by some hosts. (#16839) 2024-02-21 13:10:20 -06:00
README.md ChromeOS tables: Surface ChromeOS errors in Fleet UI for privacy_preferences columns (#16196) 2024-01-22 09:43:48 -05:00
server.go Fleetd for Chrome (#10281) 2023-03-16 09:01:10 -03:00
tsconfig.json Fleetd for Chrome (#10281) 2023-03-16 09:01:10 -03:00
updates-beta.xml In fleetd-chrome, fixed RuntimeError seen by some hosts. (#16839) 2024-02-21 13:10:20 -06:00
updates.xml In fleetd-chrome, fixed RuntimeError seen by some hosts. (#16839) 2024-02-21 13:10:20 -06:00
webpack.common.js fleetd-chrome release workflows (#16020) 2024-01-16 11:56:43 -08:00
webpack.dev.js Fleetd for Chrome (#10281) 2023-03-16 09:01:10 -03:00
webpack.prod.js Fleetd for Chrome (#10281) 2023-03-16 09:01:10 -03:00

Fleetd Chrome Extension

Packaging the extension locally

Generate a .pem file to be the key for the chrome extension.

(In parent dir) Run the following command to generate an extension.

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --pack-extension=./fleetd-chrome --pack-extension-key=path/to/chrome.pem

Adding Chrome to Fleet

To learn how to package and add hosts to Fleet, visit: https://fleetdm.com/docs/using-fleet/enroll-hosts#enroll-chromebooks.

Debugging

Service worker

View service worker logs in chrome://serviceworker-internals/?devtools (in production), or in chrome://extensions (only during development).

Manual Enroll

Steps 1 and 2 can be performed on your workstation. Step 3 and 4 are to be executed on the target Chromebook.

  1. Create your .env file:

IMPORTANT: The address in FLEET_URL must have a valid TLS certificate.

echo 'FLEET_URL="https://your-fleet-server.example.com"' >> .env
echo 'FLEET_ENROLL_SECRET="<your enroll secret>"' >> .env

To test with your local Fleet server, you can use Tunnelmole or ngrok.

Tunnelmole:

tmole 8080

ngrok:

ngrok http https://localhost:8080
  1. Build the "unpacked extension":
npm install && npm run build

The above command will generate an unpacked extension in ./dist.

  1. Send the ./dist folder to the target Chromebook.

  2. In the target Chromebook, go to chrome://extensions, toggle Developer mode and click on Load unpacked and select the dist folder.

Testing

Run tests

npm run test

Release

Release a new version via GitHub automation. Update the package.json and updates.xml versions, then tag a commit with fleetd-chrome-vX.X.X to kick off the build and deploy. The build is automatically uploaded to R2 and properly configured clients should be able to update immediately when the job completes. Note that automatic updates seem to only happen about once a day in Chrome -- Hit the "Update" button in chrome://extensions to trigger the update manually.

Beta releases

Beta releases are pushed to https://chrome-beta.fleetdm.com/updates.xml with the extension ID bfleegjcoffelppfmadimianphbcdjkb.

Kick off a beta release by updating the package.json and updates-beta.xml versions, then tag a commit with fleetd-chrome-vX.X.X-beta to kick off the build and deploy.