「本格的にVPNを導入する」の続きです。
先日、VPSを契約してVPNを構築し、どこからでも塾のシステムにアクセスできるようにしました。塾のLANで動いているミニPCにdnsmasqを使って簡易DNSを立てて、リモートからでもローカルからでも、塾のコンピューターにホスト名でアクセスできるようにしましたが、その設定の最中にProxmox実験機がほとんど使われることなく動いているのを思い出しました。そこでこの遊んでいるProxmox機を有効活用してようと思い始めたのが今日のテーマDokkuの導入です。

DokkuはPaaS (Platform as a Service)のHerokuに似たソフトウェアで、ローカルPCでNodeJSで開発したアプリケーションをGit pushするだけでビルド&デプロイしてくれます。
プロジェクトをGit pushすると、こんな感じに動きます。これでWebアプリケーションが立ち上がるわけです。
$ git push dokku main
Enumerating objects: 174, done.
Counting objects: 100% (174/174), done.
Delta compression using up to 20 threads
Compressing objects: 100% (162/162), done.
Writing objects: 100% (170/170), 128.19 KiB | 9.16 MiB/s, done.
Total 170 (delta 15), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (15/15), completed with 4 local objects.
remote: -----> Cleaning up...
remote: -----> Building hello from herokuish
remote: -----> Adding BUILD_ENV to build environment...
remote: BUILD_ENV added successfully
-----> Node.js app detected
-----> Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
NODE_VERBOSE=false
NODE_ENV=production
NODE_MODULES_CACHE=true
-----> Installing binaries
engines.node (package.json): unspecified
engines.npm (package.json): unspecified (use default)
Resolving node version 22.x...
Downloading and installing node 22.19.0...
Validating checksum
Using default npm version: 10.9.3
-----> Restoring cache
- npm cache
-----> Installing dependencies
Prebuild detected (node_modules already exists)
Rebuilding any native modules
rebuilt dependencies successfully
Installing any new modules (package.json)
up to date, audited 84 packages in 827ms
14 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
-----> Build
-----> Caching build
- npm cache
... 中略 ...
remote: =====> Application deployed:
remote: http://hello.apps.zikuu.lan
remote: https://hello.apps.zikuu.lan
remote:
To apps.zikuu.lan:hello
c21ce57..3938591 main -> main
簡単なHelloWorldアプリケーションを作り、ブラウザからアクセスしたのが冒頭のスクリーンショットです。
PostgreSQLプラグインを使えるようにし、データベースへのアクセスもできている様子が下のスクリーンショット。

Web UIがないので、インスタンス管理はDockerコンテナ管理ツールのPortainerで行います。

塾内でアプリケーションを作って遊ぶ(学ぶ)にはこんなので十分です。
調べながらの作業だったので、5時間くらいかかりました。いつものように手順書にまとめて塾生と共有できるようにしています。
JavaScript/TypeScript/Pythonなどによるプログラミングの他に、Gitを使ったCI/CD (Continuous Integration/Continuous Delivery = ソフトウェアのマージからリリースまでの自動化)やProxmoxやDockerなどの仮想化/コンテナ化の仕組みは、現代のプログラマーなら知っていないと困る技術です。
これにAIアシスタントが加わり、ソフトウェアの開発から製品やサービスの配布までを、一人のプログラマーが短期間でこなせる時代になってしまいました。
私も含めて、何でも知っている人などいません。知ろうと思った時がやる時です。「今さら聞けない・・・」などと言わずに、知りたいと思ったらすぐに勉強しましょう。私もそう心がけます。
「Dokkuを導入する」への1件のフィードバック