Cómo instalar el servicio Gitea Self-hosted Git con Docker en Ubuntu 18.04

Gitea es una bifurcación de Gogs, el servicio Git autoalojado de fácil uso. Es similar a GitHub, Bitbucket y Gitlab. Gitea es una solución ligera de alojamiento de código escrita en Go, que puede funcionar con requisitos mínimos de hardware. Es una aplicación multiplataforma, puede ejecutarse en cualquier lugar donde se pueda compilar Go, como Windows, Linux, MacOS, ARM, etc.

En este tutorial, te mostraré paso a paso cómo instalar y configurar el servicio ligero Git utilizando Gitea. Desplegaremos el servidor Gitea utilizando Docker y utilizaremos la base de datos PostgreSQL y el proxy inverso Traefik. Para esta guía, utilizaremos el último servidor Ubuntu 18.04.

Requisitos previos

  • Ubuntu 18.04
  • Privilegios de root

¿Qué vamos a hacer?

  1. Instalar Docker-CE
  2. Instala Docker Compose
  3. Desplegar Gitea como contenedor usando Docker
  4. Post-Instalación de Gitea
  5. Crear el primer repositorio
  6. Probar el primer commit

Paso 1 – Instalar Docker-CE

El primer paso que haremos para esta guía es instalar la edición comunitaria de Docker en el servidor Ubuntu 18.04. Instalaremos el paquete Docker CE desde el repositorio oficial de Docker.

Añade el repositorio Docker y Docker ejecutando los siguientes comandos.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Añadir el repositorio Docker de Ubuntu

El comando ‘add-apt-repository’ actualizará automáticamente el repositorio.

Ahora instala el paquete Docker CE.

sudo apt policy docker-ce
sudo apt install docker-ce=18.06.1~ce~3-0~ubuntu

instalar el paquete Docker CE

Cuando la instalación se haya completado, inicia el servicio Docker y habilítalo para que se inicie siempre al arrancar el sistema.

sudo systemctl start docker
sudo systemctl enable docker

Docker CE está funcionando en el servidor Ubuntu 18.04. Verifica la instalación comprobando la versión de Docker

docker version

Comprueba la versión de Docker

o ejecutando el docker ‘hello-world’.

docker run hello-world

docker run hello-world

Paso 2 – Instalar Docker Compose

Docker-Compose es una herramienta de línea de comandos para definir y gestionar aplicaciones docker multicontenedor. Te permite crear un contenedor como servicio, ideal para tu entorno de desarrollo, pruebas y puesta en escena.

Instala Docker Compose descargando el archivo binario y conviértelo en un ejecutable.

sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Ahora comprueba el comando docker-compose.

docker-compose version

Docker Compose ya está instalado.

Instalar Docker Compose

Paso 3 – Desplegar Gitea como contenedor Docker

En este paso, crearemos un nuevo script docker-compose que contiene la configuración de todos los servicios, incluyendo la base de datos PostgreSQL y el proxy inverso Traefik. Configuraremos todos los archivos de despliegue en el directorio llamado ‘deployment’.

Crear una red Docker personalizada

Antes de crear la configuración de despliegue, vamos a crear una nueva red puente personalizada. Se utilizará para el servicio externo traefik reverse proxy.

Comprueba la lista docker network.

docker network ls

Ahora crea una nueva red puente personalizada llamada ‘hakasenet’.

docker network create hakasenet

Vuelve a comprobarlo.

docker network ls

Ahora tendrás la red ‘hakasenet’ en la lista.

Comprueba la red docker

Configurar el directorio y los archivos de despliegue

Crea un nuevo directorio llamado ‘deployment’ y el script ‘docker-compose.yml’ en él.

mkdir deployment; cd deployment
touch docker-compose.yml

Ahora crea un nuevo directorio ‘gitea’ y un volumen de datos ‘postgres’.

mkdir -p gitea/ postgres/

Crea un nuevo archivo ‘acme.json’ y cambia el permiso del archivo, que se utilizará para almacenar los datos de Letsencrypt.

touch acme.json
chmod 600 acme.json

Ahora crea el archivo de configuración global de traefik ‘traefik.toml’.

touch traefik.toml

Y a continuación los archivos y directorios que tenemos para la instalación de Gitea mediante Docker.

tree

Configurar el directorio y los archivos de despliegue

Configurar el servicio PostgreSQL

El servicio de base de datos PostgreSQL es el primer servicio que queremos configurar. El servicio de base de datos se ejecutará sólo en la red interna de Docker.

Y utilizaremos la imagen Postgres 9.6, utilizando ‘gitea’ como nombre de la base de datos, usuario y contraseña, y configuraremos el volumen de datos de Postgres.

Edita el archivo ‘docker-compose.yml’ utilizando vim.

vim docker-compose.yml

Pega las configuraciones de abajo.

version: "3"

networks:
  hakasenet:
    external: true
  internal:
    external: false

services:
  db:
    image: postgres:9.6
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=gitea
      - POSTGRES_DB=gitea
    labels:
      - "traefik.enable=false"
    networks:
      - internal
    volumes:
      - ./postgres:/var/lib/postgresql/data

Guarda y sal.

Configurar el proxy inverso Traefik

Ahora configuraremos el proxy inverso Traefik para nuestra instalación de Gitea.

El servicio traefik se ejecutará en los puertos HTTP y HTTPS por defecto, en la red puente personalizada llamada ‘hakasenet’, y lo configuraremos para que utilice los certificados Letsencrypt que se definirán en el archivo ‘traefik.toml’.

Edita el script de composición.

vim docker-compose.yml

Pega las configuraciones bajo la configuración del servicio db.

  traefik:
    image: traefik:latest
    command: --docker
    ports:
      - 80:80
      - 443:443
    labels:
      - "traefik.enable=true"
      - "traefik.backend=dashboard"
      - "traefik.frontend.rule=Host:traefik.hakase-labs.io"
      - "traefik.port=8080"
    networks:
      - hakasenet
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    container_name: traefik
    restart: always

Guarda y sal.

Ahora edita el archivo de configuración ‘traefik.toml’.

vim traefik.toml

Y pega la siguiente configuración.

#Traefik Global Configuration
debug = false
checkNewVersion = true
logLevel = "ERROR"

#Define the EntryPoint for HTTP and HTTPS
defaultEntryPoints = ["https","http"]

#Define the HTTP port 80 and
#HTTPS port 443 EntryPoint
#Enable automatically redirect HTTP to HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]

#Enable Traefik Dashboard on port 8080
#with basic authentication method
#hakase and password
[entryPoints.dash]
address=":8080"
[entryPoints.dash.auth]
[entryPoints.dash.auth.basic]
    users = [
        "hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.",
    ]

[api]
entrypoint="dash"
dashboard = true

#Enable retry sending a request if the network error
[retry]

#Define Docker Backend Configuration
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "hakase-labs.io"
watch = true
exposedbydefault = false

#Letsencrypt Registration
#Define the Letsencrypt ACME HTTP challenge
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

Guarda y sal.

Nota:

  • Cambia el correo electrónico de acme letsencrypt por tu dirección de correo válida.

Configurar el servicio Gitea

Edita el archivo de configuración ‘docker-compose.yml’.

vim docker-compose.yml

Pega la configuración del servicio gitea al final de la línea.

  server:
    image: gitea/gitea:latest
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - internal
    volumes:
      - ./gitea:/data
    ports:
      - "3000"
      - "22"
    labels:
      - "traefik.enabled=true"
      - "traefik.backend=gitea"
      - "traefik.frontend.rule=Host:git.hakase-labs.io"
      - "traefik.docker.network=hakasenet"
      - "traefik.port=3000"
    networks:
      - internal
      - hakasenet
    depends_on:
      - db
      - traefik

Guarda y sal.

El servicio Gitea se ejecutará en el puerto TCP ‘3000’, utilizando las dos redes docker ‘internal’ y ‘hakasenet’, y se ejecutará bajo el proxy inverso traefik en el dominio ‘git.hakase-labs.io’.

Se ha completado la configuración de Docker Composes para el despliegue de Gitea.

Despliega todos los servicios

Ahora despliega la pila utilizando el comando ‘docker-compose’ que aparece a continuación.

docker-compose up -d

El comando descargará todas las imágenes docker necesarias y ejecutará los servicios definidos en el script docker-compose.

Desplegar todos los servicios

Y cuando se haya completado, comprueba los servicios disponibles en docker utilizando la opción ps como se indica a continuación.

docker-compose ps

Ahora obtendrás el resultado que se muestra a continuación.

docker-compose ps

Los contenedores de la base de datos PostgreSQL, Gitea y el proxy inverso traefik ya están en funcionamiento. El servicio de base de datos se está ejecutando en el puerto por defecto ‘5432’, el servidor gitea se está ejecutando en el puerto ‘3000’, y el proxy traefik se está ejecutando en los puertos HTTP y HTTPS, accesibles desde la red exterior/internet.

Si quieres comprobar todos los registros de docker check, ejecuta el siguiente comando.

docker-compose logs

registros de docker-compose

Paso 4 – Post-Instalación de Gitea

Abre tu navegador web y escribe la URL de tu instalación de Gitea. La mía es

https://git.hakase-labs.io/

Ahora obtendrás la página predeterminada de Gitea.

Gitea se ejecuta con Docker

Añade la ruta de instalación a la URL.

https://git.hakase-labs.io/install

Ahora obtendrás la página de instalación de Gitea.

Configuración de la base de datos

Escribe los detalles de la base de datos PostgreSQL, y utiliza‘db‘ como host.

Instalador web de Gitea

Configuración general de Gitea

Cambia el ‘Título del sitio’ por tu propio título, el ‘Dominio del servidor SSH’ (sin https) y la ‘URL de la base de Gitea’ por la URL de tu servidor de Gitea.

Configuración general de Gitea

Configuración de la cuenta de administrador

En la configuración del administrador, escribe el nombre de usuario, la contraseña y la dirección de correo electrónico del administrador.

Configuración de la cuenta de administrador

Ahora haz clic en el botón «Instalar Gitea».

Y serás redirigido al panel de usuario por defecto de Gitea.

Tablero de usuario por defecto de Gitea

Paso 5 – Crear el primer repositorio en Gitea

En la página de inicio del usuario, haz clic en el botón ‘+’.

Ahora escribe los detalles del repositorio que quieres crear

Añadir depósito

y haz clic en el botón ‘Crear Repositorio’.

El repositorio ha sido creado.

Se ha creado el repositorio

Paso 6 – Probar el primer commit

Vuelve a tu shell de terminal, y configura el usuario y el correo electrónico de git por defecto.

Ejecuta los siguientes comandos git.

git config --global user.name "hakase"
git config --global user.email "[email protected]"

Ahora clona el repositorio.

git clone https://git.hakase-labs.io/hakase/myrepo.git

Ve al directorio del repositorio ‘myyrepo’ y edita el archivo README.md.

cd myrepo/
vim README.md

Haz cambios en el archivo README, luego guarda y sal.

Ahora confirma el repositorio.

git add .
git commit -m 'Edit the README.md file by hakase-labs'

Y envíalo al servidor.

git push origin master

Escribe tu nombre de usuario y contraseña.

Y el resultado debería ser el siguiente.

Prueba de Git Commit

Comprueba la página del repositorio y asegúrate de que los cambios son los siguientes.

Gitea instalada

La instalación de Gitea con Docker en Ubuntu 18.04 se ha completado con éxito.

Referencia

También te podría gustar...