aboutsummaryrefslogtreecommitdiffstats
path: root/roles/invidious
diff options
context:
space:
mode:
Diffstat (limited to 'roles/invidious')
-rw-r--r--roles/invidious/README.md74
-rw-r--r--roles/invidious/defaults/main.yml2
-rw-r--r--roles/invidious/templates/opt/invidious/invidious/config/config.yml.j23
-rw-r--r--roles/invidious/vars/main.yml1
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'