linkitapps 47181fa5ca feat: Gitea 연동 설정 보완, Apache 역방향 프록시 템플릿 추가 및 기능 개선 요청서 작성
- fix(config): 로컬 실행 시 루트의 .env 파일을 자동 로드하도록 Settings.from_env 개선 (테스트 실행 시 격리)

- fix(ops): 기존 8000번 포트 충돌 방지를 위해 docker-compose.ops.yml 호스트 포트를 127.0.0.1:18000:8000으로 조정

- fix(git-binding): Git 저장소 바인딩 시 projects 테이블의 branch도 함께 동기화하도록 app.py 보완

- ui(projects): 프로젝트 카드의 BRANCH 표시에 바인딩된 브랜치를 우선 표시하고, OWNER 라벨을 '담당'으로 명확화

- feat(deploy): Ubuntu Apache2 웹서버용 Gitea 및 SourceHub 역방향 프록시 설정 템플릿 추가 (deploy/apache-*.conf)

- docs: 프로젝트 CRUD 및 사내 개발자 관리 기능 갭 분석 및 개발 요청서 Word 문서 추가 (docs/)
2026-09-27 01:23:47 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00
2026-09-14 23:22:10 +09:00

NEXPA SourceHub 3.8 · Production Candidate

실제 sourcehub.nexpa-ai.com 교체를 목표로 3.7을 Production Hardening한 버전입니다.

3.8 핵심 변경

1. 로그인 Gate

OIDC 모드에서는 미인증 사용자가 /에 접근해도 내부 대시보드를 제공하지 않습니다. 로그인 화면만 표시하며 /static/index.html 직접 접근 경로도 제거했습니다.

2. 파일 악성코드 검사

업로드 파일을 임시 영역에 먼저 저장 → SHA-256 계산 → ClamAV 검사 → 정상 파일만 Local/MinIO 저장소에 반영합니다.

3. 만료형 다운로드

고정 다운로드 URL 대신 로그인 사용자가 짧게 유효한 HMAC 서명 링크를 발급받습니다. 기본 TTL: 300초.

4. CSRF / Session / Security Headers

  • OIDC 모드 CSRF 기본 활성화
  • Secure Cookie 환경 설정
  • Trusted Host 제한
  • CSP / X-Frame-Options / nosniff / Referrer Policy / Permissions Policy
  • HSTS 옵션

5. 통제된 배포 실행

임의 shell 명령 실행을 허용하지 않습니다. 서버 환경변수에 사전 등록한 배포 Webhook Target만 배포 담당자가 실행할 수 있습니다. 모든 배포 Gate가 완료되어야 실행 가능합니다.

6. DB Migration

Alembic 포함.

alembic upgrade head

7. Backup / Restore

python scripts/backup.py --out backups
python scripts/restore.py --db <db-backup> --storage <storage-backup> --yes-really-restore

SQLite/Local 저장소는 실제 복구 테스트를 포함했습니다. PostgreSQL은 pg_dump/pg_restore를 사용합니다.

8. 운영 인프라

  • SQLite ↔ PostgreSQL
  • Local ↔ MinIO
  • Mock ↔ NEXPA Core OIDC
  • Gitea Connector
  • ClamAV

로컬 실행

python -m pip install -r requirements.txt
scripts/start.sh

Windows:

scripts\start_windows.bat

Production Candidate 실행

.env.production.example을 복사해 실제 비밀값을 입력한 후:

docker compose -f docker-compose.production.yml up -d --build

상세 전환 절차: PRODUCTION_DEPLOYMENT.md

테스트

pytest -q

현재 남은 실제 배포 의존성

코드가 아니라 서버 측 값이 필요합니다.

  • NEXPA Core 실제 OIDC Metadata/Client ID/Secret
  • 실제 PostgreSQL 비밀번호
  • MinIO Credentials
  • Gitea URL/Token/Repo Binding
  • 실제 CI/CD Webhook Target/Secret
  • TLS 인증서 및 서버 접근 권한

이 값이 없는 상태에서는 Production Ready라고 표시하지 않도록 설계되어 있습니다.

S
Description
No description provided
Readme
21 MiB
Languages
Python 72.3%
HTML 27.3%
Dockerfile 0.2%
Shell 0.1%