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?
- Instalar Docker-CE
- Instala Docker Compose
- Desplegar Gitea como contenedor usando Docker
- Post-Instalación de Gitea
- Crear el primer repositorio
- 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"
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
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
o ejecutando el docker ‘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.
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.
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 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.
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.
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
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.
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.
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 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.
Ahora haz clic en el botón «Instalar Gitea».
Y serás redirigido al panel 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
y haz clic en el botón ‘Crear Repositorio’.
El repositorio ha sido creado.
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.
Comprueba la página del repositorio y asegúrate de que los cambios son los siguientes.
La instalación de Gitea con Docker en Ubuntu 18.04 se ha completado con éxito.