Здравейте,
Искам да споделя малко опит за така нашумелите напоследък мултимедия сървъри и дано съм полезен на някой от Вас!
Аз имам домашен 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
http://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 използвайки домейн името.
Отваряме браузъра и тестваме -
http://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