Skip to main content
Last updated: September 14, 2026tiCrypt 2.17.9

Service Configuration

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
mongodbSectionSee 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-networksArrNETInternal network ranges for VM communication
validation.request-jsonon, offValidate incoming JSON request bodies
validation.response-jsonon, offValidate outgoing JSON response bodies
session.search-raw-headerBoolEnable raw header search for session cookies. Turn on if sessions fail due to cookie parsing issues.

storage Section

Parameters for ticrypt.rest.storage, where the encrypted Vault lives on disk.

ParameterTypeRequiredDefaultDescription
pathString/tmp/ticrypt-storageDirectory holding the encrypted file chunks. The installer sets this from global.storagePath in ticrypt.yml
max-writesInt1000How many writes may be in flight at once
warning

path must point at persistent storage writable by the ticrypt user. The reference default is under /tmp, which does not survive a reboot. Confirm this value on any deployment where the installer did not set it.

note

ticrypt-setup also writes read.chunksize, write.print-stats, idle-time, idle-check, clean-workers-frequency, and min-response-time into this section. They carry over from the removed ticrypt-storage service and have no effect. Changing them does nothing.

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
mongodbSectionSee 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

Removed in 3.13.2

ticrypt-storage was removed in 3.13.2 and is not installed or started on current deployments. The file storage directory is now set in ticrypt-rest as storage.path.

This section applies only to deployments running 3.13.1 or earlier. A ticrypt-storage.conf left behind by an upgrade has no effect.

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

ParameterTypeRequiredDescription
pathStringAbsolute 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
interfaceStringInterface/domain to listen on
portsArrPortPorts 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
driversSectionLog 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

Removed in 3.13.2

ticrypt-backup was removed in 3.13.2 alongside ticrypt-storage, and is not installed or started on current deployments. Back up the storage directory with your own tooling. Every chunk is encrypted with keys only users hold, so the raw files can be copied to unencrypted backup targets without exposing data.

This section applies only to deployments running 3.13.1 or earlier.

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

ParameterTypeRequiredDefaultDescription
mongodbSectionSee 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
mongodbSectionSee 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_IPString127.0.0.1IP address of the tiCrypt backend server
TICRYPT_BACKEND_NAMEStringHostname of the tiCrypt backend server
TICRYPT_REALMStringThe realm this host server belongs to
TICRYPT_TOKENStringRealm token used for self-registration
TICRYPT_HARDWARE_PROFILEStringHardware 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_PREFIXString192.168.122IP prefix for the secure VM network (?.?.? format)
SERVICE_NETWORK_PREFIXString192.168.123IP prefix for the service VM network
HOST_NETWORK_INTERFACEStringeth0Network 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.