134 lines
4.6 KiB
Markdown
134 lines
4.6 KiB
Markdown
# gitea.md
|
|
|
|
## Ficheros definición de la aplicación
|
|
|
|
```bash
|
|
gitea $ tree -a
|
|
.
|
|
├── docker-compose.override.yml
|
|
├── docker-compose.yml
|
|
└── .env
|
|
```
|
|
|
|
_Nota autor:_ Este documento es solo a modo de referencia para principalmente desplegar y/o configurar el entorno para desplegar 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 eventualmente pueda ser utilizado en el despliegue en diferentes entornos (ejemplo: entorno desarrollo, pruebas, producción, etc), o utilizando sobre carga de la propia inicialización de la aplicación.
|
|
|
|
## Responsabilidad de los archivos
|
|
|
|
- `.env`: variables de entorno referenciadas en los archivos YAML.
|
|
- `docker-compose.yml`: archivo principal para definir los servicios de la aplicación. En este caso de uso, 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, etc.
|
|
|
|
|
|
### Volúmenes que define/utiliza esta aplicación
|
|
|
|
- La base de datos de Postgres se persiste en `.../postgres` (según inicialización en el `.env`).
|
|
- El servicio o aplicación Gitea se persiste en `.../gitea` (según inicialización en el `.env`).
|
|
- También se utilizan otros volumenes, como el de las credenciales para la autenticación por `ssh`, este también es persistido en un volumen desde el host anfitrión (host motor de Docker).
|
|
|
|
# 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:
|
|
|
|
```bash
|
|
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 <<EOF | sudo tee /home/${GITEA_ACCOUNT}/docker-shell
|
|
#!/bin/sh
|
|
/usr/bin/docker exec -i -u ${GITEA_ACCOUNT} --env SSH_ORIGINAL_COMMAND="\$SSH_ORIGINAL_COMMAND" ${CONTAINER_NAME} sh "\$@"
|
|
EOF
|
|
sudo chmod +x /home/${GITEA_ACCOUNT}/docker-shell
|
|
sudo usermod -s /home/${GITEA_ACCOUNT}/docker-shell ${GITEA_ACCOUNT}
|
|
|
|
# id ${GITEA_ACCOUNT} # <-- el usuario git sobre el host anfitrion debe poder ejecutar docker para esta configuración funcione (es el usuario que redirecciona la conexión ssh al propio contenedor de Gitea).
|
|
##$ id ${GITEA_ACCOUNT}
|
|
## uid=...(git) gid=...(git) groups=...(git),...(docker)
|
|
```
|
|
|
|
## Revisar/ajustar estructura
|
|
|
|
```bash
|
|
mkdir -pv data/{gitea,postgres}
|
|
```
|
|
|
|
### Estructura actual (sugerida)
|
|
|
|
```bash
|
|
gitea]$ tree -a
|
|
.
|
|
├── data # Carpeta para los volúmenes persistentes
|
|
│ ├── gitea
|
|
│ └── postgres
|
|
├── docker-compose.override.yml
|
|
├── docker-compose.yml
|
|
├── .env
|
|
└── gitea.md
|
|
```
|
|
|
|
## Iniciar los contenedores
|
|
|
|
```
|
|
docker compose up -d
|
|
```
|
|
|
|
## Instalar Gitea
|
|
|
|
Acceder a: `http://localhost:<$GITEA_HTTP_PORT_EXTERNAL>` e instalar Gitea
|
|
|
|

|
|
|
|
|
|
## Registrar usuario y copiar credenciales
|
|
|
|
En esta sección se registra un usuario y se copia su clave pública.
|
|
|
|
### Registrar usuario
|
|
|
|

|
|
|
|
### Usuario logado - setting
|
|
|
|

|
|
|
|
#### Setting - copiar clave pública
|
|
|
|

|
|
|
|
|
|
### 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 git@almalinux9-docker:usrdevel1/repo-2.git`
|
|
|
|

|
|
|
|
## Otros comandos
|
|
|
|
- Ver los logs
|
|
|
|
```bash
|
|
docker-compose logs -f
|
|
```
|