リモート先で起動させたdevcontainerの特定コンテナにポートフォワードする手順

探し方が悪いのか、リモート先で起動させたdevcontainerの特定コンテナにブラウザアクセス方法が見つからず、
いろいろ触ってわかったので、忘れないように残しておく。

まず、作業マシンのvscodeからリモートのマシンにホスト接続してdevcontainerを起動する。 (ここまでの手順については割愛)

ここでリモート先のdevcontainer設定は以下の通りとする。 .devcontainer/devcontainer.json

{
    "name": "sample",
    "dockerComposeFile": ["../docker-compose.yml", "docker-compose.yml"],
    "service": "dev",
    "workspaceFolder": "/workspace/sample",
}

docker-compose.yml

version: '3'
services:
  nginx:
    image: nginx:latest
    container_name: nginx
    hostname: nginx
    ports:
      - "80:80"

.devcontainer/docker-compose.yml

version: '3'
services:
  dev:
    image: ubuntu
    container_name: dev
    hostname: dev
    volumes:
      - ./:/workspace/sample
    command: sleep infinity

devコンテナ内でコード書いて、nginxコンテナ上で公開しているシンプルな構成

ここから作業マシンのブラウザでリモートのnginxコンテナに接続させる。
手順は以下の通り、

  1. コマンドパレットを起動して(macならcmd + shift + p)、「Forward a port」を選択
  2. 入力フォームに接続したいコンテナ名とポートを入力
    今回の例だと「nginx:80」と入力

ここまでで一旦、作業マシンのブラウザでlocalhostと入力するとnginxコンテナのトップページが表示されるようになる。

ローカルの80以外でフォーワードさせたい場合は、
vscodeのポートタブを開いて変更したい設定を右クリック、メニューから「Change Local Address Port」を選択して、
ポート番号を入力することでポート変更できる。

以上

Google Cloud Buildの実行に必要なロール

サービスアカウントのロール設定なんてプロジェトごとに初回のみですぐ忘れるのでメモっておく

※ 2023年05月15日時点の設定

Google Cloud Buildの実行に必要なロール

  • Cloud Build サービス アカウント
  • ストレージ管理者
  • ログ閲覧者
  • 閲覧者 ← gcloudコマンドを実行したコンソール側でログの出力が不要なら必要ない。

raspberry piにGo(Go言語)をインストール

オフィシャルのインストール手順は下で確認してもらって

go.dev

raspberry pi向けに簡易化
インストールするバージョンは以下で確認します。

go.dev

執筆時の最新バージョン(1.20.2)でインストール

# バージョン番号を入れます
export GO_VERSION=1.20.2 

# goディレクトリを/usr/local配下に展開します
# ※ ダウンロードに時間がかかります
curl https://dl.google.com/go/go${GO_VERSION}.linux-armv6l.tar.gz | sudo tar zx -C /usr/local

# pathを通します
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
. ~/.bashrc

# バージョンを確認します
go -version

logはこんな感じ

$ export GO_VERSION=1.20.2
$ curl https://dl.google.com/go/go${GO_VERSION}.linux-armv6l.tar.gz | sudo tar zx -C /usr/local
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 93.2M  100 93.2M    0     0   451k      0  0:03:31  0:03:31 --:--:-- 1624k
$ echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
$ . ~/.bashrc
$ go version
go version go1.20.2 linux/arm

あ〜、raspi 4まだたけぇ〜

chromium-browserの起動オプションで表示タイプをコントロールしてみる

raspberry piでブラウザアプリを使用した際、小さい画面でより多く情報を表示するためにchromium-browserの起動オプションを調べてみた。

通常起動(オプションなし)

$ chromium-browser http://raspberrypi.com

うん、見慣れた画面

URLバーなし起動(--app)

$ chromium-browser --app=http://raspberrypi.com

ツールバーなしで起動された

フルスクリーン起動(--start-fullscreen)

$ chromium-browser --start-fullscreen http://raspberrypi.com

ツールバーごと消えたフルスクーン状態。
解除はF11、またはマウス操作 ※フルスクリーンの解除のみ

キオスク起動(--kiosk)

$ chromium-browser --kiosk http://raspberrypi.com

フルスクリーンに似てる。F11では解除できない。
終了はctrl + F4 ※ブラウザごと終了

ウィンドウサイズ指定(--window-size)

$ chromium-browser --window-size=512,480 http://raspberrypi.com

サイズ指定は、横px,縦pxで指定になります。--appオプションとの組み合わせも可能です。

ほかのオプションも気になったら追記します。

でわ

QNAP NASのDockerにRemote API経由で接続してみる

QNAP社のNASにはDockerを使用できる端末が数多く存在します。
今回はこのQNAPのNAS上で動作するDockerにRemote APIでアクセスしてみます。

私の自宅で稼働しているNASはts453beでメモリ増設できるタイプです。
メーカー表示は8GBですが16GBまでいけます。CPUスペックは低めですがメモリを増やすことでコンテナを多く起動することが出来ます。

今は同タイプの新製品が出ているようです。

まずは、webコンソールからContainer Stationを起動し、Preferences > Docker Certificateタブに移動します。

移動先でDownload CertificateのDownloadボタンで証明書(zip)のダウンロードとSet Environmentでポート(イメージだと2376)を確認します。

今回、QNAPのDockerに接続するクライアントはportainer.ioを使用します。

www.portainer.io

portainerにログインし、Settings > Environmentsを開き、「Add environment」ボタンでセットアップに進みます。
Docker Standaloneを選択し、「Start Wizard」で次に進みます。

次の画面で接続方法にAPIを選択します。

Nameは自分がわかるものを適当に入力し、Docker API URLにはQNAPサーバのホスト名 or IPアドレス + 先程確認したport番号入れます。

ex) 192.168.1.20:2376

TLSのトグルをオンに切り替え、QNAP側のwebコンソールからダウンロードしたzipファイルを解凍し、証明書ファイルを設定します。

  • TLS CA <= ca.pem
  • TLS <= cert.pem
  • TLS key <= key.pem

設定したら、「Connect」ボタンで接続確認が取れたら追加完了です。

クライアントの接続手順はportainerになりましたが、他のクライアントでも同様の接続方法で行けると思います。

では

壁に穴を開けずに壁掛け型のモニターアームを設置してみた

https://drive.google.com/uc?export=view&id=11acMSwWKe5baOdS9yw898OLWYQHU_2Qh

壁掛け型モニターアームに憧れる、欲しいでも壁に穴を開けるのはちょっと… って人へ(私もその一人)
DIY初心者が壁に穴を開けずに壁掛け型のモニターアームを設置してみました。
初心者なので名称、用語、部品の使用方法を間違っている可能性があります。間違っていたらコメントでご指摘ください。

では、早速

設置場所は私の作業部屋である2.5畳のウォークインクローゼット(WIC)
用意したものは以下

  • 壁掛け型モニターアーム(Amazonベーシックの壁掛け型モニターアーム)
  • Walist 突っぱりジャッキ
  • SPF材 x 1本
  • ボルト(M8 60mm) x 2本
  • ナット(M8) x 2個
  • 平ワッシャー x 2枚
  • ゴムワッシャー x 2枚

以上です。
モニターアーム、Walist 突っぱりジャッキ以外はどこのホームセンターでもすぐ手に入ります。

この中で壁に穴を開けずに壁掛けを実現する主役がSPF(Spruce/トウヒ、Pine/パイン、Fir/ファーの頭文字)材です。 SPF材と言われてもイメージ付かないですが、2x4(ツーバイフォー)と言われればイメージが付く方も多いと思います。
2x4はSPF材のサイズの一つです。

SPF材について詳しくは下のサイトで紹介されています。

diyclip.roymall.jp

今回はこのSPF材にモニターアームの土台を取り付けて、Walistシリーズの突っぱりジャッキで壁に設置します。

購入するSPF材ですが、購入前に床と天井の高さも事前に調べておく必要があります。
私が使用するWICは床から天井まで2490mmあるのでそれを超えるSPF材を購入する必要があります。
店頭では長さ(高さ)がフィート表記となっているのでフィートで確認しておいたほうが良いです。
あと、購入時に気づいたのですが、SPF材は曲がり強く出てる物や傷が付いているもの物も多かったので、しっかり比べて選ぶのが良いです。

余談ですが、今回は私がDIYに至った最大の理由は、年始セールでレーザー距離計をたまたま安くで手に入れたからです。
これ、メジャーだと気にするたわみや水平を気にする必要なく正確に測れるのですごい便利です。

話は戻って、
SPF材は長さは2フィート単位で売られているので、床から天井まで高さより長いものを購入し、必要な長さまでカットして使用することになります。
ホームセンターでは木材のカットサービスを行っているところがあるのでそれを利用すると楽です。
長さはWalistの突っ張りジャッキを挟むことになるので「床から天井までの高さ(mm)-60mm」の長さを選択します。
私の部屋だと2490mm-60mmで2430mmになり、8Fが2438.4mmとなるのでカットは不要でした。

購入したSPF材は壁に設置する前にモニターアームの土台となる部分を付けてしまいます。
通常、Amazonベーシックの壁掛け型モニターアームに付属するネジは8cmを超える長さがあり、 SPF材の2インチ面には設置は出来ますが、6インチ面に使用するには長すぎるため付属のネジではなく今回はM8 60mmのボルトを使用して設置します。

ボルトでの固定は、SPF材に8mmの穴をドリルで開け、壁側となる面(土台の逆面)からボルトに平ワッシャー ⇒ SPF材 ⇒ ゴムワッシャー ⇒ モニターアームの土台の順で通しナットで固定します。ここでナットは緩み防止対応のナットがあるのでそれを使用すると締め直しの手間が減ります。

以下、実際の作業写真。

穴開けの位置は説明書通りに位置どりを行います。 https://drive.google.com/uc?export=view&id=1v58UT3Y4Q79qILnL5tukMGakkvOa17HL

ここからは説明書の手順から外れて、通常ネジを刺すところに8mmのドリルで穴を開けます。 https://drive.google.com/uc?export=view&id=1tflz5u9rOpV13D6xufga537U0fioRT9L

あとは土台を設置する後ろ側からボルトを通して、ナットで止めたら土台の設置完了です。 https://drive.google.com/uc?export=view&id=1QZ7ZqGfIH0Gefw_wIsdYkieCG2ghESFq https://drive.google.com/uc?export=view&id=161RAeNAJHTpKyALCt1AhIixwRu4MjjbB https://drive.google.com/uc?export=view&id=1iLBBD2XBD_dX6JtN6X08ghAogyweVxc4 https://drive.google.com/uc?export=view&id=1gNv6nPGKWAN7-3tvqx74RNRRPq1b7vrF

あとは壁に設置して、アームとモニターを接続すれば壁に穴を開けずに壁掛け完了です。 https://drive.google.com/uc?export=view&id=1wDK_7P80vM_amtcLOefXgKnMNa8MclAG

以上です。
設置にかかった費用はモニターアームは以外は大体4,000円くらいで、実作業時間は一人で2時間程度でした。 木材のカットやドリル作業は、ホームセンターのカットサービスやDIYコーナーが付いている店舗を見つけることで器具を準備する必要もありませんでした。

でわでわ