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.
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.
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.
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.
- 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, andconfigs/config.tomlgenerated fromconfigs/config.example.toml. - Config-first execution: Uses the same
-f=<config.toml>startup contract for local runs and container runs.
- Rust toolchain
- PostgreSQL 16+ or a compatible PostgreSQL instance
- Redis 7+
- Publicly reachable object storage for version assets
cp configs/config.example.toml configs/config.local.toml
# edit configs/config.local.toml
cargo run -- -f=configs/config.local.tomlThe example configuration listens on port 40042 and uses the /api/v1 prefix by default.
Use:
uv run python build_docker.pyThe 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-packageThe 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.
GET {prefix}/healthPOST {prefix}/maintenances/activePOST {prefix}/versions/check
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.
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.rssrc/utils/config.rsconfigs/config.example.tomlbuild_docker.py
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.