Skip to main content

Service Configuration

Last updated: August 20, 2026Latest Frontend Version: 2.17.7
Configuration Files

All configuration files use HOCON format and are located in /etc/ticrypt/. Each service has its own .conf file named after the service (e.g., ticrypt-rest.conf).

Each service has its own configuration file and options. Two services have more complex configuration and are documented on their own pages:

  • ticrypt-auth: Authentication, sessions, MFA, key escrow
  • ticrypt-vm: Realms, cost functions, hardware profiles

Value Typesโ€‹

TypeExampleDescription
String"an example"String value
Booltrue, falseBoolean value
Int42Whole number value
Port22Number between 0 and 65535
Range"5000-5010"Range of ports
Duration1 minute, 3 daysDuration with unit of measure
Size16 MiB, 3 GBFile size with unit of measure
ArrPort[5000, 5002, 5005]Array of port values
ArrString["a", "b", "c"]Array of string values
ArrNET[172.24.0.0/16]Array of IP network CIDR ranges

Shared Sectionsโ€‹

All services require the following sections. The configuration is identical across services unless noted otherwise.

mongodb Sectionโ€‹

All tiCrypt services use MongoDB as their database. Each service has its own database with its own connection settings. See MongoDB Configuration for additional detail.

ParameterTypeRequiredDescription
databaseStringMongoDB database name
hostnameStringMongoDB server hostname
portPortMongoDB server port
userStringMongoDB username
passwordStringMongoDB password

Alternatively, use a single uri parameter:

uri = "mongodb://user:password@localhost:27017/${database}"
warning

Do not specify both uri and individual connection parameters. Use one method or the other.

ticrypt.auth Sectionโ€‹

All services must know how to contact the ticrypt-auth supervisor service:

ParameterTypeRequiredDescription
hostnameStringHostname where ticrypt-auth is running
portPortPort on which ticrypt-auth listens

Akka Parametersโ€‹

Services use the Akka framework for inter-service communication. Two parameters control the Akka Artery transport:

ParameterDescription
akka.remote.artery.canonical.hostnameInterface to listen on. Use 127.0.0.1 if all services run on a single server.
akka.remote.artery.canonical.portListening port. Keep the default for each service to avoid port collisions.

ticrypt-restโ€‹

Parameters for the ticrypt.rest section in ticrypt-rest.conf:

ParameterTypeRequiredDescription
mongodbSectionโœ…See mongodb
http.hostStringInterface to bind the HTTP server to
http.portPortPort for the HTTP server
allowed-originsArrStringAllowed CORS origins. An empty list permits all origins.
vm.internal-networksArrNETโœ…Internal network ranges for VM communication
validation.request-jsonon, offโœ…Validate incoming JSON request bodies
validation.response-jsonon, offโœ…Validate outgoing JSON response bodies
session.search-raw-headerBoolEnable raw header search for session cookies. Turn on if sessions fail due to cookie parsing issues.

akka.http.server Sectionโ€‹

HTTP server parameters for ticrypt-rest:

ParameterTypeDefaultDescription
parsing.max-content-lengthSize16 MiBMaximum request body size
request-timeoutDurationMaximum duration for a single request
idle-timeoutDurationMaximum idle time before closing the connection
pipelining-limitIntMaximum concurrent pipelined requests
tip

parsing.max-content-length must be at least 50% larger than the file chunk size. The default 16 MiB is recommended.

warning

idle-timeout must be longer than request-timeout. Setting them equal or reversed causes premature connection drops.


ticrypt-file-managerโ€‹

Parameters for the ticrypt.filemanager section in ticrypt-file-manager.conf:

ParameterTypeRequiredDefaultDescription
mongodbSectionโœ…See mongodb
chunk-sizeSize8 MiBSize of file storage chunks
max-header-sizeInt64Maximum header size in bytes
akka.remote.artery.canonical.hostnameSee Akka
akka.remote.artery.canonical.portSee Akka
warning

Changing max-header-size from the default of 64 bytes is not recommended. The default accommodates future changes to the header format.


ticrypt-storageโ€‹

Parameters for the ticrypt.storage section in ticrypt-storage.conf:

ParameterTypeRequiredDescription
pathStringโœ…Absolute path to the file storage directory
idle-timeDurationHow long to wait before closing an idle connection
idle-checkDurationHow often to check for idle connections
akka.remote.artery.canonical.hostnameSee Akka
akka.remote.artery.canonical.portSee Akka

ticrypt-proxyโ€‹

Parameters for the ticrypt.proxy section in ticrypt-proxy.conf:

ParameterTypeRequiredDescription
interfaceStringโœ…Interface/domain to listen on
portsArrPortโœ…Ports to use for proxying (supports ranges, e.g., ["6000-6010"])
proxy-ttlDurationHow long to wait for a proxy connection
akka.remote.artery.canonical.hostnameSee Akka
akka.remote.artery.canonical.portSee Akka
Security

The interface parameter is critical. Listen only on the domain used for proxying. Listening on the wrong interface can introduce security vulnerabilities.

note

The ports specified by ports must be open in the firewall for external access. Coordinate firewall rules with this setting.


ticrypt-loggerโ€‹

Parameters for the ticrypt.logger section in ticrypt-logger.conf:

ParameterTypeRequiredDescription
driversSectionโœ…Log output drivers. See Drivers.
rotate-logon, offEnable log rotation
rotate-log-frequencyDurationHow often to rotate logs
rotate-log-suffix-formatStringLog rotation suffix format (Joda DateTimeFormat)
rotate-log-suffix-timezoneStringTimezone for log rotation suffix (default: UTC)
max-buffered-linesIntMaximum log lines to buffer in memory
akka.remote.artery.canonical.hostnameSee Akka
akka.remote.artery.canonical.portSee Akka
tip

In most deployments, max-buffered-lines is the only parameter that needs tuning. Increase it if log writes cause measurable I/O latency.

Log Driversโ€‹

The drivers section defines where logs are written. A typical setup uses two drivers:

drivers {
main-file-logger {
main = true
immutable = true
type = "file"
log-file = "/var/log/ticrypt/ticrypt-secure-log.log"
}
tcp-logger {
immutable = false
main = false
type = "tcp"
host = "localhost"
port = 25000
send-timeout = 30s
retry-timeout = 5s
}
}
DriverPurpose
main-file-loggerMaster copy of the log, stored locally. The immutable = true flag produces append-only output.
tcp-loggerForwards logs to a remote receiver (typically tiCrypt Audit) via TCP.
warning

Changing immutable to false disables append-only protection. Changing main to false removes the primary log output. Either change can result in unrecoverable audit gaps.


ticrypt-statsโ€‹

Parameters for the ticrypt.stats section in ticrypt-stats.conf:

ParameterDescription
akka.remote.artery.canonical.hostnameSee Akka
akka.remote.artery.canonical.portSee Akka

ticrypt-notificationsโ€‹

Parameters for the ticrypt.notifications section in ticrypt-notifications.conf:

ParameterDescription
akka.remote.artery.canonical.hostnameSee Akka
akka.remote.artery.canonical.portSee Akka

ticrypt-maintenanceโ€‹

Parameters for the ticrypt.maintenance section in ticrypt-maintenance.conf:

ParameterTypeRequiredDescription
account-lockerSectionSee Account Locker
garbage-collectorSectionSee Garbage Collector
backup-garbage-collectorSectionSee Backup Garbage Collector
file-transfer-garbage-collectorSectionSee File Transfer Garbage Collector
snapshot-garbage-collectorSectionSee Snapshot Garbage Collector
drive-garbage-collectorSectionSee Drive Garbage Collector
slurm-job-cleanerSectionSee SLURM Job Cleaner
deleted-user-cleanupSectionSee Deleted User Cleanup
akka.remote.artery.canonical.hostnameSee Akka
akka.remote.artery.canonical.portSee Akka

Account Lockerโ€‹

Automatically locks user accounts after a period of inactivity.

ParameterTypeDefaultDescription
enabledBooltrueEnable automatic account locking
frequencyDuration4hHow often to scan for inactive accounts
time-before-account-oldDuration365dHow long an account must be inactive before it is locked

Garbage Collectorโ€‹

Removes orphaned files and directories (e.g., homes of deleted users) that no longer belong to any directory.

ParameterTypeDefaultDescription
enabledBoolfalseEnable the file garbage collector
retention-periodDuration60dFiles older than this are eligible for deletion
amount-groupedInt100Files are processed in batches of this size
frequencyDuration4hHow often to run the garbage collector

Backup Garbage Collectorโ€‹

Removes old backup points after a retention period.

ParameterTypeDefaultDescription
enabledBooltrueEnable backup point cleanup
retention-periodDurationBackups older than this are deleted. If undefined, backups are kept indefinitely.
frequencyDuration4hHow often to run the backup garbage collector

File Transfer Garbage Collectorโ€‹

Removes completed or stale file transfers.

ParameterTypeDefaultDescription
enabledBooltrueEnable file transfer cleanup
retention-periodDurationTransfers older than this are deleted. If undefined, transfers are kept indefinitely.
frequencyDuration4hHow often to run the file transfer garbage collector

Snapshot Garbage Collectorโ€‹

Removes committed or unused snapshots. Snapshots are first moved to a trash directory before permanent deletion.

ParameterTypeDefaultDescription
enabledBooltrueEnable snapshot cleanup
retention-periodDurationSnapshots older than this are eligible for removal. If undefined, snapshots are kept indefinitely.
trash-directoryStringDirectory where snapshots are moved before final deletion. Required for the garbage collector to run.
trash-retentionDurationHow long snapshots remain in the trash directory before permanent deletion. Required for the garbage collector to run.
frequencyDuration4hHow often to run the snapshot garbage collector

Drive Garbage Collectorโ€‹

Removes drives from deleted users. Only drives with zero keys are removed.

ParameterTypeDefaultDescription
enabledBoolfalseEnable drive cleanup
frequencyDuration4hHow often to run the drive garbage collector
trash-directoryStringDirectory where drives are moved before final deletion. Required for the garbage collector to run.
logBooltrueWhether to log drives marked for deletion
dry-runBoolfalseIf true, only logs drives that would be deleted without actually moving them

SLURM Job Cleanerโ€‹

Cleans up stale SLURM batch jobs.

ParameterTypeDefaultDescription
enabledBoolfalseEnable SLURM job cleanup
frequencyDuration1mHow often to run the job cleaner
stale-periodDuration10mHow long since cleanup started before a job is considered stale
grace-periodDuration10mHow long to wait after a job is created before it can be deleted

Deleted User Cleanupโ€‹

Permanently removes deleted user records from the system after a retention period.

ParameterTypeDefaultDescription
enabledBooltrueEnable deleted user cleanup
frequencyDuration4hHow often to run the cleanup task
time-before-removalDuration365dHow long since deletion before a user is permanently removed

ticrypt-backupโ€‹

Parameters for the ticrypt.backup section in ticrypt-backup.conf:

ParameterTypeRequiredDefaultDescription
mongodbSectionโœ…See mongodb
identifierString"ticrypt"Prefix used for backup directory names
backup-baseStringโœ…/storage/ticrypt/ticrypt-backupDirectory where backups are stored locally
storage-baseStringโœ…/storage/ticrypt/ticrypt-storageDirectory where files are located. Must match the ticrypt-storage path.
num-copy-actorsInt1Parallelism for file copying. Larger values may improve performance on fast file systems.
max-attemptsInt5Maximum attempts to copy a file before giving up
sqlite.walon, offoffWhether to use SQLite3 write-ahead-log mode
public-key-locationString/var/lib/ticrypt/.ssh/id_rsa.pubLocation of the tiCrypt public key for SFTP backup transfers
path-translationsSectionMaps host paths to backend paths. Must match ticrypt-vm path translations.
akka.remote.artery.canonical.hostnameSee Akka
akka.remote.artery.canonical.port2564See Akka
warning

The path-translations section must match the translations configured in ticrypt-vm.conf. Mismatched translations will cause backup and restore operations to target incorrect paths.


ticrypt-batchโ€‹

Parameters for the ticrypt.batch section in ticrypt-batch.conf. Manages SLURM batch job integration.

ParameterTypeRequiredDefaultDescription
mongodbSectionโœ…See mongodb
check-ping-freqDuration2sHow often to check for services that have not responded
ping-timeoutDuration20sHow long a service can go without responding before being considered offline
job-cleanup-periodDuration30sHow often to clean up completed or stale jobs
slurm.userStringโœ…"ticrypt"System user under which SLURM commands are executed
slurm.hostnameString"localhost"Hostname of the SLURM controller
slurm.tokenStringโœ…/etc/ticrypt/slurm-tokenPath to the SLURM authentication token file

ticrypt-vmhostโ€‹

The ticrypt-vmhost.conf file uses shell environment variable format (KEY=VALUE), not HOCON. It configures the host controller service on each VM host server.

ParameterTypeRequiredDefaultDescription
TICRYPT_BACKEND_IPStringโœ…127.0.0.1IP address of the tiCrypt backend server
TICRYPT_BACKEND_NAMEStringโœ…Hostname of the tiCrypt backend server
TICRYPT_REALMStringโœ…The realm this host server belongs to
TICRYPT_TOKENStringโœ…Realm token used for self-registration
TICRYPT_HARDWARE_PROFILEStringโœ…Hardware profile ID for this host server
SSH_ALLOWED_NETWORKString0.0.0.0/0Network CIDR allowed for SSH connections (backend always included)
NFS_HOST_IPStringIP address of the NFS host
NFS_HOST_INTERNAL_NAMEStringnfs.ticryptHostname of the NFS host as seen from within VMs
SECURE_FORWARD_BASE_PORTInt6000Base port number for secure tunnel forwards
SECURE_NETWORK_PREFIXStringโœ…192.168.122IP prefix for the secure VM network (?.?.? format)
SERVICE_NETWORK_PREFIXStringโœ…192.168.123IP prefix for the service VM network
HOST_NETWORK_INTERFACEStringโœ…eth0Network interface facing the tiCrypt backend
LIBVIRT_STORAGEStringโœ…/storagePath to the Libvirt storage directory
LIBVIRT_USERStringticryptSystem user for Libvirt operations
LIBVIRT_NETWORK_TYPEStringrouteType of Libvirt network
info

This file is deployed to each VM host, not on the backend server. It is sourced by the host controller service at startup.