Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Packaging Guide

StartOS is a Server OS – a Linux distribution optimized for administering servers. While operating systems like Mac, Windows, and Ubuntu are designed for client devices such as phones and laptops, StartOS provides a graphical interface for server administration that eliminates the need to “pop the hood” and use the command line.

Through the StartOS web interface, users can discover, download, install, configure, monitor, back up, and generally manage any variety of self-hosted, open-source software.

What is a StartOS Package?

What makes this experience possible is a unique package format (.s9pk) that permits services to take advantage of StartOS APIs. In its most basic form, a package is a thin metadata wrapper around a service that allows it to be discovered, installed, and run on StartOS. Beyond that, the StartOS APIs grant developers an incredible degree of creative capacity to define the end-user experience for their service. Developers can:

  • Display instructions and tooltips
  • Present alerts and warnings under certain conditions
  • Run arbitrary code on install, update, and uninstall
  • Represent configuration files as validated forms with all varieties of form inputs
  • Define scripts and commands that present as buttons with optional inputs
  • Write health checks that run on an interval and are optionally displayed
  • Automatically install and configure dependencies
  • Maintain state and optionally expose particular values to users or dependent services
  • Grant users flexible networking options such as LAN, Tor, and clearnet
  • Offer one-click, encrypted backups of targeted data

Table of Contents

  1. Environment Setup - Install the required development tools
  2. Quick Start - Create, build, and install your first package
  3. Project Structure - Understand the file layout of a StartOS package
  4. Manifest - Define your service metadata, release notes, and alerts
  5. Versions - Handle install, update, and downgrade logic
  6. Main - Configure daemons, health checks, and the service lifecycle
  7. Initialization - Run code when your service initializes
  8. Interfaces - Expose network interfaces to users
  9. Actions - Define user-facing buttons and scripts
  10. Tasks - Prompt users to run actions at the right time
  11. File Models - Represent and validate configuration files
  12. Dependencies - Declare and configure service dependencies
  13. Makefile - Automate build and install workflows
  14. Writing READMEs - Write effective service documentation