我在(重新)构建媒体服务器中不必要的冒险
欢迎!系好安全带,因为这将是一段漫长的旅程。
首先,我有一个现有的媒体服务器,我破坏了一些权限,重新安装是唯一的选择。我有一个现有的 RAID 0 设置,其中包含我不想丢失的大量数据,以及一个独立的 SSD。所以,不用多说,我们开始吧!
安装Ubuntu服务器
我选择 Ubuntu Server 是因为 Ubuntu 有大量的社区支持,而且我不需要桌面 GUI。
在此处从下载 ISO。您可能必须选择“选项 3”才能实际下载。在撰写本文时,我使用的是 20.04.1,因此请考虑到这一点。
我选择刻录 ISO 的工具是balenaEtcher。
插入 USB,启动它,然后按照设置进行操作。确保您启用了 SSH 服务器并且在 SSD 上没有 LVM。检查以确保 SSD 的全部容量已安装到/,然后您就可以开始了。完成设置,移除 USB,然后重新启动。现在我们将切换到 SSH。
配置SSH
端口 22 很烂,但我们需要用它登录。使用您在安装期间添加的凭据连接到端口 22 上的服务器。
在防火墙中打开端口
sudo ufw allow 8364/tcp
进入全屏模式 退出全屏模式
打开 SSH 配置文件并更改使用的端口
sudo nano /etc/ssh/sshd_config
进入全屏模式 退出全屏模式
找到包含Port 22的行,取消注释并更改为Port 8364。保存 (ctrl x)。
重新启动 SSH 服务器,然后在您的客户端上重新连接。
sudo systemctl restart ssh
进入全屏模式 退出全屏模式
驱动器安装
查找驱动器的 UUID:
sudo blkid
进入全屏模式 退出全屏模式
将您的驱动器添加到/etc/fstab(小心,这可能是砖头):
sudo nano /etc/fstab
进入全屏模式 退出全屏模式
例如:
UUID=ccc56606-385e-4a16-89c4-7f1513ab1641 /home ext4 defaults 0 0
进入全屏模式 退出全屏模式
重新启动系统并正确安装您的驱动器。
码头工人
首先,更新您的系统:
sudo apt update
sudo apt upgrade
进入全屏模式 退出全屏模式
无需重复,请按照此处的 Docker 官方教程进行操作。只需遵循“使用存储库安装”和“安装 Docker 引擎”部分即可。
然后,按照此处的教程安装 Docker Compose。
下一部分主要取自Smart Home Beginner。
我们会将当前用户添加到 docker 组中,以简化将来的一些事情。
sudo gpasswd -a $USER docker
进入全屏模式 退出全屏模式
使用以下命令激活更改:
newgrp docker
进入全屏模式 退出全屏模式
搬运工
Portainer 是我们的码头管理解决方案。是的,我对此有严重的问题,但目前没有其他选择。也许这在未来会改变,但我们在这里。
运行以下命令以启动并运行 Portainer:
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent
进入全屏模式 退出全屏模式
打开浏览器并使用端口 9000 转到计算机的 IP。对我来说,这是http://192.168.1.50:9000。选择用户名和密码,然后创建用户。
选择“Docker”并按“连接”。
现在您在 Web 面板中,单击中间的“本地”,然后单击左侧的“堆栈”选项卡。单击“添加堆栈”并为其命名,例如“main_stack”。粘贴以下配置并根据您的需要进行调整。
---
version: "2.3"
services:
organizr:
image: linuxserver/organizr
container_name: organizr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ${USERDIR}/organizr:/config
ports:
- 9983:80
restart: unless-stopped
watchtower:
container_name: watchtower
restart: always
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --schedule "0 0 4 * * *" --cleanup
radarr:
image: linuxserver/radarr
container_name: radarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ${USERDIR}/radarr:/config
- ${USERDIR}/media/movies:/movies
- ${USERDIR}/downloads:/downloads
ports:
- 7878:7878
restart: unless-stopped
sonarr:
image: linuxserver/sonarr
container_name: sonarr
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
volumes:
- ${USERDIR}/sonarr:/config
- ${USERDIR}/media/tv:/tv
- ${USERDIR}/downloads:/downloads
ports:
- 8989:8989
restart: unless-stopped
duckdns:
image: linuxserver/duckdns
container_name: duckdns
environment:
- TZ=${TZ}
- SUBDOMAINS=kyleserver
- TOKEN=326ab158-e842-4d0e-aa20-233e0f7e51e3
restart: unless-stopped
minecraft-creative:
container_name: minecraft-creative
image: itzg/minecraft-server
environment:
EULA: "true"
TYPE: PAPER
VERSION: 1.16.2
CONSOLE: "false"
LEVEL_TYPE: "flat"
ports:
- 25566:25565
volumes:
- ${USERDIR}/minecraft-creative:/data
restart: unless-stopped
minecraft-survival:
container_name: minecraft-survival
image: itzg/minecraft-server
environment:
EULA: "true"
TYPE: PAPER
VERSION: 1.16.2
CONSOLE: "false"
MEMORY: 2G
ports:
- 25565:25565
volumes:
- ${USERDIR}/minecraft-survival:/data
restart: unless-stopped
qbittorrent:
image: linuxserver/qbittorrent:14.2.5.99202004250119-7015-2c65b79ubuntu18.04.1-ls93
container_name: qbittorrent
network_mode: "service:gluetun"
volumes:
- ${USERDIR}/docker/qbittorrent:/config
- ${USERDIR}/downloads:/downloads
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- UMASK_SET=002
- WEBUI_PORT=4545
gluetun:
image: qmcgaw/private-internet-access
container_name: gluetun
cap_add:
- NET_ADMIN
network_mode: bridge
ports:
- 8888:8888
- 8388:8388
- 8388:8388/udp # Shadowsocks
- 8001:8001
- 4545:4545
- 6881:6881
- 6881:6881/udp
volumes:
- ${USERDIR}/gluetun:/gluetun
environment:
- VPNSP=surfshark
- TZ=${TZ}
- USER=USERNAME
- PASSWORD=PASSWORD
- REGION=Canada Toronto
restart: unless-stopped
进入全屏模式 退出全屏模式
接下来,运行id并记下您的 uid 和 pid。我们将在“环境”部分输入这些作为 PUID 和 PGID。
PUID=1000
PGID=1000
TZ="America/Toronto"
USERDIR="/home/user"
进入全屏模式 退出全屏模式
添加您现在需要的任何环境变量,因为我不相信将来可以更改这些变量。
单击“部署堆栈”。
目前,qbittorrent 存在种子名称不匹配的问题,这就是它使用自定义图像版本的原因。如果将来得到解决,请删除冒号后的所有内容。
这些只是我用于我所做的一切的容器。 'gluetun' 容器连接到 Surfshark VPN 并路由 qbittorrent 容器的流量,允许普通容器连接到 VPN。这可以通过将任何容器的端口移动到gluetun并将其network_mode设置为“service:gluetun”来完成。之后,去检查每个容器以确保其正常工作。
果冻
嗯,这将是一个有趣的。如果您不想使用 GPU 进行硬件转码,只需在上述 compose 文件中添加一个标准容器即可。否则,请一起来玩这个地狱般的旅程。不能保证其中一些步骤不是多余的,因为我不知道这些步骤是如何工作的。但是,理想情况下,一切都会在此结束时工作。
首先,我们需要安装 NVIDIA 驱动程序。我使用的是 GTX 1050ti,但它应该适用于任何 NVIDIA 卡 10 系列或更新版本。
首先运行这些命令以禁用 Nouveau:
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
进入全屏模式 退出全屏模式
什么是 Nouveau,我们为什么要禁用它?你怎么敢问!随后,我不知道,但这是我们必须做的。
重启。
安装 DMKS:
sudo apt install dkms
进入全屏模式 退出全屏模式
按照此处的说明安装驱动程序。
补充说明:
-
更新其他命令中的版本号
-
每个命令都需要用
sudo运行
对所有内容单击“是”,退出 GUI 后,重新启动,然后运行测试命令。
安装ffmpeg:
sudo apt install ffmpeg
进入全屏模式 退出全屏模式
接下来,我们需要设置 NVIDIA Container Toolkit。按照官方说明这里。
现在 GPU 应该很好用了!接下来,我们需要实际设置 Jellyfin。回到 SSH,转到您的主目录 (cd)。
创建一个名为docker-compose.yml的新 docker compose 文件,并用以下内容填充它:
version: "2.3"
services:
jellyfin:
image: linuxserver/jellyfin
container_name: jellyfin
network_mode: "host"
runtime: nvidia
environment:
- PUID=1000
- PGID=1000
- TZ=America/Toronto
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- /home/user/jellyfin:/config
- /home/user/media/tv:/data/tvshows
- /home/user/media/movies:/data/movies
ports:
- 8080:8096
- 7359:7359/udp
restart: unless-stopped
进入全屏模式 退出全屏模式
运行docker-compose up -d,Jellyfin 将运行。与直觉相反,转到服务器 IP 上的端口 8096 并登录。
更改 Jellyfin 设置
-
转至设置 > 高级 > 网络。将“本地 HTTP 端口号”和“公共 HTTP 端口号”更改为 8080。
-
转到服务器 > 播放并在“硬件加速”下选择“Nvidia NVENC”。选择要解码的文件。
-
将“ffmpeg 路径”更改为
/usr/bin
从 Portainer 重新启动 Jellyfin,一切顺利!
结论
这是很多工作,但希望一切正常。请记住,DuckDuckGo 和 StackOverflow 是您的朋友。如果有什么不起作用,请在下面告诉我,我会尽力提供帮助。
祝你好运,保持好奇心!
来源
-
https://linuxize.com/post/how-to-change-ssh-port-in-linux/
-
https://fossbytes.com/how-to-auto-mount-partitions-on-boot-in-linux-easily/
-
https://www.smarthomebeginner.com/docker-home-media-server-2018-basic/#Add_Linux_User_to_Docker_Group
-
https://askubuntu.com/questions/477551/how-can-i-use-docker-without-sudo
-
https://linuxconfig.org/how-to-disable-blacklist-nouveau-nvidia-driver-on-ubuntu-20-04-focal-fossa-linux
更多推荐



所有评论(0)