Skip to content

dezhishen/self-hosted-server-traefik

Repository files navigation

self-hosted-server-traefik

本项目为基于traefik代理的私有化部署脚本

1 项目目标

基于traefik做为反向代理,基于cloudflared tunnel实现外网访问的私有化部署解决方案脚本

1.1 网络

1.1.1 网络模式

  • 大部分服务使用bridge模式网络,默认使用traefik网络
  • 部分服务使用host网络(如:qbittorrent等依赖host网络构建upnp映射的服务)
  • xiaoya相关服务的网络模式由xiaoya官方脚本决定,但因xiaoya容器均有端口映射,其他容器如需访问,可按照host网络方法进行访问

1.1.2 桥接网络容器之间访问

通过容器名进行访问,如在moviepilot容器内,访问jellyfin为http://jellyfin:8096

1.1.3 桥接网络内的容器访问host模式的容器

桥接网络容器访问宿主机的服务,则使用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进行访问

1.1.4 host网络容器访问桥接网络内的容器

host网络的容器无法直接访问桥接网络内的容器,需要使用域名访问,如在qbittorrent容器内,webhook到moviepilot容器,则使用http(s)://moviepilot.${domain}进行访问

1.1.5 host网络之间访问

  • 直接使用宿主机ip访问
  • 使用域名地址访问

1.2 部署后目录结构

部署后的文件,大多数的权限是,当前用户和当前用户组,如果部分容器出现权限不足的情况,请查看和修改对应目录的权限

/$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配置目录

1.3 容器之间挂载目录结构

部分情况下,容器之间需要共享数据,如:

  • iyuu容器需要挂载qbittorrent和transmission的目录

假设A容器需要挂载B容器的目录,则B容器的所有挂载目录在A容器中都存在于 /A 目录下:

  • 如iyuu容器需要挂载qbittorrent的目录,则在iyuu容器内,访问qbittorrent的路径为/qbittorrent/

2 快速开始

2.1 前置条件

2.2 构建网络环境

2.2.1 安装traefik(必选)

    sh install-one.sh traefik

2.2.2 安装cloudflared(可选)

如果需要外网访问,则需要安装cloudflared,ps:部分服务依赖https,如果不需要外网访问(如使用异地组网),可以考虑使用noip

    sh install-one.sh cloudflared

2.3 使用说明

使用 sh install-one.sh 服务名 安装服务,如:

  • 安装qbittorrent
    sh install-one.sh qbittorrent
  • 安装alist
    sh install-one.sh alist

2.4 推荐服务

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

2.5.1 执行xiaoya脚本

    sh xiaoya.sh

2.5.2 创建traefik配置文件

    sh xiaoya-traefik.sh

3 工具

3.1 更新本项目

    sh update-self.sh

或者

    git pull

3.2 更新容器

3.2.1 更新所有容器
    sh update.sh
3.2.2 更新单个容器
    sh update-one.sh 容器名

About

自建服务脚本

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages