Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

cPoudan käyttö etätyöpöytään

Tässä artikkelissa käydään läpi, miten etätyöpöytä otetaan käyttöön noVNC:n ja SSH-tunnelin avulla c- ja ePoudassa ei-GPU-flavorilla. Käytämme noVNC:tä, koska sen avulla voimme käyttää työpöytää selaimella eli paikallisia asennuksia ei tarvita. Jos haluat ohjeet GPU-instanssin käyttämiseen renderöintiin, katso täältä: cPouta GPU:n käyttö renderöintiin

Ensin näytämme, miten tarvittavat ohjelmistot asennetaan käsin. Tämän artikkelin lopussa näytämme, miten tämä tehdään automaattisesti instanssia luotaessa (post install -skriptit). Jos haluat siirtyä suoraan post install -skriptiin, napsauta tästä

Valmistelut

Hyödynnämme seuraavia teknologioita etätyöpöydän asentamiseen:

  • standard-flavor, esimerkiksi standard.medium
  • Almalinux-9-image (Poudassa epel-repositorio on jo asennettu valmiiksi)
  • noVNC, koska sen avulla voimme käyttää selainta perinteisen VNC-asiakasohjelman sijaan työpöydän katseluun
  • tigervnc-server VNC-palvelimena
  • Xfce työpöytäympäristönä
  • SSH-tunneli, jotta VNC-palvelin ei ole avoinna internetiin. Tämä on erittäin tärkeää.

Luo ja käytä instanssiasi etätyöpöytää varten

Warning

Älä käytä standard.tiny-flavoria. Koska tässä flavorissa on vain 1 Go RAM-muistia, noVNC:tä ei voi asentaa

  1. Käynnistä standard-flavor-instanssi Alamlinux-9-imagella.
  2. Liitä instanssiin floating IP.
  3. Salli suojaussäännöissä saapuva SSH-liikenne (portti 22).
  4. Otamme SSH-yhteyden instanssiin tällä komennolla ja luomme SSH-tunnelin.
ssh -L2001:localhost:6081 almalinux@YOUR-FLOATING-IP

Tämä toimii ainakin myös Windows PowerShellissä. Jos sinulla ei ole ssh-agentia käynnissä, sinun täytyy määrittää myös SSH-avaimesi:

ssh -i C:\users\localusername\.ssh\yourkey.pem -L2001:localhost:6081 almalinux@YOUR-FLOATING-IP

Huomaa, että portti 2001 on se, jota käytät myöhemmin selaimessa.

-L2001:localhost:6081 tarkoittaa, että voimme käyttää palvelimen porttia 6081 tietokoneemme paikallisen portin 2001 kautta. Pidä pääteikkuna auki. SSH-komento on ainoa vaihe, joka tarvitaan paikallisella tietokoneella.

Asenna tarvittavat ohjelmistot virtuaalikoneelle

Tässä esimerkissä käytämme Xfce:tä työpöytäympäristönä. Jos haluat käyttää jotakin muuta työpöytäympäristöä, sinun täytyy todennäköisesti muokata vncserver-config-defaults-asetustiedostoa.

sudo dnf update
sudo dnf install -y epel-release
sudo dnf groupinstall -y "Xfce" "base-x"
sudo systemctl set-default graphical
sudo reboot

Asenna noVNC ja tigervnc vncserveriä varten

sudo dnf install -y novnc tigervnc-server

Määritä ohjelmistot

Luo esimerkiksi uusi käyttäjä nimeltä vncuser.

sudo useradd vncuser
sudo passwd vncuser
sudo su - vncuser

Luo käyttäjälle vncuser perusasetukset, jotta etätyöpöytää voidaan käyttää.

vncpasswd

Password:
Verify:
Would you like to enter a view-only password (y/n)? n

Poistu vncuser-kuoresta

exit

Määritä haluamasi resoluutio. 1440x900 on yleinen resoluutio, mutta tämän on testattu toimivan jopa resoluutiolla 3840x2160. Tämä voidaan määrittää globaalisti kaikille käyttäjille.

sudo sed -i -e 's/=gnome/=xfce/g' /etc/tigervnc/vncserver-config-defaults
sudo sh -c "cat >> /etc/tigervnc/vncserver-config-defaults" <<EOF
## CONFIGURATION FOR ALL USERS ##
geometry=1440x900
depth=24
localhost=no
EOF

Tai jokaisella käyttäjällä voi olla oma asetuksensa. Tässä esimerkissä käyttäjällä vncuser

sudo su - vncuser
cat >> ~/.config/tigervnc/config <<EOF
geometry=1440x900
depth=24
session=xfce
localhost=no
EOF

Etätyöpöydän käynnistäminen

Huomaa, että tällä ohjeella NoVNC-istunto toimii vain näytöllä :1.

Hyvä käytäntö on käyttää systemd-palvelua vncserverin käynnistämiseen. Hakemistossa /lib/systemd/system on mallipohja nimeltä vncserver@.service. Kopioi se tiedostoon /etc/systemd/system/vncserver@:1.service

sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

Määritä vncuser näytölle :1

sudo sh -c "cat >> /etc/tigervnc/vncserver.users" <<EOF
:1=vncuser
EOF

Ota vncserver-palvelu käyttöön ja käynnistä se

sudo systemctl enable vncserver@:1.service && sudo systemctl start vncserver@:1.service

Voit tarkistaa palvelun tilan

sudo systemctl status vncserver@:1.service

Ja se kuuntelee portissa 5901 osoitteessa 0.0.0.0 (ei vain localhostissa 127.0.0.1)

ss -tulpn | egrep -i 'vnc|590'

Voit käynnistää noVNC-asiakasohjelman suorittamalla

novnc_server --listen 6081 --vnc localhost:5901

Sovelluksen sijainti voi vaihdella käyttämäsi Linux-jakelun mukaan. --listen 6081 tarkoittaa, missä portissa palvelu on käytettävissä. --vnc localhost:5901 tarkoittaa, mistä portista se odottaa vncserverin olevan käytettävissä. Voit poistua noVNC-istunnosta painamalla ctrl+c.

Sinun pitäisi nyt pystyä käyttämään noVNC-istuntoa avaamalla selaimessa linkki http://127.0.0.1:2001/vnc.html . Huomaa, että porttinumero on sama kuin SSH-komennossa käyttämäsi.

Tärkeää tietoa, jos et halua käyttää SSH-tunnelia

On toki myös mahdollista käyttää noVNC:tä tai VNC:tä suoraan internetin yli, mutta emme suosittele tätä vahvasti. VNC on yksi helpoimmin internetissä hyväksikäytettävistä palveluista; kyse ei ole siitä, hakkeroidaanko palvelimesi, vaan milloin. Jos aiot silti sivuuttaa suosituksemme, varmista ainakin, että lisäät palvelimellesi hyvän suojaussäännön niin, että voit käyttää palvelinta vain omasta IP-osoitteestasi.

Guacamolen käyttöönotto

Guacamole on asiakasohjelmaton etätyöpöytäyhdyskäytävä. Se tukee standardiprotokollia, kuten VNC:tä, RDP:tä ja SSH:ta. Lisätietoja on virallisella verkkosivustolla

Voit ottaa Guacamolen helposti käyttöön tällä Ansible-skriptillä

Aiemmin otimme käyttöön uuden graafisen palvelimen. Tiedostossa templates/user-mapping.xml.j2 sinun täytyy määrittää nimi, palvelimen paikallinen osoite ja portti.

Käyttöönoton jälkeen Guacamole on käytettävissä osoitteessa https://<YOUR_FLOATING_IP>:8080/guacamole

Sen avulla voit käyttää eri koneita, joissa on vncserver, yhdestä paikasta.

Jos haluat käyttää Ubuntua

Tätä kirjoitettaessa ubuntu-desktop ja tigervnc-server toimivat Ubuntu-22:ssa. Jos haluat käyttää Ubuntu-24:ää, käytä Xfce:tä graafisena ympäristönä.

Tässä ovat vaiheet tigervnc-serverin asentamiseen Ubuntu-22:ssa. Vaiheet ovat melko samanlaiset kuin aiemmin nähty Almalinux-9:ssä, mutta muutamien pakettien nimet ovat erilaisia.

  1. Käynnistä standard-flavor-instanssi Ubuntu-22.04-imagella.
  2. Liitä instanssiin floating IP.
  3. Salli suojaussäännöissä saapuva SSH-liikenne (portti 22).
  4. Otamme SSH-yhteyden instanssiin tällä komennolla ja luomme SSH-tunnelin.
ssh -L2001:localhost:6081 ubuntu@YOUR-FLOATING-IP

Tämä toimii ainakin myös Windows PowerShellissä. Jos sinulla ei ole ssh-agentia käynnissä, sinun täytyy määrittää myös SSH-avaimesi:

ssh -i C:\users\localusername\.ssh\yourkey.pem -L2001:localhost:6081 ubuntu@YOUR-FLOATING-IP

Huomaa, että portti 2001 on se, jota käytät myöhemmin selaimessa.

-L2001:localhost:6081 tarkoittaa, että voimme käyttää palvelimen porttia 6081 tietokoneemme paikallisen portin 2001 kautta. Pidä pääteikkuna auki. SSH-komento on ainoa vaihe, joka tarvitaan paikallisella tietokoneella.

Tässä esimerkissä käytämme Ubuntu-desktopia työpöytäympäristönä. Jos haluat käyttää jotakin muuta työpöytäympäristöä, sinun täytyy todennäköisesti muokata vncserver-config-defaults-asetustiedostoa.

sudo apt update && sudo apt upgrade
sudo apt install ubuntu-desktop -y
sudo systemctl set-default graphical
sudo reboot

Asenna noVNC ja tigervnc vncserveriä varten

sudo snap install novnc
sudo apt install -y tigervnc-standalone-server

Määritä ohjelmistot

Luo esimerkiksi uusi käyttäjä nimeltä vncuser.

sudo useradd vncuser
sudo su - vncuser

Luo käyttäjälle vncuser perusasetukset, jotta etätyöpöytää voidaan käyttää.

vncpasswd

Password:
Verify:
Would you like to enter a view-only password (y/n)? n

Poistu vncuser-kuoresta

exit

Määritä haluamasi resoluutio. 1440x900 on yleinen resoluutio, mutta tämän on testattu toimivan jopa resoluutiolla 3840x2160. Tämä voidaan määrittää globaalisti kaikille käyttäjille.

sudo sh -c "cat >> /etc/tigervnc/vncserver-config-defaults" <<EOF
## CONFIGURATION FOR ALL USERS ##
\$geometry = "1440x900";
\$depth = "24";
\$session = "ubuntu";
\$localhost = "no";
EOF

Tai jokaisella käyttäjällä voi olla oma asetuksensa. Tässä esimerkissä käyttäjällä vncuser

sudo su - vncuser
cat >> ~/.vnc/config <<EOF
\$geometry = "1440x900";
\$depth = "24";
\$session = "ubuntu";
\$localhost = "no";
EOF

Etätyöpöydän käynnistäminen

Huomaa, että tällä ohjeella NoVNC-istunto toimii vain näytöllä :1.

Hyvä käytäntö on käyttää systemd-palvelua vncserverin käynnistämiseen. Hakemistossa /lib/systemd/system on mallipohja nimeltä tigervncserver@.service. Kopioi se tiedostoon /etc/systemd/system/tigervncserver@:1.service

sudo cp /lib/systemd/system/tigervncserver@.service /etc/systemd/system/tigervncserver@:1.service

Määritä vncuser näytölle :1

sudo sh -c "cat >> /etc/tigervnc/vncserver.users" <<EOF
:1=vncuser
EOF

Ota vncserver-palvelu käyttöön ja käynnistä se

sudo systemctl enable tigervncserver@:1.service && sudo systemctl start tigervncserver@:1.service

Voit tarkistaa palvelun tilan

sudo systemctl status tigervncserver@:1.service

Ja se kuuntelee portissa 5901 osoitteessa 0.0.0.0 (ei vain localhostissa 127.0.0.1)

ss -tulpn | egrep -i 'vnc|590'

Voit käynnistää noVNC-asiakasohjelman suorittamalla

novnc --listen 6081 --vnc localhost:5901

Sovelluksen sijainti voi vaihdella käyttämäsi Linux-jakelun mukaan. --listen 6081 tarkoittaa, missä portissa palvelu on käytettävissä. --vnc localhost:5901 tarkoittaa, mistä portista se odottaa vncserverin olevan käytettävissä. Voit poistua noVNC-istunnosta painamalla ctrl+c.

Sinun pitäisi nyt pystyä käyttämään noVNC-istuntoa avaamalla selaimessa linkki http://127.0.0.1:2001/vnc.html . Huomaa, että porttinumero on sama kuin SSH-komennossa käyttämäsi.

Post install -skriptit

Kun luot instanssin cPoudassa, on mahdollista lisätä Post-Creation-vaihe.

Sen avulla voit suorittaa automaattisia tehtäviä ohjelmistojen asentamiseksi ja/tai päivitysten ajamiseksi.

machine post creation

Voit valita joko Direct Input, mikä tarkoittaa, että sinun täytyy kirjoittaa komennot itse, tai File, mikä tarkoittaa, että voit lataa palveluun bash-skriptin tai cloud-init -skriptin.

Täältä löydät kaksi cloud-init-skriptiä. Toisen AlmaLinuxille ja toisen Ubuntulle:

init_vnc_almalinux.yaml:

#cloud-config
#
# Above first line indicates that the file is a Cloud-Init configuration file. Don't remove it

# Update the package list
package_update: true

# Upgrade all installed packages to their latest versions
package_upgrade: true

# List of packages to install
packages:
  - epel-release

runcmd:
  - dnf install -y tigervnc-server novnc
  - dnf groupinstall -y "Xfce" "base-x"
  - systemctl set-default graphical
  - cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
  - systemctl enable vncserver@:1.service

users:
  - default
  - vncuser

write_files:
  - content: |
      ## CONFIGURATION FOR ALL USERS ##
      geometry=1440x900
      depth=24
      session=xfce
      localhost=no
    path: /etc/tigervnc/vncserver-config-defaults
    append: true
  - content: |
      :1=vncuser
    path: /etc/tigervnc/vncserver.users
    append: true

final_message: |
  init_vnc_almalinux has finished
  version: $version
  timestamp: $timestamp
  datasource: $datasource
  uptime: $uptime

power_state:
  mode: reboot
  message: rebooting machine

init_vnc_ubuntu.yaml:

#cloud-config
#
# Above first line indicates that the file is a Cloud-Init configuration file. Don't remove it

# Update the package list
package_update: true

# Upgrade all installed packages to their latest versions
package_upgrade: true

# List of packages to install
packages:
  - ubuntu-desktop
  - tigervnc-standalone-server
  - snap:
    - novnc

users:
  - default
  - vncuser

write_files:
  - content: |
      ## CONFIGURATION FOR ALL USERS ##
      $geometry = "1440x900";
      $depth = "24";
      $session = "ubuntu";
      $localhost = "no";
    path: /etc/tigervnc/vncserver-config-defaults
    append: true
  - content: |
      :1=vncuser
    path: /etc/tigervnc/vncserver.users
    append: true

runcmd:
  - systemctl set-default graphical
  - cp /lib/systemd/system/tigervncserver@.service /etc/systemd/system/tigervncserver@:1.service
  - systemctl enable tigervncserver@:1.service

final_message: |
  init_vnc_ubuntu has finished
  version: $version
  timestamp: $timestamp
  datasource: $datasource
  uptime: $uptime

power_state:
  mode: reboot
  message: rebooting machine

Suosittelemme tallentamaan nämä skriptit yaml-tiedostoon ja käyttämään File-vaihtoehtoa Post-Creation-valikossa.

Koneesi asennuksen jälkeen sinun täytyy vielä luoda VNC-salasana. Yhdistä koneeseesi SSH:n kautta (ssh -L2001:localhost:6081 {ubuntu | almalinux}@{YOUR-FLOATING-IP}) ja suorita seuraavat komennot:

AlmaLinuxille:

$ sudo su - vncuser
$ vncpasswd

Password:
Verify:
Would you like to enter a view-only password (y/n)? n

$ exit
$ sudo systemctl start vncserver@:1.service

Ubuntulle:

$ sudo su - vncuser
$ vncpasswd

Password:
Verify:
Would you like to enter a view-only password (y/n)? n

$ exit
$ sudo systemctl start tigervncserver@:1.service

Kun palvelu on käynnissä, voit suorittaa novnc:

Almalinux:

novnc_server --listen 6081 --vnc localhost:5901

Ubuntu:

novnc --listen 6081 --vnc localhost:5901

ja käyttää noVNC-istuntoa osoitteessa http://127.0.0.1:2001/vnc.html aiemmin asettamallasi vncpasswd-salasanalla.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta