Calibre¶
| Description / name | Input element |
|---|---|
| Your domain name |
Overview¶
Calibre is a cross-platform, free, and open-source suite of e-book software designed for managing digital book collections.
Deployment¶
sb install sandbox-calibre
Usage¶
Visit https://calibre.iYOUR_DOMAIN_NAMEi.
Basics¶
-
The username and password is taken from your Saltbox
accounts.ymlfile located in/srv/git/saltbox/accounts.yml -
The second books url serves the Calibre Content server and has a default user of abc and password abc, so make sure to remove/edit that user and enable 'Require username and password to access the Content server' otherwise it will be completely open.
-
Calibre is ready for use. If you added your pre-existing Calibre library to /mnt/local/Media/Books then you should see your library is ready to go. If not, then you have a blank library ready for you to fill.
Info
Running Calibre on a headless server is not very fun. If at all possible, run Calibre on your local, home computer. Use rclone to sync the files from home to google drive, and then another sync from google drive to your server so that Calibre-Web can use it.
A local database file is required. This means you cannot run either Calibre or Calibre-Web from a mounted teamdrive, and this is the biggest pain for many of us. The easiest solution is to simply have your database and book files all located in /mnt/local/Media/Books.
Both Calibre and Calibre-Web expect to find your library in /mnt/unionfs/Media/Books. Note that per standard Saltbox setup, /mnt/local is included inside /mnt/unionfs. However, both dockers also include access to anything in your /mnt directory.
Handy commands for managing your calibre docker¶
You can access advanced features of the Guacamole remote desktop using ctrl+alt+shift enabling you to use remote copy/paste and different languages.
-
Shell access whilst the container is running:
docker exec -it calibre /bin/bash -
To monitor the logs of the container in realtime:
docker logs -f calibre -
Container version number:
docker inspect -f '{{ index .Config.Labels "build_version" }}' calibre -
Image version number:
docker inspect -f '{{ index .Config.Labels "build_version" }}' linuxserver/calibre
Role Defaults¶
Use the Inventory to customize variables. (1)
-
This role supports multiple instances via
calibre_instances.Example override
calibre_role_web_subdomain: "custom"Applies to all instances of calibre
calibre2_web_subdomain: "custom2"Applies to the instance named calibre2
Avoid overriding variables ending in
_defaultWhen overriding variables that end in
_default(likecalibre_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 (likecalibre_docker_envs_custom) to add your changes. Custom values are merged with defaults, ensuring you receive updates.
calibre_instances
# Type: list
calibre_instances: ["calibre"]
Example Override
# Type: list
calibre_instances: ["calibre", "calibre2"]
calibre_role_web_subdomaincalibre2_web_subdomain
# Type: string
calibre_role_web_subdomain: "{{ calibre_name }}"
# Type: string
calibre2_web_subdomain: "{{ calibre_name }}"
calibre_role_web_domaincalibre2_web_domain
# Type: string
calibre_role_web_domain: "{{ user.domain }}"
# Type: string
calibre2_web_domain: "{{ user.domain }}"
calibre_role_web_portcalibre2_web_port
# Type: string
calibre_role_web_port: "8080"
# Type: string
calibre2_web_port: "8080"
calibre_role_web_urlcalibre2_web_url
# Type: string
calibre_role_web_url: "{{ 'https://' + (lookup('role_var', '_web_subdomain', role='calibre') + '.' + lookup('role_var', '_web_domain', role='calibre')
if (lookup('role_var', '_web_subdomain', role='calibre') | length > 0)
else lookup('role_var', '_web_domain', role='calibre')) }}"
# Type: string
calibre2_web_url: "{{ 'https://' + (lookup('role_var', '_web_subdomain', role='calibre') + '.' + lookup('role_var', '_web_domain', role='calibre')
if (lookup('role_var', '_web_subdomain', role='calibre') | length > 0)
else lookup('role_var', '_web_domain', role='calibre')) }}"
calibre_role_web2_subdomaincalibre2_web2_subdomain
# Type: string
calibre_role_web2_subdomain: "{{ calibre_name }}books"
# Type: string
calibre2_web2_subdomain: "{{ calibre_name }}books"
calibre_role_web2_domaincalibre2_web2_domain
# Type: string
calibre_role_web2_domain: "{{ user.domain }}"
# Type: string
calibre2_web2_domain: "{{ user.domain }}"
calibre_role_web2_portcalibre2_web2_port
# Type: string
calibre_role_web2_port: "8081"
# Type: string
calibre2_web2_port: "8081"
calibre_role_web2_role_web_urlcalibre2_web2_role_web_url
# Type: string
calibre_role_web2_role_web_url: "{{ 'https://' + (lookup('role_var', '_web2_subdomain', role='calibre') + '.' + lookup('role_var', '_web2_domain', role='calibre')
if (lookup('role_var', '_web2_subdomain', role='calibre') | length > 0)
else lookup('role_var', '_web2_domain', role='calibre')) }}"
# Type: string
calibre2_web2_role_web_url: "{{ 'https://' + (lookup('role_var', '_web2_subdomain', role='calibre') + '.' + lookup('role_var', '_web2_domain', role='calibre')
if (lookup('role_var', '_web2_subdomain', role='calibre') | length > 0)
else lookup('role_var', '_web2_domain', role='calibre')) }}"
calibre_role_dns_recordcalibre2_dns_record
# Type: string
calibre_role_dns_record: "{{ lookup('role_var', '_web_subdomain', role='calibre') }}"
# Type: string
calibre2_dns_record: "{{ lookup('role_var', '_web_subdomain', role='calibre') }}"
calibre_role_dns_zonecalibre2_dns_zone
# Type: string
calibre_role_dns_zone: "{{ lookup('role_var', '_web_domain', role='calibre') }}"
# Type: string
calibre2_dns_zone: "{{ lookup('role_var', '_web_domain', role='calibre') }}"
calibre_role_dns_proxycalibre2_dns_proxy
# Type: bool (true/false)
calibre_role_dns_proxy: "{{ dns_proxied }}"
# Type: bool (true/false)
calibre2_dns_proxy: "{{ dns_proxied }}"
calibre_role_dns2_recordcalibre2_dns2_record
# Type: string
calibre_role_dns2_record: "{{ lookup('role_var', '_web2_subdomain', role='calibre') }}"
# Type: string
calibre2_dns2_record: "{{ lookup('role_var', '_web2_subdomain', role='calibre') }}"
calibre_role_dns2_zonecalibre2_dns2_zone
# Type: string
calibre_role_dns2_zone: "{{ lookup('role_var', '_web2_domain', role='calibre') }}"
# Type: string
calibre2_dns2_zone: "{{ lookup('role_var', '_web2_domain', role='calibre') }}"
calibre_role_dns2_proxycalibre2_dns2_proxy
# Type: string
calibre_role_dns2_proxy: "{{ dns_proxied }}"
# Type: string
calibre2_dns2_proxy: "{{ dns_proxied }}"
calibre_role_traefik_sso_middlewarecalibre2_traefik_sso_middleware
# Type: string
calibre_role_traefik_sso_middleware: ""
# Type: string
calibre2_traefik_sso_middleware: ""
calibre_role_traefik_middleware_defaultcalibre2_traefik_middleware_default
# Type: string
calibre_role_traefik_middleware_default: "{{ traefik_default_middleware }}"
# Type: string
calibre2_traefik_middleware_default: "{{ traefik_default_middleware }}"
calibre_role_traefik_middleware_customcalibre2_traefik_middleware_custom
# Type: string
calibre_role_traefik_middleware_custom: ""
# Type: string
calibre2_traefik_middleware_custom: ""
calibre_role_traefik_certresolvercalibre2_traefik_certresolver
# Type: string
calibre_role_traefik_certresolver: "{{ traefik_default_certresolver }}"
# Type: string
calibre2_traefik_certresolver: "{{ traefik_default_certresolver }}"
calibre_role_traefik_enabledcalibre2_traefik_enabled
# Type: bool (true/false)
calibre_role_traefik_enabled: true
# Type: bool (true/false)
calibre2_traefik_enabled: true
calibre_role_books_traefik_sso_middlewarecalibre2_books_traefik_sso_middleware
# Type: string
calibre_role_books_traefik_sso_middleware: ""
# Type: string
calibre2_books_traefik_sso_middleware: ""
calibre_role_books_traefik_middleware_defaultcalibre2_books_traefik_middleware_default
# Type: string
calibre_role_books_traefik_middleware_default: "{{ traefik_default_middleware
+ (',' + lookup('role_var', '_books_traefik_sso_middleware', role='calibre')
if (lookup('role_var', '_books_traefik_sso_middleware', role='calibre') | length > 0)
else '') }}"
# Type: string
calibre2_books_traefik_middleware_default: "{{ traefik_default_middleware
+ (',' + lookup('role_var', '_books_traefik_sso_middleware', role='calibre')
if (lookup('role_var', '_books_traefik_sso_middleware', role='calibre') | length > 0)
else '') }}"
calibre_role_books_traefik_middleware_customcalibre2_books_traefik_middleware_custom
# Type: string
calibre_role_books_traefik_middleware_custom: ""
# Type: string
calibre2_books_traefik_middleware_custom: ""
Container
calibre_role_docker_containercalibre2_docker_container
# Type: string
calibre_role_docker_container: "{{ calibre_name }}"
# Type: string
calibre2_docker_container: "{{ calibre_name }}"
Image
calibre_role_docker_image_pullcalibre2_docker_image_pull
# Type: bool (true/false)
calibre_role_docker_image_pull: true
# Type: bool (true/false)
calibre2_docker_image_pull: true
calibre_role_docker_image_repocalibre2_docker_image_repo
# Type: string
calibre_role_docker_image_repo: "lscr.io/linuxserver/calibre"
# Type: string
calibre2_docker_image_repo: "lscr.io/linuxserver/calibre"
calibre_role_docker_image_tagcalibre2_docker_image_tag
# Type: string
calibre_role_docker_image_tag: "latest"
# Type: string
calibre2_docker_image_tag: "latest"
calibre_role_docker_imagecalibre2_docker_image
# Type: string
calibre_role_docker_image: "{{ lookup('role_var', '_docker_image_repo', role='calibre') }}:{{ lookup('role_var', '_docker_image_tag', role='calibre') }}"
# Type: string
calibre2_docker_image: "{{ lookup('role_var', '_docker_image_repo', role='calibre') }}:{{ lookup('role_var', '_docker_image_tag', role='calibre') }}"
Envs
calibre_role_docker_envs_defaultcalibre2_docker_envs_default
# Type: dict
calibre_role_docker_envs_default:
PUID: "{{ uid }}"
PGID: "{{ gid }}"
TZ: "{{ tz }}"
CUSTOM_USER: "{{ user.name }}"
PASSWORD: "{{ user.pass }}"
LIBRARYINTERNALPATH: "/library"
# Type: dict
calibre2_docker_envs_default:
PUID: "{{ uid }}"
PGID: "{{ gid }}"
TZ: "{{ tz }}"
CUSTOM_USER: "{{ user.name }}"
PASSWORD: "{{ user.pass }}"
LIBRARYINTERNALPATH: "/library"
calibre_role_docker_envs_customcalibre2_docker_envs_custom
# Type: dict
calibre_role_docker_envs_custom: {}
# Type: dict
calibre2_docker_envs_custom: {}
Volumes
calibre_role_docker_volumes_defaultcalibre2_docker_volumes_default
# Type: list
calibre_role_docker_volumes_default:
- "{{ lookup('role_var', '_paths_location', role='calibre') }}:/config"
- "/mnt/unionfs/Media/Books:/library"
# Type: list
calibre2_docker_volumes_default:
- "{{ lookup('role_var', '_paths_location', role='calibre') }}:/config"
- "/mnt/unionfs/Media/Books:/library"
calibre_role_docker_volumes_customcalibre2_docker_volumes_custom
# Type: list
calibre_role_docker_volumes_custom: []
# Type: list
calibre2_docker_volumes_custom: []
Labels
calibre_role_docker_labels_defaultcalibre2_docker_labels_default
# Type: list
calibre_role_docker_labels_default:
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}-http.entrypoints": "web" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}-http.service": "{{ lookup("role_var", "_web2_subdomain", role="calibre") }}" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}-http.rule": "Host(`{{ lookup("role_var", "_web2_subdomain", role="calibre") + "." + lookup("role_var", "_web2_domain", role="calibre") }}`)" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}-http.middlewares": "{{ traefik_default_middleware_http }}" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}-http.priority": "20" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.entrypoints": "websecure" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.service": "{{ lookup("role_var", "_web2_subdomain", role="calibre") }}" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.rule": "Host(`{{ lookup("role_var", "_web2_subdomain", role="calibre") + "." + lookup("role_var", "_web2_domain", role="calibre") }}`)" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.middlewares": "{{ lookup("role_var", "_books_traefik_middleware", role="calibre") }}" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.tls.options": "securetls@file" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.tls.certresolver": "{{ lookup("role_var", "_traefik_certresolver", role="calibre") }}" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.priority": "20" }'
- '{ "traefik.http.services.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.loadbalancer.server.port": "{{ lookup("role_var", "_web2_port", role="calibre") }}" }'
# Type: list
calibre2_docker_labels_default:
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}-http.entrypoints": "web" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}-http.service": "{{ lookup("role_var", "_web2_subdomain", role="calibre") }}" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}-http.rule": "Host(`{{ lookup("role_var", "_web2_subdomain", role="calibre") + "." + lookup("role_var", "_web2_domain", role="calibre") }}`)" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}-http.middlewares": "{{ traefik_default_middleware_http }}" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}-http.priority": "20" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.entrypoints": "websecure" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.service": "{{ lookup("role_var", "_web2_subdomain", role="calibre") }}" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.rule": "Host(`{{ lookup("role_var", "_web2_subdomain", role="calibre") + "." + lookup("role_var", "_web2_domain", role="calibre") }}`)" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.middlewares": "{{ lookup("role_var", "_books_traefik_middleware", role="calibre") }}" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.tls.options": "securetls@file" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.tls.certresolver": "{{ lookup("role_var", "_traefik_certresolver", role="calibre") }}" }'
- '{ "traefik.http.routers.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.priority": "20" }'
- '{ "traefik.http.services.{{ lookup("role_var", "_web2_subdomain", role="calibre") }}.loadbalancer.server.port": "{{ lookup("role_var", "_web2_port", role="calibre") }}" }'
calibre_role_docker_labels_customcalibre2_docker_labels_custom
# Type: dict
calibre_role_docker_labels_custom: {}
# Type: dict
calibre2_docker_labels_custom: {}
Hostname
calibre_role_docker_hostnamecalibre2_docker_hostname
# Type: string
calibre_role_docker_hostname: "{{ calibre_name }}"
# Type: string
calibre2_docker_hostname: "{{ calibre_name }}"
Networks
calibre_role_docker_networks_aliascalibre2_docker_networks_alias
# Type: string
calibre_role_docker_networks_alias: "{{ calibre_name }}"
# Type: string
calibre2_docker_networks_alias: "{{ calibre_name }}"
calibre_role_docker_networks_defaultcalibre2_docker_networks_default
# Type: list
calibre_role_docker_networks_default: []
# Type: list
calibre2_docker_networks_default: []
calibre_role_docker_networks_customcalibre2_docker_networks_custom
# Type: list
calibre_role_docker_networks_custom: []
# Type: list
calibre2_docker_networks_custom: []
Security Opts
calibre_role_docker_security_opts_defaultcalibre2_docker_security_opts_default
# Type: list
calibre_role_docker_security_opts_default:
- seccomp=unconfined
# Type: list
calibre2_docker_security_opts_default:
- seccomp=unconfined
calibre_role_docker_security_opts_customcalibre2_docker_security_opts_custom
# Type: list
calibre_role_docker_security_opts_custom: []
# Type: list
calibre2_docker_security_opts_custom: []
Restart Policy
calibre_role_docker_restart_policycalibre2_docker_restart_policy
# Type: string
calibre_role_docker_restart_policy: unless-stopped
# Type: string
calibre2_docker_restart_policy: unless-stopped
State
calibre_role_docker_statecalibre2_docker_state
# Type: string
calibre_role_docker_state: started
# Type: string
calibre2_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
calibre_role_docker_blkio_weightcalibre2_docker_blkio_weight
# Type: int
calibre_role_docker_blkio_weight:
# Type: int
calibre2_docker_blkio_weight:
calibre_role_docker_cpu_periodcalibre2_docker_cpu_period
# Type: int
calibre_role_docker_cpu_period:
# Type: int
calibre2_docker_cpu_period:
calibre_role_docker_cpu_quotacalibre2_docker_cpu_quota
# Type: int
calibre_role_docker_cpu_quota:
# Type: int
calibre2_docker_cpu_quota:
calibre_role_docker_cpu_sharescalibre2_docker_cpu_shares
# Type: int
calibre_role_docker_cpu_shares:
# Type: int
calibre2_docker_cpu_shares:
calibre_role_docker_cpuscalibre2_docker_cpus
# Type: string
calibre_role_docker_cpus:
# Type: string
calibre2_docker_cpus:
calibre_role_docker_cpuset_cpuscalibre2_docker_cpuset_cpus
# Type: string
calibre_role_docker_cpuset_cpus:
# Type: string
calibre2_docker_cpuset_cpus:
calibre_role_docker_cpuset_memscalibre2_docker_cpuset_mems
# Type: string
calibre_role_docker_cpuset_mems:
# Type: string
calibre2_docker_cpuset_mems:
calibre_role_docker_kernel_memorycalibre2_docker_kernel_memory
# Type: string
calibre_role_docker_kernel_memory:
# Type: string
calibre2_docker_kernel_memory:
calibre_role_docker_memorycalibre2_docker_memory
# Type: string
calibre_role_docker_memory:
# Type: string
calibre2_docker_memory:
calibre_role_docker_memory_reservationcalibre2_docker_memory_reservation
# Type: string
calibre_role_docker_memory_reservation:
# Type: string
calibre2_docker_memory_reservation:
calibre_role_docker_memory_swapcalibre2_docker_memory_swap
# Type: string
calibre_role_docker_memory_swap:
# Type: string
calibre2_docker_memory_swap:
calibre_role_docker_memory_swappinesscalibre2_docker_memory_swappiness
# Type: int
calibre_role_docker_memory_swappiness:
# Type: int
calibre2_docker_memory_swappiness:
calibre_role_docker_shm_sizecalibre2_docker_shm_size
# Type: string
calibre_role_docker_shm_size:
# Type: string
calibre2_docker_shm_size:
Security & Devices
calibre_role_docker_cap_dropcalibre2_docker_cap_drop
# Type: list
calibre_role_docker_cap_drop:
# Type: list
calibre2_docker_cap_drop:
calibre_role_docker_cgroupns_modecalibre2_docker_cgroupns_mode
# Type: string
calibre_role_docker_cgroupns_mode:
# Type: string
calibre2_docker_cgroupns_mode:
calibre_role_docker_device_cgroup_rulescalibre2_docker_device_cgroup_rules
# Type: list
calibre_role_docker_device_cgroup_rules:
# Type: list
calibre2_docker_device_cgroup_rules:
calibre_role_docker_device_read_bpscalibre2_docker_device_read_bps
# Type: list
calibre_role_docker_device_read_bps:
# Type: list
calibre2_docker_device_read_bps:
calibre_role_docker_device_read_iopscalibre2_docker_device_read_iops
# Type: list
calibre_role_docker_device_read_iops:
# Type: list
calibre2_docker_device_read_iops:
calibre_role_docker_device_requestscalibre2_docker_device_requests
# Type: list
calibre_role_docker_device_requests:
# Type: list
calibre2_docker_device_requests:
calibre_role_docker_device_write_bpscalibre2_docker_device_write_bps
# Type: list
calibre_role_docker_device_write_bps:
# Type: list
calibre2_docker_device_write_bps:
calibre_role_docker_device_write_iopscalibre2_docker_device_write_iops
# Type: list
calibre_role_docker_device_write_iops:
# Type: list
calibre2_docker_device_write_iops:
calibre_role_docker_devicescalibre2_docker_devices
# Type: list
calibre_role_docker_devices:
# Type: list
calibre2_docker_devices:
calibre_role_docker_devices_defaultcalibre2_docker_devices_default
# Type: string
calibre_role_docker_devices_default:
# Type: string
calibre2_docker_devices_default:
calibre_role_docker_groupscalibre2_docker_groups
# Type: list
calibre_role_docker_groups:
# Type: list
calibre2_docker_groups:
calibre_role_docker_privilegedcalibre2_docker_privileged
# Type: bool (true/false)
calibre_role_docker_privileged:
# Type: bool (true/false)
calibre2_docker_privileged:
calibre_role_docker_usercalibre2_docker_user
# Type: string
calibre_role_docker_user:
# Type: string
calibre2_docker_user:
calibre_role_docker_userns_modecalibre2_docker_userns_mode
# Type: string
calibre_role_docker_userns_mode:
# Type: string
calibre2_docker_userns_mode:
Networking
calibre_role_docker_dns_optscalibre2_docker_dns_opts
# Type: list
calibre_role_docker_dns_opts:
# Type: list
calibre2_docker_dns_opts:
calibre_role_docker_dns_search_domainscalibre2_docker_dns_search_domains
# Type: list
calibre_role_docker_dns_search_domains:
# Type: list
calibre2_docker_dns_search_domains:
calibre_role_docker_dns_serverscalibre2_docker_dns_servers
# Type: list
calibre_role_docker_dns_servers:
# Type: list
calibre2_docker_dns_servers:
calibre_role_docker_domainnamecalibre2_docker_domainname
# Type: string
calibre_role_docker_domainname:
# Type: string
calibre2_docker_domainname:
calibre_role_docker_exposed_portscalibre2_docker_exposed_ports
# Type: list
calibre_role_docker_exposed_ports:
# Type: list
calibre2_docker_exposed_ports:
calibre_role_docker_hostscalibre2_docker_hosts
# Type: dict
calibre_role_docker_hosts:
# Type: dict
calibre2_docker_hosts:
calibre_role_docker_hosts_use_commoncalibre2_docker_hosts_use_common
# Type: bool (true/false)
calibre_role_docker_hosts_use_common:
# Type: bool (true/false)
calibre2_docker_hosts_use_common:
calibre_role_docker_ipc_modecalibre2_docker_ipc_mode
# Type: string
calibre_role_docker_ipc_mode:
# Type: string
calibre2_docker_ipc_mode:
calibre_role_docker_linkscalibre2_docker_links
# Type: list
calibre_role_docker_links:
# Type: list
calibre2_docker_links:
calibre_role_docker_network_modecalibre2_docker_network_mode
# Type: string
calibre_role_docker_network_mode:
# Type: string
calibre2_docker_network_mode:
calibre_role_docker_pid_modecalibre2_docker_pid_mode
# Type: string
calibre_role_docker_pid_mode:
# Type: string
calibre2_docker_pid_mode:
calibre_role_docker_portscalibre2_docker_ports
# Type: list
calibre_role_docker_ports:
# Type: list
calibre2_docker_ports:
calibre_role_docker_utscalibre2_docker_uts
# Type: string
calibre_role_docker_uts:
# Type: string
calibre2_docker_uts:
Storage
calibre_role_docker_keep_volumescalibre2_docker_keep_volumes
# Type: bool (true/false)
calibre_role_docker_keep_volumes:
# Type: bool (true/false)
calibre2_docker_keep_volumes:
calibre_role_docker_mountscalibre2_docker_mounts
# Type: list
calibre_role_docker_mounts:
# Type: list
calibre2_docker_mounts:
calibre_role_docker_storage_optscalibre2_docker_storage_opts
# Type: dict
calibre_role_docker_storage_opts:
# Type: dict
calibre2_docker_storage_opts:
calibre_role_docker_tmpfscalibre2_docker_tmpfs
# Type: list
calibre_role_docker_tmpfs:
# Type: list
calibre2_docker_tmpfs:
calibre_role_docker_volume_drivercalibre2_docker_volume_driver
# Type: string
calibre_role_docker_volume_driver:
# Type: string
calibre2_docker_volume_driver:
calibre_role_docker_volumes_fromcalibre2_docker_volumes_from
# Type: list
calibre_role_docker_volumes_from:
# Type: list
calibre2_docker_volumes_from:
calibre_role_docker_volumes_globalcalibre2_docker_volumes_global
# Type: bool (true/false)
calibre_role_docker_volumes_global:
# Type: bool (true/false)
calibre2_docker_volumes_global:
calibre_role_docker_working_dircalibre2_docker_working_dir
# Type: string
calibre_role_docker_working_dir:
# Type: string
calibre2_docker_working_dir:
Monitoring & Lifecycle
calibre_role_docker_auto_removecalibre2_docker_auto_remove
# Type: bool (true/false)
calibre_role_docker_auto_remove:
# Type: bool (true/false)
calibre2_docker_auto_remove:
calibre_role_docker_cleanupcalibre2_docker_cleanup
# Type: bool (true/false)
calibre_role_docker_cleanup:
# Type: bool (true/false)
calibre2_docker_cleanup:
calibre_role_docker_force_killcalibre2_docker_force_kill
# Type: string
calibre_role_docker_force_kill:
# Type: string
calibre2_docker_force_kill:
calibre_role_docker_healthcheckcalibre2_docker_healthcheck
# Type: dict
calibre_role_docker_healthcheck:
# Type: dict
calibre2_docker_healthcheck:
calibre_role_docker_healthy_wait_timeoutcalibre2_docker_healthy_wait_timeout
# Type: int
calibre_role_docker_healthy_wait_timeout:
# Type: int
calibre2_docker_healthy_wait_timeout:
calibre_role_docker_initcalibre2_docker_init
# Type: bool (true/false)
calibre_role_docker_init:
# Type: bool (true/false)
calibre2_docker_init:
calibre_role_docker_kill_signalcalibre2_docker_kill_signal
# Type: string
calibre_role_docker_kill_signal:
# Type: string
calibre2_docker_kill_signal:
calibre_role_docker_log_drivercalibre2_docker_log_driver
# Type: string
calibre_role_docker_log_driver:
# Type: string
calibre2_docker_log_driver:
calibre_role_docker_log_optionscalibre2_docker_log_options
# Type: dict
calibre_role_docker_log_options:
# Type: dict
calibre2_docker_log_options:
calibre_role_docker_oom_killercalibre2_docker_oom_killer
# Type: bool (true/false)
calibre_role_docker_oom_killer:
# Type: bool (true/false)
calibre2_docker_oom_killer:
calibre_role_docker_oom_score_adjcalibre2_docker_oom_score_adj
# Type: int
calibre_role_docker_oom_score_adj:
# Type: int
calibre2_docker_oom_score_adj:
calibre_role_docker_output_logscalibre2_docker_output_logs
# Type: bool (true/false)
calibre_role_docker_output_logs:
# Type: bool (true/false)
calibre2_docker_output_logs:
calibre_role_docker_pausedcalibre2_docker_paused
# Type: bool (true/false)
calibre_role_docker_paused:
# Type: bool (true/false)
calibre2_docker_paused:
calibre_role_docker_recreatecalibre2_docker_recreate
# Type: bool (true/false)
calibre_role_docker_recreate:
# Type: bool (true/false)
calibre2_docker_recreate:
calibre_role_docker_restart_retriescalibre2_docker_restart_retries
# Type: int
calibre_role_docker_restart_retries:
# Type: int
calibre2_docker_restart_retries:
calibre_role_docker_stop_timeoutcalibre2_docker_stop_timeout
# Type: int
calibre_role_docker_stop_timeout:
# Type: int
calibre2_docker_stop_timeout:
Other Options
calibre_role_docker_capabilitiescalibre2_docker_capabilities
# Type: list
calibre_role_docker_capabilities:
# Type: list
calibre2_docker_capabilities:
calibre_role_docker_cgroup_parentcalibre2_docker_cgroup_parent
# Type: string
calibre_role_docker_cgroup_parent:
# Type: string
calibre2_docker_cgroup_parent:
calibre_role_docker_commandscalibre2_docker_commands
# Type: list
calibre_role_docker_commands:
# Type: list
calibre2_docker_commands:
calibre_role_docker_create_timeoutcalibre2_docker_create_timeout
# Type: int
calibre_role_docker_create_timeout:
# Type: int
calibre2_docker_create_timeout:
calibre_role_docker_entrypointcalibre2_docker_entrypoint
# Type: string
calibre_role_docker_entrypoint:
# Type: string
calibre2_docker_entrypoint:
calibre_role_docker_env_filecalibre2_docker_env_file
# Type: string
calibre_role_docker_env_file:
# Type: string
calibre2_docker_env_file:
calibre_role_docker_labels_use_commoncalibre2_docker_labels_use_common
# Type: bool (true/false)
calibre_role_docker_labels_use_common:
# Type: bool (true/false)
calibre2_docker_labels_use_common:
calibre_role_docker_read_onlycalibre2_docker_read_only
# Type: bool (true/false)
calibre_role_docker_read_only:
# Type: bool (true/false)
calibre2_docker_read_only:
calibre_role_docker_runtimecalibre2_docker_runtime
# Type: string
calibre_role_docker_runtime:
# Type: string
calibre2_docker_runtime:
calibre_role_docker_sysctlscalibre2_docker_sysctls
# Type: list
calibre_role_docker_sysctls:
# Type: list
calibre2_docker_sysctls:
calibre_role_docker_ulimitscalibre2_docker_ulimits
# Type: list
calibre_role_docker_ulimits:
# Type: list
calibre2_docker_ulimits:
calibre_role_autoheal_enabledcalibre2_autoheal_enabled
# Enable or disable Autoheal monitoring for containers created when deploying
# Type: bool (true/false)
calibre_role_autoheal_enabled: true
# Enable or disable Autoheal monitoring for containers created when deploying
# Type: bool (true/false)
calibre2_autoheal_enabled: true
calibre_role_books_traefik_middlewarecalibre2_books_traefik_middleware
# Type: string
calibre_role_books_traefik_middleware:
# Type: string
calibre2_books_traefik_middleware:
calibre_role_books_traefik_sso_middlewarecalibre2_books_traefik_sso_middleware
# Type: string
calibre_role_books_traefik_sso_middleware:
# Type: string
calibre2_books_traefik_sso_middleware:
calibre_role_depends_oncalibre2_depends_on
# List of container dependencies that must be running before containers start
# Type: string
calibre_role_depends_on: ""
# List of container dependencies that must be running before containers start
# Type: string
calibre2_depends_on: ""
calibre_role_depends_on_delaycalibre2_depends_on_delay
# Delay in seconds before starting containers after dependencies are ready
# Type: string (quoted number)
calibre_role_depends_on_delay: "0"
# Delay in seconds before starting containers after dependencies are ready
# Type: string (quoted number)
calibre2_depends_on_delay: "0"
calibre_role_depends_on_healthcheckscalibre2_depends_on_healthchecks
# Enable healthcheck waiting for container dependencies
# Type: string ("true"/"false")
calibre_role_depends_on_healthchecks:
# Enable healthcheck waiting for container dependencies
# Type: string ("true"/"false")
calibre2_depends_on_healthchecks:
calibre_role_diun_enabledcalibre2_diun_enabled
# Enable or disable Diun update notifications for containers created when deploying
# Type: bool (true/false)
calibre_role_diun_enabled: true
# Enable or disable Diun update notifications for containers created when deploying
# Type: bool (true/false)
calibre2_diun_enabled: true
calibre_role_dns_enabledcalibre2_dns_enabled
# Enable or disable automatic DNS record creation for containers
# Type: bool (true/false)
calibre_role_dns_enabled: true
# Enable or disable automatic DNS record creation for containers
# Type: bool (true/false)
calibre2_dns_enabled: true
calibre_role_docker_controllercalibre2_docker_controller
# Enable or disable Saltbox Docker Controller management for containers
# Type: bool (true/false)
calibre_role_docker_controller: true
# Enable or disable Saltbox Docker Controller management for containers
# Type: bool (true/false)
calibre2_docker_controller: true
calibre_role_docker_image_repocalibre2_docker_image_repo
# Type: string
calibre_role_docker_image_repo:
# Type: string
calibre2_docker_image_repo:
calibre_role_docker_image_tagcalibre2_docker_image_tag
# Type: string
calibre_role_docker_image_tag:
# Type: string
calibre2_docker_image_tag:
calibre_role_docker_volumes_downloadcalibre2_docker_volumes_download
# Type: bool (true/false)
calibre_role_docker_volumes_download:
# Type: bool (true/false)
calibre2_docker_volumes_download:
calibre_role_paths_locationcalibre2_paths_location
# Type: string
calibre_role_paths_location:
# Type: string
calibre2_paths_location:
calibre_role_themepark_addonscalibre2_themepark_addons
# Type: string
calibre_role_themepark_addons:
# Type: string
calibre2_themepark_addons:
calibre_role_themepark_appcalibre2_themepark_app
# Type: string
calibre_role_themepark_app:
# Type: string
calibre2_themepark_app:
calibre_role_themepark_themecalibre2_themepark_theme
# Type: string
calibre_role_themepark_theme:
# Type: string
calibre2_themepark_theme:
calibre_role_traefik_api_endpointcalibre2_traefik_api_endpoint
# Type: dict/omit
calibre_role_traefik_api_endpoint:
# Type: dict/omit
calibre2_traefik_api_endpoint:
calibre_role_traefik_api_middlewarecalibre2_traefik_api_middleware
# Type: string
calibre_role_traefik_api_middleware:
# Type: string
calibre2_traefik_api_middleware:
calibre_role_traefik_api_middleware_httpcalibre2_traefik_api_middleware_http
# Type: string
calibre_role_traefik_api_middleware_http:
# Type: string
calibre2_traefik_api_middleware_http:
calibre_role_traefik_autodetect_enabledcalibre2_traefik_autodetect_enabled
# Enable Traefik autodetect middleware for containers
# Type: bool (true/false)
calibre_role_traefik_autodetect_enabled: false
# Enable Traefik autodetect middleware for containers
# Type: bool (true/false)
calibre2_traefik_autodetect_enabled: false
calibre_role_traefik_certresolvercalibre2_traefik_certresolver
# Type: string
calibre_role_traefik_certresolver:
# Type: string
calibre2_traefik_certresolver:
calibre_role_traefik_crowdsec_enabledcalibre2_traefik_crowdsec_enabled
# Enable CrowdSec middleware for containers
# Type: bool (true/false)
calibre_role_traefik_crowdsec_enabled: false
# Enable CrowdSec middleware for containers
# Type: bool (true/false)
calibre2_traefik_crowdsec_enabled: false
calibre_role_traefik_error_pages_enabledcalibre2_traefik_error_pages_enabled
# Enable custom error pages middleware for containers
# Type: bool (true/false)
calibre_role_traefik_error_pages_enabled: false
# Enable custom error pages middleware for containers
# Type: bool (true/false)
calibre2_traefik_error_pages_enabled: false
calibre_role_traefik_gzip_enabledcalibre2_traefik_gzip_enabled
# Enable gzip compression middleware for containers
# Type: bool (true/false)
calibre_role_traefik_gzip_enabled: false
# Enable gzip compression middleware for containers
# Type: bool (true/false)
calibre2_traefik_gzip_enabled: false
calibre_role_traefik_middleware_httpcalibre2_traefik_middleware_http
# Type: string
calibre_role_traefik_middleware_http:
# Type: string
calibre2_traefik_middleware_http:
calibre_role_traefik_middleware_http_api_insecurecalibre2_traefik_middleware_http_api_insecure
# Type: bool (true/false)
calibre_role_traefik_middleware_http_api_insecure:
# Type: bool (true/false)
calibre2_traefik_middleware_http_api_insecure:
calibre_role_traefik_middleware_http_insecurecalibre2_traefik_middleware_http_insecure
# Type: bool (true/false)
calibre_role_traefik_middleware_http_insecure:
# Type: bool (true/false)
calibre2_traefik_middleware_http_insecure:
calibre_role_traefik_prioritycalibre2_traefik_priority
# Type: string
calibre_role_traefik_priority:
# Type: string
calibre2_traefik_priority:
calibre_role_traefik_robot_enabledcalibre2_traefik_robot_enabled
# Enable robots.txt middleware for containers
# Type: bool (true/false)
calibre_role_traefik_robot_enabled: true
# Enable robots.txt middleware for containers
# Type: bool (true/false)
calibre2_traefik_robot_enabled: true
calibre_role_traefik_tailscale_enabledcalibre2_traefik_tailscale_enabled
# Enable Tailscale-specific Traefik configuration for containers
# Type: bool (true/false)
calibre_role_traefik_tailscale_enabled: false
# Enable Tailscale-specific Traefik configuration for containers
# Type: bool (true/false)
calibre2_traefik_tailscale_enabled: false
calibre_role_traefik_wildcard_enabledcalibre2_traefik_wildcard_enabled
# Enable wildcard certificate for containers
# Type: bool (true/false)
calibre_role_traefik_wildcard_enabled: true
# Enable wildcard certificate for containers
# Type: bool (true/false)
calibre2_traefik_wildcard_enabled: true
calibre_role_web2_domaincalibre2_web2_domain
# Type: string
calibre_role_web2_domain:
# Type: string
calibre2_web2_domain:
calibre_role_web2_portcalibre2_web2_port
# Type: string (quoted number)
calibre_role_web2_port:
# Type: string (quoted number)
calibre2_web2_port:
calibre_role_web2_subdomaincalibre2_web2_subdomain
# Type: string
calibre_role_web2_subdomain:
# Type: string
calibre2_web2_subdomain:
calibre_role_web_domaincalibre2_web_domain
# Type: string
calibre_role_web_domain:
# Type: string
calibre2_web_domain:
calibre_role_web_fqdn_overridecalibre2_web_fqdn_override
# Override the Traefik fully qualified domain name (FQDN) for containers
# Type: list
calibre_role_web_fqdn_override:
# Override the Traefik fully qualified domain name (FQDN) for containers
# Type: list
calibre2_web_fqdn_override:
Example Override
calibre_role_web_fqdn_override:
- "{{ traefik_host }}"
- "calibre2.{{ user.domain }}"
- "calibre.otherdomain.tld"
Note: Include {{ traefik_host }} to preserve the default FQDN alongside your custom entries
Example Override
calibre2_web_fqdn_override:
- "{{ traefik_host }}"
- "calibre2.{{ user.domain }}"
- "calibre.otherdomain.tld"
Note: Include {{ traefik_host }} to preserve the default FQDN alongside your custom entries
calibre_role_web_host_overridecalibre2_web_host_override
# Override the Traefik web host configuration for containers
# Type: string
calibre_role_web_host_override:
# Override the Traefik web host configuration for containers
# Type: string
calibre2_web_host_override:
Example Override
calibre_role_web_host_override: "Host(`{{ traefik_host }}`) || Host(`{{ 'calibre2.' + user.domain }}`)"
Note: Use {{ traefik_host }} to include the default host configuration in your custom rule
Example Override
calibre2_web_host_override: "Host(`{{ traefik_host }}`) || Host(`{{ 'calibre2.' + user.domain }}`)"
Note: Use {{ traefik_host }} to include the default host configuration in your custom rule
calibre_role_web_http_portcalibre2_web_http_port
# Type: string (quoted number)
calibre_role_web_http_port:
# Type: string (quoted number)
calibre2_web_http_port:
calibre_role_web_http_schemecalibre2_web_http_scheme
# Type: string ("http"/"https")
calibre_role_web_http_scheme:
# Type: string ("http"/"https")
calibre2_web_http_scheme:
calibre_role_web_http_serverstransportcalibre2_web_http_serverstransport
# Type: dict/omit
calibre_role_web_http_serverstransport:
# Type: dict/omit
calibre2_web_http_serverstransport:
calibre_role_web_schemecalibre2_web_scheme
# URL scheme to use for web access to containers
# Type: string ("http"/"https")
calibre_role_web_scheme:
# URL scheme to use for web access to containers
# Type: string ("http"/"https")
calibre2_web_scheme:
calibre_role_web_serverstransportcalibre2_web_serverstransport
# Type: dict/omit
calibre_role_web_serverstransport:
# Type: dict/omit
calibre2_web_serverstransport:
calibre_role_web_subdomaincalibre2_web_subdomain
# Type: string
calibre_role_web_subdomain:
# Type: string
calibre2_web_subdomain: