Ubuntu 서버 초기 설정 스크립트

Summary

Ubuntu 서버를 새로 받을 때마다 반복적으로 설치해야 하는 필수 패키지들이 귀찮아서 한 번에 설치하는 스크립트를 만들어 둔 것이다. Git, Docker, UV, 각종 개발 도구들을 자동으로 설치하고, 각 패키지가 무엇인지 간단히 정리해둔다.

Ubuntu 전용 스크립트

이 스크립트는 Ubuntu (Debian 계열) 전용이다. 다른 Linux 배포판에서는 작동하지 않을 수 있다.

자동 설치 스크립트

#!/bin/bash
 
set -e
 
echo "🚀 Ubuntu 서버 초기 설정을 시작합니다..."
 
echo "📦 시스템 패키지 업데이트 중..."
sudo apt update && sudo apt upgrade -y
 
echo "🛠️ 기본 개발 도구 설치 중..."
sudo apt install -y \
    build-essential \
    git \
    curl \
    wget \
    unzip \
    vim \
    htop \
    net-tools \
    lsof \
    tmux
 
echo "🐍 UV (Python Package Manager) 설치 중..."
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
 
echo "🗑️ 기존 Docker 패키지 제거 중..."
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do 
    sudo apt-get remove -y $pkg 2>/dev/null || true
done
 
echo "🐳 Docker 공식 버전 설치 중..."
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
 
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
 
echo "👥 사용자를 docker 그룹에 추가 중..."
sudo usermod -aG docker $USER
 
echo "✅ 설치 완료!"
echo ""
echo "📋 설치된 버전 확인:"
echo "Git: $(git --version)"
echo "UV: $(uv --version 2>/dev/null || echo 'UV 설치 완료 (재로그인 필요)')"
echo "Docker: $(docker --version)"
echo ""
echo "⚠️ Docker를 sudo 없이 사용하려면 로그아웃 후 다시 로그인하세요."
echo "🎉 Ubuntu 서버 초기 설정이 완료되었습니다!"

설치되는 패키지들

각각 어떤 용도인지 간단히 정리해둔다.

카테고리패키지/도구설명용도
시스템 기본build-essentialGCC 컴파일러, make 등 기본 빌드 도구C/C++ 컴파일, 패키지 빌드
버전 관리git분산 버전 관리 시스템소스코드 관리, 협업
네트워크curl명령줄 데이터 전송 도구API 호출, 파일 다운로드
네트워크wget파일 다운로드 도구웹에서 파일 다운로드
압축unzipZIP 파일 압축 해제 도구압축 파일 처리
편집기vim고급 텍스트 편집기파일 편집, 설정 수정
모니터링htop인터랙티브 프로세스 뷰어시스템 리소스 모니터링
네트워크net-tools네트워크 유틸리티 (ifconfig 등)네트워크 설정 확인
프로세스lsof열린 파일 목록 도구포트 사용 확인, 프로세스 추적
터미널tmux터미널 멀티플렉서세션 관리, 백그라운드 실행
Pythonuv빠른 Python 패키지 관리자Python 패키지 설치/관리
컨테이너docker-ceDocker 커뮤니티 에디션컨테이너 실행
컨테이너docker-ce-cliDocker 명령줄 인터페이스Docker 명령어 사용
컨테이너containerd.io컨테이너 런타임컨테이너 실행 환경
컨테이너docker-buildx-pluginDocker 빌드 확장멀티 플랫폼 이미지 빌드
컨테이너docker-compose-pluginDocker Compose V2멀티 컨테이너 앱 관리

주의사항

  • Ubuntu 전용: 이 스크립트는 Ubuntu(Debian 계열) 전용이다
  • 루트 권한: sudo 권한이 필요하다
  • 재시작: Docker 그룹 추가 후 재로그인이 필요하다
  • 인터넷 연결: 패키지 다운로드를 위해 인터넷 연결이 필요하다

설치 확인 명령어

# 시스템 정보
lsb_release -a
 
# 설치된 도구 버전 확인
git --version
uv --version
docker --version
docker compose version
 
# Docker 그룹 확인
groups $USER