背景
研究(物性)で大量の実験データを扱うが、紙の実験ノートでは流石にデータのサルベージが大変なので、電子実験ノートで記録したかった。
やりたかったこととして、
- 最低限、日記的にやったことを書いて、タグ(実験装置、サンプル)ごとに検索できること。
- 無料であること(できれば、OSSであること)
- 金払い忘れてデータ消えたりしたら困るので。
- 少なくとも、データ容量が不足することがないこと。
- これを満たすのはオンプレしかなかった。
- あわよくば、大量の生データを保管するために、オンプレで管理したい(数百GB)。
雰囲気は実際にまず触ってみればわかるかと思う。(登録も不要でさわれる。もちろんデモなので重いしファイルサイズ制限もある)
手順
環境
- Fedoraが動くサーバー
- SSH等でターミナルは叩ける
- ルーターについてきたDDNSサービス(ドメインを持っているならば持っているに越したことはない)
Docker、Docker-composeインストール
sudo dnf install docker
をやってはいけない。
公式から落としてきてインストールすること。詳細は以下の記事参照。
新しい環境なので、以下のコマンドを実行するだけである。
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
$ sudo dnf install containerd.io docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin
サービスを起動する。一応テストもしておこう(最終行)。
$ sudo systemctl start docker
$ sudo systemctl enable docker
$ sudo docker run hello-world
ウェルカムメッセージが表示されたら正解。
elabctlインストール
依存しているらしいので、必要なパッケージは入れる。
sudo dnf install dialog git zip unzip
curlで落としてきて、管理スクリプトをインストールする。(Docker-compose.yml
直書きはやめといたほうがいいと思った。)
$ curl -sL https://get.elabftw.net -o elabctl && chmod +x elabctl
$ sudo sudo mv elabctl /usr/local/bin/
eLabFTW設定ファイルの作成
管理コマンドから、本体をインストールしていく。
$ sudo elabctl install
仰々しい画面が表示されるが、「OK」
その後、データの保存場所の確認が出るが、基本サーバ用のデータは大きなHDD等においておきたいはずなので、「Download example conf and quit」を選ぶ。
sudo vi elabctl.conf
を開いて、以下のようにコメントアウトを外して書き換えれば良い。以下は大型ストレージを/mnt/server
にマウントしている場合。
# where do you want your backups to end up?
declare BACKUP_DIR='/mnt/server/elabftw/var/backups/elabftw'
# where do we store the config file?
declare CONF_FILE='/mnt/server/elabftw/etc/elabftw.yml'
# where do we store the MySQL database and the uploaded files?
declare DATA_DIR='/mnt/server/elabftw/var/elabftw'
これで保存して閉じる。
$ sudo elabctl install
で、「OK」→「Looks good to me」→「Server」→「Yes」→使うアドレス(私の場合は***.iobb.net
)→「Use HTTPS」→「Use correct certificate」→「OK」
これで一旦インストールが完了する。
注意点
先に/mnt/server/elabftw/etc/
をmkdirで作成しておかないと、エラーが出る。
ファイアウォールとルーター(DNS)の設定
ファイアウォールを開く。有効なゾーン名はsudo firewall-cmd --list-all
でわかる。今回はゾーン名がFedora特有となっていたので、これに設定する。
$sudo firewall-cmd --zone=FedoraWorkstation --add-service=http --permanent
$sudo firewall-cmd --zone=FedoraWorkstation --add-service=https --permanent
$sudo firewall-cmd --reload
$sudo firewall-cmd --list-all
で、http,https
が入っていたらOK。
ルーター側でDNSの設定をする。ドメインを持っているのなら、その設定をする。ここだけは詳細は調べてください。
証明書インストール(Let's encrypt)
証明書をインストールする。certbotというやつが提供されているので、使う。
先に、80ポートで何も動いていない状態にすること。既にelabctl start
してしまったのなら、一回elabctl stop
で先に止めておく。
$ sudo install certbot
$ sudo certbot certonly
あとは公開用メールアドレスと、サイト名(先程のインストールで打ち込んだはず。私の場合は***.iobb.net
)を打ち込む。
confファイルの設定(アップロードファイルサイズの変更)
設定ファイルを編集する。インストール時に設定した場所(例では/mnt/server/elabftw/etc/elabftw.yml
)にある。以下のように書き換えたら良い。
#- PHP_MAX_EXECUTION_TIME=120
(中略)
#- MAX_PHP_MEMORY=256M
(中略)
#- MAX_UPLOAD_SIZE=100M
これを、
#- PHP_MAX_EXECUTION_TIME=1200
(中略)
#- MAX_PHP_MEMORY=1000M
(中略)
#- MAX_UPLOAD_SIZE=1000000M
(タイムアウト長時間化、メモリリミット拡大、ファイルサイズリミット拡大。前半2つはおまじない程度)
起動
$ sudo elabctl start
$ sudo elabctl initialize
完了したらすぐにブラウザから(今回ならhttps://***.iobb.net
)アクセスしてユーザー登録する。
メールの設定
smtp2goを使うようにすすめられるが、会社emailがないと駄目らしいので却下。gmailでやる。
画面右上→Sysadmin Panel→EMAILで、↓のようにセットアップする
完了
以上で完了のはず。
感想
ディレクトリ作るとか、Let's encrypt回りとか、しょうもないところで時間を食った。それ以外は比較的スムーズだった。