Linux

How to Install Gitea on Ubuntu 20.04

How to Install Gitea on Ubuntu 20.04

Gitea is a fast and easy-to-use self-hosted git server written in Go. It includes a repository file editor, project issue tracking, user management, notifications, built-in wiki, and much more.

Gitea is a lightweight application and can be installed on low-powered systems. If you are searching for an alternative to Gitlab with a much smaller memory footprint and you don't need all the bells and whistles that Gitlab offers, then you should give a try to Gitea.

This article explains how to install and configure Gitea on Ubuntu 20.04.

Prerequisites #

Gitea supports SQLite, PostgreSQL , and MySQL /MariaDB as database backends.

SQLite is only recommended for small installations. Larger installations should use MySQL or PostgreSQL.

We'll use SQLite as the database for Gitea. If SQLite is not installed on your Ubuntu system, install it by entering the following commands as sudo user :

sudo apt updatesudo apt install sqlite3

Installing Gitea #

Gitea provides Docker images and can be installed from source, binary, and as a package. We'll install Gitea from binary.

Install Git #

The first step is to install Git on your server:

sudo apt updatesudo apt install git

Verify the installation by displaying the Git version:

git --version
git version 2.25.1 

Create a Git user #

Create a new system user which will run the Gitea application by typing:

sudo adduser \ --system \ --shell /bin/bash \ --gecos 'Git Version Control' \ --group \ --disabled-password \ --home /home/git \ git

The command above creates a new user and group named git, and set the home directory to /home/git. The output will look something like below:

Adding system user 'git' (UID 112)… Adding new group 'git' (GID 118)… Adding new user 'git' (UID 112) with group 'git'… Creating home directory '/home/git'… 

Download Gitea binary #

Head over to the Gitea Download page and download the latest binary for your architecture. At the time of writing, the latest version is 1.10.2. If there is a new version available, change the VERSION variable in the command below.

Use wget to download the Gitea binary in the /tmp directory:

VERSION=1.14.1sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/$VERSION/gitea-$VERSION-linux-amd64

You can run the gitea binary from any location. We'll follow the convention and move the binary to the /usr/local/bin directory:

sudo mv /tmp/gitea /usr/local/bin

Make the binary executable:

sudo chmod +x /usr/local/bin/gitea

Run the commands below to create the directories and set the required permissions and ownership :

sudo mkdir -p /var/lib/gitea/custom,data,logsudo chown -R git:git /var/lib/gitea/sudo chmod -R 750 /var/lib/gitea/sudo mkdir /etc/giteasudo chown root:git /etc/giteasudo chmod 770 /etc/gitea

The directory structure above is recommended by the official Gitea documentation.

The permissions of the /etc/gitea directory are set to 770 so that the installation wizard can create the configuration file. Once the installation is complete, we'll set more restrictive permissions.

Create a Systemd Unit File #

We'll run Gitea as a systemd service.

Download the sample systemd unit file to the /etc/systemd/system directory by typing:

sudo wget https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/systemd/gitea.service -P /etc/systemd/system/

You don't need to edit the file, it is configured to match our setup.

Enable and start the Gitea service:

sudo systemctl daemon-reloadsudo systemctl enable --now gitea

Verify that Gitea is running:

sudo systemctl status gitea
● gitea.service - Gitea (Git with a cup of tea) Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2021-05-06 05:32:04 UTC; 7s ago Main PID: 77781 (gitea) Tasks: 6 (limit: 470) Memory: 130.6M CGroup: /system.slice/gitea.service └─77781 /usr/local/bin/gitea web --config /etc/gitea/app.ini… 

Configure Gitea #

Now that Gitea is downloaded and running, we can finalize the installation through the web interface.

By default, Gitea listens for connections on port 3000 on all network interfaces.

If you have a UFW firewall running on your server, you'll need to open the Gitea port. To allow traffic on port 3000, enter the following command:

sudo ufw allow 3000/tcp

Open your browser, type http://YOUR_DOMAIN_IR_IP:3000, and a screen similar to the following will appear:

Database Settings:

Application General Settings:

You can change the settings at any time by editing the Gitea configuration file.

To start the installation, hit the “Install Gitea” button.

The installation is instant. Once completed, you will be redirected to the login page.

Click on the “Need an account? Register now.” link. The first registered user is automatically added to the Admin group.

Change the permissions of the Gitea configuration file to read-only using:

sudo chmod 750 /etc/giteasudo chmod 640 /etc/gitea/app.ini

That's it. Gitea has been installed on your Ubuntu machine.

Configuring Nginx as SSL Termination Proxy #

This step is optional, but it is highly recommended. SSL termination means that Nginx will acts as an intermediary point between the Gitea application and web clients so you can access Gitea via HTTPS.

To use Nginx as a reverse proxy , you need to have a domain or subdomain pointing to your server's public IP. In this example, we will use git.example.com.

First, install Nginx and generate a free Let's Encrypt SSL certificate using the guides below:

Once done, open your text editor and edit the domain server block file:

sudo nano /etc/nginx/sites-enabled/git.example.com
/etc/nginx/sites-enabled/git.example.com
server  listen 80; server_name git.example.com; include snippets/letsencrypt.conf; return 301 https://git.example.com$request_uri;  server  listen 443 ssl http2; server_name git.example.com; proxy_read_timeout 720s; proxy_connect_timeout 720s; proxy_send_timeout 720s; client_max_body_size 50m; # Proxy headers  proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; # SSL parameters  ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/git.example.com/chain.pem; include snippets/letsencrypt.conf; include snippets/ssl.conf; # log files  access_log /var/log/nginx/git.example.com.access.log; error_log /var/log/nginx/git.example.com.error.log; # Handle / requests  location /  proxy_redirect off; proxy_pass http://127.0.0.1:3000;   

Don't forget to replace git.example.com with your Gitea domain and set the correct path to the SSL certificate files. The HTTP traffic is redirected to HTTPS

Restart the Nginx service for changes to take effect:

sudo systemctl restart nginx

Next, change the Gitea domain and root url. To do so, open the configuration file and edit the following lines:

sudo nano /etc/gitea/app.ini
/etc/gitea/app.ini
[server] DOMAIN = git.example.com ROOT_URL = https://git.example.com/ 

Restart the Gitea service by typing:

sudo systemctl restart gitea

At this point, Gitea proxy is configured, and you can access it at: https://git.example.com

Configuring Email Notifications #

If you want your Gitea instance to send notification emails, you can either install Postfix or use some transactional mail service such as SendGrid, MailChimp, MailGun, or SES.

To enable email notifications, open the configuration file and edit the following lines:

sudo nano /etc/gitea/app.ini
/etc/gitea/app.ini
[mailer] ENABLED = true HOST = SMTP_SERVER:SMTP_PORT FROM = SENDER_EMAIL USER = SMTP_USER PASSWD = YOUR_SMTP_PASSWORD 

Make sure you put the correct SMTP server information.

Restart the Gitea service for changes to take effect:

sudo systemctl restart gitea

To verify the settings and send a test email, log in to Gitea, and go to: Site Administration > Configuration > SMTP Mailer Configuration.

Gitea also allows you to connect to Slack by creating a web webhook and send notifications to your Slack channels .

Upgrading Gitea #

To upgrade to the latest Gitea version, simply download and replace the binary.

  1. Stop the Gitea service:

    sudo systemctl stop gitea
  2. Download the latest Gitea version and move it to the /usr/local/bin directory:

    VERSION=wget -O /tmp/gitea https://dl.gitea.io/gitea/$VERSION/gitea-$VERSION-linux-amd64sudo mv /tmp/gitea /usr/local/bin
  3. Make the binary executable:

    sudo chmod +x /usr/local/bin/gitea
  4. Restart the Gitea service:

    sudo systemctl restart gitea

That's it.

Conclusion #

This tutorial walked you through the installation of Gitea on Ubuntu 20.04. For more information about how to configure your Gitea instance and create your first project, visit the Gitea documentation page .

If you have questions, feel free to leave a comment below.

Cum se folosește GameConqueror Cheat Engine în Linux
Articolul acoperă un ghid despre utilizarea sistemului de înșelăciune GameConqueror în Linux. Mulți utilizatori care joacă jocuri pe Windows folosesc ...
Cele mai bune emulatoare pentru console de jocuri pentru Linux
Acest articol va enumera programele populare de emulare a consolei de jocuri disponibile pentru Linux. Emularea este un strat de compatibilitate softw...
Best Linux Distros for Gaming in 2021
The Linux operating system has come a long way from its original, simple, server-based look. This OS has immensely improved in recent years and has no...