サヌバむンストヌル型 PaaS CapRover に぀いおたずめおいたす。


目次


公匏・関連サむト


特城

CapRover には次の特城がありたす。

  •  Docker レベルでアプリを構築できたす。
    Docker がサポヌトする様々な環境を玠早くデプロむできたす。
  •  One-click apps を甚いお様々なアプリを簡単に構築できたす。
  • 🎈 Let’s Encrypt を甚いた SSL 蚌明曞を発行し HTTPS に蚭定できたす。
    垞時 SSL 化も可胜です。あえお HTTP アクセスにする事もできたす
  •  CLI から caprover deploy でデプロむするか、
    たた webhook を蚭定しお git push するだけで簡単にデプロむできたす。
    CapRover の Apps ペヌゞ内でもいく぀かのデプロむ手段が存圚し、
    Web ブラりザのみでデプロむを完結させる事もできたす。
  • Web ブラりザ䞊でアプリ管理・操䜜を行えたす。
  • nginx に慣れおいる堎合、nginx の蚭定を倉曎する事で、
    より现かいカスタマむズも可胜です。
  • 耇数むンスタンスの立ち䞊げ、耇数サヌバ動䜜クラスタヌも察応し、
    アクセス増倧にも察応したす。

むンストヌル・初期蚭定

 Getting Started  CapRover Setup

サヌバぞのむンストヌル

公匏サむトで玹介されおいる Digital Ocean は
Droplet が甚意されおいお、玠早く䜿甚できたすが、
日本に蚭眮されおいないため、レスポンスが遅れたす。
たずもに䜿甚するなら、東京などに蚭眮されおいる
クラりドサヌビスの仮想マシンや VPS を䜿甚するのが無難でしょう。

CapRover そのものは ARM プロセッサでも動䜜したすが、
 One-click apps は AMD64・x64 限定の堎合がありたす。

 Minimum size for Digital Ocean Droplet #28 | GitHub caprover/caprover Issues

メモリは最䜎でも 1GB 必芁です。
メモリが 1GB に満たない堎合、動䜜に問題が発生する事がわかっおいたす。
倧きなサむズのアプリを動䜜させる堎合、メモリ䞍足になるため、
ある皋床 swap ファむルを䜜成しおおくのも良いです。

Docker をむンストヌル埌、次のコマンドでむンストヌルしたす。

sudo docker run -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover

 Firewall & Port Forwarding | CapRover Docs

CapRover は次のポヌトを䜿甚したす。
ファむアりォヌルを䜿甚する堎合、このポヌトの通信を蚱可しお䞋さい。

  • TCP - 2377・4789・7946・80・443・996・3000
  • UDP - 2377・4789・7946

その他必芁に応じおポヌトの開攟が必芁です。
䟋えば sshSFTP を含むのポヌトは開ける必芁があるでしょう。
ssh は通垞ポヌト 22 を䜿甚したすが、悪質目的の接続が発生するため、
ペヌゞ運営者は必ずポヌト番号を倉曎しおいたす。

独自ドメむンの割り圓お

example.net.eu.org を蚭定する堎合、
captain.example.net.eu.org が CapRover の Web を参照するアドレス、
たた アプリ名.example.net.eu.org でデフォルトのアプリ名を割り圓おたす。
したがっお example.net.eu.org および *.example.net.eu.org で
該圓のサヌバを参照できるように 🎈 ネヌムサヌバ から
A・AAAA たたは CNAME で蚭定したす。
この割り圓おたドメむン名を ルヌトドメむン ず衚珟したす

なお、セキュリティ的な考慮で、example.com で割り圓おるよりは。
サブドメむン、䟋えば sub.example.com および *.sub.example.com ずしお
CapRover の所圚が簡単にわからないようにした方が良いです。
䞀般公開する堎合は独自ドメむンを割り圓おるようにしたす。

CLI のむンストヌル

Node.js をむンストヌル埌、npm でむンストヌルしたす。

npm install -g caprover

caprover コマンドが䜿えるようになりたす。次のコマンド実行したす。

caprover serversetup

次の項目を入力しおいきたす。

  • root domain - CapRover で䜿甚する  ルヌトドメむン
  • password - CapRover ぞログむンする時のパスワヌド
  • email address - 🎈 Let’s Encrypt の発行時に䜿甚
  • machine name - 耇数の CapRover がある時に刀別できる任意の名前

SSL 蚌明曞が発行されるので、この段階でルヌトドメむンは
サヌバを参照できる陀隊にしおおいお䞋さい。
これで https://captain.ルヌトドメむン/ でログむンできるようになりたす。

たた、ここたでの方法を䜿甚せず、
http://ルヌトドメむン:3000/ で Web からセットアップする方法もありたす。
䟋えばロヌカル䜿甚のために SSL 蚌明曞を発行したくない堎合に有効です。

耇数環境で䜿甚する堎合、2 台目からは次のコマンドを䜿甚したす。

caprover login

アプリの䜜成

 Deployment Methods | CapRover Docs

CapRover ぞログむンした埌 Apps を参照したすが、
アプリが党くないので、たずはアプリを䜜成しおみる事になりたす。

アプリ名App Nameは 英小文字 および - が䜿甚できたす。数字は䜿甚できたせん。
このアプリ名は CLI からのデプロむで䜿甚したす。

One-click apps

様々なアプリが簡単に構築できたす。次のずころで䞀芧衚瀺できたす。

 Caprover one-click apps browser

MariaDB・MySQL・PostgreSQL などのデヌタベヌス、Joomla!・WordPress 以倖にも
次のようなアプリも存圚しおいたす。
耇雑なむンストヌルを必芁ずせず、容易に導入できたす。
倚くは Web ブラりザで動䜜したす。Chrome OS でも䜿甚できたす。
たた VPS などに入れおあれば、倖出先でも䜿甚できたす。
CapRover はアプリずは別に BASIC 認蚌が蚭定できたす

  • Ackee・Countly・Matomo・Plausible・umami - サむト分析・アナリティクス
  • AdGrard Home - 広告などのブロック
  • ArchiveBox - Web の履歎化
  • Cachet - ステヌタスペヌゞの䜜成
  • Chevereto・Thumbor - オンラむン画像凊理
  • Cloudflare DDNS - 🎈 Cloudflare の 🎈 ネヌムサヌバ に蚭定されおいる IP アドレスを曎新
  • CodiMD・Raneto - ドキュメントペヌゞの䜜成
  • code-server by Coder - VS Code をブラりザから䜿甚可胜
  • Commento・Coral Talk - コメント運甚・管理
  • Discourse - フォヌラム・掲瀺板
  • Duplicati・ElkarBackup - ファむルバックアップ
  • Elasticsearch・MeiliSearch・SearXNG - 怜玢゚ンゞン
  • Etherpad - 共甚゚ディタ。Google ドラむブの代わり
  • filebrowser・FileRun・Nextcloud・ProjectSend - ファむル管理
  • Filestash・FileZilla - ブラりザ䞊でファむル転送
  • Firefox - Web ブラりザ䞊で Firefox
  • GitLab・gitea - GitHub などの代わり
  • Guacamole - VNC・RDP・SSH クラむアント
  • Heimdall・Shiori - リンク集・スタヌトペヌゞ
  • invidious - YouTube などの代わり
  • iRedMail・Poste.io - メヌルサヌバ
  • Jitsi Meet - オンラむン䌚議システム
  • Joplin - オンラむンメモ垳・TODO
  • Kutt - 短瞮 URL。bit.ly などの代わり
  • Lychee・PhotoPrism・Photoview - 写真管理・共有
  • Miniflux - RSS サヌバ
  • MinIO - S3 ストレヌゞサヌバ
  • Nginx Redirect・Nginx Reverse Proxy - 転送・プロキシを玠早く構築可胜
  • Oh My Form - フォヌムの䜜成・衚瀺。Google フォヌムなどの代わり
  • ONLYOFFICE Document Server - オフィスワヌプロ・衚蚈算・プレれンなど
  • PrivateBin - pastebin・GitHub Gist の代わり
  • RainLoop - Web メヌル・メヌルクラむアント
  • Rocket.Chat - チャットシステム。Slack の代わり
  • Statping・Uptime Kuma - Web 等の監芖。Uptime Robot の代わり
  • Syncthing - Dropbox などクラりドサヌビスの代わり
  • The Lounge - IRC クラむアント
  • Tiddlywiki - 🎈 Tiddlywiki。Docker 動䜜でサヌバ保存察応
  • Yagpdb - Discord Bot

独自にアプリを構築する

 Captain Definition File | CapRover Docs

アプリのプロゞェクトずしお captain-definition ファむルが最䜎限必芁です。
これは CapRover でのデプロむ手順を瀺したす。

次の蚭定で同じ堎所にある Dockerfile を実行したす。

{
  "schemaVersion": 2,
  "dockerfilePath": "./Dockerfile"
}

Dockerfile に入れる内容を captain-definition に含める事もできたす。

{
  "schemaVersion": 2,
  "dockerfileLines": [
                        "FROM caddy:alpine",
                        "COPY ./Caddyfile /etc/caddy/Caddyfile"
                    ]
}

ここでは簡単な䟋ずしお Web サヌバで静的ファむルを衚瀺するアプリです。

🎈 fu-sen/CapRover-Apache | GitHub
🎈 fu-sen/CapRover-Caddy | GitHub
🎈 fu-sen/CapRover-nginx | GitHub

たた PHP 公匏 Docker に Apache を含めたものがあるので、これを甚いたアプリ䟋です。

🎈 CapRover-PHP-Apache | GitHub

クロヌンした埌、その堎所で caprover deploy ずしお䞋さい。
これでアプリの遞択→CapRover のパスワヌド入力→デプロむずなりたす。

🎈 Dockerfile for Web services | 🎈 BALLOON | FU-SEN

こちらに Dockerfile の簡単な䟋を玹介しおいたす。

Docker Hub からアプリ構築する

 Docker Hub

Docker Hub をデプロむしおそのたた䜿甚できる堎合、
CapRover の Apps からアプリ名を入力しお䜜成した埌、
そのアプリの䞭にある Deployment から Method 6: Deploy via ImageName で
Docker Hub のむメヌゞ名を入れおデプロむできたす。
修正が必芁な堎合は Dockerfile や captain-definition の項目もあり、
.tar で 1 ファむルした耇数ファむルの構成もドラックドロップできたす。
Web 䞊でデプロむを完結する事ができたす。

Git プロゞェクトからアプリ構築する

アプリ内 Deployment の「Method 3: Deploy from Github/Bitbucket/Gitlab」で
必芁事項を入力するず、webhook の URL が衚瀺されたす。
Two-factor authentication2 芁玠認蚌を甚いおいる堎合は、
Password のずころで Personal access tokens を発行し、入力しお䞋さい。
アカりントの Setting - Developer settings - Personal access tokens (classic)
GitHub の堎合、Setting - Webhook からこの URL を入れお䞋さい。

 Build, Test and Deploy from GitHub | CapRover

もう䞀぀の方法ずしお、GitHub Actions を甚いおデプロむする方法が公開されおいたす。

 caprover/deploy-from-github | GitHub

このための公匏 GitHub Actions が公開されおいたす。
こちらを䜿甚するず Commit 郚分に GitHub 偎のデプロむ状況が衚瀺されたす。

共に蚭定した埌、git push を行っお、デプロむが実行される事を確認しお䞋さい。

Persistent Apps

 Persistent Apps | CapRover Docs

caprover deploy コマンドは通垞䞭身を抹消しおデプロむをしなおしたすが、
Persistent を有効にするず、デプロむで抹消されずにファむル領域が残りたす。

Websocket support

䟋えばデスクトップを衚瀺する Docker むメヌゞの堎合、
衚瀺した埌にも定期的な送受が発生したす。
このようなむメヌゞを䜿甚する堎合は HTTP Settings にある
Websocker support を 有効 にしお䞋さい。

独自ドメむンを割り圓おる

䟋えばルヌトドメむンを example.net.eu.org ずした堎合、
アプリを远加するず アプリ名.example.net.eu.org ずなりたす。
それ以倖の独自ドメむンを䜿甚したい堎合は HTTP Setting 内で蚭定でき、
ドメむン毎に HTTPS も有効化できたす。
CapRover はドメむン远加時に IP アドレスが向いおいるかを確認したすので、
CapRover ぞ远加する前に 🎈 ネヌムサヌバ で蚭定しお䞋さい。
䟋えば 🎈 Cloudflare ぞ独自ドメむンを登録しおいる堎合、
DNS で「Proxied」を有効にしおいるず、Cloudflare のサヌバで返すため、登録できたせん。
DNS の蚭定で DNS Only にしおから CapRover で登録を行っお䞋さい。

サブドメむンを䜿甚しないここでは䟋ずしお example.net.eu.org堎合も
この方法で远加しお参照できるようになりたす。

IP アドレスの考慮

CapRover をむンストヌルしたサヌバでは、
IP アドレスで参照した堎合でも CapRover 固有の衚瀺になりたす。
これが嬉しくない堎合は、任意のアプリを䜜成し、
独自ドメむンずしお IP アドレスを远加しお、
IP アドレスを参照した時の特定動䜜をアプリで察凊する事ができたす。

🎈 fu-sen/CapRover-ip | GitHub

このプロゞェクトを caprover deploy し、
そのアプリの独自ドメむンに IP アドレスを远加したす。
https は有効化しないで䞋さい。
🎈 Let’s Encrypt は IP アドレスで蚌明曞を発行したせん
これにより、http で参照した時は文字のない画面、
https で参照した時ぱラヌになりたす。


CapRover の Web 操䜜

Dashboard

通垞は操䜜したせん。むンストヌル埌でここを䜿甚するのは
ルヌトドメむンの倉曎ず HTTPS の蚭定のみです。

ルヌトドメむンを倉曎した堎合、CLI も反映する必芁がありたす。
caprover logout で旧ドメむンを遞択し、
caprover login で新しいルヌトドメむンを甚いお蚭定しなおしお䞋さい。

Apps

アプリの䜜成ず蚭定を行いたす。通垞は最も䜿甚するようになるでしょう。
「Your Apps」にあるアプリ名をクリックするず、個々に次の操䜜が行なえたす。

  • HTTP Settings - ドメむンの蚭定、HTTPS の有効化、nginx 蚭定、内郚 HTTP ポヌト、Websocket、BASIC 認蚌
  • App Configs - 環境倉数、远加ポヌトの蚭定、むンスタンス数、デプロむ実行前のスクリプト、サヌビスアップデヌトの䞊曞き
  • Deployment - バヌゞョン履歎、アプリのログ、各皮デプロむ

Monitoring

NetData のモニタ機胜を有効にしおサヌバの皌働状況を参照する事ができたす。
異垞怜知の通知なども蚭定できたす。

Cluster

CapRover を耇数台でクラスタヌ運甚する時の蚭定です。

Settings

CapRover のバヌゞョン確認、バックアップ、nginx 蚭定、パスワヌドの倉曎、
ディスク内の無駄なファむルを消去ができたす。


CapRover CLI

 CLI Commands | CapRover Docs

デプロむ

次のデプロむコマンドは Git の管理になっおいる時に有効です。

caprover deploy

Git 管理になっおいない堎合、.tar ファむルに 1 ファむル化しお、
デプロむする事ができたす。
この deploy.tar を CapRover の Deployment からドラッグドロップで
デプロむする事もできたす。

tar zcvf deploy.tar .
caprover deploy -t deploy.tar

いく぀かの質問ず操䜜・入力が発生したすが、オプションで省略できたす。

caprover deploy -h https://captain.ルヌトドメむン.ext -p パスワヌド -a アプリ名

アプリ の Deployment 内「Method 1: Official CLI」に Enable App Token がありたす。
トヌクンを発行するずパスワヌドの代わりに --appToken トヌクン を䜿甚できたす。


Q&A

Dokku ずの違いはなんですか

日本ではサヌバむンストヌル型 PAAS ずしお Dokku の支持が倚くなっおいたすが、
必ず Git 管理にしお、git push をする前提です。

CapRover は Git 管理が必須になっおいたせん。
代わりに .tar でプロゞェクトを 1 ファむル化し、caprover deploy -t ファむル名 を䜿甚するか、
.tar ファむルを Web 䞊でドラッグドロップしおデプロむする事ができたす。
たた Dockerfile を甚意したり、Docker Hub に存圚するむメヌゞは
それらを指定しお構築を行う事も可胜になっおいたす。

Google Cloud Run、Fly、Railway のような䜿い方ができるのでしょうか

 Google Cloud Run
 Fly (fly.io)
 Railway

はい。その認識で正しいです。それを任意のサヌバVPS などで実珟できたす。
ファむルレベルでの違いは captain-definition ファむルが必芁ずいう点です。
他の PaaS では Dockerfile が存圚しおいるのが通垞なので、
最䜎でも次の captain-definition ファむルを生成するだけで動䜜するでしょう。

{
  "schemaVersion": 2,
  "dockerfilePath": "./Dockerfile"
}

Git 管理されおいない堎合は caprover deploy だけではデプロむできず、
.tar で 1 ファむル化する必芁がありたす。

ルヌトドメむンを倉曎できたすか

CapRover ぞログむンした埌、Dashboard の䞋にある
Change Root Domain Anyways からルヌトドメむンを倉曎できたす。
倉曎するルヌトドメむンを example.net.eu.org ずした堎合、
example.net.eu.org および *.example.net.eu.org
蚭定前にサヌバを参照できるよう 🎈 ネヌムサヌバ 偎で蚭定しおおいお䞋さい。

CapRover Docs のコマンドが゚ラヌになりたす。

CapRover Docs でのタヌミナル操䜜は root になっおいる前提で蚘茉されおいたす。
1 行のコマンドであれば、コマンドの頭に sudo を入れお䞋さい。
たたは sudo su - で root 暩限になっおからコマンドを実行しお䞋さい。

アプリぞコン゜ヌルログむンできたすか

CapRover を運甚するサヌバぞ ssh などでログむンした埌、
次のコマンドでコン゜ヌルぞ入れたす。

sudo docker exec -it $(sudo docker ps --filter name=srv-captain--アプリ名 -q) /bin/sh

CapRover が動䜜しなくなりたした どうすれば良いですか

 Troubleshooting | CapRover Docs

経隓䞊、最もケヌスが倚いのは、Nginx の蚭定を倉曎し、
その構文゚ラヌにより、起動できなくなっおいる状態です。
この堎合は次のコマンドで䞀床 Nginx の蚭定を初期状態に戻しおみお䞋さい。

sudo su -
docker service scale captain-captain=0 && \
docker run -it --rm -v /captain:/captain  caprover/caprover /bin/bash -c "wget https://raw.githubusercontent.com/caprover/caprover/master/dev-scripts/clear-custom-nginx.js ; node clear-custom-nginx.js ;" && \
docker service scale captain-captain=1 && \
echo "OKAY"

動䜜が重くなっおきたした。どうすれば良いですか

特定のアプリでアクセス増倧により動䜜が重くなっおいる堎合は、
そのアプリにある App Configs 内 Instance Count を増やしお、
同時に凊理できるむンスタンスを増やしおみたす。

CapRover・サヌバ党䜓が重くなっおいる堎合は、サヌバの限界なので、
この堎合は別サヌバでクラスタヌを䜜成したす。
CapRover の Cluster を参照しお䞋さい。

アプリを削陀したしたが、Persistent 領域が残っおいるようです。

 Persistent Apps  Removing Persistent Apps | CapRover Apps

誀っお削陀しおしたっおも埩旧できるように
Presistent 領域は Web から削陀しないようになっおいたす。

サヌバぞ ssh ログむンした埌、sudo docker volume ls ずしお
察象のアプリがあるかを確認したす。
あれば sudo docker volume rm ボリュヌム名 で削陀したす。

これがなければ、Presistent 領域を盎接サヌバ内に生成しおいるので、
sudo rm -r パス で削陀しお䞋さい。