Supabase是一个开源的Firebase替代方案,提供身份验证、实时数据库、存储和边缘函数等功能。在本教程中,你将学习如何在Ubuntu 24.04服务器上使用Docker安装和配置Supabase,包括通过Nginx反向代理进行安全配置。

前提条件

在开始本教程之前,请确保你具备以下条件:

- 一台Ubuntu 24.04服务器
- 一个具有管理员权限的非root用户
- 一个已指向服务器IP地址的域名

安装Docker引擎

要在服务器上部署Supabase,你需要在机器上安装Docker引擎。Supabase应用程序将作为容器在服务器上运行。

在本节中,你将通过官方Docker仓库安装Docker引擎。

首先,运行以下命令更新Ubuntu软件包索引并安装ca-certificates、curl和git等软件包。

sudo apt update
sudo apt install -y ca-certificates curl git

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

现在运行以下命令添加Docker引擎仓库的GPG密钥。

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

通过执行以下命令为你的Ubuntu服务器添加Docker引擎仓库。

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

添加了Docker GPG密钥和仓库后,运行以下apt命令刷新软件包索引并安装Docker引擎。同时还会安装Docker Compose和buildx插件。

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

输入Y确认安装。

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

将用户添加到Docker组

在本教程中,你将以非root用户运行Supabase,因此请确保已创建一个专用用户。然后需要将用户添加到docker组,这将允许用户运行容器。

使用以下命令将用户添加到docker组。这将允许你的用户执行和运行容器。

sudo usermod -aG docker username

使用以下su命令登录到你的用户。

su - username

最后,执行以下docker命令运行hello-world容器。

docker run hello-world

如果一切正常,你将看到来自Docker的Hello World消息。

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

下载和安装Supabase

现在已经安装了Docker,下一步是下载Supabase并将其作为容器运行。在本节中,你将学习如何启动Supabase,稍后还将学习如何对其进行安全配置。

使用以下git命令下载Supabase源代码。

git clone --depth 1 https://github.com/supabase/supabase

进入supabase/docker目录,并将.env.example文件复制为.env。此文件将用于配置你的Supabase安装。

cd supabase/docker
cp .env.example .env

接下来,运行以下docker compose命令从Docker仓库下载Supabase镜像。这将下载多个Supabase相关的镜像。

docker compose pull

你可以看到Supabase Docker镜像的下载过程。

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

下载完成后,执行以下命令启动Supabase容器。使用-d选项将在后台运行容器,因此不会显示Supabase容器的日志。

docker compose up -d

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

最后,运行以下docker compose命令检查Supabase容器的状态。

docker compose ps

在下面的输出中,你可以看到supabase-auth、supabase-kong、supabase-rest和supabase-studio等Supabase容器正在运行。

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

安全配置Supabase

目前Supabase已经在你的系统上运行,但没有适当的密码和身份验证。因此现在需要通过修改.env文件中的凭据来保护Supabase安装。

在开始之前,让我们为PostgreSQL服务器和Supabase仪表板生成密码,然后生成JWT密钥和令牌。

执行以下命令两次,为Supabase仪表板和PostgreSQL服务器生成安全密码。

openssl rand -hex 16

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

现在访问Supabase官方文档生成两个JWT令牌。确保记录以下信息:

- JWT Secret密钥
- ANON_KEY和SERVICE_KEY的密钥
- 为两者生成的JWT令牌

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

现在已经为Supabase生成了密码和令牌,让我们通过编辑.env文件来应用这些配置。

使用vim编辑器打开.env文件。

vim .env

将生成的OpenSSL密码粘贴到POSTGRES_PASSWORD选项中。

POSTGRES_PASSWORD=f489d6f61514eb90fbf57fb574c3d367

将你的JWT密钥输入到JWT_SECRET选项中。

JWT_SECRET=PUaiJLm1PKAebJJRIdXylVJrfgGbRWdWvzN0EUgh

将ANON_KEY的值替换为为anon用户生成的JWT令牌。

ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzM2MzU1NjAwLAogICJleHAiOiAxODk0MTIyMDAwCn0.f8_wST3WX1bmvsHttRokJPCz7-rpyjU8HMNnYH7kSd4

将SERVICE_ROLE_KEY的值替换为为service_role用户生成的JWT令牌。

SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogInNlcnZpY2Vfcm9sZSIsCiAgImlzcyI6ICJzdXBhYmFzZSIsCiAgImlhdCI6IDE3MzYzNTU2MDAsCiAgImV4cCI6IDE4OTQxMjIwMDAKfQ.DOo1lqH76AR_jCx0N9QDZBEdrQ8T_JBQqc7CagD1mWM

如果你在公共服务器上部署,请输入你的SMTP服务器详细信息。

Email auth
ENABLE_EMAIL_SIGNUP=true
ENABLE_EMAIL_AUTOCONFIRM=false
[email protected]
SMTP_HOST=smtp.server.address
SMTP_PORT=2500
SMTP_USER=username
SMTP_PASS=password
SMTP_SENDER_NAME=sender_name
ENABLE_ANONYMOUS_USERS=false

在DASHBOARD_USERNAME和DASHBOARD_PASSWORD选项中输入你的用户名和密码。此用户将用于登录Supabase。

DASHBOARD_USERNAME=supabase
DASHBOARD_PASSWORD=91521851a4e1375145959eecddfaff45

将你的域名输入到SITE_URL、API_EXTERNAL_URL和SUPABASE_PUBLIC_URL选项中。在本示例中,将使用域名https://supabase.example.com。

SITE_URL=https://supabase.example.com
API_EXTERNAL_URL=https://supabase.example.com
SUPABASE_PUBLIC_URL=https://supabase.example.com

完成后保存文件并退出编辑器。

现在运行以下docker命令停止并删除Supabase容器。

docker compose down

然后使用以下命令重新创建Supabase容器。

docker compose up -d

一切运行后,使用以下命令检查每个容器服务。

docker compose ps

你可以在下面看到Supabase的每个容器都在运行。

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

设置Nginx作为Supabase反向代理

现在Supabase已经安全配置完成,让我们安装Nginx Web服务器并将其配置为Supabase的反向代理。请确保你已经准备好了域名并将其指向服务器IP地址。

使用以下apt命令安装Nginx。

sudo apt install nginx -y

现在使用vim编辑器创建新的Nginx服务器块配置文件/etc/nginx/sites-available/supabase。

sudo vim /etc/nginx/sites-available/supabase

粘贴以下配置,确保修改server_name选项中的域名。

map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

upstream kong {
server localhost:8000;
}

server {
listen 80;
server_name supabase.example.com;

# REST
location ~ ^/rest/v1/(.*)$ {
proxy_set_header Host $host;
proxy_pass http://kong;
proxy_redirect off;
}

# AUTH
location ~ ^/auth/v1/(.*)$ {
proxy_set_header Host $host;
proxy_pass http://kong;
proxy_redirect off;
}

# REALTIME
location ~ ^/realtime/v1/(.*)$ {
proxy_redirect off;
proxy_pass http://kong;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
}

# STUDIO
location / {
proxy_set_header Host $host;
proxy_pass http://kong;
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
}
}

完成后保存文件并退出编辑器。

接下来,执行以下命令激活Supabase服务器块并验证Nginx配置。如果没有错误,你将得到输出syntax is ok - test is successful。

sudo ln -s /etc/nginx/sites-available/supabase /etc/nginx/sites-enabled/
sudo nginx -t

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

现在运行以下systemctl命令重启Nginx Web服务器并应用更改。这样你的Supabase安装将在Nginx反向代理下运行。

sudo systemctl restart nginx

最后,执行以下systemctl命令验证Nginx服务并确保服务正在运行。

sudo systemctl status nginx

如果一切正常,你将看到类似以下的输出。

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

使用HTTPS保护Supabase

Nginx作为反向代理运行后,让我们生成SSL证书并启用HTTPS来保护Supabase安装。

如果你处于开发模式,可以跳过此部分,保留HTTP即可。对于生产环境,你必须实现HTTPS来保护你的Supabase服务器。

使用以下apt命令安装Certbot和Nginx Certbot插件。输入Y确认安装。

sudo apt install certbot python3-certbot-nginx

安装完成后,执行以下certbot命令为你的域名生成SSL证书。确保修改命令中的域名和邮箱地址。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d supabase.example.com

完成后,你的SSL证书将保存在/etc/letsencrypt/live/domain.com目录中,Supabase将通过Nginx Certbot插件自动启用HTTPS保护。

访问Supabase Studio

要访问Supabase,打开Web浏览器并访问https://supabase.example.com。如果安装成功,你将看到基本的密码身份验证页面。

输入DASHBOARD_USERNAME和DASHBOARD_PASSWORD选项中的用户名和密码,然后点击Login。

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

如果成功,你将看到Supabase仪表板。

Ubuntu 24.04使用Docker安装Supabase开源数据库教程

恭喜!你已经在Ubuntu 24.04服务器上通过Docker完成了Supabase的安装。你已经部署并保护了Supabase,配置了密码身份验证和JWT令牌,安装并配置了Nginx作为反向代理,最后通过Certbot和Let's Encrypt实现了HTTPS安全保护。现在你可以尝试创建新数据库,向Supabase插入数据,然后使用Supabase模块创建简单的应用程序通过REST API进行通信。