5丁目通信(仮称)

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

カテゴリー: システム関連

  • 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/11/28 14:38時点 | Amazon調べ)
    著:リック・ウマリ, 翻訳:吉川邦夫
    ¥3,247 (2025/11/28 08:17時点 | 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を起動できなくなって、元に戻った話し。雑音の対応は、まだできていない・・・・。

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

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

    マイクロソフト
    ¥15,900 (2025/11/23 10:24時点 | Amazon調べ)
    マイクロソフト
    ¥21,900 (2025/11/22 11:34時点 | Amazon調べ)

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

  • 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でいろいろとコンテナを設定してサーバーをたくさん立てられるしね。

  • LINEにURLを貼り付けると修正前のタイトルが表示されてしまう話し。

    これはお客さんの指摘でわかった話。

    こちらで作成したページのURLをLINEに貼り付けて送ると、おかしなタイトルが表示されてしまうとのこと。一番の原因は、こちらでタイトルを間違えたまま一度ファイルをアップしてしまったこと。これは自分のせい。気が付いてすぐにタイトルを修正してアップし直したけど、依然LINEではタイトルを間違えた修正前のものが貼り付けられてしまう。

    おそらく、LINEのほうでキャッシュが残っているかと思う。時間が解決するかしれないけど、いつ正しいタイトルにしてくれるまで待っていられないので、そんな悠長なことは言ってられない。

    そこでタイトルを正しく修正ページを別のページにコピーしてしまう。これだったら新しいページのURLをコピーしてLINEに貼り付けてくれれば、正しいタイトルを表示してくれる。こちらは実際にやってみるとうまくいった。

    古いページはhtaccessでrewriteで新しいページに強制的に遷移するようにする。インデックスページからのリンクは新しいページに書き換えているので、あまり影響は無いかと思うけど念のため。

    著:戸根 勤
    ¥2,376 (2025/11/23 11:12時点 | Amazon調べ)
    著:Gene
    ¥924 (2025/11/22 15:10時点 | Amazon調べ)
  • ユーザーサポートのリモートワークのためにTeamViewerを購入した話し

    こちらの話しの続きになります。

    新型コロナウイルスの影響で相手先に出向いて作業するということができなくなった。お客さんの要望でリモートワークをしたいという問い合わせも増えてきた。

    自分の会社ではリモートワークというか自宅が事務所なので自分の仕事ではリモートワークは必要ない。お客さんのサポートでリモートワークが必要になっている。そこでどのようにリモートワークをやるかを考えてみた。

    最初はお客さんのネットワークにVPNで接続して社内アプリケーションやサーバーを使うことを考えてみた。無事にネットワークにアクセスできれば自分PC(会社から持ち出したPCになるけど)から今まで通りの仕事ができるはずである。しかし、ネットワークに接続できないという大きな問題がある。自宅のネットワークはさまざまであるので、確実に接続できるかは保障できない。ネットワークの帯域が狭いとか(いまどき遅いADSLなんてないかもしれないけど)、ローカルのIPアドレスしかインターネットプロバイダから配布されないとか。接続確認済みのモバイルWi-Fiのモデムを配布しておくという手もあるけど。

    著:戸根 勤
    ¥2,376 (2025/11/23 11:12時点 | Amazon調べ)
    著:Gene
    ¥924 (2025/11/22 15:10時点 | Amazon調べ)

    次に考えたのはリモートディスクトップで接続する。これだとルーターのNAT越えも簡単だから、まず何とか接続できる。問題としては接続先のPCを用意すること。社内で使っているPCを起動したままに置いておくこと。あと自宅用のPCがなければいけないので、2台必要である。大きな問題はセキュリティの問題。誰がいつアクセスしたかをログを残せるかなど、諸々。現在は緊急事態であるからある程度目をつぶるか。この騒動が落ち着いてから対応していくか。

    リモートディスクトップで試してみたのは、ChromeのRemote Desktopである。お客さんに勧めてみたところの問題は、Chromeがインストールされていない、そもそもGoogleのアカウントを持っていないであった。この条件を乗り越えれば導入は簡単である。

    次はNTT東日本のVPN+リモートディスクトップである。こちらはこのブログに書いてある。こちらも簡単に導入できる。ただし期間限定で無料になっている。

    最後はリモートディスクトップ定番のTeamViwerである。感じとしてはリモートディスクトップのアプリケーションとして至れり尽くせりである。使い勝手は一番良い。しかし月6万円と高額である。

    いろいろ考えてTeamViwerのビジネスライセンスを購入した。制限があるよりお金を支払って楽してしまおうと考えた。サポート相手のお客さんにも使い勝手でメリットある。まずはお客さんのところに導入する前に自分のところにTeamViwerを本格的に導入する。

    早速、TeamViewerのサイトから見積もりを依頼した。しばらくしてTeamViewerから電話(発信者番号からオーストラリア)があった。見積もり依頼の確認(郵便番号だけ)だった。すぐにメールで見積書が届いた。サイトの表示価格の10%引きだった。しかし、サイトから申し込んでも同じ割引きだから電話でも変わらない。1年後のライセンス延長も同じ割引きが適応されるそうだ。

    折り返し注文をメールしたら、つぎはライセンス登録と課金の案内が来た。ライセンスの登録は今使っている評価版にライセンスを追加するだけだった。そのまま使える。

    課金はPayPalで支払って完了。

    これで今後はTeamViewerを用いてのユーザーサポートとなります。もし、この記事を読んでいる方で、なにかリモートサポートをやってもらいたい方はご連絡ください。例えば、Wordpressの操作がわからないから教えてほしいとか、いろいろご相談ください。もちろん、リモートでアクセスしてもPCの中身は覗きません。

    それにしてもサブスクリプションでパッケージを契約することが増えてきた。Microsoft Office、 Adobe Dream weaver、Evernote, Dropbox, Atlassian Bitbucket, ESET Internet Securityなどなど。まだあるな。

    今度は新型コロナウイルスのテレワークの助成金を申請してみるか・・・。

    著:相原 秀哉
    ¥1,617 (2025/11/28 13:16時点 | Amazon調べ)

    追記

    結局、助成金の申請は断念した。TeamViewerを購入するくらいの金額では出ないことがわかった。TeamViewerの購入金額以上に申請がとても大変で割りに合わない。助成金は、間に入る申請代行業者を潤すだけかもしれない。

  • MacでファックスTiffファイルをプレビューするためにPDFファイルに変換した話し

    現在、NTTのひかり電話でFAXお知らせメールでファックスを受信しています。受信したファックスはTiffファイルでダウンロードされて保存されます。

    Windows10では保存されたTiffファイルはそのままファイルをクリックすればきれいにプレビューできますが、Macではプレビューが起動されTiffファイルは縦横比がおかしな画像で見えてしまいます。

    そこで何とか普通にファックスTiffファイルが見られるようにできないかとやってみました。やってみたのはMacのプレビューでTiffファイルをPDFファイルに出力して、そのPDFファイルをAdobeのAcrobat Readerで見れば普通にFAXを見ることができました。

    MacのプレビューでTiffファイルをPDFファイルに出力には、「ファイル」ー「書き出す」でフォーマットをPDFを指定して出力します。

    ファックスの画像をTiffファイルで持っていても使い勝手が悪いのでPDFファイルにした方がよいかもしれません。加えてテキストデータのOCR処理でもしておけばもっとよいかもしれません。

    後は私の場合、PDFファイルに変換したファックスをEvernoteに保存しておしまいです。

  • ケースファンの予防交換をした話し

    バックアップ用のWindow10PCから異音がするようになった。気にならないほどだが対応する。調べてみると、裏面のファンから音がしている。念のためにファンを交換する。

    12cmのケースファンだったので手持ちがない。そこでいつものアマゾンに注文する。注文したファンは適当である。とりあえずよさげで値段が安いものにした。たくさんありすぎてわからない。

    1つ300円位で安かった。これで1年くらい持ってくれればありがたい感じ。3つ入っているので、これから壊れているファンにでも対応していける。

    交換してみる。交換は簡単。5分くらいで完了。

    ケースファンの交換

    交換したファンは今は亡きソルダムのケースに付いてきたファンだった。もうどのくらい回っていたのだろうか? ケースの前にも交換してないファンが付いているけど、このファンはとても寿命が長い。

  • OMRON 無停電電源装置(UPS)のバッテリー交換をした話し

    OMRONの無停電電源装置(UPS)がアラーム音が鳴り出しました。バッテリー交換の合図。

    今日ようやくバッテリーの交換をしました。このBY50Sは電源が入ったままでも交換できます。念のためにオムロンのサイトでバッテリーの交換手順を調べておきます。UPSにつながっているサーバーをシャットダウンすることなく、バッテリーを交換できるのは大変楽チンです。でも、しくじると大災害ですけど。

    バッテリーの交換は簡単です。裏蓋を外してバッテリーを引き出し、電源コネクタを外すだけです。しかし、UPSを引き出すときに裏面のコンセントを抜かないように注意しなければいけません。

    Cyber Power
    ¥13,499 (2025/11/28 16:45時点 | Amazon調べ)
    オムロン(OMRON)
    ¥21,900 (2025/11/23 13:03時点 | Amazon調べ)

    万が一に備えて、使用するデスクトップPCにはUPSにつなげて停電に備えましょう。停電でいきなり電源が落ちると、最悪の場合ディスクが逝って復旧が難しいことがあります。ノートPCはバッテリーが付いているのでUPSは必要ありませんが、落雷の場合はコンセントにつながっているとダメージを受けることがありますので、ご注意を。

    交換して 「ブザー停止/テスト」スイッチ を押すと、表示が「bC」となってバッテリーテストになります。

    しばらくすると(とても時間かがかかる)表示がOnになって、無事にバッテリーテストがOKとなりました。

    実は、この交換したバッテリーは、パッテリーを交換する前に本体が壊れたAPCのUPSから取り出したバッテリー(しかもLONGの互換バッテリー)なのでした。しばらくすれば、どうせまたバッテリー交換のアラーム音が鳴り出しそうです。

    そういえば、オムロンのサイトによると3年でバッテリー交換のアラームがなると無償でバッテリーを送ってくれるサービスがあるようです。このバッテリーは4年前に購入して1回バッテリーを交換しています。ということは、無償でバッテリーを交換してくれることを知らずに、3年以内で交換してしまったようです。そのときもオムロン純正のバッテリーで交換していないので仕方ないですけど。

    オムロン(OMRON)
    ¥12,800 (2025/11/21 23:18時点 | Amazon調べ)

    続きはこちらから

  • OCNモバイルOneの新サービスはVPNで接続できるの? という話し

    思いつきでOCNモバイルOneの新サービスに申し込んでみたけど、よく考えるとグローバルのIPアドレスを割り当ててくれるのかしら? 現在のOCNモバイルはグローバルのIPアドレスを割り当ててくれる。

    まさか一般のモバイルの事業者のようにシェアードアドレスになっているなんてないよね? 可能性は大きそうだな。

    もし、シェアードアドレスだったら、モバイルでVPNで接続でないことになる。何かいい方法を考えなければいけない。OCNはすんなり接続できていたので、面倒なことになりそう。

    著:戸根 勤
    ¥2,376 (2025/11/23 11:12時点 | Amazon調べ)
    著:Gene
    ¥924 (2025/11/22 15:10時点 | Amazon調べ)