- Enable external access to admin dashboard via ro-being.com/admin
- Proxy /admin requests to localhost:8000
- Maintain same proxy headers as API endpoints
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Use proper nginx -t instead of -c option
- Test by temporarily applying config, then restore
- Validates against full nginx context
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Switch from ubuntu-latest to self-hosted runner
- Enables direct access to local nginx configuration
- Allows sudo commands with admin account privileges
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- /rb8001/ → /rb10508/로 경로 변경
- 포트 8001 → 10508로 변경
- README.md 프록시 라우팅 정보 업데이트
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- /api/ 경로를 localhost:18000 → localhost:8000으로 변경
- frontend 백엔드 실제 포트에 맞춰 nginx 설정 수정
- README.md 프록시 라우팅 정보 업데이트
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- webfactory/ssh-agent 제거하고 직접 SSH 키 설정으로 단순화
- 배포 단계별 로그 출력 추가 (이모지 포함)
- 워크플로우 상단에 상세 문서화 주석 추가
- 성공/실패 조건 및 주요 작업 명시
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- SSH setup에 id 추가하여 참조 가능하게 설정
- 조건부 SSH agent cleanup 추가로 경고 제거
- README.md 파일 구조 설명 개선
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Docker nginx 대신 서버 nginx 설정 직접 적용
- sudo NOPASSWD 특정 명령어만 허용하여 보안 유지
- nginx -t 및 systemctl reload 자동화
- README.md 배포 플로우 업데이트
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- ssl 폴더가 없으므로 ~/robeing-nginx/* 로 내부 파일만 삭제
- README.md에서 ssl 폴더 보존 설명 제거
- 더 간단하고 안전한 배포 방식
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- ssl 폴더를 제외하고 나머지 파일만 삭제
- 권한 문제 해결 위해 find 명령어 사용
- README.md 배포 플로우 설명 업데이트
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- README.md 먼저 업데이트 (룰 준수)
- Docker 컨테이너는 8080 포트에서 HTTP만 처리
- SSL/HTTPS는 서버 자체에서 처리
- certbot 관련 복잡한 설정 모두 제거
- 권한 문제 해결
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- scp 대신 tar+ssh 파이프라인 사용
- .git 폴더 제외하여 권한 충돌 방지
- 기존 디렉토리 삭제 후 재생성으로 깨끗한 배포
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Ubuntu 서버 배포 방식으로 업데이트
- GitHub Actions SCP 방식 설명
- 불필요한 설정 제거
- 실제 사용 중인 프록시 라우팅 명시
- SSL 설정 및 테스트 방법 추가
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 원격에 ~/robeing-nginx 디렉토리 생성 후 파일 전송
- scp -r . 로 전체 워크스페이스 전송
- git clone 인증 문제 해결
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Detect if system service (DSM/Web Station) uses port 80
- Automatically switch nginx to port 8080 if port 80 is occupied
- Avoid touching system services, only manage Docker containers
- Prevents conflicts with Synology NAS built-in services
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add port 80 usage detection with netstat and docker ps
- Stop and remove containers using port 80 before deployment
- Ensures clean port 80 for nginx service
- Prevents 'bind: address already in use' errors
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add -O flag to force legacy SCP protocol instead of SFTP
- Bypasses 'subsystem request failed on channel 0' error
- Works with Synology NAS without SFTP subsystem configuration
- Prevents Exit code 255 from connection failures
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create archive in /tmp/deploy-build to avoid path conflicts
- Add --exclude='*.tar.gz' to prevent self-archiving
- Add --warning=no-file-changed to ignore harmless warnings
- Prevents Exit code 1 from tar file change detection
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Use atomic swap strategy: tmp → backup → deploy
- Automatic backup with timestamp for rollback
- Clean up old backups (keep 5 latest)
- Safer file deployment preventing partial updates
- Based on 2024 GitOps best practices
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Use docker-compose down to clear old service definitions
- Use docker system prune -f to remove cached metadata
- Verify new compose file is deployed correctly
- Force rebuild with --build flag
- This ensures new nginx-only config is used instead of cached old stack
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Stop and remove old containers with docker-compose down
- Prevents conflicts with cached old configurations
- Ensures clean deployment of new nginx-only setup
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove unnecessary services (api-base, test_api, frontend containers)
- Configure nginx to proxy to host.docker.internal:5137
- Simplified docker-compose.yml for initial deployment test
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Synology NAS doesn't have 'groups' command
- Use 'id' command instead which is available on all Unix systems
- This fixes the deployment pipeline error
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace sudo rsync with cp command
- Add error suppression for permission denied files
- Continue deployment even if some files can't be overwritten
- Avoid password prompt issues with sudo
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Extract files to /tmp first to avoid permission issues
- Use sudo rsync --delete for clean deployment
- Remove temporary files after deployment
- Handles root-owned files in target directory
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Exclude .git directory from tar archive
- Clean target directory before extraction
- Prevent file exists and permission denied errors
- Ensure clean deployment without conflicts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Test rsync availability on remote host
- Use tar + SSH pipe as alternative deployment method
- Avoids rsync server permission denied errors
- More reliable for Synology NAS deployment
Resolves: Permission denied on rsync server command execution
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Test directory access and permissions
- Check user identity and current directory
- Create target directory if not exists
- Add verbose SSH logging (-vvv) to rsync
- Troubleshoot permission denied error step by step
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Force re-run with updated rsync command including admin@host:path
- Ensure GitHub Actions uses latest workflow file version
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Explicitly specify admin@HOST in rsync command
- Ensure proper user authentication for file transfer
- Fixes Permission denied error during rsync step
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>