Private Update Server — 자체 업데이트 서버 구축
"기업 환경이나 비공개 앱은 GitHub Releases를 쓸 수 없는 경우가 있다" — 자체 서버나 S3로 업데이트를 제공하면 됩니다.
Generic Server (정적 파일 서버)
가장 간단한 방법입니다. 정적 파일 서버에 빌드 결과물을 업로드합니다.
# electron-builder.yml
publish:
- provider: generic
url: https://updates.example.com/releases
서버 디렉토리 구조
https://updates.example.com/releases/
├── latest.yml
├── latest-mac.yml
├── latest-linux.yml
├── MyApp-1.2.0-win-x64.exe
├── MyApp-1.2.0-win-x64.exe.blockmap
├── MyApp-1.2.0-mac-x64.zip
└── MyApp-1.2.0-linux-x64.AppImage
latest.yml 형식
version: 1.2.0
files:
- url: MyApp-1.2.0-win-x64.exe
sha512: base64encodedHash==
size: 85000000
path: MyApp-1.2.0-win-x64.exe
sha512: base64encodedHash==
releaseDate: '2027-01-02T00:00:00.000Z'
S3 호스팅
# electron-builder.yml
publish:
- provider: s3
bucket: my-electron-updates
region: ap-northeast-2
acl: public-read
# AWS 인증 설정
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
npx electron-builder --publish always
Nginx로 업데이트 서버 구축
# nginx.conf
server {
listen 443 ssl;
server_name updates.example.com;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
root /var/www/electron-updates;
location / {
autoindex on;
# CORS 헤더 (electron-updater가 필요)
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "GET, HEAD";
}
}
업로드 스크립트
#!/bin/bash
# deploy-update.sh
VERSION=$1
REMOTE="user@updates.example.com:/var/www/electron-updates"
scp release/latest*.yml "$REMOTE/"
scp release/*.exe "$REMOTE/"
scp release/*.exe.blockmap "$REMOTE/"
scp release/*.dmg "$REMOTE/"
scp release/*.zip "$REMOTE/"
scp release/*.AppImage "$REMOTE/"
echo "업데이트 v${VERSION} 배포 완료"
업데이트 채널 분리
https://updates.example.com/
├── stable/ ← 안정 채널
│ ├── latest.yml
│ └── MyApp-1.0.0-win.exe
├── beta/ ← 베타 채널
│ ├── latest.yml
│ └── MyApp-1.1.0-beta.1-win.exe
└── alpha/ ← 알파 채널
└── ...
// main.js — 채널에 따라 업데이트 URL 변경
const channel = store.get('updateChannel', 'stable');
autoUpdater.setFeedURL({
provider: 'generic',
url: `https://updates.example.com/${channel}`,
});
면접 포인트 정리
- Generic 서버: 정적 파일만 제공하면 되므로 가장 간단
- S3: 확장성이 좋고 CDN과 연동 가능
latest.yml파일이 업데이트 메타데이터의 핵심- 채널별 디렉토리 분리로 stable/beta/alpha 배포 가능
- CORS 헤더 설정이 필요 (
Access-Control-Allow-Origin)
Private Update Server를 다뤘으면, 다음은 모노레포 구성을 알아봅시다.
댓글 로딩 중...