The update server is an open source system for managing Foundries.io update agents. There are two primary use cases for this project:
- Offline (air-gapped) environments where devices can't reach the Foundries.io backend
- Users who want to manage their own device management solution
This project handles both use cases by implementing all the APIs used by Foundries.io update agents. The project also includes a user-facing REST API and Web UI for managing devices and updates.
- mTLS "device gateway" that supports Foundries.io update agents aktualizr-lite and fioup
- Device registration API compatible with fio-device-register and fioup.
- Configuration management and remote actions compatible with fioconfig
- Updates managed and signed using The Update Framework (TUF)
- Pluggable authentication framework supporting:
- Github SSO
- Google SSO
- Locally managed users
- REST API
- Web UI and command line tooling
The whole project runs in a single Golang process and uses SQLite to ensure admininstration and operation of the service is as easy as possible while still scaling to the needs of non-hyperscalers.
Follow the Quick Start guide to get a server running in development mode.
The server runs a complete web interface as well as command line tool, fiocli.
If you have an existing Factory with provisioned devices, the migration guide covers signing with your Factory PKI, importing your fleet's TUF root, and repointing devices at this server.
The update server uses a content format compatible with Offline Updates to serve devices their TUF, OSTree, and Container data. Before uploading, see How to build an Update for producing that content in the first place. Then follow the updates guide for setting this up.
The update server uses TUF to secure the delivery of update manifests. See How TUF Works for details.
Follow the API to learn how to access and use the REST API.
Follow the configuring authentication guide for chosing the method that meets your requirements.
Follow the branding guide to replace the server's default look with your own logo, favicon, and color scheme — no rebuild required.
The production guide covers considerations when deploying the update server for production use.
The advanced topics guide covers custom listen addresses, certificate lifetimes, and manual device registration.
The project is a single Golang binary that can be built with:
go build -o fioserver github.com/foundriesio/update-server/cmd/server
A "devshell" is also included that can be used for local development:
./contrib/dev-shell
NOTE: This repository uses Git-LFS. You'll need this installed to use the web UI.
update-server is under the BSD 3-Clause Clear license.