Homepage¶
| Description / name | Input element |
|---|---|
| Your domain name |
Overview¶
Homepage is a modern (fully static, fast), secure (fully proxied), customizable application dashboard with integrations for more than 25 services and translations for over 15 languages. Easily configured via YAML files (or discovery via docker labels).
Deployment¶
sb install sandbox-homepage
Usage¶
Visit https://homepage.iYOUR_DOMAIN_NAMEi.
Basics¶
This role will add both the homepage container, and the homepage-docker-socket-proxy container. To add services and bookmarks etc. you edit your config files found at /opt/homepage/config/. There are several example services and widgets included in the role, just uncomment and fill them in appropriately. The webui will reload and it will be visible shortly after. No need to restart the container.
Role Defaults¶
Use the Inventory to customize variables. (1)
-
Example override
homepage_name: "custom_value"Avoid overriding variables ending in
_defaultWhen overriding variables that end in
_default(likehomepage_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 (likehomepage_docker_envs_custom) to add your changes. Custom values are merged with defaults, ensuring you receive updates.
homepage_name
# Type: string
homepage_name: homepage
homepage_role_docker_socket_proxy_envs
# Type: dict
homepage_role_docker_socket_proxy_envs:
CONTAINERS: "1"
POST: "0"
homepage_role_web_subdomain
# Type: string
homepage_role_web_subdomain: "{{ homepage_name }}"
homepage_role_web_domain
# Type: string
homepage_role_web_domain: "{{ user.domain }}"
homepage_role_web_port
# Type: string
homepage_role_web_port: "3000"
homepage_role_web_url
# Type: string
homepage_role_web_url: "{{ 'https://' + (lookup('role_var', '_web_subdomain', role='homepage') + '.' + lookup('role_var', '_web_domain', role='homepage')
if (lookup('role_var', '_web_subdomain', role='homepage') | length > 0)
else lookup('role_var', '_web_domain', role='homepage')) }}"
homepage_role_dns_record
# Type: string
homepage_role_dns_record: "{{ lookup('role_var', '_web_subdomain', role='homepage') }}"
homepage_role_dns_zone
# Type: string
homepage_role_dns_zone: "{{ lookup('role_var', '_web_domain', role='homepage') }}"
homepage_role_dns_proxy
# Type: bool (true/false)
homepage_role_dns_proxy: "{{ dns_proxied }}"
homepage_role_traefik_sso_middleware
# Type: string
homepage_role_traefik_sso_middleware: "{{ traefik_default_sso_middleware }}"
homepage_role_traefik_middleware_default
# Type: string
homepage_role_traefik_middleware_default: "{{ traefik_default_middleware }}"
homepage_role_traefik_middleware_custom
# Type: string
homepage_role_traefik_middleware_custom: ""
homepage_role_traefik_certresolver
# Type: string
homepage_role_traefik_certresolver: "{{ traefik_default_certresolver }}"
homepage_role_traefik_enabled
# Type: bool (true/false)
homepage_role_traefik_enabled: true
homepage_role_traefik_api_enabled
# Type: bool (true/false)
homepage_role_traefik_api_enabled: false
homepage_role_traefik_api_endpoint
# Type: string
homepage_role_traefik_api_endpoint: ""
Container
homepage_role_docker_container
# Type: string
homepage_role_docker_container: "{{ homepage_name }}"
Image
homepage_role_docker_image_pull
# Type: bool (true/false)
homepage_role_docker_image_pull: true
homepage_role_docker_image_repo
# Type: string
homepage_role_docker_image_repo: "ghcr.io/gethomepage/homepage"
homepage_role_docker_image_tag
# Type: string
homepage_role_docker_image_tag: "latest"
homepage_role_docker_image
# Type: string
homepage_role_docker_image: "{{ lookup('role_var', '_docker_image_repo', role='homepage') }}:{{ lookup('role_var', '_docker_image_tag', role='homepage') }}"
Envs
homepage_role_docker_envs_default
# Type: dict
homepage_role_docker_envs_default:
TZ: "{{ tz }}"
PUID: "{{ uid }}"
PGID: "{{ gid }}"
HOMEPAGE_ALLOWED_HOSTS: "{{ traefik_host + ',' + homepage_name + ':' + lookup('role_var', '_web_port', role='homepage') }}"
homepage_role_docker_envs_custom
# Type: dict
homepage_role_docker_envs_custom: {}
Volumes
homepage_role_docker_volumes_default
# Type: list
homepage_role_docker_volumes_default:
- "{{ lookup('role_var', '_paths_location', role='homepage') }}/config:/app/config"
- "{{ lookup('role_var', '_paths_location', role='homepage') }}/images:/app/public/images"
- "{{ lookup('role_var', '_paths_location', role='homepage') }}/icons:/app/public/icons"
homepage_role_docker_volumes_custom
# Type: list
homepage_role_docker_volumes_custom: []
Hostname
homepage_role_docker_hostname
# Type: string
homepage_role_docker_hostname: "{{ homepage_name }}"
Networks
homepage_role_docker_networks_alias
# Type: string
homepage_role_docker_networks_alias: "{{ homepage_name }}"
homepage_role_docker_networks_default
# Type: list
homepage_role_docker_networks_default: []
homepage_role_docker_networks_custom
# Type: list
homepage_role_docker_networks_custom: []
Restart Policy
homepage_role_docker_restart_policy
# Type: string
homepage_role_docker_restart_policy: unless-stopped
State
homepage_role_docker_state
# Type: string
homepage_role_docker_state: started
User
homepage_role_docker_user
# Type: string
homepage_role_docker_user: "{{ uid }}:{{ gid }}"
Dependencies
homepage_role_depends_on
# Type: string
homepage_role_depends_on: "{{ homepage_name }}-docker-socket-proxy"
homepage_role_depends_on_delay
# Type: string (quoted number)
homepage_role_depends_on_delay: "0"
homepage_role_depends_on_healthchecks
# Type: string ("true"/"false")
homepage_role_depends_on_healthchecks: "false"
The following advanced options are available via create_docker_container but are not defined in the role. See: docker_container module
Resource Limits
homepage_role_docker_blkio_weight
# Type: int
homepage_role_docker_blkio_weight:
homepage_role_docker_cpu_period
# Type: int
homepage_role_docker_cpu_period:
homepage_role_docker_cpu_quota
# Type: int
homepage_role_docker_cpu_quota:
homepage_role_docker_cpu_shares
# Type: int
homepage_role_docker_cpu_shares:
homepage_role_docker_cpus
# Type: string
homepage_role_docker_cpus:
homepage_role_docker_cpuset_cpus
# Type: string
homepage_role_docker_cpuset_cpus:
homepage_role_docker_cpuset_mems
# Type: string
homepage_role_docker_cpuset_mems:
homepage_role_docker_kernel_memory
# Type: string
homepage_role_docker_kernel_memory:
homepage_role_docker_memory
# Type: string
homepage_role_docker_memory:
homepage_role_docker_memory_reservation
# Type: string
homepage_role_docker_memory_reservation:
homepage_role_docker_memory_swap
# Type: string
homepage_role_docker_memory_swap:
homepage_role_docker_memory_swappiness
# Type: int
homepage_role_docker_memory_swappiness:
homepage_role_docker_shm_size
# Type: string
homepage_role_docker_shm_size:
Security & Devices
homepage_role_docker_cap_drop
# Type: list
homepage_role_docker_cap_drop:
homepage_role_docker_cgroupns_mode
# Type: string
homepage_role_docker_cgroupns_mode:
homepage_role_docker_device_cgroup_rules
# Type: list
homepage_role_docker_device_cgroup_rules:
homepage_role_docker_device_read_bps
# Type: list
homepage_role_docker_device_read_bps:
homepage_role_docker_device_read_iops
# Type: list
homepage_role_docker_device_read_iops:
homepage_role_docker_device_requests
# Type: list
homepage_role_docker_device_requests:
homepage_role_docker_device_write_bps
# Type: list
homepage_role_docker_device_write_bps:
homepage_role_docker_device_write_iops
# Type: list
homepage_role_docker_device_write_iops:
homepage_role_docker_devices
# Type: list
homepage_role_docker_devices:
homepage_role_docker_devices_default
# Type: string
homepage_role_docker_devices_default:
homepage_role_docker_groups
# Type: list
homepage_role_docker_groups:
homepage_role_docker_privileged
# Type: bool (true/false)
homepage_role_docker_privileged:
homepage_role_docker_security_opts
# Type: list
homepage_role_docker_security_opts:
homepage_role_docker_userns_mode
# Type: string
homepage_role_docker_userns_mode:
Networking
homepage_role_docker_dns_opts
# Type: list
homepage_role_docker_dns_opts:
homepage_role_docker_dns_search_domains
# Type: list
homepage_role_docker_dns_search_domains:
homepage_role_docker_dns_servers
# Type: list
homepage_role_docker_dns_servers:
homepage_role_docker_domainname
# Type: string
homepage_role_docker_domainname:
homepage_role_docker_exposed_ports
# Type: list
homepage_role_docker_exposed_ports:
homepage_role_docker_hosts
# Type: dict
homepage_role_docker_hosts:
homepage_role_docker_hosts_use_common
# Type: bool (true/false)
homepage_role_docker_hosts_use_common:
homepage_role_docker_ipc_mode
# Type: string
homepage_role_docker_ipc_mode:
homepage_role_docker_links
# Type: list
homepage_role_docker_links:
homepage_role_docker_network_mode
# Type: string
homepage_role_docker_network_mode:
homepage_role_docker_pid_mode
# Type: string
homepage_role_docker_pid_mode:
homepage_role_docker_ports
# Type: list
homepage_role_docker_ports:
homepage_role_docker_uts
# Type: string
homepage_role_docker_uts:
Storage
homepage_role_docker_keep_volumes
# Type: bool (true/false)
homepage_role_docker_keep_volumes:
homepage_role_docker_mounts
# Type: list
homepage_role_docker_mounts:
homepage_role_docker_storage_opts
# Type: dict
homepage_role_docker_storage_opts:
homepage_role_docker_tmpfs
# Type: list
homepage_role_docker_tmpfs:
homepage_role_docker_volume_driver
# Type: string
homepage_role_docker_volume_driver:
homepage_role_docker_volumes_from
# Type: list
homepage_role_docker_volumes_from:
homepage_role_docker_volumes_global
# Type: bool (true/false)
homepage_role_docker_volumes_global:
homepage_role_docker_working_dir
# Type: string
homepage_role_docker_working_dir:
Monitoring & Lifecycle
homepage_role_docker_auto_remove
# Type: bool (true/false)
homepage_role_docker_auto_remove:
homepage_role_docker_cleanup
# Type: bool (true/false)
homepage_role_docker_cleanup:
homepage_role_docker_force_kill
# Type: string
homepage_role_docker_force_kill:
homepage_role_docker_healthcheck
# Type: dict
homepage_role_docker_healthcheck:
homepage_role_docker_healthy_wait_timeout
# Type: int
homepage_role_docker_healthy_wait_timeout:
homepage_role_docker_init
# Type: bool (true/false)
homepage_role_docker_init:
homepage_role_docker_kill_signal
# Type: string
homepage_role_docker_kill_signal:
homepage_role_docker_log_driver
# Type: string
homepage_role_docker_log_driver:
homepage_role_docker_log_options
# Type: dict
homepage_role_docker_log_options:
homepage_role_docker_oom_killer
# Type: bool (true/false)
homepage_role_docker_oom_killer:
homepage_role_docker_oom_score_adj
# Type: int
homepage_role_docker_oom_score_adj:
homepage_role_docker_output_logs
# Type: bool (true/false)
homepage_role_docker_output_logs:
homepage_role_docker_paused
# Type: bool (true/false)
homepage_role_docker_paused:
homepage_role_docker_recreate
# Type: bool (true/false)
homepage_role_docker_recreate:
homepage_role_docker_restart_retries
# Type: int
homepage_role_docker_restart_retries:
homepage_role_docker_stop_timeout
# Type: int
homepage_role_docker_stop_timeout:
Other Options
homepage_role_docker_capabilities
# Type: list
homepage_role_docker_capabilities:
homepage_role_docker_cgroup_parent
# Type: string
homepage_role_docker_cgroup_parent:
homepage_role_docker_commands
# Type: list
homepage_role_docker_commands:
homepage_role_docker_create_timeout
# Type: int
homepage_role_docker_create_timeout:
homepage_role_docker_entrypoint
# Type: string
homepage_role_docker_entrypoint:
homepage_role_docker_env_file
# Type: string
homepage_role_docker_env_file:
homepage_role_docker_labels
# Type: dict
homepage_role_docker_labels:
homepage_role_docker_labels_use_common
# Type: bool (true/false)
homepage_role_docker_labels_use_common:
homepage_role_docker_read_only
# Type: bool (true/false)
homepage_role_docker_read_only:
homepage_role_docker_runtime
# Type: string
homepage_role_docker_runtime:
homepage_role_docker_sysctls
# Type: list
homepage_role_docker_sysctls:
homepage_role_docker_ulimits
# Type: list
homepage_role_docker_ulimits:
homepage_role_autoheal_enabled
# Enable or disable Autoheal monitoring for the container created when deploying
# Type: bool (true/false)
homepage_role_autoheal_enabled: true
homepage_role_depends_on
# List of container dependencies that must be running before the container start
# Type: string
homepage_role_depends_on: ""
homepage_role_depends_on_delay
# Delay in seconds before starting the container after dependencies are ready
# Type: string (quoted number)
homepage_role_depends_on_delay: "0"
homepage_role_depends_on_healthchecks
# Enable healthcheck waiting for container dependencies
# Type: string ("true"/"false")
homepage_role_depends_on_healthchecks:
homepage_role_diun_enabled
# Enable or disable Diun update notifications for the container created when deploying
# Type: bool (true/false)
homepage_role_diun_enabled: true
homepage_role_dns_enabled
# Enable or disable automatic DNS record creation for the container
# Type: bool (true/false)
homepage_role_dns_enabled: true
homepage_role_docker_controller
# Enable or disable Saltbox Docker Controller management for the container
# Type: bool (true/false)
homepage_role_docker_controller: true
homepage_role_docker_image_repo
# Type: string
homepage_role_docker_image_repo:
homepage_role_docker_image_tag
# Type: string
homepage_role_docker_image_tag:
homepage_role_docker_volumes_download
# Type: bool (true/false)
homepage_role_docker_volumes_download:
homepage_role_paths_location
# Type: string
homepage_role_paths_location:
homepage_role_themepark_addons
# Type: string
homepage_role_themepark_addons:
homepage_role_themepark_app
# Type: string
homepage_role_themepark_app:
homepage_role_themepark_theme
# Type: string
homepage_role_themepark_theme:
homepage_role_traefik_api_endpoint
# Type: dict/omit
homepage_role_traefik_api_endpoint:
homepage_role_traefik_api_middleware
# Type: string
homepage_role_traefik_api_middleware:
homepage_role_traefik_api_middleware_http
# Type: string
homepage_role_traefik_api_middleware_http:
homepage_role_traefik_autodetect_enabled
# Enable Traefik autodetect middleware for the container
# Type: bool (true/false)
homepage_role_traefik_autodetect_enabled: false
homepage_role_traefik_certresolver
# Type: string
homepage_role_traefik_certresolver:
homepage_role_traefik_crowdsec_enabled
# Enable CrowdSec middleware for the container
# Type: bool (true/false)
homepage_role_traefik_crowdsec_enabled: false
homepage_role_traefik_error_pages_enabled
# Enable custom error pages middleware for the container
# Type: bool (true/false)
homepage_role_traefik_error_pages_enabled: false
homepage_role_traefik_gzip_enabled
# Enable gzip compression middleware for the container
# Type: bool (true/false)
homepage_role_traefik_gzip_enabled: false
homepage_role_traefik_middleware_http
# Type: string
homepage_role_traefik_middleware_http:
homepage_role_traefik_middleware_http_api_insecure
# Type: bool (true/false)
homepage_role_traefik_middleware_http_api_insecure:
homepage_role_traefik_middleware_http_insecure
# Type: bool (true/false)
homepage_role_traefik_middleware_http_insecure:
homepage_role_traefik_priority
# Type: string
homepage_role_traefik_priority:
homepage_role_traefik_robot_enabled
# Enable robots.txt middleware for the container
# Type: bool (true/false)
homepage_role_traefik_robot_enabled: true
homepage_role_traefik_tailscale_enabled
# Enable Tailscale-specific Traefik configuration for the container
# Type: bool (true/false)
homepage_role_traefik_tailscale_enabled: false
homepage_role_traefik_wildcard_enabled
# Enable wildcard certificate for the container
# Type: bool (true/false)
homepage_role_traefik_wildcard_enabled: true
homepage_role_web_domain
# Type: string
homepage_role_web_domain:
homepage_role_web_fqdn_override
# Override the Traefik fully qualified domain name (FQDN) for the container
# Type: list
homepage_role_web_fqdn_override:
Example Override
homepage_role_web_fqdn_override:
- "{{ traefik_host }}"
- "homepage2.{{ user.domain }}"
- "homepage.otherdomain.tld"
Note: Include {{ traefik_host }} to preserve the default FQDN alongside your custom entries
homepage_role_web_host_override
# Override the Traefik web host configuration for the container
# Type: string
homepage_role_web_host_override:
Example Override
homepage_role_web_host_override: "Host(`{{ traefik_host }}`) || Host(`{{ 'homepage2.' + user.domain }}`)"
Note: Use {{ traefik_host }} to include the default host configuration in your custom rule
homepage_role_web_http_port
# Type: string (quoted number)
homepage_role_web_http_port:
homepage_role_web_http_scheme
# Type: string ("http"/"https")
homepage_role_web_http_scheme:
homepage_role_web_http_serverstransport
# Type: dict/omit
homepage_role_web_http_serverstransport:
homepage_role_web_port
# Type: string (quoted number)
homepage_role_web_port:
homepage_role_web_scheme
# URL scheme to use for web access to the container
# Type: string ("http"/"https")
homepage_role_web_scheme:
homepage_role_web_serverstransport
# Type: dict/omit
homepage_role_web_serverstransport:
homepage_role_web_subdomain
# Type: string
homepage_role_web_subdomain: