1. 系统更新
sudo apt update
sudo apt upgrade -y
2. 安装必要的依赖
- 安装 Git
sudo apt install git -y
- 安装 Docker
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y
- 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- 安装 PostgreSQL
sudo -u postgres psql
CREATE DATABASE lago_production;
CREATE USER lago_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE lago_production TO lago_user;
\q
获取 Lago 代码
git clone https://github.com/getlago/lago.git
cd lago
配置 Lago
1. 生成 RSA 私钥
Lago 需要 RSA 私钥进行签名和验证,使用以下命令生成:
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
cat private_key.pem | tr -d '\n'
将输出的私钥内容复制下来,后续配置环境变量时会用到。
2. 配置环境变量
在项目根目录下创建或编辑.env
文件,配置必要的环境变量。
nano .env
在文件中添加以下内容,根据实际情况进行修改:
LAGO_ENV=production
LAGO_HOST=your_server_ip_or_domain
LAGO_PORT=3000
LAGO_RSA_PRIVATE_KEY=your_rsa_private_key
DATABASE_URL=postgresql://lago_user:your_password@localhost:5432/lago_production
将your_server_ip_or_domain
替换为服务器的 IP 地址或域名,your_rsa_private_key
替换为之前生成的 RSA 私钥,your_password
替换为之前设置的 PostgreSQL 用户密码。
3. 保存并退出编辑器
按Ctrl + X
,然后按Y
确认保存,最后按Enter
退出。
数据库迁移
运行以下命令进行数据库迁移:
docker-compose run --rm api bundle exec rake db:create db:migrate
启动 Lago 服务
使用 Docker Compose 启动 Lago 的各个服务:
docker-compose up -d
这将在后台启动 Lago 的 API 服务、Web 界面等。
验证部署
1. 检查服务状态
使用以下命令检查 Docker 容器的运行状态:
docker-compose ps
遇到的问题:
1、碰到这个页面点击esc就行
2、拉取镜像超时
解决方法:vi /etc/docker/daemon.json
配置如下地址
{
"registry-mirrors": [
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://your_preferred_mirror",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
重新加载配置文件及docker服务
systemctl daemon-reload
systemctl restart docker
3、端口被占用
杀掉对应的端口服务即可
4、docker-compose up -d报错
删除docker-compose.yml文件中start_interval和depends_on下的restart属性
5、调用路径不是服务器
解决方案:修改docker-compose.yml中的localhost为服务器ip
x-lago-api-url: &lago-api-url
"LAGO_API_URL": ${LAGO_API_URL:-http://localhost:3000}
x-lago-front-url: &lago-front-url
"LAGO_FRONT_URL": ${LAGO_FRONT_URL:-http://localhost}
"API_URL": ${LAGO_API_URL:-http://localhost:3000}
修改完后执行docker-compose down 和docker-compose up -d