---
title: "Cómo enviar un archivo de configuración de forma segura"
url: https://uselinkpilot.com/es/blog/how-to-securely-deliver-a-config-file-to-a-developer
description: "Separa ajustes y secretos, envía los secretos con un enlace de un solo uso o un adjunto que se destruye tras una descarga, y deja el .env fuera de git."
lang: es
---

Seguridad (https://uselinkpilot.com/es/blog/category/security)

# Cómo enviar de forma segura un archivo de configuración a un desarrollador

Separa ajustes y secretos, envía los secretos con un enlace de un solo uso o un adjunto que se destruye tras una descarga, y deja el .env fuera de git.

LinkPilot Team (https://uselinkpilot.com/es/author/linkpilot-team) · Las personas que desarrollan y gestionan LinkPilot en TetraCore, LLC 26 de octubre de 2026 · Sobre LinkPilot (https://uselinkpilot.com/es/about)

Llega un desarrollador nuevo, o empieza un colaborador externo, y lo primero que necesita es el `.env` que hace funcionar el proyecto. Ese archivo suele mezclar ajustes inofensivos con los valores más sensibles que tiene el equipo, y por eso acaba tantas veces en un mensaje directo o en un correo con un adjunto llamado «config».

Para enviar de forma segura un archivo de configuración a un desarrollador, trátalo como dos cosas: la configuración, que puede viajar por cualquier canal, y los secretos, que viajan una sola vez por un canal que no guarda copias. Esta guía explica cómo separar las dos partes, cómo enviar la parte secreta y qué decirle al desarrollador para que el archivo siga a salvo cuando le llegue.

## Lee el archivo como si cada línea fuera pública

Abre el archivo y clasifica cada línea en uno de dos grupos.

- **Configuración**: niveles de registro, puertos, indicadores de funciones, endpoints que no son de producción, ID de cliente públicos. Esto va en el repositorio como archivo de ejemplo y puede enviarse como quieras.
- **Secretos**: contraseñas de bases de datos, claves de API, secretos de firma, claves privadas, secretos de cliente de OAuth y cualquier cosa que dé acceso. Busca `PASSWORD`, `SECRET`, `TOKEN`, `KEY` y `PRIVATE`, y después lee el resto, porque una cadena de conexión con la contraseña dentro no avisa de lo que es.

Luego pregúntate qué va a hacer el desarrollador. El desarrollo local contra staging necesita los valores de staging. No necesita las claves de producción, ni la clave real del proveedor de pagos solo porque el archivo resulte tener una.

## Deja los secretos fuera del archivo del repositorio

El `.env.example` que se sube al repositorio documenta cada variable con un marcador de posición. Los valores reales se inyectan en tiempo de ejecución desde el entorno, un gestor de secretos o el almacén de secretos de la propia plataforma. Con este patrón, lo que envías son solo los valores secretos, y la copia local del desarrollador es el único sitio donde están todos juntos.

```bash
# .env.example (committed)
DATABASE_URL=postgres://app:CHANGE_ME@staging-db.internal:5432/app
STRIPE_SECRET_KEY=sk_test_CHANGE_ME
SESSION_SECRET=CHANGE_ME
LOG_LEVEL=debug
```

Añade `.env` a `.gitignore` antes de que nadie tenga uno real, y plantéate un hook de pre-commit como gitleaks para que un commit con secretos falle enseguida.

## Dale al desarrollador sus propias credenciales siempre que puedas

Una entrega también es una ocasión para dejar de compartir. Si la base de datos admite usuarios individuales, crea uno para el desarrollador con los permisos que necesita su trabajo y una fecha de expiración. Si la API ofrece claves restringidas, emite una a su nombre. La guía sobre el acceso temporal a la base de datos para colaboradores externos (https://uselinkpilot.com/es/blog/how-to-send-a-temporary-database-login-to-a-contractor-securely) explica ese patrón. Las credenciales creadas para una persona se pueden retirar a esa persona sin afectar a nadie más.

## Cómo enviar los valores secretos

Hay dos vías que funcionan, y ninguna deja el archivo en un mensaje.

**Pega las líneas secretas en un enlace de un solo uso.** Abre la herramienta de enlaces secretos (https://uselinkpilot.com/es/tools/free-secret-link-generator), pega solo las líneas que contienen secretos y crea el enlace. El texto se cifra en tu navegador antes de guardarse, la copia almacenada se destruye la primera vez que se abre el enlace y, si nadie lo abre, el enlace expira a la hora, a las 24 horas o a los siete días. Sin cuenta caben hasta 10.000 caracteres, que dan para la mayoría de los archivos `.env` varias veces.

**Adjunta el archivo completo a un enlace secreto.** Con una sesión iniciada en una cuenta de LinkPilot puedes adjuntar a un secreto hasta tres archivos de 9 MB cada uno. Cada archivo se cifra en tu navegador con una clave derivada de la clave del propio secreto, así que el servidor nunca tiene el archivo sin cifrar, y el adjunto se elimina tras la única descarga. Es la mejor vía cuando el archivo tiene que llegar idéntico byte a byte, por ejemplo un archivo JSON de cuenta de servicio o un almacén de claves.

En los dos casos:

1. **Verifica la identidad del desarrollador** por el canal de contratación o del contrato, no por la dirección que pidió el archivo.
2. **Ajusta la expiración** al margen que de verdad va a usar: una hora si está esperando, un día si está en otra zona horaria.
3. **Pon el límite de visualizaciones en uno.**
4. **Añade una frase de contraseña con una cuenta Pro** para los valores de producción, y envíala por otro canal.
5. **Envía el enlace con una nota de una línea** que diga qué es y dónde va el archivo. Envía la configuración no secreta aparte o remite al archivo de ejemplo del repositorio.

Una invitación a la bóveda es la mejor vía cuando el desarrollador es una contratación fija y tu equipo ya usa un gestor de secretos con acceso por desarrollador. Usa el enlace de un solo uso mientras eso no esté configurado, y para quien nunca vaya a estar en la bóveda.

## Dile al desarrollador dónde va el archivo

Una entrega limpia puede acabar mal si el archivo termina en una carpeta compartida. Envía estas indicaciones junto con los datos de conexión:

- **Guárdalo como `.env` en la raíz del proyecto** y en ningún otro sitio. Comprueba que `.gitignore` lo cubre antes del primer commit.
- **No pegues valores en tickets ni en el chat** para preguntar si son correctos. Si falta una variable o no es válida, indica solo su nombre, y quien la envió emitirá un valor nuevo.
- **Rotación al terminar.** Cuando acabe el proyecto, los valores de ese archivo se rotan. Dilo desde el principio para que nadie se sorprenda.

## Confirma y después limpia

Pide al desarrollador que confirme el nombre del archivo, el entorno y una marca no secreta, como un comentario de versión en la primera línea. Si un enlace de un solo uso indica que se abrió antes de que él llegara, da por expuestos todos sus valores y rótalos.

Cuando termine la entrega, revoca cualquier enlace que no se haya abierto, elimina cualquier copia temporal que hayas guardado y anota quién recibió los valores de qué entorno y cuándo. Ese registro es el historial de auditoría. El archivo en sí solo debería existir en el dispositivo que lo necesita.

## Lecturas relacionadas

- Cómo compartir claves de API de forma segura: https://uselinkpilot.com/es/blog/how-to-share-api-keys-securely
- Compartir enlaces de forma segura para desarrolladores: https://uselinkpilot.com/es/blog/secure-link-sharing-for-developers
- Cómo crear un enlace temporal seguro para compartir archivos: https://uselinkpilot.com/es/blog/how-to-create-a-temporary-secure-link-for-sharing-files
- Cómo funcionan los enlaces secretos de un solo uso: https://uselinkpilot.com/es/blog/how-one-time-secret-links-work

## Herramientas para este artículo

Generador de enlaces secretos de un solo uso

Comparte una contraseña o una nota con un enlace que solo se abre una vez.
https://uselinkpilot.com/es/tools/free-secret-link-generator

Mensaje que se autodestruye

Envía una nota que desaparece después de leerse una vez.
https://uselinkpilot.com/es/tools/burn-after-read-secret

Generador de enlaces que expiran

Crea enlaces que dejan de funcionar en el momento que fijes.
https://uselinkpilot.com/es/tools/temporary-link

## Preguntas frecuentes

### ¿Es seguro enviar un archivo de configuración por correo?

### ¿Deben guardarse los secretos en el archivo de configuración?

### ¿Cuál es la forma más segura de compartir un .env con un colaborador externo?

### ¿Debo cifrar un archivo de configuración antes de compartirlo?

### ¿Cómo confirmo que el desarrollador ha recibido el archivo correcto?

### ¿Y si he enviado el archivo a la persona equivocada?

## LinkPilot envía un enlace secreto que desaparece en cuanto se abre.

Cifrado en tu navegador, se muestra una vez y después se destruye. Sin cuenta.

Crear un enlace secreto (https://uselinkpilot.com/es/tools/free-secret-link-generator)

## Sigue leyendo

Seguridad

### Cómo compartir secretos de forma segura en equipos en remoto

Compartir secretos en remoto en cinco pasos: inventario, bóveda o enlace de un solo uso según su vida útil, tres reglas, Slack y un plan ante filtraciones.
https://uselinkpilot.com/es/blog/how-to-implement-secure-secret-sharing-for-remote-teams

Seguridad

### Cómo entregar credenciales entre equipos de forma segura

Entregar credenciales entre equipos de forma segura: bóveda o enlace de un solo uso según su uso, alcance limitado, un responsable y revocación a tiempo.
https://uselinkpilot.com/es/blog/how-to-create-a-secure-way-to-hand-off-credentials-between-teams

Seguimiento de enlaces

### Cómo gestionar URL con dominio propio de varios clientes

URL con dominio propio en una agencia: un espacio de trabajo y un dominio por cliente, roles que separan agencia y cliente, y una lista para la baja.
https://uselinkpilot.com/es/blog/how-to-manage-branded-urls-across-multiple-client-accounts

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Inicio",
        "item": "https://uselinkpilot.com/es"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Blog",
        "item": "https://uselinkpilot.com/es/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Cómo enviar un archivo de configuración a un desarrollador",
        "item": "https://uselinkpilot.com/es/blog/how-to-securely-deliver-a-config-file-to-a-developer"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://uselinkpilot.com/es/blog/how-to-securely-deliver-a-config-file-to-a-developer#article",
    "headline": "Cómo enviar un archivo de configuración a un desarrollador",
    "description": "Separa ajustes y secretos, envía los secretos con un enlace de un solo uso o un adjunto que se destruye tras una descarga, y deja el .env fuera de git.",
    "inLanguage": "es",
    "datePublished": "2026-10-26",
    "dateModified": "2026-10-26",
    "image": "https://uselinkpilot.com/logo-512.png",
    "author": {
      "@type": "Organization",
      "@id": "https://uselinkpilot.com/author/linkpilot-team#organization",
      "name": "LinkPilot Team",
      "url": "https://uselinkpilot.com/es/author/linkpilot-team"
    },
    "publisher": {
      "@type": "Organization",
      "name": "LinkPilot",
      "url": "https://uselinkpilot.com",
      "logo": {
        "@type": "ImageObject",
        "url": "https://uselinkpilot.com/logo-512.png",
        "width": 512,
        "height": 512
      }
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://uselinkpilot.com/es/blog/how-to-securely-deliver-a-config-file-to-a-developer"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "¿Es seguro enviar un archivo de configuración por correo?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "No, si contiene secretos reales. El correo deja copias en los dos buzones, en cada dispositivo sincronizado y en las copias de seguridad que hay detrás. Envía los valores secretos con un enlace de un solo uso y deja el correo para la configuración que no es secreta."
        }
      },
      {
        "@type": "Question",
        "name": "¿Deben guardarse los secretos en el archivo de configuración?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Solo cuando la aplicación lo exige. Es mejor dejar marcadores de posición en el archivo que se sube al repositorio e inyectar los valores reales desde el entorno o desde un gestor de secretos en tiempo de ejecución. El archivo de ejemplo del repositorio documenta la estructura; los valores secretos viajan por separado."
        }
      },
      {
        "@type": "Question",
        "name": "¿Cuál es la forma más segura de compartir un .env con un colaborador externo?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Verifica su identidad, dale credenciales propias limitadas al entorno que necesita, envíale esos valores con un enlace de un solo uso y dile dónde va el archivo y que nunca debe subirse al repositorio."
        }
      },
      {
        "@type": "Question",
        "name": "¿Debo cifrar un archivo de configuración antes de compartirlo?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Si lo adjuntas a un enlace secreto de LinkPilot, se cifra en tu navegador antes de subirse y se destruye tras una descarga, así que no hace falta ningún paso adicional. Si usas otro canal, cífralo con una herramienta como age o con un archivo comprimido protegido con contraseña, y envía la frase de contraseña por otra vía."
        }
      },
      {
        "@type": "Question",
        "name": "¿Cómo confirmo que el desarrollador ha recibido el archivo correcto?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Pídele que confirme el nombre del archivo, el entorno y una marca no secreta, como un comentario de versión al principio. Nunca le pidas que te devuelva el contenido."
        }
      },
      {
        "@type": "Question",
        "name": "¿Y si he enviado el archivo a la persona equivocada?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Rota todos los secretos que contiene en los sistemas que los aceptan y después actualiza los despliegues que usaban los valores antiguos. El archivo en sí no se puede recuperar."
        }
      }
    ],
    "inLanguage": "es"
  },
  {
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "@id": "https://uselinkpilot.com/#software",
    "name": "LinkPilot",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "Web",
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "url": "https://uselinkpilot.com",
    "offers": [
      {
        "@type": "Offer",
        "name": "Free",
        "price": "0",
        "priceCurrency": "USD",
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro",
        "price": "29",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "29",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency",
        "price": "299",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "299",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus",
        "price": "799",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "799",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro (yearly)",
        "price": "288",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "288",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency (yearly)",
        "price": "2988",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "2988",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus (yearly)",
        "price": "7980",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "7980",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Enterprise",
        "priceSpecification": {
          "@type": "PriceSpecification",
          "priceCurrency": "USD"
        },
        "url": "https://uselinkpilot.com/pricing"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "@id": "https://uselinkpilot.com/#organization",
    "name": "LinkPilot",
    "alternateName": "LinkPilot by TetraCore",
    "url": "https://uselinkpilot.com",
    "contactPoint": {
      "@type": "ContactPoint",
      "contactType": "customer support",
      "email": "support@uselinkpilot.com",
      "url": "https://uselinkpilot.com/support"
    },
    "parentOrganization": {
      "@type": "Organization",
      "@id": "https://tetracorehq.com/#organization",
      "name": "TetraCore",
      "url": "https://tetracorehq.com/"
    },
    "logo": {
      "@type": "ImageObject",
      "url": "https://uselinkpilot.com/logo-512.png",
      "width": 512,
      "height": 512
    },
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "sameAs": [
      "https://x.com/uselinkpilot",
      "https://www.linkedin.com/company/uselinkpilot",
      "https://facebook.com/uselinkpilot",
      "https://github.com/TetraCoreHQ/linkpilot-cli",
      "https://github.com/TetraCoreHQ/linkpilot-mcp",
      "https://www.npmjs.com/package/linkpilot",
      "https://www.npmjs.com/package/@uselinkpilot/sdk",
      "https://www.npmjs.com/package/@uselinkpilot/mcp",
      "https://chromewebstore.google.com/detail/linkpilot-short-links-and/mnmppadihpcncicldpkmgknhnjkondad",
      "https://addons.mozilla.org/en-US/firefox/addon/uselinkpilot/"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "LinkPilot",
    "url": "https://uselinkpilot.com",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "https://uselinkpilot.com/blog?q={search_term_string}",
      "query-input": "required name=search_term_string"
    }
  }
]
```