CasaOS 설치 & SMB 공유 폴더 설정 가이드 (우분투)

CasaOS 설치 & SMB 공유 폴더 설정 가이드 (우분투) 1️⃣ CasaOS 설치 및 포트 자동 선택 스크립트 1) 스크립트 복사 우분투 터미널에서 아래 내용 복사 후 붙여넣기 하고 엔터 누르면 됩니다. cat <<'EOF' > install-casaos-auto.sh #!/usr/bin/env bash set -euo pipefail # --- 포트 자동 선택 --- choose_port() { for p in 80 8080 8888; do if ! sudo lsof -i :$p >/dev/null 2>&1; then echo $p return fi done echo "모든 후보 포트(80,8080,8888)가 이미 사용 중입니다." >&2 exit 1 } PORT=$(choose_port) echo "[*] 선택된 포트: $PORT" # --- 시스템 업데이트 --- sudo apt update && sudo apt install -y curl ca-certificates gnupg lsb-release # --- CasaOS 설치 --- if ! command -v casaos-cli >/dev/null 2>&1; then echo "[*] CasaOS 설치 중 (curl 사용)..." curl -fsSL https://get.casaos.io | sudo bash else echo "[*] CasaOS 이미 설치됨 → 포트만 변경" fi # --- 포트 변경 --- sudo sed -i "s/^port *=.*/port = ${PORT}/" /etc/casaos/gateway.ini sudo systemctl restart casaos-gateway # --- 방화벽 열기 --- if command -v ufw >/dev/null 2>&1; then sudo ufw allow ${PORT}/tcp || true fi # --- 접속 정보 출력 --- IP=$(hostname -I | awk '{print $1}') echo "====================================" echo "CasaOS 설치/설정 완료!" echo "접속 주소: http://${IP}:${PORT}/" echo "====================================" EOF 2) 실행 권한 부여 chmod +x install-casaos-auto.sh 3) 설치 실행 sudo ./install-casaos-auto.sh 2️⃣ SMB 공유 폴더 생성 스크립트 1) 스크립트 복사 우분투 터미널에서 아래 내용 복사 후 붙여넣기 하고 엔터 누르면 됩니다. cat <<'EOF' > setup-smb-end2end.sh #!/usr/bin/env bash set -euo pipefail # ========================= # 환경변수(없으면 기본값) # ========================= SHARE_PATH="${SHARE_PATH:-/DATA/Share_Files}" SHARE_NAME="${SHARE_NAME:-Share_Files}" SMB_USER="${SMB_USER:-comtech}" # 생성/사용할 Samba 계정 DIR_MODE="${DIR_MODE:-775}" # 폴더 퍼미션 SMB_PASS="${SMB_PASS:-}" # 비대화식 설정용(비워두면 대화식으로 묻는다) SMB_CONF="/etc/samba/smb.conf" BACKUP_DIR="/etc/samba/backup" say() { echo -e "\e[1;32m[INFO]\e[0m $*"; } warn(){ echo -e "\e[1;33m[WARN]\e[0m $*"; } err() { echo -e "\e[1;31m[ERR ]\e[0m $*"; } need_root(){ [[ $EUID -eq 0 ]] || { err "root로 실행하세요: sudo $0"; exit 1; } } install_samba(){ if ! command -v testparm >/dev/null 2>&1; then say "samba 패키지 설치 중…" apt update -y apt install -y samba samba-common-bin fi } backup_conf(){ mkdir -p "$BACKUP_DIR" local ts; ts=$(date +'%Y%m%d-%H%M%S') if [[ -f "$SMB_CONF" ]]; then cp -a "$SMB_CONF" "$BACKUP_DIR/smb.conf.$ts.bak" say "smb.conf 백업 완료 → $BACKUP_DIR/smb.conf.$ts.bak" else warn "기존 smb.conf 없음(신규 생성 예정)" mkdir -p /etc/samba touch "$SMB_CONF" fi } ensure_global_minimal(){ if ! grep -q "^\[global\]" "$SMB_CONF"; then say "[global] 섹션이 없어 최소 설정 추가" cat >>"$SMB_CONF" <<'EOG' [global] server role = standalone server workgroup = WORKGROUP security = user map to guest = Bad User unix charset = UTF-8 dos charset = CP949 load printers = no printing = bsd disable spoolss = yes log file = /var/log/samba/log.%m max log size = 1000 EOG fi } sanitize_brackets(){ sed -i 's/\\\[/[/g; s/\\\]/]/g' "$SMB_CONF" } remove_share_block(){ awk -v name="$SHARE_NAME" ' BEGIN{inblk=0} /^\[/{ if(inblk){inblk=0} } /^\['"$SHARE_NAME"'\]$/ {inblk=1; next} inblk==0 {print} ' "$SMB_CONF" > "$SMB_CONF.tmp" mv "$SMB_CONF.tmp" "$SMB_CONF" } append_share_block(){ cat >>"$SMB_CONF" <<EOF2 [$SHARE_NAME] path = $SHARE_PATH browseable = yes read only = no valid users = $SMB_USER EOF2 } ensure_folder(){ mkdir -p "$SHARE_PATH" local owner_user; owner_user="${SUDO_USER:-$USER}" chown "$owner_user":"$owner_user" "$SHARE_PATH" chmod "$DIR_MODE" "$SHARE_PATH" say "폴더 준비: $SHARE_PATH (owner: $owner_user, mode: $DIR_MODE)" } ensure_smb_user(){ if pdbedit -L 2>/dev/null | cut -d: -f1 | grep -qx "$SMB_USER"; then say "Samba 사용자 존재: $SMB_USER" fi if [[ -n "$SMB_PASS" ]]; then printf "%s\n%s\n" "$SMB_PASS" "$SMB_PASS" | smbpasswd -a "$SMB_USER" -s else smbpasswd -a "$SMB_USER" fi } reload_samba(){ say "testparm 검증" testparm -s >/dev/null say "Samba 재시작" systemctl restart smbd 2>/dev/null || true systemctl restart nmbd 2>/dev/null || true systemctl restart samba 2>/dev/null || true } # ========================= # 실행 # ========================= need_root install_samba backup_conf ensure_global_minimal sanitize_brackets ensure_folder ensure_smb_user remove_share_block append_share_block sanitize_brackets reload_samba say "✅ 완료: Windows에서 \\\\<서버IP>\\$SHARE_NAME 로 접속 (유저: $SMB_USER)" EOF 2) 실행 권한 부여 chmod +x setup-smb-end2end.sh 3) 스크립트 실행 설명 : SHARE_PATH : 실제 폴더 경로 ( /DATA/ 경로 하위에 폴더가 생성됨. 그래서 "/DATA/공유할 폴더 이름" 영어로 입력하면 됩니다.) SHARE_NAME : Windows에서 표시될 이름 ( 구분가능한 이름을 영어로 입력하시면됩니다.) SMB_USER : 우분투 로그인 ID ( 윈도우에서 공유폴더 접근시 로그인 ID ) SMB_USER : 우분투 로그인 PW ( 윈도우에서 공유폴더 접근시 로그인 PW ) 명령어 : sudo -E env SHARE_PATH=/DATA/생성할공유폴더이름 SHARE_NAME=윈도우에표시될폴더이름 SMB_USER=우분투로그인ID SMB_PASS=우분투로그인PW ./setup-smb-end2end.sh 4) 공유파일 생성되었는지 확인 ① Samba 설정 파일에서 공유 섹션 확인 명령어 : sudo testparm -s | grep -A5 "Share_Files" ( 명령어 끝에 윈도우에서 사용되는 파일이름 명 입력 ) ② Samba 서비스 상태 확인 명령어 : sudo systemctl status smbd --no-pager ( active (running) 이어야 정상 동작 중입니다.)

공개 마지막 업데이트: 2025-09-21 01:25:29 PM