Git in the house! 2 of 2.

Olá a todos.

No seguimento do nosso ultimo post sobre git e o software git, vamos agora fazer um post mais técnico sobre como efetuar deployment de uma instancia de git, neste caso na forma do gitea no nosso homelab.

Para a nossa receita, iremos necessitar dos seguintes pré-requisitos:

– Um servidor/LXC container a executar Rocky Linux 8 com acesso root.
– Pelo menos 1 GB de RAM e 1 CPU core.
– Um nome de domínio ou endereço IP público apontando para o seu servidor, ou caso desejem acesso interno apenas, um selfhosted non-valid domain para acederem por URL por dentro da vossa infra-estrutura.

Instalem as dependências necessárias:

Antes de começar, precisamos instalar as dependências necessárias. Executem o seguinte comando para atualizar a lista de pacotes e instalar os pacotes necessários:

sudo dnf update -y
sudo dnf install curl git sqlite gcc gcc-c++ make openssl-devel

Criar um novo utilizador e grupo no sistema:

Em seguida, criem um novo utilizador e grupo no sistema que executará o Gitea. Usaremos para o exemplo em mãos o nome de usuário `git` e o nome de grupo `git`.

sudo groupadd --system git
sudo useradd --system -d /var/lib/gitea -s /bin/bash -G git git

Descarregue e instale o Gitea:

Visitem o site da Gitea (https://dl.gitea.io/gitea/) e encontrem a versão mais recente do produto. No momento que este guia foi escrito, a versão mais recente estável era a 1.21.3.

cd/tmp
curl -LO https://dl.gitea.com/gitea/1.21.3/gitea-1.21.3-linux-amd64.tar.gz

Quando o download estiver concluído, extraiam o arquivo e movam o binário para o diretório `/usr/local/bin/`.

tar -zxvf gitea-1.21.3-linux-amd64.tar.gz
sudo mv gitea /usr/local/bin/

Configurar o Gitea:

Criem um novo diretório para os arquivos de configuração e arquivos de log do Gitea.

sudo mkdir -p /etc/gitea /var/lib/gitea/custom/conf /var/lib/gitea/log
sudo chown git:git /var/lib/gitea/log
 Copiem o ficheiro de configuração de template para o diretório `/etc/gitea/`.
sudo cp /usr/local/bin/custom/conf/app.ini /etc/gitea/

Abram o arquivo `app.ini` com o vosso editor de texto favorito

sudo vi /etc/gitea/app.ini

Atualize as seguintes configurações na secção`[servidor]`:

APP_NAME = Gitea in the house
ROOT_URL = https://nome-do-vosso-dominio.com/

Atualize as seguintes configurações na secção`[database]`:

DB_TYPE = sqlite3

Nota: neste caso, and for simplicity sake, escolhi uma sqlite DB. Quem tiver já a utilizar um servidor mysql, como é obvio, use-o. É mais fácil ter as coisas centralizadas do que andar a fazer hopping por 30 vm’s e lxc containers para fazer backups coisa-a-coisa.

Atualizem as seguintes configurações na seção `[repository]`:

ROOT = /var/lib/gitea/repositórios

Nota: Acho que é obvio, mas a diretoria acima refere-se onde os vossos repositórios irão ficar guardados localmente no git server.

Atualizem as seguintes configurações na seção `[security]`:

INSTALL_LOCK = true
SECRET_KEY = gerem uma chave secreta aleatória e coloquem-a aqui
INTERNAL_TOKEN = gerem um token interno aleatório e coloquem-o aqui

Nota: Podem gerar uma chave secreta aleatória e um token interno executando os seguintes comandos numa shell local:

openssl rand -hex 16
openssl rand -hex 16

Gravem e fechem o arquivo.

Configurar o Gitea como um serviço systemd:

Criem um novo arquivo de serviço systemd para o Gitea.

sudo vi /etc/systemd/system/gitea.service

Adicionem o seguinte conteúdo ao arquivo:

[unit]
Description=Gitea (Git com uma xícara de chá)
After=syslog.target
After=network.target
After=postgresql.service
Wants=postgresql.service

[service]
# Modifiquem esses dois valores e descomente-os se tiver #repos

#GITEA_CUSTOM=/var/lib/gitea/custom
#GITEA_WORK_DIR=/var/lib/gitea
User=git
Group=git
WorkingDirectory=/var/lib/gitea
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/var/lib/gitea

[Install]
WantedBy=multi-user.target

Gravem e saiam do vosso editor.

Façam reload ao systemd para carregar a nossa nova configuração.

sudo systemctl daemon-reload

Iniciem o vosso Gitea  e activem o arraque automático:

sudo systemctl start gitea
sudo systemctl enable gitea

Acedam ao vosso novo servidor gitea:

Abram o vosso browser favorito, e acedam ao vosso servidor através do URL/porta configurada.

http://url-do-nosso-novo-servidor-gitea:3000/
https://url-do-nosso-novo-servidor-gitea:3000/

Nota: Para https e/ou outras portas deverão fazer alterações no vosso ficheiro de configuração, como introdução de certificados ssl.

Em seguida, e no browser, terão acesso ao vosso processo de configuração final do gitea. E parabens, acabaram de configurar o vosso primeiro servidor git.

Chegamos ao fim do post desta semana, ao estilo mais técnico como faço de vez em quando. Espero que tenham gostado, e atá a proxima semana.
Como sempre, se tiverem algum reparo, ou alguma sugestão sabem onde me encontrar.

Abraço.
Nuno