How to install Gitea (Self-Hosted Git Service) on Ubuntu

Опубликовано: 15 Май 2026
на канале: Quickloss3
1,707
like

Update Server:
apt update && apt upgrade -y

Set hostname:
hostnamectl set-hostname ex.example.com

Install Docker & docker compose:

sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubu... | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

i'm replacing angled bracket with square bracket ###
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list ] /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Verify that the Docker Engine & Compose:
sudo docker run hello-world
docker compose version

Creating the Git user:
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git

Installing the Gitea Docker Image:
mkdir ~/gitea
cd ~/gitea
nano docker-compose.yml
paste
version: "3"

networks:
gitea:
external: false

services:
server:
image: gitea/gitea:1.16.5
container_name: gitea
environment:
USER_UID=UID_from_step_1
USER_GID=GID_from_step_1
restart: always
networks:
gitea
volumes:
./gitea:/data
/home/git/.ssh/:/data/git/.ssh
/etc/timezone:/etc/timezone:ro
/etc/localtime:/etc/localtime:ro
ports:
"127.0.0.1:3000:3000"
"127.0.0.1:2222:22"

docker-compose up -d

Installing Nginx as a Reverse Proxy:
sudo apt update
sudo apt install nginx
sudo ufw allow "Nginx Full"
sudo nano /etc/nginx/sites-available/gitea
paste
server {
Listen for requests on your domain/IP address.
server_name ex.example.com;

root /var/www/html;

location / {
Proxy all requests to Gitea running on port 3000
proxy_pass http://localhost:3000;

Pass on information about the requests to the proxied service using headers
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/gitea
sudo nginx -t
sudo systemctl restart nginx

Installing Certbot:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d ex.example.com

Configuring Gitea:
https://ex.example.com