Plex Media Server
Deploy Plex, a streaming platform that lets you organize and stream your own digital video and audio to your devices.
After deploying the app, you can upload media to your Plex Server and connect to it from a Plex client application. If you need additional disk space for your Plex Server, consider using our Block Storage service with this app.
Additional features, including local downloading, bandwidth limiting, and hardware transcoding, are available through the paid Plex Pass service.
1. Deploy Plex Server
Follow the deployment instructions from the Get started section to configure the app, deploy it, and verify software installation.
For information on the app-specific configurations, see the Configuration options section.
Software included
Software installed on your Linode when deploying the app.
| Package | Description |
|---|---|
| NGINX | An open source webserver and reverse proxy. See our guide on Getting Started with NGINX for more information. |
| UFW (Uncomplicated Firewall) | A firewall utility. Ports 22/tcp, 80/tcp, and 443/tcp for IPv4 and IPv6 are enabled with installation of this app. Additional ports must be opened to send email from your Linode for use with this app. To learn more, see How to Configure a Firewall with UFW. |
| Plex Media Server | A platform that transmits locally-stored media files, enabling you to stream your personal media collection to any device that can support a Plex Client. |
Base distribution and plan
- Supported distribution: Ubuntu 24.04 LTS
- Recommended plans: 4GB Dedicated CPU or Shared Compute Instance.
Configuration options
Configure the required options to deploy your instance. For additional customization, add advanced options.
The table maps the Cloud Manager UI fields to their corresponding API/CLI keys (stackscript_data) required for automated deployments.
StackScript ID: 662119
| UI field | API/CLI key | Description |
|---|---|---|
| Required options | ||
| Limited sudo user | user_name | Your preferred username for the limited sudo user entered without any capital letters, spaces, or special characters. When adding a limited sudo user, the user is created with a strong generated password for your new Linode instance, and the account is assigned to the sudo group, which provides elevated permissions when running commands with the sudo prefix.Note: For easier and more secure access with the sudo user, add an account SSH key for the Cloud Manager user during deployment and select that user as an |
| Email address (for the Let's Encrypt SSL certificate) | soa_email_address | An email address to set for the Let's Encrypt SSL certificate and receive notifications when the certificate needs to be renewed. |
| Advanced options | ||
| Disable root access over SSH | disable_root | Applies to a limited sudo user. To block the root user from logging in over SSH, select Yes. Defaults to No. Note: When you disable the root user from logging in over SSH and don't provide a valid Account SSH Key assigned to the |
| Linode API token | token_password | Applies to a custom domain. The Linode API token if you want to use Linode's DNS Manager to manage DNS records for your custom domain. Follow Manage personal access tokens to get your token on your account with Read/Write access to Domains.
|
| Subdomain | subdomain | Applies to a custom domain. The subdomain you want to use, like blog for blog.example.com. Use it only if you specify a Domain. |
| Domain | domain | Applies to a custom domain. The domain name you want to use, like example.com. Use it only if you specify a Linode API token. |
| Optional data exporter Add-ons | add_ons | An option to include add-ons for your deployment. Possible values are:
|
Notes:
- After the app deployment completes, the password for your limited sudo user is generated and stored in the
.credentialsfile in the home directory, along with application-specific passwords. Log in to your instance asrootthrough the Lish console or SSH, then runcat /home/$USERNAME/.credentialsto view its contents.- You can automatically configure a custom domain (optional) during deployment. To do that:
- First, configure your domain to use Linode’s name servers via your registrar. See Configure your domain's authoritative name servers for details.
- Once you complete that, specify the Linode API token, subdomain, and domain for the app in Cloud Manager or via API/CLI/Terraform.
Use API, CLI, or Terraform
In addition to deploying the app to a new Linode instance via Cloud Manager, you can also use the Linode API, CLI, or Terraform. When running the operation, you need to provide the StackScript ID, supported Linux distribution, and app-specific fields along with the standard Linode deployment configurations.
Note: Generate a personal access token to authenticate your API, CLI, or Terraform requests.
curl --location 'https://api.linode.com/v4/linode/instances' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer abc123def456hij789klm' \
--data-raw '{
"region": "us-east",
"type": "g6-standard-2",
"image": "linode/ubuntu24.04",
"label": "my-plex-one-click-app",
"root_pass": "@C0mpl3x#P@ssw0rd",
"stackscript_id": 662119,
"stackscript_data": {
"user_name": "jsmith",
"soa_email_address": "jsmith@example.com"
}
}'linode-cli linodes create \
--region us-east \
--type g6-standard-2 \
--label my-plex-one-click-app \
--image linode/ubuntu24.04 \
--root_pass @C0mpl3x#P@ssw0rd \
--stackscript_id 662119 \
--stackscript_data '{""user_name":"jsmith", "soa_email_address":"jsmith@example.com"}'resource "linode_instance" "my-linode" {
region = "us-east"
type = "g6-standard-2"
label = "my-plex-one-click-app"
image = "linode/ubuntu24.04"
root_pass = "@C0mpl3x#P@ssw0rd"
stackscript_id = 662119
stackscript_data = {
"user_name" = "jsmith"
"soa_email_address" = "jsmith@example.com"
}
}2. Access Plex Server
After your Plex Server has been deployed, you can upload media and configure access to your Plex Server from Plex clients for your media devices.
Before you begin, ensure that you've signed up to Plex.
Initial setup
Administration of your Plex Server is performed from its web interface.
- Open a web browser and go to the custom domain provided during deployment, or the instance’s default rDNS.
- Use your email or username and password to log in to Plex. Then click Sign in.
- On the Server Setup page, enter a name for your Plex server and select the Allow me to access my media outside my home checkbox. Click NEXT.
- Skip the Media Library setup for now by clicking NEXT. You'll upload media and add media libraries later.
- To finish the initial setup, click DONE.
- Click the Settings icon in the top-right corner of the Plex web interface.
- On the left sidebar, ensure your new Plex Server is selected and in the Settings section, select Remote Access.
- Select the Manually specify public port checkbox and keep the default value of
32400. Click Retry or Apply. You may need to select Show advanced to see these settings. - Wait until you see a message stating that your Plex Server is Fully accessible outside your network.
You can now access uploaded media and manage your Plex Server from any Plex Client, such as the Plex Web App. If you're unable to reach your Plex Server remotely, you can repeat the steps in this section to re-establish a direct connection for administrative purposes.
Connect a Block Storage Volume (optional)
If your media collection is larger than the space available from your Linode plan, you can create and connect a Block Storage Volume for use with your Plex Server.
-
Add a Block Storage Volume in Cloud Manager if you don’t have one already.
-
Establish an SSH connection to your Plex Server Linode as your limited sudo user.
-
On your Plex Server Linode, create a directory to your volume’s mountpoint.
mkdir ~/plex/media/linode-volume -
Mount your volume path to the mountpoint you created, replacing
$FILE_SYSTEM_PATHwith your volume’s file system path. You can get the path in Cloud Manager’s Volumes dashboard.sudo mount $FILE_SYSTEM_PATH ~/plex/media/linode-volume -
Check the available disk space.
Note that there's some overhead with the volume due to the file system.
df -BGFilesystem 1G-blocks Used Available Use% Mounted on udev 1G 0G 1G 0% /dev tmpfs 1G 1G 1G 11% /run /dev/sda 49G 3G 45G 5% / tmpfs 1G 0G 1G 0% /dev/shm tmpfs 1G 0G 1G 0% /run/lock tmpfs 1G 0G 1G 0% /sys/fs/cgroup tmpfs 1G 0G 1G 0% /run/user/1000 /dev/sdc 20G 1G 19G 1% /home/username/plex/media/linode-volume -
Ensure that your volume automatically mounts every time your Linode reboots by running this command, replacing
$FILE_SYSTEM_PATHwith your volume’s file system path.The
$HOMEenvironment variable should already be set as your user’s home directory.echo "$FILE_SYSTEM_PATH $HOME/plex/media/linode-volume ext4 defaults,noatime,nofail 0 2" | \ sudo tee -a /etc/fstabThe command modifies your
/etc/fstabfile. -
Restart your Plex Server Docker container.
docker restart plex
Media on your volume is now accessible through the Plex web interface at the mounted directory on your Linode.
Next, you can upload media to your volume (use your volume’s mountpoint instead of creating a new subdirectory) and add media libraries to enable streaming media stored on your volume.
Upload media
Your Plex Server is set up to access media files in the ~/plex/media directory.
This section shows you how to organize and upload files to your Plex Server either on your Plex Server Linode through an SSH connection as your limited sudo user, or from the workstation terminal where the media files you want to upload are stored.
-
On your Plex Server Linode, create a subdirectory within
~/plex/mediato store your media files.Plex recommends organizing media by type. To follow that guidance, define a subdirectory name that matches the type of media you want to upload.
mkdir ~/plex/media/movies -
From your media workstation, run the
scpcommand to move media to your Plex Server’s media subdirectory, substituting$USERNAMEwith your Linux limited sudo username, and$IP_ADDRESSwith the IP address of your Plex Server Linode.scp example_video.mp4 $USERNAME@$IP_ADDRESS:~/plex/media/movies
Depending on the files’ sizes, the upload may take a few minutes.
To use the other way to upload files to your Plex Server Linode, see the Linux System Administration Basics guide for details.
Add media libraries
- Log in to a Plex Client, such as the Plex Web App, and on the sidebar, click More.
- Hover over your Plex Server’s name in the Plex sidebar and click the plus (+) icon.
- Select your library type, set a name and language for your media library. Click Next.
- Click Browse for media folder. Go to the directory within
/mediawhere your files are stored and click Add. - Once you select the file, click Add library.
- Pin your new media library to make it accessible from the Plex home screen.
Repeat the steps in this section to add additional media folders.
You now have all the tools you need to create an online media library and stream it to any device with Plex.
Additional resources
For more information about the installed packages, see their official documentation.
Note that we can't vouch for the accuracy or timeliness of externally hosted resources.
Updated 16 days ago
