5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

投稿者: muneando

  • 1年かかって(さぼっていただけだけど)QNAPにサーバーに移行した話し

    自粛要請だったからではないけど、昨日でようやくLinuxからQNAPにサーバーを移行した。QNAPを買ったのは、ほぼ一年前である。

    今まで忙しいとか気が乗らないとかの理由で、サーバー移行を放っておいたのは自分が悪い。

    今回移行したのはLinuxサーバーで動いているIMAPとSambaサーバーである。IMAPのほうははそのまま移行したのではなく、QNAPのDockerコンテナの上でDovecotで動いている。成果はGitHubに置いてある。自分のネットワーク内で動けばいいという位のいい加減なコンテナである。

    [linkcard url=”https://github.com/muneando/docker-simple-dovecot“]

    見返してみるとコミットメッセージもいい加減である。自由にForkして自由に書き直してね

    ファイルサーバーはQNAPの本来の仕事である。今回のQNAPはバックアップに使っていた。それが原因かもしれないが、最初はWindowから共有フォルダでアクセスしたときにファイルの書き込みができなかった。調べてみると、共有フォルダの書き込み権限(どうしてゲストに書き込み権限が必要なの?)がなかったことと、共有フォルダ以下のファイルとディレクトリのグループがバックアップ先のグループIDになっていたことが原因だった。グループはドメインユーザーに変更して解決した。そのときは、管理者でターミナルでログインできないと設定できないので注意。

    あとは各ディレクトリのバックアップの設定をしておく。こちらは、前回のRedmineのMariaDBのバックアップと同様に、HBS3でバックアップを行う。HBS3はとても楽チンである。バックアップ先は、もう一台のQNAPとHPのMicroServerにインストールしたFreeNASの2台である。本当なら、どちらかを別の場所に置けばいいのだけど。

    ファイルサーバーとIMAPは、ほぼツレしか使っていないので、ツレのPCで設定変更を行っていく。ThunderbirdでIMAPを見ているので、MailDirのディレクトリコピーではなくThunderbirdでメールメールのコピーをしておく。ファイルサーバーはドライブの切り替えで完了である。

    以上で、1年かかって(さぼっていただけだけど)LinuxサーバーからQNAPに移行ができた。とても時間がかかった。

    SambaをLinuxサーバーのインストールしてファイルサーバーとして動かすよりも、サクッとQNAPを入れてしまったほうが簡単、安心、便利でおすすめ。ファイルサーバーだけではなくてIntelのCPUのQNAPなら、Dockerでいろいろとコンテナを設定してサーバーをたくさん立てられるしね。

  • 新型コロナ自粛解除後のToDoリストを書いた話し。 #AfterCoronaToDo

    新型コロナウイルスの自粛解除された後に、何をやろうか考えてみた。

    ☑️長くなった髪を切りに行く。
    ☑️スタバにコーヒーを飲みに行く。
    □ コメダでモーニングを食べながらテレワークをする。
    ☑️ 歯医者に行って半年に一度の検査をする。
    □ 3月にキャンセルした台湾にツレと行く。
    □ 本栖湖で焚き火キャンプをする。
    □ DIYで杉板を使って木工工作をする。
    □ 2万歩目指して遠くまでウォーキングをする。
    □ 美味しいものをツレと食べに行く。
    ☑️ ネット通販では買えない欲しいあれを買いに行く。
    □ クルマで高速を使って遠出をする。
    □ プールへ泳ぎに行く。
    □ 来シーズンは花見に行く。
    □ 新しいPCを組み立てる。
    □ ツレと熊本に飛行機で旅行に行く。
    ☑️面会禁止の特別養護老人ホームにいる母さんに会いに行く。

    まだまだ増えるかも。

    2020/07/14更新

    2020/12/05更新

  • RedmineとBitbucket(Gitレポジトリ)を連携させた話し

    仕事で使用しているRedmine(一人チケット管理だけど)とBitbucketのレポジトリとの連携の設定をしてみます。やってみると、つまづいた点がありましたので、メモとして残しておきます。

    参考にしたのは以下のサイトです。

    Redmineのブログサイトです。

    Redmineの公式サイトです。

    今回行った手順を簡単に説明すると以下の通りです。コマンドなどの詳細の手順は各サイトをご覧ください。

    1. Redmineにredmine_github_hookプラグインをインストールする。
    2. RedmineのサーバーにBitbucketリポジトリからmirrorリポジトリでcloneしておく。そのときgit remoteは、後で認証が面倒になるのでhttpsではなくsshで指定しておく。cloneはredmineのアカウントで行う。
    3. Bitbucketリポジトリからfetchできるように、Redmineのサーバーでredmineのアカウントでssh-genkeyでパスワード無しで公開キー、秘密キーを作成する。公開キーをBitbucketに登録しておく。実際にfetchできるかテストしておく。
    4. Redmineでリポジトリの設定をする。設定はRedmine全体の設定とプロジェクト個別のリポジトリの設定がある。設定できたらプロジェクトのリポジトリが参照できるか見てみる。サイトが今どきUTF-8ではなくシフトJISだからリビジョンの差分が文字化けしてしまうので、全体の設定-ファイル(どういう訳かリポジトリではない)で、添付ファイルとリポジトリのエンコーディングをutf-8,cp932,euc-jpに設定しなければいけない。差分を表示をインラインにすると文字化けするが、横に並べるにすると正常に表示される(これは不明)。また、リポジトリが大きいとプロジェクトのリポジトリのページはInternal Errorになるが、しばらくすれば参照できる(これで最初諦めかけた・・・)。
    5. BitbucketのリポジトリのWebhooksの設定をして、commitするとredmineのレポジトリが更新されるようにしておく。何かcommitしてBitbucketにpushすると、Redmineのレポジトリが更新されるかを確認する。
    6. 連携する前のRedmineの各チケットとリビジョンと関連付けを行う。

    以上は各サイトの内容をいいどころ取りしたものです。それぞれ自分のサイトに合わせて設定してください。

    以上ですと、Redmineからレポジトリを参照できるだけですので、BitbucketとSourceTreeでも使いやすいようにRedmineの連携も設定します。

    BitbucketからRedmineのチケットIDとリンクするには、リポジトリの設定のリンクで

    Link URL: https://[redmineのドメイン]/issues/\1
    Link Key : #(\d+)

    とします。これでBitbucketページ内で#チケット番号をクリックすれば、Redmineの該当する番号のチケットページが表示します。

    同様にSourceTreeの設定-詳細で、コミットメッセージ中のリンクで

    置換タイプ : その他
    正規表現 : (\d+)
    リンク先 URL : https://[redmineのドメイン]/issues/$1

    と設定すると、コミット内のメッセージに出てくる#チケットIDをクリックすれば、Redmineの該当する番号のチケットページが表示できるようになります。

    実現できなかったことは、Redmine内のレポジトリのハッシュからBitbucketのコミットにリンクの方法でした。何かよりRedmineのブラグインがあるのでしょうか?

    著:湊川あい, 著:DQNEO
    ¥2,208 (2025/04/25 16:46時点 | Amazon調べ)
    著:リック・ウマリ, 翻訳:吉川邦夫
    ¥3,247 (2025/04/25 16:46時点 | Amazon調べ)

    追記(2020年5月7日)

    RedmineとSourceTreeの連携ですが、以上はWindowsの設定方法です。Macの場合は違います。リンク先ではなく置換される文字列となりますので、HTMLのリンクとなります。例えば、以下のようになります。

    正規表現パターン : #(\d+)
    と置き換えます : <a href="https://[redmineのドメイン]/issues/$1">#$1</a>

    ただし、自分のところではブラウザが起動せずに、そのままのビューでRedmineになってしまいます。何かまだ問題がありそうです。

    追記(2020年9月30日)

    あれからBitBucketをやめて、QNAPのContainer StationにGitLabをコンテナで立てました。上記の記事中のgit remoteは、sshではなくHTTPSでアクセスさせています。

    QNAPのファームウェアをアップデートして再起動したら、RedmineとGitLabの連携がうまくいかなくなりました。

    いろいろと調べてみると、Redmineからgit pullができていませんでした。原因は、GitLabのコンテナのIPアドレスが違うアドレスになっていて、RedmineからGitLabのコンテナにアクセスできなくなっていたのが原因でした。たまたま今までQNAPを再起動してもGitLabのコンテナのIPアドレスが変わらなかったようでした。まあ、考えてみると当たり前です。~/.ssh/configで直接IPアドレスを指定していたのが敗因でした。

    そこで、~/.ssh/configを

    Host gitlab                                                                                                                                                                                       
      Hostname gitlab_web_1     # アクセスできるホスト名                                                                                                                                                                      
      # Hostname 172.29.0.3    直接IPアドレスをしているのはやめる。                                                                                                                                                                       
      IdentityFile ~/.ssh/id_rsa                                                                                                                                                             
      User git 

    のようにコンテナのホスト名に変更しておきました。これで、GitLabのコンテナを再起動しても大丈夫のはずです。git remoteのほうは、

    $ git remote -v                                                                                                                           
    origin  git@gitlab:user-name/xxx.git (fetch)                                                                                                                                                      
    origin  git@gitlab:user-name/xxx.git (push)   

    のようにしています。

    ちなみにRedmineとGitLabのコンテナは同じネットワークに存在してます。これが重要でう。

    追記(2021年7月7日)

    BitbucketからGitlabに移行したけど、設定方法は基本的に同じです。

    Redmineのサーバーでredmineアカウントで公開キー/秘密キーを作成してGitlabのサーバーに公開キーを登録しないといけないということを忘れて手こずりました。

  • ツレのWindows PCが起動できなかったけど、何とかなった話し

    ツレからヘッドセットから雑音がすると言われて対応を始める。

    雑音を対応する前に、まずはPCの中の掃除を始める。これが間違いの始まり。

    掃除が終わって元に戻して、PCを立ち上げると起動できない。BIOSが起動しない。これは参った・・・。

    最初に気が付いたのは、ディスプレイカードのファンが回っていない。もしかしたら、電源が逝ってしまったかと思って、電源チェッカーでテストする。電源は問題なし。

    次にディスプレイカードを交換する。手元のディスプレイカードと交換する。こちらは元々ファンから異音がするので、このカードはダメ。

    次にサブのサブ機からディスプレイカードを取り出して交換する。こちらはファン無しで今まで動いていたので大丈夫のはず。こちらも現象変わらず。

    もしかしたら、電池が切れたと思って交換する。前に電池が切れて起動できなかったことがある。交換したら今度は正常に起動できた。日付が大幅に狂っていたけど。

    今後はディスプレイカードを元に戻す。これは起動できない。仕方ないので、また交換する。

    交換した電池は3Vあったので、電池切れではないと思う。もしかしたら、BIOSをリセットして起動できたののではないか。

    ということで、余計なことをしてPCを起動できなくなって、元に戻った話し。雑音の対応は、まだできていない・・・・。

    交換したディスプレイカードがとても古いので、新しく買わなければいけないな。

    それと代替パーツを持っていると復旧作業は早い。でも、このご時世、本当にパーツの通販は売り切れになっている。

    マイクロソフト
    ¥16,800 (2025/05/07 07:50時点 | Amazon調べ)
    マイクロソフト
    ¥21,700 (2025/05/03 22:39時点 | Amazon調べ)

    自作PC用に一番左のWindows11のパッケージを実際に購入しましたが、問題なくインストールできました。Windowsは使うPCの分だけ正しくライセンスを購入しましょう。

  • 電話番号順に電話をしているセールス電話があったけど、やはり名簿から電話しているなという話し

    今日は久しぶりにセールス電話があった。出張・訪問買取業者、所謂押し買い業者。

    Pz-LinkCard
    – URLの記述に誤りがあります。
    – URL=

    発信した電話番号にはいろいろと怪しい情報が載っている。

    さて、電話をかけてきた女性によると、市外市内局番固定で、残りの4桁の番号を順番に電話をしているそうな。名簿から電話をしていないとセール電話がよく言う個人情報保護回避の理由である。もう電話をしてこないでとお願いすると、では削除しますと言う。削除する名簿があるのと聞いたら、パソコンで電話番号の順番で電話していると言っていた。

    かかって来た電話番号の2つ目は、別の電話番号で自分にところで契約しているから、しばらすれば電話がかってくるはずである。しかし、待てども電話がかかってこない。ということは、やはり名簿から電話をしているということになる。

    ということで、電話でセールスしてくる会社はやはり怪しいのである。

    世の中からセールス電話なんかなくなってしまえばいいのに。

    セールス電話から詐欺被害に遭った家族より
    シャープ(SHARP)
    ¥7,500 (2025/05/04 18:17時点 | Amazon調べ)

    高齢者への詐欺電話を防止するためにも、NTTはナンバーディスプレイを無料で提供すればいいのにと本当に思う。携帯電話は無料で着信番号表示をしているので固定電話でもできるはず。発信者通知は迷惑電話をかけてくる輩は嫌がるので、ナンバーディスプレイは本当に迷惑電話防止になる。ナンバーディスプレイに契約して対応した電話機ならば、発信者番号を通知しない詐欺電話は非通知になって拒否されるので、少しは安心である。これで詐欺電話は随分と減るので、NTTのナンバーディスプレイは詐欺電話撃退にはお薦めなのである。

    とずっと書いているけど、ようやくNTTが高齢者向けにナンバーディスプレイが無料になりました。記事はこちらから。

  • パナソニックの電動アシスト自転車のバッテリーが3つ届いたので返送した話し

    先日、リコール対象になったパナソニックの電動アシスト自転車のバッテリーの交換バッテリーが届いた。ダメ元で申し込んだ3台とも新しいバッテリーになった。

    届いた梱包物の中には、新しいバッテリー、返送するための梱包と発送伝票、取扱説明書と保証書、そしてご丁寧な詫び状。

    でも、返送するため梱包はよく考えられている。

    簡単に誰でもバッテリーを返送できるようになっている。

    最初は半日冷蔵庫で冷やして送り返せとなっていたが、ヤマト運輸のクール便で送り返せと変わっていた。そのほうが、もっと簡単だけど。

    これから3つのバッテリーを返送しに行く。

    これで、まだまだパナソニックの電動アシスト自転車は活躍しそう。パナソニックさんは安全のためとは言え、大変な出費だな。

    そう言えば、パナソニックでLED電球の無料交換ってことをやってくれたな。

    これだから、今度もパナソニックを買うってことになるわな。

  • 新型コロナウイルスで外出自粛になって高校生の息子が丸坊主にした話し

    高校生の息子が髪の毛がうっとうしいと言い出した。まあ、髪の毛が長くても死にゃあせんと言っておいたら、いきなり頭を刈りだした。

    自分で刈ったもんだから、見事な虎刈り。致命的は天柱が薄く刈っていた。

    これではダメだと言うことで、母父で息子の頭を刈りだす。天柱に合わせて丸坊主にする。丸坊主にした結果はこちら。

    どこの高校球児か、それともお経を読むのか。まあ、仏教系の学校だし、男子校だから・・・。

    どうせ学校が休みになって誰とも会わないからいいってさ。

    でも、息子の頭を見て何かよさげだったので、自分も丸坊主にしようとしたら、家族から全力で止められた。だって、もし髪の毛生えてこなかったら、どうするの? だってさ。

    若いっていいよな・・・・。

  • QNAPでMariaDB(MySQL)の自動バックアップの設定をした話し

    RedmineをQNAPでDockerのコンテナで稼働し始めた。RedmineのデータベースはDockerのコンテナではなく、QNAPで起動しているデータベースにしておく。QNAPでデータベースとなっているのはMariaDB、いわゆるMySQLとなる。PostgreSQLもインストールすれば使える。

    やはり、仕事でRedmineを使うから、データベースのバックアックは必須である。バックアップをどうしようかと思えば、大抵考えるのはcronでmysqldubpを勝手に起動して、どこかのサーバーに保存していくこと。ここのどこかのサーバーをどうするか悩む。

    どこかのサーバーといえば、ローカルにLinuxのサーバーがあればいいのだけど、今あるLinuxサーバーは古いのでお役御免にしたい。QNAPとかFreeNASとかNASはあるけど、NFSとか設定するのが面倒。

    SambaをLinuxサーバーのインストールしてファイルサーバーとして動かすよりも、サクッとQNAPを入れてしまったほうが簡単、安心、便利でおすすめ。ファイルサーバーだけではなくてIntelのCPUのQNAPなら、Dockerでいろいろとコンテナを設定してサーバーをたくさん立てられるしね。

    そこで考えた結果、手っ取り早くDropboxに保存して同期をすることにした。バックアップとったけど、データベースと同じQNAPにバックアップファイルを保存していていたけど、QNAPが飛んでバックアアップファイル共々お亡くなりなんてないように。外部にデータを保存することは大事。QNAPにはディレクトリをDropboxなどのクラウドストレージサービスと同期をとってくれるHBS3というアプリケーションが用意されている。HBS3は情報が少ないけど、日本語化されているので何とか設定できそう。

    MariaDBのバックアップのシェルスクリプトはこんな感じ。以下のサイトを参考にした、というよりもコピペ。

    NASの MySQLを自動バックアップ (ただし、404 File Not FoundなのでGoogle検索のキャッシュから)

    mysqldumpのパスが違うとか(最初mysqldumpがなかったらどうしようと焦った)、QNAPではfindが-mtimeオプションが対応していないとか、出力ファイル名に時分まで付けるとか、もろもろこちらに合わせて修正している。

    #!/bin/sh
    
    # バックアップの保存期間(days)は 5日とする。
    
    # バックアップ保存用ディレクトリの指定
    dirpath='/share/backup-data/mariadb-backup'
    
    # ファイル名を指定する(※ファイル名で日付がわかるようにしておきます)
    filename=`date +%Y%m%d%H%M`
    
    # データベース全体をエクスポート
    /mnt/ext/opt/mariadb/bin/mysqldump --opt --all-databases --events --default-character-set=binary -u root --password=[MySQLのrootのパスワード] | gzip > $dirpath/$filename.sql.gz
    
    # パーミッション変更
    chmod 700 $dirpath/$filename.sql.gz
    
    # 保存期間を過ぎたバックアップを削除
    find $dirpath/ -type f -mtime +5 |xargs rm -f  

    このシェルスクリプトを実行するとDropboxで同期をとるディレクトリ(ここでは/share/backup-data/mariadb-backup)にバックアップされる。このシェルスクリプトをcronで回せば完了。

    しかし、QNAPのcronの設定は、

    crontab -e

    では保存してくれない。

    vi /etc/config/crontab

    で直接crontabを編集して、cronのサービスを再起動する。以上で完了。

    無事にデータベースのダンプを出力して、Dropboxで同期していることを確認できた。

    追記(2022年12月13日)

    シェルスクリプトが消えていたので、再度設定しておいた。

  • CandyCaneをRedmineに移行した。だけどデータ移行なんて考えないで移行したという話し。

    こちらの話しの続き。

    現在作業記録をCandyCaneで行っている。CandyCaneは元々Redmineの機能をPHPで記述するということで始まったプロジェクトである。現在は、ほぼ開発は停止している。

    CandyCaneはPHP5.6の上で動かしているので、PHP自体アップデートはない。新しくPHP7の上で動かそうにも難しい。実際にDockerのコンテナでPHP7のサーバーを起動してCandyCaneを動かしたが諦めた。この際、CandyCaneを捨ててしまおうと考えた。

    つぎのバグトラッキングシステムを何にしようかいろいろ検討したが、チケットごとに時間での工数記録してお客さんに報告をしなければいけないので(これが一番大事)、結局はCandyCaneの大元のRedmineに落ち着いた。操作もあまり変わらないし。

    最初はCandyCaneからRedmineにデータの移行をしようと考えたが、これは大変だったのでやめた。今月からCandyCaneの使用をやめてきっぱりRedmineでチケット管理をやっていく。チケット番号(issue ID)の重複をさけるため、チケット番号はGitでも管理しているので、チケット番号を途中まで採番しておく。これはissuesテーブルのidのオートインクリメントを設定し直すだけ。

    CandyCaneは古いPHPが動くようにQNAPの中にDockerのコンテナを立てて、CandyCaneのファイルとデータベースをそのまま移行するくらいで問題無かった。

    最後に利用しているお客さんにCandyCaneからRedmineに変わったというアナウンスと、Redmineのアカウントを発行すれば完了。

    しかしながら、CandyCaneを使い始めて11年経っていた。チケットは約3,000近く溜まっている。トラブルなくここまで無事に動いてくれた。ご苦労様でした。

    SambaをLinuxサーバーのインストールしてファイルサーバーとして動かすよりも、サクッとQNAPを入れてしまったほうが簡単、安心、便利でおすすめ。ファイルサーバーだけではなくてIntelのCPUのQNAPなら、Dockerでいろいろとコンテナを設定してサーバーをたくさん立てられるしね。

  • AnkerのQiのワイヤレス充電器で充電できなかった話し

    新しく買ったAnkerのQi対応ワイヤレス充電器で新しいiPhoneSEが充電できないとツレに言われた。この充電器は外れだったかもと、Ankerにサポート問い合わせをしなければいけないと覚悟した。

    買ったのは円盤型とスタンド型のセットだけど、充電できないのはスタンド型のほう。

    最初充電開始の反応が遅いので、コイルが暖まっていないせい(?)かと思っていたけど違うみたい。ツレのiPhoneSEではなくても自分のPixel4でも充電が始まらない。前に買った全く同じの充電器では両方とも充電できる。

    コンセントに挿してあるACアダプターのUSBの口を替えてみても現象は変わらず。もしかしたらということでUSBケーブルを換えてみたら、今度は充電できるようになった。

    だけど充電できないほうのUSBケーブルはAnkerのロゴが入ったケーブルだから充電できないのはおかしい。しかも、新しい改良版(何が改良されたかはわからないけど)のワイヤレス充電器で充電できないUSBケーブルは、改良前の充電器では正常に充電開始する。これも変な話しである。

    でも、この充電的ないAnkerのUSBケーブルは、今となってはどの製品の付属ケーブルなのかわからなくなってしまっている。Qiのワイヤレス充電器に付属したものか、一緒に買ったAnkerのUSBのACアダプタに付属したものか?

    結局今回の話しでは、新しい改良版のワイヤレス充電器はUSBケーブルを選ぶということはわかった。充電できなかったらUSBケーブルを疑え。まずは付属のUSBケーブルにつなげてみろ。それでもダメだったら別のケーブルを。メーカー品でも充電できないときもあるぞ。以上。

    追記(2020年5月19日)

    スタンド型のワイヤレス充電器だけど、やはり充電できても時間がかかる。またAnkerのUSBケーブルを疑ってみる。AnkerのUSBケーブルの代わりに、Amazonのロゴが入ったUSBケーブルに替えてみる。今度は数段に充電時間が短くなった。

    そもそもAnkerのUSBケーブルは長すぎる。1.2mもある。充電器の置き場所から取り回しを考えて長いケーブルを付属させていると思うけど、短い30cmくらいのアマゾンのUSBケーブルのほうが確実に充電できることがわかった。