2021年4月12日月曜日

Redmineのサーバー移行(4.0→4.1.2)とGoogle認証プラグイン

サーバー移転したとき苦労したので、備忘録として残しておきます。

Redmime 利用しているGoogle認証プラグインは、「Redmine Omniauth Google plugin」に対して

の修正版を施したものです。こちらは、redmine 4.1.2 でも動作します。

移転先は、さくら VPS(CentOS Stream8)です。


関連情報


STEP 1. 新サーバーに Redmine 4.1.2 を新規導入


とても長い道のりがあります。
基本的には上記サイトの通りにセットアップするとよいです。
  1. DB: MariaDB 10.3.x
  2. Perl: perl 5.26
  3. Ruby :  2.6.x 
  4. Unicorn(自動起動)
  5. Nginx 1.18(非暗号, 自動起動)
ここまでうまくいけば、次に Let's Encrypt を使った常時SSLで redmine を動かしたいと思うはず。

STEP 2. 通知のためにメールサーバ(postfix)を導入しよう


Let's Encrypt の証明書通知のために、メールが送信できる環境が必要です。今回は他のメールサーバーを使わず、自前で完結することを想定しています。そのため postfix をインストールします。postfixをインストールしたなら、mailコマンドも使えるようにしておくとなにかと便利です。

dnf install postfix
dnf install mailx

上記2つコマンドで mailコマンドと postfixをインストールします。
今回は完全にローカルでしか使わないので、外部からの 25/tcp を許可する必要はありません。IPv4 のみで良い場合、下記のように inet_protocols を ipv4 にしておくとよいです。

/etc/postfix/main.cf を編集

inet_protocols = ipv4
myhostname = ホスト名(FQDN)
mydomain = ホスト名(FQDN)

上記3つを設定したら、

service postfix start
systemctl enable postfix

で自動起動しておけばよいです。
かりにホストが、hogehoge.example.com であるなら

echo test  | mail -s 'test'  自分のメールアドレス

として自分にメールしてみましょう。
たとえば root ユーザーで実行すると

root@hogehoge.example.com からメールが届くはずです。

また /etc/aliases を編集し
root: サーバーのシステム通知をうけるメールアドレス

をいれて
newaliases
にて、エイリアスデーターベースを更新しておきましょう。このあたりはサーバー管理の問題なので、詳細は割愛します。

STEP 3. Redmine を Let's Encrypt を使った常時SSL化してみよう



証明書発行に、certbot を利用する場合、

http://ホスト名(FQDN)

が外部からアクセスできる状況が必要です。
また上記で redmine のサイトがでることを確認しましょう。

さくらVPSであれば、コントロールパネルのパケットフィルターから一時的に 80/tcp を外部から許可しましょう。なお 443/tcp (https://)については、IP制限をかけるなど限定接続可能なら、そのほうが安全です。

最終的に
http://ホスト名(FQDN)
https://ホスト名(FQDN)
へ自動転送することになるので、

証明書の更新のときに http://ホスト名(FQDN)自体は存在しないことになります。これが今後証明書更新にどのような影響をでるまでは検証していません。
そのあたりは今後検証予定。とりあえず証明書ができたら、80/tcp は閉じておきます。

次に
を参考に nginx の設定を変更します。
 redmine 用の設定
/etc/nginx/conf.d/redmine.conf を上記リンク先にあるように編集します。

ただし、後ほどインストールする Google 認証プラグインのため、下記の赤部分を追加してください。これを追加することで redmine の back_url が http:// から https:// に切り替わってくれます。

    location @app {
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_connect_timeout 60;
        proxy_read_timeout 60;
        proxy_send_timeout 600;
        proxy_pass http://unicorn;
    }
    
これで、
https://ホスト名(FQDN)

としてアクセスできたら成功です。

STEP 4. Redmine データの移行


を参考に、元サーバーから
  1. files フォルダ
  2. themes フォルダ内の利用テーマフォルダ
  3. plugins フォルダ内の利用プラグインフォルダ
  4. redmine 用データベース
をバックアップしましょう。

新規インストールしたのと同じデータベース名(上記例だと redmine)にすると、
私の場合にはエラーがでたので
redmine2 など別のデータベースを作成して、そちらにインポートするのがよいと思います。

DBをインポートする、変更した場合にはその都度
redmine のトップフォルダで

bundle exec rails db:migrate RAILS_ENV=production
bundle exec rails redmine:plugins:migrate RAILS_ENV=production

をすること。

プラグインは個別に移行が必要かもしれないので、細かいところは省きます。
プラグインを出し入れした場合

redmine のトップフォルダで

bundle install
systemctl start redmine-unicorn
systemctl status redmine-unicorn

をしましょう。これで unicorn が fail になるようなら、そのプラグインが新しい redmine に対応していないことになります。それをフォルダから外すなりして、上記コマンドを実行しなおしてください。

files はそのまま入れ替えてください。

テーマ内の利用テーマフォルダもそのまま入れ替えてもいいですが、新しいバージョンが出ているなら更新することも検討すればよいです。

Google Developer Console にログインして、

https://ホスト名(FQDN)

を追加しておく必要があります。

今回ハマったのは、
  • proxy_set_header X-Forwarded-Proto $scheme;
の設定をいれていなくて

https://ホスト名(FQDN)/oauth_google?back_url=http%3A%2F%2Fホスト名(FQDN)%2F

のように back_urlが http なので、Google認証できないというものでした。

2021年4月12日 @kimipooh

2021年3月2日火曜日

【macOS】Google Drive File Stream の対象ボリューム「Google Drive」を Spotlightの検索対象から外す

 普段はあまり気にしていないのですが、 macOS Big Sur にアップグレードしてから、手持ちの MacBookAir の動作が非常に遅くなったので、あれこれチェックしています。

その中でコンソールの system.log に

com.apple.xpc.launchd com.apple.mdworker.shared

に関連するエラーが短時間の間隔で大量にでているのに気が付きました。

こういうのを見てしまうと、気になるものです。

確かに、.Spotlight-V100というインデックスのためのフォルダができていますね。

いろいろ調べた結果、

にたどり着きました。
確かに .Spotlight-V100 というインデックス用の隠しフォルダがあるので、インデックスしているようにみえます。Google Driveはインデックス対象にしなくても https://drive.google.com から高速で検索できる仕組みが Googleにあるので、マシンパワーの無駄遣いです。

そのため、Google Drive File Stream(現行 Google Driveアプリ)がマウントする Google Drive (Google Workspace専用)ボリュームについては、Spotlight のインデックス対象から外しました。

すると、まだ時々の間隔でエラーは出るようですが、その間隔は時々になりました。

などのように、同じ問題に遭遇した人もいるみたいですね。

これで少しはパフォーマンスがよくなることを祈ります。

2021年3月2日 @kimipooh

2021年1月30日土曜日

【まめ知識】PC版Gmailにアクセスする(iOS編) 2021年度(Safari編)

 過去何度か、iPhone で PC版 Gmailを表示する方法を検証してブログに記事を書いてきました。しかし、現時点でいずれも使えなくなっています。

使えなくなった情報

【備忘録】iPhone (iOS) で Gmail を標準表示(2020年12月時点で使えず)

【まめ知識】PC版Gmailにアクセスする(iOS編)(2014年1月まで)

2021年1月30日時点で Safariを使った方法に成功したので、書き下しておきます。
ただ、またいつ使えなくなるか分かりません。

検証環境

iPhone 11 Pro

iOS 14.3

Safariブラウザを利用を利用して PC版Gmailにアクセスする

1. Gmail(https://gmail.com) にアクセスし、ログインする

2. 左上にある 三 をタップして一番下にスクロールします。

3. 下図の Gmailを次の UIで表示より「デスクトップ」のリンクをタップします。


4. 下図のように表示されるので「最新の Gmailを使用」をタップ


5. モバイル版 Gmailが表示されるので、アドレスバーの「ぁあ」をタップして、「デスクトップ用Webサイトを表示」をタップする


6. うまくいけば、 下図のように PC版 Gmailを表示することができます!


2021年1月30日 @kimipooh