【Proxmox】"apt update" で "Failed to fetch .../InRelease  401  Unauthorized" エラー

> [Proxmox Virtual Environment](https://www.proxmox.com/en/proxmox-ve)（以下 Proxmox VE or PVE）マシンのシェルから `apt update` `apt ugrade` を実行すると `Failed to fetch https://enterprise.proxmox.com/debian/pve/dists/bullseye/InRelease  401  Unauthorized` エラーが表示される。

```
# apt update
Get:1 http://security.debian.org bullseye-security InRelease [48.4 kB]
Get:2 http://security.debian.org bullseye-security/main amd64 Packages [193 kB]
Get:3 http://security.debian.org bullseye-security/main Translation-en [122 kB]
Get:4 http://ftp.jp.debian.org/debian bullseye InRelease [116 kB]
Get:5 http://ftp.jp.debian.org/debian bullseye-updates InRelease [44.1 kB]
Get:6 http://ftp.jp.debian.org/debian bullseye/main amd64 Packages [8,184 kB]
Get:7 http://ftp.jp.debian.org/debian bullseye/main Translation-en [6,239 kB]
Get:8 http://ftp.jp.debian.org/debian bullseye/contrib amd64 Packages [50.6 kB]                                          
Get:9 http://ftp.jp.debian.org/debian bullseye/contrib Translation-en [46.9 kB] 
Get:10 http://ftp.jp.debian.org/debian bullseye-updates/main amd64 Packages [14.6 kB] 
Get:11 http://ftp.jp.debian.org/debian bullseye-updates/main Translation-en [7,929 B]
Err:12 https://enterprise.proxmox.com/debian/pve bullseye InRelease                     
  401  Unauthorized [IP: 51.79.159.216 443]
Reading package lists... Done                  
E: Failed to fetch https://enterprise.proxmox.com/debian/pve/dists/bullseye/InRelease  401  Unauthorized [IP: 51.79.159.216 443]
E: The repository 'https://enterprise.proxmox.com/debian/pve bullseye InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
```

<details><summary>Proxmox VE とは</summary>

:::note info
<strong>Proxmox VEとは「OS の仮想化に特化した Linux」</strong>です。

Proxmox VE（以下 PVE or Proxmox）は、恐れずに言うなら「Citrix Xen、VMware、VirtualBOX などのような**仮想マシン（[ハイパーバイザ](https://ja.wikipedia.org/wiki/%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%83%90%E3%82%A4%E3%82%B6)）機能を抜き出して OS にしたようなもの**」です。

厳密には、Linux の [KVM](https://ja.wikipedia.org/wiki/Kernel-based_Virtual_Machine)（カーネル・ベース仮想マシン）や [LXC](https://ja.wikipedia.org/wiki/LXC)（Linux コンテナ）を動かすためにチューニングされた Debian ベースの Linux に、Proxmox という専用管理アプリをのせたものです。

つまり、**OS の仮想化に特化した Linux のディストリビューション**と言えます。

エンタープライズ（企業）向けの OS であるため、安定版やサポートが必要な場合は有償となるものの、オープンソースなので自分で勉強して利用するならば、自己責任で最新版（つまり非安定版というか開発版）を[無料で利用](https://www.proxmox.com/en/downloads/category/iso-images-pve)できます。

PVE は[ベアメタル型（Type-1）](https://ja.wikipedia.org/wiki/%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%83%90%E3%82%A4%E3%82%B6#Type_1%EF%BC%88%E3%80%8C%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%80%8D%E3%81%BE%E3%81%9F%E3%81%AF%E3%80%8C%E3%83%99%E3%82%A2%E3%83%A1%E3%82%BF%E3%83%AB%E3%80%8D%EF%BC%89%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%83%90%E3%82%A4%E3%82%B6)と呼ばれるタイプの仮想マシン機能を使っており、ハードウェアとハイパーバイザー（ゲスト OS）の間にホスト OS がほとんど関与しません。そのため<font color=darkorange>起動後はローカルインストールと比べても高いパフォーマンス</font>が期待できます。

もちろん仮想化を使わずに[ローカル・インストールするのが一番パフォーマンスはいい](https://ikus-soft.com/en_CA/blog/techies-10/proxmox-ve-performance-of-kvm-vs-lxc-75)です。しかし、高パフォーマンスを保ちながら、複数 OS を起動し、トライ＆エラーやトラブル時にも環境を即座に再構築できる（コンテナを作成できる）のが PVE を使う理由です。

Proxmox はヘッドレス（CUI）で動き、Web UI を通して管理します。仮想マシン環境（ハードウェアを仮想化する技術）なので、ISO イメージがあれば Linux に限らず Windows 11 どころか macOS すらも（Apple マシンであれば）PVE 上で動作させられるのが特徴です。

また、クラスタ機能も標準で搭載しており、PVE マシンを 3 台以上用意すれば [HA（高可用性）](https://ja.wikipedia.org/wiki/%E9%AB%98%E5%8F%AF%E7%94%A8%E6%80%A7)を高めることもできます。このことから、エンタープライズ（企業）用途に多く使われている実績があります。特に標準（デフォルト）で動作するマシンも多いため、使われなくなったマシンを再活用（リソースを再活用）するのに、多いに役立ちます。

Proxmox が標準でサポートするコンテナのタイプは、KVM に加え LXC（Linux コンテナ）です。

ホストとは異なるカーネル（ホストとは違うカーネルバージョンの Linux、Windows や macOS）を使うなら KVM（MV）を利用します。ホストにはないハードウェア（例えば [TPM](https://ja.wikipedia.org/wiki/Trusted_Platform_Module) など）も仮想化したい場合は KVM（VM）を選択します。逆に、ホストのカーネル（Linux カーネル）を使うなら LXC（CT）を使う方が容量の節約になります。

残念なことに [OCI](https://ja.wikipedia.org/wiki/Open_Container_Initiative) 形式のコンテナには対応していません。そのため、OCI のコンテナの代表格である Docker や Podman も Proxmox で動かしたい場合は、Ubuntu や Alpine などの VM もしくは CT を作成し、その上に Docker、`docker compose` や Kubernetes などを入れて動かすことになります。

この場合、仮想マシン上で Docker を動かすことになるため、Windows や mcaOS で Docker を動かすのと同じ構図になります。とは言え、それらほどオーバーヘッドはありません。同じ Linux カーネルであるためです。

ホスト OS（Proxmox）は Debian ベースなので、ホスト上に直接 Docker をインストールすることも可能ですが、メンテナンス性や安定動作の観点から Proxmox を利用するメリットは半減します。

その数パーセントのオーバーヘッドがどうしても気になるようであれば、Proxmox を使わずに他の Linux（例えば Alpine Linux などの軽量で堅牢な Linux）を本体（ベアメタル）にインストールし、その上に Docker などを載せて [Portainer](https://www.portainer.io/) などで管理した方がいいでしょう。
:::

</details>

## TL; DR <sub><sup>（今北産業）</sup></sub>

1. `apt` 実行時に安定版（有償向け）のリポジトリを参照しに行くも、<font color=darkorange>サブスクリプションの登録をしていない</font>ことによるエラーメッセージ
1. `apt` リポジトリの参照先から安定版のリポジトリを外すことでエラーを回避できる
1. 代わりに `pve-no-subscription` の最新リリース版のリポジトリを追加する
    - その代わり、GUI 画面でサブスクリプションされていない旨のワーニングが常に表示されます

## TS; DR <sub><sup>（Proxmox をインストールしたら、まずやること）</sup></sub>

- 検証環境： Proxmox VE 8.1.3

### GUI 画面から変更する場合

- 対象ノードの GUI（設定画面）から `[Updates]-[Repositories]` で `AP Repositories` で、有償リポジトリを無効化し、無償リポジトリを追加する。
![スクリーンショット 2024-01-31 8.43.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78776/f8b5aceb-e661-96b5-0018-16b6c60db80e.png)

### 直接設定ファイルを変更する場合

以下は `bullseye`（Debian 11）ですが、最新の Proxmox VE8.1 は `bookworm`（Debian 12）に置き換えてください。

- 有償版（安定版）の無効化

```diff:/etc/apt/sources.list.d/pve-enterprise.listでコメントアウト
- deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
+ #deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
```

- 無償版（最新版）の有効化

```bash:/etc/apt/sources.list.d/pve-install-repo.listに追加（Intel/AMD マシンの場合）
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
```

```bash:公開鍵のインストール
wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg 
sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg 
```

```shellsession:アップデートと更新
$ apt update && apt full-upgrade
$ reboot now
```

## 参考文献

- [Install Proxmox VE](https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_11_Bullseye#Install_Proxmox_VE) | Install Proxmox VE on Debian 11 Bullseye | Wiki @ Proxmox.com
- [Before I do anything on Proxmox, I do this first...](https://youtu.be/GoZaMgEgrHw) | Techno Tim @ Youtube