개인 메모

[작성중] 유니티 커스텀 UPM 서버 만들기

shlifedev 2023. 4. 24. 15:38

 * 메모용이므로 포스팅과는 거리가 멉니다. 원하시는 분이 있는경우 글을 정리해서 올리겠습니다.

직접 서버를 구축하는 이유

자신만의 private package를 관리하고 싶은 경우가 있겠다. 예를 들어 지금 내 에디터 툴들은 여러가지 종속성을 포함하는데 모두 유료에셋이거나 리소스들도 유료에셋들이 많은 상태고 좀 더 워크플로우를 용이하게 하기위해 커스텀 패키지 서버를 구축했다.

 

Verdaccio 설치 

> npm install -g verdaccio //반드시 -g 옵션으로 설치
> verdaccio // 실행

// 한번 실행 후 ctrl+c로 꺼준다. 첫 실행은 컨피그 생성을 위해서 할 뿐.

Verdaccio 설정

windows는 %appdata% 에서 /verdaccio/config.yaml를 수정

linux는 [users]/.config/verdaccio.config.yaml를 수정

다음과같이 listen 포트에 public ip 등록, https 사용등은 verdaccio 문서 참고

 

* 아래처럼 설정시 uplinks에서 알아서 open upm도 끌어온다.

기본 설정은 아래와 같지만 추가로 설정해주면 좋은게 많으니 공식문서를 참고하자.

listen:
 - 0.0.0.0:4873
 
#https: 사용시 공식문서 확인

#업링크는 지우거나, open upm을 추가한다.
uplinks:
  openupm:
    url: https://package.openupm.com

 

설정을 마친후 호스트 실행 

> verdaccio

 

Open UPM 클라이언트로 본인 서버에 로그인 or 회원가입

npm -r=http://package.myasset.com:4837 login // 회원가입 혹은 로그인으로 동작하니 이 명령어 하나면 된다.
openupm -r=http://package.myasset.com:4837 login // openupm으로도 로그인 해두면 좋다. .npmrc 파일을 나중에 유니티전용 인증파일로 바꿔야하는데 이 과정을 생략 가능

 

본인의 에셋을 서버에 퍼블리싱

openupm에 올릴때랑 마찬가지로 package.json을 설정한 폴더로 이동하여 아래 명령어 호출

> cd mypackage
> npm -r=http://...:4837 publish

//open upm으로는 레지스트리 지정이 불가하여 퍼블리시가 안된다.

 

Packages/manifest.json에 스코프 레지스트리를 등록한다

예를 들어 본인은 이렇게 사용하고있다.

  "scopedRegistries": [
    {
      "name": "package.openupm.com",
      "url": "https://package.openupm.com",
      "scopes": [
        "com.openupm
      ]
    },
    {
      "name": "custom server",
      "url": "http://아이피주소:4873",
      "scopes": [
        "com.shlifedev",
        "com.something.assetName"
      ]
    }
  ]

인증까지 추가하고 싶은경우

 예를 들어 지금 상태로는 방화벽 없이는 누구나 레지스트리에 접근 가능하다. 따라서 인증한 사용자 만 upm에 접근하게 하고싶다면 open upm 클라이언트를 사용하여 레지스트리로 로그인하면 된다 

 

 이 부분은 여기 문서를 보고 패키지 스코프를 설정하면 된다.