ຂ້າມໄປຫາເນື້ອຫາ
ບັນທຶກທັງໝົດ

ການໂຮສ Supabase ເອງເທິງແພັກເກັດຟຣີຂອງ Oracle Cloud

ວິທີທີ່ພວກເຮົາແລ່ນໂປຣເຈັກ Supabase ທີ່ແຍກກັນ ຄຽງຄູ່ກັນເທິງເຊີບເວີ Arm ແບບ Always Free ເຄື່ອງດຽວ — ແລະ ມາດຕະການທີ່ຮັກສາຄວາມປອດໄພ.

  • Supabase
  • Oracle Cloud
  • Docker
  • Security

Supabase Cloud ດີຫຼາຍ ແຕ່ໂປຣເຈັກຟຣີມີຂີດຈຳກັດ ແລະ ແຜນເສຍເງິນກໍ່ເພີ່ມຂຶ້ນໄວສຳລັບສະຕູດິໂອທີ່ຍັງບໍ່ມີລາຍຮັບ. Supabase ເປັນ open source ແລະ ມີຊຸດ Docker ທາງການ ສະນັ້ນພວກເຮົາຈຶ່ງແລ່ນມັນເທິງເຊີບເວີ Arm ແບບ Always Free ຂອງ Oracle Cloud. ບັນທຶກນີ້ເລົ່າເຖິງການອອກແບບ ແລະ ມາດຕະການປ້ອງກັນ ບໍ່ແມ່ນຄູ່ມືຕິດຕັ້ງເທື່ອລະຂັ້ນ.

Script ດຽວ = ປຸ່ມ "New project" ໜຶ່ງປຸ່ມ

ພວກເຮົາຢາກໄດ້ສິ່ງທີ່ທຽບເທົ່າການກົດ New project: Postgres, Auth, REST, Realtime ແລະ Functions ທີ່ແຍກກັນຢ່າງສົມບູນສຳລັບແຕ່ລະໂປຣເຈັກ. Script new-project.sh ເຮັດສິ່ງນັ້ນ:

  • ສຳເນົາໂຟນເດີ docker/ ຂອງ upstream ທີ່ ລັອກເວີຊັນ ໄວ້ ໄປໄວ້ໃນໂຟນເດີຂອງໂປຣເຈັກ — ບໍ່ແກ້ໄຂໄຟລ໌ compose ຂອງ upstream ເລີຍ
  • ສ້າງກະແຈລັບໃໝ່ໄວ້ໃນໄຟລ໌ .env ທີ່ຈຳກັດສິດ; ບໍ່ພິມກະແຈລັບອອກມາ
  • ຂຽນ docker-compose.override.yml ທີ່ມີຊື່ container ບໍ່ຊ້ຳ, ຈຳກັດໜ່ວຍຄວາມຈຳ ແລະ ຕັ້ງຄ່າ Postgres ໃຫ້ນ້ອຍລົງ
  • ກຳນົດພອດຈາກ ໝາຍເລກ slot ເພື່ອບໍ່ໃຫ້ API gateway ແລະ pooler ຂອງແຕ່ລະໂປຣເຈັກຊົນກັນ
  • ກວດການຕັ້ງຄ່າທີ່ລວມກັນແລ້ວ ກ່ອນຈະເລີ່ມຫຍັງ

ໄຟລ໌ override ໃຊ້ tag !override ແລະ !reset ຂອງ Compose ສະນັ້ນ script ຈຶ່ງກວດເວີຊັນ Docker Compose ກ່ອນ ແລະ ຢຸດຖ້າເກົ່າເກີນໄປ.

ເບົາເປັນຄ່າເລີ່ມຕົ້ນ

ເຊີບເວີນ້ອຍຕ້ອງແບ່ງກັນໃຊ້ ສະນັ້ນທຸກໂປຣເຈັກເລີ່ມແບບເບົາ. ປິດ Storage ແລະ ການປະມວນຜົນຮູບ — ໄຟລ໌ໄປເກັບໃນ object storage ແທນ — ແລະ Studio ເປີດສະເພາະເມື່ອຕ້ອງການ. ບໍລິການທີ່ເປັນທາງເລືອກເປີດດ້ວຍ profile ຂອງ Compose ບໍ່ແມ່ນການແກ້ໄຂໄຟລ໌. ໂປຣເຈັກທີ່ບໍ່ໄດ້ໃຊ້ສາມາດຢຸດໄດ້ໂດຍບໍ່ເສຍຂໍ້ມູນ.

ບໍ່ມີຫຍັງເປີດຮັບຈາກອິນເຕີເນັດສາທາລະນະ

ພອດຂອງທຸກ container ຜູກກັບ 127.0.0.1 ເທົ່ານັ້ນ ແລະ script ຈະປະຕິເສດການຕັ້ງຄ່າທີ່ມີພອດໃດບໍ່ເປັນແບບນັ້ນ. ການເຂົ້າເຖິງຈາກພາຍນອກຜ່ານ Cloudflare Tunnel: cloudflared ເຊື່ອມຕໍ່ອອກໄປຂ້າງນອກ ສະນັ້ນເຊີບເວີບໍ່ຕ້ອງເປີດພອດເວັບ ແລະ ບໍ່ມີໃຜເຂົ້າຫາເຊີບເວີຕົ້ນທາງໄດ້ໂດຍກົງ.

ເນື່ອງຈາກຄຳຮ້ອງຂໍມາຜ່ານ Cloudflare ການຈຳກັດອັດຕາຂອງ Auth ຈຶ່ງອ່ານ header CF-Connecting-IP ເພື່ອຮູ້ທີ່ຢູ່ຈິງຂອງຜູ້ໃຊ້.

ຄ່າເລີ່ມຕົ້ນຂອງ Auth ທີ່ພວກເຮົາປ່ຽນ

ຄ່າເລີ່ມຕົ້ນຂອງ upstream ສະດວກສຳລັບການພັດທະນາໃນເຄື່ອງ ແຕ່ເປີດກວ້າງເກີນໄປສຳລັບການໃຊ້ງານຈິງ. Script ປິດການສະໝັກດ້ວຍເບີໂທທີ່ຢືນຢັນອັດຕະໂນມັດ ເພາະຍັງບໍ່ມີຜູ້ໃຫ້ບໍລິການ SMS. ສຳລັບຖານຂໍ້ມູນຄວບຄຸມຂອງພວກເຮົາ ປິດການສະໝັກທັງໝົດ; ຜູ້ດູແລລະບົບຖືກສ້າງຈາກຝັ່ງເຊີບເວີ ແລະ row-level security ຕ້ອງມີທັງບົດບາດ admin ໃນ app_metadata ແລະ ເຊສຊັນທີ່ຢືນຢັນຫຼາຍຂັ້ນ (aal2). ບົດບາດ anon ສາທາລະນະບໍ່ມີສິດເຂົ້າ schema ສ່ວນຕົວເລີຍ.

ບົດຮຽນດ້ານການດຳເນີນງານ

  • ສຳຮອງຂໍ້ມູນກ່ອນທຸກ migration. ມີການ dump ແບບເຂົ້າລະຫັດກ່ອນປ່ຽນແປງຖານຂໍ້ມູນທີ່ມີຂໍ້ມູນ.
  • ໂຫຼດ schema ຂອງ API ໃໝ່ຫຼັງ migration. PostgREST ເກັບ schema ໄວ້ໃນ cache; ພວກເຮົາສົ່ງ notify pgrst, 'reload schema' ຫຼັງແລ່ນ SQL ບໍ່ດັ່ງນັ້ນ function ໃໝ່ຈະຜິດພາດຈົນກວ່າຈະ restart.
  • ທົດສອບນະໂຍບາຍຄວາມປອດໄພ. Script SQL ກວດກົດການເຂົ້າເຖິງພາຍໃນ transaction ທີ່ຖືກຍົກເລີກຄືນ ແລະ ພິມຜ່ານ ຫຼື ບໍ່ຜ່ານ ສຳລັບແຕ່ລະຂໍ້.

ການແລກປ່ຽນທີ່ຊື່ສັດ

ເຊີບເວີຟຣີເຄື່ອງດຽວເປັນ ຈຸດລົ້ມເຫຼວຈຸດດຽວ. ສິ່ງນີ້ຍອມຮັບໄດ້ສຳລັບການພັດທະນາ, ການເປີດໂຕ ແລະ ຊ່ວງທຳອິດທີ່ມີຜູ້ໃຊ້ ແລະ ຮັກສາຄ່າໃຊ້ຈ່າຍໄວ້ທີ່ສູນ. ເມື່ອຜະລິດຕະພັນມີລາຍຮັບ ຂັ້ນຕໍ່ໄປແມ່ນເຊີບເວີທີສອງພ້ອມ replica — script ດຽວກັນເຮັດໃຫ້ການຍ້າຍນັ້ນງ່າຍຂຶ້ນ.