How to Install Gitea on CentOS 7
Gitea is an alternative open source, self-hosted version control system powered by Git. Gitea is written in Golang and is a lightweight solution to be hosted on any platform.
Prerequisites
- New Vultr CentOS 7 instance.
- Root user or non-root user with
sudo
privileges. - Git
- MariaDB
Install Git
First update your system.
sudo yum update
Install Git.
sudo yum -y install git
Install MariaDB Database Server
Gitea supports the following database servers.
- MariaDB/MySQL
- PostgreSQL
- SQLite
- TiDB
For this tutorial we will be using the MariaDB server.
sudo yum -y install mariadb-server
Once complete, make sure MariaDB is enabled and running.
systemctl enable mariadb.service
systemctl start mariadb.service
After that, run the command below to secure the MariaDB server by creating a root password and disallowing remote root access.
sudo mysql_secure_installation
When prompted, answer the questions below by following the guide.
Enter current password for root (enter for none): Just press the Enter
Set root password? [Y/n]: Y
New password: Enter password
Re-enter new password: Repeat password
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
Restart MariaDB.
sudo systemctl restart mariadb.service
Login to the MariaDB console.
sudo mysql -u root -p
Then type the password you created above to login. You will see the MariaDB welcome message.
Create a database called gitea
.
CREATE DATABASE gitea;
Create a database user called giteauser
with a new password.
CREATE USER 'giteauser'@'localhost' IDENTIFIED BY 'new_password_here';
Make sure you replace new_password_here
with a strong and complex password.
Then grant the user full access to the database.
GRANT ALL ON gitea.* TO 'giteauser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION;
Finally, save your changes and exit.
FLUSH PRIVILEGES;
EXIT;
Prepare the Gitea Environment
Create a user to run Gitea.
sudo adduser --system --shell /bin/bash --comment 'Git Version Control' --user-group --home-dir /home/git -m git
Create the required directory structure.
sudo mkdir -p /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 mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea
Install Gitea
Download the Gitea binary using the method on the official distribution page.
Copy the binary to a global location.
sudo cp gitea /usr/local/bin/gitea
Create a service file to start Gitea automatically
Create a linux service file.
sudo touch /etc/systemd/system/gitea.service
Using a text editor of your choice, open this newly create file and populate it with the following.
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target
After=mariadb.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
Enable and start Gitea at boot.
sudo systemctl daemon-reload
sudo systemctl enable gitea
sudo systemctl start gitea
Ensure Gitea is running.
sudo systemctl status gitea
Configure firewall rules for Gitea:
Enable traffic to Gitea's default port in firewalld:
sudo firewall-cmd --add-port 3000/tcp --permanent
sudo firewall-cmd --reload
Web-based Gitea configuration.
Finally, open a web browser and point it to:
http://YOUR_SERVER_IP:3000/install
Follow the on-screen instructions to complete the Gitea setup.