한글 입출력 및 유용한 프로그램이 사전 설치된 KasmVNC 기반의 Webtop
10K+
linuxserver/webtop, kasmvnc + ubuntu-kde 기반으로 생성한 Web 기반의 리눅스 데스크탑 환경입니다.
국내 사용자를 위한 한국어 설정, 유용한 기본 프로그램들이 사전 설치 및 설정되어 있습니다.
amd64(x86-64) 및 arm64(aarch64) 를 지원합니다. 멀티 아키텍처 이미지로 다운로드 하는 서버에 해당되는 아키텍처로 Pull 됩니다.
Noble (24.04) 기반으로 베이스 이미지 전환은 아직 미호환 패키지가 다수 있어, 연말경 전환 검토 예정입니다.
| Base image | Architecture |
|---|---|
| Ubuntu Jammy (22.04) | amd64 |
| Ubuntu Jammy (22.04) | arm64 |
모든 이미지는 Ubuntu KDE 기반입니다. latest 및 yymmdd 형식의 태그로 빌드됩니다.
| Tag | Description |
|---|---|
| latest | Latest build |
| yymmdd | Specific build |
아래 2개의 포트로 서비스됩니다.
지원되는 환경변수 옵션은 아래와 같습니다.
| Variable | Default | Description |
|---|---|---|
| CUSTOM_PORT | 3000 | HTTP 포트 |
| CUSTOM_HTTPS_PORT | 3001 | HTTPS 포트 |
| CUSTOM_USER | abc | HTTP Basic 인증 ID |
| PASSWORD | HTTP Basic 인증 PW (입력 시 HTTP Basic 인증 활성화) | |
| SUBFOLDER | / | Subfolder 형식으로 Reverse proxy 구성 시, 사용할 Subfolder 경로 |
| TITLE | KasmVNC Client | 브라우저 표시 제목 |
| START_DOCKER | true | 컨테이너 내부의 도커(Docker in Docker, DinD) 사용여부 |
| DRINODE | /dev/dri/renderD128 | 오픈소스 드라이버 기반 GPU 사용여부, DRI3 GPU Acceleration 참고 |
| DISABLE_IPV6 | false | IPv6 활성화 여부 |
| DOCKER_MODS | 추가 설정 가능한 Docker mods 항목 | |
| RESET_HOME | false | 컨테이너 재시작 시 홈 디렉토리 초기화 여부 |
| DESKTOP_ICONS | false | 바탕화면에 아이콘 배치여부 |
| TZ | Asia/Seoul | 시간대 |
| LC_ALL | ko_KR.UTF-8 | 사용 언어 (ko_KR.UTF-8 / en_US.UTF-8 등) |
| VIEW_ONLY | false | 보기전용 모드 |
| RESIZE | remote | 스케일링 설정 (off / scale / remote) |
| ENABLE_PERF_STATS | false | 성능정보 표시 |
| ENABLE_WEBRTC | false | WebRTC 사용 |
| ENABLE_WEBP | true | WebP 사용 |
| ENABLE_IME | true | IME 입력 활성화 |
| ENABLE_HIDPI | false | HiDPI 사용 |
| VIDEO_QUALITY | high | 스트리밍 품질 프리셋 (low / medium / high / extreme / lossless) |
| ANTI_ALIASING | dynamic | 안티 앨리어싱 설정 (dynamic / on / off) |
| Type | Variable | Essential | Description |
|---|---|---|---|
| Option | --privileged | ✅ | 컨테이너 내부의 도커(Docker in Docker, DinD) 사용을 위해 필요 |
| Option | --security_opt seccomp:unconfined | ✅ | 컨테이너 내부의 도커(Docker in Docker, DinD) 사용을 위해 필요 |
| Bind Mount | -v ./data:/config | ❌ | 호스트 폴더에 기본 홈 디렉토리 연결 |
| Bind Mount | -v ./docker:/var/lib/docker | ❌ | 호스트 폴더에 DinD 디렉토리 연결 |
| Bind Mount | -v /var/run/docker.sock:/var/run/docker.sock | ❌ | 호스트의 도커 제어가 필요할 경우 설정 |
| Bind Mount | -v ./certificates:/usr/local/share/ca-certificates | ❌ | 사설 인증서 등록이 필요할 경우 사용 |
| Bind Mount | -v /dev/shm:/dev/shm | ✅ | 원활한 사용을 위해 호스트의 Shared memory 공유 |
| Device | --device /dev/dri:/dev/dri | ✅ | 내부에서 GPU를 사용하기 위해 필요 |
docker-compose 기반의 샘플 코드입니다. docker cli로 사용하려면 변환 사이트를 사용하세요.
---
version: '3.5'
services:
webtop:
image: raindev11/webtop:latest
container_name: webtop
hostname: webtop
restart: unless-stopped
privileged: true
security_opt:
- seccomp:unconfined
environment:
- PUID=1000
- PGID=1000
- SUBFOLDER=/
- TITLE=liveLinux
- RESET_HOME=true
- DESKTOP_ICONS=false
- DISABLE_IPV6=true
# HTTP Basic Auth 사용시 ID/PW
#- CUSTOM_USER=abc
#- PASSWORD=abc
volumes:
- './data:/config'
- './docker:/var/lib/docker'
# 사설 인증서 등록 필요시 사용
- './certificates:/usr/local/share/ca-certificates'
# 호스트 도커연동 제외
#- '/var/run/docker.sock:/var/run/docker.sock'
# Shared Memory는 호스트와 연동하여 사용
- '/dev/shm:/dev/shm'
ports:
- 3000:3000
- 3001:3001
devices:
- /dev/dri:/dev/dri
networks:
- private
networks:
private:
name: private
Advanced → Custom Nginx Configuration 항목에서 설정proxy_pass http://webtop:3000; 은 Nginx/NPM이 동일 네트워크로 연결된 겅우이며,
동일 네트워크가 아닌 경우 proxy_pass http://127.0.0.1:(호스트 매핑포트); 로 변경하여 적용 필요location / {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Cookie "";
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Cross-Origin-Embedder-Policy' 'require-corp';
add_header 'Cross-Origin-Opener-Policy' 'same-origin';
add_header 'Cross-Origin-Resource-Policy' 'same-site';
proxy_pass http://webtop:3000;
proxy_buffering off;
}
location /websockify {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Cookie "";
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Cross-Origin-Embedder-Policy' 'require-corp';
add_header 'Cross-Origin-Opener-Policy' 'same-origin';
add_header 'Cross-Origin-Resource-Policy' 'same-site';
proxy_pass http://webtop:3000;
proxy_buffering off;
}
| 항목 | 명칭 | 초기설정 내용 |
|---|---|---|
| 브라우저 | Brave | 한글 언어팩 적용, 우클릭 차단 확장 사전설치 |
| 텍스트 편집기 | VSCode | 한글 언어팩 적용 Docker, Indent-rainbow, Typora 확장 사전설치 |
| 오피스 | LibreOffice | StopBegging 확장 사전설치 |
| 원격접속 | Remmina | 기본 설정 |
| 가상화 | Docker/compose | |
| 네트워크 | Wireshark | 기본 설정 |
| 파일 탐색기 | Double Commander | 기본 설정 |
| 압축 | Ark | |
| 동영상 뷰어 | VLC | 기본 설정 |
| 이미지 뷰어 | Gwenview | 기본 설정 |
| 화면 녹화 | OBS Studio | 기본 설정 |
| 화면 캡쳐 | Spetacle |
보안 및 어플리케이션 정기 업데이트는 업데이트는 매주 일요일 새벽 3시에 진행됩니다.
비정기 업데이트는 수시로 진행될 수 있습니다.
Content type
Image
Digest
sha256:f74bc1d89…
Size
1.8 GB
Last updated
3 months ago
docker pull raindev11/webtop