Skip to content

tofa¶

Description / nameInput element
Your domain name

Overview¶

tofa is a self-hosted media server for streaming your own movie and TV library to web, mobile, and TV apps, with hardware-accelerated transcoding.


Deployment¶

sb install sandbox-tofa

Usage¶

Visit https://tofa.iYOUR_DOMAIN_NAMEi.

The server is claimed once, on first run, which links it to your tofa account. Because the Saltbox install is reached through a public domain, that first claim has to carry the setup token the server generates on boot:

sudo cat /opt/tofa/identity/setup_key.secret

Then open https://tofa.iYOUR_DOMAIN_NAMEi/setup?setup_token=<token> and follow the wizard. The token is only consulted while the server is unclaimed.

Add libraries from the usual /mnt/unionfs/Media paths in Admin > Libraries.

Role Defaults¶

Variables can be customized using the Inventory. (1)

  1. This role supports multiple instances via tofa_instances.

    Example override

    tofa_role_web_subdomain: "custom"
    

    Applies to all instances of tofa

    tofa2_web_subdomain: "custom2"
    

    Applies to the instance named tofa2

    Avoid overriding variables ending in _default

    When overriding variables that end in _default (like tofa_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 _custom variable (like tofa_docker_envs_custom) to add your changes. Custom values are merged with defaults, ensuring you receive updates.

tofa_instances
# Type: list
tofa_instances: ["tofa"]

Example Override

# Type: list
tofa_instances: ["tofa", "tofa2"]
tofa_role_open_main_portstofa2_open_main_ports
# Publish local network service ports
# Type: bool (true/false)
tofa_role_open_main_ports: false
# Publish local network service ports
# Type: bool (true/false)
tofa2_open_main_ports: false
tofa_role_lan_iptofa2_lan_ip
# Comma-separated list of access URLs (or IP addresses) to advertise to clients
# Useful to avoid traffic going through your WAN when hairpin NAT is not available
# Requires tofa_role_open_main_ports to be enabled
# Type: string
tofa_role_lan_ip: ""
# Comma-separated list of access URLs (or IP addresses) to advertise to clients
# Useful to avoid traffic going through your WAN when hairpin NAT is not available
# Requires tofa_role_open_main_ports to be enabled
# Type: string
tofa2_lan_ip: ""
tofa_role_media_pathtofa2_media_path
# Media directory path
# Type: string
tofa_role_media_path: "/mnt/unionfs/Media"
# Media directory path
# Type: string
tofa2_media_path: "/mnt/unionfs/Media"
tofa_role_web_subdomaintofa2_web_subdomain
# Type: string
tofa_role_web_subdomain: "{{ tofa_name }}"
# Type: string
tofa2_web_subdomain: "{{ tofa_name }}"
tofa_role_web_domaintofa2_web_domain
# Type: string
tofa_role_web_domain: "{{ user.domain }}"
# Type: string
tofa2_web_domain: "{{ user.domain }}"
tofa_role_web_porttofa2_web_port
# Type: string
tofa_role_web_port: "{{ tofa_port_assignment.ports.web }}"
# Type: string
tofa2_web_port: "{{ tofa_port_assignment.ports.web }}"
tofa_role_web_urltofa2_web_url
# Type: string
tofa_role_web_url: "{{ lookup('role_web', role='tofa', scheme='https') }}"
# Type: string
tofa2_web_url: "{{ lookup('role_web', role='tofa', scheme='https') }}"
tofa_role_dns_recordtofa2_dns_record
# Type: string
tofa_role_dns_record: "{{ lookup('role_var', '_web_subdomain', role='tofa') }}"
# Type: string
tofa2_dns_record: "{{ lookup('role_var', '_web_subdomain', role='tofa') }}"
tofa_role_dns_zonetofa2_dns_zone
# Type: string
tofa_role_dns_zone: "{{ lookup('role_var', '_web_domain', role='tofa') }}"
# Type: string
tofa2_dns_zone: "{{ lookup('role_var', '_web_domain', role='tofa') }}"
tofa_role_dns_proxytofa2_dns_proxy
# Type: bool (true/false)
tofa_role_dns_proxy: "{{ dns_proxied }}"
# Type: bool (true/false)
tofa2_dns_proxy: "{{ dns_proxied }}"
tofa_role_traefik_sso_middlewaretofa2_traefik_sso_middleware
# Type: string
tofa_role_traefik_sso_middleware: ""
# Type: string
tofa2_traefik_sso_middleware: ""
tofa_role_traefik_middleware_defaulttofa2_traefik_middleware_default
# Type: string
tofa_role_traefik_middleware_default: "{{ traefik_default_middleware }}"
# Type: string
tofa2_traefik_middleware_default: "{{ traefik_default_middleware }}"
tofa_role_traefik_middleware_customtofa2_traefik_middleware_custom
# Type: string
tofa_role_traefik_middleware_custom: ""
# Type: string
tofa2_traefik_middleware_custom: ""
tofa_role_traefik_middleware_default_apitofa2_traefik_middleware_default_api
# Type: string
tofa_role_traefik_middleware_default_api: "{{ traefik_default_middleware_api }}"
# Type: string
tofa2_traefik_middleware_default_api: "{{ traefik_default_middleware_api }}"
tofa_role_traefik_middleware_custom_apitofa2_traefik_middleware_custom_api
# Type: string
tofa_role_traefik_middleware_custom_api: ""
# Type: string
tofa2_traefik_middleware_custom_api: ""
tofa_role_traefik_certresolvertofa2_traefik_certresolver
# Type: string
tofa_role_traefik_certresolver: "{{ traefik_default_certresolver }}"
# Type: string
tofa2_traefik_certresolver: "{{ traefik_default_certresolver }}"
tofa_role_traefik_enabledtofa2_traefik_enabled
# Type: bool (true/false)
tofa_role_traefik_enabled: true
# Type: bool (true/false)
tofa2_traefik_enabled: true
tofa_role_traefik_api_enabledtofa2_traefik_api_enabled
# Type: bool (true/false)
tofa_role_traefik_api_enabled: false
# Type: bool (true/false)
tofa2_traefik_api_enabled: false
tofa_role_traefik_api_endpointtofa2_traefik_api_endpoint
# Type: string
tofa_role_traefik_api_endpoint: ""
# Type: string
tofa2_traefik_api_endpoint: ""

When no saved assignment exists, the role allocates the first available port within the inclusive low and high bounds and retains it for future runs. Override an instance's bounds to control new allocation; set both bounds to the same value to require one exact port.

Existing assignments are stored in /opt/saltbox/port-assignments.json. A conflict-free saved port remains authoritative even outside the current bounds, including a port manually changed in that file. If a saved assignment conflicts, another available port is selected from the current bounds and a warning shows the old port, new port, and conflict source.

tofa_role_port_web_low_boundtofa2_port_web_low_bound
# Type: int
tofa_role_port_web_low_bound: 33333
# Type: int
tofa2_port_web_low_bound: 33333
tofa_role_port_web_high_boundtofa2_port_web_high_bound
# Type: int
tofa_role_port_web_high_bound: 33433
# Type: int
tofa2_port_web_high_bound: 33433

Container

tofa_role_docker_containertofa2_docker_container
# Type: string
tofa_role_docker_container: "{{ tofa_name }}"
# Type: string
tofa2_docker_container: "{{ tofa_name }}"

GPU

tofa_role_docker_gpu_enabledtofa2_docker_gpu_enabled
# Set this to true to let the app use a GPU.
# Intel access also requires gpu.intel: true.
# NVIDIA access also requires nvidia_enabled: true.
# This setting does not install or enable GPU support on the server.
# Type: bool (true/false)
tofa_role_docker_gpu_enabled: true
# Set this to true to let the app use a GPU.
# Intel access also requires gpu.intel: true.
# NVIDIA access also requires nvidia_enabled: true.
# This setting does not install or enable GPU support on the server.
# Type: bool (true/false)
tofa2_docker_gpu_enabled: true
tofa_role_docker_nvidia_disabledtofa2_docker_nvidia_disabled
# Set this to true to turn off automatic NVIDIA access for this app.
# It only has an effect when the app's _docker_gpu_enabled option and
# nvidia_enabled are both true.
# Automatic /dev/dri access may remain.
# Type: bool (true/false)
tofa_role_docker_nvidia_disabled: false
# Set this to true to turn off automatic NVIDIA access for this app.
# It only has an effect when the app's _docker_gpu_enabled option and
# nvidia_enabled are both true.
# Automatic /dev/dri access may remain.
# Type: bool (true/false)
tofa2_docker_nvidia_disabled: false
tofa_role_docker_dev_dri_disabledtofa2_docker_dev_dri_disabled
# Set this to true to stop Saltbox from automatically sharing the
# server's /dev/dri video devices with this app.
# It only has an effect when the app's _docker_gpu_enabled option is true
# and either gpu.intel or nvidia_enabled is true.
# NVIDIA-specific access may remain.
# Type: bool (true/false)
tofa_role_docker_dev_dri_disabled: false
# Set this to true to stop Saltbox from automatically sharing the
# server's /dev/dri video devices with this app.
# It only has an effect when the app's _docker_gpu_enabled option is true
# and either gpu.intel or nvidia_enabled is true.
# NVIDIA-specific access may remain.
# Type: bool (true/false)
tofa2_docker_dev_dri_disabled: false

Image

tofa_role_docker_image_pulltofa2_docker_image_pull
# Type: bool (true/false)
tofa_role_docker_image_pull: true
# Type: bool (true/false)
tofa2_docker_image_pull: true
tofa_role_docker_image_repotofa2_docker_image_repo
# Type: string
tofa_role_docker_image_repo: "ghcr.io/tofatv/tofa"
# Type: string
tofa2_docker_image_repo: "ghcr.io/tofatv/tofa"
tofa_role_docker_image_tagtofa2_docker_image_tag
# Type: string
tofa_role_docker_image_tag: "beta"
# Type: string
tofa2_docker_image_tag: "beta"
tofa_role_docker_imagetofa2_docker_image
# Type: string
tofa_role_docker_image: "{{ lookup('role_var', '_docker_image_repo', role='tofa') }}:{{ lookup('role_var', '_docker_image_tag', role='tofa') }}"
# Type: string
tofa2_docker_image: "{{ lookup('role_var', '_docker_image_repo', role='tofa') }}:{{ lookup('role_var', '_docker_image_tag', role='tofa') }}"

Ports

tofa_role_docker_ports_defaulttofa2_docker_ports_default
# Type: list
tofa_role_docker_ports_default: []
# Type: list
tofa2_docker_ports_default: []
tofa_role_docker_ports_customtofa2_docker_ports_custom
# Type: list
tofa_role_docker_ports_custom: []
# Type: list
tofa2_docker_ports_custom: []

Envs

tofa_role_docker_envs_defaulttofa2_docker_envs_default
# Type: dict
tofa_role_docker_envs_default:
  PUID: "{{ uid }}"
  PGID: "{{ gid }}"
  MEDIA_PATH: "{{ lookup('role_var', '_media_path', role='tofa') }}"
  TZ: "{{ tz }}"
  TOFA_CUSTOM_ACCESS_URLS: "{{ lookup('role_var', '_web_url', role='tofa') }}"
  TOFA_PORT: "{{ lookup('role_var', '_web_port', role='tofa') | string }}"
  ADVERTISED_LAN_IP: "{{ lookup('role_var', '_lan_ip', role='tofa')
                      if ((lookup('role_var', '_lan_ip', role='tofa') | length > 0) and lookup('role_var', '_open_main_ports', role='tofa'))
                      else omit }}"
# Type: dict
tofa2_docker_envs_default:
  PUID: "{{ uid }}"
  PGID: "{{ gid }}"
  MEDIA_PATH: "{{ lookup('role_var', '_media_path', role='tofa') }}"
  TZ: "{{ tz }}"
  TOFA_CUSTOM_ACCESS_URLS: "{{ lookup('role_var', '_web_url', role='tofa') }}"
  TOFA_PORT: "{{ lookup('role_var', '_web_port', role='tofa') | string }}"
  ADVERTISED_LAN_IP: "{{ lookup('role_var', '_lan_ip', role='tofa')
                      if ((lookup('role_var', '_lan_ip', role='tofa') | length > 0) and lookup('role_var', '_open_main_ports', role='tofa'))
                      else omit }}"
tofa_role_docker_envs_customtofa2_docker_envs_custom
# Type: dict
tofa_role_docker_envs_custom: {}
# Type: dict
tofa2_docker_envs_custom: {}

Volumes

tofa_role_docker_volumes_defaulttofa2_docker_volumes_default
# Type: list
tofa_role_docker_volumes_default:
  - "{{ lookup('role_var', '_paths_location', role='tofa') }}:/data"
  - "{{ lookup('role_var', '_paths_transcodes_location', role='tofa') }}:/data/cache/streams"
# Type: list
tofa2_docker_volumes_default:
  - "{{ lookup('role_var', '_paths_location', role='tofa') }}:/data"
  - "{{ lookup('role_var', '_paths_transcodes_location', role='tofa') }}:/data/cache/streams"
tofa_role_docker_volumes_customtofa2_docker_volumes_custom
# Type: list
tofa_role_docker_volumes_custom: []
# Type: list
tofa2_docker_volumes_custom: []

Hostname

tofa_role_docker_hostnametofa2_docker_hostname
# Type: string
tofa_role_docker_hostname: "{{ tofa_name }}"
# Type: string
tofa2_docker_hostname: "{{ tofa_name }}"

Init

tofa_role_docker_inittofa2_docker_init
# Type: bool (true/false)
tofa_role_docker_init: true
# Type: bool (true/false)
tofa2_docker_init: true

Networks

tofa_role_docker_networks_aliastofa2_docker_networks_alias
# Type: string
tofa_role_docker_networks_alias: "{{ tofa_name }}"
# Type: string
tofa2_docker_networks_alias: "{{ tofa_name }}"
tofa_role_docker_networks_defaulttofa2_docker_networks_default
# Type: list
tofa_role_docker_networks_default: []
# Type: list
tofa2_docker_networks_default: []
tofa_role_docker_networks_customtofa2_docker_networks_custom
# Type: list
tofa_role_docker_networks_custom: []
# Type: list
tofa2_docker_networks_custom: []

Restart Policy

tofa_role_docker_restart_policytofa2_docker_restart_policy
# Type: string
tofa_role_docker_restart_policy: unless-stopped
# Type: string
tofa2_docker_restart_policy: unless-stopped

The following advanced options are available via create_docker_container but are not defined in the role. See: docker_container module

A blank value is YAML null and inherits any lower-precedence role or shared default. Explicit Ansible omit is accepted only for optional Docker settings; default-backed and required settings reject it. Use the documented typed empty value, such as "", [], or {}, when disabling a guaranteed setting.

Resource Limits

tofa_role_docker_blkio_weighttofa2_docker_blkio_weight
# Type: int
tofa_role_docker_blkio_weight:
# Type: int
tofa2_docker_blkio_weight:
tofa_role_docker_cpu_periodtofa2_docker_cpu_period
# Type: int
tofa_role_docker_cpu_period:
# Type: int
tofa2_docker_cpu_period:
tofa_role_docker_cpu_quotatofa2_docker_cpu_quota
# Type: int
tofa_role_docker_cpu_quota:
# Type: int
tofa2_docker_cpu_quota:
tofa_role_docker_cpu_sharestofa2_docker_cpu_shares
# Type: int
tofa_role_docker_cpu_shares:
# Type: int
tofa2_docker_cpu_shares:
tofa_role_docker_cpustofa2_docker_cpus
# CPU allocation accepted as a numeric string, such as 1.5
# Type: string (quoted number)
tofa_role_docker_cpus:
# CPU allocation accepted as a numeric string, such as 1.5
# Type: string (quoted number)
tofa2_docker_cpus:
tofa_role_docker_cpuset_cpustofa2_docker_cpuset_cpus
# Type: string
tofa_role_docker_cpuset_cpus:
# Type: string
tofa2_docker_cpuset_cpus:
tofa_role_docker_cpuset_memstofa2_docker_cpuset_mems
# Type: string
tofa_role_docker_cpuset_mems:
# Type: string
tofa2_docker_cpuset_mems:
tofa_role_docker_kernel_memorytofa2_docker_kernel_memory
# Type: string
tofa_role_docker_kernel_memory:
# Type: string
tofa2_docker_kernel_memory:
tofa_role_docker_memorytofa2_docker_memory
# Type: string
tofa_role_docker_memory:
# Type: string
tofa2_docker_memory:
tofa_role_docker_memory_reservationtofa2_docker_memory_reservation
# Type: string
tofa_role_docker_memory_reservation:
# Type: string
tofa2_docker_memory_reservation:
tofa_role_docker_memory_swaptofa2_docker_memory_swap
# Type: string
tofa_role_docker_memory_swap:
# Type: string
tofa2_docker_memory_swap:
tofa_role_docker_memory_swappinesstofa2_docker_memory_swappiness
# Type: int
tofa_role_docker_memory_swappiness:
# Type: int
tofa2_docker_memory_swappiness:
tofa_role_docker_shm_sizetofa2_docker_shm_size
# Type: string
tofa_role_docker_shm_size:
# Type: string
tofa2_docker_shm_size:

Security & Devices

tofa_role_docker_cap_droptofa2_docker_cap_drop
# Type: list
tofa_role_docker_cap_drop:
# Type: list
tofa2_docker_cap_drop:
tofa_role_docker_cgroupns_modetofa2_docker_cgroupns_mode
# Type: string
tofa_role_docker_cgroupns_mode:
# Type: string
tofa2_docker_cgroupns_mode:
tofa_role_docker_device_cgroup_rulestofa2_docker_device_cgroup_rules
# Type: list
tofa_role_docker_device_cgroup_rules:
# Type: list
tofa2_docker_device_cgroup_rules:
tofa_role_docker_device_read_bpstofa2_docker_device_read_bps
# Type: list
tofa_role_docker_device_read_bps:
# Type: list
tofa2_docker_device_read_bps:
tofa_role_docker_device_read_iopstofa2_docker_device_read_iops
# Type: list
tofa_role_docker_device_read_iops:
# Type: list
tofa2_docker_device_read_iops:
tofa_role_docker_device_requeststofa2_docker_device_requests
# Type: list
tofa_role_docker_device_requests:
# Type: list
tofa2_docker_device_requests:
tofa_role_docker_device_write_bpstofa2_docker_device_write_bps
# Type: list
tofa_role_docker_device_write_bps:
# Type: list
tofa2_docker_device_write_bps:
tofa_role_docker_device_write_iopstofa2_docker_device_write_iops
# Type: list
tofa_role_docker_device_write_iops:
# Type: list
tofa2_docker_device_write_iops:
tofa_role_docker_devicestofa2_docker_devices
# Type: list
tofa_role_docker_devices:
# Type: list
tofa2_docker_devices:
tofa_role_docker_groupstofa2_docker_groups
# Type: list
tofa_role_docker_groups:
# Type: list
tofa2_docker_groups:
tofa_role_docker_privilegedtofa2_docker_privileged
# Type: bool (true/false)
tofa_role_docker_privileged:
# Type: bool (true/false)
tofa2_docker_privileged:
tofa_role_docker_security_optstofa2_docker_security_opts
# Type: list
tofa_role_docker_security_opts:
# Type: list
tofa2_docker_security_opts:
tofa_role_docker_usertofa2_docker_user
# Type: string
tofa_role_docker_user:
# Type: string
tofa2_docker_user:
tofa_role_docker_userns_modetofa2_docker_userns_mode
# Type: string
tofa_role_docker_userns_mode:
# Type: string
tofa2_docker_userns_mode:

Networking

tofa_role_docker_dns_optstofa2_docker_dns_opts
# Type: list
tofa_role_docker_dns_opts:
# Type: list
tofa2_docker_dns_opts:
tofa_role_docker_dns_search_domainstofa2_docker_dns_search_domains
# Type: list
tofa_role_docker_dns_search_domains:
# Type: list
tofa2_docker_dns_search_domains:
tofa_role_docker_dns_serverstofa2_docker_dns_servers
# Type: list
tofa_role_docker_dns_servers:
# Type: list
tofa2_docker_dns_servers:
tofa_role_docker_domainnametofa2_docker_domainname
# Type: string
tofa_role_docker_domainname:
# Type: string
tofa2_docker_domainname:
tofa_role_docker_exposed_portstofa2_docker_exposed_ports
# Type: list
tofa_role_docker_exposed_ports:
# Type: list
tofa2_docker_exposed_ports:
tofa_role_docker_hoststofa2_docker_hosts
# Type: dict
tofa_role_docker_hosts:
# Type: dict
tofa2_docker_hosts:
tofa_role_docker_hosts_use_commontofa2_docker_hosts_use_common
# Type: bool (true/false)
tofa_role_docker_hosts_use_common:
# Type: bool (true/false)
tofa2_docker_hosts_use_common:
tofa_role_docker_ipc_modetofa2_docker_ipc_mode
# Type: string
tofa_role_docker_ipc_mode:
# Type: string
tofa2_docker_ipc_mode:
tofa_role_docker_linkstofa2_docker_links
# Type: list
tofa_role_docker_links:
# Type: list
tofa2_docker_links:
tofa_role_docker_network_modetofa2_docker_network_mode
# Type: string
tofa_role_docker_network_mode:
# Type: string
tofa2_docker_network_mode:
tofa_role_docker_pid_modetofa2_docker_pid_mode
# Type: string
tofa_role_docker_pid_mode:
# Type: string
tofa2_docker_pid_mode:
tofa_role_docker_utstofa2_docker_uts
# Type: string
tofa_role_docker_uts:
# Type: string
tofa2_docker_uts:

Storage

tofa_role_docker_keep_volumestofa2_docker_keep_volumes
# Type: bool (true/false)
tofa_role_docker_keep_volumes:
# Type: bool (true/false)
tofa2_docker_keep_volumes:
tofa_role_docker_mountstofa2_docker_mounts
# Type: list
tofa_role_docker_mounts:
# Type: list
tofa2_docker_mounts:
tofa_role_docker_storage_optstofa2_docker_storage_opts
# Type: dict
tofa_role_docker_storage_opts:
# Type: dict
tofa2_docker_storage_opts:
tofa_role_docker_tmpfstofa2_docker_tmpfs
# Type: list
tofa_role_docker_tmpfs:
# Type: list
tofa2_docker_tmpfs:
tofa_role_docker_volume_drivertofa2_docker_volume_driver
# Type: string
tofa_role_docker_volume_driver:
# Type: string
tofa2_docker_volume_driver:
tofa_role_docker_volumes_fromtofa2_docker_volumes_from
# Type: list
tofa_role_docker_volumes_from:
# Type: list
tofa2_docker_volumes_from:
tofa_role_docker_volumes_globaltofa2_docker_volumes_global
# Type: bool (true/false)
tofa_role_docker_volumes_global:
# Type: bool (true/false)
tofa2_docker_volumes_global:
tofa_role_docker_working_dirtofa2_docker_working_dir
# Type: string
tofa_role_docker_working_dir:
# Type: string
tofa2_docker_working_dir:

Monitoring & Lifecycle

tofa_role_docker_auto_removetofa2_docker_auto_remove
# Type: bool (true/false)
tofa_role_docker_auto_remove:
# Type: bool (true/false)
tofa2_docker_auto_remove:
tofa_role_docker_cleanuptofa2_docker_cleanup
# Type: bool (true/false)
tofa_role_docker_cleanup:
# Type: bool (true/false)
tofa2_docker_cleanup:
tofa_role_docker_force_killtofa2_docker_force_kill
# Type: bool (true/false)
tofa_role_docker_force_kill:
# Type: bool (true/false)
tofa2_docker_force_kill:
tofa_role_docker_healthchecktofa2_docker_healthcheck
# Type: dict
tofa_role_docker_healthcheck:
# Type: dict
tofa2_docker_healthcheck:
tofa_role_docker_healthy_wait_timeouttofa2_docker_healthy_wait_timeout
# Healthy-state wait timeout in seconds
# Type: int
tofa_role_docker_healthy_wait_timeout:
# Healthy-state wait timeout in seconds
# Type: int
tofa2_docker_healthy_wait_timeout:
tofa_role_docker_kill_signaltofa2_docker_kill_signal
# Type: string
tofa_role_docker_kill_signal:
# Type: string
tofa2_docker_kill_signal:
tofa_role_docker_log_drivertofa2_docker_log_driver
# Type: string
tofa_role_docker_log_driver:
# Type: string
tofa2_docker_log_driver:
tofa_role_docker_log_optionstofa2_docker_log_options
# Type: dict
tofa_role_docker_log_options:
# Type: dict
tofa2_docker_log_options:
tofa_role_docker_oom_killertofa2_docker_oom_killer
# Type: bool (true/false)
tofa_role_docker_oom_killer:
# Type: bool (true/false)
tofa2_docker_oom_killer:
tofa_role_docker_oom_score_adjtofa2_docker_oom_score_adj
# Type: int
tofa_role_docker_oom_score_adj:
# Type: int
tofa2_docker_oom_score_adj:
tofa_role_docker_output_logstofa2_docker_output_logs
# Type: bool (true/false)
tofa_role_docker_output_logs:
# Type: bool (true/false)
tofa2_docker_output_logs:
tofa_role_docker_pausedtofa2_docker_paused
# Type: bool (true/false)
tofa_role_docker_paused:
# Type: bool (true/false)
tofa2_docker_paused:
tofa_role_docker_recreatetofa2_docker_recreate
# Type: bool (true/false)
tofa_role_docker_recreate:
# Type: bool (true/false)
tofa2_docker_recreate:
tofa_role_docker_restart_retriestofa2_docker_restart_retries
# Type: int
tofa_role_docker_restart_retries:
# Type: int
tofa2_docker_restart_retries:
tofa_role_docker_stop_signaltofa2_docker_stop_signal
# Type: string
tofa_role_docker_stop_signal:
# Type: string
tofa2_docker_stop_signal:
tofa_role_docker_stop_timeouttofa2_docker_stop_timeout
# Type: int
tofa_role_docker_stop_timeout:
# Type: int
tofa2_docker_stop_timeout:

Other Options

tofa_role_docker_capabilitiestofa2_docker_capabilities
# Type: list
tofa_role_docker_capabilities:
# Type: list
tofa2_docker_capabilities:
tofa_role_docker_cgroup_parenttofa2_docker_cgroup_parent
# Type: string
tofa_role_docker_cgroup_parent:
# Type: string
tofa2_docker_cgroup_parent:
tofa_role_docker_commandstofa2_docker_commands
# Type: list
tofa_role_docker_commands:
# Type: list
tofa2_docker_commands:
tofa_role_docker_create_timeouttofa2_docker_create_timeout
# Type: int
tofa_role_docker_create_timeout:
# Type: int
tofa2_docker_create_timeout:
tofa_role_docker_entrypointtofa2_docker_entrypoint
# Type: list
tofa_role_docker_entrypoint:
# Type: list
tofa2_docker_entrypoint:
tofa_role_docker_env_filetofa2_docker_env_file
# Type: string
tofa_role_docker_env_file:
# Type: string
tofa2_docker_env_file:
tofa_role_docker_labelstofa2_docker_labels
# Type: dict
tofa_role_docker_labels:
# Type: dict
tofa2_docker_labels:
tofa_role_docker_labels_use_commontofa2_docker_labels_use_common
# Type: bool (true/false)
tofa_role_docker_labels_use_common:
# Type: bool (true/false)
tofa2_docker_labels_use_common:
tofa_role_docker_read_onlytofa2_docker_read_only
# Type: bool (true/false)
tofa_role_docker_read_only:
# Type: bool (true/false)
tofa2_docker_read_only:
tofa_role_docker_runtimetofa2_docker_runtime
# Type: string
tofa_role_docker_runtime:
# Type: string
tofa2_docker_runtime:
tofa_role_docker_sysctlstofa2_docker_sysctls
# Type: dict
tofa_role_docker_sysctls:
# Type: dict
tofa2_docker_sysctls:
tofa_role_docker_ulimitstofa2_docker_ulimits
# Type: list
tofa_role_docker_ulimits:
# Type: list
tofa2_docker_ulimits:
tofa_role_autoheal_enabledtofa2_autoheal_enabled
# Enable or disable Autoheal monitoring for containers created when deploying
# Type: bool (true/false)
tofa_role_autoheal_enabled: true
# Enable or disable Autoheal monitoring for containers created when deploying
# Type: bool (true/false)
tofa2_autoheal_enabled: true
tofa_role_depends_ontofa2_depends_on
# List of container dependencies that must be running before containers start
# Type: string
tofa_role_depends_on: ""
# List of container dependencies that must be running before containers start
# Type: string
tofa2_depends_on: ""
tofa_role_depends_on_delaytofa2_depends_on_delay
# Delay in seconds before starting containers after dependencies are ready
# Type: string (quoted number)
tofa_role_depends_on_delay: "0"
# Delay in seconds before starting containers after dependencies are ready
# Type: string (quoted number)
tofa2_depends_on_delay: "0"
tofa_role_depends_on_healthcheckstofa2_depends_on_healthchecks
# Enable healthcheck waiting for container dependencies
# Type: string ("true"/"false")
tofa_role_depends_on_healthchecks:
# Enable healthcheck waiting for container dependencies
# Type: string ("true"/"false")
tofa2_depends_on_healthchecks:
tofa_role_diun_enabledtofa2_diun_enabled
# Enable or disable Diun update notifications for containers created when deploying
# Type: bool (true/false)
tofa_role_diun_enabled: true
# Enable or disable Diun update notifications for containers created when deploying
# Type: bool (true/false)
tofa2_diun_enabled: true
tofa_role_dns_enabledtofa2_dns_enabled
# Enable or disable automatic DNS record creation for containers
# Type: bool (true/false)
tofa_role_dns_enabled: true
# Enable or disable automatic DNS record creation for containers
# Type: bool (true/false)
tofa2_dns_enabled: true
tofa_role_docker_controllertofa2_docker_controller
# Enable or disable Saltbox Docker Controller management for containers
# Type: bool (true/false)
tofa_role_docker_controller: true
# Enable or disable Saltbox Docker Controller management for containers
# Type: bool (true/false)
tofa2_docker_controller: true
tofa_role_docker_networks_alias_customtofa2_docker_networks_alias_custom
# Type: list
tofa_role_docker_networks_alias_custom:
# Type: list
tofa2_docker_networks_alias_custom:
tofa_role_docker_volumes_downloadtofa2_docker_volumes_download
# Type: bool (true/false)
tofa_role_docker_volumes_download:
# Type: bool (true/false)
tofa2_docker_volumes_download:
tofa_role_themepark_addonstofa2_themepark_addons
# ThemePark addon names to enable
# Type: list
tofa_role_themepark_addons:
# ThemePark addon names to enable
# Type: list
tofa2_themepark_addons:
tofa_role_themepark_apptofa2_themepark_app
# Type: string
tofa_role_themepark_app:
# Type: string
tofa2_themepark_app:
tofa_role_themepark_themetofa2_themepark_theme
# Type: string
tofa_role_themepark_theme:
# Type: string
tofa2_themepark_theme:
tofa_role_traefik_api_middleware_httptofa2_traefik_api_middleware_http
# Type: string
tofa_role_traefik_api_middleware_http:
# Type: string
tofa2_traefik_api_middleware_http:
tofa_role_traefik_autodetect_enabledtofa2_traefik_autodetect_enabled
# Enable Traefik autodetect middleware for containers
# Type: bool (true/false)
tofa_role_traefik_autodetect_enabled: false
# Enable Traefik autodetect middleware for containers
# Type: bool (true/false)
tofa2_traefik_autodetect_enabled: false
tofa_role_traefik_crowdsec_enabledtofa2_traefik_crowdsec_enabled
# Enable CrowdSec middleware for containers
# Type: bool (true/false)
tofa_role_traefik_crowdsec_enabled: false
# Enable CrowdSec middleware for containers
# Type: bool (true/false)
tofa2_traefik_crowdsec_enabled: false
tofa_role_traefik_error_pages_enabledtofa2_traefik_error_pages_enabled
# Enable custom error pages middleware for containers
# Type: bool (true/false)
tofa_role_traefik_error_pages_enabled: false
# Enable custom error pages middleware for containers
# Type: bool (true/false)
tofa2_traefik_error_pages_enabled: false
tofa_role_traefik_gzip_enabledtofa2_traefik_gzip_enabled
# Enable gzip compression middleware for containers
# Type: bool (true/false)
tofa_role_traefik_gzip_enabled: false
# Enable gzip compression middleware for containers
# Type: bool (true/false)
tofa2_traefik_gzip_enabled: false
tofa_role_traefik_middleware_httptofa2_traefik_middleware_http
# Type: string
tofa_role_traefik_middleware_http:
# Type: string
tofa2_traefik_middleware_http:
tofa_role_traefik_middleware_http_api_insecuretofa2_traefik_middleware_http_api_insecure
# Type: bool (true/false)
tofa_role_traefik_middleware_http_api_insecure:
# Type: bool (true/false)
tofa2_traefik_middleware_http_api_insecure:
tofa_role_traefik_middleware_http_insecuretofa2_traefik_middleware_http_insecure
# Type: bool (true/false)
tofa_role_traefik_middleware_http_insecure:
# Type: bool (true/false)
tofa2_traefik_middleware_http_insecure:
tofa_role_traefik_prioritytofa2_traefik_priority
# Type: string
tofa_role_traefik_priority:
# Type: string
tofa2_traefik_priority:
tofa_role_traefik_robot_enabledtofa2_traefik_robot_enabled
# Enable robots.txt middleware for containers
# Type: bool (true/false)
tofa_role_traefik_robot_enabled: true
# Enable robots.txt middleware for containers
# Type: bool (true/false)
tofa2_traefik_robot_enabled: true
tofa_role_traefik_tailscale_enabledtofa2_traefik_tailscale_enabled
# Enable Tailscale-specific Traefik configuration for containers
# Type: bool (true/false)
tofa_role_traefik_tailscale_enabled: false
# Enable Tailscale-specific Traefik configuration for containers
# Type: bool (true/false)
tofa2_traefik_tailscale_enabled: false
tofa_role_traefik_wildcard_enabledtofa2_traefik_wildcard_enabled
# Enable wildcard certificate for containers
# Type: bool (true/false)
tofa_role_traefik_wildcard_enabled: true
# Enable wildcard certificate for containers
# Type: bool (true/false)
tofa2_traefik_wildcard_enabled: true
tofa_role_web_api_http_porttofa2_web_api_http_port
# Type: string (quoted number)
tofa_role_web_api_http_port:
# Type: string (quoted number)
tofa2_web_api_http_port:
tofa_role_web_api_http_schemetofa2_web_api_http_scheme
# Type: string ("http"/"https")
tofa_role_web_api_http_scheme:
# Type: string ("http"/"https")
tofa2_web_api_http_scheme:
tofa_role_web_api_http_serverstransporttofa2_web_api_http_serverstransport
# Type: dict/omit
tofa_role_web_api_http_serverstransport:
# Type: dict/omit
tofa2_web_api_http_serverstransport:
tofa_role_web_api_porttofa2_web_api_port
# Type: string (quoted number)
tofa_role_web_api_port:
# Type: string (quoted number)
tofa2_web_api_port:
tofa_role_web_api_schemetofa2_web_api_scheme
# Type: string ("http"/"https")
tofa_role_web_api_scheme:
# Type: string ("http"/"https")
tofa2_web_api_scheme:
tofa_role_web_api_serverstransporttofa2_web_api_serverstransport
# Type: dict/omit
tofa_role_web_api_serverstransport:
# Type: dict/omit
tofa2_web_api_serverstransport:
tofa_role_web_fqdn_overridetofa2_web_fqdn_override
# Override the Traefik fully qualified domain name (FQDN) for containers
# Type: list
tofa_role_web_fqdn_override:
# Override the Traefik fully qualified domain name (FQDN) for containers
# Type: list
tofa2_web_fqdn_override:

Example Override

tofa_role_web_fqdn_override:
  - "{{ traefik_host }}"
  - "tofa2.{{ user.domain }}"
  - "tofa.otherdomain.tld"

Note: Include {{ traefik_host }} to preserve the default FQDN alongside your custom entries

Example Override

tofa2_web_fqdn_override:
  - "{{ traefik_host }}"
  - "tofa2.{{ user.domain }}"
  - "tofa.otherdomain.tld"

Note: Include {{ traefik_host }} to preserve the default FQDN alongside your custom entries

tofa_role_web_host_overridetofa2_web_host_override
# Override the Traefik web host configuration for containers
# Type: string
tofa_role_web_host_override:
# Override the Traefik web host configuration for containers
# Type: string
tofa2_web_host_override:

Example Override

tofa_role_web_host_override: "Host(`{{ traefik_host }}`) || Host(`{{ 'tofa2.' + user.domain }}`)"

Note: Use {{ traefik_host }} to include the default host configuration in your custom rule

Example Override

tofa2_web_host_override: "Host(`{{ traefik_host }}`) || Host(`{{ 'tofa2.' + user.domain }}`)"

Note: Use {{ traefik_host }} to include the default host configuration in your custom rule

tofa_role_web_http_porttofa2_web_http_port
# Type: string (quoted number)
tofa_role_web_http_port:
# Type: string (quoted number)
tofa2_web_http_port:
tofa_role_web_http_schemetofa2_web_http_scheme
# Type: string ("http"/"https")
tofa_role_web_http_scheme:
# Type: string ("http"/"https")
tofa2_web_http_scheme:
tofa_role_web_http_serverstransporttofa2_web_http_serverstransport
# Type: dict/omit
tofa_role_web_http_serverstransport:
# Type: dict/omit
tofa2_web_http_serverstransport:
tofa_role_web_schemetofa2_web_scheme
# URL scheme to use for web access to containers
# Type: string ("http"/"https")
tofa_role_web_scheme:
# URL scheme to use for web access to containers
# Type: string ("http"/"https")
tofa2_web_scheme:
tofa_role_web_serverstransporttofa2_web_serverstransport
# Type: dict/omit
tofa_role_web_serverstransport:
# Type: dict/omit
tofa2_web_serverstransport: