Недавно я посмотрел это видео о запуске клиента Tailscale в контейнере Docker вместе с другим сервисом, что позволяет мне получить доступ к сервису, используя мой DNS Tailscale.
Когда я попытался использовать тот же метод с Portainer, я просто получаю сообщение об ошибке в контейнере Tailscale.
«Ошибка прокси: tls: не удалось проверить сертификат: x509: сертификат действительно для 0.0.0.0, а не 127.0.0.1"
Когда я изменил IP в конфигурации на 0.0.0.0
, вместо этого я получил эту ошибку
«Ошибка прокси: tls: не удалось проверить сертификат: x509: сертификат подписано неизвестным органом»
Это мой docker-compose.yml
version: '3.8'
services:
portainer-ts:
image: tailscale/tailscale:latest
container_name: portainer-ts
cap_add:
- net_admin
- sys_module
volumes:
- /home/sagiziv3/portainer/tailscale/state:/var/lib/tailscale
- /home/sagiziv3/portainer/tailscale/serveconfig:/config
- /dev/net/tun:/dev/net/tun
environment:
- TS_AUTHKEY=tskey-client-XXXXX-XXXXX?ephemeral=false
- TS_EXTRA_ARGS=--advertise-tags=tag:container --reset
- TS_STATE_DIR=/var/lib/tailscale
- TS_SERVE_CONFIG=/config/serve-config.json
- TS_USERSPACE=false
hostname: portainer
restart: unless-stopped
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
network_mode: "service:portainer-ts"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
restart: always
volumes:
portainer_data:
И это файл конфигурации, который я использую:
{
"TCP": {
"443": {
"HTTPS": true
}
},
"Web": {
"${TS_CERT_DOMAIN}:443": {
"Handlers": {
"/": {
"Proxy": "https://127.0.0.1:9443"
}
}
}
}
}
Я могу только предположить, что проблема заключается в том, что Portainer использует HTTPS со своими собственными сертификатами, и именно поэтому Tailscale не может создать действительный сертификат.
Но мне не удалось найти, как отключить HTTPS на Portainer...
Не знаю, почему голосование против и голосование за закрытие вопроса (возможно, это неправильный веб-сайт или просто ожесточенные люди 🤷♂️), но в любом случае, после некоторых дополнительных поисков, я нашел решение.
Я обнаружил, что Portainer также прослушивает HTTP-запросы на порту 9000, поэтому обновление конфигурации для пересылки HTTPS-вызовов http://127.0.0.1:9000
решило проблему.
Это окончательный файл конфигурации:
{
"TCP": {
"443": {
"HTTPS": true
}
},
"Web": {
"${TS_CERT_DOMAIN}:443": {
"Handlers": {
"/": {
"Proxy": "http://0.0.0.0:9000"
}
}
}
}
}