Skip to content

Enterprise: Install

The Enterprise installer is an interactive shell script that sets up a complete single-node flexFS deployment — admin server, metadata server, optional caching proxy, and your first volume — in a single run. After installation you will have a working system ready for mount clients to connect.

Ensure you have:

  • A Linux host meeting the prerequisites
  • Root access
  • A flexFS license key (UUID format, obtained from Paradigm4)
  • An object storage bucket and credentials (or an instance role)

Download and run the installer as root:

Terminal window
curl -fsSL https://get.flexfs.io/install/enterprise.sh | sudo bash

The script runs interactively, prompting for configuration at each step. The sections below describe each prompt in order.

The installer begins by verifying that:

  1. You are running as root (uid 0)
  2. curl and systemctl are available on the host

If any check fails the script exits immediately with an error message.

License key: ________

Enter your Enterprise license key. The installer validates that it is a properly formatted UUID, then contacts the flexFS licensing service to verify it. If validation fails you will see one of:

  • invalid license key: not a UUID — the key is not in UUID format
  • invalid license key: unauthorized — the key was rejected by the licensing service
  • unable to validate license key — the licensing service could not be reached

If the installer finds an existing flexFS installation at ~root/.flexfs, it prompts:

An existing flexFS installation was found at /root/.flexfs.
Overwrite existing installation? [no]: ________

Answering yes will stop all running flexFS services and remove the existing installation before proceeding.

The installer attempts to detect the cloud provider and region by querying instance metadata endpoints:

ProviderDetection method
AWSIMDSv2 token + /latest/meta-data/placement/region
GCPMetadata-Flavor: Google header + zone-to-region extraction
AzureIMDS /metadata/instance/compute/location
OCIIMDS /opc/v2/instance/regionInfo/regionIdentifier

If detection succeeds, the provider and region are pre-filled as defaults. If detection fails (for example, on a bare-metal server or a VM without metadata access), you enter them manually.

Cloud provider (e.g., aws, gcp, azure, oci) [detected]: ________
Region (e.g. us-east-1) [detected]: ________
Object storage API (s3, gcs, azure, oci) [derived]: ________

The storage API is derived automatically from the provider (aws maps to s3, gcp to gcs, etc.) but can be overridden. This is useful when using an S3-compatible storage service with a non-AWS provider.

If you select the s3 API, an additional prompt appears:

Custom S3 endpoint []: ________

Leave this blank for standard AWS S3. Provide a custom endpoint URL for S3-compatible services such as MinIO or Wasabi.

Next, provide the bucket and key prefix:

Bucket name: ________
Key prefix [flexfs]: ________

The key prefix is a path within the bucket that flexFS uses to namespace its data. The default flexfs is suitable for most deployments.

Have you attached an instance role/principal? [yes]: ________

If your host uses an IAM role, managed identity, or instance principal for bucket access, accept the default yes. Otherwise, answer no and provide static credentials:

Username: ________
Password: ________
Host IP address [auto-detected]: ________
Admin server port [443]: ________
Metadata server port [8443]: ________

The host IP address is auto-detected from the local network interface. The admin and metadata ports must be different. These are the addresses that mount clients will use to connect to the server.

Enable caching proxy? [no]: ________

Proxy groups provide a CDN-like caching layer between mount clients and object storage. If you answer yes, the installer prompts for:

Proxy bind port [9443]: ________
Proxy cache folder [/cache]: ________
Proxy cache disk quota [95%]: ________

The cache folder should be on a fast local disk (NVMe or SSD). The disk quota controls how much space the proxy’s on-disk cache can use, specified as a percentage or absolute size (e.g. 95%, 500GB, 1TiB).

(Block size, compression, and encryption cannot be changed after creation)
Volume name [vol-01]: ________
Block size (e.g. 1M, 2M, 4M) [4M]: ________
Compression algorithm (lz4, snappy, zstd, none) [lz4]: ________
Enable end-to-end encryption? [no]: ________
SettingChoicesNotes
Volume nameAny stringHuman-readable identifier for the volume
Block size256KiB — 8MiB (power of 2)Larger blocks suit large sequential files; smaller blocks suit many small files. Cannot be changed after creation.
Compressionlz4, snappy, zstd, noneLZ4 is the fastest; zstd provides the highest ratio. Cannot be changed after creation.
Encryptionyes / noEnables AES-256 end-to-end encryption. Cannot be changed after creation.

Before making any changes, the installer displays a full summary:

================================================================================
Installation Summary
================================================================================
Provider aws
Region us-east-1
API s3
Bucket my-flexfs-bucket
Prefix flexfs
Creds instance role/principal
Host 10.0.1.50
Admin :443
Meta :8443
Volume vol-01
Block size 4MiB
Compression lz4
E2EE disabled
Required TCP ports (ensure these are reachable by mount clients):
443 - admin.flexfs (admin API and mount client installer)
8443 - meta.flexfs (metadata service)
Proceed with installation? [yes]: ________

Answer yes to begin the installation.

After confirmation, the installer executes the following steps automatically:

  1. Downloads binaries to /usr/sbin/:

    • admin.flexfs — admin server
    • meta.flexfs — metadata server
    • configure.flexfs — resource configuration CLI
    • manage.flexfs — host management CLI
    • proxy.flexfs — caching proxy (if enabled)

    Binaries are downloaded from https://get.flexfs.io/ for the detected platform (linux/amd64 or linux/arm64). SELinux contexts are restored if restorecon is available.

  2. Initializes and starts the admin server

    • Creates credential file at ~root/.flexfs/admin/
    • Creates a systemd unit (flexfs-admin.service)
    • Starts the service and waits up to 30 seconds for the health endpoint to respond
  3. Saves the license grant for offline validation

  4. Initializes configure.flexfs with the admin server address and account token

  5. Creates the infrastructure using configure.flexfs:

    • A provider (e.g. aws, gcp)
    • A region (e.g. us-east-1)
    • A block store linking the provider, region, bucket, and credentials
    • A meta store pointing to the metadata server address (an authentication token is auto-generated)
    • A proxy group (if proxy was enabled), linking the provider, region, and proxy address
  6. Initializes and starts the metadata server

    • Creates credentials with the admin server address and meta store token
    • Creates a systemd unit (flexfs-meta.service)
    • Starts the service
  7. Initializes and starts the proxy server (if enabled)

    • Creates credentials with object storage credentials
    • Creates a systemd unit (flexfs-proxy.service) with the configured bind address, cache folder, and disk quota
    • Starts the service
  8. Deploys mount client binaries to the admin server’s deploy folder using manage.flexfs deploy

  9. Creates the volume with the specified block size, compression, and encryption settings

  10. Creates a volume token for client authentication

  11. Links the volume to the proxy group (if proxy was enabled)

  12. Verifies that all services are running and responds on their health endpoints

When the installer completes successfully, it displays:

================================================================================
flexFS Enterprise Edition Is Running!
================================================================================
Admin server: https://10.0.1.50:443
Meta server: https://10.0.1.50:8443
Management:
configure.flexfs configure volume, proxies, and tokens
manage.flexfs manage, monitor, and update this server
To mount flexFS on a client machine, run:
curl -fksSL https://10.0.1.50:443/deploy/install-mount.sh | sudo bash -s /mnt/flexfs $TOKEN
================================================================================

The mount command shown uses the volume token created during installation. You can copy this command and run it on any client host to mount the filesystem.

The installer creates the following systemd units:

ServiceUnit name
Admin serverflexfs-admin.service
Metadata serverflexfs-meta.service
Proxy serverflexfs-proxy.service (if enabled)

Check status with:

Terminal window
systemctl status flexfs-admin flexfs-meta flexfs-proxy

You can also use the manage.flexfs utility to monitor and control services:

Terminal window
manage.flexfs status

See manage.flexfs for the full set of commands (start, stop, restart, upgrade, watch, and more).