##// END OF EJS Templates
configs: synced ce/ee configs
super-admin -
r5540:bf8e8ca3 default
parent child Browse files
Show More
@@ -1,905 +1,912 b''
1 1
2 2 ; #########################################
3 3 ; RHODECODE COMMUNITY EDITION CONFIGURATION
4 4 ; #########################################
5 5
6 6 [DEFAULT]
7 7 ; Debug flag sets all loggers to debug, and enables request tracking
8 8 debug = true
9 9
10 10 ; ########################################################################
11 11 ; EMAIL CONFIGURATION
12 12 ; These settings will be used by the RhodeCode mailing system
13 13 ; ########################################################################
14 14
15 15 ; prefix all emails subjects with given prefix, helps filtering out emails
16 16 #email_prefix = [RhodeCode]
17 17
18 18 ; email FROM address all mails will be sent
19 19 #app_email_from = rhodecode-noreply@localhost
20 20
21 21 #smtp_server = mail.server.com
22 22 #smtp_username =
23 23 #smtp_password =
24 24 #smtp_port =
25 25 #smtp_use_tls = false
26 26 #smtp_use_ssl = true
27 27
28 28 [server:main]
29 29 ; COMMON HOST/IP CONFIG, This applies mostly to develop setup,
30 30 ; Host port for gunicorn are controlled by gunicorn_conf.py
31 31 host = 127.0.0.1
32 32 port = 10020
33 33
34 34
35 35 ; ###########################
36 36 ; GUNICORN APPLICATION SERVER
37 37 ; ###########################
38 38
39 39 ; run with gunicorn --config gunicorn_conf.py --paste rhodecode.ini
40 40
41 41 ; Module to use, this setting shouldn't be changed
42 42 use = egg:gunicorn#main
43 43
44 44 ; Prefix middleware for RhodeCode.
45 45 ; recommended when using proxy setup.
46 46 ; allows to set RhodeCode under a prefix in server.
47 47 ; eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
48 48 ; And set your prefix like: `prefix = /custom_prefix`
49 49 ; be sure to also set beaker.session.cookie_path = /custom_prefix if you need
50 50 ; to make your cookies only work on prefix url
51 51 [filter:proxy-prefix]
52 52 use = egg:PasteDeploy#prefix
53 53 prefix = /
54 54
55 55 [app:main]
56 56 ; The %(here)s variable will be replaced with the absolute path of parent directory
57 57 ; of this file
58 58 ; Each option in the app:main can be override by an environmental variable
59 59 ;
60 60 ;To override an option:
61 61 ;
62 62 ;RC_<KeyName>
63 63 ;Everything should be uppercase, . and - should be replaced by _.
64 64 ;For example, if you have these configuration settings:
65 65 ;rc_cache.repo_object.backend = foo
66 66 ;can be overridden by
67 67 ;export RC_CACHE_REPO_OBJECT_BACKEND=foo
68 68
69 69 use = egg:rhodecode-enterprise-ce
70 70
71 71 ; enable proxy prefix middleware, defined above
72 72 #filter-with = proxy-prefix
73 73
74 74 ; #############
75 75 ; DEBUG OPTIONS
76 76 ; #############
77 77
78 78 pyramid.reload_templates = true
79 79
80 80 # During development the we want to have the debug toolbar enabled
81 81 pyramid.includes =
82 82 pyramid_debugtoolbar
83 83
84 84 debugtoolbar.hosts = 0.0.0.0/0
85 85 debugtoolbar.exclude_prefixes =
86 86 /css
87 87 /fonts
88 88 /images
89 89 /js
90 90
91 91 ## RHODECODE PLUGINS ##
92 92 rhodecode.includes =
93 93 rhodecode.api
94 94
95 95
96 96 # api prefix url
97 97 rhodecode.api.url = /_admin/api
98 98
99 99 ; enable debug style page
100 100 debug_style = true
101 101
102 102 ; #################
103 103 ; END DEBUG OPTIONS
104 104 ; #################
105 105
106 106 ; encryption key used to encrypt social plugin tokens,
107 107 ; remote_urls with credentials etc, if not set it defaults to
108 108 ; `beaker.session.secret`
109 109 #rhodecode.encrypted_values.secret =
110 110
111 111 ; decryption strict mode (enabled by default). It controls if decryption raises
112 112 ; `SignatureVerificationError` in case of wrong key, or damaged encryption data.
113 113 #rhodecode.encrypted_values.strict = false
114 114
115 115 ; Pick algorithm for encryption. Either fernet (more secure) or aes (default)
116 116 ; fernet is safer, and we strongly recommend switching to it.
117 117 ; Due to backward compatibility aes is used as default.
118 118 #rhodecode.encrypted_values.algorithm = fernet
119 119
120 120 ; Return gzipped responses from RhodeCode (static files/application)
121 121 gzip_responses = false
122 122
123 123 ; Auto-generate javascript routes file on startup
124 124 generate_js_files = false
125 125
126 126 ; System global default language.
127 127 ; All available languages: en (default), be, de, es, fr, it, ja, pl, pt, ru, zh
128 128 lang = en
129 129
130 130 ; Perform a full repository scan and import on each server start.
131 131 ; Settings this to true could lead to very long startup time.
132 132 startup.import_repos = false
133 133
134 134 ; URL at which the application is running. This is used for Bootstrapping
135 135 ; requests in context when no web request is available. Used in ishell, or
136 136 ; SSH calls. Set this for events to receive proper url for SSH calls.
137 137 app.base_url = http://rhodecode.local
138 138
139 139 ; Host at which the Service API is running.
140 140 app.service_api.host = http://rhodecode.local:10020
141 141
142 142 ; Secret for Service API authentication.
143 143 app.service_api.token =
144 144
145 145 ; Unique application ID. Should be a random unique string for security.
146 146 app_instance_uuid = rc-production
147 147
148 148 ; Cut off limit for large diffs (size in bytes). If overall diff size on
149 149 ; commit, or pull request exceeds this limit this diff will be displayed
150 150 ; partially. E.g 512000 == 512Kb
151 151 cut_off_limit_diff = 512000
152 152
153 153 ; Cut off limit for large files inside diffs (size in bytes). Each individual
154 154 ; file inside diff which exceeds this limit will be displayed partially.
155 155 ; E.g 128000 == 128Kb
156 156 cut_off_limit_file = 128000
157 157
158 158 ; Use cached version of vcs repositories everywhere. Recommended to be `true`
159 159 vcs_full_cache = true
160 160
161 161 ; Force https in RhodeCode, fixes https redirects, assumes it's always https.
162 162 ; Normally this is controlled by proper flags sent from http server such as Nginx or Apache
163 163 force_https = false
164 164
165 165 ; use Strict-Transport-Security headers
166 166 use_htsts = false
167 167
168 168 ; Set to true if your repos are exposed using the dumb protocol
169 169 git_update_server_info = false
170 170
171 171 ; RSS/ATOM feed options
172 172 rss_cut_off_limit = 256000
173 173 rss_items_per_page = 10
174 174 rss_include_diff = false
175 175
176 176 ; gist URL alias, used to create nicer urls for gist. This should be an
177 177 ; url that does rewrites to _admin/gists/{gistid}.
178 178 ; example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
179 179 ; RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
180 180 gist_alias_url =
181 181
182 182 ; List of views (using glob pattern syntax) that AUTH TOKENS could be
183 183 ; used for access.
184 184 ; Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
185 185 ; came from the the logged in user who own this authentication token.
186 186 ; Additionally @TOKEN syntax can be used to bound the view to specific
187 187 ; authentication token. Such view would be only accessible when used together
188 188 ; with this authentication token
189 189 ; list of all views can be found under `/_admin/permissions/auth_token_access`
190 190 ; The list should be "," separated and on a single line.
191 191 ; Most common views to enable:
192 192
193 193 # RepoCommitsView:repo_commit_download
194 194 # RepoCommitsView:repo_commit_patch
195 195 # RepoCommitsView:repo_commit_raw
196 196 # RepoCommitsView:repo_commit_raw@TOKEN
197 197 # RepoFilesView:repo_files_diff
198 198 # RepoFilesView:repo_archivefile
199 199 # RepoFilesView:repo_file_raw
200 200 # GistView:*
201 201 api_access_controllers_whitelist =
202 202
203 203 ; Default encoding used to convert from and to unicode
204 204 ; can be also a comma separated list of encoding in case of mixed encodings
205 205 default_encoding = UTF-8
206 206
207 207 ; instance-id prefix
208 208 ; a prefix key for this instance used for cache invalidation when running
209 209 ; multiple instances of RhodeCode, make sure it's globally unique for
210 210 ; all running RhodeCode instances. Leave empty if you don't use it
211 211 instance_id =
212 212
213 213 ; Fallback authentication plugin. Set this to a plugin ID to force the usage
214 214 ; of an authentication plugin also if it is disabled by it's settings.
215 215 ; This could be useful if you are unable to log in to the system due to broken
216 216 ; authentication settings. Then you can enable e.g. the internal RhodeCode auth
217 217 ; module to log in again and fix the settings.
218 218 ; Available builtin plugin IDs (hash is part of the ID):
219 219 ; egg:rhodecode-enterprise-ce#rhodecode
220 220 ; egg:rhodecode-enterprise-ce#pam
221 221 ; egg:rhodecode-enterprise-ce#ldap
222 222 ; egg:rhodecode-enterprise-ce#jasig_cas
223 223 ; egg:rhodecode-enterprise-ce#headers
224 224 ; egg:rhodecode-enterprise-ce#crowd
225 225
226 226 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
227 227
228 228 ; Flag to control loading of legacy plugins in py:/path format
229 229 auth_plugin.import_legacy_plugins = true
230 230
231 231 ; alternative return HTTP header for failed authentication. Default HTTP
232 232 ; response is 401 HTTPUnauthorized. Currently HG clients have troubles with
233 233 ; handling that causing a series of failed authentication calls.
234 234 ; Set this variable to 403 to return HTTPForbidden, or any other HTTP code
235 235 ; This will be served instead of default 401 on bad authentication
236 236 auth_ret_code =
237 237
238 238 ; use special detection method when serving auth_ret_code, instead of serving
239 239 ; ret_code directly, use 401 initially (Which triggers credentials prompt)
240 240 ; and then serve auth_ret_code to clients
241 241 auth_ret_code_detection = false
242 242
243 243 ; locking return code. When repository is locked return this HTTP code. 2XX
244 244 ; codes don't break the transactions while 4XX codes do
245 245 lock_ret_code = 423
246 246
247 247 ; Filesystem location were repositories should be stored
248 248 repo_store.path = /var/opt/rhodecode_repo_store
249 249
250 250 ; allows to setup custom hooks in settings page
251 251 allow_custom_hooks_settings = true
252 252
253 253 ; Generated license token required for EE edition license.
254 254 ; New generated token value can be found in Admin > settings > license page.
255 255 license_token =
256 256
257 257 ; This flag hides sensitive information on the license page such as token, and license data
258 258 license.hide_license_info = false
259 259
260 ; Import EE license from this license path
261 #license.import_path = %(here)s/rhodecode_enterprise.license
262
263 ; import license 'if-missing' or 'force' (always override)
264 ; if-missing means apply license if it doesn't exist. 'force' option always overrides it
265 license.import_path_mode = if-missing
266
260 267 ; supervisor connection uri, for managing supervisor and logs.
261 268 supervisor.uri =
262 269
263 270 ; supervisord group name/id we only want this RC instance to handle
264 271 supervisor.group_id = dev
265 272
266 273 ; Display extended labs settings
267 274 labs_settings_active = true
268 275
269 276 ; Custom exception store path, defaults to TMPDIR
270 277 ; This is used to store exception from RhodeCode in shared directory
271 278 #exception_tracker.store_path =
272 279
273 280 ; Send email with exception details when it happens
274 281 #exception_tracker.send_email = false
275 282
276 283 ; Comma separated list of recipients for exception emails,
277 284 ; e.g admin@rhodecode.com,devops@rhodecode.com
278 285 ; Can be left empty, then emails will be sent to ALL super-admins
279 286 #exception_tracker.send_email_recipients =
280 287
281 288 ; optional prefix to Add to email Subject
282 289 #exception_tracker.email_prefix = [RHODECODE ERROR]
283 290
284 291 ; NOTE: this setting IS DEPRECATED:
285 292 ; file_store backend is always enabled
286 293 #file_store.enabled = true
287 294
288 295 ; NOTE: this setting IS DEPRECATED:
289 296 ; file_store.backend = X -> use `file_store.backend.type = filesystem_v2` instead
290 297 ; Storage backend, available options are: local
291 298 #file_store.backend = local
292 299
293 300 ; NOTE: this setting IS DEPRECATED:
294 301 ; file_store.storage_path = X -> use `file_store.filesystem_v2.storage_path = X` instead
295 302 ; path to store the uploaded binaries and artifacts
296 303 #file_store.storage_path = /var/opt/rhodecode_data/file_store
297 304
298 305 ; Artifacts file-store, is used to store comment attachments and artifacts uploads.
299 306 ; file_store backend type: filesystem_v1, filesystem_v2 or objectstore (s3-based) are available as options
300 307 ; filesystem_v1 is backwards compat with pre 5.1 storage changes
301 308 ; new installations should choose filesystem_v2 or objectstore (s3-based), pick filesystem when migrating from
302 309 ; previous installations to keep the artifacts without a need of migration
303 310 #file_store.backend.type = filesystem_v2
304 311
305 312 ; filesystem options...
306 313 #file_store.filesystem_v1.storage_path = /var/opt/rhodecode_data/artifacts_file_store
307 314
308 315 ; filesystem_v2 options...
309 316 #file_store.filesystem_v2.storage_path = /var/opt/rhodecode_data/artifacts_file_store
310 317 #file_store.filesystem_v2.shards = 8
311 318
312 319 ; objectstore options...
313 320 ; url for s3 compatible storage that allows to upload artifacts
314 321 ; e.g http://minio:9000
315 322 #file_store.backend.type = objectstore
316 323 #file_store.objectstore.url = http://s3-minio:9000
317 324
318 325 ; a top-level bucket to put all other shards in
319 326 ; objects will be stored in rhodecode-file-store/shard-N based on the bucket_shards number
320 327 #file_store.objectstore.bucket = rhodecode-file-store
321 328
322 329 ; number of sharded buckets to create to distribute archives across
323 330 ; default is 8 shards
324 331 #file_store.objectstore.bucket_shards = 8
325 332
326 333 ; key for s3 auth
327 334 #file_store.objectstore.key = s3admin
328 335
329 336 ; secret for s3 auth
330 337 #file_store.objectstore.secret = s3secret4
331 338
332 339 ;region for s3 storage
333 340 #file_store.objectstore.region = eu-central-1
334 341
335 342 ; Redis url to acquire/check generation of archives locks
336 343 archive_cache.locking.url = redis://redis:6379/1
337 344
338 345 ; Storage backend, only 'filesystem' and 'objectstore' are available now
339 346 archive_cache.backend.type = filesystem
340 347
341 348 ; url for s3 compatible storage that allows to upload artifacts
342 349 ; e.g http://minio:9000
343 350 archive_cache.objectstore.url = http://s3-minio:9000
344 351
345 352 ; key for s3 auth
346 353 archive_cache.objectstore.key = key
347 354
348 355 ; secret for s3 auth
349 356 archive_cache.objectstore.secret = secret
350 357
351 358 ;region for s3 storage
352 359 archive_cache.objectstore.region = eu-central-1
353 360
354 361 ; number of sharded buckets to create to distribute archives across
355 362 ; default is 8 shards
356 363 archive_cache.objectstore.bucket_shards = 8
357 364
358 365 ; a top-level bucket to put all other shards in
359 366 ; objects will be stored in rhodecode-archive-cache/shard-N based on the bucket_shards number
360 367 archive_cache.objectstore.bucket = rhodecode-archive-cache
361 368
362 369 ; if true, this cache will try to retry with retry_attempts=N times waiting retry_backoff time
363 370 archive_cache.objectstore.retry = false
364 371
365 372 ; number of seconds to wait for next try using retry
366 373 archive_cache.objectstore.retry_backoff = 1
367 374
368 375 ; how many tries do do a retry fetch from this backend
369 376 archive_cache.objectstore.retry_attempts = 10
370 377
371 378 ; Default is $cache_dir/archive_cache if not set
372 379 ; Generated repo archives will be cached at this location
373 380 ; and served from the cache during subsequent requests for the same archive of
374 381 ; the repository. This path is important to be shared across filesystems and with
375 382 ; RhodeCode and vcsserver
376 383 archive_cache.filesystem.store_dir = /var/opt/rhodecode_data/archive_cache
377 384
378 385 ; The limit in GB sets how much data we cache before recycling last used, defaults to 10 gb
379 386 archive_cache.filesystem.cache_size_gb = 1
380 387
381 388 ; Eviction policy used to clear out after cache_size_gb limit is reached
382 389 archive_cache.filesystem.eviction_policy = least-recently-stored
383 390
384 391 ; By default cache uses sharding technique, this specifies how many shards are there
385 392 ; default is 8 shards
386 393 archive_cache.filesystem.cache_shards = 8
387 394
388 395 ; if true, this cache will try to retry with retry_attempts=N times waiting retry_backoff time
389 396 archive_cache.filesystem.retry = false
390 397
391 398 ; number of seconds to wait for next try using retry
392 399 archive_cache.filesystem.retry_backoff = 1
393 400
394 401 ; how many tries do do a retry fetch from this backend
395 402 archive_cache.filesystem.retry_attempts = 10
396 403
397 404
398 405 ; #############
399 406 ; CELERY CONFIG
400 407 ; #############
401 408
402 409 ; manually run celery: /path/to/celery worker --task-events --beat --app rhodecode.lib.celerylib.loader --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler --loglevel DEBUG --ini /path/to/rhodecode.ini
403 410
404 411 use_celery = true
405 412
406 413 ; path to store schedule database
407 414 #celerybeat-schedule.path =
408 415
409 416 ; connection url to the message broker (default redis)
410 417 celery.broker_url = redis://redis:6379/8
411 418
412 419 ; results backend to get results for (default redis)
413 420 celery.result_backend = redis://redis:6379/8
414 421
415 422 ; rabbitmq example
416 423 #celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
417 424
418 425 ; maximum tasks to execute before worker restart
419 426 celery.max_tasks_per_child = 20
420 427
421 428 ; tasks will never be sent to the queue, but executed locally instead.
422 429 celery.task_always_eager = false
423 430
424 431 ; #############
425 432 ; DOGPILE CACHE
426 433 ; #############
427 434
428 435 ; Default cache dir for caches. Putting this into a ramdisk can boost performance.
429 436 ; eg. /tmpfs/data_ramdisk, however this directory might require large amount of space
430 437 cache_dir = /var/opt/rhodecode_data
431 438
432 439 ; *********************************************
433 440 ; `sql_cache_short` cache for heavy SQL queries
434 441 ; Only supported backend is `memory_lru`
435 442 ; *********************************************
436 443 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
437 444 rc_cache.sql_cache_short.expiration_time = 30
438 445
439 446
440 447 ; *****************************************************
441 448 ; `cache_repo_longterm` cache for repo object instances
442 449 ; Only supported backend is `memory_lru`
443 450 ; *****************************************************
444 451 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
445 452 ; by default we use 30 Days, cache is still invalidated on push
446 453 rc_cache.cache_repo_longterm.expiration_time = 2592000
447 454 ; max items in LRU cache, set to smaller number to save memory, and expire last used caches
448 455 rc_cache.cache_repo_longterm.max_size = 10000
449 456
450 457
451 458 ; *********************************************
452 459 ; `cache_general` cache for general purpose use
453 460 ; for simplicity use rc.file_namespace backend,
454 461 ; for performance and scale use rc.redis
455 462 ; *********************************************
456 463 rc_cache.cache_general.backend = dogpile.cache.rc.file_namespace
457 464 rc_cache.cache_general.expiration_time = 43200
458 465 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
459 466 #rc_cache.cache_general.arguments.filename = /tmp/cache_general_db
460 467
461 468 ; alternative `cache_general` redis backend with distributed lock
462 469 #rc_cache.cache_general.backend = dogpile.cache.rc.redis
463 470 #rc_cache.cache_general.expiration_time = 300
464 471
465 472 ; redis_expiration_time needs to be greater then expiration_time
466 473 #rc_cache.cache_general.arguments.redis_expiration_time = 7200
467 474
468 475 #rc_cache.cache_general.arguments.host = localhost
469 476 #rc_cache.cache_general.arguments.port = 6379
470 477 #rc_cache.cache_general.arguments.db = 0
471 478 #rc_cache.cache_general.arguments.socket_timeout = 30
472 479 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
473 480 #rc_cache.cache_general.arguments.distributed_lock = true
474 481
475 482 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
476 483 #rc_cache.cache_general.arguments.lock_auto_renewal = true
477 484
478 485 ; *************************************************
479 486 ; `cache_perms` cache for permission tree, auth TTL
480 487 ; for simplicity use rc.file_namespace backend,
481 488 ; for performance and scale use rc.redis
482 489 ; *************************************************
483 490 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
484 491 rc_cache.cache_perms.expiration_time = 3600
485 492 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
486 493 #rc_cache.cache_perms.arguments.filename = /tmp/cache_perms_db
487 494
488 495 ; alternative `cache_perms` redis backend with distributed lock
489 496 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
490 497 #rc_cache.cache_perms.expiration_time = 300
491 498
492 499 ; redis_expiration_time needs to be greater then expiration_time
493 500 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
494 501
495 502 #rc_cache.cache_perms.arguments.host = localhost
496 503 #rc_cache.cache_perms.arguments.port = 6379
497 504 #rc_cache.cache_perms.arguments.db = 0
498 505 #rc_cache.cache_perms.arguments.socket_timeout = 30
499 506 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
500 507 #rc_cache.cache_perms.arguments.distributed_lock = true
501 508
502 509 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
503 510 #rc_cache.cache_perms.arguments.lock_auto_renewal = true
504 511
505 512 ; ***************************************************
506 513 ; `cache_repo` cache for file tree, Readme, RSS FEEDS
507 514 ; for simplicity use rc.file_namespace backend,
508 515 ; for performance and scale use rc.redis
509 516 ; ***************************************************
510 517 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
511 518 rc_cache.cache_repo.expiration_time = 2592000
512 519 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
513 520 #rc_cache.cache_repo.arguments.filename = /tmp/cache_repo_db
514 521
515 522 ; alternative `cache_repo` redis backend with distributed lock
516 523 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
517 524 #rc_cache.cache_repo.expiration_time = 2592000
518 525
519 526 ; redis_expiration_time needs to be greater then expiration_time
520 527 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
521 528
522 529 #rc_cache.cache_repo.arguments.host = localhost
523 530 #rc_cache.cache_repo.arguments.port = 6379
524 531 #rc_cache.cache_repo.arguments.db = 1
525 532 #rc_cache.cache_repo.arguments.socket_timeout = 30
526 533 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
527 534 #rc_cache.cache_repo.arguments.distributed_lock = true
528 535
529 536 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
530 537 #rc_cache.cache_repo.arguments.lock_auto_renewal = true
531 538
532 539 ; ##############
533 540 ; BEAKER SESSION
534 541 ; ##############
535 542
536 543 ; beaker.session.type is type of storage options for the logged users sessions. Current allowed
537 544 ; types are file, ext:redis, ext:database, ext:memcached
538 545 ; Fastest ones are ext:redis and ext:database, DO NOT use memory type for session
539 546 #beaker.session.type = file
540 547 #beaker.session.data_dir = %(here)s/data/sessions
541 548
542 549 ; Redis based sessions
543 550 beaker.session.type = ext:redis
544 551 beaker.session.url = redis://redis:6379/2
545 552
546 553 ; DB based session, fast, and allows easy management over logged in users
547 554 #beaker.session.type = ext:database
548 555 #beaker.session.table_name = db_session
549 556 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
550 557 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
551 558 #beaker.session.sa.pool_recycle = 3600
552 559 #beaker.session.sa.echo = false
553 560
554 561 beaker.session.key = rhodecode
555 562 beaker.session.secret = develop-rc-uytcxaz
556 563 beaker.session.lock_dir = /data_ramdisk/lock
557 564
558 565 ; Secure encrypted cookie. Requires AES and AES python libraries
559 566 ; you must disable beaker.session.secret to use this
560 567 #beaker.session.encrypt_key = key_for_encryption
561 568 #beaker.session.validate_key = validation_key
562 569
563 570 ; Sets session as invalid (also logging out user) if it haven not been
564 571 ; accessed for given amount of time in seconds
565 572 beaker.session.timeout = 2592000
566 573 beaker.session.httponly = true
567 574
568 575 ; Path to use for the cookie. Set to prefix if you use prefix middleware
569 576 #beaker.session.cookie_path = /custom_prefix
570 577
571 578 ; Set https secure cookie
572 579 beaker.session.secure = false
573 580
574 581 ; default cookie expiration time in seconds, set to `true` to set expire
575 582 ; at browser close
576 583 #beaker.session.cookie_expires = 3600
577 584
578 585 ; #############################
579 586 ; SEARCH INDEXING CONFIGURATION
580 587 ; #############################
581 588
582 589 ; Full text search indexer is available in rhodecode-tools under
583 590 ; `rhodecode-tools index` command
584 591
585 592 ; WHOOSH Backend, doesn't require additional services to run
586 593 ; it works good with few dozen repos
587 594 search.module = rhodecode.lib.index.whoosh
588 595 search.location = %(here)s/data/index
589 596
590 597 ; ####################
591 598 ; CHANNELSTREAM CONFIG
592 599 ; ####################
593 600
594 601 ; channelstream enables persistent connections and live notification
595 602 ; in the system. It's also used by the chat system
596 603
597 604 channelstream.enabled = true
598 605
599 606 ; server address for channelstream server on the backend
600 607 channelstream.server = channelstream:9800
601 608
602 609 ; location of the channelstream server from outside world
603 610 ; use ws:// for http or wss:// for https. This address needs to be handled
604 611 ; by external HTTP server such as Nginx or Apache
605 612 ; see Nginx/Apache configuration examples in our docs
606 613 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
607 614 channelstream.secret = ENV_GENERATED
608 615 channelstream.history.location = /var/opt/rhodecode_data/channelstream_history
609 616
610 617 ; Internal application path that Javascript uses to connect into.
611 618 ; If you use proxy-prefix the prefix should be added before /_channelstream
612 619 channelstream.proxy_path = /_channelstream
613 620
614 621
615 622 ; ##############################
616 623 ; MAIN RHODECODE DATABASE CONFIG
617 624 ; ##############################
618 625
619 626 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
620 627 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
621 628 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode?charset=utf8
622 629 ; pymysql is an alternative driver for MySQL, use in case of problems with default one
623 630 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
624 631
625 632 sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
626 633
627 634 ; see sqlalchemy docs for other advanced settings
628 635 ; print the sql statements to output
629 636 sqlalchemy.db1.echo = false
630 637
631 638 ; recycle the connections after this amount of seconds
632 639 sqlalchemy.db1.pool_recycle = 3600
633 640
634 641 ; the number of connections to keep open inside the connection pool.
635 642 ; 0 indicates no limit
636 643 ; the general calculus with gevent is:
637 644 ; if your system allows 500 concurrent greenlets (max_connections) that all do database access,
638 645 ; then increase pool size + max overflow so that they add up to 500.
639 646 #sqlalchemy.db1.pool_size = 5
640 647
641 648 ; The number of connections to allow in connection pool "overflow", that is
642 649 ; connections that can be opened above and beyond the pool_size setting,
643 650 ; which defaults to five.
644 651 #sqlalchemy.db1.max_overflow = 10
645 652
646 653 ; Connection check ping, used to detect broken database connections
647 654 ; could be enabled to better handle cases if MySQL has gone away errors
648 655 #sqlalchemy.db1.ping_connection = true
649 656
650 657 ; ##########
651 658 ; VCS CONFIG
652 659 ; ##########
653 660 vcs.server.enable = true
654 661 vcs.server = vcsserver:10010
655 662
656 663 ; Web server connectivity protocol, responsible for web based VCS operations
657 664 ; Available protocols are:
658 665 ; `http` - use http-rpc backend (default)
659 666 vcs.server.protocol = http
660 667
661 668 ; Push/Pull operations protocol, available options are:
662 669 ; `http` - use http-rpc backend (default)
663 670 vcs.scm_app_implementation = http
664 671
665 672 ; Push/Pull operations hooks protocol, available options are:
666 673 ; `http` - use http-rpc backend (default)
667 674 ; `celery` - use celery based hooks
668 675 #DEPRECATED:vcs.hooks.protocol = http
669 676 vcs.hooks.protocol.v2 = celery
670 677
671 678 ; Host on which this instance is listening for hooks. vcsserver will call this host to pull/push hooks so it should be
672 679 ; accessible via network.
673 680 ; Use vcs.hooks.host = "*" to bind to current hostname (for Docker)
674 681 vcs.hooks.host = *
675 682
676 683 ; Start VCSServer with this instance as a subprocess, useful for development
677 684 vcs.start_server = false
678 685
679 686 ; List of enabled VCS backends, available options are:
680 687 ; `hg` - mercurial
681 688 ; `git` - git
682 689 ; `svn` - subversion
683 690 vcs.backends = hg, git, svn
684 691
685 692 ; Wait this number of seconds before killing connection to the vcsserver
686 693 vcs.connection_timeout = 3600
687 694
688 695 ; Cache flag to cache vcsserver remote calls locally
689 696 ; It uses cache_region `cache_repo`
690 697 vcs.methods.cache = true
691 698
692 699 ; Filesystem location where Git lfs objects should be stored
693 700 vcs.git.lfs.storage_location = /var/opt/rhodecode_repo_store/.cache/git_lfs_store
694 701
695 702 ; Filesystem location where Mercurial largefile objects should be stored
696 703 vcs.hg.largefiles.storage_location = /var/opt/rhodecode_repo_store/.cache/hg_largefiles_store
697 704
698 705 ; ####################################################
699 706 ; Subversion proxy support (mod_dav_svn)
700 707 ; Maps RhodeCode repo groups into SVN paths for Apache
701 708 ; ####################################################
702 709
703 710 ; Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
704 711 ; Set a numeric version for your current SVN e.g 1.8, or 1.12
705 712 ; Legacy available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
706 713 #vcs.svn.compatible_version = 1.8
707 714
708 715 ; Redis connection settings for svn integrations logic
709 716 ; This connection string needs to be the same on ce and vcsserver
710 717 vcs.svn.redis_conn = redis://redis:6379/0
711 718
712 719 ; Enable SVN proxy of requests over HTTP
713 720 vcs.svn.proxy.enabled = true
714 721
715 722 ; host to connect to running SVN subsystem
716 723 vcs.svn.proxy.host = http://svn:8090
717 724
718 725 ; Enable or disable the config file generation.
719 726 svn.proxy.generate_config = true
720 727
721 728 ; Generate config file with `SVNListParentPath` set to `On`.
722 729 svn.proxy.list_parent_path = true
723 730
724 731 ; Set location and file name of generated config file.
725 732 svn.proxy.config_file_path = /etc/rhodecode/conf/svn/mod_dav_svn.conf
726 733
727 734 ; alternative mod_dav config template. This needs to be a valid mako template
728 735 ; Example template can be found in the source code:
729 736 ; rhodecode/apps/svn_support/templates/mod-dav-svn.conf.mako
730 737 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
731 738
732 739 ; Used as a prefix to the `Location` block in the generated config file.
733 740 ; In most cases it should be set to `/`.
734 741 svn.proxy.location_root = /
735 742
736 743 ; Command to reload the mod dav svn configuration on change.
737 744 ; Example: `/etc/init.d/apache2 reload` or /home/USER/apache_reload.sh
738 745 ; Make sure user who runs RhodeCode process is allowed to reload Apache
739 746 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
740 747
741 748 ; If the timeout expires before the reload command finishes, the command will
742 749 ; be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
743 750 #svn.proxy.reload_timeout = 10
744 751
745 752 ; ####################
746 753 ; SSH Support Settings
747 754 ; ####################
748 755
749 756 ; Defines if a custom authorized_keys file should be created and written on
750 757 ; any change user ssh keys. Setting this to false also disables possibility
751 758 ; of adding SSH keys by users from web interface. Super admins can still
752 759 ; manage SSH Keys.
753 760 ssh.generate_authorized_keyfile = true
754 761
755 762 ; Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
756 763 # ssh.authorized_keys_ssh_opts =
757 764
758 765 ; Path to the authorized_keys file where the generate entries are placed.
759 766 ; It is possible to have multiple key files specified in `sshd_config` e.g.
760 767 ; AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
761 768 ssh.authorized_keys_file_path = /etc/rhodecode/conf/ssh/authorized_keys_rhodecode
762 769
763 770 ; Command to execute the SSH wrapper. The binary is available in the
764 771 ; RhodeCode installation directory.
765 772 ; legacy: /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper
766 773 ; new rewrite: /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper-v2
767 774 #DEPRECATED: ssh.wrapper_cmd = /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper
768 775 ssh.wrapper_cmd.v2 = /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper-v2
769 776
770 777 ; Allow shell when executing the ssh-wrapper command
771 778 ssh.wrapper_cmd_allow_shell = false
772 779
773 780 ; Enables logging, and detailed output send back to the client during SSH
774 781 ; operations. Useful for debugging, shouldn't be used in production.
775 782 ssh.enable_debug_logging = true
776 783
777 784 ; Paths to binary executable, by default they are the names, but we can
778 785 ; override them if we want to use a custom one
779 786 ssh.executable.hg = /usr/local/bin/rhodecode_bin/vcs_bin/hg
780 787 ssh.executable.git = /usr/local/bin/rhodecode_bin/vcs_bin/git
781 788 ssh.executable.svn = /usr/local/bin/rhodecode_bin/vcs_bin/svnserve
782 789
783 790 ; Enables SSH key generator web interface. Disabling this still allows users
784 791 ; to add their own keys.
785 792 ssh.enable_ui_key_generator = true
786 793
787 794 ; Statsd client config, this is used to send metrics to statsd
788 795 ; We recommend setting statsd_exported and scrape them using Prometheus
789 796 #statsd.enabled = false
790 797 #statsd.statsd_host = 0.0.0.0
791 798 #statsd.statsd_port = 8125
792 799 #statsd.statsd_prefix =
793 800 #statsd.statsd_ipv6 = false
794 801
795 802 ; configure logging automatically at server startup set to false
796 803 ; to use the below custom logging config.
797 804 ; RC_LOGGING_FORMATTER
798 805 ; RC_LOGGING_LEVEL
799 806 ; env variables can control the settings for logging in case of autoconfigure
800 807
801 808 #logging.autoconfigure = true
802 809
803 810 ; specify your own custom logging config file to configure logging
804 811 #logging.logging_conf_file = /path/to/custom_logging.ini
805 812
806 813 ; Dummy marker to add new entries after.
807 814 ; Add any custom entries below. Please don't remove this marker.
808 815 custom.conf = 1
809 816
810 817
811 818 ; #####################
812 819 ; LOGGING CONFIGURATION
813 820 ; #####################
814 821
815 822 [loggers]
816 823 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
817 824
818 825 [handlers]
819 826 keys = console, console_sql
820 827
821 828 [formatters]
822 829 keys = generic, json, color_formatter, color_formatter_sql
823 830
824 831 ; #######
825 832 ; LOGGERS
826 833 ; #######
827 834 [logger_root]
828 835 level = NOTSET
829 836 handlers = console
830 837
831 838 [logger_sqlalchemy]
832 839 level = INFO
833 840 handlers = console_sql
834 841 qualname = sqlalchemy.engine
835 842 propagate = 0
836 843
837 844 [logger_beaker]
838 845 level = DEBUG
839 846 handlers =
840 847 qualname = beaker.container
841 848 propagate = 1
842 849
843 850 [logger_rhodecode]
844 851 level = DEBUG
845 852 handlers =
846 853 qualname = rhodecode
847 854 propagate = 1
848 855
849 856 [logger_ssh_wrapper]
850 857 level = DEBUG
851 858 handlers =
852 859 qualname = ssh_wrapper
853 860 propagate = 1
854 861
855 862 [logger_celery]
856 863 level = DEBUG
857 864 handlers =
858 865 qualname = celery
859 866
860 867
861 868 ; ########
862 869 ; HANDLERS
863 870 ; ########
864 871
865 872 [handler_console]
866 873 class = StreamHandler
867 874 args = (sys.stderr, )
868 875 level = DEBUG
869 876 ; To enable JSON formatted logs replace 'generic/color_formatter' with 'json'
870 877 ; This allows sending properly formatted logs to grafana loki or elasticsearch
871 878 formatter = color_formatter
872 879
873 880 [handler_console_sql]
874 881 ; "level = DEBUG" logs SQL queries and results.
875 882 ; "level = INFO" logs SQL queries.
876 883 ; "level = WARN" logs neither. (Recommended for production systems.)
877 884 class = StreamHandler
878 885 args = (sys.stderr, )
879 886 level = WARN
880 887 ; To enable JSON formatted logs replace 'generic/color_formatter_sql' with 'json'
881 888 ; This allows sending properly formatted logs to grafana loki or elasticsearch
882 889 formatter = color_formatter_sql
883 890
884 891 ; ##########
885 892 ; FORMATTERS
886 893 ; ##########
887 894
888 895 [formatter_generic]
889 896 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
890 897 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
891 898 datefmt = %Y-%m-%d %H:%M:%S
892 899
893 900 [formatter_color_formatter]
894 901 class = rhodecode.lib.logging_formatter.ColorFormatter
895 902 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
896 903 datefmt = %Y-%m-%d %H:%M:%S
897 904
898 905 [formatter_color_formatter_sql]
899 906 class = rhodecode.lib.logging_formatter.ColorFormatterSql
900 907 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
901 908 datefmt = %Y-%m-%d %H:%M:%S
902 909
903 910 [formatter_json]
904 911 format = %(timestamp)s %(levelname)s %(name)s %(message)s %(req_id)s
905 912 class = rhodecode.lib._vendor.jsonlogger.JsonFormatter
@@ -1,873 +1,880 b''
1 1
2 2 ; #########################################
3 3 ; RHODECODE COMMUNITY EDITION CONFIGURATION
4 4 ; #########################################
5 5
6 6 [DEFAULT]
7 7 ; Debug flag sets all loggers to debug, and enables request tracking
8 8 debug = false
9 9
10 10 ; ########################################################################
11 11 ; EMAIL CONFIGURATION
12 12 ; These settings will be used by the RhodeCode mailing system
13 13 ; ########################################################################
14 14
15 15 ; prefix all emails subjects with given prefix, helps filtering out emails
16 16 #email_prefix = [RhodeCode]
17 17
18 18 ; email FROM address all mails will be sent
19 19 #app_email_from = rhodecode-noreply@localhost
20 20
21 21 #smtp_server = mail.server.com
22 22 #smtp_username =
23 23 #smtp_password =
24 24 #smtp_port =
25 25 #smtp_use_tls = false
26 26 #smtp_use_ssl = true
27 27
28 28 [server:main]
29 29 ; COMMON HOST/IP CONFIG, This applies mostly to develop setup,
30 30 ; Host port for gunicorn are controlled by gunicorn_conf.py
31 31 host = 127.0.0.1
32 32 port = 10020
33 33
34 34
35 35 ; ###########################
36 36 ; GUNICORN APPLICATION SERVER
37 37 ; ###########################
38 38
39 39 ; run with gunicorn --config gunicorn_conf.py --paste rhodecode.ini
40 40
41 41 ; Module to use, this setting shouldn't be changed
42 42 use = egg:gunicorn#main
43 43
44 44 ; Prefix middleware for RhodeCode.
45 45 ; recommended when using proxy setup.
46 46 ; allows to set RhodeCode under a prefix in server.
47 47 ; eg https://server.com/custom_prefix. Enable `filter-with =` option below as well.
48 48 ; And set your prefix like: `prefix = /custom_prefix`
49 49 ; be sure to also set beaker.session.cookie_path = /custom_prefix if you need
50 50 ; to make your cookies only work on prefix url
51 51 [filter:proxy-prefix]
52 52 use = egg:PasteDeploy#prefix
53 53 prefix = /
54 54
55 55 [app:main]
56 56 ; The %(here)s variable will be replaced with the absolute path of parent directory
57 57 ; of this file
58 58 ; Each option in the app:main can be override by an environmental variable
59 59 ;
60 60 ;To override an option:
61 61 ;
62 62 ;RC_<KeyName>
63 63 ;Everything should be uppercase, . and - should be replaced by _.
64 64 ;For example, if you have these configuration settings:
65 65 ;rc_cache.repo_object.backend = foo
66 66 ;can be overridden by
67 67 ;export RC_CACHE_REPO_OBJECT_BACKEND=foo
68 68
69 69 use = egg:rhodecode-enterprise-ce
70 70
71 71 ; enable proxy prefix middleware, defined above
72 72 #filter-with = proxy-prefix
73 73
74 74 ; encryption key used to encrypt social plugin tokens,
75 75 ; remote_urls with credentials etc, if not set it defaults to
76 76 ; `beaker.session.secret`
77 77 #rhodecode.encrypted_values.secret =
78 78
79 79 ; decryption strict mode (enabled by default). It controls if decryption raises
80 80 ; `SignatureVerificationError` in case of wrong key, or damaged encryption data.
81 81 #rhodecode.encrypted_values.strict = false
82 82
83 83 ; Pick algorithm for encryption. Either fernet (more secure) or aes (default)
84 84 ; fernet is safer, and we strongly recommend switching to it.
85 85 ; Due to backward compatibility aes is used as default.
86 86 #rhodecode.encrypted_values.algorithm = fernet
87 87
88 88 ; Return gzipped responses from RhodeCode (static files/application)
89 89 gzip_responses = false
90 90
91 91 ; Auto-generate javascript routes file on startup
92 92 generate_js_files = false
93 93
94 94 ; System global default language.
95 95 ; All available languages: en (default), be, de, es, fr, it, ja, pl, pt, ru, zh
96 96 lang = en
97 97
98 98 ; Perform a full repository scan and import on each server start.
99 99 ; Settings this to true could lead to very long startup time.
100 100 startup.import_repos = false
101 101
102 102 ; URL at which the application is running. This is used for Bootstrapping
103 103 ; requests in context when no web request is available. Used in ishell, or
104 104 ; SSH calls. Set this for events to receive proper url for SSH calls.
105 105 app.base_url = http://rhodecode.local
106 106
107 107 ; Host at which the Service API is running.
108 108 app.service_api.host = http://rhodecode.local:10020
109 109
110 110 ; Secret for Service API authentication.
111 111 app.service_api.token =
112 112
113 113 ; Unique application ID. Should be a random unique string for security.
114 114 app_instance_uuid = rc-production
115 115
116 116 ; Cut off limit for large diffs (size in bytes). If overall diff size on
117 117 ; commit, or pull request exceeds this limit this diff will be displayed
118 118 ; partially. E.g 512000 == 512Kb
119 119 cut_off_limit_diff = 512000
120 120
121 121 ; Cut off limit for large files inside diffs (size in bytes). Each individual
122 122 ; file inside diff which exceeds this limit will be displayed partially.
123 123 ; E.g 128000 == 128Kb
124 124 cut_off_limit_file = 128000
125 125
126 126 ; Use cached version of vcs repositories everywhere. Recommended to be `true`
127 127 vcs_full_cache = true
128 128
129 129 ; Force https in RhodeCode, fixes https redirects, assumes it's always https.
130 130 ; Normally this is controlled by proper flags sent from http server such as Nginx or Apache
131 131 force_https = false
132 132
133 133 ; use Strict-Transport-Security headers
134 134 use_htsts = false
135 135
136 136 ; Set to true if your repos are exposed using the dumb protocol
137 137 git_update_server_info = false
138 138
139 139 ; RSS/ATOM feed options
140 140 rss_cut_off_limit = 256000
141 141 rss_items_per_page = 10
142 142 rss_include_diff = false
143 143
144 144 ; gist URL alias, used to create nicer urls for gist. This should be an
145 145 ; url that does rewrites to _admin/gists/{gistid}.
146 146 ; example: http://gist.rhodecode.org/{gistid}. Empty means use the internal
147 147 ; RhodeCode url, ie. http[s]://rhodecode.server/_admin/gists/{gistid}
148 148 gist_alias_url =
149 149
150 150 ; List of views (using glob pattern syntax) that AUTH TOKENS could be
151 151 ; used for access.
152 152 ; Adding ?auth_token=TOKEN_HASH to the url authenticates this request as if it
153 153 ; came from the the logged in user who own this authentication token.
154 154 ; Additionally @TOKEN syntax can be used to bound the view to specific
155 155 ; authentication token. Such view would be only accessible when used together
156 156 ; with this authentication token
157 157 ; list of all views can be found under `/_admin/permissions/auth_token_access`
158 158 ; The list should be "," separated and on a single line.
159 159 ; Most common views to enable:
160 160
161 161 # RepoCommitsView:repo_commit_download
162 162 # RepoCommitsView:repo_commit_patch
163 163 # RepoCommitsView:repo_commit_raw
164 164 # RepoCommitsView:repo_commit_raw@TOKEN
165 165 # RepoFilesView:repo_files_diff
166 166 # RepoFilesView:repo_archivefile
167 167 # RepoFilesView:repo_file_raw
168 168 # GistView:*
169 169 api_access_controllers_whitelist =
170 170
171 171 ; Default encoding used to convert from and to unicode
172 172 ; can be also a comma separated list of encoding in case of mixed encodings
173 173 default_encoding = UTF-8
174 174
175 175 ; instance-id prefix
176 176 ; a prefix key for this instance used for cache invalidation when running
177 177 ; multiple instances of RhodeCode, make sure it's globally unique for
178 178 ; all running RhodeCode instances. Leave empty if you don't use it
179 179 instance_id =
180 180
181 181 ; Fallback authentication plugin. Set this to a plugin ID to force the usage
182 182 ; of an authentication plugin also if it is disabled by it's settings.
183 183 ; This could be useful if you are unable to log in to the system due to broken
184 184 ; authentication settings. Then you can enable e.g. the internal RhodeCode auth
185 185 ; module to log in again and fix the settings.
186 186 ; Available builtin plugin IDs (hash is part of the ID):
187 187 ; egg:rhodecode-enterprise-ce#rhodecode
188 188 ; egg:rhodecode-enterprise-ce#pam
189 189 ; egg:rhodecode-enterprise-ce#ldap
190 190 ; egg:rhodecode-enterprise-ce#jasig_cas
191 191 ; egg:rhodecode-enterprise-ce#headers
192 192 ; egg:rhodecode-enterprise-ce#crowd
193 193
194 194 #rhodecode.auth_plugin_fallback = egg:rhodecode-enterprise-ce#rhodecode
195 195
196 196 ; Flag to control loading of legacy plugins in py:/path format
197 197 auth_plugin.import_legacy_plugins = true
198 198
199 199 ; alternative return HTTP header for failed authentication. Default HTTP
200 200 ; response is 401 HTTPUnauthorized. Currently HG clients have troubles with
201 201 ; handling that causing a series of failed authentication calls.
202 202 ; Set this variable to 403 to return HTTPForbidden, or any other HTTP code
203 203 ; This will be served instead of default 401 on bad authentication
204 204 auth_ret_code =
205 205
206 206 ; use special detection method when serving auth_ret_code, instead of serving
207 207 ; ret_code directly, use 401 initially (Which triggers credentials prompt)
208 208 ; and then serve auth_ret_code to clients
209 209 auth_ret_code_detection = false
210 210
211 211 ; locking return code. When repository is locked return this HTTP code. 2XX
212 212 ; codes don't break the transactions while 4XX codes do
213 213 lock_ret_code = 423
214 214
215 215 ; Filesystem location were repositories should be stored
216 216 repo_store.path = /var/opt/rhodecode_repo_store
217 217
218 218 ; allows to setup custom hooks in settings page
219 219 allow_custom_hooks_settings = true
220 220
221 221 ; Generated license token required for EE edition license.
222 222 ; New generated token value can be found in Admin > settings > license page.
223 223 license_token =
224 224
225 225 ; This flag hides sensitive information on the license page such as token, and license data
226 226 license.hide_license_info = false
227 227
228 ; Import EE license from this license path
229 #license.import_path = %(here)s/rhodecode_enterprise.license
230
231 ; import license 'if-missing' or 'force' (always override)
232 ; if-missing means apply license if it doesn't exist. 'force' option always overrides it
233 license.import_path_mode = if-missing
234
228 235 ; supervisor connection uri, for managing supervisor and logs.
229 236 supervisor.uri =
230 237
231 238 ; supervisord group name/id we only want this RC instance to handle
232 239 supervisor.group_id = prod
233 240
234 241 ; Display extended labs settings
235 242 labs_settings_active = true
236 243
237 244 ; Custom exception store path, defaults to TMPDIR
238 245 ; This is used to store exception from RhodeCode in shared directory
239 246 #exception_tracker.store_path =
240 247
241 248 ; Send email with exception details when it happens
242 249 #exception_tracker.send_email = false
243 250
244 251 ; Comma separated list of recipients for exception emails,
245 252 ; e.g admin@rhodecode.com,devops@rhodecode.com
246 253 ; Can be left empty, then emails will be sent to ALL super-admins
247 254 #exception_tracker.send_email_recipients =
248 255
249 256 ; optional prefix to Add to email Subject
250 257 #exception_tracker.email_prefix = [RHODECODE ERROR]
251 258
252 259 ; NOTE: this setting IS DEPRECATED:
253 260 ; file_store backend is always enabled
254 261 #file_store.enabled = true
255 262
256 263 ; NOTE: this setting IS DEPRECATED:
257 264 ; file_store.backend = X -> use `file_store.backend.type = filesystem_v2` instead
258 265 ; Storage backend, available options are: local
259 266 #file_store.backend = local
260 267
261 268 ; NOTE: this setting IS DEPRECATED:
262 269 ; file_store.storage_path = X -> use `file_store.filesystem_v2.storage_path = X` instead
263 270 ; path to store the uploaded binaries and artifacts
264 271 #file_store.storage_path = /var/opt/rhodecode_data/file_store
265 272
266 273 ; Artifacts file-store, is used to store comment attachments and artifacts uploads.
267 274 ; file_store backend type: filesystem_v1, filesystem_v2 or objectstore (s3-based) are available as options
268 275 ; filesystem_v1 is backwards compat with pre 5.1 storage changes
269 276 ; new installations should choose filesystem_v2 or objectstore (s3-based), pick filesystem when migrating from
270 277 ; previous installations to keep the artifacts without a need of migration
271 278 #file_store.backend.type = filesystem_v2
272 279
273 280 ; filesystem options...
274 281 #file_store.filesystem_v1.storage_path = /var/opt/rhodecode_data/artifacts_file_store
275 282
276 283 ; filesystem_v2 options...
277 284 #file_store.filesystem_v2.storage_path = /var/opt/rhodecode_data/artifacts_file_store
278 285 #file_store.filesystem_v2.shards = 8
279 286
280 287 ; objectstore options...
281 288 ; url for s3 compatible storage that allows to upload artifacts
282 289 ; e.g http://minio:9000
283 290 #file_store.backend.type = objectstore
284 291 #file_store.objectstore.url = http://s3-minio:9000
285 292
286 293 ; a top-level bucket to put all other shards in
287 294 ; objects will be stored in rhodecode-file-store/shard-N based on the bucket_shards number
288 295 #file_store.objectstore.bucket = rhodecode-file-store
289 296
290 297 ; number of sharded buckets to create to distribute archives across
291 298 ; default is 8 shards
292 299 #file_store.objectstore.bucket_shards = 8
293 300
294 301 ; key for s3 auth
295 302 #file_store.objectstore.key = s3admin
296 303
297 304 ; secret for s3 auth
298 305 #file_store.objectstore.secret = s3secret4
299 306
300 307 ;region for s3 storage
301 308 #file_store.objectstore.region = eu-central-1
302 309
303 310 ; Redis url to acquire/check generation of archives locks
304 311 archive_cache.locking.url = redis://redis:6379/1
305 312
306 313 ; Storage backend, only 'filesystem' and 'objectstore' are available now
307 314 archive_cache.backend.type = filesystem
308 315
309 316 ; url for s3 compatible storage that allows to upload artifacts
310 317 ; e.g http://minio:9000
311 318 archive_cache.objectstore.url = http://s3-minio:9000
312 319
313 320 ; key for s3 auth
314 321 archive_cache.objectstore.key = key
315 322
316 323 ; secret for s3 auth
317 324 archive_cache.objectstore.secret = secret
318 325
319 326 ;region for s3 storage
320 327 archive_cache.objectstore.region = eu-central-1
321 328
322 329 ; number of sharded buckets to create to distribute archives across
323 330 ; default is 8 shards
324 331 archive_cache.objectstore.bucket_shards = 8
325 332
326 333 ; a top-level bucket to put all other shards in
327 334 ; objects will be stored in rhodecode-archive-cache/shard-N based on the bucket_shards number
328 335 archive_cache.objectstore.bucket = rhodecode-archive-cache
329 336
330 337 ; if true, this cache will try to retry with retry_attempts=N times waiting retry_backoff time
331 338 archive_cache.objectstore.retry = false
332 339
333 340 ; number of seconds to wait for next try using retry
334 341 archive_cache.objectstore.retry_backoff = 1
335 342
336 343 ; how many tries do do a retry fetch from this backend
337 344 archive_cache.objectstore.retry_attempts = 10
338 345
339 346 ; Default is $cache_dir/archive_cache if not set
340 347 ; Generated repo archives will be cached at this location
341 348 ; and served from the cache during subsequent requests for the same archive of
342 349 ; the repository. This path is important to be shared across filesystems and with
343 350 ; RhodeCode and vcsserver
344 351 archive_cache.filesystem.store_dir = /var/opt/rhodecode_data/archive_cache
345 352
346 353 ; The limit in GB sets how much data we cache before recycling last used, defaults to 10 gb
347 354 archive_cache.filesystem.cache_size_gb = 40
348 355
349 356 ; Eviction policy used to clear out after cache_size_gb limit is reached
350 357 archive_cache.filesystem.eviction_policy = least-recently-stored
351 358
352 359 ; By default cache uses sharding technique, this specifies how many shards are there
353 360 ; default is 8 shards
354 361 archive_cache.filesystem.cache_shards = 8
355 362
356 363 ; if true, this cache will try to retry with retry_attempts=N times waiting retry_backoff time
357 364 archive_cache.filesystem.retry = false
358 365
359 366 ; number of seconds to wait for next try using retry
360 367 archive_cache.filesystem.retry_backoff = 1
361 368
362 369 ; how many tries do do a retry fetch from this backend
363 370 archive_cache.filesystem.retry_attempts = 10
364 371
365 372
366 373 ; #############
367 374 ; CELERY CONFIG
368 375 ; #############
369 376
370 377 ; manually run celery: /path/to/celery worker --task-events --beat --app rhodecode.lib.celerylib.loader --scheduler rhodecode.lib.celerylib.scheduler.RcScheduler --loglevel DEBUG --ini /path/to/rhodecode.ini
371 378
372 379 use_celery = true
373 380
374 381 ; path to store schedule database
375 382 #celerybeat-schedule.path =
376 383
377 384 ; connection url to the message broker (default redis)
378 385 celery.broker_url = redis://redis:6379/8
379 386
380 387 ; results backend to get results for (default redis)
381 388 celery.result_backend = redis://redis:6379/8
382 389
383 390 ; rabbitmq example
384 391 #celery.broker_url = amqp://rabbitmq:qweqwe@localhost:5672/rabbitmqhost
385 392
386 393 ; maximum tasks to execute before worker restart
387 394 celery.max_tasks_per_child = 20
388 395
389 396 ; tasks will never be sent to the queue, but executed locally instead.
390 397 celery.task_always_eager = false
391 398
392 399 ; #############
393 400 ; DOGPILE CACHE
394 401 ; #############
395 402
396 403 ; Default cache dir for caches. Putting this into a ramdisk can boost performance.
397 404 ; eg. /tmpfs/data_ramdisk, however this directory might require large amount of space
398 405 cache_dir = /var/opt/rhodecode_data
399 406
400 407 ; *********************************************
401 408 ; `sql_cache_short` cache for heavy SQL queries
402 409 ; Only supported backend is `memory_lru`
403 410 ; *********************************************
404 411 rc_cache.sql_cache_short.backend = dogpile.cache.rc.memory_lru
405 412 rc_cache.sql_cache_short.expiration_time = 30
406 413
407 414
408 415 ; *****************************************************
409 416 ; `cache_repo_longterm` cache for repo object instances
410 417 ; Only supported backend is `memory_lru`
411 418 ; *****************************************************
412 419 rc_cache.cache_repo_longterm.backend = dogpile.cache.rc.memory_lru
413 420 ; by default we use 30 Days, cache is still invalidated on push
414 421 rc_cache.cache_repo_longterm.expiration_time = 2592000
415 422 ; max items in LRU cache, set to smaller number to save memory, and expire last used caches
416 423 rc_cache.cache_repo_longterm.max_size = 10000
417 424
418 425
419 426 ; *********************************************
420 427 ; `cache_general` cache for general purpose use
421 428 ; for simplicity use rc.file_namespace backend,
422 429 ; for performance and scale use rc.redis
423 430 ; *********************************************
424 431 rc_cache.cache_general.backend = dogpile.cache.rc.file_namespace
425 432 rc_cache.cache_general.expiration_time = 43200
426 433 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
427 434 #rc_cache.cache_general.arguments.filename = /tmp/cache_general_db
428 435
429 436 ; alternative `cache_general` redis backend with distributed lock
430 437 #rc_cache.cache_general.backend = dogpile.cache.rc.redis
431 438 #rc_cache.cache_general.expiration_time = 300
432 439
433 440 ; redis_expiration_time needs to be greater then expiration_time
434 441 #rc_cache.cache_general.arguments.redis_expiration_time = 7200
435 442
436 443 #rc_cache.cache_general.arguments.host = localhost
437 444 #rc_cache.cache_general.arguments.port = 6379
438 445 #rc_cache.cache_general.arguments.db = 0
439 446 #rc_cache.cache_general.arguments.socket_timeout = 30
440 447 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
441 448 #rc_cache.cache_general.arguments.distributed_lock = true
442 449
443 450 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
444 451 #rc_cache.cache_general.arguments.lock_auto_renewal = true
445 452
446 453 ; *************************************************
447 454 ; `cache_perms` cache for permission tree, auth TTL
448 455 ; for simplicity use rc.file_namespace backend,
449 456 ; for performance and scale use rc.redis
450 457 ; *************************************************
451 458 rc_cache.cache_perms.backend = dogpile.cache.rc.file_namespace
452 459 rc_cache.cache_perms.expiration_time = 3600
453 460 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
454 461 #rc_cache.cache_perms.arguments.filename = /tmp/cache_perms_db
455 462
456 463 ; alternative `cache_perms` redis backend with distributed lock
457 464 #rc_cache.cache_perms.backend = dogpile.cache.rc.redis
458 465 #rc_cache.cache_perms.expiration_time = 300
459 466
460 467 ; redis_expiration_time needs to be greater then expiration_time
461 468 #rc_cache.cache_perms.arguments.redis_expiration_time = 7200
462 469
463 470 #rc_cache.cache_perms.arguments.host = localhost
464 471 #rc_cache.cache_perms.arguments.port = 6379
465 472 #rc_cache.cache_perms.arguments.db = 0
466 473 #rc_cache.cache_perms.arguments.socket_timeout = 30
467 474 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
468 475 #rc_cache.cache_perms.arguments.distributed_lock = true
469 476
470 477 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
471 478 #rc_cache.cache_perms.arguments.lock_auto_renewal = true
472 479
473 480 ; ***************************************************
474 481 ; `cache_repo` cache for file tree, Readme, RSS FEEDS
475 482 ; for simplicity use rc.file_namespace backend,
476 483 ; for performance and scale use rc.redis
477 484 ; ***************************************************
478 485 rc_cache.cache_repo.backend = dogpile.cache.rc.file_namespace
479 486 rc_cache.cache_repo.expiration_time = 2592000
480 487 ; file cache store path. Defaults to `cache_dir =` value or tempdir if both values are not set
481 488 #rc_cache.cache_repo.arguments.filename = /tmp/cache_repo_db
482 489
483 490 ; alternative `cache_repo` redis backend with distributed lock
484 491 #rc_cache.cache_repo.backend = dogpile.cache.rc.redis
485 492 #rc_cache.cache_repo.expiration_time = 2592000
486 493
487 494 ; redis_expiration_time needs to be greater then expiration_time
488 495 #rc_cache.cache_repo.arguments.redis_expiration_time = 2678400
489 496
490 497 #rc_cache.cache_repo.arguments.host = localhost
491 498 #rc_cache.cache_repo.arguments.port = 6379
492 499 #rc_cache.cache_repo.arguments.db = 1
493 500 #rc_cache.cache_repo.arguments.socket_timeout = 30
494 501 ; more Redis options: https://dogpilecache.sqlalchemy.org/en/latest/api.html#redis-backends
495 502 #rc_cache.cache_repo.arguments.distributed_lock = true
496 503
497 504 ; auto-renew lock to prevent stale locks, slower but safer. Use only if problems happen
498 505 #rc_cache.cache_repo.arguments.lock_auto_renewal = true
499 506
500 507 ; ##############
501 508 ; BEAKER SESSION
502 509 ; ##############
503 510
504 511 ; beaker.session.type is type of storage options for the logged users sessions. Current allowed
505 512 ; types are file, ext:redis, ext:database, ext:memcached
506 513 ; Fastest ones are ext:redis and ext:database, DO NOT use memory type for session
507 514 #beaker.session.type = file
508 515 #beaker.session.data_dir = %(here)s/data/sessions
509 516
510 517 ; Redis based sessions
511 518 beaker.session.type = ext:redis
512 519 beaker.session.url = redis://redis:6379/2
513 520
514 521 ; DB based session, fast, and allows easy management over logged in users
515 522 #beaker.session.type = ext:database
516 523 #beaker.session.table_name = db_session
517 524 #beaker.session.sa.url = postgresql://postgres:secret@localhost/rhodecode
518 525 #beaker.session.sa.url = mysql://root:secret@127.0.0.1/rhodecode
519 526 #beaker.session.sa.pool_recycle = 3600
520 527 #beaker.session.sa.echo = false
521 528
522 529 beaker.session.key = rhodecode
523 530 beaker.session.secret = production-rc-uytcxaz
524 531 beaker.session.lock_dir = /data_ramdisk/lock
525 532
526 533 ; Secure encrypted cookie. Requires AES and AES python libraries
527 534 ; you must disable beaker.session.secret to use this
528 535 #beaker.session.encrypt_key = key_for_encryption
529 536 #beaker.session.validate_key = validation_key
530 537
531 538 ; Sets session as invalid (also logging out user) if it haven not been
532 539 ; accessed for given amount of time in seconds
533 540 beaker.session.timeout = 2592000
534 541 beaker.session.httponly = true
535 542
536 543 ; Path to use for the cookie. Set to prefix if you use prefix middleware
537 544 #beaker.session.cookie_path = /custom_prefix
538 545
539 546 ; Set https secure cookie
540 547 beaker.session.secure = false
541 548
542 549 ; default cookie expiration time in seconds, set to `true` to set expire
543 550 ; at browser close
544 551 #beaker.session.cookie_expires = 3600
545 552
546 553 ; #############################
547 554 ; SEARCH INDEXING CONFIGURATION
548 555 ; #############################
549 556
550 557 ; Full text search indexer is available in rhodecode-tools under
551 558 ; `rhodecode-tools index` command
552 559
553 560 ; WHOOSH Backend, doesn't require additional services to run
554 561 ; it works good with few dozen repos
555 562 search.module = rhodecode.lib.index.whoosh
556 563 search.location = %(here)s/data/index
557 564
558 565 ; ####################
559 566 ; CHANNELSTREAM CONFIG
560 567 ; ####################
561 568
562 569 ; channelstream enables persistent connections and live notification
563 570 ; in the system. It's also used by the chat system
564 571
565 572 channelstream.enabled = true
566 573
567 574 ; server address for channelstream server on the backend
568 575 channelstream.server = channelstream:9800
569 576
570 577 ; location of the channelstream server from outside world
571 578 ; use ws:// for http or wss:// for https. This address needs to be handled
572 579 ; by external HTTP server such as Nginx or Apache
573 580 ; see Nginx/Apache configuration examples in our docs
574 581 channelstream.ws_url = ws://rhodecode.yourserver.com/_channelstream
575 582 channelstream.secret = ENV_GENERATED
576 583 channelstream.history.location = /var/opt/rhodecode_data/channelstream_history
577 584
578 585 ; Internal application path that Javascript uses to connect into.
579 586 ; If you use proxy-prefix the prefix should be added before /_channelstream
580 587 channelstream.proxy_path = /_channelstream
581 588
582 589
583 590 ; ##############################
584 591 ; MAIN RHODECODE DATABASE CONFIG
585 592 ; ##############################
586 593
587 594 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
588 595 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
589 596 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode?charset=utf8
590 597 ; pymysql is an alternative driver for MySQL, use in case of problems with default one
591 598 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
592 599
593 600 sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
594 601
595 602 ; see sqlalchemy docs for other advanced settings
596 603 ; print the sql statements to output
597 604 sqlalchemy.db1.echo = false
598 605
599 606 ; recycle the connections after this amount of seconds
600 607 sqlalchemy.db1.pool_recycle = 3600
601 608
602 609 ; the number of connections to keep open inside the connection pool.
603 610 ; 0 indicates no limit
604 611 ; the general calculus with gevent is:
605 612 ; if your system allows 500 concurrent greenlets (max_connections) that all do database access,
606 613 ; then increase pool size + max overflow so that they add up to 500.
607 614 #sqlalchemy.db1.pool_size = 5
608 615
609 616 ; The number of connections to allow in connection pool "overflow", that is
610 617 ; connections that can be opened above and beyond the pool_size setting,
611 618 ; which defaults to five.
612 619 #sqlalchemy.db1.max_overflow = 10
613 620
614 621 ; Connection check ping, used to detect broken database connections
615 622 ; could be enabled to better handle cases if MySQL has gone away errors
616 623 #sqlalchemy.db1.ping_connection = true
617 624
618 625 ; ##########
619 626 ; VCS CONFIG
620 627 ; ##########
621 628 vcs.server.enable = true
622 629 vcs.server = vcsserver:10010
623 630
624 631 ; Web server connectivity protocol, responsible for web based VCS operations
625 632 ; Available protocols are:
626 633 ; `http` - use http-rpc backend (default)
627 634 vcs.server.protocol = http
628 635
629 636 ; Push/Pull operations protocol, available options are:
630 637 ; `http` - use http-rpc backend (default)
631 638 vcs.scm_app_implementation = http
632 639
633 640 ; Push/Pull operations hooks protocol, available options are:
634 641 ; `http` - use http-rpc backend (default)
635 642 ; `celery` - use celery based hooks
636 643 #DEPRECATED:vcs.hooks.protocol = http
637 644 vcs.hooks.protocol.v2 = celery
638 645
639 646 ; Host on which this instance is listening for hooks. vcsserver will call this host to pull/push hooks so it should be
640 647 ; accessible via network.
641 648 ; Use vcs.hooks.host = "*" to bind to current hostname (for Docker)
642 649 vcs.hooks.host = *
643 650
644 651 ; Start VCSServer with this instance as a subprocess, useful for development
645 652 vcs.start_server = false
646 653
647 654 ; List of enabled VCS backends, available options are:
648 655 ; `hg` - mercurial
649 656 ; `git` - git
650 657 ; `svn` - subversion
651 658 vcs.backends = hg, git, svn
652 659
653 660 ; Wait this number of seconds before killing connection to the vcsserver
654 661 vcs.connection_timeout = 3600
655 662
656 663 ; Cache flag to cache vcsserver remote calls locally
657 664 ; It uses cache_region `cache_repo`
658 665 vcs.methods.cache = true
659 666
660 667 ; Filesystem location where Git lfs objects should be stored
661 668 vcs.git.lfs.storage_location = /var/opt/rhodecode_repo_store/.cache/git_lfs_store
662 669
663 670 ; Filesystem location where Mercurial largefile objects should be stored
664 671 vcs.hg.largefiles.storage_location = /var/opt/rhodecode_repo_store/.cache/hg_largefiles_store
665 672
666 673 ; ####################################################
667 674 ; Subversion proxy support (mod_dav_svn)
668 675 ; Maps RhodeCode repo groups into SVN paths for Apache
669 676 ; ####################################################
670 677
671 678 ; Compatibility version when creating SVN repositories. Defaults to newest version when commented out.
672 679 ; Set a numeric version for your current SVN e.g 1.8, or 1.12
673 680 ; Legacy available options are: pre-1.4-compatible, pre-1.5-compatible, pre-1.6-compatible, pre-1.8-compatible, pre-1.9-compatible
674 681 #vcs.svn.compatible_version = 1.8
675 682
676 683 ; Redis connection settings for svn integrations logic
677 684 ; This connection string needs to be the same on ce and vcsserver
678 685 vcs.svn.redis_conn = redis://redis:6379/0
679 686
680 687 ; Enable SVN proxy of requests over HTTP
681 688 vcs.svn.proxy.enabled = true
682 689
683 690 ; host to connect to running SVN subsystem
684 691 vcs.svn.proxy.host = http://svn:8090
685 692
686 693 ; Enable or disable the config file generation.
687 694 svn.proxy.generate_config = true
688 695
689 696 ; Generate config file with `SVNListParentPath` set to `On`.
690 697 svn.proxy.list_parent_path = true
691 698
692 699 ; Set location and file name of generated config file.
693 700 svn.proxy.config_file_path = /etc/rhodecode/conf/svn/mod_dav_svn.conf
694 701
695 702 ; alternative mod_dav config template. This needs to be a valid mako template
696 703 ; Example template can be found in the source code:
697 704 ; rhodecode/apps/svn_support/templates/mod-dav-svn.conf.mako
698 705 #svn.proxy.config_template = ~/.rccontrol/enterprise-1/custom_svn_conf.mako
699 706
700 707 ; Used as a prefix to the `Location` block in the generated config file.
701 708 ; In most cases it should be set to `/`.
702 709 svn.proxy.location_root = /
703 710
704 711 ; Command to reload the mod dav svn configuration on change.
705 712 ; Example: `/etc/init.d/apache2 reload` or /home/USER/apache_reload.sh
706 713 ; Make sure user who runs RhodeCode process is allowed to reload Apache
707 714 #svn.proxy.reload_cmd = /etc/init.d/apache2 reload
708 715
709 716 ; If the timeout expires before the reload command finishes, the command will
710 717 ; be killed. Setting it to zero means no timeout. Defaults to 10 seconds.
711 718 #svn.proxy.reload_timeout = 10
712 719
713 720 ; ####################
714 721 ; SSH Support Settings
715 722 ; ####################
716 723
717 724 ; Defines if a custom authorized_keys file should be created and written on
718 725 ; any change user ssh keys. Setting this to false also disables possibility
719 726 ; of adding SSH keys by users from web interface. Super admins can still
720 727 ; manage SSH Keys.
721 728 ssh.generate_authorized_keyfile = true
722 729
723 730 ; Options for ssh, default is `no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding`
724 731 # ssh.authorized_keys_ssh_opts =
725 732
726 733 ; Path to the authorized_keys file where the generate entries are placed.
727 734 ; It is possible to have multiple key files specified in `sshd_config` e.g.
728 735 ; AuthorizedKeysFile %h/.ssh/authorized_keys %h/.ssh/authorized_keys_rhodecode
729 736 ssh.authorized_keys_file_path = /etc/rhodecode/conf/ssh/authorized_keys_rhodecode
730 737
731 738 ; Command to execute the SSH wrapper. The binary is available in the
732 739 ; RhodeCode installation directory.
733 740 ; legacy: /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper
734 741 ; new rewrite: /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper-v2
735 742 #DEPRECATED: ssh.wrapper_cmd = /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper
736 743 ssh.wrapper_cmd.v2 = /usr/local/bin/rhodecode_bin/bin/rc-ssh-wrapper-v2
737 744
738 745 ; Allow shell when executing the ssh-wrapper command
739 746 ssh.wrapper_cmd_allow_shell = false
740 747
741 748 ; Enables logging, and detailed output send back to the client during SSH
742 749 ; operations. Useful for debugging, shouldn't be used in production.
743 750 ssh.enable_debug_logging = false
744 751
745 752 ; Paths to binary executable, by default they are the names, but we can
746 753 ; override them if we want to use a custom one
747 754 ssh.executable.hg = /usr/local/bin/rhodecode_bin/vcs_bin/hg
748 755 ssh.executable.git = /usr/local/bin/rhodecode_bin/vcs_bin/git
749 756 ssh.executable.svn = /usr/local/bin/rhodecode_bin/vcs_bin/svnserve
750 757
751 758 ; Enables SSH key generator web interface. Disabling this still allows users
752 759 ; to add their own keys.
753 760 ssh.enable_ui_key_generator = true
754 761
755 762 ; Statsd client config, this is used to send metrics to statsd
756 763 ; We recommend setting statsd_exported and scrape them using Prometheus
757 764 #statsd.enabled = false
758 765 #statsd.statsd_host = 0.0.0.0
759 766 #statsd.statsd_port = 8125
760 767 #statsd.statsd_prefix =
761 768 #statsd.statsd_ipv6 = false
762 769
763 770 ; configure logging automatically at server startup set to false
764 771 ; to use the below custom logging config.
765 772 ; RC_LOGGING_FORMATTER
766 773 ; RC_LOGGING_LEVEL
767 774 ; env variables can control the settings for logging in case of autoconfigure
768 775
769 776 #logging.autoconfigure = true
770 777
771 778 ; specify your own custom logging config file to configure logging
772 779 #logging.logging_conf_file = /path/to/custom_logging.ini
773 780
774 781 ; Dummy marker to add new entries after.
775 782 ; Add any custom entries below. Please don't remove this marker.
776 783 custom.conf = 1
777 784
778 785
779 786 ; #####################
780 787 ; LOGGING CONFIGURATION
781 788 ; #####################
782 789
783 790 [loggers]
784 791 keys = root, sqlalchemy, beaker, celery, rhodecode, ssh_wrapper
785 792
786 793 [handlers]
787 794 keys = console, console_sql
788 795
789 796 [formatters]
790 797 keys = generic, json, color_formatter, color_formatter_sql
791 798
792 799 ; #######
793 800 ; LOGGERS
794 801 ; #######
795 802 [logger_root]
796 803 level = NOTSET
797 804 handlers = console
798 805
799 806 [logger_sqlalchemy]
800 807 level = INFO
801 808 handlers = console_sql
802 809 qualname = sqlalchemy.engine
803 810 propagate = 0
804 811
805 812 [logger_beaker]
806 813 level = DEBUG
807 814 handlers =
808 815 qualname = beaker.container
809 816 propagate = 1
810 817
811 818 [logger_rhodecode]
812 819 level = DEBUG
813 820 handlers =
814 821 qualname = rhodecode
815 822 propagate = 1
816 823
817 824 [logger_ssh_wrapper]
818 825 level = DEBUG
819 826 handlers =
820 827 qualname = ssh_wrapper
821 828 propagate = 1
822 829
823 830 [logger_celery]
824 831 level = DEBUG
825 832 handlers =
826 833 qualname = celery
827 834
828 835
829 836 ; ########
830 837 ; HANDLERS
831 838 ; ########
832 839
833 840 [handler_console]
834 841 class = StreamHandler
835 842 args = (sys.stderr, )
836 843 level = INFO
837 844 ; To enable JSON formatted logs replace 'generic/color_formatter' with 'json'
838 845 ; This allows sending properly formatted logs to grafana loki or elasticsearch
839 846 formatter = generic
840 847
841 848 [handler_console_sql]
842 849 ; "level = DEBUG" logs SQL queries and results.
843 850 ; "level = INFO" logs SQL queries.
844 851 ; "level = WARN" logs neither. (Recommended for production systems.)
845 852 class = StreamHandler
846 853 args = (sys.stderr, )
847 854 level = WARN
848 855 ; To enable JSON formatted logs replace 'generic/color_formatter_sql' with 'json'
849 856 ; This allows sending properly formatted logs to grafana loki or elasticsearch
850 857 formatter = generic
851 858
852 859 ; ##########
853 860 ; FORMATTERS
854 861 ; ##########
855 862
856 863 [formatter_generic]
857 864 class = rhodecode.lib.logging_formatter.ExceptionAwareFormatter
858 865 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
859 866 datefmt = %Y-%m-%d %H:%M:%S
860 867
861 868 [formatter_color_formatter]
862 869 class = rhodecode.lib.logging_formatter.ColorFormatter
863 870 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
864 871 datefmt = %Y-%m-%d %H:%M:%S
865 872
866 873 [formatter_color_formatter_sql]
867 874 class = rhodecode.lib.logging_formatter.ColorFormatterSql
868 875 format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
869 876 datefmt = %Y-%m-%d %H:%M:%S
870 877
871 878 [formatter_json]
872 879 format = %(timestamp)s %(levelname)s %(name)s %(message)s %(req_id)s
873 880 class = rhodecode.lib._vendor.jsonlogger.JsonFormatter
General Comments 0
You need to be logged in to leave comments. Login now