abstract: FILL_dyAbstract

Second approach to Single Install

The goal is still the same: how to install the programs I use regularly on several computers such that they appear and function exactly the same.

Using docker to clone the installation (across the ARM - AMD divide) was not successful: the construction of a single image to include all the software required with all configuration demonstrated the limits of the technology for the task. The very powerful Raspberry Pi 4 64-bit Single Board Computer demonstrated some differences making it hard to install an XFCE deskto with docker.

The goal is to achieve the same GUI experience on any computer automatically -- as far as possible.

Guiding principles

Prefer simpler installation methods whenerver possible: - install from debian repositories with apt-get install - allow some preparatory steps for each target - sync or copy configuration files - use docker for particular programs (not for the desktop)

Target hardware is only - AMD (laptop and desktop) - ARM (Raspberry Pi 4, if feasible the Odroid XU4)

footnote: the odroids will be used for special tasks, especially syncthing and related. Raspi 2B will remain as music clients.

Installation steps

The installation is necessarily broken into two steps: an initial installation and then later a maintenance step to keep the installation up-to-date and in sync.

Initial installation

The initial installation must achieve: - a running Debian plattform (not necessarily with a GUI) - linux with a single partition or with a root and a /home partition; - a hostname (used as hostname.local) - an account for frankadmin (on uid 1000) with sudo (not account frank) - installed - sudo - python3 - openssh - /etc/ssh/sshd_config: - Port NN (unique for the host) - no root login / no root login with password ?? - ssh key

TODO how to make individual port numbers? (list mapped to ansible_hostname)

installing with deb installer in tasksel with MATE and ssh-client gives all the required packages.


it puts hostname in /etc/hostname and /etc/hosts

for ansible: put into hosts: [test] deb10test.local ansible_user=frankadmin then ssh-copy-id

footnote: install for rpi4 on ssd does not work consistently; the old usb-sata bridge seems ok, the new enclosure not. Different chips - may work with an upgrade of the firmware in the USB-Sata bridge!

FirstTime Playbook

Then run the firstTime playbook with ansible to - apt full-upgrade - tasksel MATE -- better done with debian-installer d-i (faster, safer) - add users (at least frank with sudo) - copy the initial syncthing/config.xml to /home/frank/.config/syncthing/confix.xml (but no other files) - for user frank run syncthing - add entry to .ssh/config for the host on the master

install email

Playbook: Keeping it up to date

install debian packages:

achieves automatically

- sudo
- python2
- openssh
- /etc/hostname and /etc/hosts

change manually - the Port in /etc/ssh/sshd_config - add "hostname" to ~/.ssh/config with port and hint for pw

run once: - syncthing install and start

update and check installed programs

a ansible role

install programs not in debian repository

ansible roles for each addition - syncthing (used in once only) [] -- 6 years old. I write my own.



Dconf is the tool in MATE to maintain the configuration. A broad approach is to load all of an example configuration with dconf dump \ and a corresponding dconf load \.

Eventually a dump and load for each application may be better.

What configurations are not included in the full dump?

before load, make a dump and name it with host and date.

footnote: for a complete dump dconf dump / > someFile for just the mate configurations: dconf dump /org/mate/ > someFile

All the MATE applications seem to store their configuration in dconf, leaves to find solutions for others: - vscode: keeps configuration synced (proprietary solution of MS) - email: currently trying geary, check balsa - ghc: - latex:

In dconf is more: /org/gnome/geary/ /org/gnome/meld/ /org/gnome/Disks/ /org/gtk/settings/

Not used anymore: fileroller, gedit, evolution, nemo


TODO: - what else?

TODO: test compiz apt install compiz compiz-mate compiz-plugins compiz-plugins-default compiz-plugins-extra compiz-plugins-experimental compizconfig-settings-manager

MOVE: Set-up required: - screen saver: never - keyboard US int alt-gr dead - filemanager: show hidden files, columns owner protection remove apps: xterm, uxterm, mousepad (pluma), thunar

Then access with ssh and do local ssh-copy-id nnn

on Target:
mkdir .config cd .config mkdir syncthing cd syncthing scp london:Data/install2/files2copy/.config/syncthing/config.xml . # scp london:Data/ . # cd Data/install2/files2copy/.config # ln -s xfce4 ~/.config/ # install the MATE config with dconf

check! ln -s geary ~/.config/geary # check cd ../.local/share # ln -s nemo ~/.local/share/

and install the rest

MOVE: sudo apt-get install dconf-editor

task in instalBasicDeb

task in installDesktopTools

add tools

sudo apt-get install  synaptic apt-xapian-index \
gparted   baobab \
avahi-ui-utils avahi-discover \
meld  git-gui cups \
raptor2-utils \
xournal gdebi  dos2unix \
geany gnome-disk-utility borgbackup system-config-printer \

input keyboard remove: nautilus xournal raptor2-utils lightdm gedit gedit-plugins file-roller nautilus sound-juicer ario
move: libicu-dev icu-devtools should go to ghc? cd

and xfce desktop

footnote: for debian, I used tasksel and then added the rest

old: unfortunately in buster this is only version 12; bullseye will give 14 which seems to have some support for backup of configuration. but we go now for MATE

sudo tasksel # MATE
sudo apt install firefox-esr jabref

OLD: sudo apt-get install \ xfce4 xfce4-goodies xfce4-whiskermenu-plugin tango-icon-theme gnome-icon-theme lightdm \ xorg synaptic apt-xapian-index \ xrdp network-manager-gnome \ gparted gnome-disk-utility gedit gedit-plugins baobab \ avahi-ui-utils \ meld file-roller git-gui cups \ firefox-esr nemo geary jabref

remove thunar thunderbird (if geary works)
duplicated remove avahi-daemon avahi-utils avahi-discover 
jabref should perhaps be installed separately

OLD: removed (duplicated) xfce4-terminal added to check: thunar-gtkhash (version 1.2-1) will be installed xfce4-indicator-plugin (version 2.3.4-2) will be installed xfce4-mount-plugin (version 1.1.3-2) will be installed xfce4-mpc-plugin (version 0.5.1-1) will be installed xfce4-statusnotifier-plugin (version 0.2.1-1) will be installed xfwm4-theme-breeze (version 0.1.0-4) done on hallwil london10

To use newer versions, add backport and upgrade with apt upgrade -t buster-backports is required for each upgrade!

seems not to give anything useful

muhen all done!

add to repository list

syncthing - role

must have scp install2 (to have the syncthing config.xml) on target make the dir .conf/synthing then
scp config.xml target:.config/syncthing/config.xml

instructions curl -s | sudo apt-key add - echo "deb syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt update; sudo apt install syncthing

set up sudo su echo "fs.inotify.maxuserwatches=401001" >> /etc/sysctl.conf dann sudo sysctl -p -- muss 401001 zeigen

docker - missing role

for arm64 curl -fsSL | sudo apt-key add - curl -sSL | sh -- problem with ubuntu sudo adduser frank docker docker login andrewufrank # g5docker --fails?

#    curl -fsSL -o  
#    sudo sh  
sudo add-apt-repository "deb buster  stable"    
sudo apt-get install docker-ce docker-ce-cli
sudo usermod -aG docker !your-user! 
sudo docker run hello-world  # (nur ein test)  

done seon, not done muhen


curl -fsSL | sudo bash -s -- --update

done on hallwil london10 seon

vscode - role

for AMD # sudo apt install software-properties-common apt-transport-https curl curl -sSL | sudo apt-key add - add to /etc/apt/rep sudo add-apt-repository "deb stable main"

for ARM: install deb and install with wget gdebi linux-arm64-deb

(code stored in Data/install2)

OLD: copy files in .vscode (all) from Data/install2/files2copy

turn on settings sync (preferences->settings->sync) or from Manage button (gear at bottom) - authorize with github account andrewufrank (g5github) - sync all (merger if the machine is not a new install)

OLD greeters for login

The installed RP14 installed lightdm is setup to boot only the Raspberry OS.

apt install slim 

The problem remains, that to shutdown/power-off must use the CLI shutdown 0

OLD individual values

Values must be set individually for - /etc/hostname, e.g. hallwil

raspi requires: - sudo systemctl enable ssh - sudo systemctl start ssh

install users -- role

User accounts must be created for - AMD debian: if required for during installation: 1000 - frankadmin or pi - frank (1010), andrew (1014), christine (1012), giorgio (1016), auf(1018) - add frank to sudo and docker

done frank on hallwil,seon,muhen

on target computer


Should work; needs apt install network-manager network-manager-gnome

Assure that the NetworkManger.conf says managed=false and the directory /etc/network/interfaces.d is empty and the file interfaces does not include anything on the interfaces of interest.

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

# The loopback network interface
auto lo
iface lo inet loopback

Check that /etc/hosts contains localhost seon.local seon

# The following lines are desirable for IPv6 capable hosts
::1		localhost ip6-localhost ip6-loopback
ff02::1		ip6-allnodes
ff02::2		ip6-allrouters

syncthing for a user

The file .config/syncthing/config.xml is copied to user. Start syncthing (not root!). Opens automatically browser (user giorgio pw gg).

Open browser on source computer (London) and allow connection for all folders. Should sync!

TODO: needs cleanup: no afhome, install -- some unused devices

Missing: sudo systemctl enable to start automatically on next boot.


copied only the config file from london10 (which has minimal). do not copy other files which were created by running syncthing initially in the user's directory.

starts with the problem to try to connect to itself. needs edit?

check that connected to proper servers. hallwil must be connected to london10 (VKRDW), seon the same.

TODO: fix connections for syncthing

check with systemctl start journalctl -f if ok, then enable to restart: systemctl enable

TODO: some issue when upgrading in apt to version from syncthing

Desktop MATE

get all the configuration with regular start then cd Data/install2/ dconf dump /org/mate/ > Data/dconfDumpNNN1 dconf load /org/mate/ < Data/dconfDumpLondon4

The existing dumps are visible; select the number for a dump one higher than the dump loaded! I.e. when loading last was dconfDumpSeon5 then save dconfDumpLondon6 (and not one higher than the last dump from london).

TODO: what is not copied? color of mate terminal?

OLD: Desktop XFCE

The installation of the desktop is per user.

With xfce-panel-switch deb package; install with gdebi (stored in Data/install2)

install the stored configuration. The configuration is in ~/.conv/xfce4 directory. logout of user (xfce overwrites configuration when stopping!). Details

install xfce4-panel-profiles deb. Install with gdebi. Allows to store a profile and restore it.

Current best: londonDeb10. Not yet proper switch

## Filemanager: rejected: Thunar

There are many filemanagers available; XFCE comes with Thunar. It is extensible with actions. They are stored in the .config/xfce4 directory.

Add action for meld. Do not automatically mount.

How to sync the installations? `.conf/xfce is a link into the synchronized Data folder.

Filemanager: rejected: Nemo

This is a fork from Nautilus. It stores its addons separately in .local/share/Nemo. see

Filemanager: caja

add - caja-open-terminal - caja-admin - caja-sendto - caja-image-converter - caja-gtkhash - caja-rename

apt install caja-open-terminal caja-admin caja-sendto caja-image-converter caja-gtkhash caja-rename

see this on dconf

meld is triggered with 'open with' when selecting two or more files, then make that meld is not default!

actions in general

added clipit and diodon - unclear how xfce-clipman could be installed

email Geary

Instead of Thunderbird, which I have used for years, I try to install Geary. Thunderbird has a very complex data structure and I do not see where the minimal profile is stored (and not all sorts of current state, email etc); the Thunderbird profile file is 6 GB, because it includes the current email.

Install with synaptic (apt install) and force version 3.34 from backports.

add 3 emails: gerastree,, . For gmail I have to allow less secure devices in google account login. (

seems not too simple; some problems with duplicating. seems not to work when a configuration is copied, but not the mail folder. should be required only initially.

required new installation of accounts,probably some confusion in the copy process (only 2 of 3 accounts were there)

needs to test - use of older archives - spam filter

Geary seems not to work for my way of doing things; I have very large mailboxes and I most search. Geary blochs (hangs) when searching in large collections. It seems not to deal with archiving.

TODO: clean up mailbox

email Evolution

Evolution is GNOME based and uses dconf for the configuration data. It uses seahorse and the GNOME keystore for the passwords etc. (same as the passwords for ssh, pgp). The application seems to be much more mature than Geary (to bad for Geary) and has a modern GUI.

email storage of email

try mailpiler, mailarchive, offlineIMAP

The simples is to store mails per year (as I did so far) and quarter, received (in) and sent (out) as berkley mailbox MBOX wiki

Disk storage

When the current desktop should be in 120 .. 240 GB then additional data storage is on the syncservers and accessed with NFS: - archive - amd/ard software - photos: several directories - music


OPEN: questions, problems


create a debian 11 (butcher)

add alias

borg --exclude /media/*, /sys, /proc df -h du -hd1 | sort -h


panel where problem with switch workspaces

compare xfce with mate

some similar stuff at the bottom issue xfce is not the newest?

Contacts etc.

ueber server mit caldav


should I use catfish or is the search in thunar ok?

automatic update

TODO: set up


I have 3 accounts: - for private (non-GIS professional) mail; avoid lists!

TODO: move recovery to another list?

have a folder listsYEAR in tuwien and move all much traffic stuff there. what can be automated?

remove lists which i am not interested anymore: atom removed, to remove: couchdb

try evolution!

Produced with SGG on with master5.dtpl.