投稿者「」のアーカイブ

俺 について

anonymous programmer

GAE Standard環境のNode.jsでリバースプロキシ構築

SSLのリバースプロキシが欲しかったのでメモ

HTTPS -> GAE (myproject.appspot.com) -> HTTP -> GCE (198.51.100.1:8080)

という構成。

npm初期化してhttpとhttp-proxyをインストール

$ npm init
$ npm install http --save
$ npm install http-proxy --save

で、下記のファイルを用意

app.yaml

runtime: nodejs8

index.js

const http = require('http');
const httpProxy = require('http-proxy');
const port = process.env.PORT || 8080;
httpProxy.createProxyServer({target: 'http://198.51.100.1:8080/'}).listen(port);

package.json
package.jsonはnpm initで作るとして、起動時にindex.jsを実行したいので下記のようにscriptsフィールド内でindex.jsを指定する。

  "scripts": {
    "start": "node index.js"
  },

あとはこれをAppEngineにデプロイ。

$ gcloud app deploy

そしてSSLで https://myproject.appspot.com/ にアクセスするとリクエストが http://198.51.100.1:8080/ にフォワードされる。

GCE Ubuntu: bootディスクサイズの増やし方

GCE上のUbuntuマシンのHDDサイズを増やした時のメモ。

ディスクの空きが足りなくなったので、Cloudコンソール画面でサイズを増やしたあとに下記のコマンドを実行。

$ sudo growpart /dev/sda 1
$ sudo resize2fs /dev/sda1

その後、df -hして空き容量増えてればOK。

公式ドキュメント:
永続ディスクの追加またはサイズ変更  |  Compute Engine ドキュメント  |  Google Cloud

Ubuntu: パスワードなしでsuとsudo可能にする

会社のUbuntu鯖で作業した時のメモ

1. まずはwheelグループを作成する

$ sudo addgroup wheel

ユーザー「orenomemo」をwheelグループに追加する。

$ sudo usermod -aG wheel orenomemo

 

2. パスワードなしでsu出来るようにする。
/etc/pam.d/su を編集して下記を追記

auth sufficient pam_wheel.so trust group=wheel

 

3. パスワードなしでsudo出来るようにする。
visudoコマンドを使って末尾に追記

$ sudo visudo


%wheel ALL=(ALL) NOPASSWD:ALL

追記後、Ctrl+o > Enterで保存、Ctrl+xでエディタを終了
 

これでsuとsudoがサクサクです。

Jumper Ezbook 3 Pro に Xubuntu 18.04 をインストール

Xubuntu 18.04をEzbook 3 Proにクリーンインストールしたのでメモ。

1. インストールUSBを作る

本当は16.04上でUnetbootinを使ってインストールUSB作ろうとしたが、操作誤ってMBRを消してしまった…
という訳で不本意ながらMac上でインストールUSB作った。

作り方はこのとおり。balenaEtcherというツールを使う。
Create a bootable USB stick on macOS | Ubuntu tutorials

Secure BootとFast Bootをオフ

起動時にDEL or ESCを押してBIOSに入る。
で、Secure BootとFast BootをDisableにする。
(元々そうなってたんだけど、メモ)

USBから起動してインストール

これでUSBさして電源ONでXubuntuインストーラが起動します。
あとはインストールするだけ。
16.04の時はインストーライメージをRespinして、Windows上でREFindインストールしたりとえらい手間が掛かったけど、18.04では拍子抜けするくらいインストールが簡単になった。

ついでにもう使わないWindowsも消去して、Ezbookを完全にXubuntuマシンにした。
パーティション設定はカスタムにした。適当に。
MBRは/dev/mmcblklpに配置。

その他はこんな感じで。
/dev/mmcblk1p1 … EFI 200MB
/dev/mmcblk1p2 … /swap 6000MB
/dev/mmcblk1p3 … /opt eMMC残り全部
/dev/sda … / SSD全部

CapsをCtrlにする

ここのとおりに設定
コマンド一発でCapsLockをCtrlに変える方法

$ gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:nocaps']"
# /etc/default/keyboard
XKBOPTIONS="ctrl:nocaps"

そしてこれを実行

$ sudo systemctl restart console-setup

日本語入力の設定

初回起動時に、「言語サポートが完全にはインストールされていません」というアラートが出たと思ったら、日本語入力できねえ。
これまた上記サイトを参考にMozcをインストール

Ubuntu 18.04 LTSで日本語が入力できない!どうすればいい? | Linux Fan

Mozcをインストールしたのち、Mozcの[設定] > [全体の設定]で「入力メソッドのオンオフ」を右Altに割り当てる。

Chromeのインストール

ここのとおりにgoogle-chrome-stableをインストール

Ubuntu 18.04でaptを使ってchromeをインストール

$ curl https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
$ sudo apt update
$ sudo apt install google-chrome-stable

フォルダ名を英語にする

ホームディレクトリのフォルダ名を英語にしておく。

$ LANG=C xdg-user-dirs-gtk-update

まずここまでやっといて、あとは適当に環境を整える。

Xubuntu: snapでSlackをインストールしたら日本語入力出来なかった

Xubuntu 18.04にSlackをインストールしようとしたらsnapでインストール出来るのね。

$ sudo snap install slack --classic

便利だ・・・と思ったらSlackで日本語入力できない!
MozcがSlackでアクティブにならない。
仕方ないので一旦削除。

$ sudo snap remove slack

素直に公式サイトからダウンロードして入れ直し。
https://slack.com/intl/ja-jp/downloads/linux

debファイルをダウンロードして、ダブルクリックで開く。
ソフトウェアセンターが開くので、「Install」ボタンを押してインストール。

今度はMozcで日本語入力出来るようになった。

AWS WorkspacesにLinuxからアクセスする

会社でAWS Worksapcesを使えるようになったので、家のLinux (Xubuntu 18.04)からアクセスするようにした際のメモ。
Web Clientってのもあるが、うちのChromeからだと繋がらなかったので、Teradici PCoIP Clientを使った。

参考にしたのはここ
Connecting to Amazon WorkSpaces Using a Linux Client

やることは、

  1. EC2で PCoIP Connection Manager (PCM)インスタンスを立てる
  2. VPCセキュリティグループの設定をする
  3. sshでEC2にアクセスしてPCMの設定をする
  4. LinuxにPCoIP Clientをインストールする
  5. Linux ClientからPCM経由でWorkspacesにアクセスする

つまり、Linuxから直接アクセスするんではなくて、中継用のEC2が必要。

1. EC2で PCoIP Connection Manager (PCM)インスタンスを立てる

AWS Marketplaceからデプロイできます。
Teradici PCoIP Connection Manager for Amazon WorkSpaces

私1人しか使わないので、インスタンスタイプはt2.microにしました。
t2.mediumが推奨となってますが、目下t2.microで何の不自由もなし。

インスタンスを立てたらキーペアをダウンロードしておく。

あと、インスタンス立てた直後はVMにパブリックIPがないので、Elastic IPでパブリックIPアドレスを割り当てておく。

2.VPCセキュリティグループの設定をする

PCMのための「穴あけ」設定をします。
セキュリティグループ設定で、下記のインバウンド/アウトバウンドを許可します。

インバウンド:

SSH 22 TCP
HTTPS 443 TCP
DHCP 67/68 UDP

アウトバウンド

Kerberos 88 TCP
HTTPS 443 TCP
PCoIP 4172 TCP/UDP
DNS 53 UDP
NTP 123 UDP
HTTP 80 TCP
DHCP 67/68 UDP

あとは、Workspaces側のVPCセキュリティグループ設定に対して、上記のアウトバウンド許可をインバウンド許可として設定してください。
ま、WorkspacesとPCMを同じVPCセキュリティグループに入れるってのもアリですが、そこらへんは本題じゃないので適宜。

3. sshでEC2にアクセスしてPCMの設定をする

sshでEC2につなぎます。
キーペアは1.でEC2を立てた時に作った奴です。
ユーザー名は「administrator」です。

$ ssh -i mykey.pem administrator@192.0.2.1

繋がったら、必要項目を入力して行きます。
分かりづらかったのが、Extra DNS servers: という項目で、何のDNSだ?と思ったらWorkspacesが所属するActive DirectoryのDNSでした。
AWS Workspacesの管理画面に書いてあります。

4. LinuxにPCoIP Clientをインストールする

まずはaptのレポジトリを追加する。

$ wget -O teradici-repo-latest.deb https://downloads.teradici.com/ubuntu/teradici-repo-$(lsb_release -cs)-latest.deb
$ sudo apt install ./teradici-repo-latest.deb

/etc/apt/sources.list.d/pcoip.listを編集して、bionic-standardの行をコメントアウトして、bionic-devの行を有効可

#deb [arch=amd64] https://downloads.teradici.com/ubuntu bionic-stable non-free
deb [arch=amd64] https://downloads.teradici.com/ubuntu bionic-dev non-free

そしてインストール

$ sudo apt update
$ sudo apt install pcoip-client

5. Linux ClientからPCM経由でWorkspacesにアクセスする

PCoIP Clientを起動します。
デスクトップメニューにもあるし、ターミナルから起動も可能です。

$ pcoip-client &

EC2(PCM)のIPアドレス・ID・パスワードを入力して接続します。

これでうちのLinuxからもAWS WorkspacesのWindowsデスクトップにアクセス出来るようになりました。

Xubuntu: pwgenでパスワードを自動生成する

WebならChrome69以降はがパスワードを自動生成してくれる機能がついたが、Web以外で「8桁で1文字以上の大文字・小文字・数字・記号を含む」のパスワードを半年おきに変更する必要があるのでpwgenコマンドで生成する。

まずはapt-getでインストール

$ sudo apt-get install pwgen

で、基本はこれ

$ pwgen

EeZie2Ei iZ9Ohf2i lo5oaZ6Z eh6Xazu6 ahl0Ohsh Ohruu6ee SieB1aex Ri5jahv5
niz8Ujuu Ke0Chooj Auh4ohJ5 Niv4noen eLahwu9a ieN6si0C Chohjai3 iG4thooh
Gaingie5 doo3Ahth eeCieph2 dow2Aeci eiqu0aoF Aifu2the xaibee4Z OoP5upah
...

ランダムで8文字のパスワードが生成される。

「8桁で1文字以上の大文字・小文字・数字・記号を含む」の要件を満たしたければ -cny オプションをつける

$ pwgen -cny

aiC0fe.p Obei`ko2 Thi<d@o6 uChi-m9v ohk2auZ~ bohH+oo0 se4Ii!bo Iev!ei6a
ahwa5Oa. Iec5ohk# Qui)j2Ee ule-u1Tu sho+e2Ko Ahj5chu@ li]e;K9d eme6Oox|
Xia.r8se uojae~D5 ew[ie8Pi ees5Rae\ Aidi"r7u Yei]qu9y Eew(u6ee fah7ohW~
...

でOK