2.9 KiB
Argus
Argus is an ASP.NET Core 10 web application. It serves a public catalog of published applications and downloadable release files.
Scope
- public web catalog
- public read-only API
- package file serving from disk
- SQLite metadata storage
- Docker-ready deployment for Raspberry Pi 5 (
linux/arm64)
There is no HTTP admin API, browser publishing form, or external publishing endpoint. Releases must be published on the server side, for example over SSH, by updating the SQLite database and placing package files under Data/Packages.
Use ARGUS_PUBLICATION.md as the canonical instruction for publishing applications and integrating update checks through Argus.
What It Stores
- app metadata: slug, name, summary, description, repository URL, homepage URL
- release metadata: version, channel, platform, package kind, notes, publish timestamp
- package files on disk under
Data/Packages - SHA-256 checksum and file size for each package
latest release selection is based on semantic version precedence first, then on publish time as a tie-breaker.
Successful startup keeps only the most recently published release per app. Older release records and their stored package files are pruned automatically.
SQLite data is stored in Data/argus.db.
Public API
GET /healthGET /api/appsGET /api/apps/{slug}GET /api/apps/{slug}/manifest?platform=web&channel=stableGET /api/apps/{slug}/download/latest?platform=web&channel=stableGET /api/apps/{slug}/releases/{releaseId}/downloadGET /api/releases/recent
Local Run
dotnet run --project .\Argus.csproj
Default local URL:
http://localhost:5105
Publishing
Publishing is intentionally not exposed through HTTP. Connect to the server over SSH, copy package files into Data/Packages, and update Data/argus.db locally.
See ARGUS_PUBLICATION.md for the complete publication command template and the client update protocol.
Required release fields in SQLite:
CatalogAppIdVersionChannelPlatformPackageKindOriginalFileNameStoredRelativePathContentTypePackageSizeBytesSha256PublishedAt
Docker On Raspberry Pi 5
Files included:
Dockerfiledocker-compose.rpi5.yml.env.example
Quick start:
cp .env.example .env
docker compose -f docker-compose.rpi5.yml up -d --build
The service binds only to 127.0.0.1:5105. Put Nginx or another reverse proxy in front of it for external access.
Reverse Proxy For argus.kusoft.xyz
Prepared Nginx site config:
deploy/nginx/argus.kusoft.xyz.conf
It is configured to:
- redirect
http://argus.kusoft.xyzto HTTPS - proxy HTTPS traffic to
http://127.0.0.1:5105 - pass
X-Forwarded-*headers expected by the app - use standard Let's Encrypt certificate paths for
argus.kusoft.xyz
Persistent data mount:
- host:
${ARGUS_DATA_PATH} - container:
/app/Data