Virtualbox中Debian Server部署metabase,不想再套一个docker,遂硬上,以下为部署过程实录,备用留自己日后查询。

Metabase on Debian with OpenJDK 21 - 安装指南

1. 安装 OpenJDK 21 (Eclipse Temurin)

1.1 添加仓库和依赖

sudo apt update
sudo apt install -y wget apt-transport-https gnupg

# 添加 GPG 密钥
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /etc/apt/keyrings/adoptium.asc

# 添加源
echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list

# 安装 JDK
sudo apt update
sudo apt install -y temurin-21-jdk

1.2 验证安装

java -version
# 应输出类似:
# openjdk version "21.0.2" 2024-01-16
# OpenJDK Runtime Environment Temurin-21.0.2+13 (build 21.0.2+13)
# OpenJDK 64-Bit Server VM Temurin-21.0.2+13 (build 21.0.2+13, mixed mode)

2. 创建 Metabase 专用账户

sudo useradd -r -s /bin/false metabase
sudo mkdir -p /opt/metabase
sudo chown -R metabase:metabase /opt/metabase

3. 下载 Metabase

sudo -u metabase wget https://downloads.metabase.com/v0.55.2/metabase.jar -O /opt/metabase/metabase.jar
# 注意:替换 v0.55.2 为[官网最新版本](https://www.metabase.com/start/oss/jar)

4. 配置 Systemd 服务

4.1 创建服务文件

sudo nano /etc/systemd/system/metabase.service

粘贴以下内容:

[Unit]
Description=Metabase Analytics Service
After=syslog.target
After=network.target

[Service]
WorkingDirectory=/opt/metabase
ExecStart=/usr/bin/java -Xms512m -Xmx2G -jar metabase.jar
User=metabase
Type=simple
Restart=on-failure
RestartSec=10
Environment="MB_JETTY_PORT=3000"

[Install]
WantedBy=multi-user.target

4.2 启动服务

sudo systemctl daemon-reload
sudo systemctl start metabase
sudo systemctl enable metabase

5. 验证安装

# 检查状态
sudo systemctl status metabase

# 查看日志
sudo journalctl -u metabase.service -f

# 访问页面
echo "访问 http://$(hostname -I | awk '{print $1}'):3000"

6. 高级配置(可选)

6.1 使用 PostgreSQL

sudo apt install -y postgresql
sudo -u postgres psql -c "CREATE DATABASE metabase;"
sudo -u postgres psql -c "CREATE USER metabase WITH PASSWORD 'your_password';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE metabase TO metabase;"

修改服务文件:

Environment="MB_DB_TYPE=postgres"
Environment="MB_DB_CONNECTION_URI=jdbc:postgresql://localhost:5432/metabase?user=metabase&password=your_password"

6.2 使用 MariaDB/MySQL

# 安装 MariaDB
sudo apt install -y mariadb-server

# 登录数据库
sudo mysql -u root

-- 执行以下 SQL 命令
CREATE DATABASE metabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'metabase'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON metabase.* TO 'metabase'@'localhost';
FLUSH PRIVILEGES;
EXIT;

修改服务文件:

Environment="MB_DB_TYPE=mysql"
Environment="MB_DB_CONNECTION_URI=jdbc:mysql://localhost:3306/metabase?user=metabase&password=your_password&useSSL=false"

注意

  • 如果使用 MySQL 8+,需添加参数 &allowPublicKeyRetrieval=true
  • 生产环境应启用 SSL(替换 useSSL=false 为证书配置)

6.3 HTTPS 配置 (Nginx 示例)

server {
    listen 443 ssl;
    server_name metabase.example.com;
    
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
    }
}

常用命令

操作命令
启动服务sudo systemctl start metabase
停止服务sudo systemctl stop metabase
重启服务sudo systemctl restart metabase
查看日志sudo journalctl -u metabase -f
卸载 Metabasesudo rm -rf /opt/metabase /etc/systemd/system/metabase.service

评论已关闭