如何在 Ubuntu 20.04 上安装 Supabase

一、介绍

在本教程中,您将学习如何在 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

  1. 安装 Nginx 和 Git。
    $ sudo apt install nginx git
    
  2. 卸载任何旧版本的 Certbot 和 Docker。
    $ sudo apt remove certbot docker docker.io containerd runc
    
  3. 更新快照安装程序。
    $ sudo snap install core; sudo snap refresh core
    
  4. 使用 安装 Certbot。snap
    $ sudo snap install --classic certbot
    
  5. 运行 Certbot 并按照提示输入您的域名并将所有流量重定向到 HTTPS。
    $ sudo certbot certonly --standalone
    
  6. 记下提供的证书和私钥路径。根据所使用的域,它会有所不同。
    Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
    
    Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
    

如果您使用了其他 SSL 提供程序,请确保证书和私钥文件存储在系统上的某个位置,并且您知道它们的完整文件路径。

3.2、Docker

  1. 使用 安装 Docker 。snap
    $ sudo snap install docker
    
  2. 克隆 Supabase 存储库。
    $ git clone --depth 1 https://github.com/supabase/supabase.git
    
  3. 打开文件夹。docker
    $ cd supabase/docker
    
  4. 将文件复制到 。.env.example.env
    $ cp .env.example .env
    
  5. 在文本编辑器中打开文件。.env
    $ nano .env
    
  6. 在浏览器中打开一个强密码生成器,如Bitwarden,并生成一个新密码。它应包含超过 25 个字符。
    https://bitwarden.com/password-generator/
    
  7. 将文件中的值替换为生成的密码。POSTGRES_PASSWORD.env
    POSTGRES_PASSWORD=<password>
    
  8. 生成另一个密码,其中包含超过 32 个字符且没有特殊字符。将文件中的值替换为新生成的密码。JWT_SECRET.env
    JWT_SECRET=<new password>
    
  9. 使用您的在Supabase网站上生成一个。复制并粘贴您的 ,将“预配置有效负载”类型切换为 ,按“生成 JWT”,然后将“生成的令牌”结果复制到文件中的值中。JWT_SECRETANON_KEYJWT_SECRETANON_KEYANON_KEY.env
    https://supabase.com/docs/guides/hosting/overview#api-keys
    
    
    
    ANON_KEY=<generated key>
    
  10. 在使用相同的 .将其粘贴为文件中的值。SERVICE_KEYJWT_SECRETSERVICE_ROLE_KEY.env
    SERVICE_ROLE_KEY=<generated key>
    
  11. 关闭文本编辑器并保存更改,方法是使用 + ,然后使用 ,后跟 。CTRLXYENTER
  12. 导航到该文件夹并在文本编辑器中打开。volumes/apikong.yml
    $ cd volumes/api
    
    $ nano kong.yml
    
  13. 在 下,将用户的替换为文件中的值。consumersanonkeyANON_KEY.env
    consumers:
    
    - username: anon
    
      keyauth_credentials:
    
      - key: [anon key]
    
  14. 将用户的替换为文件中的值。service_rolekeySERVICE_ROLE_KEY.env
    consumers:
    
    - username: anon
    
      keyauth_credentials:
    
      - key: [anon key]
    
    - username: service_role
    
      keyauth_credentials:
    
      - key: [service_role key]
    
  15. Close your text editor again by using + , then , followed by .CTRLXYENTER
  16. Run Supabase by using in detached mode. This may take 10-15 minutes.docker-compose
    $ sudo docker-compose up -d
    
  17. Check that Supabase is running by using . The status should be .dockerUp
    $ sudo docker ps
    
    
    
    STATUS
    
    Up x seconds/minutes
    

您现在已成功安装 Supabase 并获得签名的 SSL 证书。

四、使用 Nginx 反向代理保护 Supabase

您现在可以使用SSL证书和Nginx来保护Supabase安装。确保替换为您选择的域名或 IP 地址。example.com

  1. 删除 Nginx 默认配置文件。
    $ sudo rm /etc/nginx/sites-enabled/default
    
  2. 在文本编辑器的 Nginx 目录中创建并打开新的配置文件。sites-available
    $ sudo nano /etc/nginx/sites-available/supabase
    
  3. 将以下内容粘贴到文件中,并替换为您的域名或 IP 地址。确保 和 行指向您的 SSL 证书。example.comssl_certificatessl_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/

  4. 退出文本编辑器并保存更改,方法是按 + ,然后按 ,然后按 。CTRLXYENTER
  5. 在 Nginx 的目录中创建一个指向新配置文件的链接。sites-enabled
    $ sudo ln -s /etc/nginx/sites-available/supabase /etc/nginx/sites-enabled/supabase.conf
    
  6. 测试配置文件。如果测试成功,您将看到 和消息。syntax is oktest 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
    
  7. 重新加载 Nginx 以应用您的更改。
    $ sudo /etc/init.d/nginx reload
    

 五、整理步骤

您现在应该导航到您的 Supabase 安装。

https://example.com

从那里,您可以配置数据库、身份验证和文件存储。

恭喜,您已成功安装 Supabase 并使用 SSL 证书和 Nginx 反向代理对其进行保护。

赞(0)
未经允许不得转载:主机百科 » 如何在 Ubuntu 20.04 上安装 Supabase