BNBのプログラミング勉強記録

ガチのプログラミング初心者が駆け上がっていくブログ

とにかく安価かつ手軽に自分のWebサービスを公開するならVPSが最適なのかな

結論から書くと

調べたり試したりしてみた範囲内では、Kagoya cloud VPSにDockerを導入するのが最も手軽かつ安価だった。ただ、herokuやAWSなど色々試してきたり、ターミナル等のコマンドラインで少しばかりいごいごする知識があるのが前提ではあるので、これを「手軽」と呼んでいいのかは、自分でも少し疑問に思う。

VPSとは

あえて調べずに書くが、「CPUやメモリやOSを指定して、手軽にサーバーが使える」サービス。厳密には色々あったと思うけど。これを契約して、そこに前述のCPU等を指定したら、すぐにサーバーが使える。サーバー上で何かをインストールしたり、Dockerを起動させたりする際は、コマンドラインを使う。ブラウザ上のVPSの管理画面で使うこともできるが、基本はMacならターミナル、WinならコマンドプロンプトPowerShellとかGitBashかも)、あるいはWin/Mac共通だとVSCodeでコマンドを使うことになると思う。これらの、「VPS管理画面」以外のコマンドラインツールは、以下「ターミナル等」と記載する。

ターミナル等でどうやってVPSにアクセスするのか

俺のようなIT素人だと、そもそも「え、管理画面以外からアクセスできるんや!」ってなるんですわ。なんでできるか。SSLを使うから。SSLとは何か。すまん、概念はなんとなく分かってるつもり(公開鍵と秘密鍵でうまいこと通信)だが、説明は省く。とにかく、SSLで接続する。やり方については、どのVPSサービスも分かりやすいマニュアルを用意してくれているのでそれに従えばOK。

例えば俺の使ってるkagoyaだと、ターミナル等で所定の文字列「ssh -i 秘密鍵までのパス root@VPSIPアドレス」を入力するとターミナル等がVPSに繋がり、以後、ターミナル等で入力するコマンドは、自分の普段使っているコンピュータに対してではなく、契約したVPSに対して命令するものになる。

VSCodeだと、普段はアプリのフォルダを開いていごいごするが、リモートエクスプローラーという拡張機能を使ってSSHに接続し、VPS上のフォルダを開くことができる。基本はこちらでコードをいごいごして、コンテナを起動したりログを見たりはターミナル等でSSH接続して見るのがいいと思う。

ここに至るまで

その1 heroku

これは、自分のGithubの任意のリポジトリと連携させて、それをすぐ動かせるサービス。昔は無料だったらしいが、今は有料。執筆時点での最安の使い方は(以下月額)、基本料金5ドル、JawsDBという拡張機能でデータベース容量5MBまで、これが無料、計5ドル。執筆時点でざっくり750円。なお、よく紹介されてるheroku拡張機能のHeroku Postgresは1アプリごとに5ドルかかる。俺はそのことを忘れて練習用アプリ4つに適用していたことがある。請求を見てビビった。というか、JawsDBが無料なの、かなり後半に知ったぞ。

その2 AWS

なんか主流っぽいので頑張って覚えた。構成はECS、RDS。前者がコンテナをそのまま動かせるやつ、後者がデータベース。平均して13ドル(1900円)掛かっていた。ほとんど(11ドルくらい)がECSの料金。これを安くできんかなと思い、色々調べていた

その3 Kamal

Railsの作者が作ったサービス。ただ、動かし方が理解できず、その中で「自宅サーバーとかVPSがあれば動くっぽい」ということは理解できた感じ。今だと少しは理解できたので、そのうちやるかも。

その4 VPS+Dokku

前項でVPSの存在をうっすら知り、色々調べていた際に、Dokkuというものを知る。VPS上にインストールすることで、自分のVPSで「herokuみたいなやつ」使い放題!という夢のようなものである。VPSを契約し、初期設定としてOSのインストールと併せてDokkuのインストールまでやってくれるVPSサービスがあったので、これ幸いとばかりにインストール、Dokku起動、起動、起動・・・。あれ?マニュアル通りなのになぜか動かない、等いろいろあった。

結局、何とか動かせた、かと思いきやherokuと微妙に違う点が多々あり、デプロイはできるがherokuビルドパック(herokuのサーバー上にインストールしないといけないものが、ビルドパックとして用意されている。画像処理とか。)がそのまま使えない。それ故、herokuでは動いていたのにVPS上では一部の機能が動かない、等の不満があり、「これだったらコンテナをそのまま動かした方がシンプルでよくないか?」と思ってしまった。

その5 VPS+Docker

現状がこれ。VPS上に、git cloneで自分のアプリを持ってきて、次にDockerをインストールし、あとは自分のアプリのcomposeを起動するだけ。これだとURLがIPアドレスのままなのでカッコ悪いよね。なので、公開するとしたらドメインを取ってDNSを設定したり、SSL化(親切な人がcomposeの書き方をネットに挙げてくれてる)などやる必要はあるが、割とすんなりできるはず。少なくともDokkuよりは遥かに手軽だった。

なおVPSは、さくら、conoha、indigo、XServer、kagoyaと使い、kagoyaに決めた。500円。さくらはお試し期間があるのだが、何かを適用するために(DNSだったかな?)は本契約する必要があり、その最低利用期間が3ヶ月。前のめり過ぎて、それに気づかず契約しちゃったよ。よく読んでない俺が悪いんだが、なんか悪質だなあと思った。あと、XServerはお試し期間がない。なので、「とにかくVPSというものを体験してみたい」という俺のような人は、さくらとXServerは避けるのが無難と思います。この辺りは別記事を書きたい。

課題

バックアップ。俺はほぼ知識ゼロなので、これから勉強です。