Ubuntu·Debian에서는 deb를, Fedora 등 dnf를 사용하는 시스템에서는 rpm을 우선 선택하세요. 독립 실행 파일로 관리하려면 AppImage를 고려할 수 있습니다. 이 글에서는 시스템과 프로세서 아키텍처 확인부터 로컬 패키지 설치, 실행 권한 설정, 첫 실행 및 연결 확인까지 설명합니다. 아래 내용은 서비스 제공업체에서 구독을 이미 받은 경우를 전제로 합니다. 설치를 마쳐도 네트워크 연결 설정까지 완료된 것은 아닙니다.
1. 배포판·아키텍처·설치 패키지 확인
Shadowrocket Linux 버전은 무료입니다. 사이트 다운로드 페이지의 Linux 섹션에서 설치 패키지를 선택하세요. deb, rpm, AppImage는 배포 형식이 다를 뿐, 서로 다른 구독을 의미하지 않습니다. 파일 확장자만으로 현재 프로세서에 맞는 패키지인지 판단할 수도 없습니다. 다운로드 전에 배포판, 패키지 아키텍처, 페이지에 표시된 실행 요구 사항을 모두 확인하세요.
먼저 터미널을 열고 아래 두 명령어를 실행하세요. /etc/os-release는 배포판을 확인하고, uname -m은 현재 실행 중인 커널의 아키텍처를 표시합니다. 흔히 쓰이는 x86_64와 aarch64는 서로 호환되지 않습니다. 패키지 관리자에서는 각각 amd64 또는 arm64로 표기할 수도 있습니다.
cat /etc/os-release
uname -m
- Ubuntu, Debian 및 호환 배포판: deb를 우선 선택하고 apt로 로컬 파일을 설치하세요. 패키지 관리자가 의존성을 처리합니다.
- Fedora 등 dnf를 사용하는 배포판: rpm을 우선 선택하고 dnf로 설치하세요. 확장자가 같다는 이유만으로 모든 RPM 계열 배포판이 같은 패키지와 호환된다고 가정하지 마세요.
- 그 밖의 데스크톱 배포판: AppImage의 아키텍처와 실행 환경 요구 사항을 확인할 수 있습니다. AppImage라고 해서 모든 Linux 환경에서 실행되는 것은 아닙니다.
2. apt로 로컬 deb 파일 설치
아래 명령어는 Bash에서 실행합니다. 다운로드한 deb 파일을 찾기 쉬운 위치에 둔 다음, 파일 관리자의 속성 보기 등을 이용해 전체 절대 경로를 확인하세요. 경로를 입력할 때 따옴표를 덧붙이지 말고, 브라우저의 다운로드 링크를 로컬 경로로 사용하지 마세요. 명령어의 변수 참조가 경로에 포함된 공백을 처리합니다.
read -r -p "deb 파일의 전체 절대 경로를 붙여 넣으세요: " pkg
test -f "$pkg" && sudo apt install "$pkg"
apt install 뒤에 로컬 파일 경로를 지정하면 소프트웨어 저장소에서 같은 이름의 앱을 검색하는 대신 해당 파일을 설치합니다. 절대 경로를 사용하면 현재 디렉터리가 달라 파일을 찾지 못하는 문제를 피할 수 있습니다. 터미널에서 비밀번호를 요구하면 현재 Linux 사용자의 인증 비밀번호를 입력하세요. 입력하는 동안 문자가 표시되지 않는 것이 일반적입니다.
-
파일 확인
다운로드 페이지에서 deb를 선택한 뒤 브라우저 다운로드가 완료될 때까지 기다리세요. 파일이 다운로드 중인 임시 파일이 아닌지, 페이지에 표시된 아키텍처와 일치하는지 확인하세요.
-
설치 실행
전체 경로를 터미널 프롬프트에 붙여 넣고 Enter를 누르세요. apt가 표시하는 설치·업그레이드·삭제 항목을 확인한 다음 진행을 승인하세요.
-
의존성 문제 해결
의존성을 충족할 수 없다는 메시지가 표시되면 먼저
sudo apt update를 실행한 다음 원래 설치 명령을 다시 실행하세요. 그래도 실패하면 누락된 의존성 이름을 확인하고, 의존성을 무시하지 마세요. -
첫 실행
설치가 완료되면 데스크톱 앱 메뉴에서 Shadowrocket을 검색해 일반 사용자로 실행하세요. 메뉴가 바로 갱신되지 않으면 데스크톱에서 로그아웃한 뒤 다시 로그인하여 확인하세요.
패키지 아키텍처가 맞지 않는다는 메시지가 표시되면 강제 설치 옵션을 쓰지 말고 다운로드 페이지에서 올바른 패키지를 다시 선택하세요. 라이브러리 버전이 너무 낮다는 메시지가 표시될 경우, 저장소를 새로 고쳐도 해결되지 않을 수 있습니다. 현재 배포판의 시스템 라이브러리가 요구 사항을 충족하지 못할 수도 있습니다. 지원 환경을 확인하고, 앱 하나를 설치하려고 시스템 핵심 라이브러리를 임의로 교체하지 마세요.
3. dnf로 로컬 rpm 파일 설치
dnf를 사용하는 시스템에서도 deb 설치와 마찬가지로, 다운로드한 로컬 파일을 명시해 배포판의 패키지 관리자가 의존성을 처리하도록 합니다. 아래 명령어에서도 절대 경로를 사용합니다. 파일 이름을 바꿀 필요는 없으며, 다운로드된 파일 이름을 미리 가정하지 않습니다.
read -r -p "rpm 파일의 전체 절대 경로를 붙여 넣으세요: " pkg
test -f "$pkg" && sudo dnf install "$pkg"
- 확인 목록이 표시되는 경우: 의존성 출처와 작업 내용을 살펴보세요. 중요한 데스크톱 구성 요소가 예기치 않게 제거되지 않는지 확인한 뒤 계속 진행하세요.
- 의존성을 찾을 수 없다는 메시지가 표시되는 경우: 먼저 현재 시스템의 소프트웨어 저장소가 정상인지 확인하세요.
sudo dnf makecache --refresh를 실행해 메타데이터를 새로 고친 다음 설치를 다시 시도할 수 있습니다. - 아키텍처 또는 배포판이 호환되지 않는다는 메시지가 표시되는 경우: 설치를 중단하고 다운로드 페이지의 요구 사항을 확인하세요. 의존성 검사를 건너뛰거나 시스템 파일을 강제로 교체해 오류를 우회하지 마세요.
- 무결성·서명·신뢰 관련 오류가 표시되는 경우: 오류 메시지를 그대로 보관하고, 파일이 이 사이트의 다운로드 절차를 통해 받은 것인지 확인한 뒤 다시 다운로드하세요. 패키지 관리자의 보안 검사를 바로 비활성화하지 마세요.
설치가 완료되었다는 것은 패키지 파일과 의존성이 시스템에 기록되었다는 뜻일 뿐, 프록시가 활성화되었다는 뜻은 아닙니다. 먼저 앱 메뉴에서 Shadowrocket을 실행한 뒤 구독을 가져오고 연결을 설정하세요. 문제를 해결할 때는 ‘앱 설치 실패’와 ‘설치 성공 후 요청 실패’를 구분하세요. 실제 네트워크 문제를 놓친 채 앱을 반복해서 재설치하는 일을 줄일 수 있습니다.
4. AppImage에 실행 권한을 추가해 실행
AppImage는 보통 apt나 dnf에 시스템 패키지로 등록하지 않고 독립 파일로 실행합니다. 먼저 파일을 개인 디렉터리의 고정된 위치로 옮긴 다음 실행 권한을 추가하는 것이 좋습니다. 브라우저의 임시 다운로드 폴더에서 계속 실행하면 다운로드 파일을 정리할 때 프로그램도 함께 삭제될 수 있습니다.
read -r -p "AppImage 파일의 전체 절대 경로를 붙여 넣으세요: " app
if test -f "$app"; then
chmod u+x "$app" && "$app"
fi
chmod u+x는 파일 소유자에게만 실행 권한을 추가합니다. 다음 명령어는 해당 파일을 직접 실행합니다. 일반적인 실행에는 앞에 sudo를 붙일 필요가 없습니다. 그래픽 데스크톱에서 반응이 없으면 반복해서 두 번 클릭하기보다 터미널 창의 오류 출력을 확인하는 편이 원인을 파악하기 쉽습니다.
파일 실행 조건
- 실행 권한
chmod u+x로 추가- 파일 위치
- 개인 디렉터리의 안정적인 위치에 보관
- 프로세서 아키텍처
- 다운로드 페이지 표시 내용 및 기기 아키텍처와 일치
- 실행 사용자
- 일반 데스크톱 사용자로 실행
독립 파일도 호스트 시스템의 호환 환경에 의존합니다.
자주 발생하는 오류 단서
- Permission denied
- 실행 권한 및 마운트 옵션 확인
- Exec format error
- 아키텍처와 파일이 온전한지 우선 확인
- FUSE 관련 오류
- 배포판에 맞는 실행 구성 요소 확인
- 공유 라이브러리 누락
- 실행 요구 사항 및 시스템 라이브러리 버전 확인
오류 내용에 따라 해결하세요. 진단 대신 앱 전체의 권한을 높이지 마세요.
파일이 noexec 마운트 옵션이 설정된 파티션에 있으면 실행 권한을 추가했더라도 시작하지 못할 수 있습니다. 실행이 허용된 개인 디렉터리로 파일을 옮긴 뒤 다시 시도하세요. FUSE 관련 구성 요소의 이름은 배포판마다 다르므로 먼저 시스템의 패키지 정보를 확인하세요. 다른 배포판의 설치 명령을 그대로 복사해 사용하지 마세요.
5. 첫 실행 후 구독을 가져오고 라우팅 확인
먼저 앱 창이 정상적으로 표시되는지 확인한 다음 네트워크를 설정하세요. 구독 링크는 서비스 제공업체에서 받아 민감한 정보로 안전하게 보관하세요. 해당 메뉴가 있다면 Home 오른쪽 위의 ‘+’를 누르고 Type을 Subscribe로 설정한 뒤 링크를 입력해 저장하고 구독을 업데이트하세요. 데스크톱 화면 구성이 모바일과 다를 수 있으므로 현재 화면에 표시된 메뉴를 기준으로 진행하세요.
가져온 뒤 목록에 예상한 항목이 표시되는지 확인하고, 기존 항목 하나를 선택해 연결하세요. 구독 이름만 보인다고 업데이트가 성공한 것은 아닙니다. 목록이 비어 있으면 먼저 구독 요청 오류를 해결하세요. Config의 구성 파일과 Home의 서버 항목은 서로 다른 객체입니다. 서버를 가져왔다고 해서 규칙이 사용 목적에 맞게 설정되는 것은 아닙니다.
Config
권장현재 선택한 구성 파일에 따라 가로채진 요청을 처리합니다. 규칙은 위에서 아래로 적용되며, 프록시 또는 직접 연결 여부는 일치한 규칙과 정책에 따라 결정됩니다. 특정 지역을 기준으로 고정되는 것이 아닙니다.
적합한 경우: 구성 파일을 확인한 뒤 일상적인 라우팅에 사용
Proxy
가로채진 요청을 프록시 경로로 보냅니다. Config 설정과 잠시 비교할 때 유용합니다. 원래 프록시 대상이 아닌 앱 트래픽까지 자동으로 가로채지는 않습니다.
적합한 경우: 프록시 연결 문제와 규칙 매칭 문제를 구분
Direct
가로채진 요청을 직접 연결 경로로 보냅니다. 전환 후 동일한 대상과 동일한 앱으로 테스트해야 직접 연결과 프록시 경로의 차이를 확인하기 쉽습니다.
적합한 경우: 잠시 직접 연결 결과와 비교
아래 세 줄의 의미를 확인하는 것부터 규칙을 점검할 수 있습니다. 문법 예시일 뿐 완전한 구성 파일은 아닙니다. PROXY는 현재 구성에서 유효한 정책과 연결되어 있어야 합니다. 이 예시를 기존 구성 파일에 그대로 덮어쓰거나, 실제 웹사이트가 어떤 경로를 사용해야 하는지 판단하는 근거로 삼지 마세요.
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
FINAL,PROXY
DOMAIN-SUFFIX: 지정된 도메인 접미사와 일치시킵니다. 예시 도메인은 문법 설명에만 사용됩니다.IP-CIDR: 대상 IP 대역을 기준으로 일치시킵니다. 예시 범위는 사설 IP 주소 대역입니다.FINAL: 앞선 규칙에 모두 일치하지 않을 때 적용되는 최종 정책입니다. 규칙의 마지막에 배치해야 합니다.
Linux에서는 ‘프록시 앱이 실행 중인 상태’와 ‘대상 앱이 프록시를 사용하는 상태’를 구분해야 합니다. 앱이 시스템 트래픽을 가로채는지, 브라우저나 터미널에 별도로 설정해야 하는지는 현재 활성화된 네트워크 모드에 따라 달라집니다. 화면에 로컬 수신 주소와 포트가 표시되면 실제 값을 입력하세요. 포트가 특정 숫자로 고정되어 있다고 가정하면 안 됩니다.
6. 설치 후 자주 발생하는 문제
AppImage를 두 번 클릭해도 반응이 없어요. 다시 설치해야 하나요?
먼저 4절의 방법대로 터미널에서 실행해 오류 출력을 확인하세요. Permission denied가 표시되면 실행 권한과 noexec 설정을 확인하세요. FUSE 또는 공유 라이브러리 오류라면 배포판에 맞게 실행 구성 요소를 확인하세요. 오류 메시지를 확인하기 전에는 다운로드 패키지 문제라고 단정하지 마세요.
처음 실행할 때 시스템 권한 요청이 표시됩니다. 무엇을 눌러야 하나요?
먼저 권한을 요청한 앱과 작업 내용을 확인하세요. 패키지 설치 중 관리자 권한을 요청하는 것과 실행 중 네트워크 설정을 변경하는 권한 요청은 서로 다릅니다. 방금 실행한 작업과 요청 내용이 일치할 때만 승인하세요. 메시지를 없애려고 그래픽 앱 전체를 계속 root 권한으로 실행하지 마세요.
브라우저에서는 웹페이지가 열리지만 터미널 요청은 실패하나요?
터미널이 여전히 직접 연결을 사용 중인지, 이전 프록시 환경 변수가 남아 있는지 확인하세요. env | grep -i proxy를 실행해 현재 수신 주소 및 포트와 비교할 수 있습니다. HTTP 프록시와 SOCKS 프록시는 유형이 다르므로 서로 바꿔 입력하면 안 됩니다. 변경한 뒤에는 같은 터미널 세션에서 다시 테스트하세요.
구독 업데이트에 실패하면 설치 패키지 형식을 바꿔야 하나요?
먼저 형식을 바꿀 필요는 없습니다. 구독 링크가 완전한지, 만료되지 않았는지, 현재 네트워크에서 구독 주소에 접속할 수 있는지 확인하세요. 그런 다음 서비스 제공업체에 응답 내용을 문의하세요. 오류를 기록할 때는 링크의 token 등 인증 정보를 가려 전체 구독 주소가 스크린샷이나 로그에 노출되지 않게 하세요.
확인할 때는 한 번에 조건 하나만 바꾸세요. 같은 브라우저와 같은 주소를 사용해 Direct를 먼저 테스트하고, 이어 Proxy를 테스트한 뒤 Config에서 규칙을 확인합니다. 브라우저에서는 성공하지만 터미널에서 실패한다면 먼저 앱별 프록시 설정 차이를 확인하세요. 둘 다 실패하면 재설치를 반복하기보다 연결 상태, DNS, 서비스 제공업체가 제공한 구성을 계속 점검하세요.
7. 업데이트 및 제거 시 유의 사항
로컬 deb 또는 rpm으로 설치했다고 해서 시스템이 앱 업데이트 저장소를 자동으로 구독하는 것은 아닙니다. 새 설치 패키지를 받을 때는 이 사이트의 다운로드 페이지를 다시 확인하고, 앱을 종료한 뒤 해당 방식으로 설치하세요. AppImage는 독립 파일로 보관합니다. 교체하기 전에 기존 프로세스를 종료하고, 데스크톱 바로 가기가 이전 경로를 계속 가리키지 않는지 확인하세요.
- 업데이트 전: 개인 구성을 백업하고 구독 정보를 안전하게 보관하세요. 패키지 관리자가 프로그램 파일을 업데이트해도 개인 구성까지 백업되는 것은 아닙니다.
- deb/rpm 제거: 그래픽 소프트웨어 관리자의 설치된 앱 목록에서 패키지 이름을 확인한 뒤 제거하세요. 앱에 표시되는 이름만 보고 시스템 패키지 이름을 추측하지 마세요.
- AppImage 제거: 프로세스를 종료한 뒤 해당 파일을 삭제하고, 직접 만든 바로 가기도 확인하세요. 프로그램 파일을 삭제해도 사용자 구성은 함께 삭제되지 않을 수 있습니다.
- 네트워크 설정 복원: 브라우저나 터미널에 로컬 프록시를 수동으로 설정했다면 앱을 종료한 뒤 해당 설정도 원래대로 되돌리세요. 그렇지 않으면 요청이 이미 닫힌 수신 포트로 계속 전송될 수 있습니다.
설치 형식은 배포판, 아키텍처, 관리 방식에 맞춰 선택하세요. 설치 문제는 패키지 관리자나 터미널의 오류 메시지를 확인하고, 연결 문제는 구독, 트래픽 가로채기 범위, 라우팅 설정을 점검하세요. 두 문제 해결 절차를 분리하면 불필요한 재설치를 줄이고 유용한 진단 정보를 보존할 수 있습니다.