How to run Plex media server on AWS ARM64 graviton CPU with Amazon Linux 2023
為什麼會有這個問題?
因為Plex Media Server 官方支持的ARM 版本只可以在Ubuntu 和Debian 上運行。

並沒有支持Redhat 系列的ARM 版本,那麼,是不是就沒有辦法在Amazon Linux 2023 上運行了呢?當然不是。
Plex Media Server 官方Docker image 裡面有ARM 版本。
Let’s Do it, 首先需要考慮使用什麼來放置media files,以存儲8Tb media files ,每天訪問2Gb 的文件,一個月訪問60Gb 為例。
最理想的是EFS,標準存儲可以提供即時響應的media playback 體驗,IA 的響應時間則是“These storage classes provide first-byte latencies of tens of milliseconds.” ,對於長久未訪問的media 來說第一次有幾十個毫秒的延遲似乎也是可以接受的。
EFS的問題在於,他的讀寫都是要收錢的,即使Infrequent Access storage 比例為90%,每月的存儲費用加上一個月訪問60G media 的讀寫,也會超過500$ 一個月。
如果使用S3,S3 有一個Intelligent-Tiering ,他可以在3種不同的Instant Access Tier 中自動轉換節省儲存成本。
以存儲比例 5%/5%/90% 和上述存儲量,訪問量為例,每個月的成本將會下降到50$ 一個月左右。
好了,將media files 上傳到Tokyo 的plexmediafiles S3 bucket,啟動一台 t4g.micro instance,對internet 打開32400 port,不能只對自己的IP地址開放,因為,Plex service 會從外部連結此port 並判斷網速和是否需要進行transcoding。
接下來安裝docker , docker-compose , 然後從官方image 啟動,這裡把mount point 放在 /home/ec2-user/Videos :
plex:
image: plexinc/pms-docker:latest
container_name: plex
restart: unless-stopped
ports:
- "32400:32400/tcp"
environment:
- PLEX_CLAIM=claim-1234567812345-345678 #Get from https://plex.tv/claim if needed
- PLEX_UID=1000
- PLEX_GID=1000
volumes:
- /home/ec2-user/plex/config:/config
- /home/ec2-user/Videos:/Videos
docker-compose down plex
sleep 3
docker-compose up -d plex
我原本想要使用AWS 官方的 mount-s3 , 但是,很遺憾,他不支持重新掛載到docker 容器中。
搜了一下,還有很多的第三方工具可以達成,測試rclone 沒問題。
首先安裝必要的組件:
dnf install fuse3 fuse3-devel -y
echo "user_allow_other" | sudo tee -a /etc/fuse.conf
Download rclone - https://downloads.rclone.org/v1.72.1/rclone-v1.72.1-linux-arm64.rpm
rpm -i rclone-v1.72.1-linux-arm64.rpm
運行 rclone config 添加一個新配置,命名為Tokyo ,並將plexmediafiles bucket 加進去。
rclone mount Tokyo:plexmediafiles /home/ec2-user/Videos \
--allow-other \
--default-permissions \
--daemon
測試播放一個電影,沒問題。

但是需要讓他以service 運行:
vi /etc/systemd/system/rclone-mount.service
[Unit]
Description=RClone Mount Service
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
User=ec2-user
Group=ec2-user
ExecStartPre=/bin/mkdir -p /home/ec2-user/Videos
ExecStart=/usr/bin/rclone mount Tokyo:plexmediafiles /home/ec2-user/Videos \
--allow-other \
--default-permissions \
--vfs-cache-mode writes \
--log-level INFO
ExecStop=/bin/fusermount -u /home/ec2-user/Videos
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable rclone-mount.service
systemctl stop rclone-mount.service
systemctl start rclone-mount.service
systemctl status rclone-mount.service
重啟試試,沒問題。對於plex direct play 來說,t4g.micro 就足夠使用了,以1080p 的電影來看,CPU利用率甚至都沒到6%,完全在t4g.micro 的正常可用範圍內。
如果需要在客戶端網速不足的情況下進行 transcoding,則需要更強的CPU,如果是面對多用戶的服務,則可能需要GPU 機型來強化transcoding。



