envshare.dev는 개발자가 환경 변수를 누구와도 안전하게 공유할 수 있도록 하는 오픈 소스 프로젝트입니다. .env을 업로드할 수 있습니다. 환경 변수를 파일로 저장하거나 입력하면 데이터베이스에 저장되기 전에 암호화됩니다. 그런 다음 링크를 누구와도 공유하면 해당 사람들이 환경 변수를 해독할 수 있습니다.
EnvShare는 무료로 사용할 수 있으며 오픈 소스입니다. GitHub에서 코드를 찾을 수 있습니다.
기능
- 공유 가능한 링크: 링크를 보내 환경 변수를 안전하게 공유하세요
- 종단 간 암호화: AES 암호화는 데이터를 저장하기 전에 암호화하는 데 사용됩니다.
- 읽기 횟수 제한: 링크를 읽고 암호화할 수 있는 횟수를 제한하세요
- 자동 만료: 특정 시간이 지나면 링크 자동 만료 및 데이터 삭제
작동 방식
환경 변수를 공유하려고 할 때마다 브라우저에 새로운 무작위 암호화 키가 생성됩니다. 민감한 데이터는 AES를 사용하여 암호화된 후 Redis에 저장됩니다.
그런 다음 고유한 문서 ID가 암호화 키와 결합되어 공유 가능한 링크를 형성하며, 이 링크를 사용하여 데이터에 액세스하고 암호를 해독할 수 있습니다.

데이터
EnvShare는 Redis를 사용하여 암호화된 환경 변수를 저장합니다. Redis는 빠른 키-값 저장소로 사용될 수 있다는 점에서 훌륭할 뿐만 아니라 목록, 세트, 해시와 같은 더 복잡한 데이터 구조도 제공합니다. 또한 만료된 키를 자동으로 제거하므로 우리 사용 사례에 적합합니다.
데이터는 다음 구조의 Redis 해시에 저장됩니다:
{
"remainingReads": 20, // Optional, the number of times the link can be read
"encrypted": "...", // The encrypted environment variables
"iv": "..." // The initialization vector for AES-CBC
}
해시를 사용하면 암호화된 데이터와 함께 일부 메타데이터를 저장할 수 있으며 HINCRBY를 사용하여 나머지 읽기를 원자적으로 줄일 수도 있습니다. .Redis는 놀라울 정도로 유연하며 새로운 아이디어를 빠르게 반복하고 구현할 수 있습니다. 예를 들어 미래에는 액세스 로그와 같은 것을 추가하고 싶을 수도 있습니다. 정렬된 세트가 이에 매우 적합할 것입니다.
유일한 문제는 Redis가 일반적으로 TCP를 통해서만 사용할 수 있다는 것인데, 이는 우리의 에지 기능에서는 작동하지 않습니다. 다행히 Upstash는 HTTP를 통해 Redis에 액세스하는 데 사용할 수 있는 Redis API를 제공합니다. 이것이 바로 EnvShare에 필요한 것입니다. Upstash는 하루에 10,000건의 요청이 가능한 무료 Redis 데이터베이스를 제공합니다. 이것은 우리에게 충분합니다. EnvShare를 직접 호스팅하려면 여기에서 무료 계정을 얻을 수 있습니다. 여기에서 셀프 호스팅 가이드를 확인하세요
엣지 기능에서 Redis를 설정하는 것은 쉽습니다. 데이터베이스를 만들고 @upstash/redis를 설치하면 됩니다. .
그런 다음 에지 기능에서 데이터를 저장할 수 있습니다:
/api/share.tsimport { Redis } from "@upstash/redis";
const redis = new Redis({
url: "..." // UPSTASH_REDIS_REST_URL
token: "..." // UPSTASH_REDIS_REST_TOKEN
});
await redis.hset(key, {
remainingReads: 20,
encrypted: "...",
iv: "...",
}); 마무리
읽어주셔서 감사합니다! EnvShare는 Next.js와 Upstash Redis를 시작하는 것이 얼마나 쉬운지 보여주기 위해 제가 만든 재미있는 프로젝트입니다. 마음에 드시고 유용하게 사용하시길 바랍니다. 질문이나 의견이 있으시면 언제든지 Twitter를 통해 저에게 연락해 주세요.
관련 링크:
- 환경 공유
- 깃허브
- 배포 가이드