<div align="center">
<img src="https://raw.githubusercontent.com/DigneZzZ/remnawave-scripts/HEAD/assets/hero.svg" alt="Remnawave Scripts" width="880">
License: MIT
Shell
remnawave.sh
remnanode.sh
Panel
Localization
Русский · Quick Start · Scripts · Backups · Support
</div>
Remnawave Panel, RemnaNode, Reality masking, WARP/Tor 및 엔터프라이즈급 백업을 위한 원라인 설치와 기능이 풍부한 CLI(Command Line Interface)를 제공합니다. Docker 기반이며, 이중 언어 UI (EN/RU), 불변(idempotent) 작업 수행, 자체 업데이트 기능을 지원합니다.
🆕 Remnawave Panel 3.4.x 및 node 3.4.x가 기본적으로 지원됩니다. 새로 설치하면 구독 링크를 위한 새로운 SHORT_UUID_METHOD 선택기 (nanoid / uuid / 사용자 지정 패턴)와 함께 최신 설정이 즉시 적용되며, remnawave update는 대상 이미지 버전 확인과 수정하는 모든 파일에 대한 백업을 수행하면서 이전의 .env 파일을 자동으로 마이그레이션합니다.
⚠️ node 라인 3.3.0 … 3.3.2만 panel 3.3.0+를 요구합니다 (해당 버전은 파생된-SNI TLS 핸드셰이크를 강제합니다). Node 3.4.0부터는 해당 확인이 선택적(opt-in)으로 변경되었습니다 (SNI_VERIFICATION, 기본값 비활성화), 따라서 최신 node가 이전 panel과 다시 작동할 수 있게 되었습니다.
⚡ Quick Start
bash <(curl -Ls https://github.com/DigneZzZ/remnawave-scripts/raw/main/remnawave.sh) @ install
...
다른 것은 설치하지 않고 CLI만 필요한가요? install 대신 **install-script**로 교체하세요. 이 명령어는 /usr/local/bin에 명령어를 바로 배치합니다 (원격으로 관리하는 서버나 최신 CLI를 지금 당장 얻고 싶을 때 유용합니다):
sudo bash <(curl -Ls https://github.com/DigneZzZ/remnawave-scripts/raw/main/remnawave.sh) @ install-script
서버에서 GitHub 접속이 차단되었나요? 모든 스크립트는 jsDelivr를 통해 자체 미러링되므로, github.com/.../raw/main/ 대신 다음 중 하나를 사용하세요:
https://cdn.jsdelivr.net/gh/DigneZzZ/remnawave-scripts@main/<script>.sh
설치 후에는 스크립트들이 자체적으로 이러한 미러에 의존하게 되며, 셀프 업데이트(self-updates) 시에도 마찬가지입니다.
각 스크립트는 설치 후 전역 명령어(global command)가 됩니다: remnawave, remnanode, selfsteal — 인자 없이 실행하여 대화형 메뉴를 엽니다.
📦 스크립트
| 스크립트 | 버전 | 용도 | 문서 |
|---|
| 🚀 remnawave.sh | 6.8.0 | 패널: 설치, Caddy, 백업, 구독 페이지 | 이 파일 |
| ... | | | |
모든 스크립트는 자체적으로 최신 상태를 유지합니다: 업데이트(update) 시 또는 메뉴가 열릴 때 자신의 버전을 확인하고, 묻지 않고 더 새로운 버전으로 적용한 다음 명령을 다시 실행합니다. 다운로드는 먼저 GitHub를 시도하고, 그다음 jsDelivr 미러를 사용합니다. 서버에서 CLI만 설치하거나 새로 고치려면 install-script를 사용하세요 — 아래 명령어 테이블을 참조하십시오.
🚀 Remnawave Panel
<div align="center"><img src="https://raw.githubusercontent.com/DigneZzZ/remnawave-scripts/HEAD/assets/preview-remnawave.svg" alt="remnawave 메뉴" width="640"></div>
- Turnkey 설치 —
.env, secrets, 포트, compose 파일 및 관리자 계정이 자동으로 생성됩니다 (자격 증명은 admin-credentials.txt에 포함됨)
- 구독 링크 형식 — 설치 시
nanoid(16~64자), uuid 또는 사용자 지정 패턴을 선택할 수 있습니다. update는 기존 .env 파일에 블록을 작성하며 동일한 선택지를 제공합니다. 패턴은 패널과 완전히 동일하게 검증되며, 실시간 샘플이 제공됩니다 (패널 3.4.0 이상)
- Caddy 리버스 프록시 — 자동 SSL, MFA가 적용된 선택적 인증 포털(Caddy Security)을 지원합니다.
- 설정 파일은 사용자의 것 — 생성되는 모든 파일(
Caddyfile, .env, .env.subscription, docker-compose.yml)에는 # managed-by: remnawave.sh v<버전>과 sha256 사이드카가 표시됩니다. 이 중 하나를 수정하면 스크립트가 재작성을 멈추고, 새로운 템플릿은 차이점(diff)과 함께 <파일>.new-<버전>으로 옆에 배치됩니다. Caddy 리로드 전에 설정 파일은 실행 중인 컨테이너 내부에서 caddy validate로 확인되며, 이후 모든 도메인이 프로브됩니다 — 응답을 멈춘 도메인은 파일을 자동으로 롤백합니다.
- 구독 페이지 — 패널과 함께 또는 별도의 서버에 독립적으로 배포할 수 있습니다. 최소 권한 범위(least-privilege scopes)를 가진 API 토큰이 자동으로 생성됩니다.
- 안전한
update — 모든 업데이트 전에 DB 및 설정 스냅샷을 찍고, 자동 마이그레이션(v2 → v3 포함)을 수행합니다.
- Telegram — 알림 및 백업 전송, 스레드, 프록시 및 사용자 지정 Bot API 주소 지원 (자체 호스팅 서버 또는 릴레이)
remnawave
remnawave update
remnawave backup
<details>
<summary><b>📋 CLI 명령어 및 설치 플래그</b></summary>
| Command | Description |
|---|
install / uninstall | 설치/완전 제거 |
| ... | |
install-script는 install과는 다릅니다. 이는 서버에서 remnawave 명령어만 배치(또는 새로고침)하는 데 사용됩니다 — 패널이 존재하기 전, 원격으로만 관리하는 박스, 또는 최신 CLI를 강제로 적용할 때 유용합니다. install은 패널 자체를 설정합니다.
update는 다른 작업을 수행하기 전에 먼저 CLI를 새로고침하므로 수동으로 호출할 필요가 거의 없습니다. 모든 다운로드는 GitHub를 먼저 시도하고, 그다음 jsDelivr 미러를 사용합니다.
sudo bash <(curl -Ls https://github.com/DigneZzZ/remnawave-scripts/raw/main/remnawave.sh) @ install-script
sudo bash <(curl -Ls https://cdn.jsdelivr.net/gh/DigneZzZ/remnawave-scripts@main/remnawave.sh) @ install-script
</details>
<details>
<summary><b>📂 파일 구조</b></summary>
/opt/remnawave/ # .env, docker-compose.yml, backups/, logs/
/opt/caddy-remnawave/ # Caddy (설치된 경우)
/usr/local/bin/remnawave # CLI 명령어
</details>
🛰 RemnaNode
<div align="center"><img src="https://raw.githubusercontent.com/DigneZzZ/remnawave-scripts/HEAD/assets/preview-remnanode.svg" alt="remnanode 메뉴" width="640"></div>
- Xray-core — 메뉴에서 설치 및 업데이트 가능하며, 프리릴리스 포함; 실시간 Xray 로그
- 비대화형 모드 (Non-interactive mode) — 대량 프로비저닝을 위한
--force --secret-key="KEY" 사용
update 시 자동으로 적용되는 NET_ADMIN 기능 및 설정 마이그레이션
- 로그 로테이션 (Log rotation) — 50 MB × 5개 파일, 다운타임 없음; 다중 아키텍처 지원: x86_64 / ARM64 / ARM32 / MIPS
remnanode
remnanode core-update
remnanode xray_log_err
<details>
<summary><b>📋 CLI 명령어 및 설치 플래그</b></summary>
⚠️ 노드 3.3.0 … 3.3.2는 패널 3.3.0 이상을 요구합니다. 해당 버전의 릴리스는 패널이 파생된 SNI(Server Name Indication)를 제시하지 않는 한 TLS 핸드셰이크를 거부합니다. 따라서 구형 패널에서 실행되는 이러한 노드는 오프라인(unknown sni가 노드 로그에 표시됨)으로만 나타납니다. 설치 프로그램은 이 사항을 단 한 번, 요청된 태그가 해당 범위 내에 있을 때만 묻습니다. Node 3.4.0 이상에서는 SNI_VERIFICATION(기본값: 비활성화) 뒤에 체크를 숨겼기 때문에, latest는 모든 패널에서 정상적으로 작동합니다. 패널이 3.3.0 이하인 경우 노드 .env 파일에 SNI_VERIFICATION=true를 설정하여 이 기능을 다시 활성화할 수 있습니다.
up / restart 명령어는 실행 중인 이미지를 절대 변경하지 않으며, 오직 update만 그렇게 합니다. 반면에 CLI 자체는 GitHub 연결이 불가능할 경우 jsDelivr를 통해 미러링되면서 자동으로 최신 상태를 유지합니다.
| Command | Description |
|---|
install / uninstall / update | 라이프사이클 (Lifecycle) |
| ... | |
install-script는 install과는 다릅니다. 이는 서버에서 remnanode 명령어만 배치(또는 새로고침)하는 역할을 합니다. 노드가 존재하기 전이거나, 현재 가장 최신 CLI를 강제로 적용해야 할 때 유용합니다. install은 노드 컨테이너를 설정합니다. update는 먼저 자체적으로 CLI를 새로고침하므로, 수동으로 이 작업을 수행할 필요가 거의 없습니다.
sudo bash <(curl -Ls https://github.com/DigneZzZ/remnawave-scripts/raw/main/remnanode.sh) @ install-script
sudo bash <(curl -Ls https://cdn.jsdelivr.net/gh/DigneZzZ/remnawave-scripts@main/remnanode.sh) @ install-script
/opt/remnanode/ # .env, docker-compose.yml
/var/lib/remnanode/ # Xray 바이너리
/usr/local/bin/remnanode # CLI 명령어
</details>
🎭 Caddy Selfsteal
<div align="center"><img src="https://raw.githubusercontent.com/DigneZzZ/remnawave-scripts/HEAD/assets/preview-selfsteal.svg" alt="selfsteal menu" width="640"></div>
- 위장(camouflage)용 11개 웹사이트 템플릿 제공: 소셜, 컨버터, 파일 클라우드, 스피드 테스트 등
- Anti-fingerprint 기능 — 모든 템플릿은 설치 시 고유화되며 (바이트 동일 복사본 없음), 출처 추적 정보(provenance traces)가 제거됨
- Reality 통합을 위한 내장 가이드 (
selfsteal guide)
- 메뉴 및
status에서 인증서 확인: 현재 도메인에 발급되었는지, 공개적으로 신뢰할 수 있는지, 남은 일수 등을 표시 (Caddy의 ACME 인증서는 Docker 볼륨에서 읽어옴)
selfsteal template list
selfsteal template install converter
{ "realitySettings": { "dest": "127.0.0.1:9443", "serverNames": ["your-domain.com"] } }
상세 정보 (HTTP/3, --no-randomize, 구조): README-selfsteal.md
🌐 WTM — WARP & Tor Manager
<div align="center"><img src="https://raw.githubusercontent.com/DigneZzZ/remnawave-scripts/HEAD/assets/preview-wtm.svg" alt="wtm 메뉴" width="640"></div>
- Xray용 네이티브 WireGuard 아웃바운드인 WARP 지원 (TUN 인터페이스 없음) + WARP+ 지원
- Xray를 통한 Tor SOCKS5 프록시 및
.onion 라우팅
- 연결 테스트, 워치독(watchdog), 바로 붙여넣을 수 있는 Xray 설정 스니펫 제공
sudo bash <(curl -Ls https://github.com/DigneZzZ/remnawave-scripts/raw/main/wtm.sh) @ install-script
sudo wtm
전체 문서: README-warp.md
🐦 NetBird
<div align="center"><img src="https://raw.githubusercontent.com/DigneZzZ/remnawave-scripts/HEAD/assets/preview-netbird.svg" alt="netbird 메뉴" width="640"></div>
NetBird 메시 VPN 설치 프로그램: CLI, cloud-init, 대화형 메뉴, Ansible 모드 지원.
bash <(curl -Ls https://github.com/DigneZzZ/remnawave-scripts/raw/main/netbird.sh) install --key YOUR-SETUP-KEY
전체 문서: README-netbird.md
💾 백업 및 마이그레이션
remnawave backup # 전체 백업(.tar.gz) 또는 --data-only (DB만)
remnawave schedule # cron 스케줄, 보존 기간, Telegram 전송
remnawave restore --file backup.tar.gz
모든 update 전에 안전한 스냅샷(DB 덤프 + 설정 파일)이 backups/pre-update-* 아래에 생성됩니다. 복원 시 패널 버전 호환성이 확인됩니다.
<details>
<summary><b>🚚 서버 마이그레이션 및 수동 복구</b></summary>
자동화가 실패할 경우 — 수동 DB 복구:
sudo remnawave down
cat database.sql | docker exec -i -e PGPASSWORD="password" remnawave-db psql -U postgres -d postgres
sudo remnawave up
⚠️ 새로운 설치에 DB를 복원할 때는 이전 .env 파일에서 secret을 복사해야 합니다: APP_SECRET (패널 v3 이상) 또는 JWT_AUTH_SECRET+JWT_API_TOKENS_SECRET (v2) — 그렇지 않으면 로그인 시 403 에러가 발생합니다.
</details>
⚙️ 요구 사항 및 보안
OS: Ubuntu 18.04 이상 / Debian 10 이상 / CentOS 7 이상 / AlmaLinux 8 이상 / Fedora 32 이상 / Arch / openSUSE 15 이상 · 최소 사양: CPU 1개, RAM 512 MB · 권장 사양: CPU 2개 이상, RAM 2 GB, SSD
의존성 (자동 설치): Docker + Compose v2, curl, openssl, jq
- 모든 서비스는
127.0.0.1에만 바인딩됩니다; 외부 접근은 자동 SSL을 사용하는 Caddy를 통해 이루어집니다.
- Secret, DB 자격 증명 및 API 토큰은 자동으로 생성됩니다.
- 진단:
remnawave status / logs --follow /