Raspberry Pi で GitHub 的なやつ

最近コードを書くこととはご無沙汰だし、cssとかを除けば、書く予定も特にないのだが、Raspberry Pi の設定ファイルをいじくっていて、やっぱり履歴管理が欲しいなと思ったので、Git で管理していた。

特に ssh の運用で問題は無かったのだが、なんとなく GitHub 的な Web UI が欲しくなったので、Raspberry Pi で動かすことにした。

検討の対象として上がったのは、GitLab, GitBucket, gogs の3つ。

このうち、GitLab に関しては、事前に Windows マシン上の Docker で試したところ、規模が大きすぎる感じがしたので、除外。

GitBucket と gogs については、動かしてみた。

GitBucket に関しては、Java VM だけ入っていれば、とりあえず動く。 サーブレットエンジン上で動かすのがセオリーっぽいけど、本体の war ファイルに Jetty がバンドルされているので、これでも動かせる。

Raspbian では、Java VM は OpenJDK と Oracle JDK がパッケージに入っていて、どちらも選べるが、Oracle JDK の方が動作が軽いので、こちらがお勧め。

動かしてみた感じ、少し重い感じもするが、個人で使用する分には問題なく動く。

メモリの使用量もそれほど凶悪ではない。 Javaのヒープメモリサイズは、Jetty の分も入れても 96MB (-Xms96M -Xmx96M) くらいにしておけば動く感じ。 -verbose:gc を見ていると 64MB でもぎりぎり動きそうだが、落ちたら嫌なのでこの辺か。

Java サーブレットは、以前の仕事で使っていたし、作者が日本人ということもあって好感が持てたが、その後、gogs を試して、その軽さに驚愕し、結局使わなくなった。

gogs も、インストールは簡単。Raspberry Pi 用バイナリ (v2 / armv6) も用意されているし、基本、展開するだけなので、とても簡単。

で、サクサク動く。メモリは数10MBくらいしか使わない。

フォントだけは気に入らなかったので、Custom Template の設定はした。

 

Raspberry Pi で GitHub 風システムを立ち上げるなら、 gogs がお勧めである。

Raspberry Pi で Let’s Encrypt

Raspberry Pi で Let’s Encrypt しようと思った話。

Raspberry Pi 上で動作している nginx で HTTPS が使う必要が出てきて、オレオレ証明書を使っているんだけど、最近は警告が激しくて使いにくい。
それで、無料の認証がもらえる Let’s Encrypt を試してみた。

必要となるツールは certbot というやつだけど、Raspbian ではパッケージに入っていないようだ。なので、Certbot のホームページにある「Debian その他 nginx」の方法を試した。
https://certbot.eff.org/#debianother-nginx

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

sudo ./certbot-auto certonly --standalone -d www.sakisan.mydns.jp

基本的に、この方法で問題ない。はず。

だが、ドメインが mydns.jp を使っている都合で、
There were too many requests of a given type
と出てしまい。先に進まない。 どうも、mydns.jp ドメイン全体の制限が掛かってしまっているようで、なかなか厳しいことになっている。

海外だと格安のやつもあるみたいだから、検討するか。。。

Docker ネタを…

Raspberry Piで、Dockerというネタを書こうかなと思ったが…。

動作自体は64Bitの2B, 3Bだったら問題ないようだけど、CPUがARMなので、ほとんどのイメージがx86_64なDockerだと、結局Raspberry Pi用のイメージを使うという世界になってしまうようで、あまり意味が無いからやめた。

まあ、仮想コンテナとよりも、アプリケーションコンテナの分だけ、ハードウェアを揃えてもいいような世界だしね。。。

スティックPCとかでやったらいいようなネタかも。

Raspberry Pi Zero のパフォーマンス

数値データとかは何にもないです(笑) 感覚的な話。

Raspberry Pi Zero W が届いたので、普段 Raspberry Pi 3B で動かしている、このサイト(笑)を Micro SD だけ入れ替えて起動してみた。

結果、問題なく起動し、サイトも 3B よりかは遅いものの、同時アクセスされることがあまりない、備忘録・日記レベルのサイトならば問題なく動く。という感触。

起動はちょっと時間が掛かるが、それでも、Windows 7 以前の Windows マシンよりかは早いくらい。

メモリの使用状況だが、若干、スワップが発生していて、パフォーマンス的には気にならなかったものの、運用するなら Micro SD の寿命が気になるかなと思う。

処理速度的には遅いものの、省電力、低発熱はすばらしく、iPhone の AC アダプタで問題なく動くし、発熱も 3B が 53℃前後に対して、Zero W は39℃程度と、かなり良好。

悩むけど、やっぱり 3B で継続かな。。。 Zero で本格的に運用しようとすると、結局、ハブだのケーブルだのだらけになって、本体は小さいのに、邪魔な感じになってしまうから。

Zero は USB で PC に繋げて遊べるので、持ち運べるおもちゃになりそう。

Raspberry Pi Zero /W で USB ケーブルで Windows に接続

Raspberry Pi Zero /W は、USB ケーブルで直接 Windows と接続できる。
名前の解決にBonjour サービスが必要になるので、あらかじめ iTunes をインストールしておく必要がある。 私の場合はiTunesを使う目的で最初から入っていたが。  (iTunesじゃない方法もあるらしい)

ssh で接続するまでの手順をまとめると、

Raspbian の入った、Micro SD カードを用意する。

Micro SDのルートディレクトリにあるファイルを編集

config.txt に以下の行を追加


dtoverlay=dwc2

cmdline.txt の行の中間、rootwait の次くらいに以下の内容を追加。 1行の中間に挿入し、改行はしてはいけない。


modules-load=dwc2,g_ether

ルートディレクトリに ssh という名前の空ファイルを作る。 拡張子は無し。

編集が終わったら、Micro SD をデバイスの取り外しで取り外して、Raspberry Pi Zero にセット。

PC と USB ケーブルで接続。 このとき、電源側じゃなくて、 USB デバイス用の方に接続する。
LEDの点滅が収まるまで待つ。

PC 側はドライバがいるので、以下のサイトからダウンロードしておく
http://domotique.caron.ws/cartes-microcontroleurs/raspberrypi/pi-zero-otg-ethernet/
フランス語でビビるが “RPI Driver OTG.zip” が落とせればOK。
展開しておく。

PCのマイコンピュータを右クリックし [管理]-[デバイスマネージャ]
ポート(COMとLPT)から、
USBシリアルデバイスを探す。 (COM 4)みたいなのがそう。 数字が4かどうかは環境に依存する。
右クリックし、[ドライバの更新]-[コンピューターを参照してドライバーソフトウェアを検索]
先ほどの展開フォルダを指定し、ネットワークアダプターに[USB Ethernet/RNDIS Gadget]が入ればOK。

コマンドプロンプトで、


ping raspberrypi.local

でつながればOK。 反応がない場合は、手順を再確認しよう。

ここまでくれば、PuTTY などで、raspberrypi.local で、いつもの pi ユーザーでログインできる。

以下の手順で Wifi の設定をすれば、次回以降は無線LANで接続できる。


sudo sh -c 'wpa_passphrase SSID パスフレーズ >> /etc/wpa_supplicant/wpa_supplicant.conf'

wpa_supplicant.conf の平文パスワードは消しておいた方がいい。

接続確認は


sudo ifdown wlan0
sudo ifup wlan0
ifconfig

で、できる。

その後、Macでも試したが、Macで接続する場合は、ドライバが要らないので、楽だった。