コンテンツにスキップ
Vectana
Esc
↑↓移動↵開く⌘Jプレビュー
このページの内容

インストール

Docker Compose で Vectana を自分のサーバーに立ち上げて、最初の管理者を作るまで。

Vectana は、Docker Hub で公開しているイメージ heki0824/vectana(linux/amd64・linux/arm64)と Docker Compose で動かします。

必要なもの

  • Docker と Docker Compose v2 が使える Linux サーバー(メモリ 1GB 以上を推奨)
  • サーバーから外部への HTTPS 通信(api.osv.dev と endoflife.date に問い合わせます)
  • 公開用のドメインと、HTTPS で公開する仕組み(リバースプロキシや Cloudflare Tunnel など。公開する を参照)
  • 招待メールや通知メールを送るための SMTP サーバー(なくても起動できます。メールの設定 を参照)

構成

1 つのイメージを、役割ごとに 4 つのコンテナとして起動します。

サービス 役割
db PostgreSQL 18。データはボリューム db-data に保存されます
migrate 起動時にデータベースを最新の構造に更新して終了します
app 画面と API。127.0.0.1:8000 で待ち受けます
worker 起動時と、その後は定期的に、すべてのパッケージをチェックして通知します

インストール手順

ファイルを用意する

サーバーに作業用のディレクトリを作り、compose.prod.yaml と設定のひな形を取得します。

mkdir -p /srv/vectana && cd /srv/vectana
curl -fsSLo compose.yaml https://raw.githubusercontent.com/techolve/vectana/main/compose.prod.yaml
curl -fsSLo .env https://raw.githubusercontent.com/techolve/vectana/main/.env.example
chmod 600 .env

.env を設定する

最低限、次の値を設定します。

VECTANA_VERSION=1.0.0
POSTGRES_PASSWORD=(ランダムな文字列)
SECRET_KEY=(openssl rand -hex 32 の出力)
WEB_URL=https://vectana.example.com
GROUP_NAME=Example Group

ランダムな値は次のコマンドで作れます。

openssl rand -hex 24   # POSTGRES_PASSWORD 用
openssl rand -hex 32   # SECRET_KEY 用

SECRET_KEY を設定しないと、app は起動しません。メールの設定は メールの設定、すべての項目は 設定 を参照してください。

起動する

docker compose up -d
docker compose ps

db が healthy、migrate が終了(exited 0)、app と worker が起動していれば成功です。

curl http://127.0.0.1:8000/api/health
# {"status":"ok","version":"1.0.0"}

最初の管理者を作る

グループ管理者を 1 人作ります。パスワードの入力を求められます。

docker compose exec app python -m app.cli create-admin \
  --email you@example.com --name "管理者" --company "Example Inc."

--company を付けると、その名前の親会社も一緒に作られ、管理者はそこに所属します。

公開してログインする

公開する の手順で WEB_URL のドメインを 127.0.0.1:8000 につなぎ、ブラウザで開いてログインします。あとは 組織の構成 から会社や部署を作り、ユーザーを招待してください。

ログを見る

docker compose logs -f app       # 画面と API
docker compose logs -f worker    # 定期チェックと通知("Scanned ... package(s)" など)

チェックを今すぐ 1 回だけ実行するには、次のコマンドを使います。

docker compose run --rm worker python -m app.worker --once