本项目为基于traefik代理的私有化部署脚本
基于traefik
做为反向代理,基于cloudflared tunnel
实现外网访问的私有化部署解决方案脚本
- 大部分服务使用
bridge
模式网络,默认使用traefik
网络 - 部分服务使用
host
网络(如:qbittorrent等依赖host网络构建upnp映射的服务) - xiaoya相关服务的网络模式由xiaoya官方脚本决定,但因xiaoya容器均有端口映射,其他容器如需访问,可按照
host
网络方法进行访问
通过容器名进行访问,如在moviepilot容器内,访问jellyfin为http://jellyfin:8096
桥接网络容器访问宿主机的服务,则使用traefik
网络的网关地址进行访问,通过如下命令可以获取网关地址
docker network inspect traefik --format '{{range .IPAM.Config}}{{.Gateway}}{{end}}' | awk -F'.' '{print $1"."$2"."$3"."1}'
- 假设上面的地址输出的网络为
172.18.0.1
,moviepilot容器需要访问宿主机的qbittorrent服务,则使用http://172.18.0.1:8080
进行访问
host网络的容器无法直接访问桥接网络内的容器,需要使用域名访问,如在qbittorrent容器内,webhook到moviepilot容器,则使用http(s)://moviepilot.${domain}
进行访问
- 直接使用宿主机ip访问
- 使用域名地址访问
部署后的文件,大多数的权限是,当前用户和当前用户组,如果部分容器出现权限不足的情况,请查看和修改对应目录的权限
/$base_data_dir/
---/public/ # 公共数据目录
------/movie/ # 电影
------/tv/ # 电视剧
------/music/ # 音乐
------/... # 其他
---/traefik/ # traefik配置目录
---/cloudflared/ # cloudflared配置目录
---/rss-bot/ # rss机器人配置目录
---/vaultwarden/ # 密码管理器配置目录
---/ttyd/ # ttyd配置目录
---/duplicati/ # 备份工具配置目录
.... #其他服务
---/xiaoya
------/root
--------/data # xiaoya-alist配置目录
------/emby
--------/media # xiaoya-emby配置目录
部分情况下,容器之间需要共享数据,如:
- iyuu容器需要挂载qbittorrent和transmission的目录
假设A容器需要挂载B容器的目录,则B容器的所有挂载目录在A容器中都存在于
/A
目录下:
- 如iyuu容器需要挂载qbittorrent的目录,则在iyuu容器内,访问qbittorrent的路径为
/qbittorrent/
- 安装docker
- 参考docker安装
- 准备域名且托管到cloudflare(可选)
- 拉取本项目
- git clone https://github.com/dezhishen/self-hosted-server-traefik.git
- 或者直接下载zip
sh install-one.sh traefik
如果需要外网访问,则需要安装cloudflared,ps:部分服务依赖https,如果不需要外网访问(如使用异地组网),可以考虑使用noip。
sh install-one.sh cloudflared
使用 sh install-one.sh 服务名 安装服务,如:
- 安装qbittorrent
sh install-one.sh qbittorrent
- 安装alist
sh install-one.sh alist
2.4.1 备份工具duplicati
配合alist使用,借助alist的webdav功能,可以实现备份到网盘
# 安装duplicati
sh install-one.sh duplicati
# 安装alist
sh install-one.sh alist
2.4.2 密码管理器vaultwarden
sh install-one.sh vaultwarden
2.5 安装xiaoya
sh xiaoya.sh
sh xiaoya-traefik.sh
sh update-self.sh
或者
git pull
sh update.sh
sh update-one.sh 容器名