98 lines
4.9 KiB
Markdown
98 lines
4.9 KiB
Markdown
# NanoKVM サーバー
|
|
|
|
これは NanoKVM のバックエンドサーバーの実装です。
|
|
|
|
詳細なドキュメントについては、[Wiki](https://wiki.sipeed.com/nanokvm) を参照してください。
|
|
|
|
## 構造
|
|
|
|
```shell
|
|
server
|
|
├── common // 共通ユーティリティコンポーネント
|
|
├── config // サーバー設定
|
|
├── dl_lib // 共有オブジェクトライブラリ
|
|
├── include // 共有オブジェクトのヘッダーファイル
|
|
├── logger // ロギングシステム
|
|
├── middleware // サーバーミドルウェアコンポーネント
|
|
├── proto // API リクエスト/レスポンス定義
|
|
├── router // API ルートハンドラ
|
|
├── service // コアサービスの実装
|
|
├── utils // ユーティリティ関数
|
|
└── main.go
|
|
```
|
|
|
|
## 設定
|
|
|
|
設定ファイルのパスは `/etc/kvm/server.yaml` です。
|
|
|
|
```yaml
|
|
proto: http
|
|
port:
|
|
http: 80
|
|
https: 443
|
|
cert:
|
|
crt: server.crt
|
|
key: server.key
|
|
|
|
# ログレベル (debug/info/warn/error)
|
|
# 注意: 本番環境では 'info' または 'error' を使用し、'debug' は開発環境でのみ使用してください
|
|
logger:
|
|
level: info
|
|
file: stdout
|
|
|
|
# 認証設定 (enable/disable)
|
|
# 注意: 認証を無効にするのは開発環境でのみ行ってください
|
|
authentication: enable
|
|
|
|
jwt:
|
|
# JWT 秘密鍵の設定。 空のままにすると、サーバー起動時にランダムな 64 バイトの鍵が自動的に生成されます。
|
|
secretKey: ""
|
|
# JWT トークンの有効期限(秒単位)。 デフォルト: 2678400 (31 日)
|
|
refreshTokenDuration: 2678400
|
|
# ユーザーがログアウトすると、すべての JWT トークンが無効になります。 デフォルト: true
|
|
revokeTokensOnLogout: true
|
|
|
|
# カスタム STUN サーバーのアドレス
|
|
stun: stun.l.google.com:19302
|
|
|
|
# カスタム TURN サーバーのアドレスと認証情報
|
|
turn:
|
|
turnAddr: turn.cloudflare.com:3478
|
|
turnUser: example_user
|
|
turnCred: example_cred
|
|
```
|
|
|
|
## コンパイルとデプロイ
|
|
|
|
注意: Linux オペレーティングシステム (x86-64) を使用してください。このビルドプロセスは ARM、Windows、macOS では互換性がありません。
|
|
|
|
1. ツールチェーンのインストール
|
|
1. 以下のリンクからツールチェーンをダウンロードします: [ダウンロードリンク](https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz)。
|
|
2. ファイルを解凍し、`host-tools/gcc/riscv64-linux-musl-x86_64/bin` ディレクトリを PATH 環境変数に追加します。
|
|
3. `riscv64-unknown-linux-musl-gcc -v` を実行します。バージョン情報が表示されれば、インストールは成功です。
|
|
|
|
2. プロジェクトのコンパイル
|
|
1. プロジェクトのルートディレクトリから `cd server` を実行します。
|
|
2. `go mod tidy` を実行して Go の依存関係をインストールします。
|
|
3. `CGO_ENABLED=1 GOOS=linux GOARCH=riscv64 CC=riscv64-unknown-linux-musl-gcc CGO_CFLAGS="-mcpu=c906fdv -march=rv64imafdcv0p7xthead -mcmodel=medany -mabi=lp64d" go build` を実行してプロジェクトをコンパイルします。
|
|
4. コンパイルが完了すると、`NanoKVM-Server` という名前の実行ファイルが生成されます。
|
|
|
|
3. RPATH の変更
|
|
1. `sudo apt install patchelf` または `pip install patchelf` を実行して patchelf をインストールします。
|
|
2. `patchelf --version` を実行します。バージョンが 0.14 以上であることを確認します。
|
|
3. `patchelf --add-rpath \$ORIGIN/dl_lib NanoKVM-Server` を実行して、実行ファイルの RPATH を変更します。
|
|
|
|
4. アプリケーションのデプロイ
|
|
1. デプロイ前に、ブラウザでアプリケーションを最新バージョンに更新します。手順は[こちら](https://wiki.sipeed.com/hardware/en/kvm/NanoKVM/system/updating.html)を参照してください。
|
|
2. コンパイルして生成された `NanoKVM-Server` ファイルを使用して、NanoKVM の `/kvmapp/server/` ディレクトリ内の元のファイルを置き換えます。
|
|
3. NanoKVM で `/etc/init.d/S95nanokvm restart` を実行してサービスを再起動します。
|
|
|
|
## 手動更新
|
|
|
|
> ファイルのアップロードには SSH が必要です。Web 設定で有効にしてください: `設定 > SSH`
|
|
|
|
1. [GitHub](https://github.com/sipeed/NanoKVM/releases) から最新のアプリケーションをダウンロードします。
|
|
2. ダウンロードしたファイルを解凍し、解凍したフォルダーの名前を `kvmapp` に変更します。
|
|
3. NanoKVM 上の既存の `/kvmapp` ディレクトリをバックアップし、新しい `kvmapp` フォルダーに置き換えます。
|
|
4. NanoKVM で `/etc/init.d/S95nanokvm restart` を実行してサービスを再起動します。
|