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

 Estimated deployment time: 2–5 minutes

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.

PackageDescription
NGINXAn 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 ServerA 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 fieldAPI/CLI keyDescription
Required options
Limited sudo useruser_nameYour 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 authorized_user. Their SSH pubkey will be assigned to both the root and limited sudo users.
Email address (for the Let's Encrypt SSL certificate)soa_email_addressAn 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 SSHdisable_rootApplies 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 authorized_user, you can still switch to the root user. To do that, log in as root via the Lish console and run cat /home/$USERNAME/.credentials to view the generated password for the limited sudo user.
Linode API tokentoken_passwordApplies 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.
  • If you provide the token along with the subdomain and domain, the installation attempts to create DNS records via the Linode API.
  • If you don't provide the token, you need to manually configure your DNS records through your DNS provider and point them to the IP address of the new instance.
SubdomainsubdomainApplies to a custom domain. The subdomain you want to use, like blog for blog.example.com. Use it only if you specify a Domain.
DomaindomainApplies 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-onsadd_onsAn option to include add-ons for your deployment. Possible values are:
  • none (default)
  • node_exporter
  • mysqld_exporter
  • newrelic

Notes:

  • After the app deployment completes, the password for your limited sudo user is generated and stored in the .credentials file in the home directory, along with application-specific passwords. Log in to your instance as root through the Lish console or SSH, then run cat /home/$USERNAME/.credentials to view its contents.
  • You can automatically configure a custom domain (optional) during deployment. To do that:
    1. First, configure your domain to use Linode’s name servers via your registrar. See Configure your domain's authoritative name servers for details.
    2. 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.

  1. Open a web browser and go to the custom domain provided during deployment, or the instance’s default rDNS.
  2. Use your email or username and password to log in to Plex. Then click Sign in.
  3. 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.
  4. Skip the Media Library setup for now by clicking NEXT. You'll upload media and add media libraries later.
  5. To finish the initial setup, click DONE.
  6. Click the Settings icon in the top-right corner of the Plex web interface.
  7. On the left sidebar, ensure your new Plex Server is selected and in the Settings section, select Remote Access.
  8. 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.
  9. 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.

  1. Add a Block Storage Volume in Cloud Manager if you don’t have one already.

  2. Establish an SSH connection to your Plex Server Linode as your limited sudo user.

  3. On your Plex Server Linode, create a directory to your volume’s mountpoint.

    mkdir ~/plex/media/linode-volume
  4. Mount your volume path to the mountpoint you created, replacing $FILE_SYSTEM_PATH with 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
  5. Check the available disk space.

    Note that there's some overhead with the volume due to the file system.

    df -BG
    Filesystem     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
  6. Ensure that your volume automatically mounts every time your Linode reboots by running this command, replacing $FILE_SYSTEM_PATH with your volume’s file system path.

    The $HOME environment 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/fstab

    The command modifies your /etc/fstab file.

  7. 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/media to 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 scp command to move media to your Plex Server’s media subdirectory, substituting $USERNAME with your Linux limited sudo username, and $IP_ADDRESS with 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

  1. Log in to a Plex Client, such as the Plex Web App, and on the sidebar, click More.
  2. Hover over your Plex Server’s name in the Plex sidebar and click the plus (+) icon.
  3. Select your library type, set a name and language for your media library. Click Next.
  4. Click Browse for media folder. Go to the directory within /media where your files are stored and click Add.
  5. Once you select the file, click Add library.
  6. 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.


Did this page help you?