Skip to content
setucpPublic

About

App manifests for Setu: Miniflux, hello-axum and more

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Setu manifests

Ready-to-use app manifests for Setu, the control panel for single-binary web apps.

What a manifest is

A manifest is one TOML file per app version. It is the only app-specific knowledge Setu has: where to download the release (and its sha256), which executable to run, whether the app needs a PostgreSQL database or persistent directories, how its environment is built (bind address, database URL, generated secrets, a one-time admin password), its health endpoint, default resource limits, and what a backup holds.

The full reference is docs/MANIFEST.md in the Setu repository.

Using one

In the panel: Apps → Add, then paste the file or its raw URL. Or with the API:

curl -X POST https://<panel>/api/v1/apps \
  -H 'Content-Type: application/json' -H 'Origin: https://<panel>' \
  --cookie '<session>' \
  -d '{"url": "https://raw.githubusercontent.com/setucp/manifests/main/miniflux/manifest.toml"}'

Then create a site from it (Sites → New).

Manifests

directory app release format
miniflux/ Miniflux feed reader (Go, PostgreSQL) bare executable (format = "binary")
hello-axum/ Setu's Rust sample app (Axum + sqlx) tar.gz archive
vyasa/ Vyasa CMS (Rust, PostgreSQL), x86_64 and aarch64 tar.gz archive

Adding a manifest

  1. Create <app-id>/manifest.toml (the directory name is the manifest's app.id).
  2. Point run.binary."x86_64-linux" at an official release asset and put the sha256 you computed from the downloaded file (sha256sum), not one copied from a web page. Use format = "binary" when the asset is the executable itself, the default tar.gz otherwise.
  3. Check it: POST /api/v1/apps/validate with the TOML on any Setu panel stores nothing and reports every error with its line number.
  4. Provision a site from it and confirm the health path answers, then open a pull request.

Release URLs are pinned per version; a new upstream version is a new manifest version (bump app.version, url and sha256 together).

Vyasa releases

.github/workflows/vyasa-release.yml checks for a new Vyasa release every six hours and opens a pull request moving vyasa/manifest.toml to it (tools/bump-vyasa.py, which computes each archive's sha256 itself). Merge it, then add the manifest URL in the panel (Apps → Add) to offer the update to sites.

About

App manifests for Setu: Miniflux, hello-axum and more

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages