본문 바로가기
운영체제(OS)/Linux

[Ubuntu 24.04] Gitea + PostgreSQL 완전 삭제 및 확인 방법

by JLearn 2026. 7. 1.
반응형

Ubuntu 24.04 환경에서 Snap으로 설치한 Gitea와 APT로 설치한 PostgreSQL을 완전히 삭제하는 방법을 정리합니다. Gitea와 PostgreSQL은 단순히 패키지만 삭제한다고 해서 모든 데이터가 함께 제거되지는 않습니다.
특히 Gitea 저장소, 설정 파일, PostgreSQL 데이터 디렉터리, 서비스 파일, Docker 내부 이미지 경로 등이 남아 있을 수 있습니다.

 

이 글에서는 다음 내용을 기준으로 정리합니다.

  • Snap으로 설치한 Gitea 삭제
  • APT로 설치한 PostgreSQL 삭제
  • 서비스, 프로세스, 포트, 파일 잔여물 확인
  • Docker 내부 PostgreSQL 관련 파일과 실제 PostgreSQL 서버 잔여물 구분

이 글의 명령어는 Gitea 저장소, 설정, 업로드 파일, PostgreSQL 데이터베이스를 모두 삭제하는 절차입니다.
운영 서버에서는 반드시 백업 여부를 먼저 확인한 뒤 진행해야 합니다.


삭제 확인 기준

Gitea와 PostgreSQL을 완전히 삭제했는지 확인하려면 아래 항목을 확인하면 됩니다.

snap list | grep gitea
dpkg -l | grep postgresql
ss -ntlp | grep -E "3000|2222|5432"
systemctl list-unit-files | grep -E "gitea|postgresql"

위 명령에서 의미 있는 결과가 없다면, Gitea와 PostgreSQL 서비스는 사실상 제거된 상태로 볼 수 있습니다.

다만 아래와 같은 경로가 보일 수 있습니다.

/var/lib/docker/overlay2/.../usr/share/grafana/public/app/plugins/datasource/postgres

이 경로는 PostgreSQL 서버가 아니라 Grafana Docker 이미지 내부의 PostgreSQL 데이터소스 플러그인입니다.
PostgreSQL 서버 잔여물이 아니므로 삭제하지 않아도 됩니다.


1. Gitea 완전 삭제

1-1. Gitea 서비스 중지

먼저 실행 중인 Gitea 서비스를 중지합니다.

sudo snap stop gitea

Snap으로 설치한 Gitea는 Snap 서비스로 관리되므로 snap stop 명령을 사용합니다.


1-2. Gitea Snap 패키지 삭제

Gitea Snap 패키지를 삭제합니다.

sudo snap remove gitea

자동 스냅샷까지 남기지 않고 삭제하려면 아래처럼 --purge 옵션을 사용할 수도 있습니다.

sudo snap remove --purge gitea

일반적으로 완전 삭제 목적이라면 --purge 옵션을 사용하는 편이 더 명확합니다.


1-3. Gitea 데이터 디렉터리 삭제

패키지를 삭제해도 데이터 디렉터리가 남아 있을 수 있습니다.

※ 아래 명령을 실행하면 Gitea 저장소, 설정 파일, 첨부 파일, 업로드 파일 등이 모두 삭제됩니다.

sudo rm -rf /var/snap/gitea
sudo rm -rf /root/snap/gitea
rm -rf ~/snap/gitea

각 경로의 의미는 다음과 같습니다.

경로 의미
/var/snap/gitea Snap Gitea의 주요 데이터 저장 위치
/root/snap/gitea root 사용자 기준 Snap 데이터 경로
~/snap/gitea 현재 로그인 사용자 기준 Snap 데이터 경로

/root/snap/gitea 경로는 root 권한으로 Snap 명령을 실행했거나 root 환경에서 Gitea 관련 작업을 한 경우 남을 수 있습니다. 경로가 없으면 삭제 명령을 실행해도 문제 없습니다.


1-4. systemd 서비스 잔여물 확인

Snap이 아닌 다른 방식으로 Gitea를 설치한 이력이 있다면 systemd 서비스 파일이 남아 있을 수 있습니다.

systemctl list-unit-files | grep gitea

만약 gitea.service 같은 서비스가 남아 있다면 아래 명령으로 제거합니다.

sudo systemctl disable gitea
sudo rm -f /etc/systemd/system/gitea.service
sudo systemctl daemon-reload

Snap으로만 설치했다면 보통 별도의 /etc/systemd/system/gitea.service 파일은 없을 가능성이 높습니다.
하지만 과거에 바이너리 방식으로 설치한 이력이 있다면 확인하는 것이 좋습니다.


2. PostgreSQL 완전 삭제

2-1. PostgreSQL 서비스 중지

먼저 PostgreSQL 서비스를 중지합니다.

sudo systemctl stop postgresql

서비스가 이미 없거나 실행 중이 아니라면 오류가 나올 수 있습니다.
삭제 과정에서는 큰 문제가 되지 않습니다.


2-2. PostgreSQL 패키지 완전 삭제

APT로 설치한 PostgreSQL 패키지를 삭제합니다.

sudo apt purge 'postgresql*' -y

purge는 패키지만 삭제하는 remove와 달리 설정 파일까지 함께 삭제합니다.


2-3. 불필요한 의존성 정리

PostgreSQL 삭제 후 더 이상 사용하지 않는 패키지와 캐시를 정리합니다.

sudo apt autoremove --purge -y
sudo apt autoclean

이 과정에서 PostgreSQL 관련 의존 패키지 일부가 함께 제거될 수 있습니다.


2-4. PostgreSQL 데이터, 설정, 로그 삭제

PostgreSQL 패키지를 삭제해도 데이터 디렉터리나 로그 디렉터리가 남아 있을 수 있습니다.

아래 명령을 실행하면 PostgreSQL 데이터베이스 파일이 모두 삭제됩니다.

sudo rm -rf /var/lib/postgresql
sudo rm -rf /etc/postgresql
sudo rm -rf /etc/postgresql-common
sudo rm -rf /var/log/postgresql
sudo rm -rf /run/postgresql

각 경로의 의미는 다음과 같습니다.

경로 의미
/var/lib/postgresql PostgreSQL 데이터 저장 위치
/etc/postgresql PostgreSQL 버전별 설정 파일
/etc/postgresql-common PostgreSQL 공통 설정
/var/log/postgresql PostgreSQL 로그
/run/postgresql 실행 중 생성되는 런타임 소켓/PID 경로

/run/postgresql은 런타임 디렉터리이므로 재부팅 시 사라질 수도 있습니다.
하지만 완전 삭제 확인 목적이라면 함께 정리해도 됩니다.


2-5. postgres 사용자와 그룹 삭제

PostgreSQL 설치 시 postgres 시스템 사용자가 생성됩니다.

먼저 사용자가 존재하는지 확인합니다.

id postgres

존재한다면 삭제합니다.

sudo deluser postgres
sudo delgroup postgres

이미 삭제되었거나 존재하지 않는 경우에는 오류 메시지가 나올 수 있습니다.
이 경우에는 무시해도 됩니다.


2-6. PGDG 저장소 삭제

PostgreSQL 공식 저장소인 PGDG를 추가한 적이 있다면 저장소 설정도 삭제할 수 있습니다.

sudo rm -f /etc/apt/sources.list.d/pgdg.list
sudo rm -f /usr/share/keyrings/postgresql.gpg
sudo apt update

Ubuntu 기본 저장소의 PostgreSQL만 사용했다면 이 파일들은 없을 수 있습니다.


3. 삭제 여부 확인

삭제 후에는 패키지, 서비스, 프로세스, 포트, 파일 경로를 확인하는 것이 좋습니다.


3-1. Gitea 삭제 확인

snap list | grep gitea
pgrep -a gitea
ss -ntlp | grep -E "3000|2222"
systemctl list-unit-files | grep gitea
sudo find /var /etc /home -iname "*gitea*" 2>/dev/null

정상 삭제 상태라면 다음과 같아야 합니다.

  • snap list | grep gitea 출력 없음
  • pgrep -a gitea 출력 없음
  • ss -ntlp | grep -E "3000|2222" 출력 없음
  • systemctl list-unit-files | grep gitea 출력 없음

Gitea는 기본적으로 웹 포트 3000을 사용하고, SSH 기능을 별도로 구성했다면 2222 같은 포트를 사용할 수 있습니다.
따라서 포트가 열려 있지 않은지도 함께 확인하는 것이 좋습니다.


3-2. PostgreSQL 삭제 확인

dpkg -l | grep postgresql
pgrep -a postgres
ss -ntlp | grep 5432
systemctl list-unit-files | grep postgresql
sudo find /var /etc /usr -iname "*postgres*" 2>/dev/null

정상 삭제 상태라면 다음과 같아야 합니다.

  • dpkg -l | grep postgresql 출력 없음
  • pgrep -a postgres 출력 없음
  • ss -ntlp | grep 5432 출력 없음
  • systemctl list-unit-files | grep postgresql 출력 없음

PostgreSQL 기본 포트는 5432입니다.
이 포트가 열려 있다면 PostgreSQL 서버 또는 다른 PostgreSQL 호환 서비스가 아직 실행 중인지 추가 확인이 필요합니다.


4. Docker 내부 PostgreSQL 관련 파일 확인

삭제 확인 과정에서 아래와 같은 경로가 보일 수 있습니다.

/var/lib/docker/overlay2/.../usr/share/grafana/public/app/plugins/datasource/postgres

이 경로는 PostgreSQL 서버가 아닙니다.

Grafana Docker 이미지 내부에 포함된 PostgreSQL 데이터소스 플러그인 경로입니다.
즉, Grafana에서 PostgreSQL을 데이터소스로 연결할 수 있도록 제공하는 프론트엔드/플러그인 파일일 뿐입니다.

따라서 이 경로만 남아 있다면 PostgreSQL 서버가 남아 있는 것으로 보면 안 됩니다.


4-1. Docker PostgreSQL 이미지 확인

Docker에 PostgreSQL 이미지가 남아 있는지 확인합니다.

docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}" | grep postgres

출력이 없다면 PostgreSQL Docker 이미지는 없는 상태입니다.


4-2. Docker PostgreSQL 컨테이너 확인

PostgreSQL 컨테이너가 존재하는지 확인합니다.

docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}" | grep postgres

출력이 없다면 PostgreSQL 컨테이너는 없는 상태입니다.


4-3. Docker PostgreSQL 볼륨 확인

PostgreSQL 관련 Docker 볼륨이 남아 있는지 확인합니다.

docker volume ls --format "table {{.Name}}\t{{.Driver}}" | grep postgres

출력이 없다면 PostgreSQL 관련 Docker 볼륨도 없는 상태입니다.


5. 최종 확인

아래 명령을 한 번에 실행해서 최종 상태를 확인할 수 있습니다.

snap list | grep gitea
dpkg -l | grep postgresql
ss -ntlp | grep -E "3000|2222|5432"
systemctl list-unit-files | grep -E "gitea|postgresql"
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}" | grep postgres
docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}" | grep postgres
docker volume ls --format "table {{.Name}}\t{{.Driver}}" | grep postgres

위 명령에서 모두 출력이 없다면 다음 상태로 볼 수 있습니다.

  • Snap Gitea 패키지 삭제 완료
  • Gitea 서비스 미실행
  • Gitea 기본 포트 미사용
  • APT PostgreSQL 패키지 삭제 완료
  • PostgreSQL 서비스 미실행
  • PostgreSQL 기본 포트 미사용
  • Docker PostgreSQL 이미지, 컨테이너, 볼륨 없음

단, 아래와 같은 경로만 남아 있는 경우는 PostgreSQL 서버 잔여물이 아닙니다.

/var/lib/docker/overlay2/.../grafana/.../postgres

이 경로는 Grafana Docker 이미지 내부의 PostgreSQL 데이터소스 플러그인이므로 그대로 두면 됩니다.


결론

Gitea와 PostgreSQL을 완전히 삭제할 때는 패키지 삭제만으로 끝내면 안 됩니다.

Gitea는 Snap 패키지뿐 아니라 /var/snap/gitea, /root/snap/gitea, ~/snap/gitea 같은 데이터 경로를 함께 확인해야 합니다.

PostgreSQL은 APT 패키지 삭제 후에도 /var/lib/postgresql, /etc/postgresql, /var/log/postgresql 같은 데이터와 설정 디렉터리가 남을 수 있습니다.

삭제 여부를 판단할 때는 다음 기준으로 확인하는 것이 가장 안전합니다.

  • 패키지가 남아 있는가?
  • 서비스가 남아 있는가?
  • 프로세스가 실행 중인가?
  • 기본 포트가 열려 있는가?
  • 데이터 디렉터리가 남아 있는가?
  • Docker 이미지, 컨테이너, 볼륨이 남아 있는가?

특히 /var/lib/docker/overlay2/.../grafana/.../postgres처럼 Docker 이미지 내부에서 보이는 PostgreSQL 관련 경로는 실제 PostgreSQL 서버가 아닐 수 있습니다.

따라서 무조건 삭제하기보다는, 해당 경로가 실제 데이터베이스 서버의 데이터인지, 다른 애플리케이션의 플러그인 파일인지 구분해서 판단하는 것이 중요합니다.

반응형

댓글