Repositorio Privado (SSH Deploy Key)
Despliega desde repo Git privado vía SSH deploy key — repo-scoped, read-only.
Despliega desde un repositorio Git privado usando una SSH deploy key. Generas un keypair, registras la mitad pública como deploy key en el repo, pegas la mitad privada en Pier — Pier clona sobre SSH, construye el Dockerfile y corre el contenedor. El método auth recomendado para repos privados cuando quieres acceso repo-scoped, revocable, read-only.
Desplegar con Pier
- 1 Abre el panel de Pier y haz clic en Add service.
- 2 Elige Private Repository (Deploy Key) en la lista de plantillas.
- 3 Elige la versión, asigna un nombre al servicio y Pier provisionará automáticamente el contenedor, el almacenamiento y los puertos.
- 4 Vincula un dominio si quieres HTTPS. Traefik genera el certificado de Let's Encrypt automáticamente.
¿Qué es la plantilla Private Repository (Deploy Key)?
Despliega un repositorio Git privado a Pier usando una SSH deploy key — un keypair scoped a un solo repositorio en el Git host. Generas el keypair localmente, registras la clave pública como deploy key en los settings de tu repo (read-only está bien), y pegas la private key en Pier cuando creas el servicio. Pier clona el repo sobre SSH, construye el Dockerfile, corre el contenedor.
Comparado a usar un personal access token (PAT) o SSH user key, deploy keys per-repo son estrictamente mejores — narrowly scoped, independientemente revocables, y un leak compromete solo ese repo único, no tu cuenta entera.
Cómo lo despliega Pier
Proveés:
- Un Git SSH URL (e.g.
[email protected]:myorg/myrepo.git) - Un branch (o tag / commit SHA)
- La SSH private key para el deploy keypair
- El path del Dockerfile y puerto del contenedor
Pier almacena la private key encriptada en su DB, descifra solo en clone
time, realiza un shallow git clone sobre SSH, corre docker buildx build
y arranca el contenedor. Caché BuildKit + Traefik HTTPS funcionan igual
que otras plantillas Git/Dockerfile.
Genera un webhook URL desde service settings y agrégalo a tu Git host (el webhook es plain HTTP POST y no necesita SSH auth) para push-to-deploy.
Cuándo NO usar esta plantilla
Si el repo es público, usa la plantilla Public Repository — sin key necesaria. Si tienes muchos repos privados bajo una org y quieres una sola superficie auth, GitHub App auth (la siguiente plantilla) escala mejor. Para auto-build non-Dockerfile, usa Railpack apuntado al Git URL. Para imágenes prebuilt, usa Docker Image. Deploy Key es la respuesta correcta para un pequeño número de repos privados donde auth scoped per-repo importa.
Características clave
Acceso repo-scoped
Deploy keys son scoped a UN repo (en GitHub) o un proyecto (en GitLab). Compromise afecta solo ese repo, no toda tu cuenta.
Read-only por defecto
Deploy keys pueden agregarse como read-only — Pier solo necesita clonar, no pushear.
Funciona con cualquier host Git
GitHub, GitLab, Bitbucket, Gitea, Forgejo, sourcehut — donde sea con SSH access y soporte deploy-key.
Keypairs per-servicio
Genera un keypair fresco per Pier service. Cada uno independientemente revocable desde el Git host.
Build driven por Dockerfile
Mismo engine de build que la plantilla Public Repository — Dockerfile + BuildKit + Traefik HTTPS.
Webhook redeploys
Agrega el Pier webhook URL a tu Git host; pushes triggean redeploys.
Casos de uso
Código de aplicación privado
El repo principal de tu app privada en un Git host. Pier clona vía SSH, construye, ship.
Proyectos cliente / customer
Un repo para un proyecto cliente no debería tener acceso a tus otros repos. Deploy key lo aísla.
Forks / mirrors privados
Un fork privado de un proyecto upstream — deploy key le da a Pier acceso read-only sin tocar tus tokens account-wide.
Descomposición monorepo multi-repo
Una instancia Pier única con N servicios, cada uno apuntado a un repo privado diferente, cada uno con su propia deploy key.
Audit-friendly
Keys per-servicio significa revocación granular — despide al contractor, borra la key, listo.
Ejemplos de código
ssh-keygen -t ed25519 -C "pier-deploy-myrepo" -f ~/.ssh/myrepo_deploy
# Files - ~/.ssh/myrepo_deploy (private), ~/.ssh/myrepo_deploy.pub (public) Repo → Settings → Deploy keys → Add deploy key
Title - pier-deploy
Key - (pega contenido de myrepo_deploy.pub)
✔ Allow read-only (default; no grant write a menos que necesites)
→ Add Pier → Create service → Private Repository (Deploy Key)
Git URL (SSH) - [email protected]:myorg/myrepo.git
Branch - main
Private key - (pega contenido de ~/.ssh/myrepo_deploy)
Dockerfile path - /Dockerfile
Port - 3000
→ Deploy # 1. Genera nuevo keypair
ssh-keygen -t ed25519 -f ~/.ssh/myrepo_deploy_v2
# 2. Agrega nueva pub key en GitHub, borra la vieja
# 3. Actualiza private key del servicio Pier, redeploy
# 4. La key vieja está muerta; solo la nueva funciona Comparativa
| vs Plantilla Public Repository (este catálogo) | Usa Public para repos que son realmente públicos — sin auth needed. Usa Deploy Key para repos privados. |
| vs Plantilla GitHub App (este catálogo) | GitHub App auth escala mejor entre muchos repos privados bajo una org (una app autoriza múltiples repos). Deploy Key es per-repo. Para pocos repos privados, Deploy Key es más simple. |
| vs Personal Access Token (PAT) sobre HTTPS | PATs funcionan pero auth vía PATs da a Pier acceso a TODOS tus repos privados. Deploy Keys son scoped a un repo — estrictamente mejor seguridad. |
| vs GitLab Project Access Tokens | PATs de GitLab a nivel proyecto son como deploy keys en scope. Cualquier método auth funciona en Pier; SSH deploy keys son más universales. |
Preguntas frecuentes
¿ed25519 o RSA?
¿Dónde vive la private key?
¿Puede ser read-write la key?
¿Y si pierdo la private key en Pier?
¿Per-deploy o keypairs compartidos?
¿Bot / system account deploy keys?
¿Cómo se configuran los webhooks?
Servicios relacionados
Desplegar en tu VPS
Despliega desde un repositorio Git privado usando una SSH deploy key. Generas un keypair, registras la mitad pública como deploy key en el repo, pegas la mitad privada en Pier — Pier clona sobre SSH, construye el Dockerfile y corre el contenedor. El método auth recomendado para repos privados cuando quieres acceso repo-scoped, revocable, read-only.
Desplegar este servicio →