Snap documentation¶
Snaps are self-contained application packages that work across different Linux distributions on many different platforms, from embedded devices and desktops, to servers and the cloud.
The snap daemon, snapd, handles installation, confinement, and updates, allowing developers to focus on their applications while users get a consistent experience across platforms.
Snap packages and snapd solve the problem of inconsistent application packaging and deployment by providing a unified system that works the same way regardless of the underlying Linux distribution or hardware.
Snaps are useful for application developers seeking a universal packaging solution, system administrators managing diverse Linux environments, IoT and embedded device makers, and organizations where security and consistent deployments are priorities.
For guidance on building snaps, see the Snapcraft build-tool documentation.
In this documentation¶
First steps¶
Get snap running and take a tour of its core features before diving deeper.
Install snapd: Install the snap daemon • Distribution support
Explore snap: Get started with snap’s main features on a single page
Managing snaps¶
Install, configure, and maintain snaps day-to-day. Control updates, interfaces, services, and data.
Configuration: Configure snaps • Apps and aliases • Set system options • Configure snaps with confdb
Updates: Manage updates • Manage validation sets
Services and resources: Control services • Use quota resources • Create data snapshots • Disk space awareness • Data locations • Work with components
Troubleshooting: Fix common issues
Security and confinement¶
Understand how snaps use Linux security technologies to isolate applications and protect your system.
Confinement: Snap confinement • Classic confinement • Security policies
Interfaces: All about interfaces • Interface auto-connection • Interface hooks • Super-privileged interfaces • Connect interfaces • Interface reference
Verification: Assertions • Snapd release process
Snap development¶
For guidance on building snaps, see the Snapcraft build-tool documentation.
Extend snap functionality using the REST API, internal tooling, and in-development features.
APIs and tools: REST API • Use snapctl • Environment variables • Supported snap hooks • API authentication and authorization
Publishing: Public, private and unlisted snaps
Desktop integration: XDG desktop portals
Testing: Using snap try • Install modes • Debug snaps • Test snapd fixes • In-development features
YAML schemas: The snap.yaml • Gadget snap • Kernel snap
System internals¶
Understand how the snap system works: updates, channels, confinement, storage, and performance.
Updates and versions: Refresh awareness • Channels and tracks • Revisions • Transactional updates • Snap deltas
Components and configuration: Snap components • Confdb configuration mechanism • Parallel installs • Network requirements • Timer string format
Performance: Snap performance • System architecture
How this documentation is organised¶
This documentation uses the Diátaxis documentation structure.
Tutorials take you step-by-step through building and deploying your first Ubuntu Core image.
How-to guides provide instructions for specific tasks like customizing snaps, deploying to platforms, and managing devices.
Reference provides technical specifications, formats, and details you need while working.
Explanation provides conceptual context about architecture, security, storage, and update mechanisms.
Project and community¶
Snap and Snapcraft are members of the Ubuntu family. They’re both open source projects that welcome community involvement, contributions, suggestions, fixes and constructive feedback.
Thinking about using snap for your next project? Get in touch!