Титла: Jellyfin reverse proxy with Apache + DNS + SSL Публикувано от: ivanovslavy в Dec 31, 2023, 13:11 Здравейте,
Искам да споделя малко опит за така нашумелите напоследък мултимедия сървъри и дано съм полезен на някой от Вас! Аз имам домашен Jellyfin multimedia server, който е достъпен през интернет и на който са качени филми, музика, лични семейни снимки, книги и други благинки на които мога да се радвам от всяка точка на света, понеже работата ми е свързана с много пътувания и отсъствие от дома. Тук обаче идва проблема с това, че достъпа до сървъра трябва да е с възможно най-високо ниво на сигурност, защото иначе сървъра и цялото инфо може да попадне в ръцете на някой "лош човек". Доста четох по темата и стигнах до извода, че трябва да го вкарам в DNS системата и да изкарам SSL сертификат за него.... Всичко това обаче ми изглеждаше малко сложно имайки се впредвид че Jellyfin работи на порт 8096 а SSL връзката минава през 443 и изисква уеб сървър! В този ми пост няма да разглеждам инсталиране и конфигуриране нито на Jellyfin нито на който и да е уеб сървър а самата процедура по настройка за доставяне на SSL сертификат на Jellyfin работещ на стандартния си порт 8096. За уеб сървър използвам от години Apache2 и в този случай отново съм прибягнал до него, понеже го познавам и ме кефи, но Вие ако искате използвайте друг такъв. За да работи цялата идея трябва да се създаде ревърс прокси от Апаче кам Джилифин. Операционната система която използвам е Ubuntu Linux Server 22.04 LTS 1. Покупка на домейн име и настройката на DNS records към ай.пи.то на моя мултимедиен сървър 2. Пренасочване на на порт 443 в рутера към вътрешното ай.пи на сървъра - моя интернет доставчик е А1 и съм им благодарен, че са наистина много бързи и ми оказаха съдействие буквално за минути, понеже Аз нямам достъп до настройките на рутера им 3. Позволяване на порт 443 в защитната стена на сървъра sudo ufw allow 443 4. Активиране на прокси и ревърс прокси за Апаче sudo a2enmod proxy sudo a2enmod proxy_http 5. Създаване на конфиг файл във Апаче, като името на домейна ще приемем, че е example.com sudo nano /etc/apache2/sites-available/example.com.conf 6. Добавяне информацията за DNS във конфигурационният файл на сайта, както и информацията за проксито. Конфигурационният файл трябва да изглежда така: <VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin yourmail@gmail.com ErrorLog /var/log/apache2/jellyfin-error.log CustomLog /var/log/apache2/jellyfin-access.log combined ProxyPreserveHost On ProxyPass "/embywebsocket" "ws://127.0.0.1:8096/embywebsocket" ProxyPassReverse "/embywebsocket" "ws://127.0.0.1:8096/embywebsocket" ProxyPass "/" "http://127.0.0.1:8096/" ProxyPassReverse "/" "http://127.0.0.1:8096/" </VirtualHost> Затворете и запазете фойла! 7. Актиниране на конфигурационният файл sudo a2ensite example.com.conf 8. Рестартиране на Апаче sudo systemctl restart apache2 9. Ако всичко е направино правилно трябва вече да имаме достъп до нашият Jellyfin използвайки домейн името. Отваряме браузъра и тестваме - www.example.com и също example.com Следва издаване на така нужният ни SSL сертификат: 10. Инсталираме certbot sudo apt install python3-certbot-apache -y 11. Поискване на сертификат за нашият сайт sudo certbot -d example.com -d www.еxample.com Следваме стъпките които трябва да се минат и попълваме коректно всичко което трябва да се попълни и всичко което ни пита кертбота Ако всичко е ОК на последния ред от процедурата ще ви изпише - Поздравленя! Тествайте в браузъра отново 12. Автоматично подновяване на сертификата - Мисля, че стандартно сертификатите идват за 3 месеца, но можем да овтоматизираме този процес и кертбота да дава нов такъв всеки мисец. Влезте в: cd /etc/systemd/system/timers.target.wants 13. Активирайте автоматичното подновяване sudo systemctl enable certbot.timer Това е всичко което Аз направих и нещата ми тръгнаха от първия път - изключително доволен съм от резултата. Пожелавам успех на хората които искат да имат читав мултимедиен сървър със активиран SSL и ревърс прокси. Поздрави Слави! Edit: Забравих да кажа, че аз използвах Мултимедииния ми сървър известно време без домейн име и SSL, просто за тест и да видя дали въобще ще ми хареса и дали ще ми върши работа. Съответно за достъпа до него бях разрешил порт 8096 в защитната стена, но с тази настройка за Jellyfin ние реално го скриваме зад Апаче сървъра и ивече използваме домейн името за достъп до него. Вече можем да изтрием този порт от ufw и реално пак да си имаме достъп до него чрез example.com. Също в моя случай трябва да звънна на А1 да спрът пренасочването на порта в рутера за максимална сигурност на системата. Все пак това бе и основната идея - max security ;) ;) |