marvinpinto.htpc

htpc

Status budowy
Ansible Galaxy
Licencja

Jest to meta-rola Ansible Galaxy, która służy do instalacji i zarządzania przykładową konfiguracją komputera do kina domowego (HTPC).

Celem tego projektu jest pokazanie, jak można używać Ansible, aby połączyć wszystkie komponenty potrzebne do konfiguracji HTPC. Łączenie wszystkich elementów zawsze było najtrudniejszą częścią, więc mam nadzieję, że to ułatwi sprawę.

Funkcje

  • SABnzbd - program do pobierania z grup dyskusyjnych
  • SickRage - menedżer biblioteki wideo dla programów telewizyjnych
  • CouchPotato - PVR i menedżer biblioteki wideo dla filmów
  • Plex - serwer multimedialny dla filmów, programów telewizyjnych, muzyki, itd.
  • nginx - proxy przednie z autoryzacją Google (poprzez OAuth2 Proxy)
  • Wszystko zaprojektowane do działania na serwerze Ubuntu 14.04

Wymagania wstępne

  1. Będziesz potrzebować domeny, pod którą to będzie hostowane - w tym ustawieniu używamy htpc-sample.example.org jako przykładu. Zaktualizuj zmienną htpc_dns_hostname z Twoją domeną.

  2. Domyślne ustawienie tutaj korzysta z autoryzacji Google, więc będziesz musiał zarejestrować aplikację webową OAuth (instrukcje tutaj) i zanotować Identyfikator klienta oraz Klucz klienta (odpowiednie zmienne to htpc_oauth_client_id oraz htpc_oauth_client_secret).

    Nie musisz ograniczać się do korzystania z dostawcy autoryzacji Google, są inne opcje również! Pamiętaj, aby dostosować zmienną oauth2_proxy_cli_args, jeśli wybierzesz tę opcję.

  3. Wygeneruj losowy ciąg 32-bajtowy używając:

    $ date +%s | sha256sum | base64 | head -c 32 ; echo
    

    Użyj tej wartości jako swoje htpc_oauth_cookie_secret.

  4. Uzyskaj certyfikat TLS HTTPS dla domeny, którą wybrałeś (htpc_dns_hostname). Zaktualizuj zmienne htpc_tls_cert i htpc_tls_cert_key swoimi certyfikatem i kluczem prywatnym (odpowiednio).

Zmienna roli

Zmienna specyficzna dla roli htpc jest określona w defaults/main.yml, podczas gdy zmienne meta-specyficzne roli znajdują się w meta/main.yml.

Przykład

Zainstaluj ten moduł z Ansible Galaxy do katalogu './roles':

ansible-galaxy install marvinpinto.htpc -p ./roles

Użyj go w playbooku jak poniżej:

- hosts: '127.0.0.1'
  become: true
  roles:
    - role: 'marvinpinto.htpc'
      htpc_dns_hostname: 'htpc-sample.example.org'
      htpc_oauth_client_id: 'twój-identyfikator-klienta'
      htpc_oauth_client_secret: 'twój-klucz-klienta'
      htpc_oauth_cookie_secret: 'N2U2NTI0NzljNjc2Y2VmNGVlZDZmMDg5'
      htpc_authorized_users_emails: |
        [email protected]
        [email protected]
      htpc_tls_cert: |
        -----BEGIN CERTIFICATE-----
        ...
        -----END CERTIFICATE-----
      htpc_tls_cert_key: |
        -----BEGIN RSA PRIVATE KEY-----
        ...
        -----END RSA PRIVATE KEY-----

Konfiguracja po ustawieniu

SABnzbd

  1. Przejdź do /sabnzbd w przeglądarce i postępuj zgodnie z wstępną konfiguracją.

  2. W /sabnzbd/config/general/ prawdopodobnie chcesz Wyłączyć klucz API (nie jest potrzebny, ponieważ działa za proxy OAuth2).

  3. W /sabnzbd/config/folders/:

  • Tymczasowy folder pobierania: /opt/downloads/sabnzbd-incomplete
  • Folder zakończonych pobrań: /opt/downloads/misc
  • Uprawnienia dla zakończonych pobrań: 777
  • Folder skryptów: /opt/nzbtomedia
  1. W /sabnzbd/config/categories/:
  • Przetwarzanie filmów:

    • Kategoria: movies
    • Skrypt: nzbToCouchPotato.py
    • Folder/Ścieżka: /opt/downloads/unprocessed/movies
  • Przetwarzanie TV:

    • Kategoria: tv
    • Skrypt: nzbToSickBeard.py
    • Folder/Ścieżka: /opt/downloads/tv
  • Przetwarzanie audio:

    • Kategoria: audio
    • Skrypt: nzbToHeadPhones.py
    • Folder/Ścieżka: /opt/downloads/unprocessed/audio
  1. W /sabnzbd/config/switches/:
  • Akcja, gdy pobierany jest zaszyfrowany RAR: abort
  • Akcja, gdy wykryto niepożądane rozszerzenie: abort
  • Niepożądane rozszerzenia: exe, com
  • Tylko przetwarzanie zweryfikowanych zadań: off
  • Ignorowanie próbek: on
  • Lista czyszczenia: nfo, sfv
  1. W /sabnzbd/config/special/:
  • empty_postproc: on

SickRage

  1. Zatrzymaj usługę SickRage:
$ service sickrage stop
  1. Pozwól nginx na proxy żądań do SickRage
$ sed -i 's/^web_root = ""/web_root = \/sickrage/g' /opt/config/sickrage-config/config.ini
$ sed -i 's/^handle_reverse_proxy = 0/handle_reverse_proxy = 1/g' /opt/config/sickrage-config/config.ini
  1. Inne ustawienia SickRage
$ sed -i 's/^use_failed_downloads = 0/use_failed_downloads = 1/g' /opt/config/sickrage-config/config.ini
$ sed -i 's/^log_nr = 5/log_nr = 1/g' /opt/config/sickrage-config/config.ini
$ sed -i 's/^auto_update =.*/auto_update = 0/g' /opt/config/sickrage-config/config.ini
$ sed -i 's/^version_notify =.*/version_notify = 0/g' /opt/config/sickrage-config/config.ini
$ sed -i 's/^naming_pattern =.*/naming_pattern = %S.N.S%0SE%0E.%E.N/g' /opt/config/sickrage-config/config.ini
$ sed -i 's/^web_host =.*/web_host = 127.0.0.1/g' /opt/config/sickrage-config/config.ini
  1. Uruchom usługę SickRage:
$ service sickrage start

CouchPotato

  1. Zatrzymaj usługę CouchPotato:
$ service couchpotato stop
  1. Pozwól nginx na proxy żądań do CouchPotato
$ sed -i 's/^url_base =.*/url_base = \/couchpotato/g' /opt/config/couchpotato-config/settings.conf
$ sed -i 's/^show_wizard =.*/show_wizard = 0/g' /opt/config/couchpotato-config/settings.conf
  1. Dodaj poniższy klucz/wartość pod sekcją [core] w /opt/config/couchpotato-config/settings.conf
host = 127.0.0.1
  1. Uruchom usługę CouchPotato:
$ service couchpotato start
  1. Przejdź do /couchpotato/settings/general w przeglądarce i wyłącz okresowe sprawdzanie aktualizacji.

  2. W /couchpotato/settings/renamer:

  • Zmień nazwę pobranych filmów: Włączone
  • Co: 0
  • Z: /opt/downloads/unprocessed/movies
  • Do: /opt/downloads/movies
  • Wymuszenie co: 24
  • Czyszczenie: Włączone
  • Następne po niepowodzeniu: Wyłączone
  • Zrób notatkę swojego Klucza API i zaktualizuj zmienną htpc_couchpotato_api_key tą wartością.
  1. W /couchpotato/settings/downloaders:
  • Sabnzbd: Włączone
  • Host: 127.0.0.1:8080
  • Kategoria: movies
  • Usuń NZB: włączone
  • Usuń nieudane: włączone

Plex Media Server

Ponieważ Plex pozwala na administracyjne akcje tylko z lokalnej podsieci, będziesz musiał stworzyć tunel SSH do swojego hosta dla początkowej konfiguracji. Zauważ, że to tylko potrzebne przy początkowej konfiguracji.

https://support.plex.tv/hc/en-us/articles/200288586-Installation

W ogólnej formie, ten polecenie SSH wygląda mniej więcej tak:

ssh ip.adres.serwera -L 8888:localhost:32400

Następnie przeglądanie pod http://localhost:8888/web powinno umożliwić Ci skonfigurowanie aplikacji Plex.

W środowisku vagrant, to polecenie ssh wygląda tak:

ssh \
  -p <Port> \
  -i <IdentityFile> \
  -L 8888:localhost:32400 \
  <User>@<HostName>

Gdzie Port, IdentityFile, User i HostName można znaleźć wykonując:

vagrant ssh-config

Więcej informacji można znaleźć w dokumentacji instalacji Plex Installation Docs.

Headphones

  1. Zatrzymaj usługę Headphones:
$ service headphones stop
  1. Pozwól nginx na proxy żądań do Headphones
sed -i 's/^http_root =.*/http_root = \/headphones/g' /opt/config/headphones-config/config.ini
sed -i 's/^http_host =.*/http_host = 127.0.0.1/g' /opt/config/headphones-config/config.ini
  1. Inne opcje konfiguracyjne
sed -i 's/^music_encoder =.*/music_encoder = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^preferred_quality =.*/preferred_quality = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^rename_files =.*/rename_files = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^folder_format =.*/folder_format = $Type/$Artist/$Album [$Year]/g' /opt/config/headphones-config/config.ini
sed -i 's/^move_files =.*/move_files = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^cleanup_files =.*/cleanup_files = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^embed_album_art =.*/embed_album_art = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^destination_dir =.*/destination_dir = \/opt\/downloads\/audio/g' /opt/config/headphones-config/config.ini
sed -i 's/^download_dir =.*/download_dir = \/opt\/downloads\/unprocessed\/audio/g' /opt/config/headphones-config/config.ini
sed -i 's/^launch_browser =.*/launch_browser = 0/g' /opt/config/headphones-config/config.ini
sed -i 's/^api_key =.*/api_key = YOURAPIKEY/g' /opt/config/headphones-config/config.ini
sed -i 's/^encoder_multicore =.*/encoder_multicore = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^api_enabled =.*/api_enabled = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^correct_metadata =.*/correct_metadata = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^encoder =.*/encoder = libav/g' /opt/config/headphones-config/config.ini
sed -i 's/^download_scan_interval =.*/download_scan_interval = 0/g' /opt/config/headphones-config/config.ini
sed -i 's/^bitrate =.*/bitrate = 256/g' /opt/config/headphones-config/config.ini
sed -i 's/^wait_until_release_date =.*/wait_until_release_date = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^embed_lyrics =.*/embed_lyrics = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^encoderoutputformat =.*/encoderoutputformat = m4a/g' /opt/config/headphones-config/config.ini
sed -i 's/^sab_host =.*/sab_host = http:\/\/127.0.0.1:8080/g' /opt/config/headphones-config/config.ini
sed -i 's/^sab_category =.*/sab_category = audio/g' /opt/config/headphones-config/config.ini
sed -i 's/^sab_apikey =.*/sab_apikey = sabapi1234/g' /opt/config/headphones-config/config.ini
sed -i 's/^songkick_enabled =.*/songkick_enabled = 0/g' /opt/config/headphones-config/config.ini
sed -i 's/^log_dir =.*/log_dir = \/opt\/config\/headphones-config\/logs/g' /opt/config/headphones-config/config.ini
sed -i 's/^include_extras =.*/include_extras = 1/g' /opt/config/headphones-config/config.ini
sed -i 's/^extras =.*/extras = 8/g' /opt/config/headphones-config/config.ini
  1. Uruchom usługę Headphones:
$ service headphones start

Rozwój

Użyj dostarczonego Vagrantfile do lokalnego rozwoju i testowania.

$ vagrant up --provision
O projekcie

This is an Ansible Galaxy meta-role of sorts to install and manage a sample Home Theatre PC (HTPC) setup.

Zainstaluj
ansible-galaxy install marvinpinto.htpc
Licencja
mit
Pobrania
69
Właściciel
Computer nerd.