kazeno memo

メモとか

DebianをVirtualBoxへインストールした後にやること

DebianVirtualboxへインストールした後にやっておく事とか。

EFIファイルの設定

EFIを有効にしてインストールした場合のみ必要。

# mkdir /boot/efi/EFI/boot/
# cp /boot/efi/EFI/grub/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

EFIでは起動後に/EFI/boot/bootx64.efiがロードされるが、デフォルトではbootx64.efiが作成されていない為。

パッケージ

# apt install linux-headers-amd64 gcc make perl sudo

linux-headers-amd64 gcc make perlはGuest Additionsで必要。

Guest Additionsの導入

Guest Additions CDを挿入する。

# cd /media/cdrom
# sh ./VBoxLinuxAdditions.run

sudoの設定

# visudo

visudoは安全にsudoの設定ファイルを編集出来るやつ。

hoge ALL=(ALL) ALL

hogeはユーザ名

NOPASSWDでパスワードの入力をスキップ出来る

hoge ALL=NOPASSWD: /sbin/reboot
hoge ALL=NOPASSWD: /sbin/poweroff
hoge ALL=NOPASSWD: /usr/bin/apt
hoge ALL=NOPASSWD: /usr/bin/apt-get

ただ、このままではrebootの前にsudoを付けなければ実行できないので、エイリアスを設定する。

$ vi ~/.bash_aliases
alias reboot="sudo reboot"
alias poweroff="sudo poweroff"
alias apt="sudo apt"
alias apt-get="sudo apt-get"

エイリアスを適用する。

source ~/.bash_aliases

ホームディレクトリ以下を英語にする

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

「Don't ask me this again」にチェックしておく。

シャットダウン時に「A stop job is running for」と表示されて、待たされる場合

# /etc/systemd/system.conf
DefaultTimeoutStopSec=10s

以上
多分これで良いと思う。

Nginx & MyDNS.jpな環境でLet's Encryptの自動更新

証明書発行&自動更新を行う。

Nginxの導入は各自で行ってください。

必要なもの

PHP

MyDNSが提供しているDirectEditで必要。
https://www.rem-system.com/centos-nginx-php/
このサイトを参考に導入した。

Certbot

Let'sEncryptが提供している証明書取得・更新用のツール。
まずEPELリポジトリを導入しておく

$ sudo yum install epel-release

certbotのインストール

$ sudo yum install certbot
DirectEdit

MyDNSが提供しているLet'sEncrypt用のDNS認証自動化ツール。
https://github.com/disco-v8/DirectEdit/
READMEを参考に導入する。
ここでは、Nginxデフォルトのドキュメントルートへファイルを配置する。
デフォルトでなくても、ドキュメントルートであればなんでも良い。

$ cd /usr/share/nginx/html/ ##ドキュメントルートへ移動
$ sudo wget 'https://github.com/disco-v8/DirectEdit/archive/master.zip' -O mydns.zip
$ sudo unzip ./mydns.zip
$ cd ./mydns/
$ sudo chmod 700 ./*.php
$ sudo chmod 600 ./*.conf

DirectEditの設定

DirectEditの設定ファイル"txtedit.conf"に、MyDNS.jpのアカウント情報とドメインを追加する。

~~~~~~
    $MYDNSJP_MASTERID  = 'ユーザ名';
    $MYDNSJP_MASTERPWD = 'パスワード';
    $MYDNSJP_DOMAIN = 'ドメイン';
~~~~~~

複数ドメインの場合

ドキュメントルート
    └ mydns/
            ├ ドメイン1.com/
            │      ├txtregist.php
            │      ├txtdelete.php
            │      └txtedit.conf
            └ ドメイン2.com/
                   ├txtregist.php
                   ├txtdelete.php
                   └txtedit.conf

こんな感じでファイルを配置してそれぞれの"txtedit.conf"に、必要な情報を追加する。

Certbotで証明書発行

次のコマンドでは"ドメイン1.com"の証明書&ワイルドカード証明書を取得出来る。
まずは、"--dry-run"オプションで上手くいくか確認。

$ sudo certbot certonly --manual \
$ --preferred-challenges=dns \
$ --manual-auth-hook /usr/share/nginx/html/mydns/txtregist.php \
$ --manual-cleanup-hook /usr/share/nginx/html/mydns/txtdelete.php \
$ -d ドメイン1.com -d *.ドメイン1.com \
$ --server https://acme-v02.api.letsencrypt.org/directory \
$ --agree-tos -m 連絡用メールアドレス \
$ --manual-public-ip-logging-ok
$ --dry-run

成功すると
IMPORTANT NOTES:
- The dry run was successful.
と出る。
失敗したならオプションとかDirectEditの設定を見直す。

次は、"--dry-run"を取って実際に証明書を発行する。

$ sudo certbot certonly --manual \
$ --preferred-challenges=dns \
$ --manual-auth-hook /usr/share/nginx/html/mydns/txtregist.php \
$ --manual-cleanup-hook /usr/share/nginx/html/mydns/txtdelete.php \
$ -d ドメイン1.com -d *.ドメイン1.com \
$ --server https://acme-v02.api.letsencrypt.org/directory \
$ --agree-tos -m 連絡用メールアドレス \
$ --manual-public-ip-logging-ok

成功すると
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
てな感じで、証明書の保存場所が表示される。

場所はデフォルトでは"/etc/letsencrypt/live/ドメイン1.com/"
複数のファイルが生成されるのでNginxに設定する。

オプションの解説

certonly				証明書を取得するだけ(サーバへの設定は手動)
--manual				認証を手動で行う
--preferred-challenges=dns		DNSを使った認証を行う
--manual-auth-hook			DNSへ認証コードを登録するときに使用するスクリプトを指定
--manual-cleanup-hook			登録した認証コードを削除するときに使用するスクリプトを指定
-d					ドメイン名(複数指定/ワイルドカード可能)
-m					連絡用のメールアドレス指定(失効前などにメールを送ってくれる。変更可能)
--server				ワイルドカード証明書の発行に対応ているサーバを明示的に指定している
--agree-tos				利用規約に同意
--manual-public-ip-logging-ok		証明書発行を要求したIPの公開を許可

NginxにSSL証明書を設定する

設定ファイルに次のように追加。

$ ssl_certificate /etc/letsencrypt/live/ドメイン1.com/fullchain.pem;
$ ssl_certificate_key /etc/letsencrypt/live/ドメイン1.com/privkey.pem;
##設定によっては以下も追加
$ ssl_trusted_certificate /etc/letsencrypt/live/ドメイン1.com/chain.pem;

Cronで証明書を自動更新&MyDNSへIPを自動通知

$ sudo crontab -e

でviが開くので設定追加
(以下はあくまで例)

#MyDNSへIP通知
*/10 * * * * curl -4 -o /dev/null "https://ユーザ名:パスワード@www.mydns.jp/login.html"
#Let'sEncrypt自動更新
* * 1 * * certbot renew --renew-hook "systemctl restart nginx" --renew-hook "systemctl restart postfix" --renew-hook "systemctl restart dovecot" -q >> /var/log/certbot-renew.log

MyDNSの方
10分ごとにcurlを使ってIPv4アドレスのみを通知している。
IPv6も通知したい場合は"-4"を取る。

Let'sEncryptの方
一日ごとに証明書の更新を試行する。
"--renew-hook"は更新に成功した場合、指定したコマンドを実行する。複数指定することも可能。
"-q"は詳細を出力。
">> /var/log/certbot-renew.log"で出力を保存。

VLCのYoutube再生リストプラグインが使えない

タイトルの通り
Youtube playlist - addons.videolan.org
が最新版のVLC(3.0.4)で使えなくなった。

VLC 3.0.2 not playing youtube playlists : VLC
パッチを作ってくださった方がいるようなのでそれを使う。

VLC 3.x compatibility patch for 149909-playlist_youtube.lua · GitHub
導入方法は「C:\Program Files\VideoLAN\VLC\lua\playlist」へ追加すればOK
オリジナルは削除する。

Youtubeの終了画面を消したい

How to Block YouTube Video "End Screens" Overlays and Subscribe Thumbnail at End of Video - H3XED

Youtubeで動画終盤に関連動画やチャンネルロゴが表示されるようになった。
動画投稿者が設定できるもので終了画面(End Screen)という。

これはアノテーションと違ってユーザ側が非表示にできない仕様なので、広告ブロック系アドオン(ここではuBlock Origin)を使用して非表示にする。

uBlock Origin設定画面 > 「My フィルター」タブを開き、このフィルタを追加する。

youtube.com##.ytp-ce-element

AdBlock Plusのフィルタ構文をサポートするアドオンならuBlock Originじゃなくても使える。

DigitalOceanでOpenBSDを使う

Tubsta | OpenBSD on Digital Ocean
Installing OpenBSD with Full Disk Encryption on DigitalOcean

DropletはFreeBSD 11.1 x64で作成する。
作成にはSSHキーの設定が必須なので設定しておく。

Dropletが完成したらSSHでログインする。


1. インストールイメージの書き込み

# fetch https://cloudflare.cdn.openbsd.org/pub/OpenBSD/6.3/amd64/miniroot63.fs
# swapoff /dev/gpt/swapfs
# sysctl kern.geom.debugflags=0x10
# dd if=miniroot58.fs of=/dev/vtbd0 bs=512k
  • インストールイメージのダウンロード
  • スワップをオフ
  • GEOMのデバッグフラグをオン(これを行わないとイメージをディスクへ書き込めません)
  • ddでインストールイメージをストレージへ書き込む

2. rebootコマンドで再起動

3. DigitalOceanのコントロールパネルからConsoleへアクセスし、Shellを選択

4. ディスクのセットアップ
OpenBSDを暗号化したディスクへインストール - ecatel’s diary
ディスクの暗号化をしない場合は4.以降を飛ばす。
ディスクの暗号化をする場合は

# bioctl -c C -l /dev/sd0a softraid0

とする。

5. インストール
Shellで「install」を実行するとインストーラへ移る。
暗号化した場合、ルートディスクの選択時にsd1などを選択する。


注意点
暗号化した場合、再起動時にコンソールからパスワードを入力しないと起動しません。
なので、定期的に再起動することは避けたほうが良いです。

Windows7でログイン画面のユーザーロゴとフレームを削除する

参考
windows 7 - How to remove the User picture from Login and Lock screen? - Super User
Removing Picture Frame On Startup/Login Screen - Windows 7 Help Forums

注意
システムファイルを編集するので、自己責任でお願いします。
編集箇所を間違えるとパスワードの入力フォームが消えたりするらしい。

1. C:\Windows\System32\authui.dllをデスクトップなどにコピーする。(バックアップとして別の場所にもコピーしておく)
2. Resource Hackerなどのツールを使用して、先ほどコピーしたauthui.dllを開く。
3. 「UIFILE」フォルダへ移動すると、「12400」「12401」「12402」「14000」の4つのサブフォルダがある。
※編集するのは「12400」「12401」「12402」の3つの連番フォルダで、「14000」は編集しない。
4. 3つのサブフォルダには「1033」というファイルがあるので、それらを開いて「<ZoomableElement id="atom(PictureContainer)"」をファイル内検索し、「height="0"」を挿入する。
つまり

<ZoomableElement id="atom(PictureContainer)" height="0" layout="filllayout()">

のようにする。(この操作を3つの「1033」全てで行う。)
5. ファイルを保存してResource Hackerを閉じる。
6. 変更したauthui.dllの所有権などをオリジナルのauthui.dllと同じにする。(TrustedInstallerへ変更)
Windows、ファイルの所有者を「TrustedInstaller」に戻す|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~
7. 最後に、変更したauthui.dllをオリジナルと入れ替える。

所有権の変更は必要なのか不明だけど、一応行っておく。

もし起動しなくなったらWinPEとかインストールディスクを使うなどして、バックアップしたauthui.dllをSystem32へ移動すれば良い。