# Plugins

AzuraCast contains a plugin system that can be used to extend AzuraCast without having to modifying AzuraCasts code. When you need to modify AzuraCasts behavior you should use the plugin system so that you can still easily update your AzuraCast installation without losing any modifications.


## Example Plugin {#example-plugin}


We have built an example plugin that you should use as the base for your own plugin. You can find the git repository at:

https://github.com/AzuraCast/example-plugin


## Including Plugins {#including-plugins}


Plugins are automatically discovered if they're located in the `/plugins` directory relative to the main AzuraCast installation. Plugins are ignored by the parent AzuraCast instance, so you can update your instance any time you like without worrying about your plugins being removed.

You can clone the plugin directory anywhere you want on the host machine, then create a `docker-compose.override.yml` in your `/var/azuracast` directory to mount the plugin as a volume in the correct location, like so:

```yaml
services:
  web:
    environment:
      AZURACAST_PLUGIN_MODE: true
    volumes:
      - ./path_to_plugin:/var/azuracast/www/plugins/example-plugin:ro
```

Make sure to update and restart the Docker containers afterwards (using `./docker.sh update`).


## Additional Information {#additional-information}


Details about how to build plugins, what events are available, etc. are included in the documentation of the [Example Plugin](https://github.com/AzuraCast/example-plugin).
