| 1 | # Ferrenium configuration. Every key is optional; the values shown are the |
| 2 | # defaults unless noted. Unknown keys are an error: run `ferrenium check`. |
| 3 | # Relative paths are resolved against the directory of this file. |
| 4 | # Apply changes with `systemctl reload ferrenium`. |
| 5 | |
| 6 | [server] |
| 7 | listen = "127.0.0.1:8080" # or "unix:/run/ferrenium/ferrenium.sock" |
| 8 | # base_url = "https://git.example.com" # for absolute URLs (feeds); default: http://{Host header} |
| 9 | base_path = "/" # serve under a sub-path, e.g. "/git/" |
| 10 | trusted_proxy = true # log X-Forwarded-For; default: false |
| 11 | compression = true # gzip |
| 12 | |
| 13 | [site] |
| 14 | title = "ferrenium" |
| 15 | # description = "Personal git repositories" |
| 16 | # clone_urls = ["https://git.example.com/{name}", "git@git.example.com:{name}"] |
| 17 | # custom_css = "custom.css" |
| 18 | # header = "header.html" |
| 19 | # footer = "footer.html" |
| 20 | # favicon = "favicon.png" # .ico, .png, .svg, .webp, .gif or .jpg, up to 1 MiB |
| 21 | # logo = "logo.svg" # shown before the title in the top bar |
| 22 | # assets_dir = "assets" # served at /-/site/; in custom_css: url("site/bg.jpg") |
| 23 | |
| 24 | [repos] |
| 25 | scan_path = "/home/git" |
| 26 | max_depth = 3 |
| 27 | follow_symlinks = false |
| 28 | section_from_path = false |
| 29 | hide = [] # globs over repo names, e.g. ["private/*"] |
| 30 | snapshots = ["tar.gz", "zip"] |
| 31 | https_clone = true |
| 32 | |
| 33 | # Optional per-repo overrides (take precedence over git config and the |
| 34 | # repository's description file). |
| 35 | # [[repo]] |
| 36 | # name = "dotfiles" |
| 37 | # description = "My dotfiles" |
| 38 | # section = "config" |
| 39 | # owner = "me" |
| 40 | # hidden = false |
| 41 | # readme = "docs/README.md" |
| 42 | # default_branch = "main" |
| 43 | |
| 44 | [ui] |
| 45 | theme = "auto" # auto | dark | light |
| 46 | index_sort = "activity" # repository index order: activity | name |
| 47 | code_font = "Space Mono" |
| 48 | # accent = "#d71921" # hex accent color; default: Nothing red |
| 49 | max_blob_kb = 1024 |
| 50 | max_highlight_kb = 256 |
| 51 | log_page = 50 # commits per log page |
| 52 | |
| 53 | [cache] |
| 54 | size_mb = 64 |
| 55 | |
| 56 | [watch] |
| 57 | enabled = true |
| 58 | debounce_ms = 500 |
| 59 | poll_interval_secs = 300 # 0 disables the periodic full rescan |
| 60 | |
| 61 | [limits] |
| 62 | git_parallel = 0 # 0 = CPUs, at most 8 |
| 63 | heavy_parallel = 2 # blame, archives, clones and log searches at once |
| 64 | heavy_wait_secs = 10 # queue time for a heavy permit before a 503 |
| 65 | max_requests = 512 # requests in flight; more get an immediate 503 |
| 66 | request_timeout_secs = 30 # until the response starts; streamed bodies are not cut |
| 67 | log_scan = 10000 # commits examined per page by path/grep log filters |
| 68 | diff_files = 300 # larger commits show the file list only |
| 69 | diff_lines = 10000 # changed lines rendered per commit |
| 70 | diff_file_lines = 2000 # changed lines rendered per file |
| 71 | |
| 72 | [log] |
| 73 | level = "info" # RUST_LOG takes precedence when set |