diff options
Diffstat (limited to 'roles/invidious')
-rw-r--r-- | roles/invidious/README.md | 74 | ||||
-rw-r--r-- | roles/invidious/defaults/main.yml | 2 | ||||
-rw-r--r-- | roles/invidious/templates/opt/invidious/invidious/config/config.yml.j2 | 3 | ||||
-rw-r--r-- | roles/invidious/vars/main.yml | 1 |
4 files changed, 77 insertions, 3 deletions
diff --git a/roles/invidious/README.md b/roles/invidious/README.md new file mode 100644 index 0000000..8c593de --- /dev/null +++ b/roles/invidious/README.md @@ -0,0 +1,74 @@ +Invidious +========= + +Description +----------- + +The `invidious` role builds and configures the [Invidious](https://invidious.io/) +YouTube frontend. It also installs a script to automatically update Invidious +periodically. + +This role configures the application only; it does not configure a reverse +proxy. + + +Variables +--------- + +This role **accepts** the following variables: + +Variable | Default | Description +--------------------------------------|---------------------------------------|------------ +`invidious_version` | `master` | Git version to build +`invidious_crystal_version` | see [default vars](defaults/main.yml) | Crystal version to install +`invidious_server_name` | `{{ ansible_fqdn }}` | Canonical HTTP hostname +`invidious_port` | 8080 | Local listening port +`invidious_db_user` | `s-invidious` | Database user (will be created) +`invidious_db_password` | | Database password +`invidious_db_name` | `invidious` | Database name (will be created) +`invidious_db_host` | `{{ postgresql_host }}` | PostgreSQL host +`invidious_db_cleanup_on_calendar` | `weekly` | Systemd [calendar interval](https://www.freedesktop.org/software/systemd/man/systemd.time.html#Calendar%20Events) for pruning database +`invidious_update_on_calendar` | `weekly` | Systemd [calendar interval](https://www.freedesktop.org/software/systemd/man/systemd.time.html#Calendar%20Events) for updating Invidious +`invidious_channel_threads` | 1 | Number of threads to use when updating channels +`invidious_feed_threads` | 1 | Number of threads to use when updating RSS feeds +`invidious_registration_enabled` | yes | Enable new user registration +`invidious_popular_enabled` | no | Enable "Popular" page for this instance +`invidious_full_refresh` | no | Forcefully re-download entire channel when updating +`invidious_use_pubsub_feeds` | no | Subscribe to channel updates via PubSub (instance must be publicly reachable) +`invidious_hmac_key` | | PubSub HMAC key +`invidious_default_locale` | `en-US` | Default locale +`invidious_default_region` | `US` | Default region +`invidious_default_dark_mode` | `auto` | Default dark mode setting (either `dark`, `light`, or `auto`) +`invidious_default_autoplay` | no | Autoplay videos by default +`invidious_default_continue` | yes | Load next video by default +`invidious_default_continue_autoplay` | no | Autoplay next video by default +`invidious_default_local` | yes | Proxy videos through instance by default +`invidious_default_quality` | `dash` | Default video quality (either `dash`, `hd720`, `medium`, or `small`) +`invidious_default_quality_dash` | `1080p` | Default `dash` video quality (either `auto`, `best`, `worst`, `1440p`, `1080p`, etc) +`invidious_default_related_videos` | yes | Show related videos by default +`invidious_default_video_loop` | no | Loop videos by default +`invidious_default_player_style` | `invidious` | Default player style (either `invidious` or `youtube`) +`invidious_default_home` | `Subscriptions` | Default home page (either `Popular`, `Trending`, `Subscriptions`, or `Playlists`) +`invidious_feed_menu` | `['Subscriptions', 'Playlists']` | Feeds to show on the home page (choose from `Popular`, `Trending`, `Subscriptions`, and `Playlists`) + + +This role **exports** the following variables: + +Variable | Description +--------------------------|------------ +`invidious_apache_config` | Apache config block for reverse proxy + +Usage +----- + +Example playbook: + +````yaml +- hosts: invidious_servers + roles: + - role: invidious + vars: + invidious_db_host: postgres.ipa.example.com + invidious_db_password: s3cret + invidious_default_local: no +```` diff --git a/roles/invidious/defaults/main.yml b/roles/invidious/defaults/main.yml index 01ad9b1..a011158 100644 --- a/roles/invidious/defaults/main.yml +++ b/roles/invidious/defaults/main.yml @@ -3,7 +3,6 @@ invidious_crystal_version: 1.5.0-1 invidious_server_name: '{{ ansible_fqdn }}' invidious_port: 8080 -invidious_user: invidious invidious_db_user: s-invidious invidious_db_name: invidious invidious_db_host: '{{ postgresql_host }}' @@ -13,7 +12,6 @@ invidious_update_on_calendar: weekly invidious_channel_threads: 1 invidious_feed_threads: 1 -invidious_admin_email: 'root@{{ email_domain }}' invidious_registration_enabled: yes invidious_popular_enabled: no invidious_full_refresh: no diff --git a/roles/invidious/templates/opt/invidious/invidious/config/config.yml.j2 b/roles/invidious/templates/opt/invidious/invidious/config/config.yml.j2 index e74caee..d35a819 100644 --- a/roles/invidious/templates/opt/invidious/invidious/config/config.yml.j2 +++ b/roles/invidious/templates/opt/invidious/invidious/config/config.yml.j2 @@ -5,10 +5,11 @@ channel_threads: {{ invidious_channel_threads }} feed_threads: {{ invidious_channel_threads }} database_url: postgres://{{ invidious_db_user }}:{{ invidious_db_password}}@{{ invidious_db_host }}/{{ invidious_db_name }}?sslmode=verify-full use_pubsub_feeds: {{ invidious_use_pubsub_feeds }} +{% if invidious_use_pubsub_feeds %} hmac_key: {{ invidious_hmac_key }} +{% endif %} https_only: true registration_enabled: {{ invidious_registration_enabled }} -admin_email: {{ invidious_admin_email }} port: {{ invidious_port }} host_binding: 127.0.0.1 popular_enabled: {{ invidious_popular_enabled }} diff --git a/roles/invidious/vars/main.yml b/roles/invidious/vars/main.yml index 36ca643..0f1c322 100644 --- a/roles/invidious/vars/main.yml +++ b/roles/invidious/vars/main.yml @@ -13,6 +13,7 @@ invidious_packages: - git - python3-psycopg2 +invidious_user: invidious invidious_git_repo: https://github.com/iv-org/invidious invidious_home: /opt/invidious invidious_install_dir: '{{ invidious_home }}/invidious' |