GNU/Linux >> Znalost Linux >  >> Debian

Jak nainstalovat Supabase s Dockerem na Debian 11

Supabase je open-source alternativa Firebase, která vám poskytuje všechny nástroje potřebné k vývoji vašich aplikací. Supabase nabízí PostgreSQL databázi, autentizaci uživatelů, úložiště a API v reálném čase a integruje se s oblíbenými frameworky a nástroji jako Angular, Flutter, Next.js, React, Svelte a Vue.

Existují dva způsoby použití Supabase. První možností je přihlásit se do jejich cloudové aplikace, která nabízí více funkcí. Druhou možností je vlastní hostování kódu pomocí Dockeru. Existuje však několik výhrad ohledně vlastního hostování. Nemůžete vytvářet ani spravovat projekty. Celý projekt je navíc ve fázi beta a verzi s vlastním hostitelem byste měli používat pouze pro testování a místní vývoj. Pro všechny ostatní účely byste měli používat jejich cloudovou aplikaci.

V tomto tutoriálu se naučíte, jak nainstalovat Supabase na server založený na Debianu 11 a proxy jej přes server Nginx.

Předpoklady

  • Server se systémem Debian 11 s minimálně 2 GB RAM.

  • Uživatel bez oprávnění root s právy sudo.

  • Název domény (supabase.example.com ) ukazující na server.

  • Vše je aktualizováno.

    $ aktualizace sudo apt &&upgrade sudo apt
  • Několik balíčků, které váš systém potřebuje.

    $ sudo apt install nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring -y

    Některé z těchto balíčků již mohou být ve vašem systému nainstalovány.

Krok 1 – Konfigurace brány firewall

Prvním krokem je konfigurace firewallu. Debian je dodáván s ufw (Uncomplicated Firewall).

Zkontrolujte, zda je spuštěna brána firewall.

Stav $ sudo ufw

Měli byste získat následující výstup.

Stav:neaktivní

Povolte port SSH, aby firewall při jeho povolení nepřerušil aktuální připojení.

$ sudo ufw povolit OpenSSH

Povolit také porty HTTP a HTTPS.

$ sudo ufw povolit 80/tcp$ sudo ufw povolit 443/tcp

Povolte bránu firewall

$ sudo ufw enableCommand může narušit stávající připojení ssh. Pokračovat v operaci (y|n)? yFirewall je aktivní a povolený při spuštění systému

Znovu zkontrolujte stav brány firewall.

Stav $ sudo ufw

Měli byste vidět podobný výstup.

Stav:aktivníDo akce Od-- ------ ----OpenSSH POVOLI kdekoli80/tcp POVOLEJTE kdekoli 443/tcp (v6) ALLOW Anywhere (v6)

Krok 2 – Instalace Git

Nainstalujte Git.

$ sudo apt install git

Potvrďte instalaci.

$ git --versiongit verze 2.30.2

Krok 3 – Instalace Docker

Chcete-li nainstalovat nejnovější verzi Dockeru, přidejte oficiální klíč GPG Dockeru.

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Nainstalujte oficiální úložiště Docker.

$ echo \ "deb [arch=$(dpkg --print-architecture) sign-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux /debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list> /dev/null

Aktualizujte systémové repozitáře Debianu.

Aktualizace $ sudo apt

Nainstalujte nejnovější verzi Dockeru.

$ sudo apt install docker-ce docker-ce-cli containerd.io

Ověřte, že Docker běží.

$ sudo systemctl status docker? docker.service – Docker Application Container Engine Načteno:načteno (/lib/systemd/system/docker.service; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od Po 2022-03-21 03:19:09 UTC; Před 9 sTriggeredBy:? docker.socket Dokumenty:https://docs.docker.com Hlavní PID:15816 (dockerd) Úkoly:7 Paměť:27,9M CPU:566ms CGroup:/system.slice/docker.service ??15816 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Ve výchozím nastavení vyžaduje Docker oprávnění root. Pokud se chcete vyhnout použití sudo pokaždé, když spustíte docker přidejte své uživatelské jméno do docker skupina.

$ sudo usermod -aG docker $(whoami)

Chcete-li tuto změnu povolit, musíte se odhlásit ze serveru a znovu se přihlásit jako stejný uživatel.

Krok 4 – Instalace Docker Compose

Poslední dostupná verze Docker Compose je 2.0.x, ale z důvodů kompatibility budeme instalovat starší a stabilní verzi 1.29.2.

Spuštěním následujícího příkazu stáhněte stabilní verzi 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

Použijte oprávnění ke spustitelnému souboru na binární soubor.

$ sudo chmod +x /usr/local/bin/docker-compose

Stáhněte a nainstalujte skript dokončení bash nástroje Docker Compose.

$ sudo curl \ -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \ -o /etc/bash_completion.d/docker-compose 

Spusťte následující příkaz a použijte změny.

zdroj $ ~/.bashrc

Krok 5 – Stažení a konfigurace Supabase

Klonujte úložiště Supabase Github.

$ git klon --depth 1 https://github.com/supabase/supabase.git

--depth 1 Parametr provádí mělký klon úložiště, tj. stahuje pouze nejnovější odevzdání, nikoli celou historii. To se provádí za účelem zlepšení výkonu.

Přepněte do adresáře docker.

$ cd supabase/docker

Vytvořte soubor prostředí z ukázkového souboru.

$ cp .env.example .env

Otevřete nově vytvořený soubor pro úpravy.

$ nano .env

Změňte hodnotu proměnné POSTGRES_PASSWORD se silně vygenerovaným jedinečným heslem.

$ POSTGRES_PASSWORD=

Vygenerujte další jedinečné heslo s více než 32 znaky bez speciálních znaků. Nahraďte hodnotu JWT_SECRET s tímto heslem.

JWT_SECRET=

K vytvoření výše uvedených hesel můžete použít online generátor hesel, jako je Bitwarden nebo 1password.

Otevřete web Supabase a zadejte svůj JWT_SECRET vygenerovat ANON_KEY . Vložte svůj JWT_SECRET v zadaném poli vyberte ANON_KEY z Předkonfigurovaného užitečného zatížení rozbalovací nabídce a klikněte na Generovat JWT tlačítko pro vygenerování tokenu.

Zkopírujte a vložte tento token jako hodnotu pro ANON_KEY v .env soubor.

Podobně opakujte stejné kroky pro generování SERVICE_KEY přepnutím Předkonfigurovaného užitečného zatížení a stisknutím tlačítka Generovat JWT tlačítko.

Zkopírujte vygenerovaný token a vložte jej jako hodnotu pro SERVICE_KEY v .env soubor.

Nakonfigurujte nastavení e-mailu SMTP konfigurací následujících proměnných. Pro náš výukový program používáme službu SES společnosti Amazon.

[email protected]SMTP_HOST=email-smtp.us-west-2.amazonaws.comSMTP_PORT=587SMTP_USER=SMTP_PASS=SMTP_SENDER_NAME=SupabaseAdmin

Nakonfigurujte adresu URL webu.

SITE_URL=https://supabase.example.com

Nakonfigurujte veřejnou REST URL.

PUBLIC_REST_URL=https://supabase.example.com/rest/v1/

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Ověřovací e-maily odeslané přes SMTP budou mít nefunkční odkazy kvůli chybě převládající v Supabase. Chcete-li tento problém vyřešit, otevřete docker-compose.yml soubor.

$ nano docker-compose.yml

Přidejte proměnnou API_EXTERNAL_URL přímo pod GOTRUE_SITE_URL proměnná, aby vypadala následovně.

 GOTRUE_SITE_URL:${SITE_URL} API_EXTERNAL_URL:${SITE_URL}

Uložte soubor stisknutím Ctrl + X a zadáním Y po výzvě. Tento soubor bude přepsán pokaždé, když upgradujete instalaci Supabase. Doufejme, že příště bude chyba opravena. Tuto proměnnou budete muset přidat ručně, abyste zajistili, že se chyba e-mailu nebude opakovat.

Otevřete volumes/api/kong.yml soubor pro úpravy.

$ nano volumes/api/kong.yml

V části consumers část, nahraďte anon uživatelský klíč s ANON_KEY vygenerované dříve.

 spotřebitelů:- jméno:anon keyauth_credentials:- klíč:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE 

Také nahraďte service_role ' s klíčem SERVICE_KEY vygenerované výše.

 - jméno:service_role keyauth_credentials:- klíč:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q 

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Krok 6 – Instalace Supabase

Spusťte Supabase pomocí následujícího příkazu. Tento proces bude nějakou dobu trvat.

$ docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up -d

Zkontrolujte stav běžících kontejnerů.

$ docker psCONTAINER ID OBRÁZKOVÝ PŘÍKAZ VYTVOŘEN STAV NÁZVY PORTŮD25393873731 supabase/storage-api:v0.10.0 "/bin/sh -c \"./stora…" Asi před minutou Nahoru Asi před minutou 5000/tcpbedddfsupada supabase/gotrue:v2.5.21 "gotrue" Asi před minutou Nahoru Asi minutou supabase-authb3a758592d10 supabase/postgres-meta:v0.29.0 "postgres-meta" Asi před minutou Nahoru Asi minutu 0.0.0.0:5555-> 8080/tcp, :::5555->8080/tcp supabase-metacdb18c248f79 supabase/realtime:v0.21.0 "bash -c './prod/rel…" Asi před minutou Nahoru Asi před minutou supabase-realtime71417337efae postgrest/postgrest:v9.0.0 "/bin minute agopostgrest" O a Nahoru Asi o minutu 3000/tcp supabase-rest2d51af16bd1f kong:2.1 "/docker-entrypoint.…" před 2 minutami Nahoru Asi o minutu 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp /tcp, 0.0.0.0:8443->8443/tcp, :::8443->8443/tcp, 8444/tcp supabase-kongd6490380e4e8 supabase/postgres:14.1.0 "docker..."před 2 minutami vstupní bod min ute 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp supabase-db40a49d1482fa supabase/studio:latest "docker-entrypoint.s…" před 2 minutami Nahoru Asi o minutu 0:3000.>3000/tcp, :::3000->3000/tcp supabase-studio3cce50db9782 inbucket/inbucket:stable "/start-inbucket.sh…" před 2 minutami Nahoru Asi o minutu (zdravě) 0.0.0.0:1100/>110 tcp, :::1100->1100/tcp, 0.0.0.0:2500->2500/tcp, :::2500->2500/tcp, 0.0.0.0:9000->9000/tcp, 00 :-::90 9000/tcp supabase-mail

Krok 7 – Instalace protokolu SSL

Chcete-li nainstalovat certifikát SSL pomocí Let's Encrypt, musíme nainstalovat nástroj Certbot.

Použijeme k tomu instalační program balíčku Snapd. Protože s ním většina serverů Debianu není dodávána, nainstalujte si instalační program Snapd.

$ sudo apt install snapd

Ujistěte se, že vaše verze Snapd je aktuální.

$ instalační jádro sudo snap &&obnovovací jádro sudo snap

Nainstalujte Certbot.

$ instalace sudo snap --classic certbot

Pomocí následujícího příkazu zajistěte, aby bylo možné spustit příkaz Certbot vytvořením symbolického odkazu na /usr/bin adresář.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Ověřte instalaci.

$ certbot --versioncertbot 1.25.0

Vygenerujte certifikát SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [e-mail chráněný] -d supabase.example.com

Výše uvedený příkaz stáhne certifikát do /etc/letsencrypt/live/supabase.example.com adresář na vašem serveru.

Vytvořte skupinu Diffie-Hellman certifikát.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

Vytvořte adresář webroot s výzvou pro automatické obnovení Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Vytvořte úlohu Cron pro obnovení SSL. Poběží každý den, aby se zkontroloval certifikát a v případě potřeby se obnoví. Nejprve vytvořte soubor /etc/cron.daily/certbot-renew a otevřete jej pro úpravy.

$ sudo nano /etc/cron.daily/certbot-renew

Vložte následující kód.

#!/bin/shcertbot renew --cert-name supabase.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Změňte oprávnění k souboru úlohy, aby byl spustitelný.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Krok 8 – Instalace a konfigurace Nginx

Debian se dodává se starší verzí Nginx. Chcete-li nainstalovat nejnovější verzi, musíte si stáhnout oficiální úložiště Nginx.

Importujte oficiální podpisový klíč Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg>/dev/null

Přidejte úložiště pro stabilní verzi Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list

Aktualizujte repozitáře Debianu.

Aktualizace $ sudo apt

Nainstalujte Nginx.

$ sudo apt install nginx

Ověřte instalaci. Ujistěte se, že používáte sudo pokaždé, když spustíte příkaz Nginx v Debianu. Jinak to nebude fungovat.

$ sudo nginx -vnginx verze:nginx/1.20.2

Vytvořte a otevřete soubor /etc/nginx/conf.d/supabase.conf pro úpravy.

$ sudo nano /etc/nginx/conf.d/supabase.conf

Vložte do něj následující kód.

map $http_upgrade $connection_upgrade { výchozí upgrade; '' close;}upstream supabase { server localhost:3000;}upstream kong { server localhost:8000;}# force HTTPSserver { listen 80; poslouchej [::]:80; název_serveru supabase.example.com; return 301 https://$host$request_uri;}server { listen 443 ssl http2; poslouchej [::]:443 ssl http2; název_serveru supabase.example.com; access_log /var/log/nginx/supabase.access.log; error_log /var/log/nginx/supabase.error.log; gzip zapnutý; # SSL ssl_certificate /etc/letsencrypt/live/supabase.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/supabase.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/supabase.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-POLSHA13HEDCHA25050 -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; client_max_body_size 100m; # Umístění REST API ~ ^/rest/v1/(.*)$ { proxy_set_header Host $host; proxy_pass http://kong; proxy_redirect off; } # Umístění autentizace ~ ^/auth/v1/(.*)$ { proxy_set_header Host $host; proxy_pass http://kong; proxy_redirect off; } # Umístění v reálném čase ~ ^/realtime/v1/(.*)$ { proxy_redirect off; proxy_pass http://kong; proxy_http_verze 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Připojení $connection_upgrade; proxy_set_header Host $host; } # Umístění studia / { proxy_set_header Host $host; proxy_pass http://supabase; proxy_redirect off; proxy_set_header Upgrade $http_upgrade; }}

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni po dokončení.

Otevřete soubor /etc/nginx/nginx.conf pro úpravy.

$ sudo nano /etc/nginx/nginx.conf

Přidejte následující řádek před řádek include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size 64;

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Ověřte syntaxi konfiguračního souboru Nginx.

$ sudo nginx -tnginx:syntaxe konfiguračního souboru /etc/nginx/nginx.conf je oknginx:konfigurační soubor /etc/nginx/nginx.conf test byl úspěšný

Spusťte službu Nginx a povolte novou konfiguraci.

$ sudo systemctl spustí nginx

Krok 9 – Přístup k Supabase

Nyní máte přístup k Supabase prostřednictvím adresy URL https://supabase.example.com ve vašem webovém prohlížeči.

Nemůžete vytvářet nové projekty, ale můžete spravovat stávající a konfigurovat databázi, úložiště a ověřování.

Krok 10 – Povolte ověřování HTTP

Supabase neposkytuje správu uživatelů, takže musíte zabezpečit instalaci Supabase. Nejjednodušší způsob, jak toho dosáhnout, je povolit ověřování HTTP pomocí serveru Nginx.

Nainstalujte apache2-utils balíček pro Nginx.

$ sudo apt install apache2-utils

Vytvořte soubor s hesly pro uživatele supabase . Můžete si vybrat libovolné uživatelské jméno. Vyzve vás k zadání nového hesla. Pro dokončení nastavení souboru zadejte silné heslo.

$ sudo htpasswd -c /etc/nginx/.htpasswd supabaseNové heslo:Znovu zadejte nové heslo:Přidání hesla pro uživatele supabase

-c flag říká obslužnému programu, aby vytvořil nový soubor. Pokud soubor vynecháte, musíte zadat umístění existujícího souboru.

Otevřete /etc/nginx/conf.d/supabase.conf pro úpravy.

$ sudo nano /etc/nginx/conf.d/supabase.conf

Proveďte změny v následujících částech souboru, jak je uvedeno níže.

# umístění REST API ~ ^/rest/v1/(.*)$ { auth_basic off; proxy_set_header Host $host; proxy_pass http://kong; proxy_redirect off; } # Umístění autentizace ~ ^/auth/v1/(.*)$ { auth_basic off; proxy_set_header Host $host; proxy_pass http://kong; proxy_redirect off; } # Umístění v reálném čase ~ ^/realtime/v1/(.*)$ { auth_basic off; proxy_redirect off; proxy_pass http://kong; proxy_http_verze 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Připojení $connection_upgrade; proxy_set_header Host $host; } # Umístění studia / { auth_basic “Supabase Studio Login”; auth_basic_user_file /etc/nginx/.htpasswd; proxy_set_header Host $host; proxy_pass http://supabase; proxy_redirect off; proxy_set_header Upgrade $http_upgrade; }

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Ověřte konfiguraci.

$ sudo nginx -tnginx:syntaxe konfiguračního souboru /etc/nginx/nginx.conf je oknginx:konfigurační soubor /etc/nginx/nginx.conf test byl úspěšný

Restartujte službu Nginx.

$ sudo systemctl restart nginx

Při příštím otevření Supabase vás uvítá následující přihlašovací obrazovka.

Krok 11 – Aktualizace Supabase

Supabase je neustále nedokončený produkt a bude podléhat neustálým změnám. Pokud ji používáte jako samostatně hostovanou instanci, musíte svou instalaci Supabase udržovat aktualizovanou.

Přepněte se do adresáře Supabase.

$ cd ~/supabase

Stáhněte si nejnovější úložiště Github.

$ git pull

Všechny změny vyhledejte v docker/.env , docker/volumes/api/kong.yml soubory pro cokoli, co vyžaduje rekonfiguraci.

Vypněte a vyčistěte stávající kontejnery Docker.

$ docker-compose down --remove-orphans

Stáhněte si nejnovější obrázky.

$ docker-compose pull

Spusťte kontejnery znovu.

$ docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up -d

Závěr

Tímto končí náš tutoriál o instalaci Supabase na server založený na Debianu 11 pomocí serveru Nginx jako reverzního proxy. Pokud máte nějaké dotazy, napište je do komentářů níže.


Debian
  1. Jak nainstalovat Docker na Debian 10 Buster

  2. Jak nainstalovat a používat Docker na Debian 9

  3. Jak nainstalovat Docker na Debian / Ubuntu

  1. Jak nainstalovat Tomcat 8.5 na Debian 9

  2. Jak nainstalovat MongoDB na Debian 9

  3. Jak nainstalovat Nginx na Debian 9

  1. Jak nainstalovat Apache na Debian 9

  2. Jak nainstalovat Jenkins na Debian 9

  3. Jak nainstalovat Webmin na Debian 9