(Last Updated On: May 6, 2019)

Welcome to our guide on how to Install Gitea self-hosted Git service on Ubuntu 19.04/18.04/16.04. Gitea is a painless self-hosted Git service forked from Gogs and similar to GitHub, Bitbucket, and Gitlab.

Gitea main goal is to provide the fastest, easiest, and most painless way of setting up a self-hosted Git service. Being written in Go, it is distributed as a binary package that runs across all platforms and architectures that Go supports.

It runs on  Linux, macOS, and Windows, on architectures like amd64, i386, ARM, PowerPC, and others. Install Gitea on Ubuntu 19.04/18.04/16.04 server by following the steps provided below.

Gitea System setup

The setup is comprised of

  • Ubuntu Server
  • MariaDB database server
  • Git version control
  • Gitea service with systemd

For CentOS 7 server use: How to Install Gitea self-hosted Git service on CentOS 7 with Nginx Reverse Proxy

Step 1: Create a git system user

Run the following commands to add a user git to manage Gitea on your system.

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

The command id should display user id and group id

$ id git
uid=112(git) gid=117(git) groups=117(git)

Step 2: Install MariaDB database server

We will use MariaDB to store Gitea data, install MariaDB on your server.

sudo apt -y install mariadb-server

Create a database for Gitea.

$ sudo mysql -u root -p

CREATE DATABASE gitea;
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost' IDENTIFIED BY "StrongPassword";
FLUSH PRIVILEGES;
QUIT;

Step 3: Install and configure Gitea

Now download gitea binary from the Downloads page. Check the latest release before downloading it.

export VER=1.8.0
wget https://github.com/go-gitea/gitea/releases/download/v${VER}/gitea-${VER}-linux-amd64

Move the downloaded binary file to the /use/local/bindirectory

chmod +x gitea-${VER}-linux-amd64
sudo mv gitea-${VER}-linux-amd64 /usr/local/bin/gitea

You can confirm version installed using.

$ gitea --version
Gitea version 1.8.0 built with: bindata, sqlite

Create the required directory structure.

sudo mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown git:git /var/lib/gitea/{data,indexers,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

The web installer will need write permission configuration file under /etc/gitea

Create a systemd service unit

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

Configure the file to set UserGroup and WorkDir.

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysql.service

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
RestartSec=2s
Type=simple
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=/home/git GITEA_WORK_DIR=/var/lib/gitea
# If you want to bind Gitea to a port below 1024 uncomment
# the two values below
###
#CapabilityBoundingSet=CAP_NET_BIND_SERVICE
#AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

Reload systemd and restart service

sudo systemctl daemon-reload
sudo systemctl restart gitea

Also enable the service to start on boot

sudo systemctl enable gitea

Sample status output.

$ systemctl status gitea
* gitea.service - Gitea (Git with a cup of tea)
   Loaded: loaded (/etc/systemd/system/gitea.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-10-01 12:25:19 PDT; 3s ago
 Main PID: 6919 (gitea)
    Tasks: 10 (limit: 1111)
   CGroup: /system.slice/gitea.service
           `-6919 /usr/local/bin/gitea web -c /etc/gitea/app.ini
.......

Start the installation by visiting http://serverip:3000/install

Set database authentication

On the first page, set the database connection

The username and password provided should match the ones provided in the Database configuration section. If the database server is on a different host, provide the IP address under the Host section.

Set Application General Settings

Provide application URL, this can be a routable server IP address or domain namethat resolves to the IP. The same should be set for SSH.

Disable User self-registration

You can disable User self-registration under “Server and Other Services Settings”. This means the admin user will manually create user accounts.

Optionally create an admin user account. By default, the root user will gain admin access automatically.

When done with the configurations, click the “Install Gitea” button to finish the installation. On a successful installation, you should be logged into Gitea administration console.

You have successfully install Gitea on Ubuntu 19.04/18.04/16.04 server. Have a happy Git time, refer to Gitea Documentation for advanced configurations and usage guides.

Similar Articles:

How to Install Gogs Git service on Ubuntu