본문 바로가기
공부

[GCP] Gitea + Nginx(SSL)

by 꾸돼지 2025. 5. 20.

포트폴리오용 프로젝트를 만들기에 앞서 프로젝트 파일들을 업로드하기 위해 클라우드 서버에 Git (UI) 환경을 구축하고 싶었다.

 

[준비물]

GCP 서버(Docker, 인증서)

  -- 사설 인증서 만들기로 검색하면 인증서 만드는 내용은 많이 나온다.

도메인  <<<서버>>> 로 작성된 내부 주소(ex: gcp.example.com) 

 

1. Docker Compose 파일 작성

version: '3'

services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__server__ROOT_URL=https://<<<서버>>>/
    volumes:
      - ./gitea:/data
    expose:
      - "3000"
    restart: always
    networks:
      - gitea


  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./nginx/certs:/etc/nginx/certs:ro
    restart: always
    depends_on:
      - gitea
    networks:
      - gitea

networks:
  gitea:

 

 

nginx를 먼저 띄우고, ssl 적용 이후, gitea를 reverseProxy하는 절차대로 하나하나 테스트하면서 진행한다.

certs 폴더에는 다음과 같은 2개의 파일이 존재한다.

  - fullchain.pem  

  - privkey.pem

 

2. ngnix.conf 작성

events {}

http {
    server {
        listen 80;
        server_name <<<서버>>>;

        location / {
            return 301 https://$host$request_uri;
        }
    }

    server {
        listen 443 ssl;
        server_name <<<서버>>>;

        ssl_certificate /etc/nginx/certs/fullchain.pem;
        ssl_certificate_key /etc/nginx/certs/privkey.pem;

    	location / {
        	client_max_body_size 512M;
            
        	proxy_pass http://gitea:3000;
        	proxy_set_header Connection $http_connection;
        	proxy_set_header Upgrade $http_upgrade;
        	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;
    	}
    }
}

 

** Reverse Proxy에 대한 공식 문서 설명

https://docs.gitea.com/next/administration/reverse-proxies#nginx-with-a-sub-path

 

 

3. Gitea 설정

gitea 폴더를 생성하고, 소유자를 적용해주는 것을 잊지 말자

sudo chown -R 1000:1000 ./gitea

 

 

4. docker-compose를 실행하고, 도메인으로 접속하면 다음과 같은 화면이 나온다.

 

...

 

필요한 설정들을 해주고 계정을 생성한다.

초기설정에서 관리자를 만들지 않은 경우, 최초로 생성된 사용자가 관리자 권한을 받는다.

 

5. 로컬과 연동 가능한지 확인

 

테스트용 저장소를 하나 만들고.. push 해주면...

 

 

승인 누르면 바로 push가 된다.

이 로그인 세션이 유지되는 동안에는 clone / push 모두 더이상의 인증 필요 없이 잘 수행된다.

 

 

 

오늘부터 포트폴리오용 BE / FE / GW 등을 업로드해야겠다.