From 145ee4a365c4eb1810d17649d920890b6c44e3eb Mon Sep 17 00:00:00 2001 From: "dzamo (from g470)" Date: Fri, 22 Nov 2024 01:04:15 +0100 Subject: [PATCH] first commit --- .gitignore | 5 + .../Syncthing_Balaitus/Syncthing_Balaitus.yml | 29 +++ .../Syncthing_Balaitus/compose.override.yml | 6 + .../omv7-gitea/compose.override.yml | 30 +++ _omv7_compose-files/omv7-gitea/omv7-gitea.yml | 31 +++ gitea/docker-compose.override.yml | 26 +++ gitea/docker-compose.yml | 26 +++ gitea/gitea.md | 219 ++++++++++++++++++ 8 files changed, 372 insertions(+) create mode 100644 .gitignore create mode 100644 _omv7_compose-files/Syncthing_Balaitus/Syncthing_Balaitus.yml create mode 100644 _omv7_compose-files/Syncthing_Balaitus/compose.override.yml create mode 100644 _omv7_compose-files/omv7-gitea/compose.override.yml create mode 100644 _omv7_compose-files/omv7-gitea/omv7-gitea.yml create mode 100644 gitea/docker-compose.override.yml create mode 100644 gitea/docker-compose.yml create mode 100644 gitea/gitea.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0743f2e --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +**/.env +**/*env +**/data +**/images +**/extras diff --git a/_omv7_compose-files/Syncthing_Balaitus/Syncthing_Balaitus.yml b/_omv7_compose-files/Syncthing_Balaitus/Syncthing_Balaitus.yml new file mode 100644 index 0000000..3e6c132 --- /dev/null +++ b/_omv7_compose-files/Syncthing_Balaitus/Syncthing_Balaitus.yml @@ -0,0 +1,29 @@ +# This file is auto-generated by openmediavault (https://www.openmediavault.org) +# WARNING: Do not edit this file, your changes will get lost. + +# Syncthing_Balaitus +# Syncthing en g470 sobre omv7 +--- +services: + syncthing: + image: ${CONTAINER_IMAGE} + container_name: ${CONTAINER_NAME} + hostname: ${HOSTNAME} #optional + environment: + - PUID=${MY_UID} + - PGID=${MY_GID} + - TZ=Etc/UTC + volumes: + - ${COMPOSE_SYNCTHING_CONFIG_PATH}/config:/config + - ${COMPOSE_DATA_PATH}/1_Projects:/1_Projects + - ${COMPOSE_DATA_PATH}/2_Areas:/2_Areas + - ${COMPOSE_DATA_PATH}/3_Resources:/3_Resources + - ${COMPOSE_DATA_PATH}/4_Archives:/4_Archives + - ${COMPOSE_SYNCTHING_MY_PKM}:/PKM + ports: + - 8384:8384 + - 22000:22000/tcp + - 22000:22000/udp + - 21027:21027/udp + restart: unless-stopped + diff --git a/_omv7_compose-files/Syncthing_Balaitus/compose.override.yml b/_omv7_compose-files/Syncthing_Balaitus/compose.override.yml new file mode 100644 index 0000000..97f415c --- /dev/null +++ b/_omv7_compose-files/Syncthing_Balaitus/compose.override.yml @@ -0,0 +1,6 @@ +# This file is auto-generated by openmediavault (https://www.openmediavault.org) +# WARNING: Do not edit this file, your changes will get lost. + +# Syncthing_Balaitus +# Syncthing en g470 sobre omv7 + diff --git a/_omv7_compose-files/omv7-gitea/compose.override.yml b/_omv7_compose-files/omv7-gitea/compose.override.yml new file mode 100644 index 0000000..ecaa57c --- /dev/null +++ b/_omv7_compose-files/omv7-gitea/compose.override.yml @@ -0,0 +1,30 @@ +# This file is auto-generated by openmediavault (https://www.openmediavault.org) +# WARNING: Do not edit this file, your changes will get lost. + +# omv7-gitea +# Gitea en OpenMediaVault v7 - AUN EN DESARROLLO (falta revisar los PATH) +--- +services: + my_service: + environment: + - USER_UID=${GITEA_UID} + - USER_GID=${GITEA_GID} + - GITEA__database__DB_TYPE=${RDBMS} + - GITEA__database__HOST=my_db:${RDBMS_PORT} + - GITEA__database__NAME=${DB_NAME} + - GITEA__database__USER=${DB_USER} + - GITEA__database__PASSWD=${DB_PASSWD} + volumes: + - ${GITEA_PATH_HOST}:${GITEA_PATH_CONTAINER} + - ${PATH_VOL_HOST_SSH_KEY}/:${GITEA_SSH_PATH_CONTAINER} + ports: + - "${GITEA_SSH_EXPOSE}:${GITEA_SSH_CONTAINER}" + - "${GITEA_IP_SSH_EXPOSE}:${GITEA_SSH_CONTAINER}" + my_db: + environment: + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASSWD} + - POSTGRES_DB=${DB_NAME} + volumes: + - ${POSTGRES_VOL_PATH_HOST}:${POSTGRES_PATH_CONTAINER} + diff --git a/_omv7_compose-files/omv7-gitea/omv7-gitea.yml b/_omv7_compose-files/omv7-gitea/omv7-gitea.yml new file mode 100644 index 0000000..a71387a --- /dev/null +++ b/_omv7_compose-files/omv7-gitea/omv7-gitea.yml @@ -0,0 +1,31 @@ +# This file is auto-generated by openmediavault (https://www.openmediavault.org) +# WARNING: Do not edit this file, your changes will get lost. + +# omv7-gitea +# Gitea en OpenMediaVault v7 - AUN EN DESARROLLO (falta revisar los PATH) +# docker-compose.yml + +--- +networks: + my_net: + external: false +services: + my_service: + image: ${GITEA_IMAGE} + container_name: ${CONTAINER_NAME} + restart: always + networks: + - my_net + volumes: + - ${TIMEZONE_FILE}:${TIMEZONE_FILE_CONTAINER} + - ${LOCALTIME_FILE}:${LOCALTIME_FILE_CONTAINER} + ports: + - "${GITEA_HTTP_EXPOSE}:${GITEA_HTTP_CONTAINER}" + depends_on: + - my_db + my_db: + image: ${RDBMS_IMAGE} + restart: always + networks: + - my_net + diff --git a/gitea/docker-compose.override.yml b/gitea/docker-compose.override.yml new file mode 100644 index 0000000..6ee39d4 --- /dev/null +++ b/gitea/docker-compose.override.yml @@ -0,0 +1,26 @@ +--- +services: + my_service: + environment: + - USER_UID=${GITEA_UID} + - USER_GID=${GITEA_GID} + - GITEA__database__DB_TYPE=${RDBMS} + - GITEA__database__HOST=my_db:${RDBMS_PORT} + - GITEA__database__NAME=${DB_NAME} + - GITEA__database__USER=${DB_USER} + - GITEA__database__PASSWD=${DB_PASSWD} + volumes: + - ${GITEA_PATH_HOST}:${GITEA_PATH_CONTAINER} + - ${GITEA_ACCOUNT_SSH}:${GITEA_SSH_PATH_CONTAINER} + + ports: + - "${GITEA_SSH_EXPOSE}:${GITEA_SSH_CONTAINER}" + - "${GITEA_IP_SSH_EXPOSE}:${GITEA_SSH_CONTAINER}" + + my_db: + environment: + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASSWD} + - POSTGRES_DB=${DB_NAME} + volumes: + - ${POSTGRES_VOL_PATH_HOST}:${POSTGRES_PATH_CONTAINER} diff --git a/gitea/docker-compose.yml b/gitea/docker-compose.yml new file mode 100644 index 0000000..5e075cd --- /dev/null +++ b/gitea/docker-compose.yml @@ -0,0 +1,26 @@ +--- +networks: + my_net: + external: false + +services: + my_service: + image: ${GITEA_IMAGE} + container_name: ${CONTAINER_NAME} + restart: always + networks: + - my_net + volumes: + - ${TIMEZONE_FILE}:${TIMEZONE_FILE_CONTAINER} + - ${LOCALTIME_FILE}:${LOCALTIME_FILE_CONTAINER} + ports: + - "${GITEA_HTTP_EXPOSE}:${GITEA_HTTP_CONTAINER}" + depends_on: + - my_db + + my_db: + image: ${RDBMS_IMAGE} + restart: always + + networks: + - my_net diff --git a/gitea/gitea.md b/gitea/gitea.md new file mode 100644 index 0000000..b8eecf9 --- /dev/null +++ b/gitea/gitea.md @@ -0,0 +1,219 @@ +# Estructura inicial del proyecto + +```bash +gitea $ tree -a +. +├── docker-compose.override.yml +├── docker-compose.yml +└── .env +``` + +_Nota autor:_ algunos de los datos quizas son ofuscados/ocultos en este reporte. Este documento es solo a modo de referencia para despliegue de esta aplicación docker aquí compartida. + +## Definicion de los contenedores Docker + +En este despliegue se utiliza junto a la definición del `docker-compose.yml`, el fichero `.env` y `docker-compose.override.yml` para que se permita el despliegue de la misma aplicación en diferentes entornos (ejemplo: entorno desarrollo, pruebas, producción, etc). + +## Archivo .env + +Variables de entorno referenciadas en los archivos YAML. +Archivo: .env + +```bash +VAR=VALUE +... +``` + +## Archivo docker-compose.yml + +Archivo principal para definir los servicios de tu aplicación. +Archivo: docker-compose.yml + +```yaml +--- +## version: '3.9' + +networks: + my_net: + external: false + +services: + my_service: + image: ${GITEA_IMAGE} + container_name: ${CONTAINER_NAME} + restart: always + networks: + - my_net + volumes: + - ${TIMEZONE_FILE}:${TIMEZONE_FILE_CONTAINER} + - ${LOCALTIME_FILE}:${LOCALTIME_FILE_CONTAINER} + ports: + - "${GITEA_HTTP_EXPOSE}:${GITEA_HTTP_CONTAINER}" + depends_on: + - my_db + + my_db: + image: ${RDBMS_IMAGE} + restart: always + + networks: + - my_net +``` + +## Archivo docker-compose.override.yml + +Útil para ajustar configuraciones según el entorno (desarrollo, prueba, producción). +Archivo: docker-compose.override.yml + +```yaml +--- +## version: '3.9' +services: + my_service: + environment: + - USER_UID=${GITEA_UID} + - USER_GID=${GITEA_GID} + - GITEA__database__DB_TYPE=${RDBMS} + - GITEA__database__HOST=my_db:${RDBMS_PORT} + - GITEA__database__NAME=${DB_NAME} + - GITEA__database__USER=${DB_USER} + - GITEA__database__PASSWD=${DB_PASSWD} + volumes: + - ${GITEA_PATH_HOST}:${GITEA_PATH_CONTAINER} + - .../.ssh/:${GITEA_SSH_PATH_CONTAINER} + + ports: + - "${GITEA_SSH_EXPOSE}:${GITEA_SSH_CONTAINER}" + - "${GITEA_IP_SSH_EXPOSE}:${GITEA_SSH_CONTAINER}" + + my_db: + environment: + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASSWD} + - POSTGRES_DB=${DB_NAME} + volumes: + - ${POSTGRES_VOL_PATH_HOST}:${POSTGRES_PATH_CONTAINER} +``` + +# Ejecución y configuración + +## Configuración autenticación ssh - Docker Shell (with authorized_keys) + +_Referencia principal:_ [Installation with Docker](https://docs.gitea.com/installation/install-with-docker#docker-shell-with-authorized_keys) - Docker Shell (with authorized_keys). + +### Configuración usario para el contenedor Gitea + +En el host motor de Docker se realizan las siguientes tareas de configuración. Estas son: + +``` +source .env +export CONTAINER_NAME GITEA_ACCOUNT GITEA_UID GITEA_GID +sudo groupadd -g ${GITEA_UID} ${GITEA_ACCOUNT} +sudo useradd -u ${GITEA_UID} -g ${GITEA_GID} -G docker -d /home/${GITEA_ACCOUNT} ${GITEA_ACCOUNT} +#sudo usermod -G docker -a ${GITEA_ACCOUNT} +sudo -u ${GITEA_ACCOUNT} ssh-keygen -t rsa -b 4096 -C "Gitea Host Key" + +sudo -u ${GITEA_ACCOUNT} cat /home/${GITEA_ACCOUNT}/.ssh/id_rsa.pub | sudo -u ${GITEA_ACCOUNT} tee -a /home/${GITEA_ACCOUNT}/.ssh/authorized_keys +sudo -u ${GITEA_ACCOUNT} chmod 600 /home/${GITEA_ACCOUNT}/.ssh/authorized_keys + +cat <` e instalar Gitea + +![Gitea - instalación](images/gitea-install.png) + + +## Registrar usuario y copiar credenciales + +En esta sección se registra un usuario y se copia su clave pública. + +### Registrar usuario + +![Gitea - registrar usuario](images/gitea-register-account.png) + +### Usuario logado - setting + +![Account user - settings](images/gitea-account-settings.png) + +#### Setting - copiar clave pública + +![Account user - add key](images/gitea-add-key.png) + + +### Utilización de Gitea + +En las siguientes capturas se muestran ejemplo como copiar/clonar dos repositorios que el usuario `userdevel1`. Uno mediante el URL sobre `http` y el otro mediante `ssh`. + +- `git clone http://almalinux9-docker:3000/usrdevel1/repositorio1.git` + +![git clone http](images/git-gitea-clone-w-http.png) + +- `git clone git@almalinux9-docker:usrdevel1/repo-2.git` + +![git clone ssh](images/git-gitea-clone-w-ssh.png) + +## Otros comandos + +- Ver los logs + +```bash +docker-compose logs -f +``` + +## Resumen: explicación de la configuración + +- .env + + - Centraliza las credenciales y configuraciones sensibles. + +- `docker-compose.yml` + + - Define los servicios principales, como Postgres y Gitea (Nginx), con configuraciones básicas, en contenedores separados. + +- `docker-compose.override.yml` + + - Extiende o reemplaza configuraciones para propósitos específicos, como desarrollo o debug. + +- Volúmenes + + - La base de datos de Postgres en ubica en `...data/postgres`. + - El servicio o aplicación Gitea se persiste en `...data/gitea`. + - También se utilizan otros volumenes, como el de las credenciales.