Skip to content

Repository files navigation

Foundries Update Server

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.

Features

  • 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.

Quick start

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.

Migrating from FoundriesFactory

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.

Adding updates

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 Framework (TUF)

The update server uses TUF to secure the delivery of update manifests. See How TUF Works for details.

API access

Follow the API to learn how to access and use the REST API.

Configuring authentication options

Follow the configuring authentication guide for chosing the method that meets your requirements.

Branding and white-labeling

Follow the branding guide to replace the server's default look with your own logo, favicon, and color scheme — no rebuild required.

Running in production

The production guide covers considerations when deploying the update server for production use.

Advanced topics

The advanced topics guide covers custom listen addresses, certificate lifetimes, and manual device registration.

Developing

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.

License

update-server is under the BSD 3-Clause Clear license.

About

A server to manage Foundries.io update agents(aklite and fioup)

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages