使用TailScale
虽然NAS已经可以正常使用,但是ZeroTier对手机端的支持并没有想象中好,于是选择更换组网框架——TailScale
安装TailScale
停止并删除ZeroTier相关容器,删除相关数据卷和数据文件,删除相关镜像
到官网Tailscale · Best VPN
Service for Secure Networks创建一个网络,并生成auth-key
拉取TailScale镜像
docker pull tailscale/tailscale:latest
运行容器
sudo docker run -d --name tailscale --restart always --cap-add NET_ADMIN --cap-add SYS_MODULE -v /dev/net/tun:/dev/net/tun -v tailscale-state:/var/lib/tailscale -e TS_AUTHKEY=<auth-key> -e TS_STATE_DIR=/var/lib/tailscale -e TS_USERSPACE=false -e TS_ACCEPT_DNS=true --hostname <hostname> --network host tailscale/tailscale:latest
访问网络控制面板,解除对设备的有期限授权
在控制面板关闭MagicDNS,添加自定义DNS服务器
在DNS服务器添加本地DNS记录
其他客户端只需下载相应操作系统客户端并使用同一账户登录即可
使用LDAP
Nextcloud本身在图片和影音上并不出色,只是集成方便,于是我打算使用专门的软件对图片、影音进行管理,因此就需要用到统一验证
安装OpenLDAP、Authelia
NextCloud配置
安装jellyfin
拉取镜像
sudo docker pull jellyfin/jellyfin
运行镜像
# 查询render组id,用于硬件加速
getent group render | cut -d: -f3
getent group video | cut -d: -f3
sudo docker run -d \
--name jellyfin \
--user 33:33 \
-v /path/to/jellyfin/config:/config \
-v /path/to/jellyfin/cache:/cache \
-v /path/to/media:/media \
--restart always \
--net host \
--group-add="render-group-id" \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
jellyfin/jellyfin
https://jellyfin.域名:443 {
reverse_proxy jellyfin.域名:8096
}
在控制面板-常规-品牌添加以下内容
<form action="https://jellyfin.域名/sso/OID/start/服务提供商id">
<button class="raised block emby-button button-submit">Login with 服务提供商id</button>
</form>
#loginPage .readOnlyContent {
display: flex;
flex-direction: column-reverse;
}
.loginDisclaimerContainer {
margin-top: 0;
margin-bottom: 1em;
}
.loginDisclaimer {
width: 100%;
height: 100%;
}
安装jellyfin sso插件
填写配置
- Visit the Jellyfin
Administration Dashboard.
- Visit the
Plugins section.
- Visit the
Repositories tab.
- Click the
+ to add a repository.
- Enter the following details:
- Repository Name:
Jellyfin SSO
- Repository URL:
https://raw.githubusercontent.com/9p4/jellyfin-plugin-sso/manifest-release/manifest.json
- Click
Save.
- Click
Ok to confirm the repository installation.
- Visit the
Catalog tab.
- Select
SSO Authentication from the
Authentication section.
- Click
Install.
- Click
Ok to confirm the plugin installation.
- Once installed restart Jellyfin.
- Complete steps 1 and 2 again.
- Click the
SSO-Auth plugin.
- Add a provider with the following settings:
- Name of the OID Provider:
Authelia
- OID Endpoint:
https://auth.example.com
- OpenID Client ID:
jellyfin
- OID Secret:
insecure_secret
- Enabled: Checked
- Enable Authorization by Plugin: Checked
- Enable All Folders: Checked
- Roles:
jellyfin-users
- Admin Roles:
jellyfin-admins
- Role Claim:
groups
- Request Additional Scopes:
groups
- Set default username claim:
preferred_username
- All other options may remain unchecked or unconfigured.
- Click
Save.
安装immich
使用Authentik替换Authelia
获取docker-compose配置
wget https://goauthentik.io/docker-compose.yml
编辑.env
PG_PASS=密码
AUTHENTIK_SECRET_KEY=密钥
AUTHENTIK_ERROR_REPORTING__ENABLED=false
# SMTP Host Emails are sent to
#AUTHENTIK_EMAIL__HOST=localhost
#AUTHENTIK_EMAIL__PORT=25
# Optionally authenticate (don't add quotation marks to your password)
#AUTHENTIK_EMAIL__USERNAME=
#AUTHENTIK_EMAIL__PASSWORD=
# Use StartTLS
#AUTHENTIK_EMAIL__USE_TLS=false
# Use SSL
#AUTHENTIK_EMAIL__USE_SSL=false
#AUTHENTIK_EMAIL__TIMEOUT=10
# Email address authentik will send from, should have a correct @domain
#AUTHENTIK_EMAIL__FROM=authentik@localhost
#COMPOSE_PORT_HTTP=80
#COMPOSE_PORT_HTTPS=443
docker compose pull
docker compose up -d
访问http://server-ip:9000/if/flow/initial-setup/开启初始化流程
系统监控
安装Portainer
拉取镜像
docker pull portainer/portainer-ce
启动容器
docker run -d --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
安装Netdata
拉取镜像
docker pull netdata/netdata
运行容器
docker run -d --name=netdata \
--pid=host \
--network=host \
-v netdataconfig:/etc/netdata \
-v netdatalib:/var/lib/netdata \
-v netdatacache:/var/cache/netdata \
-v /:/host/root:ro,rslave \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /etc/localtime:/etc/localtime:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /etc/os-release:/host/etc/os-release:ro \
-v /var/log:/host/var/log:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /run/dbus:/run/dbus:ro \
--restart unless-stopped \
--cap-add SYS_PTRACE \
--cap-add SYS_ADMIN \
--security-opt apparmor=unconfined \
netdata/netdata
使用UIforFreedom替换clash
安装
docker pull ui4freedom/uif:latest # 拉取最新镜像
docker run --network host --name uif --privileged --restart unless-stopped -d ui4freedom/uif:latest
配置
docker logs -f uif
# Password: 92c204a9-3934-4976-96f2-7bbcb338ccf0
# Web Address: 0.0.0.0:9527
# API Address: 0.0.0.0:9413
打开网址ip:9527配置api后端为ip:9413
在入站规则中关闭系统代理,根据自己的需要配置入站规则,即连接协议和端口等
在出站规则中添加订阅链接,启用节点,完成
使用coredns做docker服务发现
安装
docker pull kevinjqiu/coredns-dockerdiscovery:latest
docker run -d --name coredns --restart=always -v /path/to/Corefile:/etc/Corefile -v /var/run/docker.sock:/var/run/docker.sock -p 8053:53/udp kevinjqiu/coredns-dockerdiscovery -conf /etc/Corefile
配置
.:53 { # 监听53端口
docker { # 使用docker服务发现模块
domain docker.loc # 服务域名
}
log # 使用日志模块
errors # 使用错误流模块
}
如果启用dae,需要在dae中配置dns和拦截规则