ການໂຮສ 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 ດຽວກັນເຮັດໃຫ້ການຍ້າຍນັ້ນງ່າຍຂຶ້ນ.