; ################################# ; RHODECODE VCSSERVER CONFIGURATION ; ################################# [server:main] ; COMMON HOST/IP CONFIG, This applies mostly to develop setup, ; Host port for gunicorn are controlled by gunicorn_conf.py host = 0.0.0.0 port = 10010 ; ########################### ; GUNICORN APPLICATION SERVER ; ########################### ; run with gunicorn --config gunicorn_conf.py --paste vcsserver.ini ; Module to use, this setting shouldn't be changed use = egg:gunicorn#main [app:main] ; The %(here)s variable will be replaced with the absolute path of parent directory ; of this file ; Each option in the app:main can be override by an environmental variable ; ;To override an option: ; ;RC_ ;Everything should be uppercase, . and - should be replaced by _. ;For example, if you have these configuration settings: ;rc_cache.repo_object.backend = foo ;can be overridden by ;export RC_CACHE_REPO_OBJECT_BACKEND=foo use = egg:rhodecode-vcsserver ; ############# ; DEBUG OPTIONS ; ############# # During development the we want to have the debug toolbar enabled pyramid.includes = pyramid_debugtoolbar debugtoolbar.hosts = 0.0.0.0/0 debugtoolbar.exclude_prefixes = /css /fonts /images /js ; ################# ; END DEBUG OPTIONS ; ################# ; Pyramid default locales, we need this to be set #pyramid.default_locale_name = en ; default locale used by VCS systems #locale = en_US.UTF-8 ; path to binaries (hg,git,svn) for vcsserver, it should be set by the installer ; at installation time, e.g /home/user/.rccontrol/vcsserver-1/profile/bin ; or /usr/local/bin/rhodecode_bin/vcs_bin core.binary_dir = ; Redis connection settings for svn integrations logic ; This connection string needs to be the same on ce and vcsserver vcs.svn.redis_conn = redis://redis:6379/0 ; Custom exception store path, defaults to TMPDIR ; This is used to store exception from RhodeCode in shared directory #exception_tracker.store_path = ; ############# ; DOGPILE CACHE ; ############# ; Default cache dir for caches. Putting this into a ramdisk can boost performance. ; eg. /tmpfs/data_ramdisk, however this directory might require large amount of space #cache_dir = %(here)s/data ; *************************************** ; `repo_object` cache, default file based ; *************************************** ; `repo_object` cache settings for vcs methods for repositories #rc_cache.repo_object.backend = dogpile.cache.rc.file_namespace ; cache auto-expires after N seconds ; Examples: 86400 (1Day), 604800 (7Days), 1209600 (14Days), 2592000 (30days), 7776000 (90Days) #rc_cache.repo_object.expiration_time = 2592000 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set #rc_cache.repo_object.arguments.filename = /tmp/vcsserver_cache_repo_object.db ; *********************************************************** ; `repo_object` cache with redis backend ; recommended for larger instance, and for better performance ; *********************************************************** ; `repo_object` cache settings for vcs methods for repositories #rc_cache.repo_object.backend = dogpile.cache.rc.redis_msgpack ; cache auto-expires after N seconds ; Examples: 86400 (1Day), 604800 (7Days), 1209600 (14Days), 2592000 (30days), 7776000 (90Days) #rc_cache.repo_object.expiration_time = 2592000 ; redis_expiration_time needs to be greater then expiration_time #rc_cache.repo_object.arguments.redis_expiration_time = 3592000 #rc_cache.repo_object.arguments.host = localhost #rc_cache.repo_object.arguments.port = 6379 #rc_cache.repo_object.arguments.db = 5 #rc_cache.repo_object.arguments.socket_timeout = 30 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends #rc_cache.repo_object.arguments.distributed_lock = true ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen #rc_cache.repo_object.arguments.lock_auto_renewal = true ; prefix for redis keys used for this cache backend, the final key is constructed using {custom-prefix}{key} #rc_cache.repo_object.arguments.key_prefix = custom-prefix- ; Statsd client config, this is used to send metrics to statsd ; We recommend setting statsd_exported and scrape them using Promethues #statsd.enabled = false #statsd.statsd_host = 0.0.0.0 #statsd.statsd_port = 8125 #statsd.statsd_prefix = #statsd.statsd_ipv6 = false ; configure logging automatically at server startup set to false ; to use the below custom logging config. ; RC_LOGGING_FORMATTER ; RC_LOGGING_LEVEL ; env variables can control the settings for logging in case of autoconfigure #logging.autoconfigure = true ; specify your own custom logging config file to configure logging #logging.logging_conf_file = /path/to/custom_logging.ini ; ##################### ; LOGGING CONFIGURATION ; ##################### [loggers] keys = root, vcsserver [handlers] keys = console [formatters] keys = generic, json ; ####### ; LOGGERS ; ####### [logger_root] level = NOTSET handlers = console [logger_vcsserver] level = DEBUG handlers = qualname = vcsserver propagate = 1 ; ######## ; HANDLERS ; ######## [handler_console] class = StreamHandler args = (sys.stderr, ) level = DEBUG ; To enable JSON formatted logs replace 'generic' with 'json' ; This allows sending properly formatted logs to grafana loki or elasticsearch formatter = generic ; ########## ; FORMATTERS ; ########## [formatter_generic] format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s datefmt = %Y-%m-%d %H:%M:%S [formatter_json] format = %(timestamp)s %(levelname)s %(name)s %(message)s %(req_id)s class = vcsserver.lib._vendor.jsonlogger.JsonFormatter