Por el momento, solo ofrecemos esto como una imagen acoplable. Probablemente queremos que se construyan, la versión y los artefactos se almacenen como mínimo:
Ahora:
Próximo:
Recomendación:
@kiwicopple , esta sería una imagen de Ubuntu con solo la aplicación en tiempo real instalada. ¿Expondría el puerto en tiempo real directamente? ¿O todavía querríamos kong con ruta única? (pensando en apikeys/limitación de velocidad, etc.)
@soedirgo acaba de hablar con paul, el primer paso aquí es simplemente automatizar la construcción y el lanzamiento de la aplicación en tiempo real como un binario
así que puede olvidarse de todas las cosas de VM y el océano digital por un momento (aunque probablemente este sea el siguiente paso)
Lo que necesitamos es que cada vez que alguien etiquete un lanzamiento , github cree la aplicación para cada entorno (para empezar, solo ubuntu y osx están bien) y cree un lanzamiento con los archivos binarios adjuntos (por ejemplo: https://github.com/ setvisible/DownZemAll/lanzamientos)
todo esto se puede lograr con acciones de github: https://github.com/features/actions
Si desea comenzar con la bifurcación de este repositorio y experimentar con su propia bifurcación, entonces podemos fusionar las acciones nuevamente en este repositorio cuando lo tenga en funcionamiento.
esta parece una buena plantilla para comenzar: https://github.com/actions/create-release
debe comenzar simplemente creando la aplicación en tiempo real en su propio sistema operativo para tener una idea de qué dependencias se requieren (mezclar, etc.) y luego aquí hay un ejemplo de cómo la aplicación en tiempo real está construida con ansible, por lo que puede copiar algunos de los pasos: https://github.com/supabase/kps/blob/master/ansible/tasks/setup-supabase.yml
también solo para mayor claridad, solo queremos construir el servidor en tiempo real por ahora, así que todo lo que se encuentra dentro de esta carpeta: https://github.com/supabase/realtime/tree/master/server
@soedirgo este ya está hecho, ¿verdad? no queda nada?
Aún así, trabajar en 3 y 4, debe hacerse hoy.
¡todo bien! tómate tu tiempo y avísame si te quedas atascado
Ack, está bien, esto es más difícil de lo que pensaba. (Y debería dejar de decir "hoy" o "esta semana")
Qué he hecho:
DB_HOST
, DB_PASSWORD
, DB_PORT
, etc. a ansibleDB_HOST
(nuevamente, dentro del constructor)Bloqueadores:
Pregunta rápida: esta parte me llama la atención:
Cree la aplicación Phoenix a través de ansible (dentro del generador, no en la imagen final)
¿Significa esto que está creando la aplicación phoenix en la imagen DO? por ejemplo, ¿instalar elixir/mix, etc. y luego ejecutar una compilación?
Para esta pregunta:
¿El tiempo real suele estar en la misma máquina que la base de datos?
No, este es un servidor independiente, por lo que solo ejecutará realtime
y se conectará a una base de datos separada especificada por env_vars
¿Significa esto que está creando la aplicación phoenix en la imagen DO? por ejemplo, ¿instalar elixir/mix, etc. y luego ejecutar una compilación?
Sí, podría obtener un binario de los lanzamientos, pero no estoy seguro de si eso causará problemas de incompatibilidad. (Principalmente estaba copiando cómo se hace con Docker)
¡Solo obtén el binario! Disminuir el área de la superficie. Probablemente sea mejor si cambiamos la ventana acoplable para que haga lo mismo, entonces podemos usar una imagen delgada
hola @soedirgo, esta es una muy buena introducción y hoja de trucos para systemctl, la herramienta que usamos para administrar systemd: https://www.linode.com/docs/quick-answers/linux-essentials/introduction-to-systemctl/
aquí está el archivo systemctl en tiempo real de KPS: https://github.com/supabase/kps/blob/master/ansible/files/supabase.service.j2
sobre la cuestión de env vars, el archivo anterior también muestra cómo puede especificar en qué archivo colocar los env vars, por lo que puede ser específico de la aplicación
sobre cómo pasarlos en tiempo de ejecución/aprovisionamiento usamos la configuración de la nube
desplácese hacia abajo y busque la directiva write_files
, básicamente copiamos una cadena de variables env en /etc/supabase.env
según el archivo .j2 anterior
Gotcha, ¡asimilará esos!
En esa nota, ¿qué tipo de endurecimiento debo usar? Solo como mínimo. Sé que Postgres usa UFW para bloquear todo menos 22 y 5432.
@dragarcia podría tener algunos aprendizajes aquí de los procesos de listado de AWS y DO: vi una cosa que decía: asegúrese de no usar valores predeterminados estandarizados para semillas/contraseñas seguras, etc.
Sí, permítanme documentar una lista de verificación para los mercados en los que estamos hasta ahora y compartirla aquí más adelante.
¡Espero que esto ayude!
https://github.com/supabase/home/issues/17
Impresionante, todo en un solo lugar. ¡Gracias!
Comentario más útil
@soedirgo acaba de hablar con paul, el primer paso aquí es simplemente automatizar la construcción y el lanzamiento de la aplicación en tiempo real como un binario
así que puede olvidarse de todas las cosas de VM y el océano digital por un momento (aunque probablemente este sea el siguiente paso)
Lo que necesitamos es que cada vez que alguien etiquete un lanzamiento , github cree la aplicación para cada entorno (para empezar, solo ubuntu y osx están bien) y cree un lanzamiento con los archivos binarios adjuntos (por ejemplo: https://github.com/ setvisible/DownZemAll/lanzamientos)
todo esto se puede lograr con acciones de github: https://github.com/features/actions
Si desea comenzar con la bifurcación de este repositorio y experimentar con su propia bifurcación, entonces podemos fusionar las acciones nuevamente en este repositorio cuando lo tenga en funcionamiento.
esta parece una buena plantilla para comenzar: https://github.com/actions/create-release
debe comenzar simplemente creando la aplicación en tiempo real en su propio sistema operativo para tener una idea de qué dependencias se requieren (mezclar, etc.) y luego aquí hay un ejemplo de cómo la aplicación en tiempo real está construida con ansible, por lo que puede copiar algunos de los pasos: https://github.com/supabase/kps/blob/master/ansible/tasks/setup-supabase.yml