LOCAL=true DEBUG_I18N=false DISABLE_SETTINGS=false UA_STRING="gh:WentTheFox/Fantastick" DISCORD_INVITE_URL="https://discord.gg/#example-invite-url" DATABASE_URL="postgresql://username:password@127.0.0.1:5432/fantastick?schema=public" SHADOW_DATABASE_URL="postgresql://username:password@127.0.0.1:5432/fantastick_shadow?schema=public" # --- Docker Compose only (ignored for bare-metal/pm2 self-hosting) --- # Used to provision the postgres container and to build DATABASE_URL for the # app/queue-worker/migrate containers. See "Self-Hosting" in README.md. POSTGRES_USER=fantastick POSTGRES_PASSWORD=change-me POSTGRES_DB=fantastick # Discord API DISCORD_BOT_TOKEN= DISCORD_CLIENT_ID= DISCORD_FEED_WEBHOOK_URL= # Optional: mirrors warn/error logs to this webhook in addition to the console DISCORD_LOG_WEBHOOK_URL= # Telegram API TELEGRAM_BOT_TOKEN= # Bare-metal/pm2 only (ignored for Docker, which already sets this to its # apt-installed chromium): path to a local Chromium/Chrome binary, used to # render animated (.tgs) stickers to GIF during Telegram pack imports. PUPPETEER_EXECUTABLE_PATH= # Upload API # Generic remote file-upload API for storing sticker files instead of the local # filesystem. When disabled, stickers keep saving to the local `fs/` directory. # No authentication headers are ever sent; bake any secret/key into # UPLOAD_API_POST_URL itself (e.g. a pre-signed-style URL with the key embedded # in the path, like https://example.com/upload/). UPLOAD_API_ENABLED=false UPLOAD_API_POST_URL=https://example.com/upload/ # Key in the API's JSON response holding the full-size image URL UPLOAD_API_RESPONSE_FIELD=url # multipart/form-data field name the file is sent under. Defaults to "file" if unset. UPLOAD_API_FILE_FIELD=file # Optional: key in the API's JSON response holding a one-time delete URL for the # uploaded file. Leave unset if the API doesn't support deletion. UPLOAD_API_DELETE_URL_FIELD=delete_url # OpenSearch (optional) # Speeds up sticker-name autocomplete. Leave OPENSEARCH_URL empty to search in Postgres only. # Keep the cluster private (loopback/internal network): the bot is its only client, and # every query it sends is filtered to the requesting user's own + public packs. OPENSEARCH_URL= OPENSEARCH_INDEX=fantastick-stickers OPENSEARCH_USERNAME= OPENSEARCH_PASSWORD= # Hot-reloads command/component handler implementations without restarting the # process when running `pnpm dev` (tsx from source). Ignored when running the # compiled build/ output. DEV_WATCH=false