Quick Start

The fastest way to try chimera is the prebuilt container image published by CI to ghcr.io. The image ships with a working default config that exports two filesystems out of the box:

Mount Backend Description
/export linux A bind-mount target inside the container. Mount any host directory here to serve files from disk.
/memfs memfs An in-memory filesystem. Useful for smoke tests and benchmarking; contents do not persist across restarts.

Each is published as an NFS export, an SMB share, and an S3 bucket simultaneously.

Run the server

mkdir -p ./export
docker run --rm -it \
    -v "$(pwd)/export":/export \
    -p 111:111 -p 2049:2049 \
    -p 445:445 \
    -p 5000:5000 \
    -p 8080:8080 \
    -p 9000:9000 \
    ghcr.io/chimera-nas/chimera:latest

The ports map as follows:

Port Protocol
111 Sun RPC portmap (required for NFSv3 mounts)
2049 NFSv3 / NFSv4
445 SMB2 / SMB3
5000 S3
8080 Admin REST API
9000 Prometheus metrics

Warning: Chimera binds the standard NFS, SMB, and Sun RPC portmap ports. If the host is already running rpcbind, nfs-server, smbd, or any other service on ports 111, 2049, or 445, either stop them or remap chimera to different host ports (e.g. -p 12049:2049).

Connect a client

From another shell on the same host:

# NFS
mount -t nfs localhost:/export /mnt/export
mount -t nfs localhost:/memfs  /mnt/memfs

# SMB
mount -t cifs //localhost/export /mnt/export -o guest
mount -t cifs //localhost/memfs  /mnt/memfs  -o guest

# S3
aws --endpoint-url http://localhost:5000 s3 ls s3://export/
aws --endpoint-url http://localhost:5000 s3 ls s3://memfs/

# Admin REST API
curl http://localhost:8080/api/v1/exports

# Metrics
curl http://localhost:9000/metrics

Overriding the bundled config

Chimera is configured via a JSON file at /usr/local/etc/chimera.json inside the container. To run with your own config, bind-mount over it:

docker run --rm -it \
    -v "$(pwd)/chimera.json":/usr/local/etc/chimera.json:ro \
    -v "$(pwd)/export":/export \
    -p 111:111 -p 2049:2049 -p 445:445 -p 5000:5000 -p 8080:8080 -p 9000:9000 \
    ghcr.io/chimera-nas/chimera:latest

A minimal example exporting a single in-memory filesystem over NFS at /mnt, with RDMA enabled:

{
    "server": {
        "threads": 32,
        "sync_delegation_threads": 32,
        "async_delegation": false,
        "async_delegation_threads": 8,
        "preallocate_slabs": 8,
        "preallocate_threads": 4,
        "max_open_files": 262144,
        "external_portmap": 0,
        "rdma": true,
        "rdma_hostname": "0.0.0.0",
        "rdma_port": 20049
    },
    "mounts": {
        "memfs": {
            "module": "memfs",
            "path": "/"
        }
    },
    "exports": {
        "/mnt": {
            "path": "/memfs"
        }
    }
}

The full set of server parameters, VFS modules, and protocol options is covered in the project README and source.


This site uses Just the Docs, a documentation theme for Jekyll.