一、介绍
在本教程中,您将学习如何在 Ubuntu 20.04 上安装和配置 Supabase。您还将学习如何使用安全密钥和反向代理保护您的 Supabase 实例。
Supabase 是 Firebase 的替代方案,通过 Web 界面提供 PostgreSQL 数据库,用户身份验证,存储和实时 API。Supabase 还具有开源 API 库,可以与其他应用程序轻松交互。
二、准备工作
在开始之前,您应该:
- 部署至少具有 2 GB RAM 的 Ubuntu 20.04 服务器。
- 创建具有 sudo 权限的非 root 用户。
- 以非 root 用户身份登录到您的服务器。
- 确保服务器已完全更新。
- 在 Vultr 防火墙或 ufw 上打开端口 433(如果适用)。
您还需要一个指向您的服务器的域名。这是因为SSL证书生成器Certbot/Let’s Encrypt)不提供IP地址的SSL证书。您需要创建一个指向您的服务器的域名。也可以改用 HTTP,但不建议这样做。
三、安装
3.1、Nginx、Certbot 和 Git
- 安装 Nginx 和 Git。
$ sudo apt install nginx git
- 卸载任何旧版本的 Certbot 和 Docker。
$ sudo apt remove certbot docker docker.io containerd runc
- 更新快照安装程序。
$ sudo snap install core; sudo snap refresh core
- 使用 安装 Certbot。
snap
$ sudo snap install --classic certbot
- 运行 Certbot 并按照提示输入您的域名并将所有流量重定向到 HTTPS。
$ sudo certbot certonly --standalone
- 记下提供的证书和私钥路径。根据所使用的域,它会有所不同。
Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
如果您使用了其他 SSL 提供程序,请确保证书和私钥文件存储在系统上的某个位置,并且您知道它们的完整文件路径。
3.2、Docker
- 使用 安装 Docker 。
snap
$ sudo snap install docker
- 克隆 Supabase 存储库。
$ git clone --depth 1 https://github.com/supabase/supabase.git
- 打开文件夹。
docker
$ cd supabase/docker
- 将文件复制到 。
.env.example
.env
$ cp .env.example .env
- 在文本编辑器中打开文件。
.env
$ nano .env
- 在浏览器中打开一个强密码生成器,如Bitwarden,并生成一个新密码。它应包含超过 25 个字符。
https://bitwarden.com/password-generator/
- 将文件中的值替换为生成的密码。
POSTGRES_PASSWORD
.env
POSTGRES_PASSWORD=<password>
- 生成另一个密码,其中包含超过 32 个字符且没有特殊字符。将文件中的值替换为新生成的密码。
JWT_SECRET
.env
JWT_SECRET=<new password>
- 使用您的在Supabase网站上生成一个。复制并粘贴您的 ,将“预配置有效负载”类型切换为 ,按“生成 JWT”,然后将“生成的令牌”结果复制到文件中的值中。
JWT_SECRET
ANON_KEY
JWT_SECRET
ANON_KEY
ANON_KEY
.env
https://supabase.com/docs/guides/hosting/overview#api-keys ANON_KEY=<generated key>
- 在使用相同的 .将其粘贴为文件中的值。
SERVICE_KEY
JWT_SECRET
SERVICE_ROLE_KEY
.env
SERVICE_ROLE_KEY=<generated key>
- 关闭文本编辑器并保存更改,方法是使用 + ,然后使用 ,后跟 。CTRLXYENTER
- 导航到该文件夹并在文本编辑器中打开。
volumes/api
kong.yml
$ cd volumes/api $ nano kong.yml
- 在 下,将用户的替换为文件中的值。
consumers
anon
key
ANON_KEY
.env
consumers: - username: anon keyauth_credentials: - key: [anon key]
- 将用户的替换为文件中的值。
service_role
key
SERVICE_ROLE_KEY
.env
consumers: - username: anon keyauth_credentials: - key: [anon key] - username: service_role keyauth_credentials: - key: [service_role key]
- Close your text editor again by using + , then , followed by .CTRLXYENTER
- Run Supabase by using in detached mode. This may take 10-15 minutes.
docker-compose
$ sudo docker-compose up -d
- Check that Supabase is running by using . The status should be .
docker
Up
$ sudo docker ps STATUS Up x seconds/minutes
您现在已成功安装 Supabase 并获得签名的 SSL 证书。
四、使用 Nginx 反向代理保护 Supabase
您现在可以使用SSL证书和Nginx来保护Supabase安装。确保替换为您选择的域名或 IP 地址。example.com
- 删除 Nginx 默认配置文件。
$ sudo rm /etc/nginx/sites-enabled/default
- 在文本编辑器的 Nginx 目录中创建并打开新的配置文件。
sites-available
$ sudo nano /etc/nginx/sites-available/supabase
- 将以下内容粘贴到文件中,并替换为您的域名或 IP 地址。确保 和 行指向您的 SSL 证书。
example.com
ssl_certificate
ssl_certificate_key
upstream supabase { server localhost:3000; } server { listen 443 ssl http2; server_name example.com; gzip on; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_session_cache shared:MySSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; # REST API location ~ ^/rest/v1/(.*)$ { proxy_set_header Host $host; proxy_pass http://kong:8000; proxy_redirect off; } # Authentication location ~ ^/auth/v1/(.*)$ { proxy_set_header Host $host; proxy_pass http://kong:8000; proxy_redirect off; } # Realtime location ~ ^/realtime/v1/(.*)$ { proxy_redirect off; proxy_pass http://kong:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; } }
此 Nginx 配置将在端口 443 上为 Supabase 提供服务,并将使用您之前生成的 SSL 证书和私钥。它还会将 和 路由指向 Kong API 服务器。
/rest/v1/
/auth/v1/
/realtime/v1/
- 退出文本编辑器并保存更改,方法是按 + ,然后按 ,然后按 。CTRLXYENTER
- 在 Nginx 的目录中创建一个指向新配置文件的链接。
sites-enabled
$ sudo ln -s /etc/nginx/sites-available/supabase /etc/nginx/sites-enabled/supabase.conf
- 测试配置文件。如果测试成功,您将看到 和消息。
syntax is ok
test is successful
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
- 重新加载 Nginx 以应用您的更改。
$ sudo /etc/init.d/nginx reload
五、整理步骤
您现在应该导航到您的 Supabase 安装。
https://example.com
从那里,您可以配置数据库、身份验证和文件存储。
恭喜,您已成功安装 Supabase 并使用 SSL 证书和 Nginx 反向代理对其进行保护。