APP_NAME=Koel APP_ENV=production APP_DEBUG=true APP_URL=http://localhost:8000 # A random 32-char string. You can leave this empty if use php artisan koel:init. APP_KEY= # Database connection name, which corresponds to the database driver. # Possible values are: # mysql (MySQL/MariaDB - default) # pgsql (PostgreSQL) # sqlsrv (Microsoft SQL Server) # sqlite-persistent (Local sqlite file) # IMPORTANT: This value must present for `artisan koel:init` command to work. DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=koel DB_USERNAME=koel DB_PASSWORD= # Some providers (e.g. Heroku) provide a "database URL" instead separated config values, which # you can use here instead. DATABASE_URL= # The absolute path to the root CA bundle if you're connecting to the MySQL database via SSL. MYSQL_ATTR_SSL_CA= # The storage driver. Valid values are: # local: Store files on the server's local filesystem. # sftp: Store files on an SFTP server. # s3: Store files on Amazon S3 or a S3-compatible service (e.g. Cloudflare R2 or DigitalOcean Spaces). Koel Plus only. # dropbox: Store files on Dropbox. Koel Plus only. STORAGE_DRIVER=local # The ABSOLUTE path to your media. This value can always be changed later via the web interface. # Required if you're using the local file system to store your media (STORAGE_DRIVER=local). MEDIA_PATH= # S3 or S3-compatible service settings. Required if you're using S3 to store your media (STORAGE_DRIVER=s3). # Remember to set CORS policy to allow access from your Koel's domain (or "*"). AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= # For Cloudflare R2, set this to "auto". For S3 and other services, set this to the region of your bucket. AWS_REGION= AWS_ENDPOINT= AWS_BUCKET= # Dropbox settings. Required if you're using Dropbox to store your media (STORAGE_DRIVER=dropbox) # Follow these steps to have these values filled: # 1. Create a Dropbox app at https://www.dropbox.com/developers/apps # 2. Run `php artisan koel:setup-dropbox` from the CLI and follow the instructions. DROPBOX_APP_KEY= DROPBOX_APP_SECRET= DROPBOX_REFRESH_TOKEN= # SFTP settings. Required if you're using SFTP to store your media (STORAGE_DRIVER=sftp). SFTP_HOST= SFTP_PORT= # The absolute path of the directory to store the media files on the SFTP server. # Make sure the directory exists and is writable by the SFTP user. SFTP_ROOT= # You can use either a username/password pair… SFTP_USERNAME= SFTP_PASSWORD= # …or private key authentication: SFTP_PRIVATE_KEY= SFTP_PASSPHRASE= # By default, Koel ignores dot files and folders. This greatly improves performance if your media # root have folders like .git or .cache. If by any chance your media files are under a dot folder, # set the following setting to false. IGNORE_DOT_FILES=true # The maximum scan time, in seconds. Increase this if you have a huge library. # Note: This setting doesn't have effect when scanning via koel:sync. APP_MAX_SCAN_TIME=600 # The memory limit, in MB, used by the scanning process. # For example, if you want to set a memory limit of 2048MB, enter "2048" (without # quotes) here. MEMORY_LIMIT= # The streaming method. # Can be either 'php' (default), 'x-sendfile', or 'x-accel-redirect' # See https://docs.koel.dev/usage/streaming for more information. # Note: This setting doesn't have effect if the media needs transcoding (e.g. FLAC). # ################################################## # IMPORTANT: It's HIGHLY recommended to use 'x-sendfile' or 'x-accel-redirect' if # you plan to use the Koel mobile apps. # ################################################## STREAMING_METHOD=php # Full text search driver. # Koel supports all drivers supported by Laravel (see https://laravel.com/docs/9.x/scout). # Available drivers: 'tntsearch' (default), 'database', 'algolia' or 'meilisearch'. # For Algolia or MeiliSearch, you need to provide the corresponding credentials. SCOUT_DRIVER=tntsearch ALGOLIA_APP_ID= ALGOLIA_SECRET= MEILISEARCH_HOST= MEILISEARCH_KEY= # Last.fm API can be used to fetch artist and album information, as well as to # allow users to connect to their Last.fm account and scrobble. # To integrate Koel with Last.fm, create an API account at # https://www.last.fm/api/account/create and set the credentials here. # Consult Koel's doc for more information. LASTFM_API_KEY= LASTFM_API_SECRET= # Spotify API can be used to fetch artist and album images. # To integrate Koel with Spotify, create a Spotify application at # https://developer.spotify.com/dashboard/applications and set the credentials here. # Consult Koel's docs for more information. SPOTIFY_CLIENT_ID= SPOTIFY_CLIENT_SECRET= # To integrate Koel with YouTube, set the API key here. # See https://docs.koel.dev/service-integrations#youtube for more information. YOUTUBE_API_KEY= # You can also configure Koel to use a CDN to serve the media files. # This url must be mapped to the home URL of your Koel's installation. # No trailing slash. CDN_URL= # To transcode FLAC to MP3 and stream it on the fly, make sure the following settings are sane. # If you don't want to transcode FLAC (i.e. to stream it as-is), set this to false. TRANSCODE_FLAC=false # The full path of ffmpeg binary. FFMPEG_PATH=/usr/local/bin/ffmpeg # The bit rate of the output mp3 stream. Higher value results in better quality, # but slower streaming and more bandwidth. OUTPUT_BIT_RATE=128 # Whether to allow song downloading. # Note that if you're downloading more than one song, Koel will zip them up # using PHP's ZipArchive. So if the module isn't available in the current # environment, such a download will (silently) fail. ALLOW_DOWNLOAD=true # Whether to create a backup of a song when deleting it from the filesystem. BACKUP_ON_DELETE=true # If using SSO, set the providers details here. Koel will automatically enable SSO if these values are set. # Create an OAuth client and get these values from https://console.developers.google.com/apis/credentials SSO_GOOGLE_CLIENT_ID= SSO_GOOGLE_CLIENT_SECRET= # The domain that users must belong to in order to be able to log in. SSO_GOOGLE_HOSTED_DOMAIN=yourdomain.com # Koel can be configured to authenticate users via a reverse proxy. # To enable this feature, set PROXY_AUTH_ENABLED to true and provide the necessary configuration below. PROXY_AUTH_ENABLED=false # The header name that contains the unique identifier for the user PROXY_AUTH_USER_HEADER=remote-user # The header name that contains the user's preferred, humanly-readable name PROXY_AUTH_PREFERRED_NAME_HEADER=remote-preferred-name # A comma-separated list of allowed proxy IPs or CIDRs, for example, 10.10.1.0/24 or 2001:0db8:/32 # If empty, NO requests will be allowed (which means proxy authentication is disabled). PROXY_AUTH_ALLOW_LIST= # Sync logs can be found under storage/logs/. Valid options are: # all: Log everything (errored-, skipped-, and successfully processed file). # error: Log errors only. This is the default. SYNC_LOG_LEVEL=error # Koel attempts to detect if your website uses HTTPS and generates secure URLs accordingly. # If this attempt fails for any reason, you can force it by setting this value to true. FORCE_HTTPS= # Pusher configuration, for interesting features such as remote controlling. PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_APP_CLUSTER= # The following settings are for Koel to send emails, for example to send user invitations and reset passwords. MAIL_FROM_ADDRESS="hello@example.com" MAIL_FROM_NAME="${APP_NAME}" MAIL_MAILER=smtp MAIL_HOST=mailhog MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null SQS_PUBLIC_KEY= SQS_SECRET_KEY= SQS_QUEUE_PREFIX= SQS_QUEUE_NAME= SQS_QUEUE_REGION= # The variables below are Laravel-specific. # You can change them if you know what you're doing. Otherwise, just leave them as-is. BROADCAST_DRIVER=log CACHE_DRIVER=file FILESYSTEM_DISK=local QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120