Steps to install Plex server on your VPS. This tutorial is tested on Ubuntu 16.04
SSH to your server
ssh user@plex.your-domain.tld
Enable Plex Server repository on Ubuntu. Source
echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
Download .deb file from Plex. Source
wget https://downloads.plex.tv/plex-media-server/1.13.9.5456-ecd600442/plexmediaserver_1.13.9.5456-ecd600442_amd64.deb
sudo dpkg -i plexmediaserver_1.13.9.5456-ecd600442_amd64.deb.deb
Open in your web browser:
http://127.0.0.1:32400/web
or
http://your-domain.tld:32400/web
(Optional) Socks5 Proxy:
ssh -D 8123 -f -C -q -N user@vps-ip
and then open on your computer (not on vps).
http://127.0.0.1:32400
To install LetsEncrypt certificate, it requires Certbot. Source
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt update
$ sudo apt install python-certbot-nginx
and now configure Certbot:
sudo certbot --nginx
On successful configuration, it will show you the path of Certificate and Key. (Please note them for using in next steps)
Permanent redirect from HTTP to HTTPS, open
nano /etc/nginx/sites-enabled/your-web.conf
and then make sure you add 301 redirect.
server {
listen 80;
listen [::]:80;
server_name plex.your-domain.tld;
return 301 https://$server_name$request_uri;
}
Now, open your ssl-config of nginx e.g.,
nano /etc/nginx/sites-enabled/your-web-ssl.conf
Edit the file as:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name plex.your-domain.tld;
ssl_certificate /etc/letsencrypt/live/plex.your-domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/plex.your-domain.tld/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
include /etc/nginx/snippets/ssl-params.conf;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:32400;
}
}
Save the file, and restart nginx:
sudo systemctl restart nginx
Now browse your plex server at:
https://plex.your-domain.tld