Remmina (#155)
* (nits) * add hardware encoding support for Intel QSV via VAAPI * automate RENDER_GID env var * add remmina * remmina: github CI
This commit is contained in:
parent
87082bb978
commit
12c92cb55a
20
.docker/remmina/Dockerfile
Normal file
20
.docker/remmina/Dockerfile
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
ARG BASE_IMAGE=m1k1o/neko:base
|
||||||
|
FROM $BASE_IMAGE
|
||||||
|
|
||||||
|
# install remmina
|
||||||
|
RUN set -eux; apt-get update; \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
remmina-plugin-rdp remmina-plugin-vnc \
|
||||||
|
# remmina-plugin-x2go # not in bullseye
|
||||||
|
remmina-plugin-spice remmina-plugin-nx; \
|
||||||
|
# clean up
|
||||||
|
apt-get clean -y; \
|
||||||
|
rm -rf /var/lib/apt/lists/* /var/cache/apt/*
|
||||||
|
|
||||||
|
# copy configuation files
|
||||||
|
COPY supervisord.conf /etc/neko/supervisord/remmina.conf
|
||||||
|
COPY --chown=neko remmina.pref /home/neko/.config/remmina/remmina.pref
|
||||||
|
COPY --chown=neko rdp.remmina spice.remmina vnc.remmina /home/neko/.local/share/remmina/
|
||||||
|
COPY run-remmina.sh /usr/bin/run-remmina.sh
|
||||||
|
ENV REMMINA_URL=
|
||||||
|
ENV REMMINA_PROFILE=
|
90
.docker/remmina/rdp.remmina
Normal file
90
.docker/remmina/rdp.remmina
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
[remmina]
|
||||||
|
password=
|
||||||
|
gateway_username=
|
||||||
|
notes_text=
|
||||||
|
vc=
|
||||||
|
preferipv6=0
|
||||||
|
ssh_tunnel_loopback=0
|
||||||
|
serialname=
|
||||||
|
sound=local
|
||||||
|
printer_overrides=
|
||||||
|
name=rdpdefault
|
||||||
|
console=0
|
||||||
|
colordepth=99
|
||||||
|
security=
|
||||||
|
precommand=
|
||||||
|
disable_fastpath=0
|
||||||
|
left-handed=0
|
||||||
|
postcommand=
|
||||||
|
multitransport=0
|
||||||
|
group=
|
||||||
|
server=
|
||||||
|
ssh_tunnel_certfile=
|
||||||
|
glyph-cache=0
|
||||||
|
ssh_tunnel_enabled=0
|
||||||
|
disableclipboard=0
|
||||||
|
audio-output=
|
||||||
|
parallelpath=
|
||||||
|
monitorids=
|
||||||
|
cert_ignore=0
|
||||||
|
gateway_server=
|
||||||
|
serialpermissive=0
|
||||||
|
protocol=RDP
|
||||||
|
old-license=0
|
||||||
|
ssh_tunnel_password=
|
||||||
|
resolution_mode=2
|
||||||
|
pth=
|
||||||
|
loadbalanceinfo=
|
||||||
|
disableautoreconnect=0
|
||||||
|
clientname=
|
||||||
|
clientbuild=
|
||||||
|
resolution_width=0
|
||||||
|
drive=
|
||||||
|
relax-order-checks=0
|
||||||
|
username=
|
||||||
|
base-cred-for-gw=0
|
||||||
|
gateway_domain=
|
||||||
|
network=none
|
||||||
|
rdp2tcp=
|
||||||
|
gateway_password=
|
||||||
|
serialdriver=
|
||||||
|
domain=
|
||||||
|
profile-lock=0
|
||||||
|
rdp_reconnect_attempts=
|
||||||
|
restricted-admin=0
|
||||||
|
multimon=0
|
||||||
|
exec=
|
||||||
|
smartcardname=
|
||||||
|
serialpath=
|
||||||
|
enable-autostart=0
|
||||||
|
usb=
|
||||||
|
shareprinter=0
|
||||||
|
ssh_tunnel_passphrase=
|
||||||
|
shareparallel=0
|
||||||
|
disablepasswordstoring=0
|
||||||
|
quality=0
|
||||||
|
span=0
|
||||||
|
parallelname=
|
||||||
|
ssh_tunnel_auth=0
|
||||||
|
keymap=
|
||||||
|
ssh_tunnel_username=
|
||||||
|
execpath=
|
||||||
|
shareserial=0
|
||||||
|
resolution_height=0
|
||||||
|
timeout=
|
||||||
|
useproxyenv=0
|
||||||
|
sharesmartcard=0
|
||||||
|
freerdp_log_filters=
|
||||||
|
microphone=
|
||||||
|
dvc=
|
||||||
|
ssh_tunnel_privatekey=
|
||||||
|
gwtransp=http
|
||||||
|
ssh_tunnel_server=
|
||||||
|
ignore-tls-errors=1
|
||||||
|
disable-smooth-scrolling=0
|
||||||
|
gateway_usage=0
|
||||||
|
websockets=0
|
||||||
|
freerdp_log_level=INFO
|
||||||
|
window_maximize=1
|
||||||
|
scale=1
|
||||||
|
viewmode=4
|
103
.docker/remmina/remmina.pref
Normal file
103
.docker/remmina/remmina.pref
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
[remmina_pref]
|
||||||
|
secret=Jsh7BJPwHqLCKi2vdkMAImSgdBVZGF6s8VbUPY3Q9WA=
|
||||||
|
datadir_path=
|
||||||
|
remmina_file_name=%G_%P_%N_%h
|
||||||
|
screenshot_path=
|
||||||
|
screenshot_name=
|
||||||
|
deny_screenshot_clipboard=true
|
||||||
|
save_view_mode=true
|
||||||
|
use_master_password=false
|
||||||
|
unlock_timeout=0
|
||||||
|
unlock_password=
|
||||||
|
trust_all=true
|
||||||
|
floating_toolbar_placement=0
|
||||||
|
toolbar_placement=3
|
||||||
|
prevent_snap_welcome_message=true
|
||||||
|
last_quickconnect_protocol=
|
||||||
|
fullscreen_on_auto=true
|
||||||
|
always_show_tab=false
|
||||||
|
hide_connection_toolbar=true
|
||||||
|
hide_searchbar=true
|
||||||
|
default_action=0
|
||||||
|
scale_quality=3
|
||||||
|
ssh_loglevel=1
|
||||||
|
ssh_parseconfig=true
|
||||||
|
hide_toolbar=true
|
||||||
|
small_toolbutton=true
|
||||||
|
view_file_mode=0
|
||||||
|
resolutions=640x480,800x600,1024x768,1152x864,1280x960,1400x1050
|
||||||
|
keystrokes=
|
||||||
|
main_width=600
|
||||||
|
main_height=400
|
||||||
|
main_maximize=true
|
||||||
|
main_sort_column_id=1
|
||||||
|
main_sort_order=0
|
||||||
|
expanded_group=
|
||||||
|
toolbar_pin_down=false
|
||||||
|
sshtunnel_port=4732
|
||||||
|
ssh_tcp_keepidle=20
|
||||||
|
ssh_tcp_keepintvl=10
|
||||||
|
ssh_tcp_keepcnt=3
|
||||||
|
ssh_tcp_usrtimeout=60000
|
||||||
|
applet_new_ontop=false
|
||||||
|
applet_hide_count=true
|
||||||
|
applet_enable_avahi=false
|
||||||
|
disable_tray_icon=true
|
||||||
|
dark_tray_icon=false
|
||||||
|
recent_maximum=10
|
||||||
|
default_mode=3
|
||||||
|
tab_mode=0
|
||||||
|
fullscreen_toolbar_visibility=2
|
||||||
|
auto_scroll_step=10
|
||||||
|
hostkey=65508
|
||||||
|
shortcutkey_fullscreen=
|
||||||
|
shortcutkey_autofit=
|
||||||
|
shortcutkey_nexttab=
|
||||||
|
shortcutkey_prevtab=
|
||||||
|
shortcutkey_scale=
|
||||||
|
shortcutkey_grab=65508
|
||||||
|
shortcutkey_viewonly=109
|
||||||
|
shortcutkey_screenshot=
|
||||||
|
shortcutkey_minimize=65478
|
||||||
|
shortcutkey_disconnect=65473
|
||||||
|
shortcutkey_toolbar=116
|
||||||
|
vte_font=
|
||||||
|
vte_allow_bold_text=true
|
||||||
|
vte_lines=512
|
||||||
|
|
||||||
|
[ssh_colors]
|
||||||
|
background=#d5ccba
|
||||||
|
cursor=#45373c
|
||||||
|
bold=#45373c
|
||||||
|
foreground=#45373c
|
||||||
|
color0=#20111b
|
||||||
|
color1=#be100e
|
||||||
|
color2=#858162
|
||||||
|
color3=#eaa549
|
||||||
|
color4=#426a79
|
||||||
|
color5=#97522c
|
||||||
|
color6=#989a9c
|
||||||
|
color7=#968c83
|
||||||
|
color8=#5e5252
|
||||||
|
color9=#be100e
|
||||||
|
color10=#858162
|
||||||
|
color11=#eaa549
|
||||||
|
color12=#426a79
|
||||||
|
color13=#97522c
|
||||||
|
color14=#989a9c
|
||||||
|
color15=#d5ccba
|
||||||
|
|
||||||
|
[usage_stats]
|
||||||
|
periodic_usage_stats_permitted=false
|
||||||
|
periodic_usage_stats_last_sent=0
|
||||||
|
periodic_usage_stats_uuid_prefix=
|
||||||
|
|
||||||
|
[remmina_news]
|
||||||
|
periodic_news_permitted=false
|
||||||
|
periodic_rmnews_last_get=0
|
||||||
|
periodic_rmnews_get_count=1
|
||||||
|
periodic_rmnews_uuid_prefix=
|
||||||
|
|
||||||
|
[remmina]
|
||||||
|
name=
|
||||||
|
ignore-tls-errors=1
|
45
.docker/remmina/run-remmina.sh
Executable file
45
.docker/remmina/run-remmina.sh
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -u
|
||||||
|
|
||||||
|
err() {
|
||||||
|
echo "ERROR: $*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
profile_dir="/home/neko/.local/share/remmina"
|
||||||
|
if [[ -n "$REMMINA_PROFILE" ]]; then
|
||||||
|
profile=${REMMINA_PROFILE%.remmina}.remmina
|
||||||
|
file=${profile##/*/}
|
||||||
|
[[ "$file" = "$profile" ]] && profile="$profile_dir"/"$file"
|
||||||
|
[[ -f "$profile" ]] || err "Connection profile $profile not found"
|
||||||
|
echo "Running remmina with connection profile $profile"
|
||||||
|
exec remmina -c "$profile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -z "$REMMINA_URL" ]] && err "Neither `REMMINA_PROFILE` nor `REMMINA_URL` found in env vars"
|
||||||
|
|
||||||
|
readarray -t arr < <( echo -n "$REMMINA_URL" | perl -pe 's|^(\w+\:\/\/)?(\w*:)?(.+@)?([^:]+)(:\d+)?$|\1\n\2\n\3\n\4\n\5|' )
|
||||||
|
proto=$(echo "${arr[0]}" | cut -d: -f1)
|
||||||
|
user=$(echo "${arr[1]}" | cut -d: -f1)
|
||||||
|
pw=$(echo "${arr[2]}" | cut -d@ -f1)
|
||||||
|
host="${arr[3]}"
|
||||||
|
# port=$(echo "${arr[4]}" | cut -d: -f2)
|
||||||
|
port="${arr[4]}" #keep the :
|
||||||
|
echo "Parsed url in `REMMINA_URL`: proto:$proto username:$user host:$host port:$port"
|
||||||
|
|
||||||
|
[[ "$proto" != "vnc" && "$proto" != "rdp" && "$proto" != "spice" ]] && err "Unsupported protocol $proto in connection url `REMMINA_URL`"
|
||||||
|
|
||||||
|
profile="$profile_dir"/"$proto".remmina
|
||||||
|
if [[ -n "$pw" ]]; then
|
||||||
|
encpw=$(echo "$pw" | remmina --encrypt-password | grep Encrypted | sed 's/Encrypted password: //')
|
||||||
|
remmina --set-option password="$encpw" --update-profile "$profile"
|
||||||
|
else
|
||||||
|
remmina --set-option password= --update-profile "$profile"
|
||||||
|
fi
|
||||||
|
remmina --set-option username="$user" --update-profile "$profile"
|
||||||
|
remmina --set-option server="$host$port" --update-profile "$profile"
|
||||||
|
|
||||||
|
# remmina --set-option window_maximize=1 --update-profile "$profile"
|
||||||
|
# remmina --set-option scale=1 --update-profile "$profile"
|
||||||
|
|
||||||
|
exec remmina -c "$profile"
|
33
.docker/remmina/spice.remmina
Normal file
33
.docker/remmina/spice.remmina
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
[remmina]
|
||||||
|
disablegstvideooverlay=0
|
||||||
|
disablepasswordstoring=0
|
||||||
|
sharesmartcard=0
|
||||||
|
videocodec=0
|
||||||
|
ssh_tunnel_password=
|
||||||
|
postcommand=
|
||||||
|
server=
|
||||||
|
name=spicedefault
|
||||||
|
ssh_tunnel_enabled=0
|
||||||
|
profile-lock=0
|
||||||
|
enable-autostart=0
|
||||||
|
imagecompression=0
|
||||||
|
password=
|
||||||
|
precommand=
|
||||||
|
disableclipboard=0
|
||||||
|
group=
|
||||||
|
ssh_tunnel_certfile=
|
||||||
|
protocol=SPICE
|
||||||
|
enableaudio=1
|
||||||
|
viewonly=0
|
||||||
|
ssh_tunnel_server=
|
||||||
|
ssh_tunnel_loopback=0
|
||||||
|
ssh_tunnel_auth=0
|
||||||
|
ignore-tls-errors=1
|
||||||
|
ssh_tunnel_username=
|
||||||
|
ssh_tunnel_passphrase=
|
||||||
|
ssh_tunnel_privatekey=
|
||||||
|
notes_text=
|
||||||
|
usetls=0
|
||||||
|
window_maximize=1
|
||||||
|
scale=1
|
||||||
|
viewmode=4
|
12
.docker/remmina/supervisord.conf
Normal file
12
.docker/remmina/supervisord.conf
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
[program:remmina]
|
||||||
|
environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
|
||||||
|
command=/usr/bin/run-remmina.sh
|
||||||
|
stopsignal=INT
|
||||||
|
autorestart=true
|
||||||
|
priority=500
|
||||||
|
user=%(ENV_USER)s
|
||||||
|
stdout_logfile=/var/log/neko/remmina.log
|
||||||
|
stdout_logfile_maxbytes=100MB
|
||||||
|
stdout_logfile_backups=10
|
||||||
|
redirect_stderr=true
|
49
.docker/remmina/vnc.remmina
Normal file
49
.docker/remmina/vnc.remmina
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
[remmina]
|
||||||
|
encodings=
|
||||||
|
videocodec=0
|
||||||
|
name=temp eos
|
||||||
|
ssh_tunnel_server=
|
||||||
|
ssh_tunnel_privatekey=
|
||||||
|
password=
|
||||||
|
quality=0
|
||||||
|
disablesmoothscrolling=0
|
||||||
|
enableaudio=1
|
||||||
|
precommand=
|
||||||
|
disablegstvideooverlay=0
|
||||||
|
ssh_tunnel_enabled=0
|
||||||
|
sharesmartcard=0
|
||||||
|
imagecompression=0
|
||||||
|
ssh_tunnel_passphrase=
|
||||||
|
ssh_tunnel_password=
|
||||||
|
usetls=0
|
||||||
|
viewonly=0
|
||||||
|
disableserverinput=0
|
||||||
|
depth_profile=0
|
||||||
|
postcommand=
|
||||||
|
tightencoding=0
|
||||||
|
disablepasswordstoring=0
|
||||||
|
lossy_encoding=0
|
||||||
|
ignore-tls-errors=1
|
||||||
|
gvncdebug=0
|
||||||
|
ssh_tunnel_username=
|
||||||
|
server=
|
||||||
|
disableclipboard=0
|
||||||
|
disableserverbell=0
|
||||||
|
profile-lock=0
|
||||||
|
enable-autostart=0
|
||||||
|
window_maximize=1
|
||||||
|
scale=1
|
||||||
|
disableencryption=0
|
||||||
|
ssh_tunnel_auth=0
|
||||||
|
group=
|
||||||
|
ssh_tunnel_loopback=0
|
||||||
|
showcursor=1
|
||||||
|
viewmode=4
|
||||||
|
notes_text=
|
||||||
|
keymap=
|
||||||
|
colordepth=32
|
||||||
|
proxy=
|
||||||
|
protocol=VNC
|
||||||
|
ssh_tunnel_certfile=
|
||||||
|
shared=0
|
||||||
|
username=
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -48,7 +48,7 @@ jobs:
|
|||||||
needs: [ build-base ]
|
needs: [ build-base ]
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
tags: [ firefox, chromium, google-chrome, ungoogled-chromium, microsoft-edge, brave, tor-browser, vncviewer, vlc, xfce ]
|
tags: [ firefox, chromium, google-chrome, ungoogled-chromium, microsoft-edge, brave, tor-browser, vncviewer, remmina, vlc, xfce ]
|
||||||
env:
|
env:
|
||||||
DOCKER_TAG: ${{ matrix.tags }}
|
DOCKER_TAG: ${{ matrix.tags }}
|
||||||
steps:
|
steps:
|
||||||
|
2
.github/workflows/tags.yml
vendored
2
.github/workflows/tags.yml
vendored
@ -81,6 +81,8 @@ jobs:
|
|||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
- tag: vncviewer
|
- tag: vncviewer
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
|
- tag: remmina
|
||||||
|
platforms: linux/amd64
|
||||||
- tag: vlc
|
- tag: vlc
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
- tag: xfce
|
- tag: xfce
|
||||||
|
Reference in New Issue
Block a user