Asciinema 一个轻量级的终端录屏工具 - 搭建私服(5/7)

通常,由于企业内部信息安全策略的原因,不允许将asciicast上传到公共仓库中。
这个时候可以在企业内部搭建私服来解决存储和分享asciicast的需求。

硬件需求

  • 单核CPU,推荐双核
  • 最低1 GB RAM(带交换分区)
  • 兼容Docker的64位Linux
  • 最小10 GB磁盘空间

安装Asciinema Server唯一受官方支持的方法是Docker。 所以,部署服务器中Docker环境是必须的。

依赖服务

  • Postgres 9.5以上的数据库
  • SMTP服务器
  • Redis

数据库默认支持Postgres。如果企业内部使用的是MySQL数据库。 那么,没有通过简单的修改配置项来支持MySQL数据库。 这可能需要修改源代码,重新构建镜像来支持MySQL数据库。
另外,asciicast文件默认保存在服务器的本地存储,也可以通过修改配置将asciicast文件保存到AWS S3
但是,如果希望存储到开源的OSS,比如: MinIO。这也需要修改一些源代码。

安装

官方提供一个docker-compose.yml文件。使用它可以快速启动私服。
你可以使用git克隆asciinema-server私服源码仓库。

1
git clone -b master git@github.com:asciinema/asciinema-server.git

然后,使用docker-compose.yml启动私服。

另一种方式是只获取必要的三文件:

获取三个必要的文件:

1
2
3
4
5
mkdir asciinema-server && \
cd asciinema-server && \
curl https://raw.githubusercontent.com/asciinema/asciinema-server/master/docker-compose.yml -o docker-compose.yml && \
curl --create-dirs https://raw.githubusercontent.com/asciinema/asciinema-server/master/docker/nginx/asciinema.conf -o docker/nginx/asciinema.conf && \
curl https://raw.githubusercontent.com/asciinema/asciinema-server/master/.env.production.sample -o .env.production

目录结构如下:

1
2
3
4
5
6
.
├── .env.production
├── docker
│   └── nginx
│       └── asciinema.conf
└── docker-compose.yml

在启动私服之前还需要一些数据初始化和修改配置文件的操作。

初始化数据库

启动数据库:

1
docker-compose up -d postgres

创建数据库Scheme和初始数据:

1
docker-compose run --rm phoenix setup

修改配置文件

配置文件由以下部分组成:

  • 私服URL基本配置项
  • 用来签名Cookie等的Secret Key
  • PostgreSQL数据库连接字符串
  • Redis 连接字符串
  • SMTP配置
  • AWS S3文件存储的配置

可以根据自己的需要参照配置文件的说明修改对应的配置项。
这里修改URL_PORTSECRET_KEY_BASE两项。

URL_PORT修改为80

SECRET_KEY_BASE通过以下命令获取:

1
docker-compose run --rm phoenix gen_secret
SMTP配置

asciinema私服是一个基于邮件的无密码系统。
通常,企业内部都会有SMTP服务器,配置文件添加以下配置即可:

1
2
3
4
5
SMARTHOST_ADDRESS=mail.mysmtp.com
SMARTHOST_PORT=587
SMARTHOST_USER=myuser
SMARTHOST_PASSWORD=secret
SMARTHOST_ALIASES=*.mysmtp.com

如果只是在本地测试的话,可以添加GMAIL账号信息中继邮件,并开启允许安全性较低的应用。否则服务收到邮件。

1
2
GMAIL_USER=example@gmail.com
GMAIL_PASSWORD=secret

当一切就绪,就可以使用docker-compose启动私服。然后在浏览器中访问http://localhost就可以看到私服的页面了。

1
docker-compose up -d

点击页面的Log in/Sign up,输入邮箱地址进行用户的登录或注册。

系统管理员

管理员可以执行以下管理任务:

  • 编辑,删除任何录制
  • 使某个录制成为特权
  • 将录制修改为PublicPrivate
添加管理员
1
docker-compose run --rm phoenix admin_add email@example.com
删除管理员
1
docker-compose run --rm phoenix admin_rm email@example.com

添加或删除的管理员账户必须事先已经在系统注册过。通过逗号,分隔符可以一次添加或删除多个管理员。