2019年7月23日火曜日

Redmineインストール

いまさらだけど、やっぱりタスク管理をやってみたくて
超メジャーにすることにした。
https://propagandes.info/redmine-install/
動作環境
http://guide.redmine.jp/RedmineInstall/#Requirements
あれ、MariaDBだめなの??
じゃあ、新たにPostgreSQLを入れるか、Dcoker使って環境作るか・・・。
まずはお試しなので、Docker使ってみようかな。
https://qiita.com/bezeklik/items/b9d75ee74e0ae4c6d42c
悩む・・。
https://www.untrustedconnection.com/2018/01/redmine-passenger-and-nginx-on-ubuntu.html
悩んだ時は巨人の肩に乗る!
https://github.com/sameersbn/docker-redmine

MariaDBのデータディレクトリ移動

よくよく見たら、データがraid環境下に保管されていなかった。あちゃー
cat /etc/mysql/mariadb.conf.d/50-server.cnf
-------------------------------------------
(略)
#
# * Basic Settings
#
user  = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket  = /var/run/mysqld/mysqld.sock
port  = 3306
basedir  = /usr
datadir  = /var/lib/mysql
tmpdir  = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
(略)
のdatadirを"/mnt/4Traid1/dbdata"に変更したい
systemctl stop mariadb.service
50-server.cnfのdatadb書き換え
データ移動
systemctl start mariadb.service
これで少し安心。

いざRedmine

http://www.makcraft.com/blog/meditation/2019/01/19/running-redmine-on-docker-containers/

Dockerの準備

https://docs.docker.com/install/linux/docker-ce/ubuntu/
基本的にはこの手順。だけど、Ubuntuじゃないので、注意。
$ lsb_release -cs
tara
「tara」は「Ubuntu 18.04 LTS」をベースにしているらしい。
で、これのコードネームは「bionic」らしい。
https://ja.wikipedia.org/wiki/Linux_Mint
https://www.ubuntulinux.jp/News/ubuntu1804
なので、「$(lsb_release -cs)」の部分を書き換える。

まずはクイックスタートを試してみる

https://github.com/sameersbn/docker-redmine#installation
docker pull sameersbn/redmine:latest
docker run --name=postgresql-redmine -d --env='DB_NAME=redmine_production'   --env='DB_USER=redmine' --env='DB_PASS=password' --volume=/srv/docker/redmine/postgresql:/var/lib/postgresql sameersbn/postgresql:9.6-4
docker run --name=redmine -d --link=postgresql-redmine:postgresql --publish=5080:80 --publish=50443:443 --env='REDMINE_PORT=5080' --volume=/srv/docker/redmine/redmine:/home/redmine/data sameersbn/redmine:4.0.4
https://サーバー:5080にアクセスすると


おぉ!

外部SQLサーバーを使ってみる

せっかく母艦のほうにMariaDBがあるのでPostgreからこっちに切り替えてみる
Redmineのコンテナからアクセスできるようにする。振られたIPはなんだろうか?
https://qiita.com/miyatahirotaka/items/a44e2ae0bac53a4a5feb
https://qiita.com/suin/items/50033dc60bfba8553395
http://docs.docker.jp/engine/userguide/networking/dockernetworks.html
docker exec -i -t redmine bash
root@57a:/home/redmine/redmine# hostname -i
172.17.0.3

MariaDBの設定変更

外部からアクセス出来るようにする。
https://qiita.com/tocomi/items/0c009d7299584df49378
vi /etc/mysql/mariadb.conf.d/50-server.cnf
-----------
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address            = 127.0.0.1
-----------
service mariadb restart

MariaDBにDBとユーザー作成

CREATE USER 'redmine'@'172.17.%' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS `redmine_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'172.17.%'
試しに、コンテナの中からアクセス出来るか確認してみる
docker exec -i -t redmine bash
root@57a:/home/redmine/redmine# mysql -u redmine -p --host==サーバーIP

起動中のRedmineとPostgreを停止する

プロセスの確認と停止
docker ps -a
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                     PORTS               NAMES
57aee49d39b6        sameersbn/redmine:4.0.4      "/sbin/entrypoint.sh…"   5 days ago          Exited (0) 5 seconds ago                       redmine
78b9389d7745        sameersbn/postgresql:9.6-4   "/sbin/entrypoint.sh"    5 days ago          Up 5 days                  5432/tcp            postgresql-redmine

docker stop redmine
docker stop postgresql-redmine
コンテナの削除
docker rm redmine
docker rm postgresql-redmine
http://www.risewill.co.jp/blog/archives/6793

外部SQLサーバーを指定して起動してみる

docker run --name=redmine -it --rm \
--env='DB_ADAPTER=mysql2' \
--env='DB_HOST=192.168.1.25' --env='DB_NAME=redmine_production' \
--env='DB_USER=redmine' --env='DB_PASS=password' \
--env='REDMINE_HTTPS=false' \
--publish=5080:80 --publish=50443:443 --env='REDMINE_PORT=5080' \
--volume=/srv/docker/redmine/redmine:/home/redmine/data \
sameersbn/redmine::4.0.4
さぁ



わぉOrz
ログを確認してみる。
docker exec -i -t redmine bash
tail -f /var/log/redmine/redmine/production.log
----
Started GET "/" for 127.0.0.1 at 2019-07-09 22:40:27 +0000
Processing by WelcomeController#index as HTML
Completed 500 Internal Server Error in 8ms (ActiveRecord: 3.8ms)
  
ActiveRecord::StatementInvalid (Mysql2::Error: Table 'redmine.settings' doesn't exist: SHOW FULL FIELDS FROM `settings`):
  
app/models/setting.rb:235:in `check_cache'
app/controllers/application_controller.rb:90:in `user_setup'
----
DBを見てみると、空っぽだった。なぜ?
http://guide.redmine.jp/RedmineInstall/#step-6-
https://qiita.com/bezeklik/items/b9d75ee74e0ae4c6d42c
初期設定が必要なのか??
docker exec redmine bundle exec rake db:migrate RAILS_ENV=production
docker exec redmine bundle exec rake redmine:load_default_data RAILS_ENV=production REDMINE_LANG=ja
これで再度アクセスしてみると



やったー
admin/adminで入ろう
よしよし、良さそう!

スマホアプリを使ってみる

宅内では使えそうなので、外出先での使用を考えてスマホアプリを導入してみる。
http://redminepm.com/ja
あまり、外部からアクセスできるポートを何個も開けるのは気分的に嫌だったので、
さらに当面は自分しか使わないので、sshポートフォアードを使用した。
使う時だけlocalhost:5080とサーバーの5080をつなげる。



タスクを眺めるにはアプリが見やすいと思う



チケットを割り当てたり、ガントチャート見たりはブラウザと使い分けると幸せになれそう。
しばらくはこれでやってみようと思う。

2019年7月9日火曜日

Restyaboard導入→やめた

タスク管理とかスケジュール管理とかしてみたくなった。
当分は個人使用だけど、もし良かったら社内展開するかも・・・。
という理由から、クラウド型ではなくオンプレミスで
かつ意識高い低いにかかわらず簡単に使えるものを探したいと思った。

Restyaboardとはどんなもの

まずは触ってみるべし
https://restya.com/board/demo
説明はmoongiftさんから
https://www.moongift.jp/2018/01/restyaboard-trello風のカンバンシステム/

インストール

GET STARTED を選択すると以下のページ飛んで、ユーザー登録のようなことをする
https://restya.com/board/install
インストール方法は直に?行うパターンとDockerを利用するものがあるみたい
必要な環境として
Required software: nginx, php-fpm (with mbstring, ImageMagick and IMAP), PostgreSQL, GeoIP and jq
あれ、PostgreSQLがいるのか
お試しで入れるのにはちょっとめんどくさい気がしてきたので、もっとめんどくさいかもしれなけど、Dockerを使うパターンで試してみようと思う。
https://hub.docker.com/r/restyaplatform/restyaboard/

Dockerのインストール

入れたい環境はMintだけど、Ubuntuの情報でもいいよね!ってあとで躓くけどね。
https://qiita.com/tkyonezu/items/0f6da57eb2d823d2611d
https://docs.docker.com/install/linux/docker-ce/ubuntu/
最初qiitaの方だけで進めていたら、リポジトリが見つからなかった。
docker公式見たら、Mintの場合は注意せよと書いてあったOrz
$ lsb_release -cs
sylvia
「sylvia」は「Ubuntu 16.04 LTS」をベースにしているらしい。
で、これのコードネームは「xenial」らしい。
https://ja.wikipedia.org/wiki/Linux_Mint
https://www.ubuntulinux.jp/News/ubuntu1604
なので、「$(lsb_release -cs)」の部分を書き換える。
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   xenial \
   stable"
あとは手順通り進めていき、hello-worldを実行してみる
sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

あとは、docker-composeのインストールを行う

Restyaboardのインストール

Readmeとか他のインストール事例を参考にした
sudo git clone 指定されたURL
cd board/
sudo docker-compose up --build
docker-scripts/docker-entrypoint.shを修正する?
参考
https://hub.docker.com/r/restyaplatform/restyaboard/
https://github.com/RestyaPlatform/board/wiki/Docker:-Build-and-Install
https://github.com/RestyaPlatform/board
https://qiita.com/jakelizzI/items/07888636e28ce3a186f4

起動

localhost:1234にアクセスすると
初期はadmin - restya
言語の変更は、以下の通り。


適当にカンバンボードを作成したら、、、

ド派手な背景と、大音量の音楽が・・・Orz
ちょっと使っていく自信がなくなった。
ぼにーえむって誰??

初期設定

ポートとか
sudo docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                  NAMES
c1f801aac2e2        board_restyaboard                "/docker-entrypoint.…"   2 days ago          Up 46 hours         0.0.0.0:1234->80/tcp   board_restyaboard_1
63aea7bb5e9c        postgres:9-alpine                "docker-entrypoint.s…"   2 days ago          Up 46 hours         5432/tcp               board_postgres_1
fb74fd78bc39        restyaplatform/restyaboard:dev   "/docker-entrypoint.…"   2 days ago          Up 2 days           0.0.0.0:8081->80/tcp   restyaboard
1234は以下で変えれそう
cat docker-compose.yml
version: '2'
services:
  restyaboard:
    build: .
    ports:
      - 1234:80
    environment:
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=admin
      - POSTGRES_DB=restyaboard
      - SMTP_DOMAIN=domain
      - SMTP_USERNAME=user
      - SMTP_PASSWORD=pass
      - SMTP_SERVER=server
      - SMTP_PORT=465
      - TZ=Etc/UTC
    depends_on:
      - postgres
    restart: always

  postgres:
    image: postgres:9-alpine
    environment:
      - POSTGRES_HOST=postgres
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=admin
      - POSTGRES_DB=restyaboard
    restart: always

壁紙と音楽とか

https://restya.com/board/apps/r_codenames
のようにコードネームとしてBoneyMを使っているみたい。
コミュ障の僕にはこの壁紙・音楽は派手すぎるので、申し訳ないが使用しないようにしたい。
BoneyMの壁紙・音楽の消し方は以下にコメントしてあった。
https://groups.google.com/forum/#!topic/restya/x4S2xabpUtI
So, with our Codename App, all new boards will get Boney M wallpaper and productivity beat automatically. If you want to disable this behavior, please disabled Codename App.
ということで、CodenameAppを無効化してみる


非表示になったー!!

ガントチャートが欲しい

デフォルトでは入っていないみたい
https://restya.com/board/apps/r_gantt_view

インストール方法

docker環境でどうやって入れていいか・・・
とりあえず、コンテナの中に入ってみる
sudo docker exec -i -t restyaboard bash
root@fb74fd78bc39:/usr/share/nginx/html# ls
api_explorer  client  diagnose.php  ejabberd.yml  index.html  media  restyaboard-ssl.conf  restyaboard.conf  server  sql
入れたのか・・?
https://qiita.com/__cooper/items/4740c24666299c366044
あとは、手順どおりにやってみる
cd /tmp
wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.zip
unzip ioncube_loaders_lin_x86-64.zip
php -v
PHP 7.2.19-1+0~20190531112637.22+stretch~1.gbp75765b (cli) (built: May 31 2019 11:26:38) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.19-1+0~20190531112637.22+stretch~1.gbp75765b, Copyright (c) 1999-2018, by Zend Technologies
php -i | grep extension_dir
extension_dir => /usr/lib/php/20170718 => /usr/lib/php/20170718
cp ioncube/ioncube_loader_lin_7.2.so /usr/lib/php/20170718/
vi /etc/php/7.2/fpm/php.ini
zend_extension = /usr/lib/php/20170718/ioncube_loader_lin_7.2.so
あと、viが入っていなかったので、インストールした。
https://qiita.com/YumaInaura/items/3432cc3f8a8553e05a6e

肝心のgantt_viewが入手できない

アプリの説明を見ても入手方法がよくわからないが、多分有料なのだろう。
でも価格がわからない。(BUY)押してもコンタクトフォームに飛んでしまう。
https://restya.com/board/apps/r_gantt_view
デモサイトではいい感じだったのだけど、ちょっと心が離れた。
docker触れたし、いい勉強になったはず。

2019年6月18日火曜日

IPoE導入

IIJからIPoE月額オプション無料の連絡が来た。
https://www.iijmio.jp/imh/ipoe/
2020/6/30までらしい。
最近、ビデオ電話とかYoutubeにお世話になる機会が多くなったことと
夜間帯のスピードが遅いように思えてきたので、IPoE導入してみようと思う。
IIJmioひかりで提供してくれるのはDS-Liteというもの。
http://techlog.iij.ad.jp/archives/1254

現状

スピードテスト
サイト 機器 下り 上り レイテンシ
Google PC Giga有線LAN 229.6Mbps 290.4Mbps 3ms
Google スマホ1 無線LAN 2.4G 11n 9.78Mbps 23.6Mbps 5ms
Google スマホ2 無線LAN 2.4G 11n 42.3Mbps 54.5Mbps 4ms
Google PC 無線LAN 5G 11n 95.7Mbps 11.4Mbps 5ms
fast.com PC 有線LAN 220Mbps 280Mbps 3ms
fast.com スマホ1 無線LAN 2.4G 11n 26Mbps 28Mbps 8ms
fast.com スマホ2 無線LAN 2.4G 11n 68Mbps 200Mbps 4ms
fast.com PC 無線LAN 5G 11n 150Mbps 87Mbps 5ms
2019/06/02 21時ごろ
あれ、、、遅いのはスマホ1のせい?
どうしよう、ギガビットHUBとか買っちゃったよ。
よく調べてからやろうと思ったのに、つい先走ってしまった。。。

構成

現状の構成は以下の通り

自宅サーバーのためにポートフォファードしている。
DS-Lite使うとこれができなくなってしまうらしい。

いざIPoEオプション加入へ

https://www.iijmio.jp/imh/ipoe/
から申し込みを行う。設定完了までに最大3日かかるみたい。
すぐじゃなかったー。よく読んでおけばよかった。

新しい構成を考える

高性能なルーターでPPPoEとDS-Liteを同居ささる方法がシンプルだけど、そんなに設備投資できない。
今ある環境を利用しつつだと2つの案がありそう。
■案1



■案2



自宅サーバーにPPPoEはらせるのは、なんとなく怖い?ので、案1で考えてみたいとおもう。

DS-Lite設定

https://www.iijmio.jp/service/detail/imh/setup.jsp
を参考に設定を行う。









ゲートアドレスに[gw.transix.jp]を設定して、あとはNDプロキシーを使用するようにする。
NDプロキシーとは…
IPv6のパケットを、ルータを介して通信する機能です。
https://qiita.com/sumomoneko/items/fa56737f97beff3566f3
これで終わりらしい。
気になる速度は・・。
スピードテスト
サイト 機器 下り 上り レイテンシ
Google PC Giga有線LAN 312.8Mbps 318.6Mbps 3ms
Google スマホ1 無線LAN 2.4G 11n 7.61Mbps 36.4Mbps 5ms
Google スマホ2 無線LAN 2.4G 11n 33.3Mbps 38.9Mbps 4ms
fast.com PC 有線LAN 390Mbps 450Mbps 4ms
fast.com スマホ1 無線LAN 2.4G 11n 130Mbps 130Mbps 5ms
fast.com スマホ2 無線LAN 2.4G 11n 49Mbps 41Mbps 5ms
2019/06/18 1時ごろなので、一概に比較は出来ないけど。。

自宅サーバー側の設定

複数ネットワーク接続となるので、デフォルトの通信経路などの設定が必要になる。
Router2は今までどおり192.168.1.0/24、Router1は192.168.2.0/24を使用しようと思う。

webminのアクセス制限

miniserv.confに追記
allow=127.0.0.1 192.168.1.0/24 192.168.2.0/24

NextCloudのアクセス制限

config.phpに追記
  array (
    0 => 'localhost',
    1 => '192.168.1.*',
    2 => '192.168.2.*',
    3 => '##########.mydns.jp',
  )

デフォルトゲートウェイの変更1

Router1(192.168.2.0/24)をデフォルトになるように変更したい。
root@blackcube:~# route -n
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 enp2s0
0.0.0.0         192.168.2.1     0.0.0.0         UG    101    0        0 enx04ab1822fc5e
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp2s0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp2s0
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 enx04ab1822fc5e
root@blackcube:~# route del default gw 192.168.1.1
root@blackcube:~# route -n
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
0.0.0.0         192.168.2.1     0.0.0.0         UG    101    0        0 enx04ab1822fc5e
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp2s0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp2s0
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 enx04ab1822fc5e
https://asmsuechan.hatenablog.com/entry/2018/07/20/181359
https://qiita.com/devzooiiooz/items/256e41c9cfccd00fd593
https://qiita.com/devzooiiooz/items/4e2e1c5264d8960eb412

デフォルトゲートウェイの変更2

さっきのでOKと思ったら、MyServerがRouter1側のグローバルIPを見失ってRouter2側のIPをmydnsに通知している。なぜだ・・・。 その時にroute -nしてみたら192.168.1.1が復活している、しかもMetricが192.168.2.1よりも若いから、そうなるか。
更に調べると、片側のNICのデフォルトゲートウェイを無視する設定が必要みたい さっきの手順は一時的な方法のようだ

nmcli connection modify 有線接続\ 1 ipv4.never-default yes
nmcli connection modify 有線接続\ 1 ipv4.ignore-auto-routes yes
nmcli connection modify 有線接続\ 2 ipv4.never-default no
nmcli connection modify 有線接続\ 2 ipv4.ignore-auto-routes no
service network-manager restart
「有線接続」じゃなくてIF名で指定するのはどうすれば良いのかな? これで様子を見てみるか
 https://torutk.hatenablog.jp/entry/20160506/p1
http://iwsttty.hatenablog.com/entry/2015/03/01/152541
https://qiita.com/kooohei/items/b0931ae210911cc52adc
https://qiita.com/atomyah/items/1989138730f3385844dd

mydnsの更新対応

グローバルIP通知先をhttps://www.mydns.jp/login.htmlからhttps://ipv4.mydns.jp/login.htmlに変更

最終的な構成

Router1にVLAN入れて2ポートWAN側に割り当てた。



あんまり効果が無いような気がしないでもないけど、しばらく使ってみる。

参考

https://www.marbacka.net/blog/ipv4_pppoe_ds-lite_simultaneously/
https://internet.watch.impress.co.jp/docs/column/shimizu/1131132.html
https://qiita.com/nbhr/items/2850ccaa3456a8553bbf