在PC和服务器上部署elabfw

elabfw是一个开源的实验记录工具. 可以自由的部署在个人PC或者服务器上.
官方安装文档:https://doc.elabftw.net/install.html

安装依赖

首先要安装docker, 如果网络环境允许, 可以跟随https://docs.docker.com/compose/install/这个页面上的指示. 但是我安装的时候网速相当慢, 后来使用国内的镜像代替.
我的安装步骤如下:

  1. 安装docker的依赖

    1
    2
    3
    4
    5
    $ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
  2. 下载deb文件
    我下载的是中科大的镜像网站上的文件.链接: http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_18.06.1~ce~3-0~ubuntu_amd64.deb

  3. 安装deb文件
    sudo deb -i docker-ce_18.06.1~ce~3-0~ubuntu_amd64.deb

  4. 安装Docker Compose
    我的安装参考这个页面:https://docs.docker.com/compose/install/#master-builds
    sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    测试是否安装成功: docker-compose --version

  5. 安装dialog
    sudo apt-get install dialog

安装eLabFTW

  1. 安装elabctl

    1
    2
    3
    4
    # get the program (a bash script)
    curl -sL https://get.elabftw.net -o elabctl && chmod +x elabctl
    # add it to a directory in your $PATH
    sudo mv elabctl /usr/local/bin/
  2. 配置elabctl
    elabctl install

  3. (可选)编辑配置文件
    配置文件位置:/etc/elabftw.yml

  4. 启动eLabFTW
    sudo elabctl start

使用eLabFTW

eLabFTW默认运行在443端口, 因此访问https://<your-elabftw-site.org> (或者 https://)
注册的第一个账户会成为管理员账户.
之后应当在设置界面配置一个SMTP账户, 确保在忘记密码的时候可以发送邮件到注册的邮箱, 否则忘记密码之后是无法找回的, 切记!

备份数据

sudo elabctl backup
对应script: https://gist.github.com/NicolasCARPi/5d9e2599857a148a54b0
script中的SQL user/password可以在docker container中的/elabftw/config.php找到.
相关页面:https://doc.elabftw.net/backup.html#backup

恢复备份

恢复页面恢复数据库(elabftw):

1
2
3
4
5
6
unzip uploaded_files-YYYY-MM-DD.zip
mv var/elabftw/web/* /var/elabftw/web
mv etc/elabftw.yml /etc/elabftw.yml
# now fix the permissions
chown -R 100:101 /var/elabftw/web
chmod 600 /etc/elabftw.yml

恢复数据库(在mysql的container中操作):

1
2
3
4
5
6
7
8
9
10
gunzip mysql_dump-YYYY-MM-DD.sql.gz # uncompress the file
docker cp mysql_dump-YYYY-MM-DD.sql mysql:/ # copy it inside the mysql container
docker exec -it mysql bash # spawn a shell in the mysql container
mysql -uroot -p # login to mysql prompt
# here you type the password you put in MYSQL_ROOT_PASSWORD in the /etc/elabftw.yml file
Mysql> drop database elabftw; # delete the brand new database
Mysql> create database elabftw; # create a new one
Mysql> use elabftw; # select it
Mysql> source mysql_dump-YYYY-MM-DD.sql; # import the backup
Mysql> exit;

目前存在的问题是在目录页面显示中文的时候会乱码, 这是目前对中文的支持不完善导致的. 解决方案是在mysql的docker container中设置lang为UTF-8。使用locale -a可以看到当前可用的语言。