komodoをインストール
はじめに
最近、自宅サーバーをいじってセルフホストなサービスを立てたりして遊んでいる。
自分の場合は、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_PASSWORD | openssl -hex 16 で置き換えた。 | データベースのパスワード |
TZ | Asia/Tokyo | タイムゾーン |
KOMODO_INIT_ADMIN_PASSWORD | openssl -hex 16 で置き換えた。 | 初期管理者パスワード |
KOMODO_WEBHOOK_SECRET | openssl -hex 16 で置き換えた。 | Webhook認証用シークレット |
KOMODO_JWT_SECRET | openssl -hex 16 で置き換えた。 | JWT生成用シークレット |
3. 起動
docker compose -p komodo -f mongo.compose.yaml --env-file compose.env up -d4. アクセス
http://192.168.3.14:9120 にアクセス。
ログインユーザー、パスワードは compose.env で設定しているものになる。
KOMODO_INIT_ADMIN_USERNAME=adminKOMODO_INIT_ADMIN_PASSWORD=xxxx

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

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 をクリック。

表示されたモーダルに Stack の名前を入力する。
- Name:
nginx(何でもOK) - Server: Local

2. Stack の設定
Choose Mode で UI Defined を選択する。

Compose File の入力欄に compose.yaml を記載する。
services:
nginx:
image: nginx:latest
container_name: my-nginx
restart: unless-stopped
ports:
- "80:80"Save する。
3. 起動
Deploy を実行する。

Running になればOK。

192.168.3.14 にアクセスしてみる。

こんな簡単にコンテナをさくっと起動できる!
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 との相性も良いから、それも書きたい。