Yuebing 리뷰 #1

개인용 파일 공유 오픈소스인 yoebing을 살펴 봅니다.

2023-05-29

소개

cobbzilla/yuebing: 🥮 Host your own video sharing site

yuebing은 오픈소스 개인 파일 공유 서비스 입니다.

작성자는 google drive와 같은 거대 기업이 자신의 video, image를 사용하는데에 신뢰를 하고있지 않은 듯 합니다.

구글 포토의 기능 중 하나는 사람의 얼굴을 분석해서 특정 사람으로 분류한 사진을 찾아주는 기능이 있습니다.

물론 구글에서 내 개인 사진을 AI 학습에 임의로 사용하지는 않을 것이라는 신뢰가 있어야 이런 서비스가 가능하겠죠?

혹시라도 비슷한 걱정을 하시는 분들이 있다면, yuebing은 좋은 대안이 될 수 있습니다.

yoebing역시 AWS S3 서비스에 기반하고 있지만 암호화를 지원하기 때문에 개인 정보를 임의로 분석하기는 어려울 것이라 생각합니다.

yoebing을 만든 개발자처럼 가족과 개인의 영상을 특별한 가입 절차와 설정 없이 특정 지인과 쉽고 안전하게 공유하고 싶으신 분들은 한번즈음 고민해 볼만한 툴인 것 같습니다.

설치

yuebing/developer.md at master · cobbzilla/yuebing · GitHub

vue2 nuxt 기반입니다.

로컬에서 돌리기 위해선 redis를 구동해 주어야 합니다.

redis 설치 후, redis-server로 foreground 실행합니다.

env.example 파일을 .env로 복사합니다.

yarn install, yarn dev 명령으로 실행합니다.

s3 to local

혹시 몰라 IAM에서 yoebing 계정을 만들고 s3 read only 권한만을 주었습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:Get*",
        "s3:List*",
        "s3-object-lambda:Get*",
        "s3-object-lambda:List*"
      ],
      "Resource": "*"
    }
  ]
}

참고로 full access 권한은 다음과 같이 설정합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:*", "s3-object-lambda:*"],
      "Resource": "*"
    }
  ]
}

.env 파일에서 YB_DEST_KEY, YB_DEST_SECRET, YB_DEST_BUCKET, YB_DEST_S3_REGION, YB_ADMIN_PASSWORD을 설정해 줍니다.

yarn dev를 수행하면, 중간 중간 S3 쓰기 과정에서 access denied 오류가 납니다.

cobbzilla/mobiletto: A storage abstraction layer

mobiletto-lite라는 모듈을 사용합니다.

B2 Cloud Storage: The Lowest Cost On Demand Storage As a Service

b2, s3, local 파일 시스템을 지원합니다.

이를 착안하여 YB_DEST_TYPE 값을 localYB_DEST_KEY 값을 tmp로 설정하고 프로젝트 루트에 tmp 폴더를 만들어 주면 s3 생성 없이 테스트를 해 볼 수 있습니다.

추가로 YB_PUBLIC=true, YB_ALLOW_REGISTRATION=true를 설정하여 사용자 등록을 가능하도록 합니다.

Bring up

첫 구동 시, nuxt 프레임워크가 modules/api/index.js 파일을 로드 합니다.

이 파일에서 file storage layer(mobiletto)를 초기화 하고 설정파일을 로드 합니다.

Loading script...