id 用户名
从显示的输出找到 uid=1000(用户名),110(docker)这样字样, 记下.
4.3 编辑环境变量
这是为了方便在编写 Docker Compose 编排文件时的可读性, 如果你明白怎么编排, 可以不做这一步, 只需要把每一个变量都用实际值代替就好. 小白按下面操作:
sudo nano /etc/environment
添加如下内容:
- PUID=1000(上面的 ID)
- PGID=110(上面的 ID)
- TZ="Asia/Shanghai"
- USERDIR="/home / 用户名"
4.4 建立 docker 文件夹
我们在 "/home / 用户名" 里建立一个 docker 文件夹, 方便所有文件归档到此处:
mkdir ~/docker
为了方便权限管理, 可以把这个文件夹和它下面的子文件夹 (包括新建的) 的权限赋予 docker 组.
- sudo setfacl -Rdm g:docker:rwx ~/docker
- sudo chmod -R 775 ~/docker
OK, 环境搭建的差不多了, 以下内容我们都假定在 "/home / 用户名 / docker" 这个文件夹操作.
先不着急, 我们把机器重启一下.
sudo reboot
5. 批量部署应用
Docker Compose 使用 YAML 的文件来编写部署的具体内容, 详细的细节我们不需要关心, 我们可以把每一个应用都看作是套用一个模板, 一个典型的模板如下:
# Transmission - Bittorrent Downloader / 注释
transmission: / 应用名称
image: linuxserver/transmission / 使用哪个镜像建立容器
container_name: transmission / 容器名
hostname: transmission / 主机名, Samba 等需要广播主机名的容器会用到
restart: always / 是否重启
cpus: 1.2 /CPU 资源限制, 除以核心数得到百分比, 4 核心为 1.2/4=30%, 注意 version 2.x 才支持.
ports: / 开放的端口, 左边是机器的端口, 右边是容器的端口
- - 9091:9091
- - 51413:51413
- - 51413:51413/udp
volumes: / 容器需要存储数据的话, 把数据存到容器外(保存在容器里面, 容器一删除就没了)
- - ${
- USERDIR
- }/docker/transmission:/config
- - ${
- USERDIR
- }/Storage/Downloads:/downloads
- - ${
- USERDIR
- }/Storage/Downloads/Watch:/watch
environment: / 环境变量
- - PUID=${
- PUID
- }
- - PGID=${
- PGID
- }
- - TZ=${
- TZ
- }
如果你遇到一个新的应用, 不知道怎么写的话, 到这个镜像的 Docker Hub 页面查看一下. 这里推荐一个社区组织 LinuxServer.io, 他们维护了很多相关的镜像, 一会我们要用到的 Radarr,Transmission 等他们都有在维护.
https://www.linuxserver.io/our-images
你需要什么应用把它按模板写好, 命名为 docker-compose.YAML, 放在 "/home / 用户名" 下面, 然后一条命令就可运行了.
docker-compose up -d
如果放在其它位置, 指定一下路径就可以
docker-compose -f ~/docker/docker-compose.YAML up -d
剩下的就是保证网络, 看它自动部署就 OK 了.
这里我也将我自己使用的 docker-compose.YAML 附上, 供大家参考.
https://gist.github.com/ProteinPig/31806d8ffb4a3029bfdc0e81d10d7c0a
6. 应用推荐
其实写到这里就差不多了, 这里把我正在使用的一些应用给大家列一列, 可以很方便的搭建自己的服务器.
Portainer - 必装, 使用 web 界面来管理容器
Watchtower - 必装, 自动更新你的 Docker 镜像和容器, 所谓一次部署, 永远最新就靠它了
Radarr - 电影搜刮软件, 把电影放进 "Wanted", 它就会自动替你搜索, 配合 BT 下载客户端自动下载, 也可以手动搜索
Sonarr - 同上, 不过是电视剧
Lidarr - 同上, 音乐
Jackett - 把 BT 站的搜索结果转成上面软件识别的格式
RRshare - 人人影视
Calibre-Web - 电子书管理, 还能推送到 Kindle
Transmission - BT 下载软件
Aria2 - 补充上面缺失的 HTTP 下载
Plex - 电影 Stream
Emby - 同上
LMS - Logitech Media Server
Airsonic - 音乐管理
HomeAssistant - 智能家居
这里稍微解释一下 Jackett,Radarr,Transmission 的配合:
在 Radarr 添加一部电影名, 它会调用 IMDB 的数据匹配, 文件质量我们指定 1080P, 然后 Radarr 会自动在 Jackett 搜索这部电影, Radarr 判断是否符合 1080P 配置包含的文件质量, 如果符合就把种子发给 Transmission 下载, Transmission 下载完毕后告知 Radarr 标记为已下载完毕, Radarr 判断是否达到 1080P 配置里的最高质量, 如果没有继续等待更高质量的文件以替换现在下载的文件.
其它就不列举了, 大家可以到 LinuxServer.io 的页面翻一翻, 会有不少惊喜.
因为我不是真电工, 同时为了方便大家理解, 难免描述不严谨, 有什么错误的话请大家指出.
这篇指南参考了很多国外网站 smarthomebeginner 的文章, 这里一并附上.
- docker-compose.YAML (8.59 KB)
- Ultimate Smart Home Media Server with Docker and Ubuntu 18.04 - Basic
- ==============
我自己使用的是 RancherOS 代替了安装 Linux 和安装 Docker 的步骤, 有经验的电工也可以选用这类的容器 OS.
自己遇到的一个小问题是 Radarr,Sonarr 同时开启会遇到严重的性能问题, Radarr 的 CPU 占用率达到 100%.
- ==============
- update:
1. 更新 docker 文件夹权限设置, 由 755 改为 775
2. 更新设置环境变量之后重启步骤
3. 更新 CPU 资源限制, 并修改 YAML 文件为 version 2.4
来源: http://www.mzh.ren/home-server-with-docker.html