반응형 전체 글97 Rootless Docker daemon에 Gitea 설치 Ubuntu 24.04에서 Gitea만을 위한 OS 사용자 gitea-svc를 만들고, 이 사용자가 소유하는 별도의 Rootless Docker daemon에서 Gitea를 실행하는 방법을 정리합니다.PostgreSQL은 Gitea와 같은 Docker daemon에 두지 않습니다. 별도의 postgres-svc Rootless Docker daemon에서 실행하고, Gitea container는 Ubuntu host의 private/internal IP에 공개된 PostgreSQL TCP endpoint로 접속합니다.Ubuntu 24.04│├─ postgres-svc│ └─ Rootless Docker daemon A│ └─ PostgreSQL 18│ └─ HOST_PRIVATE_I.. 2026. 9. 4. Rootless Docker daemon에 PostgreSQL 18 설치하기 Ubuntu 24.04에서 PostgreSQL 전용 OS 사용자 postgres-svc를 만들고, 이 사용자가 독립적인 Rootless Docker daemon을 실행하도록 구성하는 방법을 정리합니다.구성의 핵심은 PostgreSQL, Gitea, Codex Worker가 하나의 Docker daemon을 공유하지 않는 것입니다. PostgreSQL은 postgres-svc 사용자에게 속한 별도의 Rootless Docker daemon에서만 실행합니다.Ubuntu 24.04│└─ postgres-svc └─ Rootless Docker daemon A └─ PostgreSQL Compose └─ postgres:18Gitea와 Codex Worker는 이 daemon을 사용하.. 2026. 9. 2. Codex Agent Server 인프라 설계 — PostgreSQL / Gitea / Coding Agent의 3-daemon 분리 Ubuntu 24.04 한 대에서 PostgreSQL, Gitea, Codex 기반 Coding Agent를 함께 운영하더라도 모든 서비스를 하나의 Docker daemon에 넣을 필요는 없습니다.이 글에서는 다음과 같이 세 개의 Linux service account와 세 개의 Rootless Docker daemon을 사용하여 Docker control plane을 분리하고, Codex Agent Server만 Ubuntu native systemd service로 실행하는 구조를 정리합니다.postgres-svc: PostgreSQL 전용 Rootless Docker daemongitea-svc: Gitea 전용 Rootless Docker daemoncodex-agentd: Ticket별 Work.. 2026. 9. 2. Codex Agent Server 구축하기 Ubuntu 24.04 서버에서 Gitea Issue를 시작점으로 Codex CLI가 코드를 수정하고 Pull Request를 생성하는 Coding Agent Server를 구성하는 방법을 정리합니다.이 구조에서는 Gitea Issue에 codex-ready label이 추가되면 Go 기반 Agent Server가 작업을 시작합니다. Agent Server는 Ticket별로 격리된 Docker Compose 환경을 만들고, Codex CLI를 실행하여 코드를 수정한 뒤 Validation, Git commit/push, Gitea Pull Request 생성까지 자동으로 처리합니다.Pull Request의 최종 승인은 사람이 수행하며, 승인된 Agent PR에 대해서만 Agent Server가 Gitea.. 2026. 9. 2. 리눅스 /opt, /var/lib, /var/log 차이점 리눅스 서버를 운영하다 보면 프로그램 파일은 /opt에 있고, PostgreSQL이나 Docker의 데이터는 /var/lib에 있으며, 로그는 /var/log에 저장되는 모습을 자주 볼 수 있습니다.세 디렉터리는 모두 애플리케이션과 관련되어 있지만 역할은 서로 다릅니다. Filesystem Hierarchy Standard(FHS)를 기준으로 보면 /opt는 추가 애플리케이션의 정적 파일을 설치하는 영역이고, /var/lib는 프로그램이 실행되는 동안 변경하면서 다음 실행까지 유지해야 하는 상태 정보 영역이며, /var/log는 시스템과 애플리케이션의 로그를 보관하는 영역입니다.핵심적으로 다음과 같이 구분할 수 있습니다./opt추가 애플리케이션을 독립된 디렉터리 형태로 설치할 때 사용하는 위치입니다.주로.. 2026. 8. 28. [Superpowers] Codex 전역 제거와 프로젝트 단위 설치 Codex에서 Superpowers를 전역 플러그인으로 설치하면 여러 프로젝트에서 동일한 Superpowers 기능을 사용할 수 있습니다.특정 프로젝트에서만 Superpowers를 사용하고 싶다면 전역 플러그인을 제거하고, 프로젝트 저장소의 .agents/skills 아래에 필요한 Superpowers skill을 배치하는 방법을 사용할 수 있습니다.Codex 공식 문서에서는 저장소 범위의 로컬 skill을 현재 작업 디렉터리부터 Git 저장소 루트까지 존재하는 .agents/skills에서 탐색한다고 설명합니다. 사용자 전체에 적용되는 skill은 $HOME/.agents/skills에서 탐색합니다.이 글에서는 Ubuntu 24.04와 Windows 11 환경에서 다음 구성을 기준으로 설명합니다.전역 .. 2026. 8. 25. Git Pull Request 리뷰에서 Request Changes 사용하기 Git을 사용하는 팀에서는 기능 개발 브랜치의 변경 사항을 다른 브랜치에 반영하기 전에 Pull Request(PR)를 만들어 코드 리뷰를 진행하는 경우가 많습니다.리뷰 과정에서 수정이 필요한 부분을 발견하면 GitHub나 Gitea 같은 Git 호스팅 서비스에서 Request Changes를 사용할 수 있습니다.다만 먼저 구분해야 할 점이 있습니다.Request Changes와 Pull Request는 Git 명령 자체가 아닙니다. Git은 브랜치, 커밋, merge, push 같은 버전 관리 기능을 제공하고, Pull Request와 코드 리뷰 기능은 GitHub, Gitea, GitLab, Bitbucket 같은 Git 기반 협업 서비스에서 제공합니다.이 글에서는 특정 제품에 한정하지 않고 Git을.. 2026. 8. 18. Windows 11 에서 자동 다운로드 막기 Windows 11은 기본적으로 Windows Update를 통해 보안 업데이트와 품질 업데이트를 자동으로 다운로드하고 설치합니다.개인 PC나 개발용 PC에서는 작업 중 예상하지 못한 업데이트 다운로드, 설치 또는 재부팅을 피하기 위해 업데이트 시점을 직접 관리하고 싶은 경우가 있습니다.Windows 11 Pro에서는 로컬 그룹 정책 편집기를 사용하여 Windows Update 동작을 제어할 수 있습니다.가장 권장하기 쉬운 설정은 다음과 같습니다.2 - 다운로드 및 자동 설치 알림이 옵션을 사용하면 Windows Update가 적용 가능한 업데이트를 찾더라도 바로 다운로드하지 않고 사용자에게 알립니다.사용자가 Windows Update 화면에서 직접 다운로드와 설치를 시작해야 합니다.동작 흐름은 다음과 .. 2026. 8. 13. [Orca] Ubuntu 24.04와 Windows 11에서 Orca IDE 설치하기 Ubuntu 24.04 LTS와 Windows 11 환경에서 Orca IDE를 설치하고 처음 실행하는 방법을 정리합니다.Orca는 Claude Code, Codex, OpenCode 같은 AI 코딩 에이전트를 여러 Git worktree에서 병렬로 실행하고, 변경 내용을 비교·검토할 수 있도록 구성된 데스크톱 개발 도구입니다. 공식 문서에서는 Windows용 설치 프로그램과 Linux용 .deb 패키지 및 AppImage를 제공합니다.이 글에서는 Ubuntu 24.04의 .deb와 AppImage 설치 방법, Windows 11의 공식 설치 프로그램 사용 방법, 운영체제별 실행 확인과 문제 해결 절차를 함께 다룹니다.2026년 7월 29일 기준 GitHub Releases에서 확인되는 최신 안정 버전은 .. 2026. 7. 30. Go 채널과 context 취소 신호 이해하기 Go의 채널은 goroutine 사이에서 값을 전달하면서 실행 순서를 동기화하는 기능입니다. context.Context의 Done()도 채널을 사용하지만, 일반적인 데이터 전달용 채널과는 목적과 사용 방법이 다릅니다.다음 예제는 3초가 걸리는 작업을 실행하면서, 2초 안에 완료되지 않으면 컨텍스트의 타임아웃으로 작업 대기를 종료합니다.package mainimport ( "context" "fmt" "time")func run(ctx context.Context) error { select { case 실행 결과는 약 2초 후 다음과 같습니다.결과: context deadline exceededtime.After(3 * time.Second)가 준비되기 전에 2초짜리 컨텍스트.. 2026. 7. 30. 이전 1 2 3 4 ··· 10 다음 반응형