[TUTORIAL] Developer Workstation (Proxmox-VE 8) with cinnamon (LMDE6)

aureladmin

Renowned Member
Apr 15, 2016
39
18
73
If you want to install a "develloper workstation" with cinnamon (LMDE6), this is where it happens.

1) Install Promox-ve 8.0-2 via iso

2) Connect to Proxmox-ve via ssh as root

3) Create a new main "source.list" type file as under LMDE6
Bash:
echo "#deb http://packages.linuxmint.com faye main upstream import backport

deb https://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb https://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

deb https://deb.debian.org/debian/ bookworm-backports main contrib non-free non-free-firmware" >>  /etc/apt/sources.list.d/official-package-repositories.list

4) Create "additional-repositories.list" file
Bash:
echo "# PVE pve-no-subscription repository provided by proxmox.com,
# NOT recommended for production use
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription

#Debian-multimedia
deb https://www.deb-multimedia.org bookworm main non-free
deb https://www.deb-multimedia.org bookworm-backports main" >>  /etc/apt/sources.list.d/additional-repositories.list

5) Delete the old "source.list" file and "pve-enterprise.list"
Bash:
rm /etc/apt/sources.list
rm /etc/apt/sources.list.d/pve-enterprise.list

6) Create an apt pref file for official-package-repositories

Bash:
echo "Package: *
Pin: origin live.linuxmint.com
Pin-Priority: 750

Package: *
Pin: release o=linuxmint,c=upstream
Pin-Priority: 700

Package: *
Pin: release o=LP-PPA-linuxmint-daily-build-team-daily-builds
Pin-Priority: 700" >> /etc/apt/preferences.d/official-package-repositories.pref

7) Create an apt pref file for official-extra-repositories
Bash:
echo "Package: *
Pin: origin "build.linuxmint.com"
Pin-Priority: 700" >> /etc/apt/preferences.d/official-extra-repositories.pref

8) Add the LMDE5 ppa key
Bash:
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com A6616109451BBBF2

9) Update the repository list
Bash:
apt update -oAcquire::AllowInsecureRepositories=true

10) Install "sudo" packages
Bash:
apt install sudo

11)Install "deb-multimedia-keyring" packages
Bash:
wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb
dpkg -i deb-multimedia-keyring_2016.8.1_all.deb

12) Update the repository list
Bash:
apt update

13) Configure your locale for langage and other, follow the steps
Bash:
dpkg-reconfigure locales

14) Add your user account
Bash:
adduser your_user

15) Add your user account to the sudo group
Bash:
usermod -aG sudo your_user

16)Add the sudo right to your user account via "visudo"
Bash:
visudo

Add this line
Bash:
%sudo ALL=(ALL:ALL)  ALL
your_user ALL=(ALL:ALL)  ALL

17) Installation of the cinnamon interface and its dependencies
Bash:
apt --install-recommends --force-yes -y install linuxmint-keyring debian-system-adjustments && apt update && apt --install-recommends --force-yes -y install mint-meta-cinnamon  cinnamon cinnamon-l10n cinnamon-desktop-data mint-common lightdm-settings mintlocale mintmenu mintsystem mintupdate mintwelcome mint-mirrors mint-translations mint-themes mintinstall mint-backgrounds-uma mint-backgrounds-una mint-backgrounds-ulyssa mintstick muffin nemo nemo-emblems nemo-preview nemo-share mint-meta-codecs timeshift xreader boot-repair timeshift synaptic numlockx software-properties-common software-properties-gtk slick-greeter gnome-terminal gnome-font-viewer gnome-calendar gnome-calculator gnome-menus gnome-power-manager firefox bulky caribou gdebi onboard redshift sticky thingy webapp-manager xapp-appimage-thumbnailer xapp-epub-thumbnailer xapp-mp3-thumbnailer xapp-raw-thumbnailer xreader xviewer xviewer-plugins acpi-support acpid alsa-utils anacron apt-clone avahi-utils avahi-autoipd baobab build-essential cups cups-browsed fuse3 lintian && apt -y install cinnamon-desktop-environment

18) Update the distribution
Bash:
apt dist-upgrade -y

19)Reboot your computer
Bash:
reboot

the installation has installed many games by default, I advise you to remove them if you do not want them. you can do it via synaptic by choosing by category it goes very quickly.

If you want up-to-date apps, I recommend using flatpak.


Optional amdgpu drivers:
If you have an AMD processor with an iGPU you will have to install the drivers by hand because the pve-firmware package does not contain them.

1) check the version of the "firmware-XXXXX" package available at the bookworm repositorie:
http://ftp.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/

2) Firmware download, extract and copy
AMDGPU
Bash:
wget http://ftp.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/firmware-amd-graphics_20230515-3_all.deb
dpkg -x firmware-amd-graphics_20230515-3_all.deb firmware-amd-graphics
cp -r firmware-amd-graphics/lib/firmware/* /lib/firmware/

3) Update "initramfs"
Bash:
update-initramfs -k all -u

4) Reboot
Bash:
reboot



Optional bluetooth, wifi card and other drivers:

if your bluetooth, wifi card or other are not recognized despite the installation of the "pve-firmware" package, you will have to do it manually.

1) check the version of the "firmware-XXXXX" package available at the bookworm repositorie:
http://ftp.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/

2) Firmware download, extract and copy
INTEL WIFI and BLUETOOTH
Bash:
wget http://ftp.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/firmware-iwlwifi_20230515-3_all.deb
dpkg -x firmware-iwlwifi_20230515-3_all.deb firmware-iwlwifi
cp -r firmware-iwlwifi/lib/firmware/* /lib/firmware/

REALTEK WIFI and BLUETOOTH
Bash:
wget http://ftp.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/firmware-realtek_20230515-3_all.deb
dpkg -x firmware-realtek_20230515-3_all.deb firmware-realtek
cp -r firmware-realtek/lib/firmware/* /lib/firmware/

OTHER, MEDIATEK, ...
Bash:
wget http://ftp.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/firmware-misc-nonfree_20230515-3_all.deb
dpkg -x firmware-misc-nonfree_20230515-3_all.deb firmware-misc-nonfree
cp -r firmware-misc-nonfree/lib/firmware/* /lib/firmware/

ALL in one shot (danger)
Bash:
wget http://ftp.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/firmware-nonfree_20230515.orig.tar.xz
tar -xf firmware-nonfree_20230515.orig.tar.xz
cp -r firmware-nonfree_20230515/* /lib/firmware/

3) Update "initramfs"
Bash:
update-initramfs -k all -u

4) Reboot
Bash:
reboot


optional, network configuration:

If you want to use cinnamon's network-manager, you will need to modify the "/etc/network/interfaces" file as well as the "/etc/hosts" file.

Indeed it is simpler to do nat and choose your wifi or wired connection via the graphical interface than to do everything on the command line and restart each time.

example file:

/etc/network/interfaces:
Code:
auto lo
iface lo inet loopback

auto vmbr0
iface vmbr0 inet static
    address 192.168.199.254/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    metric 100
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A POSTROUTING -s '192.168.199.0/24' -o wlo1 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '192.168.199.0/24' -o wlo1 -j MASQUERADE
#    post-up iptables -t nat -A POSTROUTING -s '192.168.199.0/24' -o enp4s0 -j MASQUERADE
#    post-down iptables -t nat -D POSTROUTING -s '192.168.199.0/24' -o enp4s0 -j MASQUERADE

/etc/hosts:
Code:
127.0.0.1 localhost.localdomain localhost
192.168.199.254 COMPUTERNAME.domain.local COMPUTERNAME

# The following lines are desirable for IPv6 capable hosts

::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

I created a subnet "192.168.199.0/24" with the IP of my proxmox PC "192.168.199.254".
I do "postrouting" to have a network connection.
I'm not going to detail everything, there is quite a bit of tutorial on this on the net and on the forum.



There will be another tutorial for Asus laptops with nvidia graphics card.
 
Last edited:
Thank you again for an awesome tutorial and the effort to test that this works.

I did my PVE 7 to 8 upgrade and LMDE 5 to 6 upgrade concurrently and other than a few gpg complaints, it went very well.

I did have to update the /usr/lib/os-release file again to fix the UI's repositories glitch.

I changed VERSION_CODENAME=faye to VERSION_CODENAME=bookworm


FROM:
Bash:
PRETTY_NAME="LMDE 6 (faye)"
NAME="LMDE"
VERSION_ID="6"
VERSION="6 (faye)"
VERSION_CODENAME=faye
ID=linuxmint
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
ID_LIKE=debian
DEBIAN_CODENAME=bookworm

TO:
Bash:
PRETTY_NAME="LMDE 6 (faye)"
NAME="LMDE"
VERSION_ID="6"
VERSION="6 (faye)"
VERSION_CODENAME=bookworm
ID=linuxmint
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
ID_LIKE=debian
DEBIAN_CODENAME=bookworm
 
Successfully installed the cinnamon Desktop on the proxmox host and am quite happy.
I'm just wondering how separated are the desktop environment and the proxmox host system.

For instance: Tailscale is installed on the host, but my cinnamon workstation doesn't even know the "tailscale" command. How is that even possible?
And do I have to be carefull about installing programs on cinnamon which could interfere with proxmox?
 
Last edited:
Successfully installed the cinnamon Desktop on the proxmox host and am quite happy.
I'm just wondering how separated are the desktop environment and the proxmox host system.

For instance: Tailscale is installed on the host, but my cinnamon workstation doesn't even know the "tailscale" command. How is that even possible?
And do I have to be carefull about installing programs on cinnamon which could interfere with proxmox?
Tailscale, by default it is Flatpak so indeed the orders will not be recognized. you must install it by adding the ppa or via the sources to access the command via terminal.
 
Just working fine. But one thing to mention:

I get an error massage: "unknown Debian code name 'faye' (500).
Do I have to worry about this?
 

Attachments

  • Screenshot from 2024-07-06 16-12-56.png
    Screenshot from 2024-07-06 16-12-56.png
    11.8 KB · Views: 6
Just working fine. But one thing to mention:

I get an error massage: "unknown Debian code name 'faye' (500).
Do I have to worry about this?
This is not a problem. You can modify the file "/usr/lib/os-release" (see post above) to no longer have the error message, however this modification deactivates the graphical launch of the "mint" module for choosing ppa .
 
Last edited:
Hi,

Many Thanks !!!!
Juste works fine for intel wifi and bluetooth on my laptop lenovo with full kde:
Code:
# hostnamectl
 Static hostname: pve-aaa
       Icon name: computer-laptop
         Chassis: laptop       
Machine ID: a869824ac8b44f4b9a39dcc0c189682c
         Boot ID: f3d6e667b6934f358b6ca573d221b27b
Operating System: Debian GNU/Linux 12 (bookworm) 
          Kernel: Linux 6.8.12-1-pve
    Architecture: x86-64
 Hardware Vendor: Lenovo
  Hardware Model: ThinkBook 14 G6 IRL
Firmware Version: MMCN33WW

I use pve as my work laptop because I like debian+zfs and pve is the only one to offer a root zfs installer with all the zfs raids ...
Really good work !!!!
 
  • Like
Reactions: aureladmin
I am using this setting for quite some time. For the case the machine is only connected to the network via wlan it is good.
But what about switching to LAN during the server running?

I would have to manually change switch the nat-ing in

/etc/network/interfaces:

from

Code:
auto vmbr0
iface vmbr0 inet static
    address 192.168.199.254/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    metric 100
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A POSTROUTING -s '192.168.199.0/24' -o wlo1 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '192.168.199.0/24' -o wlo1 -j MASQUERADE
#    post-up iptables -t nat -A POSTROUTING -s '192.168.199.0/24' -o enp4s0 -j MASQUERADE
#    post-down iptables -t nat -D POSTROUTING -s '192.168.199.0/24' -o enp4s0 -j MASQUERADE

to

Code:
auto vmbr0
iface vmbr0 inet static
    address 192.168.199.254/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    metric 100
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
#        post-up iptables -t nat -A POSTROUTING -s '192.168.199.0/24' -o wlo1 -j MASQUERADE
 #       post-down iptables -t nat -D POSTROUTING -s '192.168.199.0/24' -o wlo1 -j MASQUERADE
    post-up iptables -t nat -A POSTROUTING -s '192.168.199.0/24' -o enp4s0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '192.168.199.0/24' -o enp4s0 -j MASQUERADE


Is there a better way to let the system automatically switch between Wlan and LAN?
 
I am using this setting for quite some time. For the case the machine is only connected to the network via wlan it is good.
But what about switching to LAN during the server running?

I would have to manually change switch the nat-ing in

/etc/network/interfaces:

from

Code:
auto vmbr0
iface vmbr0 inet static
    address 192.168.199.254/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    metric 100
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A POSTROUTING -s '192.168.199.0/24' -o wlo1 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '192.168.199.0/24' -o wlo1 -j MASQUERADE
#    post-up iptables -t nat -A POSTROUTING -s '192.168.199.0/24' -o enp4s0 -j MASQUERADE
#    post-down iptables -t nat -D POSTROUTING -s '192.168.199.0/24' -o enp4s0 -j MASQUERADE

to

Code:
auto vmbr0
iface vmbr0 inet static
    address 192.168.199.254/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    metric 100
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
#        post-up iptables -t nat -A POSTROUTING -s '192.168.199.0/24' -o wlo1 -j MASQUERADE
 #       post-down iptables -t nat -D POSTROUTING -s '192.168.199.0/24' -o wlo1 -j MASQUERADE
    post-up iptables -t nat -A POSTROUTING -s '192.168.199.0/24' -o enp4s0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '192.168.199.0/24' -o enp4s0 -j MASQUERADE


Is there a better way to let the system automatically switch between Wlan and LAN?

I don't have a specific answer.
I tried to do that, but without success.

Some links I looked at:
https://gist.github.com/Apsu/5021255
https://serverfault.com/questions/396474/set-up-router-with-2-wans-and-multiple-subnets
https://unix.stackexchange.com/ques...s-ab-and-multiple-internal-lans-let-1-lan-use



There's also the possibility of installing a pfsense VM that would do this, but that would run a VM continuously.
Two WANs (active backup), one for the network card and another for the Wi-Fi card, both on two different VMBR. And another VMBR for your Proxmox IP.
 
I don't have a specific answer.
I tried to do that, but without success.

Some links I looked at:
https://gist.github.com/Apsu/5021255
https://serverfault.com/questions/396474/set-up-router-with-2-wans-and-multiple-subnets
https://unix.stackexchange.com/ques...s-ab-and-multiple-internal-lans-let-1-lan-use



There's also the possibility of installing a pfsense VM that would do this, but that would run a VM continuously.
Two WANs (active backup), one for the network card and another for the Wi-Fi card, both on two different VMBR. And another VMBR for your Proxmox IP.
Thanks for sharing your experience. So I get it, there no simple solution. I have not used an pfsense yet, but it seems to be common nowadays. Is that worth checking? Espacially in case the machine is changing networks (it's a notebook).
 
I have some services (NAS,nextcloud,vaultwarden...) as LXCs running to which I connect on the Desktop (hostsystem) through a client.

What bothers me in this setup is the fact that my host-system connects to the LXC and VM through my 1Gbit NIC and this is limiting the speed I would like to get rid off. Is there a way to bridge the LXC/VM to the hostsystem for increasing the speed?

My own thoughts are like this:
- physically: I could add an 2.5Gbit USB-LAN Adapter to get an additional physical NIC. And than I would have to bridge all the LXC/VM throught vmbr1 which uses the port of the 2.5Gbit NIC.
- virtually: I was thinking: Why do I need a physical NIC when the LXC and the host are located on the same host anyway? I don't know how but I think there should be a way to create a virtual NIC for my vmbr1 to connect the LCX to the host using the full speed of the internal system. I think I just lack the knowledge of doing it.

Any hints are welcome.
 
Last edited:
I recently installed a new node with the instructions and recognized that there was a change in the multmedia-keyring package. So there was the need to modify this step:

11)Install "deb-multimedia-keyring" packages

Code:
wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb
dpkg -i deb-multimedia-keyring_2016.8.1_all.deb

and changed the code into

Code:
wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2024.9.1_all.deb
dpkg -i deb-multimedia-keyring_2024.9.1_all.deb
 
  • Like
Reactions: aureladmin
For the step
Optional bluetooth, wifi card and other drivers:

the folder's structure changed for the intel driver in the package firmware-iwlwifi.
I got to use this code

Code:
wget https://ftp.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/firmware-iwlwifi_20241210-1_all.deb

dpkg -x firmware-iwlwifi_20241210-1_all.deb firmware-iwlwifi

cp -r firmware-iwlwifi/usr/lib/firmware/* /lib/firmware/
 
  • Like
Reactions: aureladmin