zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

Collabora OnlineとNextcloudの連携

■基礎情報
Collabora Online
Google docsのように、Webブラウザ上で直接excelシートなどを編集できるもの。
オフィスソフトの機能すべてを代替できるようなものではないが、閲覧の気楽さは大きい。
f:id:zuntan02:20170120185308p:plain
↓こちらでDockerイメージで配布されている
https://nextcloud.com/collaboraonline/nextcloud.com


■インストールと設定
zuntan02.hateblo.jp
上記で構築したNextCloud環境に引き続き追加していきます。

dockerのインストール・起動
yum install docker
service docker start
chkconfig docker on

# Collabora Online serverの取得
docker pull collabora/code

# 実行
docker run -t -d -p 9980:9980 -e "domain=hoge.fuga" --cap-add MKNOD collabora/code
nginxでリバースプロキシ設定

/etc/nginx/conf.d/hoge.fuga.conf
→locationに以下を追加

    # for Collabora-online
    # static files
    location ^~ /loleaflet {
        proxy_pass https://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # WOPI discovery URL
    location ^~ /hosting/discovery {
        proxy_pass https://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # websockets, download, presentation and image upload
    location ^~ /lool {
        proxy_pass https://localhost:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
    }

Nextcloud管理画面でCollabora Onlineを有効にする

f:id:zuntan02:20170120190538p:plain
管理画面WebUIの左上[管理▼]-[+アプリ]-[Office&テキスト]-Collabora Online -[有効にする]
→管理画面の左ペインに[Collabora Online]が出てくるので、
 コラボラオンラインサーバー:https://hoge.fuga:443 として登録

ファイル一覧よりexcelなどを開き、編集、上書きできることを確認

【AWS】Nextcloud環境をAmazonLinuxに構築

■基礎情報

Nextcloud
Dropbox的なクラウドストレージを作成できるツール。以前デファクトスタンダードだったownCloudから派生したもの。
Webブラウザ経由でのアクセスのほか、Windows/OSX/Android/iPhone用にクライアントアプリが公開されている。
www.webprofessional.jp

【今回の作業概要】

AWS EC2のAmazonLinuxにNextcloudをインストール

【インストール手順】

AmazonLinuxに以下の手順でインストールしていきます。

MySQL
# インストール
yum install -y mysql56-server.x86_64 mysql56-devel.x86_64 mysql56.x86_64

# 起動
/etc/init.d/mysqld start

# 初期設定
/usr/bin/mysql_secure_installation

# Set root password? [Y/n]
New password: <MySQLのrootパスワード>
あとは初期値のままで抜ける。

# 自動起動
chkconfig mysqld on
chkconfig --list mysqld
Nginx
yum install nginx

# 自動起動確認
chkconfig nginx on
chkconfig --list nginx

SSLが推奨されているので、SSL証明書を用意しておきます。

php
# 必要となるモジュールをまとめてインストールする
yum install memcached memcached-devel
yum install php56 php56-devel php56-fpm php56-gd php56-mbstring php56-mcrypt php56-mysqlnd php56-pdo php56-pecl-memcached php-pecl-apcu php56-imagick php56-xml

# 設定ファイルで timezone 設定
cp -p /etc/php.ini /etc/php.ini.org
続きを読む

改ざん検知ツールAIDEメモ

【やったこと】

・CentOS6 にaideをインストールして初期動作確認
・問題があればメールで通知

【作業手順】

インストール
yum -y install aide

→aide.x86_64 0:0.14-8.el6

初期化
aide --init

→これが結構時間がかかる。仮想マシンとかだと5分くらい
→### AIDE database at /var/lib/aide/aide.db.new.gz initialized.

生成されたデータベースファイルを比較対象のデータベースファイルとする
cp -f /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
検査
aide --check

→AIDE found differences between database and filesystem!!(以下略)
→常に更新されるようなファイルが出てしまっている。

# 除外設定

vi /etc/aide.conf

→いったん全部対象外にして、改ざん検知したいフォルダだけを対象にするのが良さそう

# アップデート(--check と --init が同時に実行される)

aide --update

# 生成されたデータベースファイルを比較対象のデータベースファイルとする(上書き)

cp -f /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

Updateの自動化&AIDEで改ざんを検知した場合のアラートメール

こちらよりコピペ

echo '#!/bin/bash

MAILTO=hogehoge@fugafuga.com
LOGFILE=/var/log/aide/aide.log
AIDEDIR=/var/lib/aide
/usr/sbin/aide  -u > $LOGFILE
cp $AIDEDIR/aide.db.new.gz $AIDEDIR/aide.db.gz
x=$(grep "Looks okay" $LOGFILE | wc -l)
if [ $x -eq 1 ]
then
  echo "All Systems Look OK" | /bin/mail -s "AIDE OK" $MAILTO
else
  echo "$(egrep "added|changed|removed" $LOGFILE)" | /bin/mail -s "AIDE DETECTED CHANGES" $MAILTO
fi
exit
' > /usr/local/bin/aide.sh

chmod +x /usr/local/bin/aide.sh

→crontabに以下のようにして設置

0 0 * * * /usr/local/bin/aide.sh > /dev/null

S3のディレクトリ(prefix)を削除する(aws s3 rm メモ)

【経緯】

S3のディレクトリ(プレフィックス)を配下のオブジェクトごと一括で削除したかったのだけど、こちらによればディレクトリ以下のオブジェクトをすべて削除する必要があるとのこと。
一年分のログが入っててマネコンのWebUIでは消せないなーと思ったのでAWS CLIのs3コマンドで以下のようにして消したメモ。

【実施】

ディレクトリ(プレフィックス)確認

aws s3 ls s3://hogehoge-logs/
→プレフィックスが一覧できる
   PRE prefix1/
   PRE prefix2/
   PRE prefix3/

aws s3 ls s3://hogehoge-logs/prefix1/
→中身が確認できる

ファイル(オブジェクト)削除

ディレクトリ(プレフィックス)を中身ごと全部消す
aws s3 rm s3://hogehoge-logs/prefix1 --recursive
ディレクトリ(プレフィックス)の中身だけを全部消す(プレフィックスは残す)
aws s3 rm s3://hogehoge-logs/prefix1/ --recursive
条件にマッチするファイルのみ消す

# 例:*201612*を含むファイルのみ対象
# --excludeでまず全てを除外、除外されたファイルの中から--includeで許可。--recursiveで再帰的に。

# dryrunで削除対象を確認
aws s3 rm s3://hogehoge-logs/prefix1/ -exclude '*' --include '*201612*' --recursive --dryrun
# 実施
aws s3 rm s3://hogehoge-logs/prefix1/ -exclude '*' --include '*201612*' --recursive

【BootCamp】無料のツール”Clonezilla”でMacのBootCampディスク(macOS+Windows10)をクローンする(ディスク換装)

【まとめ】

MacBookProでBootCamp環境を構築している場合のディスクの差し替え(既存の容量より大容量への換装)の場合、「Winclone5」(有料)がなくても、フリーの定番ツール「Clonezilla」でクローンが行えた。キモはClonezillaでのリストア時にエキスパートモードで「-j1」オプションを有効にすること。

★201807追記★
この手順では別途バックアップを取るためのHDDが必要です。手元にそのようなものがなく、あらたに購入するくらいならディスククローン機を購入したほうが圧倒的に早い&確実です。以下の機種でBootcamp化したディスクのHDD→SSD引っ越しはサクッとできました。

【経緯】

MacBookProのOSX+BootCamp(Windows10)環境について、HDD→SSDに差し替えることになった。
SSDに付属していたクローニングツール(Acronis True Image HD)でディスク全体をクローンしてみたところ、OSXは起動できたものの、起動ディスクをWindows10とした場合ブートせず、ハマった。

こういう時は鉄板のClonezilla(http://clonezilla.org/downloads.php)(2.5.0-5)を利用してみたところ、やっぱりOSXは戻るんだけどWindowsは起動してこない。3連休をドブに捨てて完全にお手上げ。あきらめてWinclone5を買うか……と思って窓に置いた加湿器を強くしてる午前2時、以下の情報に出会った。

www.youtube.com

※サイトがなくなってたので似たような動画に差し替えました。上記動画の4:40あたりがキモ

【作業詳細】

1)Clonezillaでオリジナルディスクからディスクイメージを取得するときは初心者モードで普通に全体をイメージ化
2)イメージからリストアするときはエキスパートモードで
 ・「-j1」オプション(リストア後にMBR書き込み)にチェックを入れる。
 ・「-e1」はoffに(これは不要かも。案内動画でoffにされていたので倣った)
  あとはデフォルトのままでリストア実行……

であっけなくイメージからの復元→Windows10起動ができた。OSのライセンス認証も問題ないようだ。OSX側も特に問題なし。

※ちなみに今回500GB→750GBへの差し替えだったのだけど、Windows10が起動したら
[管理ツール]-[コンピュータの管理]-[ディスクの管理]-[ボリュームの拡張]
Windows領域を拡張できた。

しばらく運用してみて問題あったら追記しますが、いやー、今回はハマった……

【メモ】strace

https://blogs.oracle.com/solairo/entry/ksplice_strace
Strace -- システム管理者の顕微鏡

ex.netstat -a コマンドを実行するときに読み込まれるファイルとか見てみる。/etc/servicesが読み込まれていた

strace -e open netstat -a

open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib/libselinux.so.1", O_RDONLY)  = 3
open("/lib/libc.so.6", O_RDONLY)        = 3
open("/lib/libdl.so.2", O_RDONLY)       = 3
open("/lib/libsepol.so.1", O_RDONLY)    = 3
open("/etc/selinux/config", O_RDONLY|O_LARGEFILE) = 3
open("/proc/mounts", O_RDONLY|O_LARGEFILE) = 3
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
open("/proc/net/tcp", O_RDONLY)         = 3
open("/etc/nsswitch.conf", O_RDONLY)    = 4
open("/etc/ld.so.cache", O_RDONLY)      = 4
open("/lib/libnss_files.so.2", O_RDONLY) = 4
open("/etc/services", O_RDONLY)         = 4
open("/etc/protocols", O_RDONLY)        = 4
tcp        0      0 *:mysql                     *:*                         LISTEN
tcp        0      0 *:pop3                      *:*                         LISTEN
tcp        0      0 *:http                      *:*                         LISTEN
tcp        0      0 *:ssh                       *:*                         LISTEN
tcp        0      0 *:smtp                      *:*                         LISTEN
open("/etc/resolv.conf", O_RDONLY)      = 4
open("/etc/host.conf", O_RDONLY)        = 4
open("/etc/hosts", O_RDONLY)            = 4
open("/etc/hosts", O_RDONLY)            = 4
open("/etc/ld.so.cache", O_RDONLY)      = 4
open("/lib/libnss_dns.so.2", O_RDONLY)  = 4
open("/lib/libresolv.so.2", O_RDONLY)   = 4
tcp        0   1388 www34237u.sakura.ne.jp:ssh  219.117.253.234.stati:60168 ESTABLISHED
open("/proc/net/tcp6", O_RDONLY)        = -1 ENOENT (No such file or directory)
open("/proc/net/udp", O_RDONLY)         = 3
udp        0      0 www34237u.sakura.ne.jp:ntp  *:*
open("/etc/hosts", O_RDONLY)            = 4
udp        0      0 localhost.localdomain:ntp   *:*
udp        0      0 *:ntp                       *:*
open("/proc/net/udp6", O_RDONLY)        = -1 ENOENT (No such file or directory)
open("/proc/net/sctp/eps", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/proc/net/sctp/assocs", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/proc/net/raw", O_RDONLY)         = 3
open("/proc/net/raw6", O_RDONLY)        = -1 ENOENT (No such file or directory)
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
open("/proc/net/unix", O_RDONLY)        = 3
unix  2      [ ACC ]     STREAM     LISTENING     3484   @ISCSIADM_ABSTRACT_NAMESPACE
unix  2      [ ACC ]     STREAM     LISTENING     3470   @ISCSID_UIP_ABSTRACT_NAMESPACE
unix  7      [ ]         DGRAM                    3688   /dev/log
unix  2      [ ]         DGRAM                    1190   @/org/kernel/udev/udevd
unix  2      [ ACC ]     STREAM     LISTENING     3768   /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     3878   /var/lib/mysql/mysql.sock
unix  2      [ ]         DGRAM                    28790175
unix  3      [ ]         STREAM     CONNECTED     28790119
unix  3      [ ]         STREAM     CONNECTED     28790118
unix  2      [ ]         DGRAM                    28790113
unix  2      [ ]         DGRAM                    3990
unix  2      [ ]         DGRAM                    3909
unix  2      [ ]         DGRAM                    3696
open("/proc/net/ipx", O_RDONLY)         = -1 ENOENT (No such file or directory)
open("/proc/net/ax25", O_RDONLY)        = -1 ENOENT (No such file or directory)
open("/proc/net/x25", O_RDONLY)         = -1 ENOENT (No such file or directory)
open("/proc/net/x25", O_RDONLY)         = -1 ENOENT (No such file or directory)
open("/proc/net/nr", O_RDONLY)          = -1 ENOENT (No such file or directory)