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-composeSpusťte následující příkaz a použijte změny.
zdroj $ ~/.bashrcKrok 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/dockerVytvořte soubor prostředí z ukázkového souboru.
$ cp .env.example .envOtevřete nově vytvořený soubor pro úpravy.
$ nano .envZměň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
vygenerovatANON_KEY
. Vložte svůjJWT_SECRET
v zadaném poli vyberteANON_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.comNakonfigurujte 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.ymlPřidejte proměnnou
API_EXTERNAL_URL
přímo podGOTRUE_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.ymlV části
consumers
část, nahraďteanon
uživatelský klíč sANON_KEY
vygenerované dříve.spotřebitelů:- jméno:anon keyauth_credentials:- klíč:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GETaké nahraďte
service_role
' s klíčemSERVICE_KEY
vygenerované výše.- jméno:service_role keyauth_credentials:- klíč:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4QUlož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 -dZkontrolujte 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-mailKrok 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 snapdUjistěte se, že vaše verze Snapd je aktuální.
$ instalační jádro sudo snap &&obnovovací jádro sudo snapNainstalujte Certbot.
$ instalace sudo snap --classic certbotPomocí 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/certbotOvěřte instalaci.
$ certbot --versioncertbot 1.25.0Vygenerujte 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.comVýš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 4096Vytvořte adresář webroot s výzvou pro automatické obnovení Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencryptVytvoř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-renewVlož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-renewKrok 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/nullPř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.listAktualizujte repozitáře Debianu.
Aktualizace $ sudo aptNainstalujte Nginx.
$ sudo apt install nginxOvěř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.2Vytvořte a otevřete soubor
/etc/nginx/conf.d/supabase.conf
pro úpravy.$ sudo nano /etc/nginx/conf.d/supabase.confVlož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.confPř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í nginxKrok 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-utilsVytvoř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.confProveď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 nginxPř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 ~/supabaseStáhněte si nejnovější úložiště Github.
$ git pullVš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-orphansStáhněte si nejnovější obrázky.
$ docker-compose pullSpusťte kontejnery znovu.
$ docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml up -dZá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