logo
Published on

使用docker安装gitea

Authors

使用docker安装gitea

1.安装 Docker

添加 GPG key 和 Docker 仓库到 APT 源

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装docker

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

检查docker版本

docker version

设置开机自启

systemctl enable docker.service

2.编写docker-compose.yml

新建docker-compose.yml文件,路径可以自己选择

cd /usr/local
mkdir gitea
touch docker-compose.yml

将以下内容写入文件内

services:
  db:
    image: postgres:latest
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=gitea
      - POSTGRES_DB=gitea
    restart: always
    volumes:
      - postgres_data:/var/lib/postgresql/data

  gitea:
    image: gitea/gitea:latest
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - DB_TYPE=postgres
      - DB_HOST=db:5432
      - DB_NAME=gitea
      - DB_USER=gitea
      - DB_PASSWD=gitea
    restart: always
    volumes:
      - gitea_data:/data
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db

  nginx:
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx:/etc/nginx/conf.d
      - /etc/letsencrypt:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot
    depends_on:
      - gitea
    restart: always

volumes:
  postgres_data:
  gitea_data:

这里使用了postgresql数据库,如果有其他的要求可以自行修改

在当前目录下创建nginx文件夹,创建nginx配置文件

mkdir nginx
touch gitea.conf

在gitea.conf文件内添加以下内容

server {
    listen 443 ssl;
    server_name <你的域名>;  # 替换为你的域名

    ssl_certificate /etc/letsencrypt/live/<你的域名>/fullchain.pem;  # 替换为您的证书路径
    ssl_certificate_key /etc/letsencrypt/live/<你的域名>/privkey.pem;  # 替换为您的证书密钥路径

    location / {
        proxy_pass http://23.94.185.110:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    # 替换为你的域名
    if ($host = <你的域名>) {
        return 301 https://$host$request_uri;
    } # 把http的域名请求转成https


    listen 80;
    # 替换为你的域名
    server_name <你的域名>;
    return 404;
}

<你的域名> 替换为实际的域名,并且根据你的方式配置ssl证书,注意证书路径不一样的话,在上面的gitea.conf文件的对应处修改

运行docker容器,需要在对应的docker-compose.yml目录下

docker compose up -d

此时输入你的域名即可访问gitea,注意第一次需配置,在填写域名的地方填写你的域名,其余不用改,确认后会有一会的初始化的时间,之后就可以正常使用了,没有初始账号,第一个注册的账号为超级管理员。