TRENDSHIFT 딥다이브 · 2026-06-27

IceWhaleTech/CasaOS 딥다이브
— 한 줄 설치로 내 집 서버를 개인 클라우드로 만드는 Go 마이크로서비스 OS

클라우드 구독료가 아깝고, NAS는 너무 비싸고, 라즈베리파이는 설정이 복잡하다. CasaOS는 이 세 문제를 curl 한 줄로 해결한다 — 아무 Linux 머신에서 실행하면 Docker 앱스토어, 파일 관리자, 시스템 모니터가 갖춰진 웹 UI가 뜬다. 내부는 Go로 짠 마이크로서비스 아키텍처로, 게이트웨이 · 유저 서비스 · 앱 관리 · 로컬 스토리지가 각자 별도 프로세스로 돌아간다. (저장소: IceWhaleTech/CasaOS · 언어: Go 1.21 · 프레임워크: Echo v4 · 라이선스: Apache-2.0 · 버전: v0.4.15 · TrendShift Daily #13 · GitHub ★29k+) ※ 이 문서는 학습 목적의 기술 분석입니다. CasaOS를 인터넷에 직접 노출할 경우 보안 위험이 있으며, 공식 문서의 보안 가이드를 반드시 확인하세요.
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 시스템 요구사항 · 설치
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

이 레포가 무엇을 하는 물건인가.

핵심 메시지

"낡은 노트북 한 대를 Dropbox + Netflix + NAS + 홈 자동화 서버로 바꾸는 데
curl 한 줄이면 충분하다."

CasaOS는 Linux 위에 올라가는 개인 클라우드 플랫폼이다. 설치하면 웹 브라우저로 접근 가능한 대시보드가 생기고, 거기서 Nextcloud, Jellyfin, Home Assistant, AdGuard 같은 앱을 클릭 한 번으로 설치할 수 있다. 뒷단은 순수 Go 바이너리 여러 개가 systemd 서비스로 돌아가는 마이크로서비스 구조다.

하드웨어를 가리지 않는다 — ZimaBoard, Raspberry Pi, 중고 NUC, 심지어 10년 된 데스크탑도 된다.

용어
퍼스널 클라우드 (Personal Cloud)
Dropbox·iCloud·Google Drive처럼 남의 서버에 데이터를 올리는 대신, 내 집 기기에 클라우드 기능을 구축하는 것. 월 구독료 0원, 데이터 소유권 100%가 핵심 가치다. CasaOS는 이 구축 과정의 복잡한 설정을 없애 준다.
용어
Docker 앱스토어
CasaOS가 제공하는 GUI 앱 설치 화면. 각 앱은 실제로는 Docker 컨테이너다. "설치" 버튼을 누르면 내부적으로 docker run이 실행되어 앱이 격리된 환경에서 실행된다. Docker Hub의 10만 개 이상 이미지 중 CasaOS가 검증한 앱들이 카탈로그에 올라온다.
용어
NAS (Network Attached Storage)
네트워크에 연결된 스토리지 장치. Synology DS923+는 60~80만 원 수준이다. CasaOS는 기존에 갖고 있는 PC나 SBC에 NAS 기능을 소프트웨어로 구현한다 — 하드웨어 비용 없이. 단, 전용 NAS 대비 안정성·RAID 지원은 제한적이다.

2왜 주목받는가

트렌딩 이유 · 경쟁 제품 대비 차별점.

셀프호스팅(self-hosting) 커뮤니티는 2020년대 초부터 꾸준히 성장해 왔다. 데이터 프라이버시 우려, 클라우드 구독료 인상, Raspberry Pi 5 같은 저렴한 SBC 보급이 맞물린 결과다. 그 흐름에서 CasaOS는 "기술을 모르는 일반인도 셀프호스팅"이라는 포지션으로 빠르게 성장했다. GitHub ★29k+, Discord 커뮤니티 수만 명이 그 증거다.

플랫폼설치 방법앱 설치하드웨어 요구가격
Synology DSM전용 NAS 구매 후 자동패키지 센터 (GUI)Synology 전용 하드웨어하드웨어 60~300만 원
TrueNAS ScaleISO 부팅 설치TrueCharts (복잡)x86 전용, RAM 8GB+무료 (하드웨어 직접 구매)
UnraidUSB 부팅Community Appsx86, RAM 4GB+$49~99 라이선스 필요
CasaOScurl 한 줄웹 클릭 1번arm/x86, RAM 1GB+완전 무료·오픈소스
Umbrel이미지 또는 스크립트앱 스토어arm/x86무료 (일부 유료 앱)
주의 · 함정
인터넷에 직접 노출하면 위험하다

CasaOS는 기본적으로 로컬 네트워크에서 동작하도록 설계됐다. 라우터에서 포트포워딩으로 외부에 노출하면 무차별 대입 공격의 표적이 된다. 공식적으로는 ZimaOS 또는 별도 VPN(WireGuard 등)을 통한 원격 접근을 권장한다.

또한 CasaOS는 설치 스크립트가 sudo로 실행되며 시스템 전반에 깊이 개입한다. 운영 중인 서버에 설치하기보다 전용 기기에 쓰는 것이 안전하다.

차별점 · 강점
진입 장벽을 극단적으로 낮췄다

Docker Compose 문법을 몰라도, systemd 서비스를 몰라도 된다. 웹 UI에서 앱 카드를 클릭하면 컨테이너가 뜬다. 파일 탐색기로 스토리지를 관리하고, 위젯으로 CPU·RAM·네트워크를 한눈에 본다. 기술 문턱을 낮춘 UX 설계가 핵심 경쟁력이다.

3기술 스택 전체 지도

백엔드 · 인프라 · 프론트엔드 · 클라우드 드라이버 상세.

백엔드 (이 레포 = 메인 서비스)

구성 요소기술역할
언어Go 1.21단일 바이너리 컴파일, 낮은 메모리 사용량
HTTP 프레임워크Echo v4REST API 서버, JWT 미들웨어, Gzip 압축
API 스펙OpenAPI 3.0 (openapi.yaml)코드 자동 생성(oapi-codegen), Swagger UI 내장
데이터베이스SQLite (glebarez/sqlite)설정·앱 메타데이터 저장, CGO 없는 순수 Go 구현체 사용
캐시go-cache (메모리) + Redis(선택)버전 정보·시스템 상태 캐싱
실시간 통신Socket.IO (go-socket.io)설치 진행률·알림을 브라우저에 실시간 푸시
인증JWT (ECDSA 키)로컬 IP에서는 JWT 스킵, 원격은 필수
크론 스케줄러robfig/cron v3버전 체크·헬스 체크 주기적 실행
systemd 연동coreos/go-systemdSD_NOTIFY, 서비스 상태 확인
로깅zap (Uber) + logrus구조화 로그, 파일 로테이션(lumberjack)
ORMGORM v2SQLite 모델 매핑
압축UPX (빌드 후)바이너리 크기 40~60% 감소

마이크로서비스 생태계 (별도 레포)

이 레포(CasaOS)는 메인 서비스이지만, 실제 운영 시스템은 여러 서비스가 협력한다.

서비스GitHub 레포역할
GatewayIceWhaleTech/CasaOS-Gateway리버스 프록시, 외부 요청을 각 서비스로 라우팅 (Nginx 기반)
User ServiceIceWhaleTech/CasaOS-UserService사용자 계정, ECDSA 키 쌍 관리, JWT 발급
App ManagementIceWhaleTech/CasaOS-AppManagementDocker 컨테이너 생명주기(설치/삭제/업데이트), 앱 스토어
Local StorageIceWhaleTech/CasaOS-LocalStorage디스크/USB 마운트, Samba 공유, rclone 클라우드 드라이브
Message BusIceWhaleTech/CasaOS-MessageBus서비스 간 이벤트 버스 (Redis 기반)
CommonIceWhaleTech/CasaOS-Common공유 유틸리티 라이브러리 (JWT, HTTP, 파일 등)

클라우드 드라이버 (이 레포 내)

드라이버지원 서비스구현
Google Drive구글 드라이브OAuth2, 빌드 시 Client ID/Secret 주입
OneDriveMicrosoft OneDriveOAuth2, MSAL 플로우
DropboxDropboxOAuth2, API v2

프론트엔드 (별도 레포)

항목내용
레포IceWhaleTech/CasaOS-UI (Git 서브모듈로 연결)
프레임워크Vue.js 3 (추정, UI 레포 기준)
빌드Yarn + TypeScript (Makefile: cd CasaOS-UI && yarn install && yarn build)
API 클라이언트 SDKTypeScript + Axios 자동 생성 (package.json의 openapi-typescript-codegen)
번들 통합빌드 결과물을 Go 바이너리에 //go:embed로 포함

4아키텍처 심화 분석

게이트웨이 패턴 · 서비스 간 통신 · 핵심 설계 결정.

전체 시스템 구조도

┌─────────────────────────────────────────────────────────────┐ │ 브라우저 (웹 UI) │ │ http://[기기IP]:80 or :443 │ └────────────────────┬────────────────────────────────────────┘ │ HTTP / WebSocket ▼ ┌─────────────────────────────────────────────────────────────┐ │ CasaOS-Gateway (Nginx 기반) │ │ /v1/* ──────────────┐ │ │ /v2/casaos/* ────┐ │ │ │ /v2/app/* ───┐ │ │ │ │ /v2/storage/*│ │ │ │ └────────────────┼───┼───┼───────────────────────────────────┘ │ │ │ Unix Socket 또는 로컬 포트 ┌────────┘ │ └────────────────────────┐ ▼ ▼ ▼ ┌────────────┐ ┌────────────────┐ ┌──────────────────┐ │App-Mgmt │ │ CasaOS (이 │ │ Local-Storage │ │Service │ │ 레포, :80) │ │ Service │ │ │ │ │ │ │ │Docker API │ │ 파일/시스템 │ │ rclone mount │ │AppStore │ │ 헬스체크 │ │ Samba (SMB) │ │컨테이너 CRUD│ │ 알림·소켓IO │ │ USB 마운트 │ └─────┬──────┘ └───────┬────────┘ └──────────────────┘ │ │ │ ┌───────▼────────┐ ┌──────────────────┐ │ │ User-Service │ │ Message-Bus │ │ │ │◄────────│ (Redis 기반) │ │ │ JWT 발급 │ │ 이벤트 pub/sub │ │ │ ECDSA 키 관리 │ └──────────────────┘ │ └────────────────┘ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Docker Engine │ │ 컨테이너 A │ 컨테이너 B │ 컨테이너 C │ ... │ │ (Nextcloud) │ (Jellyfin) │ (AdGuard) │ │ └─────────────────────────────────────────────────────────────┘ │ ┌───────────┴───────────┐ │ Host Filesystem │ │ /DATA/AppData/... │ │ /mnt/disk1/... │ └───────────────────────┘

핵심 설계 패턴

1. OpenAPI First 개발

api/casaos/openapi.yaml을 단일 진실 원천으로 두고, go generate로 서버 스텁 코드(codegen/casaos_api.go)와 TypeScript 클라이언트 SDK를 동시에 자동 생성한다. API 문서와 구현이 항상 동기화된다.

openapi.yaml │ ├─ go generate ──> codegen/casaos_api.go (Go 서버 인터페이스) │ └─ oapi-codegen 사용 │ └─ npx openapi-generator-cli ──> generate/ (TypeScript Axios SDK) └─ package.json scripts 사용

2. Unix Socket 기반 서비스 간 통신

각 서비스는 /var/run/casaos/ 아래 Unix 도메인 소켓 파일로 통신한다. TCP 포트를 쓰지 않아 포트 충돌이 없고, 루트 권한이 있는 같은 호스트에서만 접근 가능해 보안 면에서도 유리하다.

3. JWT + ECDSA 로컬 신뢰 모델

User-Service가 EC 키 쌍을 생성하고 공개 키를 /var/run/casaos/jwt-public-key.pem에 저장한다. 다른 서비스들은 이 파일을 읽어 JWT 검증에 사용한다. 중앙 인증 서버 없이도 서비스 간 신뢰가 성립한다. 단, 로컬 IP(127.0.0.1, ::1)에서 오는 요청은 JWT 검증을 건너뛴다.

4. Socket.IO 실시간 진행률

service/socket.go에서 googollee/go-socket.io를 초기화한다. Docker 앱 설치 시 컨테이너 이미지 다운로드 진행률을 Socket.IO 이벤트로 브라우저에 실시간 전달한다. 폴링 없이도 UI가 즉시 업데이트된다.

5. 멀티 아키텍처 크로스 컴파일 + UPX

.goreleaser.yaml은 amd64 · arm64 · armv7 세 아키텍처를 한 번에 크로스 컴파일한다. 이후 UPX로 바이너리를 압축해 최종 크기를 40~60% 줄인다. Pi 4나 구형 ARM 보드에서도 동작하는 이유다.

5디렉토리 구조 해부

이 레포(메인 서비스)의 파일 배치와 역할.

CasaOS/ ← 메인 서비스 레포 ├── main.go ← 진입점: 플래그 파싱, DB 초기화, 라우터 등록, 크론 시작 ├── go.mod / go.sum ← Go 모듈 의존성 ├── package.json ← TypeScript SDK 빌드용 (npm/yarn) ├── Makefile ← build: UI 빌드 + 백엔드 컴파일 │ ├── api/ │ ├── casaos/openapi.yaml ← API 스펙 (단일 진실 원천) │ └── index.html ← Swagger UI (go:embed로 바이너리에 포함) │ ├── codegen/ ← go generate가 자동 생성 (직접 편집 금지) │ ├── casaos_api.go ← 서버 인터페이스·타입 │ └── message_bus/api.go ← 메시지 버스 클라이언트 │ ├── route/ │ ├── v1.go ← /v1/* 라우터 초기화 (레거시 API) │ ├── v2.go ← /v2/* 라우터 (OpenAPI 미들웨어 적용) │ ├── periodical.go ← 크론 작업 등록 │ └── v1/ v2/ ← 각 버전 핸들러 함수 │ ├── service/ ← 비즈니스 로직 (인터페이스 + 구현체) │ ├── service.go ← MyService 컨테이너 (의존성 주입 허브) │ ├── system.go ← CPU/RAM/네트워크/디스크 모니터링, SSH │ ├── file.go ← 파일 탐색·복사·압축/해제 │ ├── storage.go ← 클라우드 드라이브 마운트 (rclone 래퍼) │ ├── socket.go ← Socket.IO 서버 초기화 │ ├── notify.go ← 푸시 알림 │ ├── casa.go ← 원격 서버에서 CasaOS 버전 확인 │ └── peer.go ← 피어 디바이스 연결 관리 │ ├── pkg/ ← 유틸리티 패키지 │ ├── config/ ← casaos.conf 파싱, 구조체 │ ├── sqlite/ ← DB 연결 초기화 │ ├── cache/ ← go-cache 래퍼 │ ├── ddns/ ← 다이나믹 DNS 업데이트 │ ├── samba/ ← Samba 설정 파일 생성 │ └── utils/ ← 공통 유틸 (파일, HTTP, IP 등) │ ├── drivers/ ← 클라우드 드라이버 │ ├── all.go ← 전체 드라이버 임포트 (blank import 패턴) │ ├── google_drive/ ← Google Drive OAuth2 드라이버 │ ├── onedrive/ ← OneDrive 드라이버 │ └── dropbox/ ← Dropbox 드라이버 │ ├── common/ │ ├── constants.go ← VERSION = "0.4.15", SERVICENAME │ └── message.go ← 공통 메시지 상수 │ ├── types/ ← 도메인 타입 (Person, Notify, Task 등) ├── model/ ← DB 모델 (GORM 구조체) ├── conf/casaos.conf.sample ← 설정 파일 예시 └── UI/ ← (Git 서브모듈) CasaOS-UI 레포
비유로 이해하기

이 레포는 마치 호텔 프런트 데스크다. 손님(브라우저)은 프런트(이 서비스)와만 대화하지만, 실제 객실 청소·식사·주차는 각자 팀(App-Management·Local-Storage·User-Service)이 맡는다. 프런트는 요청을 받아 적절한 팀에 전달하고, 공용 메시지 보드(Message-Bus)로 팀들이 서로 소통한다.

6학습 포인트 (기술별)

이 레포에서 무엇을 배울 수 있는가.

Go 마이크로서비스 실전 패턴

CasaOS 코드베이스는 교과서적 Go 마이크로서비스 패턴의 실제 구현이다.

배울 것 #1

인터페이스 기반 서비스 레이어

service/service.goMyService는 모든 서비스 인터페이스를 담는 컨테이너다. SystemService, FileService 등을 인터페이스로 정의하고, 실제 구현체를 주입한다. 단위 테스트 시 mock 구현체로 교체할 수 있다.

// service/service.go 패턴
type Services interface {
    System()  SystemService
    File()    FileService
    Storage() StorageService
}

// 실제 사용: MyService.System().GetCpuPercent()
배울 것 #2

OpenAPI Code Generation (oapi-codegen)

YAML로 API를 먼저 설계하고, go generate로 서버 인터페이스를 자동 생성한다. 핸들러는 생성된 인터페이스를 구현하기만 하면 되므로, API 스펙과 구현이 언제나 일치한다.

// main.go 상단의 go:generate 지시자
//go:generate bash -c "mkdir -p codegen && go run github.com/deepmap/oapi-codegen/cmd/oapi-codegen \
  -generate types,server,spec -package codegen \
  api/casaos/openapi.yaml > codegen/casaos_api.go"
배울 것 #3

go:embed로 정적 파일 번들링

Swagger UI HTML과 설정 파일 샘플을 //go:embed로 바이너리에 포함시킨다. 배포 시 추가 파일 없이 단일 바이너리만 복사하면 된다.

// main.go
//go:embed api/index.html
_docHTML string

//go:embed api/casaos/openapi.yaml
_docYAML string

//go:embed build/sysroot/etc/casaos/casaos.conf.sample
_confSample string

시스템 프로그래밍 (Linux 데몬)

배울 것 #4

systemd SD_NOTIFY 통합

go-systemd/daemon을 사용해 서비스 준비 완료를 systemd에 알린다. Type=notify로 설정된 systemd 유닛이 이 신호를 기다렸다가 "READY" 상태로 전환한다. 실제 서버 데몬 개발에 반드시 필요한 패턴이다.

배울 것 #5

gopsutil로 시스템 모니터링

shirou/gopsutil v3은 OS에 관계없이 CPU·메모리·디스크·네트워크 정보를 Go API로 읽는다. service/system.go에서 실전 사용법을 볼 수 있다.

// CPU 사용률, 메모리, 디스크, 네트워크 인터페이스 조회
cpu.Percent(0, false)
mem.VirtualMemory()
disk.Usage("/")
net.IOCounters(true)

Docker 오케스트레이션 연동

배울 것 #6

Docker SDK (App-Management 서비스)

App-Management 서비스는 Go Docker SDK(docker/docker)를 사용해 컨테이너 이미지 풀, 컨테이너 생성·시작·중지·삭제를 프로그래밍 방식으로 제어한다. GUI 뒤에서 실제로는 Docker API 호출이 일어나는 구조다.

실습 아이디어

코드를 읽고 바로 써볼 수 있는 소규모 프로젝트:

7시스템 요구사항 · 설치

하드웨어·OS 요구사항과 한 줄 설치 명령.

하드웨어 지원 아키텍처

아키텍처대상 기기 예시비고
amd64 / x86-64일반 PC, NUC, 서버, VM가장 빠른 성능
arm64 / aarch64Raspberry Pi 4/5, Apple M1 (Linux VM), ZimaBoard저전력 운용 적합
armv7Raspberry Pi 3B+, 구형 ARM 보드32비트, 제한적 지원

최소 하드웨어 사양

항목최소권장
RAM1 GB4 GB 이상 (앱 여러 개 동시 실행 시)
저장 공간16 GB (OS + CasaOS)512 GB+ SSD (데이터용 별도 디스크 추천)
네트워크100 Mbps1 Gbps 이더넷 (Wi-Fi보다 유선 권장)
전력5W (Pi 제로)~15W (Pi 5, 일반 운용)

공식 지원 OS

OS상태비고
Debian 12공식 지원 (권장)가장 안정적
Ubuntu Server 20.04/22.04공식 지원LTS 버전 권장
Raspberry Pi OS공식 지원Pi 전용 최적화 이미지
Armbian 22.04커뮤니티 지원ARM SBC에 유용
Alpine / ArchLinux미완성 테스트비권장

설치 명령

신규 설치 (지원 OS가 새로 설치된 기기에서 실행):

wget -qO- https://get.casaos.io | sudo bash
# 또는
curl -fsSL https://get.casaos.io | sudo bash

업데이트:

wget -qO- https://get.casaos.io/update | sudo bash

버전 확인:

casaos -v

설치 후 같은 네트워크의 브라우저에서 http://[기기IP]로 접속하면 웹 UI가 뜬다. 설치 스크립트는 내부적으로 다음 작업을 수행한다:

주의
설치 스크립트를 내려받아 먼저 검토할 것

curl | sudo bash 패턴은 편리하지만, 인터넷에서 받은 스크립트를 루트로 실행하는 것이므로 신뢰할 수 있는 출처인지 확인이 필요하다. 가능하면 스크립트를 먼저 다운로드해 내용을 확인한 뒤 실행하는 습관을 들이자.

8직접 해볼 수 있는 실습 과제

난이도별 3~5개 과제. LV.1부터 순서대로 도전.

LV.1 — 설치 & 탐색

CasaOS 설치 후 앱 3개 띄우기 입문

Debian/Ubuntu VM이나 Raspberry Pi에 CasaOS를 설치하고, 앱스토어에서 Jellyfin(미디어 서버), Nextcloud(파일 동기화), AdGuard Home(광고 차단 DNS) 세 가지를 설치해 본다.

학습 포인트: Docker 컨테이너 개념 체험, 웹 UI UX 분석, 포트 할당 방식 관찰. docker ps로 실행 중인 컨테이너 목록을 직접 확인해 볼 것.
LV.2 — API 탐색

내장 Swagger UI로 API 직접 호출하기 초급

http://[기기IP]/doc/v2/casaos에 접속하면 Swagger UI가 뜬다. 헬스 체크 엔드포인트 GET /v2/casaos/health/servicesGET /v2/casaos/health/ports를 브라우저에서 직접 실행해 각 서비스의 상태를 확인한다.

학습 포인트: OpenAPI Swagger UI 사용법, REST API 응답 구조 분석. curl로도 같은 결과를 얻어 보자: curl http://[IP]/v2/casaos/health/services
LV.3 — Go 코드 이해

gopsutil로 나만의 시스템 모니터 CLI 만들기 중급

CasaOS의 service/system.go를 참고해, Go로 CPU·RAM·디스크 사용량을 1초 간격으로 출력하는 CLI 도구를 작성한다. gopsutil v3 패키지를 직접 써 본다.

// 핵심 import
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/mem"
"github.com/shirou/gopsutil/v3/disk"
목표: 매 초마다 "CPU: 12.3% | RAM: 3.2GB/8GB | Disk: 45GB/500GB" 형태로 출력. 추가 도전: net.IOCounters로 네트워크 트래픽도 표시.
LV.4 — 마이크로서비스 설계

Echo + OpenAPI로 나만의 미니 서비스 만들기 중상급

CasaOS 방식을 따라 openapi.yaml을 먼저 작성하고, oapi-codegen으로 Go 서버 코드를 생성한 뒤, Echo 프레임워크로 핸들러를 구현한다. 간단한 "메모장 API"(CRUD)를 만들고 SQLite + GORM으로 저장한다.

핵심 과정: 1) openapi.yaml 작성 → 2) go generate 실행 → 3) 생성된 인터페이스 구현 → 4) SQLite GORM 연동 → 5) Swagger UI 내장. CasaOS 구조를 그대로 흉내 내는 것이 목표.
LV.5 — 시스템 통합

커스텀 CasaOS 앱 카드 만들기 고급

CasaOS 앱스토어에 없는 Docker 이미지를 CasaOS의 "커스텀 앱 설치" 기능으로 등록한다. docker-compose.yml을 작성하거나 UI의 커스텀 앱 양식을 채워 본인이 만든 LV.4 서비스를 컨테이너화해 CasaOS 대시보드에서 관리한다.

심화: CasaOS App Store 기여 가이드를 읽고 앱 정의 JSON을 작성해 커뮤니티 앱스토어에 PR을 보내 본다. 실제 오픈소스 기여 경험.

9관련 기술 심화 학습 로드맵

CasaOS를 깊이 이해하기 위한 주차별 커리큘럼.

주차주제학습 내용참고 자료
1~2주Go 기초변수·함수·인터페이스·고루틴·채널, Go 모듈 시스템Tour of Go, Effective Go
3주HTTP 서버 (Echo)라우팅, 미들웨어, 바인딩, 에러 핸들링, JWT 미들웨어Echo 공식 문서
4주OpenAPI & 코드 생성OpenAPI 3.0 스펙 작성, oapi-codegen, Swagger UIOpenAPI Specification, oapi-codegen GitHub
5주SQLite & GORMORM 개념, 마이그레이션, 관계 모델링, 쿼리GORM 공식 문서
6주Docker 기초Dockerfile, 이미지/컨테이너 개념, docker-compose, 볼륨Docker 공식 튜토리얼
7주Docker Go SDKGo에서 Docker API 호출, 컨테이너 생명주기 프로그래밍docker/docker/client 패키지
8주systemd & 리눅스 데몬유닛 파일 작성, SD_NOTIFY, 서비스 의존성 관리systemd man page, coreos/go-systemd
9주실시간 통신 (Socket.IO)WebSocket 기초, Socket.IO 프로토콜, 이벤트 기반 설계go-socket.io GitHub
10주마이크로서비스 설계서비스 분리 원칙, Unix Socket IPC, API 게이트웨이 패턴마이크로서비스 아키텍처 (샘 뉴먼)
11주보안 (JWT + ECDSA)JWT 구조, ECDSA 키 생성, 로컬 신뢰 모델jwt.io, Go crypto/ecdsa
12주크로스 컴파일 & CI/CDGoReleaser, 크로스 컴파일, UPX, GitHub Actions.goreleaser.yaml 분석

10핵심 키워드 사전

이 레포를 읽으면서 만나는 용어들의 짧은 정의.

키워드한 줄 정의
Echo (Go)Go용 고성능 HTTP 웹 프레임워크. Express.js의 Go 버전이라고 생각하면 된다.
oapi-codegenOpenAPI YAML에서 Go 서버 인터페이스·타입 코드를 자동 생성하는 도구.
go:embed컴파일 시 파일을 Go 바이너리에 포함시키는 지시자. 배포 파일 수를 줄인다.
GORMGo 객체-관계 매핑(ORM) 라이브러리. SQL 없이 Go 구조체로 DB를 다룬다.
gopsutilOS에 무관하게 CPU·RAM·디스크 등 시스템 정보를 읽는 Go 라이브러리.
Socket.IOWebSocket 위에서 이벤트 기반 실시간 통신을 구현하는 프로토콜·라이브러리.
SD_NOTIFYsystemd에 "나 준비됐어"를 알리는 프로토콜. Type=notify 서비스에 필요.
ECDSA타원 곡선 디지털 서명 알고리즘. RSA보다 짧은 키로 동등한 보안 강도.
JWTJSON Web Token. 서명된 JSON으로 인증 정보를 전달하는 표준.
Unix Socket파일 시스템 경로를 통해 같은 호스트 내 프로세스끼리 통신하는 IPC 방법.
rclone클라우드 스토리지(S3, Google Drive 등)를 로컬 파일시스템처럼 마운트하는 툴.
UPX실행 파일 압축 도구. 바이너리 크기를 50~70% 줄인다. 실행 시 자동 해제.
GoReleaserGo 프로젝트의 멀티 플랫폼 빌드·릴리즈 자동화 도구.
Docker Engine APIDocker 데몬이 제공하는 REST API. Go SDK를 통해 컨테이너를 프로그래밍으로 제어.
ZimaOSIceWhaleTech가 ZimaBoard 전용 하드웨어를 위해 CasaOS를 기반으로 만든 파생 OS.
API 게이트웨이클라이언트 요청을 받아 적절한 백엔드 서비스로 라우팅하는 진입점 컴포넌트.
SBC (Single Board Computer)하나의 보드에 CPU·RAM·스토리지가 모두 붙은 소형 컴퓨터. 라즈베리 파이가 대표적.

11참고 링크

출처와 추가 학습 자료.