
Gitea è un pacchetto software gratuito e open source per l'hosting automatico di un server Git. Offre anche funzionalità collaborative come il monitoraggio dei bug, i wiki e la revisione del codice. Gitea è una soluzione di codice leggera e guidata dalla community scritta in Go.
Gli sviluppatori devono unire regolarmente le modifiche al codice in un repository centrale durante il lavoro. Può succedere che tu debba avere un repository centrale privato per il tuo team che ospiterai e gestirai da solo. Puoi usare Gitea per questo scopo. È simile a GitHub, Bitbucket e così via.
In questo tutorial impariamo come installare Gitea utilizzando la finestra mobile su Ubuntu 20.04 .
Prerequisiti
- Un nodo installato con Ubuntu 20.04
- Un utente con privilegio sudo
Passaggio 1:installa Docker su Ubuntu
Gitea fornisce l'ultima versione stabile delle sue immagini Docker dall'hub Docker. Può essere installato da sorgente, binario e anche come pacchetto. Qui stiamo distribuendo come immagine Docker.
Per installare la finestra mobile, dovrai installare alcuni prerequisiti:
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
Ora aggiungiamo la chiave GP del repository docker:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Ora aggiungi Docker ai sorgenti APT. Aggiornerà automaticamente la cache.
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
Ora installa la finestra mobile usando il seguente comando:
$ sudo apt install docker-ce
Aggiungi l'utente al gruppo Docker in modo che possa utilizzare il comando Docker senza privilegi sudo:
$ sudo usermod -aG docker username
Passaggio 2:esegui la finestra mobile Nginx
Per abilitare HTTPS puoi utilizzare proxy di terminazione TLS come Nginx, Apache2 o Caddy. Nel nostro caso, eseguiremo un container indipendente come proxy inverso Nginx.
$ docker run -d --name nginx -p 80:80 -p 443:443 -v /etc/nginx/htpasswd:/etc/nginx/htpasswd -v /etc/nginx/vhost.d:/etc/nginx/vhost.d:ro -v /etc/nginx/certs:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock:ro etopian/nginx-proxy
Ci aiuterà a reindirizzare tutto il traffico HTTP predefinito su HTTPS quando integri i tuoi certificati. Dovresti notare il volume mappato per integrare i tuoi certificati che è /etc/nginx/certs
Ora apri le porte 80 e 443 sul firewall:
$ sudo ufw allow 80,443/tcp
Inoltre, assicurati di aprire ssh prima di abilitare UFW se non ancora
$ sudo ufw allow 'OpenSSH'
Ora abilita UFW se non ancora
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Passaggio 3:esegui la finestra mobile MySQL
Gitea ha bisogno di un database per salvare i suoi dati. Gitea supporta MySQL/MariaDB, PostgreSQL, SQLite e MSSQL. Qui eseguiremo un contenitore MySQL per conservare tutti i dati.
$ docker run -d --name mysql-gitea -e MYSQL_ROOT_PASSWORD=o$su876HG@zvsRt3BT -v /opt/docker-volume/mysql-gitea:/var/lib/mysql mysql:5.7
Possiamo verificare se il nostro container è in esecuzione
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d41fec8b0e4 mysql:5.7 "docker-entrypoint.s…" 2 hours ago Up 2 hours 3306/tcp, 33060/tcp mysql-gitea
ec9d83a3944e etopian/nginx-proxy "forego start -r" 3 days ago Up 24 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
Gitea per impostazione predefinita ascolta le connessioni sulla porta 3000 e il proxy reverser sulle porte HTTP e HTTPS. Se hai un firewall assicurati che le porte siano aperte per accedere all'interfaccia web di Gitea.
Diamo un'occhiata ad alcuni dettagli del nostro contenitore MySQL come l'indirizzo IP perché ne avremo bisogno in seguito
$ docker inspect mysql-gitea
[
{
"Id": "6d41fec8b0e4b6ca465444d5cfea11913decddfd7586f4796702463cf08897fe",
"Created": "2021-10-21T23:48:20.709365573Z",
...
...
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "3f0b32613606db9e0761af15b7fa5d7f7c3b86f4d3b4668d574c579b9468915f",
"EndpointID": "f029fc1797c70d090da19d30cb31ca34c1b6baf4537a807397e931f87262f867",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null
}
...
...
Ora connettiamoci al contenitore MySQL
$ docker container exec -it mysql-gitea bash
Quindi accedi alla riga di comando di MySQL
# mysql -u root -po$su876HG@zvsRt3BT
Ora crea il database e l'utente per Gitea
mysql> CREATE USER 'gitea-user'@'%' IDENTIFIED BY '34@zv$TKji@s097BB';
mysql> CREATE DATABASE giteadb;
mysql> GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea-user'@'%';
mysql> FLUSH PRIVILEGES;
mysql> exit;
Ora esci anche dal container
# exit;
Fase 4:Configura il certificato SSL
Per poter accedere alla tua Gitea tramite un nome di dominio sicuro, dovrai copiare il certificato SSL nella cartella Nginx. Puoi utilizzare il certificato Let's Encrypt gratuito o il certificato di un'autorità di certificazione.
Copia il certificato
$ cp gitea.websitefortesting.com.crt /etc/nginx/certs/
Copia la chiave
$ cp gitea.websitefortesting.com.key /etc/nginx/certs/
Fase 5:esegui la finestra mobile Gitea
Per eseguire Gitea, dobbiamo indicare alcune informazioni sul container MySQL che è stato lanciato in precedenza come:
- Il tipo di database che è mysql
- l'indirizzo ip del contenitore mysql
- il nome del database
- il nome utente del database
- la password dell'utente del database
- la porta utilizzata da gitea
$ docker run -d --name gitea-selfhosted -v /opt/docker-volume/gitea-selfhosted:/data -p 3000:3000 -e VIRTUAL_HOST=gitea.websitefortesting.com -e VIRTUAL_PORT=3000 -e USER_UID=1001 -e USER_GID=1001 -e DB_TYPE=mysql -e DB_HOST=172.17.0.3:3306 -e DB_NAME=giteadb -e DB_USER=gitea-user -e DB_PASSWD=34@zv$TKji@s097BB gitea/gitea:1.8
Possiamo verificare se è in esecuzione
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
321b870a0735 gitea/gitea:1.8 "/usr/bin/entrypoint…" 11 seconds ago Up 10 seconds 22/tcp, 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp gitea-selfhosted
6d41fec8b0e4 mysql:5.7 "docker-entrypoint.s…" 2 hours ago Up 3 minutes 3306/tcp, 33060/tcp mysql-gitea
ec9d83a3944e etopian/nginx-proxy "forego start -r" 3 days ago Up 29 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
Ora puoi provare ad accedere a Gitea utilizzando l'URL https://giteadomain.com

Ora vai su "Accedi" per continuare il processo di installazione. Puoi personalizzare alcune informazioni come il titolo del sito.

Assicurati di indicare il nome di dominio dove è necessario. Indicare anche le informazioni per l'account amministratore

Dopo l'installazione, accederai

Puoi creare un nuovo repository

Hai il primo repository

Conclusione
Ora conosci tutti i passaggi per installare Gitea usando Docker su Ubuntu 20.04, il tuo repository centrale privato per il tuo codice. Sarai in grado di gestirlo a seconda delle tue esigenze.