[s3] bucket = "" region = "us-east-1" endpoint = "" access_key_id = "" secret_access_key = "" path_style = false request_timeout_secs = 30 [redis] url = "redis://localhost:6379" mode = "standalone" database = 0 pool_size = 8 connection_timeout_secs = 2 username = "" password = "" [cache] l1_capacity = 10000 l1_ttl_secs = 0 l1_tti_secs = 0 default_ttl_secs = 0 backfill_enabled = true [cache.redis] url = "redis://localhost:6379" mode = "standalone" database = 0 pool_size = 8 connection_timeout_secs = 2 username = "" password = "" [search] enabled = false url = "http://127.0.0.1:7700" api_key = "" index_prefix = "gitdata" max_file_bytes = 1048576 chunk_lines = 160 batch_size = 100 poll_interval_secs = 2 task_timeout_secs = 120 [import] enabled = false token_secret = "" allowed_hosts = [] allow_insecure_tls = false max_concurrent_jobs = 2 clone_timeout_secs = 3600 api_timeout_secs = 30 poll_interval_secs = 3 max_attempts = 5 max_repo_bytes = 0 stale_lock_secs = 1800 [database] url = "postgres://postgres:postgres@localhost:5432/gitdata" host = "" port = 5432 username = "postgres" password = "" database = "gitdata" schema_search_path = "public" application_name = "gitdata" ssl_mode = "prefer" max_connections = 16 min_connections = 2 connect_timeout_secs = 10 idle_timeout_secs = 600 acquire_timeout_secs = 10 max_lifetime_secs = 1800 sqlx_logging = false replicas = [] [session] mode = "opt_in" cookie_name = "gitdata_session" cookie_domain = "" cookie_path = "/" cookie_http_only = true cookie_secure = false cookie_same_site = "lax" cookie_max_age_secs = 604800 cookie_prefix_host = false cookie_encode_ip_and_user_agent = false lifespan_secs = 604800 max_lifespan_secs = 2592000 memory_lifespan_secs = 1800 table_name = "session" key = "" database_key = "" always_save = false db_update_interval_secs = 60 purge_database_update_secs = 86400 enable_bloom_filter = true [pow] difficulty = 16 max_difficulty = 24 expires_secs = 60 mac_key = "" [auth.password_policy] min_length = 8 require_upper = true require_lower = true require_digit = true require_symbol = false [auth] verify_code_ttl_secs = 600 verify_code_len = 6 reset_token_ttl_secs = 1800 reset_token_bytes = 32 email_code_rate_limit_secs = 60 max_verify_attempts = 5 min_age = 13 totp_encryption_key = "" chat_jwt_sec = "" [[auth.agreements]] key = "terms" version = "0.1.0" title = "Terms of Service" content_md = "Placeholder terms of service." [[auth.agreements]] key = "privacy" version = "0.1.0" title = "Privacy Policy" content_md = "Placeholder privacy policy." [web] web_base_url = "http://localhost:3000" cors_allow_origins = [] cors_allow_credentials = false [user] deletion_grace_days = 14 email_code_rate_limit_secs = 60 email_verify_code_ttl_secs = 900 email_verify_max_attempts = 5 email_verify_code_len = 6 [quota] space_create_per_day = 10 room_create_per_day = 50 issue_create_per_day = 300 pull_create_per_day = 200 comment_create_per_day = 1000 dm_open_per_day = 100 webhook_create_per_day = 20 [space] max_pagination = 100 default_pagination = 20 max_space_name_len = 64 max_space_desc_len = 512 max_group_name_len = 64 max_alias_name_len = 64 max_invite_email_len = 254 allow_self_join_groups = false max_dir_nodes = 5000 [chat] max_pagination = 200 default_pagination = 50 max_message_len = 4000 max_topic_len = 1024 max_thread_name_len = 255 max_reaction_emoji_len = 64 max_emoji_name_len = 64 max_bookmark_title_len = 255 max_webhook_name_len = 100 max_mentions_per_message = 20 typing_ttl_secs = 5 presence_ttl_secs = 300 [chat.ws] ticket_ttl_secs = 60 heartbeat_secs = 30 max_subscriptions = 64 max_frame_bytes = 262144 history_limit = 200 [chat.upload] max_size = 104857600 presign_ttl_secs = 3600 [issues] max_pagination = 100 default_pagination = 20 max_board_name_len = 100 max_title_len = 255 max_body_len = 65535 max_comment_len = 65535 max_label_name_len = 50 max_label_color_len = 7 max_milestone_title_len = 100 max_milestone_description_len = 1024 max_reaction_emoji_len = 32 max_mentions_per_message = 20 [git] repo_root = "/opt/gitdata/repos" objects_root = "/opt/gitdata/objects" max_blob_size = 104857600 git_command_timeout_secs = 300 git_rpc_timeout_secs = 3600 base_url = "http://localhost:3000" http_clone_base_url = "" ssh_clone_host = "" ssh_clone_port = 0 ssh_clone_user = "git" graphql_complexity_limit = 1000 graphql_introspection = true [git.sync] lock_ttl_secs = 120 max_commits_per_sync = 5000 concurrency = 4 queue_topic = "gitdata:tasks" dlq_topic = "gitdata:dlq" max_lock_retries = 5 max_languages = 20 language_timeout_secs = 30 brpop_timeout_secs = 5 git_command_timeout_secs = 120 [git.ssh] bind_addr = "0.0.0.0" port = 22 host_key_path = "/opt/gitdata/ssh_host_ed25519" banner = "" max_sessions = 64 auth_rejection_time = 2 inactivity_timeout = 300 keepalive_interval = 30 keepalive_max = 3 [email] enabled = false smtp_host = "smtp.example.com" smtp_port = 587 smtp_username = "" smtp_password = "" from_address = "[email protected]" from_name = "GitData" connection_timeout_ms = 5000 response_timeout_ms = 30000 max_attachment_bytes = 26214400 default_locale = "en" template_dir = "config/email_templates" [email_queue] enabled = false channel_prefix = "email" subscriber_group_id = "email-worker" max_retries = 3 retry_backoff_ms = 500 [apihost] enabled = true bind_addr = "0.0.0.0" port = 3000 admin_uids = [] [githost] enabled = true http_bind_addr = "0.0.0.0" http_port = 9418 [im] enabled = true bind_addr = "0.0.0.0" port = 3001 [health] enabled = true bind_addr = "0.0.0.0" [health.synchost] port = 3002 [health.mails] port = 3003 [admin] enabled = true bind_addr = "0.0.0.0" port = 3004 seed_username = "" seed_password = "" session_cookie_name = "gitdata_admin_session" session_table_name = "admin_session" cors_allow_origins = [] cors_allow_credentials = false