Skip to content
komodoをインストール

komodoをインストール

2026年7月3日

はじめに

最近、自宅サーバーをいじってセルフホストなサービスを立てたりして遊んでいる。
自分の場合は、docker を使ってサービスを立てることが多い。

docker の管理をいい感じにできるサービスがないか探してみたところ、komodo というのを見つけたので入れてみた。
使い始めてから3ヶ月くらい経って、特に不便なく使えているから、一旦入れたときのメモを書いておく。

自分はまだ komodo の機能を全部使っているわけではないけど、 GitHub/Forgejoと連携して push されたらデプロイしたり、UI上で compose.yaml を書くだけで簡単にサービスを立てられたりするから便利。

前提

  • docker が入っていること
  • 自宅サーバーのIPアドレスは 192.168.3.14 とする。

インストール

https://komo.do/docs/setup/mongo を下に進めていく。
DB は MongoDB を使うことにした。

1. ファイルをダウンロード

cd ~
wget -P komodo https://raw.githubusercontent.com/moghtech/komodo/main/compose/mongo.compose.yaml && \
  wget -P komodo https://raw.githubusercontent.com/moghtech/komodo/main/compose/compose.env

~/komodo/mongo.compose.yaml~/komodo/compose.env がダウンロードされる。

~/komodo/mongo.compose.yaml
################################
# 🦎 KOMODO COMPOSE - MONGO 🦎 #
################################

## This compose file will deploy:
##   1. MongoDB
##   2. Komodo Core
##   3. Komodo Periphery

services:
  mongo:
    image: mongo
    labels:
      komodo.skip: # Prevent Komodo from stopping with StopAllContainers
    command: --quiet --wiredTigerCacheSizeGB 0.25
    restart: unless-stopped
    # ports:
    #   - 27017:27017
    volumes:
      - mongo-data:/data/db
      - mongo-config:/data/configdb
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${KOMODO_DATABASE_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${KOMODO_DATABASE_PASSWORD}
  
  core:
    image: ghcr.io/moghtech/komodo-core:${COMPOSE_KOMODO_IMAGE_TAG:-2}
    init: true
    restart: unless-stopped
    depends_on:
      - mongo
    ports:
      - 9120:9120
    env_file: ./compose.env
    environment:
      KOMODO_DATABASE_ADDRESS: mongo:27017
    volumes:
      ## Attach the Core / Periphery communication keys
      - keys:/config/keys
      ## Store dated backups of the database - https://komo.do/docs/setup/backup
      - ${COMPOSE_KOMODO_BACKUPS_PATH}:/backups
      ## Store sync files on server
      # - /path/to/syncs:/syncs
      ## Optionally mount a custom core.config.toml
      # - /path/to/core.config.toml:/config/config.toml
      ## Optionally mount custom root CA certificate to trust
      # - /path/to/root_ca.crt:/usr/local/share/ca-certificates/root_ca.crt

  ## Deploy Periphery container using this block,
  ## or deploy the Periphery binary with systemd using 
  ## https://github.com/moghtech/komodo/tree/main/scripts
  periphery:
    image: ghcr.io/moghtech/komodo-periphery:${COMPOSE_KOMODO_IMAGE_TAG:-2}
    init: true
    restart: unless-stopped
    depends_on:
      - core
    env_file: ./compose.env
    volumes:
      ## Attach the Core / Periphery communication keys
      - keys:/config/keys
      ## Mount external docker socket
      - /var/run/docker.sock:/var/run/docker.sock
      ## Allow Periphery to see processes outside of container
      - /proc:/proc
      ## Specify the Periphery agent root directory.
      ## All your configs / repos must be children of this directory for Periphery to be able to see it.
      ## Must be the same inside and outside the container,
      ## or docker will get confused. See https://github.com/moghtech/komodo/discussions/180.
      ## Default: /etc/komodo.
      - ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}:${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}
      ## Optionally mount a custom periphery.config.toml
      # - /path/to/periphery.config.toml:/config/config.toml
      ## Optionally mount custom root CA certificate to trust
      # - /path/to/root_ca.crt:/usr/local/share/ca-certificates/root_ca.crt

volumes:
  # Mongo
  mongo-data:
  mongo-config:
  # Core / Periphery
  keys:

2. komodo の設定

~/komodo/compose.env を編集して、komodo の初期設定をする。
以下のように変更する。

項目備考
KOMODO_DATABASE_PASSWORDopenssl -hex 16 で置き換えた。データベースのパスワード
TZAsia/Tokyoタイムゾーン
KOMODO_INIT_ADMIN_PASSWORDopenssl -hex 16 で置き換えた。初期管理者パスワード
KOMODO_WEBHOOK_SECRETopenssl -hex 16 で置き換えた。Webhook認証用シークレット
KOMODO_JWT_SECRETopenssl -hex 16 で置き換えた。JWT生成用シークレット

3. 起動

docker compose -p komodo -f mongo.compose.yaml --env-file compose.env up -d

4. アクセス

http://192.168.3.14:9120 にアクセス。

ログインユーザー、パスワードは compose.env で設定しているものになる。

  • KOMODO_INIT_ADMIN_USERNAME=admin
  • KOMODO_INIT_ADMIN_PASSWORD=xxxx
komodo login

ログインが成功するとダッシュボードが表示される。

komodo top page

komodo の Resource

komodo は Resource という抽象化した概念がある。
これは Server、Stack、Deployment など、komodo で管理するもののこと。

  • Deployment: docker run を使ってサービスを起動
  • Stack: docker compose を使ってサービスを起動
  • Build: Docker Image としてビルドして、レジストリにプッシュする

など、色々ある。

自分は Stack をメインで使っているけど、Deployment や Build も使うともっと Docker を活用できそう。

Stack を作る

komodo の Stack リソースを使って、docker compose を使ってサービスを立てられる。

komodo の UI 上で compose.yaml を書くだけで簡単にコンテナを立てられる。
これがすごい気に入っている。
気になるセルフホストのOSSを見つけたら、komodo の UI 上から compose.yaml を書いてさくっと起動できる。

今回はコンテナを立てるまでを行いたいので、サンプルとして Nginx のコンテナを立てることにした。
docker compose を使うまでもないけど、お試しとして作ってみる。

1. Stack を作成

Stack > New Stacks をクリック。

new stacks

表示されたモーダルに Stack の名前を入力する。

  • Name: nginx (何でもOK)
  • Server: Local
input name

2. Stack の設定

Choose Mode で UI Defined を選択する。

choose mode

Compose File の入力欄に compose.yaml を記載する。

services:
  nginx:
    image: nginx:latest
    container_name: my-nginx
    restart: unless-stopped
    ports:
      - "80:80"

Save する。

3. 起動

Deploy を実行する。

deploy

Running になればOK。

running

192.168.3.14 にアクセスしてみる。

open browser

こんな簡単にコンテナをさくっと起動できる!

Deployment を使う

さっきは Stack を使ってサービスを立てたけど、イメージを元にサービスを立てるだけなら docker run を使えばいい。
その docker run に対応する機能が Deployment リソースになる。

試しに Glances を立ててみる。
Glances は、サーバーのリソース状況を表示するためのサービス。Web UI もあって見やすい。

1. Deployment を作成

Deployments > New Deployment ボタンをクリック。

名前を入力する。

2. Deployment の設定

以下のように入力する。

  • Image
    • nicolargo/glances:latest
  • Environment
    • GLANCES_OPT=-w
      • WebUIで起動できるようにするためのオプション
  • Volumes
    • /var/run/docker.sock:/var/run/docker.sock:ro
      • ホスト側のCPUの使用率とかを取得するためマウントする。

Save する。

3. 起動

Deploy を実行する。

Running になればOK。

192.168.3.14:61208 にアクセスする。

OK!

おわりに

komodo を使うとサクサクとサービスを立てられるからオススメ。

今回の記事ではインストールと基本的な使い方までしか書いていないけど、Forgejo (GitHub) と連携して main ブランチに push されたら自動でデプロイみたいなのもできるから、その辺も記事にしたい。 あと、Dockflare との相性も良いから、それも書きたい。

Link

Last updated on