5e8e063af8
can be increased on an endpoint basis if needed
523 lines
11 KiB
Plaintext
523 lines
11 KiB
Plaintext
http.port = 9663
|
|
https.port = disabled
|
|
mongodb {
|
|
uri = "mongodb://127.0.0.1:27017"
|
|
mongo-async-driver = ${akka}
|
|
}
|
|
net {
|
|
domain = "localhost:9663"
|
|
socket.domains = [ "localhost:9664" ]
|
|
asset.domain = ${net.domain}
|
|
asset.base_url = "http://"${net.asset.domain}
|
|
asset.minified = false
|
|
base_url = "http://"${net.domain}
|
|
ip = "127.0.0.1"
|
|
email = ""
|
|
crawlable = false
|
|
ratelimit = true
|
|
prodDomain = "lichess.org"
|
|
http.log = true
|
|
stage.banner = false
|
|
}
|
|
play {
|
|
application.loader = "lila.app.AppLoader"
|
|
http {
|
|
requestHandler = "play.api.http.DefaultHttpRequestHandler"
|
|
errorHandler = provided
|
|
filters = provided
|
|
parser.maxMemoryBuffer=512KiB
|
|
session {
|
|
cookieName = "lila2"
|
|
maxAge = 3650 days
|
|
}
|
|
secret.key = "CiebwjgIM9cHQ;I?Xk:sfqDJ;BhIe:jsL?r=?IPF[saf>s^r0]?0grUq4>q?5mP^" # public (lila does not rely on cookie signing)
|
|
}
|
|
ws {
|
|
useragent = "lichess.org"
|
|
compressionEnabled = true
|
|
timeout {
|
|
connection = 5 seconds
|
|
idle = 5 minutes
|
|
request = 5 minutes
|
|
}
|
|
}
|
|
server {
|
|
# 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.
|
|
max-header-size = 4096 # 8192
|
|
netty {
|
|
transport = "native"
|
|
# 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
|
|
}
|
|
}
|
|
akka {
|
|
actor-system = lila
|
|
}
|
|
}
|
|
akka {
|
|
loggers = ["akka.event.slf4j.Slf4jLogger"]
|
|
loglevel = INFO
|
|
# stdout-loglevel = INFO
|
|
log-dead-letters-during-shutdown = off
|
|
akka.log-dead-letters = off
|
|
coordinated-shutdown {
|
|
phases {
|
|
actor-system-terminate {
|
|
timeout = 5s
|
|
}
|
|
}
|
|
}
|
|
}
|
|
app {
|
|
renderer.name = "renderer"
|
|
stage = false
|
|
}
|
|
api {
|
|
token = secret
|
|
influx_event = {
|
|
endpoint = "http://monitor.lichess.ovh:8086/write?db=events"
|
|
env = "dev"
|
|
}
|
|
}
|
|
accessibility {
|
|
blind {
|
|
cookie {
|
|
name = "mBzamRgfXgRBSnXB"
|
|
salt = "WWcTbz5xxaHU4d96"
|
|
max_age = 31536000 # one year
|
|
}
|
|
}
|
|
}
|
|
prismic {
|
|
api_url = "https://lichess.cdn.prismic.io/api"
|
|
}
|
|
blog {
|
|
prismic = ${prismic}
|
|
collection = blog
|
|
last_post_cache.ttl = 5 minutes
|
|
}
|
|
chat {
|
|
collection {
|
|
chat = chat
|
|
timeout = chat_timeout
|
|
}
|
|
max_lines = 200
|
|
actor.name = chat
|
|
timeout {
|
|
duration = 15 minutes
|
|
check_every = 15 seconds
|
|
}
|
|
}
|
|
study.mongodb.uri = ${mongodb.uri}
|
|
puzzle {
|
|
mongodb {
|
|
uri = ${mongodb.uri}
|
|
}
|
|
collection {
|
|
puzzle = puzzle2_puzzle
|
|
round = puzzle2_round
|
|
path = puzzle2_path
|
|
}
|
|
}
|
|
storm.secret = "somethingElseInProd"
|
|
coordinate {
|
|
collection {
|
|
score = coordinate_score
|
|
}
|
|
}
|
|
event {
|
|
collection {
|
|
event = event
|
|
}
|
|
}
|
|
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
|
|
}
|
|
limit {
|
|
follow = 400
|
|
block = 500
|
|
}
|
|
}
|
|
bookmark {
|
|
collection.bookmark = bookmark
|
|
paginator.max_per_page = ${game.paginator.max_per_page}
|
|
actor.name = bookmark
|
|
}
|
|
geoip {
|
|
file = ""
|
|
cache_ttl = 20 minutes
|
|
}
|
|
security {
|
|
collection.security = security
|
|
collection.print_ban = print_ban
|
|
collection.firewall = firewall
|
|
flood.duration = 60 seconds
|
|
geoip = ${geoip}
|
|
password_reset {
|
|
secret = "???"
|
|
}
|
|
email_confirm {
|
|
enabled = false
|
|
secret = "???"
|
|
cookie = "email_confirm"
|
|
}
|
|
email_change {
|
|
secret = "???"
|
|
}
|
|
login_token {
|
|
secret = "???"
|
|
}
|
|
tor {
|
|
enabled = true
|
|
provider_url = "https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip="${net.ip}"&port=80"
|
|
refresh_delay = 1 hour
|
|
}
|
|
disposable_email {
|
|
enabled = true
|
|
provider_url = "https://raw.githubusercontent.com/ornicar/disposable/publish/domains.txt"
|
|
refresh_delay = 10 minutes
|
|
}
|
|
dns_api {
|
|
url = "https://cloudflare-dns.com/dns-query"
|
|
timeout = 5 seconds
|
|
}
|
|
check_mail_api {
|
|
url = "https://mailcheck.p.rapidapi.com/"
|
|
key = ""
|
|
}
|
|
ip2proxy {
|
|
enabled = false
|
|
url = "http://ip2proxy.lichess.ovh:1929"
|
|
}
|
|
recaptcha = ${recaptcha}
|
|
mailgun = ${mailgun}
|
|
lame_name_check = true
|
|
}
|
|
oauth {
|
|
mongodb {
|
|
uri = ${mongodb.uri}
|
|
}
|
|
collection {
|
|
access_token = oauth_access_token
|
|
app = oauth_client
|
|
}
|
|
}
|
|
recaptcha {
|
|
endpoint = "https://www.google.com/recaptcha/api/siteverify"
|
|
public_key = "6LcxLTUUAAAAAFwWrEgEehMJ6VXrtVOKIifTLGoW"
|
|
private_key = ""
|
|
enabled = false
|
|
}
|
|
shutup {
|
|
collection.shutup = shutup
|
|
actor.name = shutup
|
|
}
|
|
playban {
|
|
collection.playban = playban
|
|
}
|
|
perfStat {
|
|
collection.perf_stat = "perf_stat"
|
|
}
|
|
push {
|
|
collection {
|
|
device = push_device
|
|
subscription = push_subscription
|
|
}
|
|
web {
|
|
vapid_public_key = "BGr5CL0QlEYa7qW7HLqe7DFkCeTsYMLsi1Db+5Vwt1QBIs6+WxN8066AjtP8S9u+w+CbleE8xWY+qQaNEMs7sAs="
|
|
url = "http://push.lichess.ovh:9054"
|
|
}
|
|
onesignal {
|
|
url = "https://onesignal.com/api/v1/notifications"
|
|
app_id = ""
|
|
key = ""
|
|
}
|
|
firebase {
|
|
url = "https://fcm.googleapis.com/v1/projects/lichess-1366/messages:send"
|
|
json = ""
|
|
}
|
|
}
|
|
mod {
|
|
collection {
|
|
modlog = modlog
|
|
player_assessment = player_assessment
|
|
boosting = boosting
|
|
gaming_history = mod_gaming_history
|
|
}
|
|
boosting.nb_games_to_mark = 5
|
|
boosting.ratio_games_to_mark = 0.01
|
|
actor.name = mod
|
|
}
|
|
report {
|
|
collection.report = report2
|
|
actor.name = report
|
|
score.threshold = 50
|
|
}
|
|
i18n {
|
|
web_path.relative = public/trans
|
|
}
|
|
detectlanguage.api {
|
|
url = "https://ws.detectlanguage.com/0.2/detect"
|
|
key = ""
|
|
}
|
|
mailgun {
|
|
api {
|
|
url = ""
|
|
key = ""
|
|
}
|
|
sender = "lichess.org <noreply@lichess.org>"
|
|
reply_to = "lichess.org <noreply@lichess.org>"
|
|
}
|
|
timeline {
|
|
collection {
|
|
unsub = timeline_unsub
|
|
entry = timeline_entry
|
|
}
|
|
user {
|
|
display_max = 10
|
|
actor.name = user-timeline
|
|
}
|
|
}
|
|
game {
|
|
paginator.max_per_page = 12
|
|
collection {
|
|
game = game5
|
|
crosstable = crosstable2
|
|
matchup = matchup
|
|
}
|
|
captcher {
|
|
name = captcher
|
|
duration = 15 seconds
|
|
}
|
|
gifUrl = "http://gif.lichess.ovh:6175"
|
|
}
|
|
streamer {
|
|
collection.streamer = "streamer"
|
|
paginator.max_per_page = 12
|
|
streaming {
|
|
google.api_key = ""
|
|
keyword = "lichess.org"
|
|
}
|
|
}
|
|
explorer {
|
|
endpoint = "https://explorer.lichess.ovh"
|
|
internal_endpoint = "http://explorer.lichess.ovh"
|
|
tablebase = {
|
|
endpoint = "https://tablebase.lichess.ovh"
|
|
}
|
|
}
|
|
gameSearch {
|
|
index = game
|
|
paginator.max_per_page = 12
|
|
actor.name = game-search
|
|
}
|
|
round {
|
|
collection {
|
|
note = game_note
|
|
forecast = forecast
|
|
alarm = round_alarm
|
|
}
|
|
}
|
|
tournament {
|
|
collection {
|
|
tournament = tournament2
|
|
player = tournament_player
|
|
pairing = tournament_pairing
|
|
leaderboard = tournament_leaderboard
|
|
}
|
|
history.message.ttl = 20 seconds
|
|
sri.timeout = 7 seconds # small to avoid missed events
|
|
api_actor.name = tournament-api
|
|
pairing.delay = 3.1 seconds
|
|
}
|
|
swiss {
|
|
bbpairing = "/path/to/bbpPairings.exe"
|
|
}
|
|
simul {
|
|
collection.simul = simul
|
|
feature.views = 10000 # max frontpage views of simul per host per day
|
|
}
|
|
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
|
|
}
|
|
coach {
|
|
collection.coach = coach
|
|
collection.review = coach_review
|
|
}
|
|
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}
|
|
}
|
|
setup.max_playing = 200
|
|
evalCache {
|
|
collection.evalCache = eval_cache
|
|
}
|
|
user {
|
|
online.ttl = 7 seconds
|
|
collection {
|
|
user = user4
|
|
note = note
|
|
trophy = trophy
|
|
trophyKind = trophyKind
|
|
ranking = ranking
|
|
}
|
|
}
|
|
fishnet {
|
|
redis = ${redis}
|
|
collection {
|
|
analysis = fishnet_analysis
|
|
client = fishnet_client
|
|
}
|
|
offline_mode = true # any client can provide moves and analysis
|
|
actor.name = fishnet
|
|
analysis.nodes = 2250000 # nnue
|
|
move.plies = 300
|
|
client_min_version = "2.1.3"
|
|
}
|
|
insight {
|
|
mongodb {
|
|
uri = "mongodb://127.0.0.1:27017/lichess-insight"
|
|
}
|
|
}
|
|
notify {
|
|
collection.notify = notify
|
|
actor.name = notify
|
|
}
|
|
learn {
|
|
collection.progress = learn_progress
|
|
}
|
|
simulation {
|
|
enabled = false
|
|
players = 300
|
|
watchers = 200
|
|
}
|
|
slack.incoming.url = ""
|
|
plan {
|
|
stripe {
|
|
endpoint="https://api.stripe.com/v1"
|
|
keys {
|
|
public="pk_test_5wVLffjCc56emuY3IYgdlwpK00kmyOJcO1"
|
|
secret=""
|
|
}
|
|
}
|
|
paypal {
|
|
ipn_key=""
|
|
}
|
|
collection {
|
|
patron = plan_patron
|
|
charge = plan_charge
|
|
}
|
|
}
|
|
hub {
|
|
actor {
|
|
game {
|
|
search = ${gameSearch.actor.name}
|
|
}
|
|
renderer = ${app.renderer.name}
|
|
captcher = ${game.captcher.name}
|
|
forum {
|
|
search = ${forumSearch.actor.name}
|
|
}
|
|
team.search = ${teamSearch.actor.name}
|
|
fishnet = ${fishnet.actor.name}
|
|
tournament.api = ${tournament.api_actor.name}
|
|
timeline {
|
|
user = ${timeline.user.actor.name}
|
|
}
|
|
bookmark = ${bookmark.actor.name}
|
|
report = ${report.actor.name}
|
|
shutup = ${shutup.actor.name}
|
|
mod = ${mod.actor.name}
|
|
chat = ${chat.actor.name}
|
|
notify = ${notify.actor.name}
|
|
}
|
|
}
|
|
kamon {
|
|
enabled = false
|
|
environment.service = "lila"
|
|
metric.tick-interval = 60 seconds
|
|
influxdb {
|
|
hostname = ""
|
|
port = 8086
|
|
database = "kamon"
|
|
percentiles = [50.0, 75.0, 90.0, 95.0, 99.0, 99.9]
|
|
protocol = "http"
|
|
post-empty-distributions = false
|
|
precision = "s"
|
|
environment-tags {
|
|
include-service = no
|
|
include-host = no
|
|
include-instance = yes
|
|
}
|
|
}
|
|
prometheus {
|
|
buckets {
|
|
default-buckets = [ 10, 100, 1000, 10000, 100000 ]
|
|
time-buckets = [ 0.01, 0.05, 0.1, 0.5, 1, 5, 10 ]
|
|
information-buckets = [ 512, 2048, 16384, 524288, ]
|
|
}
|
|
}
|
|
modules {
|
|
jvm-metrics.enabled = yes
|
|
process-metrics.enabled = yes
|
|
host-metrics.enabled = no
|
|
prometheus-reporter.enabled = yes
|
|
}
|
|
}
|
|
# Don't let play manage its own PID file
|
|
pidfile.path = "/dev/null"
|