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