Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
| tech:docker:portainer [19/06/2026 07:57] – suprimit - edició externa (Data desconeguda) 127.0.0.1 | tech:docker:portainer [30/06/2026 08:13] (actual) – [autossh] mate | ||
|---|---|---|---|
| Línia 1: | Línia 1: | ||
| + | = portainer | ||
| + | {{tag> | ||
| + | gestor de contenedores de Docker | ||
| + | == server | ||
| + | <code yaml docker-compose.yml> | ||
| + | services: | ||
| + | portainer: | ||
| + | #image: portainer/ | ||
| + | image: portainer/ | ||
| + | restart: always | ||
| + | network_mode: | ||
| + | volumes: | ||
| + | - / | ||
| + | - ./ | ||
| + | container_name: | ||
| + | ports: | ||
| + | - 9443:9443 | ||
| + | - 8000:8000 # Remove if you do not intend to use Edge Agents | ||
| + | extra_hosts: | ||
| + | # crear entrada a /etc/hosts | ||
| + | - " | ||
| + | - " | ||
| + | |||
| + | </ | ||
| + | |||
| + | == agent (in remote server) | ||
| + | * fijamos la IP interna:< | ||
| + | name: portainer | ||
| + | |||
| + | services: | ||
| + | agent: | ||
| + | image: portainer/ | ||
| + | restart: always | ||
| + | networks: | ||
| + | portainer_agent_net: | ||
| + | ipv4_address: | ||
| + | volumes: | ||
| + | - / | ||
| + | - / | ||
| + | - /:/host | ||
| + | container_name: | ||
| + | |||
| + | networks: | ||
| + | portainer_agent_net: | ||
| + | ipam: | ||
| + | config: | ||
| + | - subnet: 172.20.0.0/ | ||
| + | </ | ||
| + | * abrimos un tunel desde el servidor: <code bash># -f hace que se quede en background | ||
| + | ssh -N -f -L 0.0.0.0: | ||
| + | # podemos localizarlo después con: | ||
| + | ps aux | grep ssh | ||
| + | # o eliminarlo directamente: | ||
| + | fuser -k 9002/tcp | ||
| + | </ | ||
| + | * 9002: puerto tunel a servidor | ||
| + | * 172.20.0.5: ip contenedor agente (puede variar si queremos + de 1) | ||
| + | * configuramos el entorno en portainer server | ||
| + | * nombre_host_local: | ||
| + | | ||
| + | === autossh | ||
| + | * también se puede hacer a través de:<code bash> | ||
| + | # Instalación (en Ubuntu/ | ||
| + | sudo apt install autossh | ||
| + | |||
| + | # Crear el túnel persistente | ||
| + | autossh -M 0 -f -N -o " | ||
| + | </ | ||
| + | * para hacerlo persistente:< | ||
| + | Description=Tuneles AutoSSH persistentes para Portainer Agents | ||
| + | After=network-online.target | ||
| + | Wants=network-online.target | ||
| + | |||
| + | [Service] | ||
| + | Type=simple | ||
| + | # IMPORTANTE: Pon tu usuario local de Linux (el que tiene las claves SSH configuradas) | ||
| + | User=TU_USUARIO_LOCAL | ||
| + | Environment=" | ||
| + | # Un solo comando levanta ambos puertos (9002 y 9003) | ||
| + | ExecStart=/ | ||
| + | Restart=always | ||
| + | RestartSec=10 | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target</ | ||
| + | sudo systemctl daemon-reload | ||
| + | |||
| + | # 2. HABILITAR el servicio (esto hace que arranque tras un REINICIO) | ||
| + | sudo systemctl enable autossh-portainer.service | ||
| + | |||
| + | # 3. Arrancar el servicio ahora mismo (por primera vez) | ||
| + | sudo systemctl start autossh-portainer.service</ | ||
| + | * necesario acceso por ssh-key sin contraseña | ||
| + | === otros comandos | ||
| + | * tunel activo?: <code bash> | ||
| + | # O también: | ||
| + | ss -tunlp | grep 9002</ | ||
| + | * ip contenedor: <code bash> | ||
| + | |||
| + | == agente | ||
| + | <code yaml> | ||
| + | services: | ||
| + | portainer-agent: | ||
| + | image: portainer/ | ||
| + | container_name: | ||
| + | restart: always | ||
| + | volumes: | ||
| + | - / | ||
| + | # - / | ||
| + | ports: | ||
| + | - " | ||
| + | # IMPORTANTE: En entornos muy restrictivos, | ||
| + | privileged: true | ||
| + | </ | ||
| + | |||
| + | == saltar "http VS https" en agente remoto tunelizado + 2 portainer servers | ||
| + | portainer degrada a http las conexiones locales. | ||
| + | * crear **127.0.0.1 agent.remote.local** en ''/ | ||
| + | * modificar portainer server para añadir:< | ||
| + | - " | ||
| + | * esto evita que se use el DNS de Docker que no encontraba ese servidor | ||
| + | * montar el tunel:< | ||
| + | * hemos montado un segundo agente (portainer solo adminte 1 conexión con un agente, y una vez emparejado no soporta más):< | ||
| + | |||
| + | services: | ||
| + | agent-fidmag: | ||
| + | image: portainer/ | ||
| + | restart: always | ||
| + | networks: | ||
| + | portainer_agent_net: | ||
| + | ipv4_address: | ||
| + | volumes: | ||
| + | - / | ||
| + | - / | ||
| + | - /:/host | ||
| + | container_name: | ||
| + | |||
| + | agent-mate: | ||
| + | image: portainer/ | ||
| + | restart: always | ||
| + | networks: | ||
| + | portainer_agent_net: | ||
| + | ipv4_address: | ||
| + | volumes: | ||
| + | - / | ||
| + | - / | ||
| + | - /:/host | ||
| + | container_name: | ||
| + | |||
| + | networks: | ||
| + | portainer_agent_net: | ||
| + | ipam: | ||
| + | config: | ||
| + | - subnet: 172.20.0.0/ | ||
| + | </ | ||
| + | == reset contraseña | ||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | docker pull portainer/ | ||
| + | docker run --rm -v ./ | ||
| + | </ | ||