* initial elasticsearch impl * working elastic cluster * replace SearchError with ApiError for preparation of search backend * start factoring meili out to trait * move meili to backend * update routes to use search backend trait * wip * Update projects.rs * search backend is only init'd once in config * wip * wip: backend agnostic * change search internal routes to delegate to backend * initial elasticsearch impl * fix filtering * elastic impl * refactor indexing into its own module * clean up elastic code * fix ci * fix tests * fix elastic health check * fix up env rebase * fix compile * dummy commit to update github pr * Fix rebase * Elastic basic https auth * Fix duplicate projects showing up * Fix up tests * Replace search `ApiErrors` with `eyre::Reports`, propagate background task errors * clean up agents files * make index chunk size configurable * make `match_phrase` in elastic case-insensitive * use current/next indices and swap between them * test case for error body * Fix failing case * da merge * factor out common stuff from search backends * allow fetching hit metadata from search results * allow customising elasticsearch search config * bit of docs * add mappings to indices for elastic * Implement Typesense * wip * fix up some sort fields stuff * use different approach to filterable field sets * remove a bunch of search fields which weren't used for filtering * bucket text matches * Bucketing by text_match for typesense * fix tombi lint * fix some sentry errors and dont prioritise 2+ term matches * tweak ts query settings * expose some more search settings * query sort changes * small fixes * should fix pagination stuff * fix healthcheck maybe * ragebait ci * tests * tests * revert environment
191 lines
4.5 KiB
Plaintext
191 lines
4.5 KiB
Plaintext
DEBUG=true
|
|
RUST_LOG=info,sqlx::query=warn
|
|
SENTRY_DSN=none
|
|
SENTRY_ENVIRONMENT=development
|
|
SENTRY_TRACES_SAMPLE_RATE=0.1
|
|
|
|
SITE_URL=http://localhost:3000
|
|
# This CDN URL matches the local storage backend set below, which uses MOCK_FILE_PATH
|
|
CDN_URL=file:///tmp/modrinth
|
|
LABRINTH_ADMIN_KEY=feedbeef
|
|
LABRINTH_MEDAL_KEY=
|
|
LABRINTH_EXTERNAL_NOTIFICATION_KEY=beeffeed
|
|
RATE_LIMIT_IGNORE_KEY=feedbeef
|
|
|
|
DATABASE_URL=postgresql://labrinth:labrinth@localhost/labrinth
|
|
DATABASE_MIN_CONNECTIONS=0
|
|
DATABASE_MAX_CONNECTIONS=16
|
|
|
|
SEARCH_BACKEND=meilisearch
|
|
|
|
# Meilisearch configuration
|
|
MEILISEARCH_READ_ADDR=http://localhost:7700
|
|
MEILISEARCH_WRITE_ADDRS=http://localhost:7700
|
|
# 5 minutes in milliseconds
|
|
SEARCH_OPERATION_TIMEOUT=300000
|
|
|
|
ELASTICSEARCH_URL=http://localhost:9200
|
|
ELASTICSEARCH_INDEX_PREFIX=labrinth
|
|
|
|
# # For a sharded Meilisearch setup (sharded-meilisearch docker compose profile)
|
|
# MEILISEARCH_READ_ADDR=http://localhost:7710
|
|
# MEILISEARCH_WRITE_ADDRS=http://localhost:7700,http://localhost:7701
|
|
|
|
SEARCH_BACKEND=typesense
|
|
|
|
MEILISEARCH_KEY=modrinth
|
|
MEILISEARCH_META_NAMESPACE=
|
|
|
|
# Elasticsearch configuration
|
|
ELASTICSEARCH_URL=http://localhost:9200
|
|
ELASTICSEARCH_INDEX_PREFIX=labrinth
|
|
ELASTICSEARCH_USERNAME=
|
|
ELASTICSEARCH_PASSWORD=
|
|
|
|
SEARCH_INDEX_CHUNK_SIZE=5000
|
|
TYPESENSE_URL=http://localhost:8108
|
|
TYPESENSE_API_KEY=modrinth
|
|
TYPESENSE_INDEX_PREFIX=labrinth
|
|
|
|
REDIS_URL=redis://localhost
|
|
REDIS_MIN_CONNECTIONS=0
|
|
REDIS_MAX_CONNECTIONS=10000
|
|
|
|
# Must bind to broadcast, not localhost, because some
|
|
# Docker services (Gotenberg) must be able to reach the backend
|
|
# from a different network interface
|
|
BIND_ADDR=0.0.0.0:8000
|
|
SELF_ADDR=http://127.0.0.1:8000
|
|
|
|
MODERATION_SLACK_WEBHOOK=
|
|
PUBLIC_DISCORD_WEBHOOK=
|
|
CLOUDFLARE_INTEGRATION=false
|
|
|
|
PAYOUT_ALERT_SLACK_WEBHOOK=none
|
|
TREMENDOUS_BALANCE_ALERT_THRESHOLD=0
|
|
PAYPAL_BALANCE_ALERT_THRESHOLD=0
|
|
BREX_BALANCE_ALERT_THRESHOLD=0
|
|
|
|
STORAGE_BACKEND=local
|
|
MOCK_FILE_PATH=/tmp/modrinth
|
|
|
|
S3_PUBLIC_BUCKET_NAME=none
|
|
S3_PUBLIC_USES_PATH_STYLE_BUCKET=false
|
|
S3_PUBLIC_REGION=none
|
|
S3_PUBLIC_URL=none
|
|
S3_PUBLIC_ACCESS_TOKEN=none
|
|
S3_PUBLIC_SECRET=none
|
|
|
|
S3_PRIVATE_BUCKET_NAME=none
|
|
S3_PRIVATE_USES_PATH_STYLE_BUCKET=false
|
|
S3_PRIVATE_REGION=none
|
|
S3_PRIVATE_URL=none
|
|
S3_PRIVATE_ACCESS_TOKEN=none
|
|
S3_PRIVATE_SECRET=none
|
|
|
|
# 1 hour
|
|
LOCAL_INDEX_INTERVAL=3600
|
|
# 30 minutes
|
|
VERSION_INDEX_INTERVAL=1800
|
|
|
|
RATE_LIMIT_IGNORE_IPS='["127.0.0.1"]'
|
|
|
|
WHITELISTED_MODPACK_DOMAINS='["cdn.modrinth.com", "github.com", "raw.githubusercontent.com"]'
|
|
|
|
ALLOWED_CALLBACK_URLS='["localhost", ".modrinth.com", "127.0.0.1", "[::1]"]'
|
|
|
|
GITHUB_CLIENT_ID=none
|
|
GITHUB_CLIENT_SECRET=none
|
|
|
|
GITLAB_CLIENT_ID=none
|
|
GITLAB_CLIENT_SECRET=none
|
|
|
|
DISCORD_CLIENT_ID=none
|
|
DISCORD_CLIENT_SECRET=none
|
|
|
|
MICROSOFT_CLIENT_ID=none
|
|
MICROSOFT_CLIENT_SECRET=none
|
|
|
|
GOOGLE_CLIENT_ID=none
|
|
GOOGLE_CLIENT_SECRET=none
|
|
|
|
PAYPAL_API_URL=https://api-m.sandbox.paypal.com/v1/
|
|
PAYPAL_WEBHOOK_ID=none
|
|
PAYPAL_CLIENT_ID=none
|
|
PAYPAL_CLIENT_SECRET=none
|
|
PAYPAL_NVP_USERNAME=none
|
|
PAYPAL_NVP_PASSWORD=none
|
|
PAYPAL_NVP_SIGNATURE=none
|
|
|
|
STEAM_API_KEY=none
|
|
|
|
TREMENDOUS_API_URL=https://testflight.tremendous.com/api/v2/
|
|
TREMENDOUS_API_KEY=none
|
|
TREMENDOUS_PRIVATE_KEY=none
|
|
TREMENDOUS_CAMPAIGN_ID=none
|
|
|
|
HCAPTCHA_SECRET=none
|
|
|
|
SMTP_FROM_NAME=Modrinth
|
|
SMTP_FROM_ADDRESS=no-reply@mail.modrinth.com
|
|
SMTP_USERNAME=
|
|
SMTP_PASSWORD=
|
|
SMTP_HOST=localhost
|
|
SMTP_PORT=1025
|
|
SMTP_TLS=none
|
|
|
|
SITE_VERIFY_EMAIL_PATH=auth/verify-email
|
|
SITE_RESET_PASSWORD_PATH=auth/reset-password
|
|
SITE_BILLING_PATH=none
|
|
|
|
SENDY_URL=none
|
|
SENDY_LIST_ID=none
|
|
SENDY_API_KEY=none
|
|
|
|
ANALYTICS_ALLOWED_ORIGINS='["http://127.0.0.1:3000", "http://localhost:3000", "https://modrinth.com", "https://www.modrinth.com", "*"]'
|
|
|
|
CLICKHOUSE_REPLICATED=false
|
|
CLICKHOUSE_URL=http://localhost:8123
|
|
CLICKHOUSE_USER=default
|
|
CLICKHOUSE_PASSWORD=default
|
|
CLICKHOUSE_DATABASE=staging_ariadne
|
|
|
|
FLAME_ANVIL_URL=none
|
|
|
|
STRIPE_API_KEY=none
|
|
STRIPE_WEBHOOK_SECRET=none
|
|
|
|
ADITUDE_API_KEY=none
|
|
|
|
PYRO_API_KEY=none
|
|
|
|
BREX_API_URL=https://platform.brexapis.com/v2/
|
|
BREX_API_KEY=none
|
|
|
|
DELPHI_URL=http://localhost:59999
|
|
DELPHI_SLACK_WEBHOOK=none
|
|
|
|
AVALARA_1099_API_URL=https://www.track1099.com/api
|
|
AVALARA_1099_API_KEY=none
|
|
AVALARA_1099_API_TEAM_ID=none
|
|
AVALARA_1099_COMPANY_ID=207337084
|
|
|
|
ANROK_API_KEY=none
|
|
ANROK_API_URL=none
|
|
|
|
GOTENBERG_URL=http://localhost:13000
|
|
GOTENBERG_CALLBACK_BASE=http://host.docker.internal:8000/_internal/gotenberg
|
|
GOTENBERG_TIMEOUT=30000
|
|
|
|
ARCHON_URL=none
|
|
|
|
MURALPAY_API_URL=https://api-staging.muralpay.com
|
|
MURALPAY_API_KEY=none
|
|
MURALPAY_TRANSFER_API_KEY=none
|
|
MURALPAY_SOURCE_ACCOUNT_ID=00000000-0000-0000-0000-000000000000
|
|
|
|
DEFAULT_AFFILIATE_REVENUE_SPLIT=0.1
|
|
SERVER_PING_TIMEOUT=10000
|
|
SERVER_PING_RETRIES=3
|
|
SERVER_PING_MIN_INTERVAL_SEC=1800
|