Arch Linux es un sistema operativo genérico, es instalable en dispositivos inteligentes, computadoras, laptops, estaciones de trabajo, servidores, datacenters y satélites artificiales geoestacionarios. Realmente es una gran alternativa a los sistemas operativos convencionales como Microsoft Windows o Apple Mac Os. Arch Linux es conocido por su minimalismo, control total y la potente filosofía “Do It Yourself”. Pero con gran poder, viene gran responsabilidad. Es posible que otros sistemas operativos también cumplan mis expectativas pero hoy empezamos por acá.
Introducción: Por Qué Arch Linux y para experimentos raros?
Me refiero a que si leíste el título y seguís leyendo es porque ya tenes una noción de como obtener una instalación limpia de un Linux con un usuario con privilegios de sudoer y conectado mediante NetworkManager. Si no es as, podrías intentar ingeniártelas y resolver ese paso previo hasta llegar a este punto. Yo voy a usar Arch Linux, como dije, no obstante los paquetes de software que instalare son libres y están disponibles en todos los Linux, as que si querés probar de hacerlo a tu modo, bienvenido sea y espero que me dejes tu comentario. Pero, si tenes problemas, arreglatelas como puedas. Ja ja ja, no, mentira: Estoy acá para darte una mano. Comentame tus inquietudes y te responder en brevedad.¿Listo para una aventura de instalación y configuración?

La Base de tu Futura administración remota
Antes de sumergirnos, te comento que hay alternativas pagas de administración remota de servidores, pero en ningún caso te van a asegurar que tengas 100% de satisfacción. Tampoco vas a saber como es el funcionamiento interno porque los sistemas pagos se basan en productos de software “enlatado” y el código fuente no esta disponible a los clientes. Entonces nunca vas a estar tranquilo si se producen fallos o si tus estadísticas y datos críticos no van a ser usados en tu contra.
En esta propuesta alternativa aclaramos que en el universo de los sistemas de Free Software de código abierto, existe una institución con todas las soluciones y se llama X.org y su administración remota es x11vnc que funciona genial y es altamente configurable con múltiples tecnologías. El problema es que utiliza mucha memoria ram y ancho de banda, entonces la administraron remota se dificulta mucho. Entonces te ofrezco esta alternativa, que es muy eficiente y compatible con múltiples software cliente de Android, Windows, Ios y MacOs. Es decir que te podrás conectar a tu servidor desde cualquier lado y con pocos recursos. Los pasos a seguir son:
- instalar Wayland y greetd: Utilizando el gestor de paquetes de cada linux, el de Arch es pacman. Estos paquetes de software son, el motor grafico y el display manager.
- Instalar el gestor de ventanas Sway: Este gestor de ventanas es el que elegí y podría ser cualquier otro gestor de ventanas compatible con Wayland. Lo impresionante de Sway es que es una versión de un antiguo gestor de ventanas que se llamaba I3, que funciona con X.org es decir que Sway tiene un muy buen precedente.
- Conexión a Internet: Es seguro que el servidor con la conexión ya estaba configurada en le instalación limpia. Pero lo que es importante es contar con el gestor de redes NetworkManager porque soporta systemctl.
- Wayvnc: Instalar este servidor del protocolo de administración remota, aunque tiene algunas fallas, la configuración compensará todo. Las fallas fueron reportadas por la comunidad de Linux en distintos foros.
- Clientes vnc probados: RealVnc android, RealVnc Windows, RealVnc iOS y TigerVnc Viewer macOs. El cliente vnc podría estar en la misma red LAN, pero lo mejor seria probarlo en distintas redes. Ese es el objetivo final al fin y al cabo.
Manos a la Obra: Configurando wayvnc
y su Entorno
Ahora que entendemos la base, vamos a detallar los pasos para que wayvnc
funcione sin problemas en tu sistema Arch Linux con greetd
y sway
. Accede a tu prompt y ¡Prepárate para la personalización fina!
Ingenio 1. Instalación de Paquetes Esenciales
Asegúrate de tener instalados los componentes principales. Si ya tienes Wayland, greetd
y sway
funcionando, puedes omitir algunas de estas instalaciones, pero es bueno verificarlas. En mi caso inicio desde mi prompt: [peronista@vps-4099842-x:~]$
[peronista@vps-4099842-x:~]$ sudo pacman -S wayland greetd nano sway wayvnc xorg-xwayland foot networkmanager openssl
# ‘foot’ es un emulador de terminal ligero y compatible con Wayland, útil para pruebas.
# ‘xorg-xwayland’ es fundamental para la compatibilidad con aplicaciones X en Wayland.
[peronista@vps-4099842-x:~]$ sudo usermod -aG audio,video,input,seat peronista
# ‘seat’ es un grupo que da pvivilegios de uso a dependencias de sway
- Consideraciones para otras distros: Si no usas Arch, busca los paquetes equivalentes con
apt install
(Debian/Ubuntu) odnf install
(Fedora).
Ingenio 2. Configuración de Greetd: El proveedor del entorno wayland
greetd
es clave para que sway
pueda estar disponible mientras el servidor funcione continuamente, pero no es un programa o una aplicacion cualquiera: Es un servicio, es decir que debe configurarse y habilitarse.
- Edita el archivo de configuración de
greetd
: Bash sudo nano /etc/greetd/config.toml - Modifica la sección
[default_session]
: Deberás apuntar al greeter que usarágreetd
y asegurarte de que pueda lanzarswayvnc
. En este caso se inicia agretty (consola del usuario peronista) y el comando inicial setea las variables de entorno y lanza a sway con su correspondiente configuración que veremos luego
# /etc/greetd/config.toml
# Terminal settings
[terminal]
vt = 1
# Initial session settings
# Esto es lo que greetd lanzará automáticamente al arrancar.
[initial_session]
command = "/usr/bin/sh -c 'exec systemctl --user start wayvnc.service'"
user = "peronista"
service = "greetd"
[default_session]
command = "/usr/bin/agreety"
user = "peronista"
service = "greetd-greeter"
Ingenio 3. Configuración de Sway: Personalizando tu entorno grafico Wayland
sway
puede configurarse a través de un archivo de configuración para mayor orden. Pero no es prioritario para nuestro caso. El entorno grafico esta subordinado a la sesión del usuario, se logra configurando dos aspectos de sway
: El primer aspecto es la configuración del escritorio visual y el segundo aspecto es la configuración de la unidad de servicio de usuario.
- Crea el directorio de configuración: Bash
[peronista@vps-4099842-x:~]$ mkdir -p .config/sway/
- Y el archivo:
peronista@vps-4099842-x:~]$ nano -p .config/sway/config
set $mod Mod4
Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l
Your preferred terminal emulator
set $term foot
Your preferred application launcher
set $menu wmenu-run
Output configuration
#Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
set $wallpapers_path /usr/share/backgrounds/archlinux
output * bg $(find $wallpapers_path -type f | shuf -n 1) fill
#Example configuration:
#output HDMI-A-1 resolution 1920x1080 position 1920,0
#You can get the names of your outputs by running: swaymsg -t get_outputs
Idle configuration
#Example configuration:
#
exec swayidle -w \
timeout 300 'swaylock -f -c 000000' \
timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
before-sleep 'swaylock -f -c 000000'
#This will lock your screen after 300 seconds of inactivity, then turn off
your displays after another 300 seconds, and turn your screens back on when
resumed. It will also lock your screen before your computer goes to sleep.
Input configuration
input * {
xkb_layout "cz"
xkb_variant "coder"
}
Input configuration
#Example configuration:
#
input "2:14:SynPS/2_Synaptics_TouchPad" {
dwt enabled
tap enabled
natural_scroll enabled
middle_emulation enabled
}
#You can get the names of your inputs by running: swaymsg -t get_inputs
Readman 5 sway-input
for more information about this section.
Key bindings
#Basics:
#
# Start a terminal
bindsym $mod+Return exec $term# Kill focused window bindsym $mod+Shift+q kill # Start your launcher bindsym $mod+d exec $menu # Drag floating windows by holding down $mod and left mouse button. # Resize them with right mouse button + $mod. # Despite the name, also works for non-floating windows. # Change normal to inverse to use left mouse button for resizing and right # mouse button for dragging. floating_modifier $mod normal # Reload the configuration file bindsym $mod+Shift+c reload # Exit sway (logs you out of your Wayland session) bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
#Moving around:
#
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right# Move the focused window with the same, but add Shift bindsym $mod+Shift+$left move left bindsym $mod+Shift+$down move down bindsym $mod+Shift+$up move up bindsym $mod+Shift+$right move right # Ditto, with arrow keys bindsym $mod+Shift+Left move left bindsym $mod+Shift+Down move down bindsym $mod+Shift+Up move up bindsym $mod+Shift+Right move right
#Workspaces:
#
# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
#Workspaces added:
#
~ assign [app_id="firefox"] 3
~ for_window [app_id="firefox"] focus
~ assign [app_id="geany"] 9
~ for_window [app_id="geany"] focus
~ assign [app_id="doublecmd"] 9
~ for_window [app_id="doublecmd"] focusbindsym XF86AudioMute exec wpctl set-mute @DEFAULT_SINK@ toggle bindsym XF86AudioRaiseVolume exec wpctl set-volume @DEFAULT_SINK@ 5%+ bindsym XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_SINK@ 5%- bindsym XF86AudioMicMute exec wpctl set-mute @DEFAULT_SOURCE@ toggle
#Windows:
#Find the app_id or class of a window by inspecting the result of swaymsg -t get_tree.
#
set floating for certain apps
for_window [class="vlc"] floating enable, border normal
for_window [app_id="virt-manager"] floating enable, border normal
for_window [app_id="firefox"] floating enable, border pixel 3
for_window [app_id="geany"] floating enable, border pixel 3
for_window [app_id="doublecmd"] floating enable, border pixel 3
for_window [app_id="foot"] floating enable, move position 450 604; resize set width 1600 height 160, border pixel 3
for_window [app_id="copyq"] floating enable, sticky enable, resize set height 600px width 550px, move position cursor, move down 330
set floating for window roles
for_window [window_role="pop-up"] floating enable
for_window [window_role="bubble"] floating enable
for_window [window_role="task_dialog"] floating enable
for_window [window_role="Preferences"] floating enable
for_window [window_type="dialog"] floating enable
for_window [window_type="menu"] floating enable
for_window [window_role="About"] floating enable
for_window [title="File Operation Progress"] floating enable, border pixel 1, sticky enable, resize set width 40 ppt height 30 ppt
#Layout stuff:
#
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+b splith
bindsym $mod+v splitv# Switch the current container between different layout styles bindsym $mod+s layout stacking bindsym $mod+w layout tabbed bindsym $mod+e layout toggle split # Make the current focus fullscreen bindsym $mod+f fullscreen # Toggle the current focus between tiling and floating mode bindsym $mod+Shift+space floating toggle # Swap focus between the tiling area and the floating area bindsym $mod+space focus mode_toggle # Move focus to the parent container bindsym $mod+a focus parent
#Scratchpad:
#
# Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later.# Move the currently focused window to the scratchpad bindsym $mod+Shift+minus move scratchpad # Show the next scratchpad window or hide the focused scratchpad window. # If there are multiple scratchpad windows, this command cycles through them. bindsym $mod+minus scratchpad show
#Resizing containers:
#
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px# Ditto, with arrow keys bindsym Left resize shrink width 10px bindsym Down resize grow height 10px bindsym Up resize shrink height 10px bindsym Right resize grow width 10px # Return to default mode bindsym Return mode "default" bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
#Utilities:
#
# Special keys to adjust volume via PulseAudio
bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%
bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%
bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle
# Special keys to adjust brightness via brightnessctl
bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
# Special key to take a screenshot with grim
bindsym Print exec grim
#Status Bar:
#
Readman 5 sway-bar
for more information about this section.
bar {
position top# When the status_command prints a new line to stdout, swaybar updates. # The default just shows the current date and time. status_command while date +'%Y-%m-%d %X'; do sleep 1; done colors { statusline #ffffff background #ffffff00 inactive_workspace #32323200 #32323200 #5c5c5c }
}
include /etc/sway/config.d/*
output "HEADLESS-1" resolution 1600x960
# Asegura que el entorno de usuario de systemd esté sincronizado
exec systemctl --user import-environment
exec foot &
- Ahora se crea el modulo de servicio usuario : Bash
[peronista@vps-4099842-x:~]$ nano .config/systemd/user/sway.servic
[Unit]
PartOf=graphical-session.target
After=systemd-user-sessions.service graphical-session-pre.target
[Service]
ExecStart=/usr/bin/sh -c 'WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/user/$(id -u) WLR_BACKENDS=headless exec sway --config /home/drosatto/.config/sway/config > /tmp/sway_startup_error.log 2>&1'
Type=exec
Restart=on-failure
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=graphical-session.target
- Habilitamos el modulo de servicio usuario : Tal vez creas que es redundante, pero completa el graphical-session.target, entonces
[peronista@vps-4099842-x:~]$ systemctl --user enable sway.service
Ingenio 4. Integración con Sway: Lanzando WayVNC desde tu Sesión de Usuario
El objetivo es tener wayvnc
disponible una vez que ya has iniciado sesión en Sway (útil si se reinicia la conexion):
- Edita el archivo de configuración de Wayvnc: Bash
[peronista@vps-4099842-x:~]$
~/.config/wayvnc/config - Añade las líneas:
#
- use_relative_paths=true
- address=0.0.0.0
- enable_auth=true
- username=peronista
- password=_l4_t3rcer4_p0s1cion!!_
- private_key_file=tls_key.pem
- certificate_file=tls_cert.pem
- Nota: el password es distinto al de la sesin linux, asi es mejor.
- Se activa VeNCrypt (TLS):
[peronista@vps-4099842-x:~]$ cd ~/.config/wayvnc openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:secp384r1 -sha384 \ -days 3650 -nodes -keyout tls_key.pem -out tls_cert.pem \ -subj /CN=localhost \ -addext subjectAltName=DNS:localhost,DNS:localhost,IP:127.0.0.1
- Bash
[peronista@vps-4099842-x wayvnc ]$ cd ~
- Configura la unidad de servicio de Wayvnc editando el siguiente archivo Bash
[peronista@vps-4099842-x:~]$ sudo nano /usr/lib/systemd/user/wayvnc.service
[Unit]
Description=A VNC server for wlroots based Wayland compositors
Requires=sway.service
After=sway.service
[Service]
Type=simple
ExecStart=/usr/bin/wayvnc
Restart=on-failure
RestartSec=1
TimeoutStopSec=10
[Install]
WantedBy=multi-user.target
Ingenio 5. En el caso de recolecciones de NetworkManager.service ¿Es posible que al reiniciar luego de un error de conexión, se verifique si se puede activar la unidad de servicio de usuario peronista de wayvnc?
¡Claro que si, compañero! Es una excelente idea y muy factible de implementar. Podemos hacer que systemd en el servidor verifique la conectividad de red y, si se pierde y luego se recupera, intente reiniciar el servicio de usuario de wayvnc
para peronista
.
- Crea el nuevo servicio de monitoreo de red (como root):: Bash
[peronista@vps-4099842-x:~]$
sudo nano /etc/systemd/system/wayvnc-network-monitor.servic[Unit]
Description=Monitor NetworkManager for WayVNC restart
After=network-online.target NetworkManager.service
Requires=NetworkManager.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c 'systemctl --user start wayvnc.service --user=peronista --no-block || true'
[Install]
WantedBy=multi-user.target graphical.target
- Crea un
drop-in
paraNetworkManager.service
(como root):- ##Comando para crear el directorio drop-in
[peronista@vps-4099842-x:~]$
sudo mkdir -p /etc/systemd/system/NetworkManager.service.d/- ##Crea el siguiente archivo Bash
[peronista@vps-4099842-x:~]$
sudo nano /etc/systemd/system/NetworkManager.service.d/restart-wayvnc-on-network-up.conf[Unit]
OnUnitActive=wayvnc-network-monitor.service
- Recarga y habilita los servicios de
systemd
: Ahora, dile asystemd
que lea las nuevas configuraciones y habilite los servicios:[peronista@vps-4099842-x:~]$ sudo systemctl daemon-reload
[peronista@vps-4099842-x:~]$ sudo systemctl enable wayvnc-network-monitor.service
[peronista@vps-4099842-x:~]$ sudo systemctl restart NetworkManager.service # Reinicia NetworkManager para aplicar los cambios
Cómo funcionará:
Cada vez que NetworkManager
establezca una conexión de red (al inicio del sistema, después de una desconexión o al cambiar de red), el servicio wayvnc-network-monitor.service
se activará. Este servicio ejecutará el comando para intentar iniciar (start
) el servicio de wayvnc
para tu usuario. Si wayvnc
ya está corriendo, systemd
no hará nada; si se había caído o no se había iniciado correctamente debido a un problema de red previo, systemd
intentará ponerlo en marcha de nuevo.
Ingenio 6. Configuración del Firewall: Abriendo el Puerto VNC
¡Este paso es crítico y a menudo olvidado! Si tu firewall está activo, necesitas abrir el puerto VNC (5900
por defecto) para permitir conexiones.
- Si usas
ufw
:Bashsudo ufw allow 5900/tcp sudo ufw enable # Si no está habilitado
- Si usas
firewalld
:Bashsudo firewall-cmd --permanent --add-port=5900/tcp sudo firewall-cmd --reload
- Firewall de tu VPS (Dattaweb): ¡No olvides revisar el panel de control de tu proveedor! Es muy probable que necesites abrir el puerto 5900 allí también, ya que los firewalls de los proveedores actúan antes que los del sistema operativo.
Ingenio 7. Probando la Conexión Remota: ¡Acceso desde Cualquier Lugar!
Con todo configurado, es hora de la verdad.

- Reinicia tu sistema para que los cambios de
greetd
tomen efecto:Bashsudo reboot
- Desde tu cliente VNC (Android, Windows, iOS, macOS):
- Introduce la dirección IP pública de tu servidor (o el hostname si lo tienes configurado y resuelto).
- El puerto será
5900
(o el que hayas configurado). - Cuando te lo pida, introduce la contraseña VNC que estableciste en
/etc/wayvnc/config.ini
.
- ¡Conéctate! Deberías ver tu greeter o tu sesión Sway.
- Clientes VNC probados: RealVNC Android, RealVNC Windows, RealVNC iOS y TigerVNC Viewer macOS. El cliente VNC podría estar en la misma red LAN, pero lo mejor sería probarlo en distintas redes. Ese es el objetivo final, al fin y al cabo.
Resolución de Problemas Comunes (y cómo no entrar en pánico)
- No puedo conectar:
- Verifica que
wayvnc
esté corriendo (ps aux | grep wayvnc
). - Revisa los logs de
greetd
(journalctl -u greetd
). - ¡El firewall! Asegúrate de que el puerto esté abierto tanto en tu sistema operativo como en el panel de control de tu proveedor de VPS.
- Verifica que la contraseña sea correcta.
- Verifica que
- Pantalla en negro o sesión congelada:
- Asegúrate de que
xorg-xwayland
esté instalado. - Revisa la configuración de Sway y
wayvnc
para conflictos de resolución. - Puede que necesites configurar
wayvnc
para que se lance con opciones de backend específicas si tienes problemas con tu tarjeta gráfica o drivers (ej.--render-node
o--input-node
).
- Asegúrate de que
Conclusión: La Administración Remota Redefinida
¡Lo lograste! Has configurado wayvnc
para una administración remota eficiente y nativa en Wayland, liberándote de las limitaciones de x11vnc
y asegurando que nunca te quedes sin control sobre tu sistema. Este es un paso fundamental para aquellos que buscan optimizar su experiencia Linux y mantener un control total sobre sus configuraciones avanzadas.
Este es solo el comienzo de lo que podemos lograr cuando nos animamos a ir más allá de lo convencional y entendemos el poder de los mensajes de error. ¿Listo para el próximo desafío? Deja tus comentarios abajo con tus experiencias o preguntas. Estoy aquí para darte una mano.
No Responses