| # Fuchsia package server |
| |
| Almost all software running on Fuchsia is organized into |
| [Fuchsia packages][fuchsia-packages], and a Fuchsia package |
| server manages the distribution of Fuchsia packages for Fuchsia |
| devices. In a Fuchsia ecosystem, one or more dedicated Fuchsia |
| package servers act as a secure hub for Fuchsia devices to |
| query and fetch the latest Fuchsia software. |
| |
| ## Serving Fuchsia packages |
| |
| At its core, a Fuchsia package server is a specialized HTTP(S) |
| server that hosts and distributes Fuchsia packages. A Fuchsia |
| package is a hierarchical collection of files that provides |
| one or more programs, components, or services to a Fuchsia |
| system. When a Fuchsia device needs to install new software |
| or update existing one, it uses an available Fuchsia package |
| server to download the necessary packages for the install or |
| update. |
| |
| ## Security through signed packages |
| |
| Every Fuchsia package’s BLOBs is cryptographically signed |
| using TUF ([The Update Framework][tuf]{:.external}). This |
| security mechanism guarantees that a Fuchsia package |
| delivered by a Fuchsia package server originates from a |
| trusted source and its contents remain unchanged. In turn, |
| this mechanism ensures that only trusted and verified |
| software updates can be pushed to Fuchsia devices. |
| |
| ## Package servers for developers |
| |
| Fuchsia developers can use a local Fuchsia package server |
| setup to work with packages that are part of the product |
| foundation as well as additional packages that are compiled |
| during development. The |
| [`ffx repository server`][ffx-repository-server] command can |
| help set up and manage Fuchsia package servers in a |
| development environment. |
| |
| <!-- Reference links --> |
| |
| [fuchsia-packages]: package.md |
| [tuf]: https://en.wikipedia.org/wiki/The_Update_Framework |
| [ffx-repository-server]: /docs/development/tools/ffx/workflows/start-package-servers.md |