lila/conf/base.conf

576 lines
12 KiB
Plaintext
Raw Normal View History

2015-10-28 05:53:22 -06:00
mongodb {
uri = "mongodb://127.0.0.1:27017/lichess"
2016-08-22 07:57:25 -06:00
image.collection = "image"
2015-10-28 05:53:22 -06:00
}
net {
domain = "localhost:9663"
socket.domain = ${net.domain}
asset.domain = ${net.domain}
2015-10-28 05:53:22 -06:00
protocol = "http://"
base_url = ${net.protocol}${net.domain}
2018-12-18 23:26:36 -07:00
ip = "127.0.0.1"
2016-09-06 07:53:36 -06:00
email = "contact@lichess.org"
2016-09-25 15:48:52 -06:00
crawlable = false
2019-12-04 16:39:16 -07:00
ratelimit = true
2015-10-28 05:53:22 -06:00
}
play {
2019-12-05 08:46:00 -07:00
application.loader=LilaAppLoader
2019-12-04 16:39:16 -07:00
modules.disabled+="play.api.mvc.CookiesModule"
modules.enabled+="play.api.mvc.LegacyCookiesModule"
2015-10-28 05:53:22 -06:00
server {
netty {
# The maximum length of the initial line. This effectively restricts the maximum length of a URL that the server will
# accept, the initial line consists of the method (3-7 characters), the URL, and the HTTP version (8 characters),
# including typical whitespace, the maximum URL length will be this number - 18.
maxInitialLineLength = 2048 # 4096
# The maximum length of the HTTP headers. The most common effect of this is a restriction in cookie length, including
# number of cookies and size of cookie values.
maxHeaderSize = 4096 # 8192
}
}
http {
2018-04-26 09:57:12 -06:00
parser.maxMemoryBuffer=1MB
}
ws {
2017-09-11 08:56:36 -06:00
useragent = "lichess.org"
compressionEnabled = true
timeout {
connection = 5 seconds
idle = 5 minutes
request = 5 minutes
}
}
crypto {
secret="CiebwjgIM9cHQ;I?Xk:sfqDJ;BhIe:jsL?r=?IPF[saf>s^r0]?0grUq4>q?5mP^"
}
2019-12-04 16:39:16 -07:00
}
session {
cookieName = "lila2"
maxAge = 365 days
2015-10-28 05:53:22 -06:00
}
app {
scheduler {
2016-03-11 10:09:59 -07:00
disabled = false
2015-10-28 05:53:22 -06:00
debug = false
}
renderer.name = "renderer"
web_path = "public"
forcedev = false
stage = false
2015-10-28 05:53:22 -06:00
}
api {
token = secret
2016-12-05 03:34:43 -07:00
influx_event = {
endpoint = "http://monitor.lichess.ovh:8086/write?db=events"
2016-12-05 03:34:43 -07:00
env = "dev"
}
2015-10-28 05:53:22 -06:00
}
chessground {
animation {
duration = 250 ms
}
}
editor {
animation.duration = ${chessground.animation.duration}
}
accessibility {
blind {
cookie {
name = "mBzamRgfXgRBSnXB"
salt = "WWcTbz5xxaHU4d96"
max_age = 31536000 # one year
}
}
}
prismic {
api_url = "https://lichess-clone.cdn.prismic.io/api"
2015-10-28 05:53:22 -06:00
}
blog {
prismic {
api_url = ${prismic.api_url}
}
2016-03-23 23:14:25 -06:00
last_post_cache.ttl = 5 minutes
2015-10-28 05:53:22 -06:00
}
chat {
2016-06-10 09:15:00 -06:00
collection {
chat = chat
timeout = chat_timeout
}
2016-11-03 08:16:08 -06:00
max_lines = 200
2015-10-28 05:53:22 -06:00
net.domain = ${net.domain}
actor.name = chat
2016-06-10 12:20:56 -06:00
timeout {
2017-01-14 05:17:37 -07:00
duration = 15 minutes
check_every = 15 seconds
2016-06-10 12:20:56 -06:00
}
2015-10-28 05:53:22 -06:00
}
puzzle {
mongodb {
uri = "mongodb://127.0.0.1:27017/lichess"
}
2015-10-28 05:53:22 -06:00
collection {
puzzle = puzzle
round = puzzle_round2
vote = puzzle_vote
2016-08-25 11:09:03 -06:00
head = puzzle_head
2015-10-28 05:53:22 -06:00
}
api.token = ${api.token}
selector {
puzzle_id_min = 61053 # puzzle 61052 is bad
2015-10-28 05:53:22 -06:00
}
animation.duration = ${chessground.animation.duration}
}
coordinate {
collection {
score = coordinate_score
}
}
2016-08-22 16:05:10 -06:00
event {
collection {
event = event
}
}
2015-10-28 05:53:22 -06:00
video {
collection {
video = video
view = video_view
}
sheet {
url = "https://spreadsheets.google.com/feeds/list/1qYU1XhvC8TlBggXEkjI481ieNGyYGmMTy97A9iboyrM/2/public/values?alt=json"
delay = 3 hour
}
youtube {
url = "https://www.googleapis.com/youtube/v3/videos"
api_key = ""
max = 50
delay = 20 minutes
}
}
search {
enabled = false
writeable = true
endpoint = "http://localhost:9673"
}
teamSearch {
index = team
actor.name = team-search
}
relation {
collection {
relation = relation
}
actor {
name = relation
2015-10-28 05:53:22 -06:00
notify_freq = 2 seconds
}
limit {
follow = 300
block = 500
}
}
bookmark {
collection.bookmark = bookmark
actor.name = bookmark
}
geoip {
2018-04-27 21:22:02 -06:00
file = "data/GeoLite2-City.mmdb"
cache_ttl = 20 minutes
2015-10-28 05:53:22 -06:00
}
security {
collection.security = security
2019-08-08 10:39:09 -06:00
collection.print_ban = print_ban
2019-11-30 00:34:21 -07:00
collection.firewall = firewall
2015-10-28 05:53:22 -06:00
flood.duration = 60 seconds
geoip = ${geoip}
password_reset {
secret = "???"
}
email_confirm {
enabled = false
secret = "???"
2018-03-29 13:59:31 -06:00
cookie = "email_confirm"
}
email_change {
2015-10-28 05:53:22 -06:00
secret = "???"
}
login_token {
secret = "???"
}
2015-10-28 05:53:22 -06:00
tor {
provider_url = "https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip="${net.ip}"&port=80"
2016-01-05 18:27:32 -07:00
refresh_delay = 1 hour
2015-10-28 05:53:22 -06:00
}
disposable_email {
2018-12-24 21:03:05 -07:00
provider_url = "https://raw.githubusercontent.com/ornicar/disposable/publish/domains.txt"
2018-02-06 08:41:03 -07:00
refresh_delay = 10 minutes
2015-10-28 05:53:22 -06:00
}
dns_api {
url = "https://cloudflare-dns.com/dns-query"
timeout = 5 seconds
}
2019-08-09 08:02:29 -06:00
check_mail_api {
url = "https://mailcheck.p.rapidapi.com/"
key = ""
}
2015-10-28 05:53:22 -06:00
recaptcha = ${recaptcha}
mailgun = ${mailgun}
2017-11-10 20:48:01 -07:00
net {
domain = ${net.domain}
base_url = ${net.base_url}
}
ipintel.email = "-"
2015-10-28 05:53:22 -06:00
}
oauth {
mongodb {
uri = ${mongodb.uri}
}
collection {
access_token = oauth_access_token
2018-03-31 22:57:57 -06:00
app = oauth_client
}
}
2015-10-28 05:53:22 -06:00
recaptcha {
endpoint = "https://www.google.com/recaptcha/api/siteverify"
public_key = "6LcxLTUUAAAAAFwWrEgEehMJ6VXrtVOKIifTLGoW"
2015-10-28 05:53:22 -06:00
private_key = ""
enabled = false
2015-10-28 05:53:22 -06:00
}
shutup {
collection.shutup = shutup
actor.name = shutup
}
playban {
collection.playban = playban
}
2015-12-23 20:41:28 -07:00
perfStat {
collection.perf_stat = "perf_stat"
}
2015-12-07 05:04:22 -07:00
push {
collection {
device = push_device
subscription = push_subscription
}
web {
vapid_public_key = "BNHCgAkTcPNY/+QTW2Ccoo+SHTQ9+cTVa8bQQOqFPIBFedYZxJ3ih+GWBaFI2XmMb4PtdGv0e2l+8kYy3sZUGuY="
url = "http://push.lichess.ovh:9054"
}
2016-09-04 06:10:09 -06:00
onesignal {
url = "https://onesignal.com/api/v1/notifications"
2016-09-04 06:41:24 -06:00
app_id = ""
2016-09-04 06:10:09 -06:00
key = ""
}
firebase {
url = "https://fcm.googleapis.com/v1/projects/lichess-1366/messages:send"
json = ""
}
2015-10-28 05:53:22 -06:00
}
mod {
collection {
modlog = modlog
player_assessment = player_assessment
boosting = boosting
2016-01-11 02:37:09 -07:00
gaming_history = mod_gaming_history
2015-10-28 05:53:22 -06:00
}
boosting.nb_games_to_mark = 5
boosting.ratio_games_to_mark = 0.01
actor.name = mod
}
report {
2017-12-01 09:56:54 -07:00
collection.report = report2
2015-10-28 05:53:22 -06:00
actor.name = report
2017-12-04 13:56:31 -07:00
score.threshold = 50
2015-10-28 05:53:22 -06:00
}
i18n {
web_path.relative = ${app.web_path}/trans
net.domain = ${net.domain}
2015-10-28 05:53:22 -06:00
}
detectlanguage.api {
2019-05-22 06:57:23 -06:00
url = "https://ws.detectlanguage.com/0.2/detect"
2018-05-03 15:43:33 -06:00
key = ""
2015-10-28 05:53:22 -06:00
}
mailgun {
api {
2017-10-31 10:08:19 -06:00
url = ""
key = ""
2015-10-28 05:53:22 -06:00
}
2016-09-06 04:12:59 -06:00
sender = "lichess.org <noreply@lichess.org>"
reply_to = "lichess.org <noreply@lichess.org>"
2015-10-28 05:53:22 -06:00
}
timeline {
collection {
unsub = timeline_unsub
entry = timeline_entry
}
user {
display_max = 12
actor.name = user-timeline
}
}
game {
2019-11-30 11:06:50 -07:00
paginator.maxPerPage = 12
2015-10-28 05:53:22 -06:00
collection {
game = game5
2016-07-12 17:27:32 -06:00
crosstable = crosstable2
matchup = matchup
2015-10-28 05:53:22 -06:00
}
captcher {
name = captcher
2018-12-13 20:01:34 -07:00
duration = 15 seconds
2015-10-28 05:53:22 -06:00
}
2019-11-30 11:06:50 -07:00
uciMemoTtl = 3 minutes
pngUrl = "http://boardimage.lichess.ovh:8080/board.png"
pngSize = 1024
2015-10-28 05:53:22 -06:00
}
2017-12-27 21:56:36 -07:00
streamer {
collection.streamer = "streamer"
2017-12-27 21:56:36 -07:00
collection.image = ${mongodb.image.collection}
2017-12-28 14:56:58 -07:00
paginator.max_per_page = 12
2017-12-31 10:18:08 -07:00
streaming {
google.api_key = ""
2018-01-02 10:17:01 -07:00
keyword = "lichess.org"
2017-12-31 10:18:08 -07:00
twitch.client_id = ""
}
2017-12-27 21:56:36 -07:00
}
2016-02-08 08:42:33 -07:00
explorer {
endpoint = "https://explorer.lichess.ovh"
internal_endpoint = "http://explorer.lichess.ovh"
2016-04-25 14:31:34 -06:00
tablebase = {
endpoint = "https://tablebase.lichess.ovh"
2016-04-25 14:31:34 -06:00
}
2016-02-08 08:42:33 -07:00
}
2015-10-28 05:53:22 -06:00
gameSearch {
index = game
2016-08-18 03:56:11 -06:00
paginator.max_per_page = 12
2015-10-28 05:53:22 -06:00
actor.name = game-search
}
round {
2017-10-22 17:07:02 -06:00
active.ttl = 40 seconds
2015-10-28 05:53:22 -06:00
animation.duration = ${chessground.animation.duration}
moretime = 15 seconds
collection {
note = game_note
forecast = forecast
alarm = round_alarm
2015-10-28 05:53:22 -06:00
}
net.domain = ${net.domain}
}
tournament {
collection {
tournament = tournament2
player = tournament_player
pairing = tournament_pairing
leaderboard = tournament_leaderboard
2015-10-28 05:53:22 -06:00
}
history.message.ttl = 20 seconds
2019-07-13 12:02:50 -06:00
sri.timeout = 7 seconds # small to avoid missed events
api_actor.name = tournament-api
2015-10-28 05:53:22 -06:00
pairing.delay = 3.1 seconds
leaderboard.cache.ttl = 1 hour
net.domain = ${net.domain}
}
simul {
collection {
simul = simul
}
created.cache.ttl = 2 seconds
feature.views = 10000 # max frontpage views of simul per host per day
2015-10-28 05:53:22 -06:00
}
forum {
topic.max_per_page = 10
post.max_per_page = 10
public_categ_ids = [
general-chess-discussion
game-analysis
lichess-feedback
off-topic-discussion
]
}
forumSearch {
index = forum
paginator.max_per_page = 10
actor.name = forum-search
}
message {
thread.max_per_page = 30
collection.thread = m_thread
}
2016-08-21 01:16:41 -06:00
coach {
collection.coach = coach
2016-08-31 08:06:21 -06:00
collection.review = coach_review
2016-08-22 07:57:25 -06:00
collection.image = ${mongodb.image.collection}
2016-08-21 01:16:41 -06:00
}
2015-10-28 05:53:22 -06:00
memo {
collection {
cache = cache
config = flag
}
}
redis {
uri = "redis://127.0.0.1"
# uri = "redis-socket:///var/run/redis/redis-server.sock"
}
socket {
redis = ${redis}
}
2019-12-03 07:41:29 -07:00
setup.max_playing = 200
2017-01-31 06:39:57 -07:00
evalCache {
2019-11-30 09:11:25 -07:00
collection.evalCache = eval_cache
2017-01-30 17:42:17 -07:00
}
2015-10-28 05:53:22 -06:00
user {
cached.nb.ttl = 10 minutes
online.ttl = 7 seconds
collection {
user = user4
note = note
trophy = trophy
trophyKind = trophyKind
2016-02-20 22:03:26 -07:00
ranking = ranking
2015-10-28 05:53:22 -06:00
}
2017-09-23 17:02:17 -06:00
password.bpass {
secret = "9qEYN0ThHer1KWLNekA76Q=="
2017-09-23 17:02:17 -06:00
}
2015-10-28 05:53:22 -06:00
}
2016-03-11 08:23:06 -07:00
fishnet {
redis = ${redis}
2016-03-11 08:23:06 -07:00
collection {
analysis = fishnet_analysis
client = fishnet_client
}
offline_mode = true # any client can provide moves and analysis
2017-08-08 17:35:16 -06:00
actor.name = fishnet
2017-04-10 04:07:37 -06:00
analysis.nodes = 4000000
2016-09-05 08:15:24 -06:00
move.plies = 300
2018-11-08 05:28:56 -07:00
client_min_version = "1.15.10"
2015-10-28 05:53:22 -06:00
}
application {
global="lila.app.Global"
}
2015-11-26 21:05:59 -07:00
insight {
mongodb {
2016-01-09 08:29:35 -07:00
uri = "mongodb://127.0.0.1:27017/lichess-insight"
mongo-async-driver = {}
}
2015-10-28 05:53:22 -06:00
}
notify {
collection.notify = notify
actor.name = notify
}
2016-06-22 15:07:38 -06:00
learn {
collection.progress = learn_progress
}
2015-10-28 05:53:22 -06:00
simulation {
enabled = false
players = 300
watchers = 200
}
2019-12-04 21:32:03 -07:00
slack.incoming.url = ""
2016-07-12 11:19:30 -06:00
plan {
stripe {
endpoint="https://api.stripe.com/v1"
keys {
public="pk_test_31E5TIuGtMs4ojhzMIMu8oIc"
secret="sk_test_erAQMvv5cF90WXUFlkv7Tke0"
}
2016-06-06 03:36:21 -06:00
}
2016-07-14 15:11:42 -06:00
paypal {
ipn_key=""
}
2016-07-12 10:33:22 -06:00
collection {
2016-07-12 11:19:30 -06:00
patron = plan_patron
charge = plan_charge
2016-07-12 10:33:22 -06:00
}
2016-06-06 03:36:21 -06:00
}
2015-10-28 05:53:22 -06:00
hub {
actor {
game {
search = ${gameSearch.actor.name}
}
renderer = ${app.renderer.name}
captcher = ${game.captcher.name}
forum {
search = ${forumSearch.actor.name}
}
2016-07-25 14:34:15 -06:00
team.search = ${teamSearch.actor.name}
fishnet = ${fishnet.actor.name}
tournament.api = ${tournament.api_actor.name}
2015-10-28 05:53:22 -06:00
timeline {
user = ${timeline.user.actor.name}
}
bookmark = ${bookmark.actor.name}
relation = ${relation.actor.name}
report = ${report.actor.name}
shutup = ${shutup.actor.name}
mod = ${mod.actor.name}
chat = ${chat.actor.name}
notify = ${notify.actor.name}
2015-10-28 05:53:22 -06:00
}
}
dbplugin = disabled
ehcacheplugin = disabled
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = INFO
stdout-loglevel = INFO
log-config-on-start = off
log-dead-letters-during-shutdown = off
}
2016-03-08 05:28:34 -07:00
kamon {
2016-03-10 05:59:03 -07:00
metric {
2018-03-30 17:09:28 -06:00
tick-interval = 20 second
track-unmatched-entities = yes
2016-03-10 05:59:03 -07:00
filters {
trace {
2016-11-07 02:58:20 -07:00
includes = [ "**" ]
2016-03-10 05:59:03 -07:00
excludes = [ ]
}
2016-03-08 05:28:34 -07:00
}
2016-03-10 05:59:03 -07:00
}
2016-11-17 03:41:45 -07:00
influxdb {
hostname = "127.0.0.1"
port = 8086
# The maximum packet size for one POST request, set to 0 to disable batching
max-packet-size = 16384
# The protocol, either http or udp
protocol = "udp"
2016-11-17 03:41:45 -07:00
# The measurements will be named ${application-name}-timers and -counters
application-name = "dev"
# Allow users to override the name of the hostname reported by kamon. When changed, the hostname tag will be
# the value given here.
hostname-override = none
# For histograms, which percentiles to count
2018-03-30 17:09:28 -06:00
percentiles = [25.0, 50.0, 75.0, 95.0, 99.0]
2016-11-17 03:41:45 -07:00
# Subscription patterns used to select which metrics will be pushed to InfluxDB. Note that first, metrics
# collection for your desired entities must be activated under the kamon.metrics.filters settings.
subscriptions {
histogram = [ "**" ]
min-max-counter = [ "**" ]
gauge = [ "**" ]
counter = [ "**" ]
trace = [ "**" ]
trace-segment = [ "**" ]
akka-actor = [ "**" ]
akka-dispatcher = [ "**" ]
akka-router = [ "**" ]
system-metric = [ "**" ]
http-server = [ "**" ]
}
}
2016-03-10 05:59:03 -07:00
modules {
2016-11-17 03:41:45 -07:00
kamon-influxdb {
auto-start = no
2016-03-08 05:28:34 -07:00
}
}
}