Skip to content

Simprint/simprint-update-server

Repository files navigation

Simprint Update Server

Self-hosted update gateway for Simprint release checks, maintenance status, and health endpoints.

This service is being phased out and is expected to be deprecated.

License AGPLv3 Language Rust Framework Axum 0.8 Service Update Gateway

English | 简体中文


Warning

Simprint Update Server will be gradually phased out as the Simprint client architecture is refactored. It is retained only for compatibility with existing flows and transition-period use, and is no longer intended as a long-term independently evolving backend service.

Introduction

Simprint Update Server is the self-hosted update gateway used by Simprint clients to check release availability, fetch active maintenance status, and expose a lightweight health endpoint.

It is intended for deployments that want to keep the update-checking path under their own control instead of depending on a shared hosted gateway. The service reads its runtime configuration from a local TOML file and integrates with PostgreSQL, Redis, and object-storage-backed version assets.

Why Simprint Update Server?

Even a narrow update gateway still needs a few things to be operationally safe:

  • A publish-safe example configuration instead of checked-in real environment secrets.
  • A small, focused gateway that only handles version and maintenance traffic.
  • A predictable release package for self-hosted deployment.
  • A clear contract for where downloadable version assets are resolved from.

Simprint Update Server is built around that scope: one Rust service, a config-first startup model, and a release package that only ships an example configuration template.

Features

  • Version checks: Exposes the client-facing version check endpoint with support for release metadata lookup.
  • Maintenance status: Provides the active maintenance query endpoint used by clients before update flows.
  • Health endpoint: Supplies a minimal health check for deployment monitoring and service verification.
  • Storage-backed asset URLs: Resolves downloadable version URLs from the configured public object storage base path.
  • Docker-oriented packaging: Builds a release archive containing Dockerfile, docker-compose.yml, and configs/config.toml generated from configs/config.example.toml.
  • Config-first execution: Uses the same -f=<config.toml> startup contract for local runs and container runs.

Quick Start

Prerequisites

  • Rust toolchain
  • PostgreSQL 16+ or a compatible PostgreSQL instance
  • Redis 7+
  • Publicly reachable object storage for version assets

Run locally

cp configs/config.example.toml configs/config.local.toml
# edit configs/config.local.toml
cargo run -- -f=configs/config.local.toml

The example configuration listens on port 40042 and uses the /api/v1 prefix by default.

Build a Docker release package

Use:

uv run python build_docker.py

The default build produces:

  • ./update-gateway
  • ./simprint-update-server-docker-*.tar.gz

You can also use options such as:

uv run python build_docker.py --clean
uv run python build_docker.py --no-package
uv run python build_docker.py --format zip
uv run python build_docker.py --dev --no-package

The packaged configs/config.toml is generated from configs/config.example.toml, and real environment-specific config files are intentionally not included in the release archive.

API Surface

  • GET {prefix}/health
  • POST {prefix}/maintenances/active
  • POST {prefix}/versions/check

Status

Simprint Update Server was originally developed as part of a private commercial backend stack. This repository is now being prepared for a public open-source release, and the documentation is being rewritten to make standalone self-hosted deployment easier to understand.

Some module boundaries and naming still reflect earlier internal deployment assumptions. The current direction is to keep the update gateway deployable as an independent service with a cleaner public-facing setup.

Contributing

This repository is still in an open-source refactoring phase, but issues and pull requests are welcome.

High-value contribution areas include:

  • Self-hosted deployment docs and onboarding improvements
  • Update and release verification coverage
  • API documentation and client integration examples
  • Packaging, release, and CI improvements

Useful entry points when exploring the codebase:

  • src/main.rs
  • src/utils/config.rs
  • configs/config.example.toml
  • build_docker.py

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3).

If you want to use Simprint Update Server in a way that does not comply with the AGPLv3 obligations, including distributing modified versions or providing modified versions as a closed-source service, please contact us for a commercial license.

About

Runtime distribution and update service for Simprint browser kernels, desktop releases, and workspace components.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors