Deployment For Clients
Surfly application consist of 23+ services. Most of them are containerized and
run with podman. Podman containers are managed by systemd. For more details,
see /etc/systemd/system
folder. Surfly services normally have prefix ss-
.
There are 2 exceptions - redis
and postgresql
services. They can be installed
and configured in 2 different ways:
as system packages (default)
as external services (for details, see on-premise documentation)
During the installation process, the container images of services are pulled from the Surfly registry. The images of official released versions are retained in registry for 720 days. The other images are retained for 5 days.
To complete the installation process, a client requests a build file from our build server. The build file contains personalized configuration files for Surfly installation and a license file. The build file is downloaded from storage serverand cached for 1 day.
Minimum deployable version
Surfly releases a new version, on average, 2 to 6 times a month. We highly recommend using the latest version for optimal performance and security. However, if you are unable to do so, we also make efforts to ensure that older Surfly versions remain deployable.
The deployability of older versions is subject to certain conditions:
Availability of container images in the registry
Changes in system packages which are required for Surfly to function correctly (see up-to-date list here)
Changes in system packages required for Surfly to build.
The version of Surfly
setup
script. Regardless of the Surfly version you intend to deploy, the latest version of the setup script is required.
We are actively working to minimize system dependencies for both building and running Surfly, ensuring smoother deployment experiences.
Please note that Surfly does not support versions that rely on operating systems that have reached End of Life (EOL) status.
Future plans
Minimize the number of system packages required for Surfly to operate and build.
Transfer the generation of configuration files from the build server to the installation process on the server itself. This optimization aims to accelerate deployment and decrease reliance on system packages necessary for building Surfly.
Implement a distributive-independent installation process. We will define the minimum version of container engine, Linux kernel, and other essential system packages required for Surfly to function. This approach will enable easy installation on any modern Linux distribution.
Replace Surfly
setup
script with Podman pods or/and rewrite it in Go. This
transition will allow us to simplify the installation process and reduce the number of
packages required to install Surfly.