|
|
|
@ -1,218 +1,92 @@
|
|
|
|
|
# GANCIO for SINDOMINIO |
|
|
|
|
|
|
|
|
|
## 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`. |
|
|
|
|
https://gancio.org/install/docker |
|
|
|
|
|
|
|
|
|
Estas dos dependencias suelen instalarse conjuntamente, como un paquete de las |
|
|
|
|
diferentes distribuciones linux, la [documentacion oficial de Docker][0] nos ayuda a |
|
|
|
|
hacerlo |
|
|
|
|
## Dockerfile |
|
|
|
|
|
|
|
|
|
[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 |
|
|
|
|
El original funciona sobre la imagen de docker de node |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
FROM node:latest |
|
|
|
|
... |
|
|
|
|
WORKDIR / |
|
|
|
|
RUN yarn global add gancio |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
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] |
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
[1]: https://gancio.org/install/debian |
|
|
|
|
https://gancio.org/install/debian |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
FROM registry.sindominio.net/debian |
|
|
|
|
... |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
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. |
|
|
|
|
|
|
|
|
|
FROM registry.sindominio.net/debian as builder |
|
|
|
|
|
|
|
|
|
### 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` |
|
|
|
|
RUN apt-get update && \ |
|
|
|
|
apt-get install -y --no-install-recommends curl gnupg2 ca-certificates |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
### 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` |
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
### 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` |
|
|
|
|
# Install Node Latest |
|
|
|
|
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - |
|
|
|
|
RUN apt-get install -y nodejs |
|
|
|
|
|
|
|
|
|
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`)_ |
|
|
|
|
WORKDIR / |
|
|
|
|
RUN yarn global add gancio |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## Instalación |
|
|
|
|
|
|
|
|
|
## Instalacion Manual |
|
|
|
|
Seguimos los pasos de Gancio. |
|
|
|
|
|
|
|
|
|
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: |
|
|
|
|
|
|
|
|
|
Primero, descargamos este repo |
|
|
|
|
``` |
|
|
|
|
git clone https://git.sindominio.net/gancio/docker-gancio |
|
|
|
|
git clone https://git.sindominio.net/siroco/docker-gancio |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
Accedemos a la carpeta creada |
|
|
|
|
Accedemos a la carpeta creada: |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
cd docker-gancio |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
``` |
|
|
|
|
Ejecutamos los siguiente comandos para crear los ficheros básicos para la instalación |
|
|
|
|
|
|
|
|
|
Luego a buildear |
|
|
|
|
``` |
|
|
|
|
docker-compose build |
|
|
|
|
touch config.json db.sqlite |
|
|
|
|
mkdir uploads |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
Y por ultimo, respondems a las preguntas del instalador |
|
|
|
|
Y luego a buildear y configurar |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
docker-compose run --rm gancio "gancio setup --docker --db=sqlite" |
|
|
|
|
docker-compose build |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
Seguimos los pasos del SETUP de Gancio |
|
|
|
|
|
|
|
|
|
## Instalacion Automatica |
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
- `admin_pass`, clave de acceso para la cuenta de administradora. _SE ELIMINA |
|
|
|
|
AUTOMATICAMENTE DEL FICHERO AL CREAR LA CUENTA_ |
|
|
|
|
- `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 |
|
|
|
|
Esta cuenta solo se creara en el caso de iniciar una nueva instancia de |
|
|
|
|
Gancio, sin datos. |
|
|
|
|
|
|
|
|
|
Si estamos re-iniciando una instancia existente, estos datos seran ignorados |
|
|
|
|
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` y `admin_pass` informado en el |
|
|
|
|
`config.json` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 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>" |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
... |
|
|
|
|
docker-compose run --rm gancio gancio setup --docker --db=sqlite |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
Y supongo que tras esto, podemos hacer un |
|
|
|
|
|
|
|
|
|
## 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 |
|
|
|
|
``` |
|
|
|
|
docker-compose up -d |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
### 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`)_ |
|
|
|
|
|
|
|
|
|
Y a disfrutar de tu servicio de Gancio |
|
|
|
|
|
|
|
|
|
Ahora te toca configurar el ProxyReverse ;) |
|
|
|
|
|
|
|
|
|
## Ejecucion de Gancio |
|
|
|
|
Llegado este punto, podemos iniciar nuestra intancia |
|
|
|
|
``` |
|
|
|
|
docker-compose up -d |
|
|
|
|
``` |
|
|
|
|
## TODO |
|
|
|
|
|
|
|
|
|
Y a disfrutar de tu servicio de Gancio \o/ |
|
|
|
|
A ver quien hace un container con PostgreSQL en vez de SQLITE ;) |
|
|
|
|