Browse Source

actualiza README

gancio-entrypoint
matus 8 months ago
parent
commit
ebbbec6c07
  1. 249
      README.md

249
README.md

@ -1,110 +1,239 @@
# GANCIO for SINDOMINIO
https://gancio.org/install/docker
## Dependencias
El servidor que vaya a ejecutar esta version dockerizada de Gancio necesita contar
con un demonio de Docker, asi como con el binario `docker-compose`.
## Dockerfile
Estas dos dependencias suelen instalarse conjuntamente, como un paquete de las
diferentes distribuciones linux, la [documentacion oficial de Docker][0] nos ayuda a
hacerlo
El original funciona sobre la imagen de docker de node
[0]: https://docs.docker.com/engine/install/
## Inicio Rapido
Si simplemente quieres poner a andar una instancia de Gancio, puedes seguir
los pasos en las secciones [instalacion manual](#instalacion-manual),
[configuracion](#configuracion-del-servicio) y [ejecucion](#ejecucion-de-gancio)
Resumidos quedan asi:
```bash
git clone https://git.sindominio.net/gancio/docker-gancio
cd docker-gancio
mkdir data
touch data/config.json data/db.sqlite
cp .env.sample .env
docker-compose build
docker-compose run --rm gancio "gancio setup --docker --db=sqlite"
docker-compose up -d
```
Si has usado las configuraciones por defecto, Gancio deberia estar disponible
en <http://localhost:13120>
## Instrucciones originales de instalacion
<https://gancio.org/install/docker>
## Construccion del docker para Gancio
El original se basa en la imagen de node disponible en DockerHub
```
FROM node:latest
WORKDIR /
RUN yarn global add gancio
...
```
Nosotros debemos funcionar a través de nuestro Debian en nuestro registry,
asi que adaptamos un poco el Dockerfile al estilo la guía de instalación de GNU/Debian
Nosotros elegimos funcionar a través de nuestro Debian en nuestro registry,
asi que adaptamos el Dockerfile al estilo la [guía de instalación de GNU/Debian][1]
https://gancio.org/install/debian
[1]: https://gancio.org/install/debian
```
FROM registry.sindominio.net/debian as builder
RUN apt-get update && \
apt-get install -y --no-install-recommends curl gnupg2 ca-certificates
FROM registry.sindominio.net/debian
...
```
RUN echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list
Ejecutamos un poroceso de construccion del docker de 2 etapas. En la __1ra
etapa__, clonamos el codigo del repositorio de gancio y compilamos el servicio.
En la __2da etapa__ utilizamos el servicio compilado en la etapa anterior, y
lo instalamos en un docker basado en el debian de SinDominio, e instalamos las
minimas dependencias necesarias para ejecutar el proyecto.
RUN curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
#RUN curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor > /usr/share/keyrings/yarn-archive-keyring.gpg
# Install Yarn
RUN apt-get update && \
apt-get install -y --no-install-recommends yarn
### Nuevo punto de entrada al docker
Agregamos un script de entrada, `entrypoint.sh`, que se ocupa de
validar la existencia de los datos/variables necesarias para poder ejecutar el
servicio, gestiona la propiedad de los archivos de datos de gancio, e inicia
el servicio como la usuaria `gancio`
# Install Node Latest
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt-get install -y nodejs
WORKDIR /
RUN yarn global add gancio
```
### Ejecucion desempoderada
Por razones de seguridad, evitamos ejecutar servicios dentro de los dockers
como usuaria `root`. En este caso, ejecutaremos el servicio como usuaria
`gancio` perteneciente al grupo `nogroup`
## Instalación
Seguimos los pasos de Gancio.
### Parametros disponibles en la construccion del docker
`docker-compose`, al igual que `docker`, nos permite pasar variables de entorno
al proceso de construccion del contenedor, utilizando la opcion
`--build-arg MI_VAR=valor`
La única diferencia que tenemos en estos pasos es que nosotros vamos a ejecutar Gancio con una usuaria en concreto.
Nuestro nuevo proceso de construccion toma los siguientes parametros, ambos
opcionales:
* `GANCIO_VERSION`, contiene el nombre de la rama o tag de git que queremos
utilizar _(valor por defecto: `master`)_
* `GANCIO_UID`, contiene el indicador numerico asociada a la usuaria `gancio`
que ejecutara el servicio dentro del docker _(valor por defecto: `110`)_
Por ejemplo, en nuestro sistema vamos a ejecutarlo a través de la usuaria con UID 110 y GID 65534
Esto lo deberemos indicar en el _docker-compose.yml_ en la sección **user**.
## Instalacion Manual
En cuanto esto esté claro, primero, descargamos este repo:
Si estamos instalando Gancio manualmente, podemos seguir los pasos de la
docuemntacion de Gancio. Este proceso requere intervencion de la usuaria que
debe responder a un cuestionario durante la etapa de Setup.
Primero, descargamos este repo
```
git clone https://git.sindominio.net/siroco/docker-gancio
git clone https://git.sindominio.net/gancio/docker-gancio
```
Accedemos a la carpeta creada:
Accedemos a la carpeta creada
```
cd docker-gancio
```
Ejecutamos los siguiente comandos para crear los ficheros básicos para la instalación
Creamos los ficheros básicos para la instalacion y configuracion del servicio:
```
mkdir data
touch data/config.json data/db.sqlite
cp .env.sample .env
```
Ahora, le damos permisos a la usuaria que ejecuta Gancio para que pueda leer esos ficheros:
```
chown -R 110:65534 data
```
Y cambiamos la usuaria que ejecuta Gancio en el docker-compose.yml
Luego a buildear
```
user: 110:65534
docker-compose build
```
Y luego a buildear y configurar
Y por ultimo, respondems a las preguntas del instalador
```
docker-compose build
docker-compose run --rm gancio "gancio setup --docker --db=sqlite"
```
Seguimos los pasos del SETUP de Gancio
```
docker-compose run --rm gancio gancio setup --docker --db=sqlite
```
## Instalacion Automatica ( en desarrollo, ver TODOs )
Y supongo que tras esto, podemos hacer un
En este caso, nos interesa desplegar Gancio sin intervencion de una usuaria.
Queremos:
* evitar el questionario de setup
* proveer datos necesarios via `config.json` o variables de entorno
Necesitamos, entonces, un archivo `config.json` con la configuracion de la
instancia. Nuestro repositorio incluye un archivo `config.json.sample` a modo
de ejemplo. Te recomendamos copiar este archivo dentro del directorio de datos
que vayas a utilizar para Gancio y editarlo con los datos de tu instancia
```bash
git clone https://git.sindominio.net/gancio/docker-gancio
cd docker-gancio
mkdir data
cp config.json.sample data/config.json
```
Al editar el archvio, los datos que nos interesa cambiar en este archivo son
- `title`, nombre de nuestra instancia de Gancio
- `baseurl`, url publica de este servicio
- `secret`, sal para los datos encryptados en la bbdd. puedes generar uno
nuevo con `cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-24} | head -n 1`
- `admin_email`, email de la cuenta de administradora (se usa para acceder al
gestionar el servicio)
- `smtp`, si se desea enviar correos, modificar a los datos de vuestro
servidor de SMPT
No modifiques los siguientes datos/secciones, ya que modificarian la forma en
que Gancio funciona dentro del docker y podria romper el servicio si no estas
segura de lo que haces ;)
- `server`
- `upload_path`
- `db`
### Cuenta de administradora
La mayoria de los datos que necesita la instancia de Gancio se encuentran en
el `config.json`, a excepcion de la clave de la cuenta de administradora.
Esta clave solo sera necesaria en el caso de iniciar una nueva instancia de
Gancio, sin datos.
Si estamos re-iniciando una instancia existente, o migrando una instancia que
ya cuenta con su propia base de datos, esta variable 'clave de administradora'
sera ignorada y se deberan conocer los datos de la cuenta de administradora
originales.
Entonces, en una instancia nueva iniciada sin datos, la administradora podra
loguearse utilizando el dato `admin_email` informado en el `config.json` y la
clave que especifiquemos en la variable de entorno `GANCIO_ADMIN_PASS`
_TODO cuando iniciemos con una base de datos vacia, crear la usuaria admin con
los datos del config.json y un password pasado por entorno
idea: crear script node que apalanque las funciones existentes para ejecutar las
migraciones en la base de datos, y para crear la usuaria administradora_
### Autenticacion para SMTP
Si tu servidor de correos necesita de autenticacion, debemos persistir esta
informacion en la seccion `smtp` del fichero `config.json`
```json
...
"smtp": {
"host": "localhost",
"port": 25,
"auth": {
"user": "<smtp_user>",
"pass": "<smtp_password>"
}
},
...
```
## Configuracion del servicio
Dado que utilizamos `docker-compose` para ejecutar Gancio, aprovecharemos la
posibilidad de definir nuestras variables de entorno en un archivo `.env` que
deberemos mantener en la misma carpeta que nuestro `docker-compose.yml`
Este repositorio contiene un `.env.sample` a modo de ejemplo. Si te valen los
valores por defecto, puedes copiar el archivo `.env.sample` y llamarlo `.env`
```bash
cp .env.sample .env
```
### Variables de Despliegue (necesarias en todos los casos)
- `GANCIO_DATA_PATH`, ruta en el host que contiene los datos de Gancio _(valor por
defecto `./data` = subcarpeta `data` en la misma carpeta que
`docker-compose.yml`)_
- `GANCIO_PORT`, puerto del host en el que se expondra el servicio de Gancio
_(valor por defecto `13120`)_
### Variables de Instalacion Automatica (solo para Instalaciones Automaticas)
Estas variables solo son necesarias en los procesos de instalacion automatica
de nuevas instancias.
Se pueden pasar como variables de entorno al docker durante su primera
ejecucion, ej `docker-compose run -e MI_VAR=valor gancio ...`
Como alternativa, se pueden informar estas variables en el fichero `.env`, en
cuyo caso se borran luego de ser utilizadas para finalizar la instalacion
automatica.
- `GANCIO_ADMIN_PASS`, clave de acceso de la cuenta de administradora [ solo
es necesaria en Instalaciones Automaticas nuevas ].
_TODO eliminar estas variables de `.env` luego de persistirlas en la bbdd_
## Ejecucion de Gancio
Llegado este punto, podemos iniciar nuestra intancia
```
docker-compose up -d
```
Y a disfrutar de tu servicio de Gancio
Ahora te toca configurar el ProxyReverse ;)
## TODO
A ver quien hace un container con PostgreSQL en vez de SQLITE ;)
Y a disfrutar de tu servicio de Gancio \o/

Loading…
Cancel
Save