カテゴリー: PC Page 38 of 50

redmineプラグイン:local avater導入。

概要

redmine、ユーザのアイコンを外部サービスで入れ替えることができますが、redmineのみで完結させるようにプラグインを導入しました。

手順

すべて管理者権限で実施しています。

cd /var/lib/redmine/plugins/
# 自分のredmineプラグインのパスに移動します
sudo -u www-data git clone https://github.com/taqueci/redmine_local_avatars.git
bundle install
bundle exec rake redmine:plugins RAILS_ENV=production
systemctl restart apache2

導入後

ログイン > 個人設定に「アバターの変更」というボタンが表示されます。

画像をアップロード後、変更を確認。

VNCを利用したLinuxへのリモートデスクトップ

概要

普段、宅内サーバにはSSHでログインしているものの、デスクトップで確認したいときがあります。そのため、リモートデスクトップ環境を整えました。

前提

Linuxデスクトップが動いていること。

接続先(Linux側)の手順

一般のユーザで行います。(root環境でリモートデスクトップ接続できてしまうため

VNCサーバのインストールを行います。

sudo aptitude install tigervnc-standalone-server 

インストール後の設定と起動を行います。

vncpasswd
#接続用のパスワードを設定します
vncserver -localhost no
起動確認を行います。
vncserver -list

TigerVNC server sessions:

X DISPLAY #     RFB PORT #      PROCESS ID
:1              5901            13062
# この:1は接続元で用います

のように表示されれば大丈夫です。

接続元(Windows)の手順

適当なVNCクライアントをダウンロード&インストールします。

RealVNCを用いました。

接続を行います。

  1. RealVNC(VNCビューア)を起動します。
  2. 接続先のホスト名/IPアドレス:(vncserver -listで出てきた番号)を入力します。
  • 例 hoge.hogehoge:1
  1. vncpasswdで設定したパスワードを入力します。(ユーザパスワードでないことに注意してください)

デスクトップ画面が出てくることを確認します。

rsyncdとlsyncdによるリアルタイム同期。

自宅サーバのredmineの耐障害性を高めるため、

flowchart LR Redmine -- rsyncによる転送--> Backup

を仕込みました。

環境

  • バックアップ元(Linux Mint 20.03)
  • バックアップ先(Kubuntu 20.04)

共にrsyncdはインストールされています。

参考:
https://www.server-world.info/query?os=Ubuntu_18.04&p=rsync
https://www.server-world.info/query?os=Ubuntu_18.04&p=lsync

バックアップ先の設定:

vi /etc/rsyncd.conf
ファイル内容
[backup]
path = /home/backup/redmine
hosts allow = [バックアップ元のIPアドレス]
hosts deny = *
list = true
uid = www-data
gid = www-data
read only = false

バックアップディレクトリ作成

mkdir /home/backup/redmine
chown -R www-data:www-data /home/backup/redmine

systemctl restart rsync.service

バックアップ元の設定:

rsyncのテストを行う。

rsync -avz --delete /home/hoge/test.txt バックアップ先::backup

バックアップ先にtest.txtが格納されることを確認しました。

lsyncdのインストール

aptitude install lsyncd
mkdir /etc/lsyncd
vi /etc/lsyncd/lsyncd.conf.lua

ファイル内容

settings{
    logfile="/var/log/lsyncd/lsyncd.log",
    statusFile = "/tmp/lsyncd.stat",
    statusInterval = 1,
}
sync{
    default.rsync,
    source="/var/lib/redmine/",
    # redmine配下をまるごとバックアップします。
    target="[バックアップ先]::backup",
}

lsyncdのログ設定

mkdir /var/log/lsyncd
vi /etc/logrotate.d/lsyncd
ローテーションファイルの内容
/var/log/lsyncd/*.log {
        missingok
        notifempty
        copytruncate
        compress
}

サービス反映

systemctl restart lsyncd
systemctl status lsyncd
systemctl enable lsyncd

リアルタイムの設定確認

tail -f /var/log/lsyncd/lsyncdlog
#別ウィンドウで開きます
cd /var/lib/redmine
touch test.txt

ファイル追加後、ログに以下を確認。

Fri Apr 15 20:38:41 2022 Normal: Calling rsync with filter-list of new/modified files/dirskup/ finished.
/test.txt
/
Fri Apr 15 20:38:41 2022 Normal: Finished a list after exitcode: 0
rm test.txt

ファイル削除後、ログに以下を確認しました。

Fri Apr 15 20:39:51 2022 Normal: Calling rsync with filter-list of new/modified files/dirs
/test.txt
/
Fri Apr 15 20:39:52 2022 Normal: Finished a list after exitcode: 0

まとめ

により、要のDBのバックアップとリストアができたことは確認済み。

後は復旧できるかどうかを試してみます。

ローカルredmineのSSL化。-ローカル証明書のインストールと常時SSL化-

この記事の続きです。

ここでは、mkcertで作成したローカル証明書をredmineサーバに入れておきます。

また、

  • httpを強制的にhttpsにリダイレクト
  • http://ip or DNS名 のアクセスをhttps://ip or DNS名/redmineへとリダイレクトする

設定も同時に入れ込みます。

redmineサーバ上での設定

必要なモジュールの有効化

a2enmod ssl
a2enmod rewrite
systemctl restart apache2
ss -lntp
# 443ポートがLISTENされていることを確認します

証明書ペアの格納

mkdir /etc/certs/
mkdir /etc/private/

その後、

/etc/certs → SSL証明書

  • corn.wall.crt.202204

/etc/private/ → 秘密鍵

  • corn.wall.key.202204

をそれぞれ格納します。

証明書ペアのシンボリックリンク化

後々のメンテナンスを考えて、証明書をシンボリックリンク化します。

cd /etc/certs/
ln -s corn.wall.crt.202204  corn.wall.crt
cd /etc/private/
ln -s corn.wall.key.202204 corn.wall.key

Virtualファイル記載

cd /etc/apahce2/site-available/
cp -pi redmine.conf /path/to/backup/redmine.conf.org
vi redmine.conf
redmine.confの内容
<VirtualHost _default_:80>
 RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
        #http通信を強制的にhttpsにリダイレクト
</VirtualHost>

<VirtualHost _default_:443>
  SSLEngine on
    SSLProtocol All -SSLv2 -SSLv3  -TLSv1
    SSLCertificateFile /etc/certs/corn.wall.crt
    # 証明書
    SSLCertificateKeyFile /etc/private/corn.wall.key
    # 秘密鍵

        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^penzance\.corn\.wall
        RewriteRule ^/$ https://penzance.corn.wall/redmine/ [R]
        # https://penzance.corn.wallへのアクセスをhttps://penzance.corn.wall/redmine/にリダイレクト

Alias /redmine /var/lib/redmine/public
CustomLog /var/log/redmine/access.log combined
ErrorLog /var/log/redmine/error.log
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
Require all granted
</Location>

</VirtualHost>

設定反映

apache2ctl configtest
# SyntaxOKを確認
systemctl restart apache2

再起動後、

  • redmineの通信がhttpsで行えること
  • ホスト名でアクセスしても/redmine/に移動すること

を確認しました。

補足とまとめ

  • セキュリティソフトによっては、このローカル認証局を「信頼できない」としてブロックする場合があります。その時はその設定を解除します。
  • また、mkcertsは開発用途なので外に出ていけないローカル環境での運用が前提です。
  • そのためか証明書の有効期限は3ヶ月。この運用をもっと楽にするのが今後の目標です

ローカルredmineのSSL化。-mkcertのインストール-

また、やりたいことに一歩近づきました。

  • 外に出ていけないローカルドメインでもSSL通信はしたい
  • 自己証明書と違った形でSSLを発行したい

という希望を求めていたら、「mkcert」なるものを発見したので、導入してみました。

redmineのSSL化

homebrewのインストール(検証機で実施する)

参考:
https://tdomy.com/2021/12/how-to-install-homebrew-on-ubuntu/

必要パッケージ取得

rootでは実行しないこと

sudo aptitude install libnss3-tools git curl

homebrewインストール

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)"
test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
test -r ~/.bash_profile && echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >>~/.bash_profile
echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >>~/.profile
brew --version
brew install hello
hello
brew uninstall hello

mkcertインストール

https://www.hivelocity.co.jp/blog/46149/

brew install mkcert
mkcert -install
mkcert -CAROOT
# ~/.local/share/mkcert配下にルート証明書とルート秘密鍵を確認
cd ~/.local/share/mkcert

mkcertで証明書発行

ここでは、自宅redmineに用いている

penzance.corn.wall

の証明書を発行します。

mkcert -key-file corn.wall.key.202204 -cert-file corn.wall.crt.202204 corn.wall penzance.corn.wall "*.corn.wall" 
openssl x509 -text -noout -in ./corn.wall.crt.202204 |grep DNS
# DNS:corn.wall, DNS:penzance.corn.wall, DNS:*.corn.wall と、入力したDNS名があることを確認します

次のエントリーでは、redmineにSSLを入れ込んでいきます。

redmineのアクセスログを統合。

Redmineのログ表示プラグインを導入しているのだから、ここにapacheのアクセスログを一緒にしました。

環境

  • Linux Mint 20.03(Ubuntu 20.04)
  • Redmine 4.2
  • Apache/2.4.41

前提

こちらの記事にある

  • redmineのログ管理プラグイン導入
  • redmineのログローテート設定

設定は行っているものとします。

また、redmineのproduction.logは/var/log/redmine配下に移動。(本来のログのところにシンボリックリンクを張っています)

手順

全てアクセス権限で行っています。

ログ設定

cd /etc/apache2/sites-available/
vi redmine.conf
追記内容
CustomLog /var/log/redmine/access.log combined
ErrorLog /var/log/redmine/error.log

システムへの反映

systemctl restart apache2

ログ確認(サーバ)

tail -f /var/log/redmine/access.log

を流しながら該当のredmineにアクセスし、ログが出ることを確認しました。

ログ確認(redmine)

  1. 管理者権限でログイン
  2. 管理>ログに移動
  3. /var/lib/redmine/log/access.logをクリック

しましたが、ここで404エラー。

サーバ側で

chown www-data:www-data /var/lib/redmine/log/access.log

を設定後、再度redmineのログを確認し、表示されていることを確認です。

室内サーバ増強計画:第一段階完了。(そしてUbuntu Studioインストール)

ここ2週間の私的プロジェクト、ようやく決着です。

これまでの経緯

元々は「自分のミスにより検証機として用いていたredmineをクラッシュさせた」ことが発端。

ToDo / 進捗 / メモを管理・保管するツールとしてredmineは検証から本番へと格上げする必要がありました。

そこで、

  • 安価
  • 小型
  • 省電力

の三拍子が揃ったChuwi Heroboxに白羽の矢を立ててサーバの構築を行いました。

このサーバが思ったよりも快適だった&冗長化構成を取りたいためにもう一台購入したのが先週。

サーバの役割

現時点で、2つのサーバの役割は以下のとおりです。

サーバ1:Penzance

こちらはredmine専用。今後、自分の記録の核とするために他の機能は省こうと思います。(先代をクラッシュさせたのも、『他の機能を追加した』からでした

サーバ2:Paddington

こっちは

  • ローカルDNS
  • Zabbix
  • Knowledge(redmineの設定記録)
  • Lychee(フォトアルバム)

など、ネットワークの補助やredmineが苦手とする「写真の一覧」を収めるサーバになりました。

Linux Studio

サーバを2台構成にしたことで、今までredmineその他を入れていたPCが浮くことになりました。

これを活用するために、原点回帰です。検証機としての機能を有し、かつ、各種コンテンツの利用に耐えるLinuxとして選んだのがUbuntu Studio

使い慣れたKDEデスクトップが選択の決め手となりました。

好き勝手できる環境が一つあるというのは精神的な助けにも繋がります。

Webアルバムシステム『Lychee』感想。

新サーバに導入したWebアルバム『Lychee』。極めて満足度が高いシステムでした。

長所

操作の簡単さ

  1. アルバムを作る
  2. ブラウザ内部に写真をドラッグ&ドロップ

で登録完了。別のアルバムに移動させるのもファイル名変更も直感的に分かります。

速さ

「ゲートウェイを通さない」アドバンテージを差し引いても画像のアップロード、表示、画像の切り替えが異次元の速度です。

これにより、ファイルサーバにため込んでいた写真を見返すことができるようになりました。

短所

メニューが日本語非対応

簡単に操作できますが、使い方やメニューが日本語非対応なので敷居は高めです。

フォルダをまるごとインポートできない

ルートフォルダ
 └フォルダA(写真x枚)
 └フォルダB(写真y枚)

という構成でルートフォルダをドラッグ&ドロップしてもインポートすることができません。
同じく、フォルダA/Bだけをドラッグ&ドロップしても中の写真がインポートできません。対象はあくまでも写真ファイルのみです。

まとめ

「フォルダをまるごとインポートできない」はやや大きめの短所。
とはいえ、この早さや簡便さは他の群を抜いています。

今までに撮りためた写真を再活用するためにも、この「Lychee」を扱ってみようと思いました。

Ubuntu 20.04にフォトアルバム『Lychee』をインストール。

「速い」「軽い」「扱いやすい」が揃ったWebアルバムLycheeをローカルで建てたUbuntu20.04(Kubuntu)にインスールしてみました。

(参考:写真サーバ Lychee)

前提

  • MySQL導入済み
  • Apache導入済み
  • php7.4導入済み

ハードウェアは「Chuwi Herobox Pro」。1TBのSSDをまるごとホームディレクトリに割り当てています。

手順

PHP設定

この通りにMemory Limitやアップロードできるファイル容量を増やしています。(大きめの写真ファイルを扱うため)

DB作成

mysql -u root -p
CREATE DATABASE lychee character set utf8 collate utf8_bin; 
CREATE USER 'lychee'@'localhost' IDENTIFIED BY 'パスワード'; 
GRANT ALL PRIVILEGES ON lychee.* TO 'lychee'@'localhost' WITH GRANT OPTION; 
FLUSH PRIVILEGES;
quit

Lycheeダウンロード

mkdir /home/www-data
# 上述した1TB/homeを有効活用するため、サイトディレクトリをここにします。
cd /home/www-data
git clone https://github.com/electerious/Lychee.git lychee

Lycheeディレクトリ設定

chown -R www-data:www-data /home/www-data/
chmod 777 /home/www-data/lychee/data/
chmod -R 777 /home/www-data/lychee/uploads/
cd /var/www/html
ln -s /home/www-data/lychee/ lychee

バーチャルサイト設定

vi /etc/apache2/sites-available/lychee.conf

設定内容

<VirtualHost *:80>
   DocumentRoot /home/www-data/lychee/
      <Directory /home/www-data/lychee/>
         Options Indexes FollowSymLinks MultiViews
         AllowOverride All
      </Directory>
</VirtualHost>

設定有効化

a2ensite lychee
systemctl restart apahce2

設定後、

http://[IP or ホスト名]/lychee

でインストール画面が現れました。

DB名
DBパスワード

などを入れれば設定完了です。

Lycheeの画面

基本的に

  • アルバムを作る
  • ドラッグアンドドロップで写真を放り込む

とシンプルな作り。(Dropbox連携などもあるようですがセキュリティの事情で省いています)

ただ、それを補って「高速描画/高速処理」が快適です。自分の写真管理の新たな友となることは間違いなく、後日、改めて紙幅を設けたいと思います。

Ubuntu20.04にTomcat8とknowledgeを導入。

バージョンを落としてでも用いたいシステムがありました。

Dockerではなくオンプレ環境で整えます。メインをredmineにしたものの

「redmineの障害に備えた構築メモ」が欲しかったのもあります。

また、PDFをプレゼン形式で表示してくれるのはこのシステムの強み。

先だってredmineとは別のサーバを入手したので早速のインストールです。

環境

  • Ubuntu 20.04(Kubuntu)

手順

JDKインストール

aptitude openjdk-8-jdk

java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1~20.04-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

その後、Tomcatをaptitude(apt)でインストールを試みましたがaptitude(apt)でサポートするTomcatのバージョンは9。
knowlegeの対象外です。(knowledgeのシステム要件はTomcat8)

そこで、以下の手段を執りました。

Tomcatユーザー作成

mkdir /opt/tomcat

groupadd tomcat

useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

Tomcat8のダウンロードと展開

cd /tmp
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz
# DL先は2022/04/03時点のものです
tar -xf apache-tomcat-8.5.5.tar.gz -C /opt/tomcat/
ln -s /opt/tomcat/apache-tomcat-8.5.5 /opt/tomcat/latest
cd /opt/tomcat/latest/bin
chmod +x *.sh

Tomcat8の起動スクリプトを作成

vi /etc/systemd/system/tomcat.service
スクリプト内容

(CentOSから流用したので怪しい部分があります)

[Unit]
Description=Tomcat 8 servlet container
After=network.target

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/tomcat/latest/temp.pid
RemainAfterExit=yes

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
ExecReStart=/opt/tomcat/latest/bin/shutdown.sh;/opt/tomcat/latest/bin/startup.sh

[Install]
WantedBy=multi-user.target

Tomcat8のサービス化

chmod +x /etc/systemd/system/tomcat.service
systemctl daemon-reload
systemctl enable tomcat
systemctl start tomcat
systemctl status tomcat

ステータス確認

 systemctl status tomcat
● tomcat.service - Tomcat 8 servlet container
     Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sun 2022-04-03 09:29:44 JST; 30min ago
    Process: 12416 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
   Main PID: 12416 (code=exited, status=0/SUCCESS)

Knowlegeインストール

cd /opt/tomcat/latest/webapps/
wget https://github.com/support-project/knowledge/releases/download/v1.13.1/knowledge.war
chown -R tomcat:tomcat knowledge.war 
systemctl restart tomcat

インストール後、

http://[インストールしたホスト]:8080/knowledge

でアクセスできることを確認しました。

Page 38 of 50

Powered by WordPress & Theme by Anders Norén