# ----------------------
# SERVER URL AND CREDENTIALS
 
# Default values are:
#
# server.port=9234
# accessKey=odilon
# secretKey=odilon
# server mode can be master (default) or standby
# server.mode=master  
# server.versionControl=false <- (default value) 

server.port=9234
accessKey=odilon
secretKey=odilon


# HTTP header cache directive max duration (default value is 360 secs) 
# server.objectstream.cache.secs=360

# -----------------------
# DATA REPLICATION

# RAID 0. Two or more disks are combined to form a volume, which appears as a single virtual drive. 
# It is not a configuration with data replication, its function is to provide greater 
# storage and performance by allowing #  # access to the disks in parallel.
# 
# RAID 1. For each object, 1 or more exact copies (or mirrors) are created on two or more disks. 
# This provides redundancy in case of disk failure. At least 2 disks are required, 
# Odilon also supports 3 or more for greater redundancy.

# RAID 6 / Erasure Coding.
# It is a method of encoding data into blocks that can be distributed across multiple disks
# or nodes and then reconstructed from a subset of those blocks. It has great flexibility 
# since you can adjust the number and size of the blocks and the minimum required for recovery. 
# It uses less disk space than RAID 1 and can withstand multiple full disk failures. 
# Odilon implements this architecture using Reed Solomon error-correction codes. 
#
# Supported configurations are: 
#
# 3 disks 		( 2 data 1 parity, supports       1 disk failure)
# 6 disks 		( 4 data 2 parity, supports up to 2 disks failure) 
# 12 disks 		( 8 data 4 parity, supports up to 4 disks failure)
# 24 disks 		(16 data 8 parity, supports up to 8 disks failure)
# 48 disks 		(32 data 16 parity, supports up to 16 disks failure)
#
# Data Replication Parameters
#----------------------------
# 'redundancyLevel' must be RAID 0 or RAID 1
# redundancyLevel=RAID 0 <-  default value
#
# 'dataStorage' is a comma separated list of the drives where Odilon will store binary objects.
# for RAID 0 there must be 1 or more drives, for RAID 1 there must be 2 or more drives, for RAID 6 there
# must be 3 or 6 or 12 disks.
#
# datastorage=/opt/odilon-data/drive0 <-  default value 
#
# Example for RAID 0
# redundancyLevel = RAID 0
# dataStorage = /opt/odilon-data/drive0

# Example for RAID 1
# redundancyLevel=RAID 1
# dataStorage=/opt/odilon-data/drive0, /opt/odilon-data/drive1
#
# Example for RAID 6
# redundancyLevel=RAID7 6
# dataStorage=/opt/odilon-data/drive0, /opt/odilon-data/drive1, /opt/odilon-data/drive2

redundancyLevel=RAID 0
dataStorage=c:/odilon-data/drive0

# -----------------------
# HTTPS
# 
# see -> https://odilon.io/configuration-https.html
#

# The path to the keystore containing the certificate
# server.ssl.key-store=classpath:odilon.p12

# The format used for the keystore. It could be set to JKS in case it is a JKS file
# server.ssl.key-store-type=PKCS12

# The password used to generate the certificate 
#server.ssl.key-store-password=odilon

# The alias mapped to the certificate
#server.ssl.key-alias=odilon

server.ssl.enabled=false


# -----------------------
# ENCRYPTION
#
# Whether binary objects are stored encrypted
# Normally it is recommended to enable encryption if th caller application does not encrypt
#
# to read how configure encryption 
# see -> https://odilon.io/configuration-advanced.html
#

encryption.enabled=false

# Encryption key is required for the encryption service
# encryption.key = copy here the value provided by the initialization script   
# 				   "enable-encryption.sh" (Linux) 
# 				   "enable-encryption.bat" (Windows)
#

 


# -----------------------
# VAULT
#
# Odilon keeps objects encrypted (Encryption at Rest) using modern algorithms such as AES-256. 
# Each object has a unique encryption key. In turn, the encryption key of the object can be 
# generated by Odilon or, which is recommended for greater security, by a KMS (Key Management Server) externally.
# 
# 'vault' is used to determine whether to use HashiCorp Vault to manage keys
# if vault is true there are some vault paramters listed below that must be provided (url, roleId, secretId, keyId)
# vault.enabled = false <- default value

vault.enabled=false

# Vault url and credentials
# uncomment and complete if there is a Vault available
#
# vault.url=http://127.0.0.1:8220
# vault.roleId=01aa9d05-1a0a-1392-5a90-784819064f05
# vault.secretId=609e5c5e-50d7-356c-2c2c-90d65a976a97
# vault.keyId=kbee-key

# vault.newfiles: whether to use vault to encrypt keys for new incoming files.
# Note that this variable has effect on files uploaded after the value 'newfiles' is changed
# for files uploaded before the change of 'newfiles' -> if they used the Vault when uploaded, 
# then the vault is required to access those files 
#
# vault.newfiles=true <- default value


# -----------------------
# MASTER STANDBY ARCHITECTURE

# Standby connection credentials
# Set standby.enabled to true when you want to replicate data

# standby.enabled=false
# standby.url=http://localhost
# standby.port=9211
# standby.accessKey=odilon
# standby.secretKey=odilon
#
# standby.sync.force is a boolean value, true forces the master server to replicate all data to the standby, default value is file
# note that after forcing a full sync you should set this value to false to avoid a full resync every time odilon server is started
#
# standby.sync.force = false
# 

-----------------------
# TRAFFIC CONTROL
#
# traffic.tokens -> is the max number of concurrent API requests served
# the goal of this parameters is to prevent overload of the server capacity
# default vaule is 32
#
# traffic.tokens=

# -----------------------
# CACHE
#
# http header cache duration
# this is used by the web browsers cache. default is 1 day
#
# server.objectstream.cache.secs=86400 


# -----------------------
# FILE CACHE (USED BY RAID 6)
#
# fileCache.maxCapacity:=100000
# fileCache.durationDays=15
# fileCache.initialCapacity=10000
#
# -----------------------
# OBJECTMETADATA CACHE
#
#objectMetadataCache.initialCapacity=10000
#objectMetadataCache.enabled=true
#objectMetadataCache.maxCapacity=2000000

