Doplarr¶
| Description / name | Input element |
|---|---|
| Your domain name |
Overview¶
Doplarr is a chatbot used to simplify using services like Sonarr/Radarr/Overseer via the use of chat. Current platform is Discord only.
Configuration¶
Note
📢 You may also override the default setting of Doplarr working with overseer, to work with Sonarr and Radarr.
The recommended way to customize these parameters is to use the inventory. You should edit /srv/git/saltbox/inventories/host_vars/localhost.yml and add the following section.
doplarr_docker_envs_defaults:
SONARR__URL: # (1)!
RADARR__URL: # (2)!
SONARR__API: # (3)!
RADARR__API: # (4)!
DISCORD__TOKEN: # (5)!
- This line will set the Sonarr URL. Saltbox defaults to
"http://sonarr:8989". - This line will set the Radarr URL. Saltbox defaults to
"http://radarr:7878". - This line will set the Sonarr API key. Place your API key here. Wrap it in quotes.
- This line will set the Radarr API key. Place your API key here. Wrap it in quotes.
- This line will set the Discord token. Place your token here. Wrap it in quotes.
Create Discord bot¶
- Create a new Application in Discord
- Go to the Bot tab and add a new bot
-
Copy the token and paste it in
/opt/sandbox/settings.ymlin thedoplarr.discord_tokenfield:/opt/sandbox/settings.ymldoplarr: discord_token: your_discord_bot_token overseerr_url: "http://overseerr:5055" overseerr_api: -
Go to OAuth2 and under "OAuth2 URL Generator", enable
applications.commandsandbot - Copy the resulting URL and open it in your browser in order to invite your bot to your discord channel.
Set up overseer parameters¶
-
In
/opt/sandbox/settings.yml: set up the overseer url in the corresponding fielddoplarr.overseerr_urlaccording to your setings. If you have not customize saltbox settings, the default urlhttp://overseerr:5055should be correct:/opt/sandbox/settings.ymldoplarr: discord_token: your_discord_bot_token overseerr_url: "http://overseerr:5055" overseerr_api: -
In
/opt/sandbox/settings.yml: set up the overseer API key in the corresponding fielddoplarr.overseerr_apiaccording to your overseer settings. You can get your api keys in your main setting page in overseer: https://overseerr.iYOUR_DOMAIN_NAMEi/settings:/opt/sandbox/settings.ymldiscord_token: your_discord_bot_token overseerr_url: "http://overseerr:5055" overseerr_api:
Deployment¶
sb install sandbox-doplarr
Usage¶
Role Defaults¶
Use the Inventory to customize variables. (1)
-
Example override
doplarr_name: "custom_value"Avoid overriding variables ending in
_defaultWhen overriding variables that end in
_default(likedoplarr_docker_envs_default), you replace the entire default configuration. Future updates that add new default values will not be applied to your setup, potentially breaking functionality.Instead, use the corresponding
_customvariable (likedoplarr_docker_envs_custom) to add your changes. Custom values are merged with defaults, ensuring you receive updates.
doplarr_name
# Type: string
doplarr_name: doplarr
doplarr_role_discord_token
# Type: string
doplarr_role_discord_token: ""
doplarr_role_overseerr_url
# Type: string
doplarr_role_overseerr_url: ""
doplarr_role_overseerr_api
# Type: string
doplarr_role_overseerr_api: ""
doplarr_role_radarr_api
# Type: string
doplarr_role_radarr_api: ""
doplarr_role_radarr_url
# Type: string
doplarr_role_radarr_url: ""
doplarr_role_sonarr_api
# Type: string
doplarr_role_sonarr_api: ""
doplarr_role_sonarr_url
# Type: string
doplarr_role_sonarr_url: ""
doplarr_role_discord_max_results
# Type: string
doplarr_role_discord_max_results: "25"
doplarr_role_discord_role_id
# Type: string
doplarr_role_discord_role_id: ""
doplarr_role_discord_requested_msg_style
# Type: string
doplarr_role_discord_requested_msg_style: ":plain"
doplarr_role_sonarr_quality_profile
# Type: string
doplarr_role_sonarr_quality_profile: ""
doplarr_role_radarr_quality_profile
# Type: string
doplarr_role_radarr_quality_profile: ""
doplarr_role_sonarr_language_profile
# Type: string
doplarr_role_sonarr_language_profile: ""
doplarr_role_overseer_default_id
# Type: string
doplarr_role_overseer_default_id: ""
doplarr_role_partial_seasons
# Type: string
doplarr_role_partial_seasons: "true"
doplarr_role_log_level
# Type: string
doplarr_role_log_level: ":info"
Container
doplarr_role_docker_container
# Type: string
doplarr_role_docker_container: "{{ doplarr_name }}"
Image
doplarr_role_docker_image_pull
# Type: bool (true/false)
doplarr_role_docker_image_pull: true
doplarr_role_docker_image_repo
# Type: string
doplarr_role_docker_image_repo: "lscr.io/linuxserver/doplarr"
doplarr_role_docker_image_tag
# Type: string
doplarr_role_docker_image_tag: "latest"
doplarr_role_docker_image
# Type: string
doplarr_role_docker_image: "{{ lookup('role_var', '_docker_image_repo', role='doplarr') }}:{{ lookup('role_var', '_docker_image_tag', role='doplarr') }}"
Envs
doplarr_role_docker_envs_default
# Type: dict
doplarr_role_docker_envs_default:
TZ: "{{ tz }}"
PUID: "{{ uid }}"
PGID: "{{ gid }}"
DISCORD__TOKEN: "{{ lookup('role_var', '_discord_token', role='doplarr') }}"
OVERSEERR__URL: "{{ lookup('role_var', '_overseerr_url', role='doplarr') }}"
OVERSEERR__API: "{{ lookup('role_var', '_overseerr_api', role='doplarr') }}"
RADARR__API: "{{ lookup('role_var', '_radarr_api', role='doplarr') }}"
RADARR__URL: "{{ lookup('role_var', '_radarr_url', role='doplarr') }}"
SONARR__API: "{{ lookup('role_var', '_sonarr_api', role='doplarr') }}"
SONARR__URL: "{{ lookup('role_var', '_sonarr_url', role='doplarr') }}"
DISCORD__MAX_RESULTS: "{{ lookup('role_var', '_discord_max_results', role='doplarr') }}"
DISCORD__ROLE_ID: "{{ lookup('role_var', '_discord_role_id', role='doplarr') }}"
DISCORD__REQUESTED_MSG_STYLE: "{{ lookup('role_var', '_discord_requested_msg_style', role='doplarr') }}"
SONARR__QUALITY_PROFILE: "{{ lookup('role_var', '_sonarr_quality_profile', role='doplarr') }}"
RADARR__QUALITY_PROFILE: "{{ lookup('role_var', '_radarr_quality_profile', role='doplarr') }}"
SONARR__LANGUAGE_PROFILE: "{{ lookup('role_var', '_sonarr_language_profile', role='doplarr') }}"
OVERSEERR__DEFAULT_ID: "{{ lookup('role_var', '_overseer_default_id', role='doplarr') }}"
PARTIAL_SEASONS: "{{ lookup('role_var', '_partial_seasons', role='doplarr') }}"
LOG_LEVEL: "{{ lookup('role_var', '_log_level', role='doplarr') }}"
doplarr_role_docker_envs_custom
# Type: list
doplarr_role_docker_envs_custom: []
Hostname
doplarr_role_docker_hostname
# Type: string
doplarr_role_docker_hostname: "{{ doplarr_name }}"
Networks
doplarr_role_docker_networks_alias
# Type: string
doplarr_role_docker_networks_alias: "{{ doplarr_name }}"
doplarr_role_docker_networks_default
# Type: list
doplarr_role_docker_networks_default: []
doplarr_role_docker_networks_custom
# Type: list
doplarr_role_docker_networks_custom: []
Restart Policy
doplarr_role_docker_restart_policy
# Type: string
doplarr_role_docker_restart_policy: unless-stopped
State
doplarr_role_docker_state
# Type: string
doplarr_role_docker_state: started
The following advanced options are available via create_docker_container but are not defined in the role. See: docker_container module
Resource Limits
doplarr_role_docker_blkio_weight
# Type: int
doplarr_role_docker_blkio_weight:
doplarr_role_docker_cpu_period
# Type: int
doplarr_role_docker_cpu_period:
doplarr_role_docker_cpu_quota
# Type: int
doplarr_role_docker_cpu_quota:
doplarr_role_docker_cpu_shares
# Type: int
doplarr_role_docker_cpu_shares:
doplarr_role_docker_cpus
# Type: string
doplarr_role_docker_cpus:
doplarr_role_docker_cpuset_cpus
# Type: string
doplarr_role_docker_cpuset_cpus:
doplarr_role_docker_cpuset_mems
# Type: string
doplarr_role_docker_cpuset_mems:
doplarr_role_docker_kernel_memory
# Type: string
doplarr_role_docker_kernel_memory:
doplarr_role_docker_memory
# Type: string
doplarr_role_docker_memory:
doplarr_role_docker_memory_reservation
# Type: string
doplarr_role_docker_memory_reservation:
doplarr_role_docker_memory_swap
# Type: string
doplarr_role_docker_memory_swap:
doplarr_role_docker_memory_swappiness
# Type: int
doplarr_role_docker_memory_swappiness:
doplarr_role_docker_shm_size
# Type: string
doplarr_role_docker_shm_size:
Security & Devices
doplarr_role_docker_cap_drop
# Type: list
doplarr_role_docker_cap_drop:
doplarr_role_docker_cgroupns_mode
# Type: string
doplarr_role_docker_cgroupns_mode:
doplarr_role_docker_device_cgroup_rules
# Type: list
doplarr_role_docker_device_cgroup_rules:
doplarr_role_docker_device_read_bps
# Type: list
doplarr_role_docker_device_read_bps:
doplarr_role_docker_device_read_iops
# Type: list
doplarr_role_docker_device_read_iops:
doplarr_role_docker_device_requests
# Type: list
doplarr_role_docker_device_requests:
doplarr_role_docker_device_write_bps
# Type: list
doplarr_role_docker_device_write_bps:
doplarr_role_docker_device_write_iops
# Type: list
doplarr_role_docker_device_write_iops:
doplarr_role_docker_devices
# Type: list
doplarr_role_docker_devices:
doplarr_role_docker_devices_default
# Type: string
doplarr_role_docker_devices_default:
doplarr_role_docker_groups
# Type: list
doplarr_role_docker_groups:
doplarr_role_docker_privileged
# Type: bool (true/false)
doplarr_role_docker_privileged:
doplarr_role_docker_security_opts
# Type: list
doplarr_role_docker_security_opts:
doplarr_role_docker_user
# Type: string
doplarr_role_docker_user:
doplarr_role_docker_userns_mode
# Type: string
doplarr_role_docker_userns_mode:
Networking
doplarr_role_docker_dns_opts
# Type: list
doplarr_role_docker_dns_opts:
doplarr_role_docker_dns_search_domains
# Type: list
doplarr_role_docker_dns_search_domains:
doplarr_role_docker_dns_servers
# Type: list
doplarr_role_docker_dns_servers:
doplarr_role_docker_domainname
# Type: string
doplarr_role_docker_domainname:
doplarr_role_docker_exposed_ports
# Type: list
doplarr_role_docker_exposed_ports:
doplarr_role_docker_hosts
# Type: dict
doplarr_role_docker_hosts:
doplarr_role_docker_hosts_use_common
# Type: bool (true/false)
doplarr_role_docker_hosts_use_common:
doplarr_role_docker_ipc_mode
# Type: string
doplarr_role_docker_ipc_mode:
doplarr_role_docker_links
# Type: list
doplarr_role_docker_links:
doplarr_role_docker_network_mode
# Type: string
doplarr_role_docker_network_mode:
doplarr_role_docker_pid_mode
# Type: string
doplarr_role_docker_pid_mode:
doplarr_role_docker_ports
# Type: list
doplarr_role_docker_ports:
doplarr_role_docker_uts
# Type: string
doplarr_role_docker_uts:
Storage
doplarr_role_docker_keep_volumes
# Type: bool (true/false)
doplarr_role_docker_keep_volumes:
doplarr_role_docker_mounts
# Type: list
doplarr_role_docker_mounts:
doplarr_role_docker_storage_opts
# Type: dict
doplarr_role_docker_storage_opts:
doplarr_role_docker_tmpfs
# Type: list
doplarr_role_docker_tmpfs:
doplarr_role_docker_volume_driver
# Type: string
doplarr_role_docker_volume_driver:
doplarr_role_docker_volumes
# Type: list
doplarr_role_docker_volumes:
doplarr_role_docker_volumes_from
# Type: list
doplarr_role_docker_volumes_from:
doplarr_role_docker_volumes_global
# Type: bool (true/false)
doplarr_role_docker_volumes_global:
doplarr_role_docker_working_dir
# Type: string
doplarr_role_docker_working_dir:
Monitoring & Lifecycle
doplarr_role_docker_auto_remove
# Type: bool (true/false)
doplarr_role_docker_auto_remove:
doplarr_role_docker_cleanup
# Type: bool (true/false)
doplarr_role_docker_cleanup:
doplarr_role_docker_force_kill
# Type: string
doplarr_role_docker_force_kill:
doplarr_role_docker_healthcheck
# Type: dict
doplarr_role_docker_healthcheck:
doplarr_role_docker_healthy_wait_timeout
# Type: int
doplarr_role_docker_healthy_wait_timeout:
doplarr_role_docker_init
# Type: bool (true/false)
doplarr_role_docker_init:
doplarr_role_docker_kill_signal
# Type: string
doplarr_role_docker_kill_signal:
doplarr_role_docker_log_driver
# Type: string
doplarr_role_docker_log_driver:
doplarr_role_docker_log_options
# Type: dict
doplarr_role_docker_log_options:
doplarr_role_docker_oom_killer
# Type: bool (true/false)
doplarr_role_docker_oom_killer:
doplarr_role_docker_oom_score_adj
# Type: int
doplarr_role_docker_oom_score_adj:
doplarr_role_docker_output_logs
# Type: bool (true/false)
doplarr_role_docker_output_logs:
doplarr_role_docker_paused
# Type: bool (true/false)
doplarr_role_docker_paused:
doplarr_role_docker_recreate
# Type: bool (true/false)
doplarr_role_docker_recreate:
doplarr_role_docker_restart_retries
# Type: int
doplarr_role_docker_restart_retries:
doplarr_role_docker_stop_timeout
# Type: int
doplarr_role_docker_stop_timeout:
Other Options
doplarr_role_docker_capabilities
# Type: list
doplarr_role_docker_capabilities:
doplarr_role_docker_cgroup_parent
# Type: string
doplarr_role_docker_cgroup_parent:
doplarr_role_docker_commands
# Type: list
doplarr_role_docker_commands:
doplarr_role_docker_create_timeout
# Type: int
doplarr_role_docker_create_timeout:
doplarr_role_docker_entrypoint
# Type: string
doplarr_role_docker_entrypoint:
doplarr_role_docker_env_file
# Type: string
doplarr_role_docker_env_file:
doplarr_role_docker_labels
# Type: dict
doplarr_role_docker_labels:
doplarr_role_docker_labels_use_common
# Type: bool (true/false)
doplarr_role_docker_labels_use_common:
doplarr_role_docker_read_only
# Type: bool (true/false)
doplarr_role_docker_read_only:
doplarr_role_docker_runtime
# Type: string
doplarr_role_docker_runtime:
doplarr_role_docker_sysctls
# Type: list
doplarr_role_docker_sysctls:
doplarr_role_docker_ulimits
# Type: list
doplarr_role_docker_ulimits:
doplarr_role_autoheal_enabled
# Enable or disable Autoheal monitoring for the container created when deploying
# Type: bool (true/false)
doplarr_role_autoheal_enabled: true
doplarr_role_depends_on
# List of container dependencies that must be running before the container start
# Type: string
doplarr_role_depends_on: ""
doplarr_role_depends_on_delay
# Delay in seconds before starting the container after dependencies are ready
# Type: string (quoted number)
doplarr_role_depends_on_delay: "0"
doplarr_role_depends_on_healthchecks
# Enable healthcheck waiting for container dependencies
# Type: string ("true"/"false")
doplarr_role_depends_on_healthchecks:
doplarr_role_discord_max_results
# Type: string
doplarr_role_discord_max_results:
doplarr_role_discord_requested_msg_style
# Type: string
doplarr_role_discord_requested_msg_style:
doplarr_role_discord_role_id
# Type: string
doplarr_role_discord_role_id:
doplarr_role_discord_token
# Type: string
doplarr_role_discord_token:
doplarr_role_diun_enabled
# Enable or disable Diun update notifications for the container created when deploying
# Type: bool (true/false)
doplarr_role_diun_enabled: true
doplarr_role_docker_controller
# Enable or disable Saltbox Docker Controller management for the container
# Type: bool (true/false)
doplarr_role_docker_controller: true
doplarr_role_docker_image_repo
# Type: string
doplarr_role_docker_image_repo:
doplarr_role_docker_image_tag
# Type: string
doplarr_role_docker_image_tag:
doplarr_role_docker_volumes_download
# Type: bool (true/false)
doplarr_role_docker_volumes_download:
doplarr_role_log_level
# Type: string
doplarr_role_log_level:
doplarr_role_overseer_default_id
# Type: string
doplarr_role_overseer_default_id:
doplarr_role_overseerr_api
# Type: string
doplarr_role_overseerr_api:
doplarr_role_overseerr_url
# Type: string
doplarr_role_overseerr_url:
doplarr_role_partial_seasons
# Type: string
doplarr_role_partial_seasons:
doplarr_role_radarr_api
# Type: string
doplarr_role_radarr_api:
doplarr_role_radarr_quality_profile
# Type: string
doplarr_role_radarr_quality_profile:
doplarr_role_radarr_url
# Type: string
doplarr_role_radarr_url:
doplarr_role_sonarr_api
# Type: string
doplarr_role_sonarr_api:
doplarr_role_sonarr_language_profile
# Type: string
doplarr_role_sonarr_language_profile:
doplarr_role_sonarr_quality_profile
# Type: string
doplarr_role_sonarr_quality_profile:
doplarr_role_sonarr_url
# Type: string
doplarr_role_sonarr_url: