[Unity]自作アセットをUPM(verdaccio)で認証付きで管理する(簡易ver)　前編

# はじめに
前回書いた記事もverdaccioだったのですが分量がすさまじくなってしまい大変にわかりづらかったので
手順多めで今回はUnityで認証まで通したverdaccioの構築を新ためて書きます。
前編ではverdaccioにwebでアクセスできるまで、後編ではそこから追加で認証の設定をしていきます。
なので、全体に公開する前提のパッケージ群であれば前編のみで完結します。
後編 https://qiita.com/Yothuba3/items/6fa38d98e5b93ab19a75
***docker-compose***のインストールを済ませてから以下の手順を進めてください。
# 構築環境
- Ubuntu 22.04.1 LTS(ConohaVPS)
- Docker compose

# 説明しないもの
- サーバ環境の準備
- 各種使用ソフトウェアの解説


# 手順
## docker-compose.yamlの作成
適当な場所にまずはルートフォルダを作成しましょう。  
今回はqiitaフォルダとし、/home/user以下に作成しています。

```terminal
mkdir qiita && cd qiita
```

qiitaフォルダ以下で`docker-compose.yaml`を作成し、以下の内容を記述します。
```yaml
services:
  https-portal:
    image: steveltn/https-portal
    container_name: "proxy-sample"
    ports:
      - 80:80
      - 443:443
    restart: always
    environment:
      CLIENT_MAX_BODY_SIZE: 100G
      DOMAINS: 'your.domain.com -> http://verdaccio-sample:4873'
      STAGE: production
    volumes:
      - ./http-portal-certs:/var/lib/https-portal

  verdaccio:
    image: verdaccio/verdaccio
    container_name: "verdaccio-sample"
    restart: always
    environment:
      - VERDACCIO_PORT=4873
    ports:
      - 4873:4873
    volumes:
      - "./verdaccio/storage:/verdaccio/storage"
      - "./verdaccio/config:/verdaccio/conf"
      - "./verdaccio/plugins:/verdaccio/plugins"
```

## docker-compose.yamlの中身
- https-portal
- verdaccio
の２つのコンテナを起動しています。
#### https-portal
リバースプロキシサーバの役割、およびSSLの証明書発行をやってくれる優れものです。
`environment`ブロックの`DOMAINS`で、`your-domain -> コンテナ側のURL`  
と指定することでリバースプロキシが設定され、ドメインに対して自動でSSLも取得されます。  
SSLの設定は本当に面倒くさいので筆者的にはまじで重宝しています。

#### verdaccio
verdaccioはUPMサーバの本体となります。Unity、自作UPMサーバと検索すると大体ヒットするのはこの
verdaccioだと思います。UPMサーバ、WebGUIを提供してくれるのでエンジニア以外も触りやすいです。

## 起動
一度docker-composeを起動し、構成ファイルを生成させます。
yamlファイルのあるディレクトリで以下を実行します。
```terminal
docker compose up --build -d
```
生成に成功したらそのままダウンさせます。
```terminal
docker compose down
```

以上の操作によって、verdaccioフォルダが作成され、配下に`storage, config, pugins`
の３つが生成されます。このうちのconfigフォルダにverdaccio公式からconfigファイルのひな形をコピーします。
verdaccioはdocker利用時にconfigファイルのみは別途用意する必要があり、[マニュアル](https://verdaccio.org/docs/docker/)にも記載されています。   
  
**必ずconfigファイルの名前をconfig.yamlとすること**。verdaccioはデフォルトで`config.yaml`の名前で探しに行きます。
```terminal:qiita/verdaccio/config/
vim config.yaml
```
以下の内容をconfig.yamlに記述します。
ひな形からコメントを削除したもので、追記したのは下から2,3行目の`max_body_size`, `listen`ブロックです。
```yaml
storage: /verdaccio/storage/data

plugins: /verdaccio/plugins

web:
  title: Verdaccio
 
auth:
  htpasswd:
    file: /verdaccio/storage/htpasswd
    
uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: npmjs

  '**':
    access: $all

    publish: $authenticated
    unpublish: $authenticated

    proxy: npmjs

server:
  keepAliveTimeout: 60

middlewares:
  audit:
    enabled: true

max_body_size: 10000mb

listen: http://proxy-sample:4873

logs: { type: stdout, format: pretty, level: http }
```

#### 改めてcompose起動
ここまでの設定が終われば9割型終了しています。
以下のコマンドを実行しwebからアクセスできることを確認していきましょう。
```terminal
docker compose up --build -d
```
起動を確認したら、ブラウザから自身が指定ドメインでアクセスしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411974/b93e7e6d-48f6-5b18-be45-6583f7f6b630.png)

**無事アクセスできました！！**
ここまでくればあとはverdaccioに関するほかの記事でpackageのプッシュ、unityでのプルはできると思います

# もしも途中で詰まったら
人によっては502エラーなどで詰まる可能性もあると思います。その場合は焦らずに
```terminal
docker compose up --build
```
などを実行して、dockerのログを確認してみるとエラーが確認できたりします。  
記事中に使っていたのは`-d`オプションを付与したものでバックグラウンドで実行するためのものです。

#### firewallを確認する
記事では省きましたが、使用するosによっては80/443がブロックされている場合もあるので要チェックです。

#### 使用するサーバ
筆者はconohaVPSを利用しています。awsなども勿論良いのですが初心者には設定項目が多いので、どうしても上手くいかない場合はVPSを変えることも検討しましょう。

## 後編へ続く
https://qiita.com/Yothuba3/items/6fa38d98e5b93ab19a75