npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@octodevs/octodrive-sdk

v1.0.0

Published

OctoDrive - Security-first fully encrypted file storage service

Readme

@octodev/octodrive-sdk

OctoDrive - Security-first fully encrypted file storage service some basic features for OctoDrive.

under construction some documentations are only in Korean yet.

목표

비밀번호든 키든 백엔드로 넘어가지 않는 완벽한 종단간 암호화 파일 스토리지 서비스를 만들자
사실 종단간 암호화도 아닌게 종단간 암호화는 보내는 사람이랑 받는 사람이 있어야 되는데 그냥 혼자 받고 혼자 보내는거라... (중간에 서버는 암꺼도 모르고)

왜 만들어?

대부분 파일 스토리지 서비스들은 파일을 암호화를 아예 안하거나 파일 암호화 키를 서버에서 받아서 하는데 (뭐 비번으로 대칭키 암호화 해놨겠지만) 중앙에 키 스토어가 있다는 말이니까 맘에 안듬 ㅇㅇ

원리

1. 파일 저장 구조

모든건 fs로 (속도는 나중에 생각하자)

스토리지
ㄴ 메타데이터들
  ㄴ <sha3(유저명+비밀번호)>
ㄴ 파일들
  ㄴ <랜덤16진수>
  ㄴ <랜덤16진수>
  ㄴ <랜덤16진수>
  ㄴ <랜덤16진수>

이걸 그냥 nginx 같은걸로 파일 리스팅 없이 정적 호스팅

2. 메타데이터 구조

src/Metadata/Metadata.ts 참고

3. 파일들 구조

src/EncryptedData/EncryptedData.ts 참고

요약

프론트엔드가 유저명과 비밀번호를 받으면

/스토리지/메타데이터들/<sha3(유저명+비밀번호)> 를 받아서 비밀번호로 aes를 풀고 (404가 뜨면 아이디 혹은 비번이 틀린거)

논리적 path 들을 읽어서 리스트 형태로 보여주고
다운로드 누르면 매핑된 물리적 path에서 파일 받아서 비밀번호로 aes풀기

그러면 백엔드는 메타데이터를 볼수도 없고 암호화 키도 모르고 파일 내용도 못봄

ARP 스푸핑을 하든 SSL 위변조를 하든 상관없는게 비번은 네트워크에 안흐르고 모두 e2e 암호화 됨

고려사항

  • 파일명에 = 안들어가도록 프론트엔드에서 막아야 함 (메타데이터에 injection될지도, 백엔드가 아니라 프론트엔드에서 하는 이유는 백엔드가 메타데이터를 볼수도 없고 injection한다 해도 메타데이터 깨지면 서버는 문제 없고 지가 손해임 ㅇㅇ)
  • 비밀번호를 너무 짧게 하면 털리니까 프론트엔드에서 잘 막어야됨
  • 자원봉사자는 아니니까 트레픽 쓰로틀링 빡세게 걸어야 됨

더 생각해 봐야할거

  • 모든 파일을 같은 키로 암호화 하면 위험하지 않을까?