<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.sternwarte.uni-erlangen.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stierhof</id>
	<title>Remeis-Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.sternwarte.uni-erlangen.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stierhof"/>
	<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php/Special:Contributions/Stierhof"/>
	<updated>2026-05-27T08:09:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.7</generator>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Python/Conda&amp;diff=4033</id>
		<title>Python/Conda</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Python/Conda&amp;diff=4033"/>
		<updated>2026-03-26T16:58:50Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Created page with &amp;quot;Because of the many dependency problems that come with python packages and software that depend on python packages, the admins of the remeis cluster are only providing a minim...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Because of the many dependency problems that come with python packages and software that depend on python packages, the admins of the remeis cluster are only providing a minimal set of python modules necessary for the system to function. These packages can not be adjusted and due to the aforementioned dependency problems packages will not be installed on request.&lt;br /&gt;
&lt;br /&gt;
To provide you with the python packages you need, a global conda version is installed which can be accessed through the module system&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;module load conda&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The default environment ==&lt;br /&gt;
&lt;br /&gt;
The default conda environment can be activated with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;conda activate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This environment provides a standard set of tools, but is also used to provide dependencies for other software installed on the cluster. Due to this it might not suit your needs. Therefore it is best to create an environment for your requirements specifically.&lt;br /&gt;
&lt;br /&gt;
== Create a custom environment ==&lt;br /&gt;
&lt;br /&gt;
The conda installation is set up such that environments will per default be created in a shared location which allows them to be easily shared and reduces the space that they use up. This is, however, an experimental feature and might create problems. So in case you run into any issue please let the [mailto:admins@sternwarte.uni-erlangen.de admins] know.&lt;br /&gt;
&lt;br /&gt;
To create an environment it is sufficient to issue&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;conda create -n your_env&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if you already know what packages you need in the environment they can be added as additional arguments to the call. To activate the newly created environment use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;conda activate your_env&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this environment (indicated by the change of the prompt) you can install packages with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;conda install &amp;lt;package-name&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consolidate the conda manual for help on how to manage environments.&lt;br /&gt;
&lt;br /&gt;
To deactive the environment enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;conda deactivate&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Meggie_Cluster&amp;diff=4020</id>
		<title>Meggie Cluster</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Meggie_Cluster&amp;diff=4020"/>
		<updated>2026-02-27T14:37:35Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Admin]]&lt;br /&gt;
&lt;br /&gt;
The meggies are diskless nodes inherited from the RRZE used from computing only. We would like to boot them from the network. NFS and iSCSI are two options to accomplish this. Since iSCSI is directly supported by the UEFI of the nodes this is the option which is by far the easiest to implement.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
The main boards are S2600KPR from Intel. Four of those are in a 2U chassis, called H2000G. The rails for the installation are called AXXELVRAIL.&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== OS setup ===&lt;br /&gt;
* &amp;lt;s&amp;gt;Make the installer recognize the iSCSI LUN as a block device before searching for those&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Supply LUN information directly to the UEFI via DHCP&amp;lt;/s&amp;gt;&lt;br /&gt;
* Test what happens on iSCSI connection problems&lt;br /&gt;
** Switch malfunction&lt;br /&gt;
** iSCSI server reboot&lt;br /&gt;
** It doesn't take long until the kernel gives up on the iSCSI target. We need to increase this timeout somehow&lt;br /&gt;
* &amp;lt;s&amp;gt;Make a list of UEFI settings&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Prepare LUNs&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Use ZFS zvols as storage backend&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Find out which backend type is the best (file, block, SCSI passthrough)&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Create a separate dataset for easier zfs setting propagation&amp;lt;/s&amp;gt;&lt;br /&gt;
** Leave a README file in the dataset directory for other people to know that it shouldn't be deleted&lt;br /&gt;
** Optimize dataset settings for iSCSI targets&lt;br /&gt;
*** Compression lz4&lt;br /&gt;
*** Larger &amp;lt;code&amp;gt;recordsize&amp;lt;/code&amp;gt; (1M or something)&lt;br /&gt;
** &amp;lt;s&amp;gt;Name the zvols &amp;lt;code&amp;gt;zvol-MM-m&amp;lt;/code&amp;gt; where MM is the chassis number from 01 to 20 and m the node number from 1 to 4&amp;lt;/s&amp;gt;&lt;br /&gt;
* Remove the stupid /swap.img file. This is a general point affecting all computers&lt;br /&gt;
* Adjust puppet&lt;br /&gt;
** &amp;lt;s&amp;gt;Make no scratch available&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Make /tmp and friends a tmpfs&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Restrict sizes of all tmpfs&amp;lt;/s&amp;gt;&lt;br /&gt;
** Remove unnecessary user stuff? (e.g. x2go, firefox, etc.)&lt;br /&gt;
* Reinstall to Ubuntu 24.0&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup ===&lt;br /&gt;
* Install nodes in a rack&lt;br /&gt;
* Buy and set up up switches&lt;br /&gt;
* Lots of cabling&lt;br /&gt;
* Power requirements?&lt;br /&gt;
** Ca. 250W per node, 1kW per chassis&lt;br /&gt;
* &amp;lt;s&amp;gt;Change batteries in all nodes&amp;lt;/s&amp;gt;&lt;br /&gt;
* Intel Hyper Threading often goes back to Enabled (double check that it is Disabled) &lt;br /&gt;
&lt;br /&gt;
== The Boot Process ==&lt;br /&gt;
&lt;br /&gt;
=== General layout ===&lt;br /&gt;
The boot process works like this:&lt;br /&gt;
# UEFI stage&lt;br /&gt;
## The UEFI starts up&lt;br /&gt;
## Establishes a connection to the network&lt;br /&gt;
## Runs a DHCP client&lt;br /&gt;
## Gets an IP as well as the iSCSI LUN information directly from our DHCP server&lt;br /&gt;
## Accesses the GPT on the LUN and loads grub&lt;br /&gt;
# grub stage&lt;br /&gt;
## Grub starts&lt;br /&gt;
## Loads the kernel and initrd from the LUN&lt;br /&gt;
## Jumbs into the kernel&lt;br /&gt;
# ramdisk stage&lt;br /&gt;
## The kernel runs&lt;br /&gt;
## Mounts the initrd&lt;br /&gt;
## Inside the initrd our custom iSCSI hook is called&lt;br /&gt;
### Loads the iSCSI kernel module&lt;br /&gt;
### Loads the iSCSI iBFT kernel module&lt;br /&gt;
### Runs &amp;lt;code&amp;gt;iscsistart&amp;lt;/code&amp;gt; which makes the iSCSI LUN available as a block device&lt;br /&gt;
# Normal boot continues&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Further explanations ===&lt;br /&gt;
==== UEFI DHCP ====&lt;br /&gt;
The UEFI can talk to the DHCP server and get an IP. We use DHCP option 17 (root-path) to supply the iSCSI information to the nodes.&lt;br /&gt;
&lt;br /&gt;
==== grub ====&lt;br /&gt;
As of now we don't know why grub even works. It's installed on the efi partition on the LUN, just like a normal computer. The UEFI uses the information on this EFI partition to find grub and run it, and grub then sees the partitions of the installed OS. Either the UEFI somehow emulates a blockdevice for grub such that it can see these partitions and load the kernel and initrd, or grub somehow also does iSCSI by using the iBFT. Anyway, it loads the kernel and initrd, which is the most important part.&lt;br /&gt;
&lt;br /&gt;
==== iBFT ====&lt;br /&gt;
This is really cool. When the UEFI launches and gets iSCSI information from the DHCP server it puts this information into the EFI system table, the Boot Firmware Table (iBFT). Linux can use this information to connect to the same LUN used for the boot process and set up the block device before trying to mount the root partition. The necessary kernel module is called &amp;lt;code&amp;gt;iscsi_ibft&amp;lt;/code&amp;gt;. After the module is loaded its only a matter of calling the &amp;lt;code&amp;gt;iscsistart&amp;lt;/code&amp;gt; program to set up the block device. All this needs to happen before root is mounted, therefore modifications to the initrd are necessary.&lt;br /&gt;
&lt;br /&gt;
==== initrd modifications ====&lt;br /&gt;
During the boot, when the kernel is running and mounted the initrd, the &amp;lt;code&amp;gt;iscsi_ibft&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iscsi_tcp&amp;lt;/code&amp;gt; modules need to be loaded, after which the block device can be created. To do this a hook needs to be installed in the initramfs. On ubuntu this can be done by putting files into the &amp;lt;code&amp;gt;/etc/initramfs-tools/scripts&amp;lt;/code&amp;gt; directory (or rather subdirectories). The hook for the iSCSI setup need to happen after the network is available, which means the hook needs to be put in the &amp;lt;code&amp;gt;local-top&amp;lt;/code&amp;gt; directory and made executable. The content is:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# iSCSI init script&lt;br /&gt;
PREREQ=&amp;quot;&amp;quot;&lt;br /&gt;
prereqs()&lt;br /&gt;
{&lt;br /&gt;
     echo &amp;quot;$PREREQ&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case $1 in&lt;br /&gt;
prereqs)&lt;br /&gt;
     prereqs&lt;br /&gt;
     exit 0&lt;br /&gt;
     ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
. /scripts/functions&lt;br /&gt;
&lt;br /&gt;
log_begin_msg &amp;quot;Begin iSCSI init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
modprobe iscsi_tcp&lt;br /&gt;
modprobe iscsi_ibft&lt;br /&gt;
&lt;br /&gt;
log_begin_msg &amp;quot;Network configuration based on iBFT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
iscsistart -N || panic &amp;quot;Could not initialize iSCSI&amp;quot;&lt;br /&gt;
&lt;br /&gt;
log_begin_msg &amp;quot;Waiting to finish iscsistart&amp;quot;&lt;br /&gt;
until iscsistart -b ; do&lt;br /&gt;
    sleep 1&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Of course the script needs to be made executable. After that the initial ramdisk(s) need to be regenerated by calling &amp;lt;code&amp;gt;update-initramfs -u&amp;lt;/code&amp;gt;. When the script is called during the boot process the block device exists for the kernel to mount the root filesystem and continue the boot process as normal.&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
Unfortunately we can't completely rely on the normal installation process because Ubuntu by default doesn't use the iBFT to set up an iSCSI LUN before the installer searches for block devices to install on. We could get around this by simply switching to a TTY, running &amp;lt;code&amp;gt;iscsistart&amp;lt;/code&amp;gt; and relaunching the installer, which then identified the block device and proceeded as normal. Since this entire stuff runs off LUNs on the network we can potentially completely get around the installation by just preparing enough LUNS with the appropriate data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== iSCSI targets ===&lt;br /&gt;
In the home directory of the ubuntuamdin are in the folder iscsi/ scripts for generating the images in the zfs subvolume &amp;lt;code&amp;gt; pool/iscsi &amp;lt;/code&amp;gt; (called: &amp;lt;code&amp;gt;generate_zfs_images.sh&amp;lt;/code&amp;gt;). Then the iscsi targets are being created with: &amp;lt;code&amp;gt;create_iscsi_targets.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
With &amp;lt;code&amp;gt;destroy_all_zfs_images.sh&amp;lt;/code&amp;gt; everything can be reverted.&lt;br /&gt;
The root filesystem size for each node is 80.8GB.&lt;br /&gt;
Once created, they shouldn't be touched unless nodes are failing and we want to delete unnecessary images.&lt;br /&gt;
&lt;br /&gt;
== UEFI settings ==&lt;br /&gt;
Settings applied after resetting the UEFI to default settings:&lt;br /&gt;
&lt;br /&gt;
Enter the BIOS menu by pressing F2.&lt;br /&gt;
&lt;br /&gt;
In the settings, first RESET everything to default.&lt;br /&gt;
Then those changes should be made:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Main&lt;br /&gt;
  --&amp;gt; Quiet Boot: Disabled&lt;br /&gt;
Advanced&lt;br /&gt;
  --&amp;gt; Processor Configuration&lt;br /&gt;
    --&amp;gt; Intel Hyper Threading: Disabled&lt;br /&gt;
  --&amp;gt; Power &amp;amp; Performance&lt;br /&gt;
    --&amp;gt; CPU Power &amp;amp; Performance: Performance&lt;br /&gt;
    --&amp;gt; CPU HWPM State Control&lt;br /&gt;
      --&amp;gt; Enable CPU HWPM: HWPM Native Mode&lt;br /&gt;
  --&amp;gt; PCI Configuration&lt;br /&gt;
    --&amp;gt; NIC Configuration&lt;br /&gt;
      --&amp;gt; NIC Port 2: Disabled&lt;br /&gt;
Server Management&lt;br /&gt;
  --&amp;gt; Clear System Event Log: Clear it here&lt;br /&gt;
Advanced Boot Options&lt;br /&gt;
  --&amp;gt; System Boot Timeout: 10&lt;br /&gt;
  --&amp;gt; Bood Mode: UEFI&lt;br /&gt;
  --&amp;gt; Boot Option Retry: Enabled&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
REBOOT the system (with e.g. ALT + CMD + DEL)&lt;br /&gt;
Then change again in the BIOS settings:&lt;br /&gt;
&lt;br /&gt;
Intel Hyper Threading  often goes back to Enabled (double check that it is Disabled)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Advanced&lt;br /&gt;
  --&amp;gt; PCI Configuration&lt;br /&gt;
    --&amp;gt; UEFI Network Stack&lt;br /&gt;
      --&amp;gt;IPv6 PXE Support: Disabled&lt;br /&gt;
    --&amp;gt; UEFI Option ROM Control&lt;br /&gt;
      --&amp;gt; IPv4 Network Configuration&lt;br /&gt;
        --&amp;gt; Configured: [x]&lt;br /&gt;
        --&amp;gt; Enable DHCP: [x]&lt;br /&gt;
    --&amp;gt; iSCSI Configuration&lt;br /&gt;
      --&amp;gt; iSCSI Initiator Name: Format is: iqn.1886.de.sternwarte.iscsi:meggie-x-y &lt;br /&gt;
                                where x: rack number (01 is top, 20 is the lowest rack); &lt;br /&gt;
                                      y: |-----|-----| for one rack are 4 nodes.&lt;br /&gt;
                                         |  1  |  2  |&lt;br /&gt;
                                         |-----|-----|&lt;br /&gt;
                                         |  3  |  4  |&lt;br /&gt;
                                         |-----|-----|&lt;br /&gt;
                                         eg: iqn.1886.de.sternwarte.iscsi:meggie-11-1 for node in rack 11 and place 1&lt;br /&gt;
    --&amp;gt; Add an Attempt&lt;br /&gt;
      --&amp;gt; MAC-address&lt;br /&gt;
        --&amp;gt; iSCSI Mode: Enabled&lt;br /&gt;
        --&amp;gt; Connection Retry Count: 2&lt;br /&gt;
        --&amp;gt; Connection Establishing Timeout: 5000&lt;br /&gt;
        --&amp;gt; Enable DHCP: [x]&lt;br /&gt;
        --&amp;gt; Get target info via DHCP: [x]&lt;br /&gt;
        --&amp;gt; Authentication Type: None&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
REBOOT and press F6 to enter the boot menu:&lt;br /&gt;
&lt;br /&gt;
Go to IP based booting option (should be the last of the three) &lt;br /&gt;
Select partition:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Ubuntu 24.4 puppet iSCSI autopartition --DO NOT USE IF NO IDEA--&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be careful, because there exist also other versions like blank.&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Meggie_Cluster&amp;diff=4019</id>
		<title>Meggie Cluster</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Meggie_Cluster&amp;diff=4019"/>
		<updated>2026-02-27T13:11:27Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Admin]]&lt;br /&gt;
&lt;br /&gt;
The meggies are diskless nodes inherited from the RRZE used from computing only. We would like to boot them from the network. NFS and iSCSI are two options to accomplish this. Since iSCSI is directly supported by the UEFI of the nodes this is the option which is by far the easiest to implement.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
The main boards are S2600KPR from Intel. Four of those are in a 2U chassis, called H2000G. The rails for the installation are called AXXELVRAIL.&lt;br /&gt;
&lt;br /&gt;
== To Do List ==&lt;br /&gt;
&lt;br /&gt;
=== OS setup ===&lt;br /&gt;
* &amp;lt;s&amp;gt;Make the installer recognize the iSCSI LUN as a block device before searching for those&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Supply LUN information directly to the UEFI via DHCP&amp;lt;/s&amp;gt;&lt;br /&gt;
* Test what happens on iSCSI connection problems&lt;br /&gt;
** Switch malfunction&lt;br /&gt;
** iSCSI server reboot&lt;br /&gt;
** It doesn't take long until the kernel gives up on the iSCSI target. We need to increase this timeout somehow&lt;br /&gt;
* &amp;lt;s&amp;gt;Make a list of UEFI settings&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Prepare LUNs&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Use ZFS zvols as storage backend&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Find out which backend type is the best (file, block, SCSI passthrough)&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Create a separate dataset for easier zfs setting propagation&amp;lt;/s&amp;gt;&lt;br /&gt;
** Leave a README file in the dataset directory for other people to know that it shouldn't be deleted&lt;br /&gt;
** Optimize dataset settings for iSCSI targets&lt;br /&gt;
*** Compression lz4&lt;br /&gt;
*** Larger &amp;lt;code&amp;gt;recordsize&amp;lt;/code&amp;gt; (1M or something)&lt;br /&gt;
** &amp;lt;s&amp;gt;Name the zvols &amp;lt;code&amp;gt;zvol-MM-m&amp;lt;/code&amp;gt; where MM is the chassis number from 01 to 20 and m the node number from 1 to 4&amp;lt;/s&amp;gt;&lt;br /&gt;
* Remove the stupid /swap.img file. This is a general point affecting all computers&lt;br /&gt;
* Adjust puppet&lt;br /&gt;
** &amp;lt;s&amp;gt;Make no scratch available&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Make /tmp and friends a tmpfs&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Restrict sizes of all tmpfs&amp;lt;/s&amp;gt;&lt;br /&gt;
** Remove unnecessary user stuff? (e.g. x2go, firefox, etc.)&lt;br /&gt;
* Reinstall to Ubuntu 24.0&lt;br /&gt;
&lt;br /&gt;
=== Hardware setup ===&lt;br /&gt;
* Install nodes in a rack&lt;br /&gt;
* Buy and set up up switches&lt;br /&gt;
* Lots of cabling&lt;br /&gt;
* Power requirements?&lt;br /&gt;
** Ca. 250W per node, 1kW per chassis&lt;br /&gt;
* &amp;lt;s&amp;gt;Change batteries in all nodes&amp;lt;/s&amp;gt;&lt;br /&gt;
* Intel Hyper Threading often goes back to Enabled (double check that it is Disabled) &lt;br /&gt;
&lt;br /&gt;
== The Boot Process ==&lt;br /&gt;
&lt;br /&gt;
=== General layout ===&lt;br /&gt;
The boot process works like this:&lt;br /&gt;
# UEFI stage&lt;br /&gt;
## The UEFI starts up&lt;br /&gt;
## Establishes a connection to the network&lt;br /&gt;
## Runs a DHCP client&lt;br /&gt;
## Gets an IP as well as the iSCSI LUN information directly from our DHCP server&lt;br /&gt;
## Accesses the GPT on the LUN and loads grub&lt;br /&gt;
# grub stage&lt;br /&gt;
## Grub starts&lt;br /&gt;
## Loads the kernel and initrd from the LUN&lt;br /&gt;
## Jumbs into the kernel&lt;br /&gt;
# ramdisk stage&lt;br /&gt;
## The kernel runs&lt;br /&gt;
## Mounts the initrd&lt;br /&gt;
## Inside the initrd our custom iSCSI hook is called&lt;br /&gt;
### Loads the iSCSI kernel module&lt;br /&gt;
### Loads the iSCSI iBFT kernel module&lt;br /&gt;
### Runs &amp;lt;code&amp;gt;iscsistart&amp;lt;/code&amp;gt; which makes the iSCSI LUN available as a block device&lt;br /&gt;
# Normal boot continues&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Further explanations ===&lt;br /&gt;
==== UEFI DHCP ====&lt;br /&gt;
The UEFI can talk to the DHCP server and get an IP. We use DHCP option 17 (root-path) to supply the iSCSI information to the nodes.&lt;br /&gt;
&lt;br /&gt;
==== grub ====&lt;br /&gt;
As of now we don't know why grub even works. It's installed on the efi partition on the LUN, just like a normal computer. The UEFI uses the information on this EFI partition to find grub and run it, and grub then sees the partitions of the installed OS. Either the UEFI somehow emulates a blockdevice for grub such that it can see these partitions and load the kernel and initrd, or grub somehow also does iSCSI by using the iBFT. Anyway, it loads the kernel and initrd, which is the most important part.&lt;br /&gt;
&lt;br /&gt;
==== iBFT ====&lt;br /&gt;
This is really cool. When the UEFI launches and gets iSCSI information from the DHCP server it puts this information into the EFI system table, the Boot Firmware Table (iBFT). Linux can use this information to connect to the same LUN used for the boot process and set up the block device before trying to mount the root partition. The necessary kernel module is called &amp;lt;code&amp;gt;iscsi_ibft&amp;lt;/code&amp;gt;. After the module is loaded its only a matter of calling the &amp;lt;code&amp;gt;iscsistart&amp;lt;/code&amp;gt; program to set up the block device. All this needs to happen before root is mounted, therefore modifications to the initrd are necessary.&lt;br /&gt;
&lt;br /&gt;
==== initrd modifications ====&lt;br /&gt;
During the boot, when the kernel is running and mounted the initrd, the &amp;lt;code&amp;gt;iscsi_ibft&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iscsi_tcp&amp;lt;/code&amp;gt; modules need to be loaded, after which the block device can be created. To do this a hook needs to be installed in the initramfs. On ubuntu this can be done by putting files into the &amp;lt;code&amp;gt;/etc/initramfs-tools/scripts&amp;lt;/code&amp;gt; directory (or rather subdirectories). The hook for the iSCSI setup need to happen after the network is available, which means the hook needs to be put in the &amp;lt;code&amp;gt;local-top&amp;lt;/code&amp;gt; directory and made executable. The content is:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# iSCSI init script&lt;br /&gt;
PREREQ=&amp;quot;&amp;quot;&lt;br /&gt;
prereqs()&lt;br /&gt;
{&lt;br /&gt;
     echo &amp;quot;$PREREQ&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case $1 in&lt;br /&gt;
prereqs)&lt;br /&gt;
     prereqs&lt;br /&gt;
     exit 0&lt;br /&gt;
     ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
. /scripts/functions&lt;br /&gt;
&lt;br /&gt;
log_begin_msg &amp;quot;Begin iSCSI init&amp;quot;&lt;br /&gt;
&lt;br /&gt;
modprobe iscsi_tcp&lt;br /&gt;
modprobe iscsi_ibft&lt;br /&gt;
&lt;br /&gt;
log_begin_msg &amp;quot;Network configuration based on iBFT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
iscsistart -N || panic &amp;quot;Could not initialize iSCSI&amp;quot;&lt;br /&gt;
&lt;br /&gt;
log_begin_msg &amp;quot;Waiting to finish iscsistart&amp;quot;&lt;br /&gt;
until iscsistart -b ; do&lt;br /&gt;
    sleep 1&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Of course the script needs to be made executable. After that the initial ramdisk(s) need to be regenerated by calling &amp;lt;code&amp;gt;update-initramfs -u&amp;lt;/code&amp;gt;. When the script is called during the boot process the block device exists for the kernel to mount the root filesystem and continue the boot process as normal.&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
Unfortunately we can't completely rely on the normal installation process because Ubuntu by default doesn't use the iBFT to set up an iSCSI LUN before the installer searches for block devices to install on. We could get around this by simply switching to a TTY, running &amp;lt;code&amp;gt;iscsistart&amp;lt;/code&amp;gt; and relaunching the installer, which then identified the block device and proceeded as normal. Since this entire stuff runs off LUNs on the network we can potentially completely get around the installation by just preparing enough LUNS with the appropriate data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== iSCSI targets ===&lt;br /&gt;
In the home directory of the ubuntuamdin are in the folder iscsi/ scripts for generating the images in the zfs subvolume &amp;lt;code&amp;gt; pool/iscsi &amp;lt;/code&amp;gt; (called: &amp;lt;code&amp;gt;generate_zfs_images.sh&amp;lt;/code&amp;gt;). Then the iscsi targets are being created with: &amp;lt;code&amp;gt;create_iscsi_targets.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
With &amp;lt;code&amp;gt;destroy_all_zfs_images.sh&amp;lt;/code&amp;gt; everything can be reverted.&lt;br /&gt;
The root filesystem size for each node is 80.8GB.&lt;br /&gt;
Once created, they shouldn't be touched unless nodes are failing and we want to delete unnecessary images.&lt;br /&gt;
&lt;br /&gt;
== UEFI settings ==&lt;br /&gt;
Settings applied after resetting the UEFI to default settings:&lt;br /&gt;
&lt;br /&gt;
Enter the BIOS menu by pressing F2.&lt;br /&gt;
&lt;br /&gt;
In the settings, first RESET everything to default.&lt;br /&gt;
Then those changes should be made:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Main&lt;br /&gt;
  --&amp;gt; Quiet Boot: Disabled&lt;br /&gt;
Advanced&lt;br /&gt;
  --&amp;gt; Processor Configuration&lt;br /&gt;
    --&amp;gt; Intel Hyper Threading: Disabled&lt;br /&gt;
  --&amp;gt; Power &amp;amp; Performance&lt;br /&gt;
    --&amp;gt; CPU Power &amp;amp; Performance: Performance&lt;br /&gt;
    --&amp;gt; CPU HWPM State Control&lt;br /&gt;
      --&amp;gt; Enable CPU HWPM: HWPM Native Mode&lt;br /&gt;
  --&amp;gt; PCI Configuration&lt;br /&gt;
    --&amp;gt; NIC Configuration&lt;br /&gt;
      --&amp;gt; NIC Port 2: Disabled&lt;br /&gt;
Server Management&lt;br /&gt;
  --&amp;gt; Clear System Event Log: Clear it here&lt;br /&gt;
Advanced Boot Options&lt;br /&gt;
  --&amp;gt; System Boot Timeout: 10&lt;br /&gt;
  --&amp;gt; Bood Mode: UEFI&lt;br /&gt;
  --&amp;gt; Boot Option Retry: Enabled&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
REBOOT the system (with e.g. ALT + CMD + DEL)&lt;br /&gt;
Then change again in the BIOS settings:&lt;br /&gt;
&lt;br /&gt;
Intel Hyper Threading  often goes back to Enabled (double check that it is Disabled)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Advanced&lt;br /&gt;
  --&amp;gt; PCI Configuration&lt;br /&gt;
    --&amp;gt; UEFI Network Stack&lt;br /&gt;
      --&amp;gt;IPv6 PXE Support: Disabled&lt;br /&gt;
    --&amp;gt; UEFI Option ROM Control&lt;br /&gt;
      --&amp;gt; IPv4 Network Configuration&lt;br /&gt;
        --&amp;gt; Configured: [x]&lt;br /&gt;
        --&amp;gt; Enable DHCP: [x]&lt;br /&gt;
    --&amp;gt; iSCSI Configuration&lt;br /&gt;
      --&amp;gt; iSCSI Initiator Name: Format is: iqn.1886.de.sternwarte.iscsi:meggie-x-y &lt;br /&gt;
                                where x: rack number (01 is top, 20 is the lowest rack); &lt;br /&gt;
                                      y: |-----|-----| for one rack are 4 nodes.&lt;br /&gt;
                                         |  1  |  2  |&lt;br /&gt;
                                         |-----|-----|&lt;br /&gt;
                                         |  3  |  4  |&lt;br /&gt;
                                         |-----|-----|&lt;br /&gt;
                                         eg: iqn.1886.de.sternwarte.iscsi:meggie-11-1 for node in rack 11 and place 1&lt;br /&gt;
    --&amp;gt; Add an Attempt&lt;br /&gt;
      --&amp;gt; MAC-address&lt;br /&gt;
        --&amp;gt; iSCSI Mode: Enabled&lt;br /&gt;
        --&amp;gt; Connection Retry Count: 2&lt;br /&gt;
        --&amp;gt; Connection Establishing Timeout: 5000&lt;br /&gt;
        --&amp;gt; Enable DHCP: [x]&lt;br /&gt;
        --&amp;gt; Get target info via DHCP: [x]&lt;br /&gt;
        --&amp;gt; Authentication Type: None&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
REBOOT and press F6 to enter the boot menu:&lt;br /&gt;
&lt;br /&gt;
Go to IP based booting option (should be the last of the three) &lt;br /&gt;
Select partition:&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
Ubuntu 20.4 puppet iSCSI autopartition --DO NOT USE IF NO IDEA--&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be careful, because there exist also other versions like blank.&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=4016</id>
		<title>Plot gallery</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=4016"/>
		<updated>2026-02-16T09:37:45Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Remeis X-fig plot gallery =&lt;br /&gt;
&lt;br /&gt;
Please add your with &amp;lt;code&amp;gt;slxfig&amp;lt;/code&amp;gt; created plots! Preferably format: clickable image of your final product, leading to the s-lang code (with or without comments). When uploading pictures, please don't forget to give them a '''unique''' name, as they are all stored in one directory.&lt;br /&gt;
&lt;br /&gt;
A cool website for generating color-blind friendly patterns: https://coolors.co/121619-2d4739-09814a-bcb382-e5c687. You can set the colors just by using the hex codes in xfig or tikz. &lt;br /&gt;
&lt;br /&gt;
=== Mike's Fancy Plots ===&lt;br /&gt;
[[File:fancy_plot.png|400px|link=Mike's fancy plots (xfig example)]] Plotting spectra in the way of Mike's fancy plots&lt;br /&gt;
&lt;br /&gt;
=== Plotting Model Components ===&lt;br /&gt;
[[File:plot_individual_components.png|400px|link=Plotting Model Components (xfig example)]] Plotting individual model components&lt;br /&gt;
&lt;br /&gt;
=== Color-coded maps with png and xfig ===&lt;br /&gt;
[[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|How to plot a color-coded map (landscape) using png and xfig]]&lt;br /&gt;
&lt;br /&gt;
=== Two-dimensional histograms ===&lt;br /&gt;
&lt;br /&gt;
[[File:banana-plot.png|400px|link=Two-dimensional_histograms_(xfig_example)]] banana-plot with coordinate system —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Compounds and multiplots ===&lt;br /&gt;
[[File:multiplot_and_plot.png|300px|link=compounds and multi-panel plots (xfig example)]] Compounds and multi-panel plots —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parameter-space sketches ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chisqr_parabola.png|300px|link=Chi-squared_parabola_(xfig_example)]] [[File:Chisqr_ellipse.png|200px|link=Chi-squared_contours_(xfig_example)]]&lt;br /&gt;
Simple plots to sketch the meaning of sigma-values in 1-dim or 2-dim chi-squared parameter spaces. (MB: Be aware that the n-sigma projection of 2D contours on one parameter differs from the n-sigma levels obtained for only this parameter (1D), as the delta-chi^2 (or delta statistic) depends on the number of parameters.)&lt;br /&gt;
Author  — ''[mailto:Tobias.Beuchert@sternwarte.uni-erlangen.de Tobias Beuchert] 2013-01-07 13:41''&lt;br /&gt;
&lt;br /&gt;
=== Orbit plot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:gx301_skizze_nosuz2.png|300px|link=Orbit_plot_of_GX_301-2_(xfig_example)]] Orbit plot of GX 301-2, including the average ASM lightcurve folded on the orbit. [[:File:Gx301_skizze_nosuz2.pdf|Version in better resolution (pdf)]]. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:47''&lt;br /&gt;
&lt;br /&gt;
=== 4 colorful landscapes ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color_landsc_gx301.png|300px|link=Color_Landscapes_(xfig_example)]] Color-coded maps of count-rate distribution in the pulse-profile for different epochs. Very similar to what is shown in [[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|an example: plotting color-coded maps with the png and xfig modules]]. Writing out the PNG with a separate routine is not neccessary anymore I think, code is a little oldish. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:55''&lt;br /&gt;
&lt;br /&gt;
=== Contour plot ===&lt;br /&gt;
&lt;br /&gt;
[[File:Crsfcontours_xtej1946.png|300px|link=Contour_Plot_(xfig_example)]] Contour plot of the Cyclo line energy of XTE J1946+274.  — ''[mailto:Sebastian.Mueller@sternwarte.uni-erlangen.de Sebastian Mueller] 2012-05-30 15:53''&lt;br /&gt;
&lt;br /&gt;
=== 2D image contours ===&lt;br /&gt;
[[File:map2003_0_a570_cont_e.png|300px|link=2D_Map_SAA_(xfig_example)]] Map (2D histogram) of the South Atlantic Anomaly (SAA) overplotted with iso-magnetic field lines of the Earth's magnetic field. — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Colorful Cyg X-1 lightcurves ===&lt;br /&gt;
[[File:lc_cygx1.png|500px|link=Lightcurve_Cygx1_(xfig_example)]] &lt;br /&gt;
&lt;br /&gt;
Combining ''RXTE''-ASM, ''Swift''-BAT and ''MAXI'' lightcurves of Cyg X-1 in one plot. The ''RXTE'' lightcurve is color-coded for the low/hard (blue) and the high/soft (red) state. The colors for ''Swift'' are the same as for ''RXTE'' at the same time, or, when the ''RXTE'' lightcurve stops, as during times with similar count rates. ''MAXI'' has its own scale from black (low/hard) to grey (high/soft). Additionally, times of Chandra observations won by our group are indicated (AO13 was scheduled but then canceled). — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell] &amp;amp; [mailto:Ivica.Miskovicova@sternwarte.uni-erlangen.de Ivica Miškovičová]''&lt;br /&gt;
&lt;br /&gt;
=== Chandra coverage of Cyg X-1 ===&lt;br /&gt;
[[File:Chandra_coverage.png|300px|link=Chandra_Coverage_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Plot of the orbital coverage of Cyg X-1 with ''Chandra'' observations, including an example of how to calculate Roche lobes with isis. —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
 &lt;br /&gt;
=== Wind structure in Cyg X-1 ===&lt;br /&gt;
[[File:sketch.png|400px|link=Wind_structure_of_Cyg_X-1_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
You may not know, but you can draw basically anything with slxfig! Here is a very nice example from [http://adsabs.harvard.edu/abs/2011PhDT.........9H| Manfred's PhD thesis] (see Fig. 2.62 in there for an interpretation), describing our idea of the wind structure in the Cyg X-1 system.&lt;br /&gt;
&lt;br /&gt;
The plot includes a couple of very nice tricks. Slxfig provides a function to draw photons. The example also shows how to add existing eps files to the figure, and how to add your own functions to the structure saving the xfig plot. — ''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Linear-Logarithmic Axis ===&lt;br /&gt;
[[File:lin_log_axis.png|300px|link=Lin log axis (xfig example)]] Another example of a user defined axis (partially linear and logarithmic). — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting images with world coordinates ===&lt;br /&gt;
[[File:Cygx1_iras.png|300px|link=Satellite_Picture_Zoom_(xfig_example)]] 408 MHz and IRAS images of regions centered at the position of Cygnus X-1. The WCS module is used to show sky coordinates (galactic coordinate grid on the left, RA-DEC axis labels on the right)— ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Skyplot of source positions ===&lt;br /&gt;
[[File:source_skyplot.png|400px|link=Skyplot_of_source_positions_(xfig_example)]] Random source positions shown in an Aitoff projection of the sky in RA and DEC. The Galactic Plane is highlighted. — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Electromagnetic Spectrum ===&lt;br /&gt;
[[File:elmag.png|500px|link=Eletromagnetic_spectrum_(xfig_example)]] &lt;br /&gt;
Electromagnetic spectrum in energy, frequency and wavelength. Satellite energy ranges marked.&lt;br /&gt;
Original Script by [mailto:Cornellia.Mueller@sternwarte.uni-erlangen.de Cornelia Müller]&lt;br /&gt;
— ''[mailto:Felicia.Krauss@sternwarte.uni-erlangen.de Felicia Krauß]''&lt;br /&gt;
&lt;br /&gt;
=== Monster Lightcurve Plot ===&lt;br /&gt;
[[File:monster_lightcurve_vg.png|400px|link=Monsterlightcurve (xfig example)]]&lt;br /&gt;
Lightcurves from all all-sky monitors &amp;amp; time of individual pointed RXTE observations of Cyg X-1. — ''[mailto:Victoria.Grinberg@sternwarte.uni-erlangen.de Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Periodic Table ===&lt;br /&gt;
[[File:periodictable_nh.png|400px|link=Periodic_Table_of_the_Elements_(xfig_example)]]&lt;br /&gt;
Draw your own periodic table in only ~120 lines of code. Data is taken from the X-ray Data Booklet 2009. —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|400px|link=Lightbending_ptrace_(xfig_example)]]&lt;br /&gt;
Sketch of a relativistic photon trajectory. NOTE: &amp;quot;lbscripts&amp;quot; are required to execute the script. The path is set in the Script correctly, otherwise please contact me. — ''[mailto:Sebastian.Falkner@sternwarte.uni-erlangen.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Atomic processes ===&lt;br /&gt;
[[File:dr_nh.png|300px|link=Atomic_Processes_(xfig_example)]]&lt;br /&gt;
Make sketches of atomic processes such as di-electronic recombination (DR). Other possibilities include radiative recombination, auto-ionization, photo-ionization, ... —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Simple inset ===&lt;br /&gt;
[[Inset plot (xfig example)| Easy example for an inset]]&lt;br /&gt;
&lt;br /&gt;
=== Insets and shaded regions ===&lt;br /&gt;
[[File:1008batlcgiant2012.png|300px|link=Insets_and_shaded_regions_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and shading specific regions as well as labeling them. Furthermore, adding an inset plot showing an epoch folding result here.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Insets as zoom-ins ===&lt;br /&gt;
[[File:gx304batlcobs.png|300px|link=GX304batlcobs_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and adding zooms into the lightcurve showing the available observations.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Hertzsprung-Russell diagram ===&lt;br /&gt;
[[File:Hr_diagram.png|300px|link=Hertzsprung-Russell_diagram_(xfig_example)]]&lt;br /&gt;
A schematic Hertzsprung-Russell diagram —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== Colored data points ===&lt;br /&gt;
[[File:Colored_data_points.png|300px|link=Speedometer_Colorplot_(xfig_example)]]&lt;br /&gt;
&amp;quot;Speedometer&amp;quot;-like colormap for data points —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== 3D Maser Disk ===&lt;br /&gt;
[[File:disk_map.png|300px|link=3D_Maser_Disk_(xfig_example)]]&lt;br /&gt;
3D Maser disk and projections on 2D. —''&lt;br /&gt;
[mailto:Eugenia.Litzinger@sternwarte.uni-erlangen.de Eugenia Litzinger]''&lt;br /&gt;
&lt;br /&gt;
=== Angstrom and keV axes done properly in the same plot (axis coordinate transformation) ===&lt;br /&gt;
[[File:zoom.png|300px|link=Angstrom_to_keV_axis_transformation_(xfig_example)]]&lt;br /&gt;
Simple but extremely useful axis transformation; works both ways in spite of the name —''&lt;br /&gt;
[mailto:grinberg@space.mit.edu|Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D, simple ===&lt;br /&gt;
[[File:object3dsimple.png|300px|link=Object3dsimple (xfig example)]]&lt;br /&gt;
An simple example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D ===&lt;br /&gt;
[[File:object3d.png|300px|link=Object3d (xfig example)]]&lt;br /&gt;
An example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Calculating and plotting orbits in 3D ===&lt;br /&gt;
&lt;br /&gt;
[[File:orbit3d.png|300px|link=3D orbit plots (xfig example)]]&lt;br /&gt;
Calculation and plots of orbits in 3D''&lt;br /&gt;
[mailto:matthias.kuehnel@sternwarte.uni-erlangen.de Matthias Kuehnel]''&lt;br /&gt;
&lt;br /&gt;
It also defines additional TeX commands and packages for plotting purposes, such as using no bold face.&lt;br /&gt;
&lt;br /&gt;
=== VLBI coordinates in 3D ===&lt;br /&gt;
[[File:vlbi_coordinates.png|300px]]&lt;br /&gt;
Displaying VLBI coordinates in 3D''&lt;br /&gt;
[mailto:tobias.beuchert@sternwarte.uni-erlangen.de Tobias Beuchert]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting a fit model ===&lt;br /&gt;
[[File:sedfitsmodel.png|400px|link=Plot_fit_model_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a fit model in xfig to extend beyond the data.''&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Multipanel spectral model decomposition ===&lt;br /&gt;
[[File:multipanel_decomposition.png|400px|link=Model decomp (xfig example)]]&lt;br /&gt;
&lt;br /&gt;
Spectral model decompositions of a whole sample using multiplot. Compact and flexible code thanks to some clean file structuring and efficiently placed loops.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Chi²-distribution and CDF ===&lt;br /&gt;
[[File:Chisqr.png|300px|link=Chisquared_Distribution_Plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The Chi²-distribution and its according cumulative distribution function for a large number of degrees of freedom. Confidence levels are indicated in the CDF. Feel free to use it in your thesis.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Polar Plot ===&lt;br /&gt;
[[File:polarplot.png|300px|link=Polar_plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
In the isisscripts there is a function 'xfig_polarplot_new, with which provides an easy way to plot an individual adjustable polar plot. This plot is just one very simple example, for more information see 'isis&amp;gt; help xfig_polarplot_new'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot image ===&lt;br /&gt;
[[File:plotimage1.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
[[File:plotimage2.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Other than the %plot_png function of the xfig_plot structure this function&lt;br /&gt;
aims to plot images with a (given) ARBITRARY x/y-grid in a correct way&lt;br /&gt;
(NOTE that .plot_png does not care for x/y values!). This also allows to&lt;br /&gt;
plot images with logarithmic scales without any problems! In addition&lt;br /&gt;
it is easy to plot gabbed images by just giving the x and y grid as bin_lo&lt;br /&gt;
and bin_hi.&lt;br /&gt;
&lt;br /&gt;
These plots are just two very simple examples, for more information see&lt;br /&gt;
'isis&amp;gt; help xfig_plot_image'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot colormap ===&lt;br /&gt;
[[File:plotcmap1.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
[[File:plotcmap2.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The function 'xfig_plot_colormap' creates a horizontal, vertical colormap/colorscale for a given image.&lt;br /&gt;
For more information see 'isis&amp;gt; help xfig_plot_colormap'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[Category:Isis / Slang]]&lt;br /&gt;
&lt;br /&gt;
=== Skymap with error circles ===&lt;br /&gt;
[[File:Skymapcirclegr.png|700px|link=Plot_skymap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a circles in spherical coordinates in a Hammer-Aitoff projection. (Or: how to plot the intersection of a sphere with a plane)&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Plot data over different range sections ===&lt;br /&gt;
[[File:plot_with_gaps_jjs.png|300px|link=Plot_data_with_gaps_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
A simple example on how to plot data over a range with gaps, inserting visible markers to indicate these gaps. ''— [mailto:jakob.stierhof@fau.de Jakob Stierhof]''&lt;br /&gt;
&lt;br /&gt;
=== Plot geospatial data with shapelib ===&lt;br /&gt;
[[File:plot_world_jjs.png|800px|link=Plot_geospatial_data_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
[[File:plot_world_vector_jjs.png|800px|link=Plot_geospatial_data_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
An exemplary use of the slang interface to the lightweight shapelib library. The library allows to read in ESRI shape files a common format for geospatial data representation. The slang wrapper is in a very early phase and together with the not very error prone shapelib c library there is lots of errors ahead of you (okay, mostly it's my fault). For example, if you try to load a file that does not exist the wrapper does not crash nicely bad faces you with a segfault. You have been warned! ''— [mailto:jakob.stierhof@fau.de Jakob Stierhof]''&lt;br /&gt;
&lt;br /&gt;
=== Coloredcoded scatter plot ===&lt;br /&gt;
[[File:my_very_cool_colorcode.png|500px|link=Colorcoded_scatter_plot]]&lt;br /&gt;
Colorcoded scatter plot ''— [mailto:philipp.ph.weber@fau.de Philipp Weber] or [mailto:steven.haemmerich@fau.de Steven Hämmerich]''&lt;br /&gt;
&lt;br /&gt;
=== Plot marginal and joint probabilities ===&lt;br /&gt;
&lt;br /&gt;
[[File:Distribution_matrix.png|500px|link=Plot_marginal_and_joint_probabilities]]&lt;br /&gt;
&lt;br /&gt;
Visualize the distribution of something in a nice triangle using one function (from the isisscripts)! ''- [mailto:jakob.stierhof@fau.de Jakob Stierhof]&lt;br /&gt;
&lt;br /&gt;
= Remeis tikz plot gallery =&lt;br /&gt;
&lt;br /&gt;
=== Plot continuum models with varying parameters ===&lt;br /&gt;
&lt;br /&gt;
[[File:continuum_functions.png|500px|link=Continuum functions (tikz plot)]]&lt;br /&gt;
&lt;br /&gt;
Visualisation of common continuum models used for the spectra of accreting neutron stars. [[:File:Continuum_functions.pdf|Version in better resolution]] Author: [mailto:nicolas.zalot@fau.de Nicolas Zalot]&lt;br /&gt;
&lt;br /&gt;
=== Display of available color palettes and maps ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color-palettes-isisscripts.png|500px|link=For all your color needs!]]&lt;br /&gt;
[[File:Color-maps-isisscripts.png|500px|link=For all your color needs!]]&lt;br /&gt;
&lt;br /&gt;
Simple iterator script to display color maps and color palettes using the isisscripts color interface. ''- [mailto:jakob.stierhof@fau.de Jakob Stierhof]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_marginal_and_joing_probabilities&amp;diff=4015</id>
		<title>Plot marginal and joing probabilities</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_marginal_and_joing_probabilities&amp;diff=4015"/>
		<updated>2026-02-16T09:36:55Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Stierhof moved page Plot marginal and joing probabilities to Plot marginal and joint probabilities: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Plot marginal and joint probabilities]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_marginal_and_joint_probabilities&amp;diff=4014</id>
		<title>Plot marginal and joint probabilities</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_marginal_and_joint_probabilities&amp;diff=4014"/>
		<updated>2026-02-16T09:36:54Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Stierhof moved page Plot marginal and joing probabilities to Plot marginal and joint probabilities: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is just to illustrate how to use the function 'distribution_matrix' and xfig_plot_dstribution_matrix'. I assume you have some data to plot, for example from a monte carlo run or similar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
% Assuming your data is given in a struct as written by the emcee&lt;br /&gt;
% routines (so one array for each parameter) given in variable 'data'.&lt;br /&gt;
&lt;br /&gt;
variable matrix = distribution_matrix(data);&lt;br /&gt;
% If you only want to include specific struct fields use the qualifier 'fields'.&lt;br /&gt;
% The function can also take a number of arrays (of the same length), i.e., the fiels&lt;br /&gt;
% of the struct directly.&lt;br /&gt;
&lt;br /&gt;
variable X = xfig_plot_distribution_matrix(matrix);&lt;br /&gt;
% If you want to add labels for the plot, add them with the labels qualifiers&lt;br /&gt;
% or specifically for each entry with the label# qualifier(s)&lt;br /&gt;
% Best fits can be marked with the 'best' qualifier and 'conf' gives you&lt;br /&gt;
% the 1d confidence margins. Beware that this takes some assumptions so it might&lt;br /&gt;
% not work for your complicated distribution!&lt;br /&gt;
&lt;br /&gt;
variable tex = `&lt;br /&gt;
\raggedright&lt;br /&gt;
\def\arraystretch{1.5}&lt;br /&gt;
\begin{tabular}{rl}&lt;br /&gt;
Here could go parameters &amp;amp; values!\\&lt;br /&gt;
\end{tabular}&lt;br /&gt;
`R;&lt;br /&gt;
% This is just a demonstration for how to add a table to the plot&lt;br /&gt;
&lt;br /&gt;
variable info = xfig_new_text(tex);&lt;br /&gt;
info.scale(1.3);&lt;br /&gt;
info.translate(vector(20, -20, 0));&lt;br /&gt;
X.insert(info);&lt;br /&gt;
% Scale the table and move it (you could do the math, but testing is simpler)&lt;br /&gt;
&lt;br /&gt;
X.render(&amp;quot;matrix.pdf&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Distribution_matrix.png|800px]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Chat&amp;diff=3996</id>
		<title>Chat</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Chat&amp;diff=3996"/>
		<updated>2026-01-14T13:04:21Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The university hosts a matrix server which can be used with the university internal credentials. This page gives a quick introduction on how to setup 'element', the reference implementation of the client. You can of course use other implementations (there are plenty) and similar steps probably apply to those as well. However, you are on your own! Also, element is by far the most feature complete as of now. You might want to consider that. For a list of other clients and general information about matrix check [https://matrix.org/ matrix.org].&lt;br /&gt;
&lt;br /&gt;
There is also some information on the [https://www.rrze.fau.de/serverdienste/matrix/ RRZE page].&lt;br /&gt;
&lt;br /&gt;
The rest of the page describes the setup on our cluster, it should be similar on your laptop (if you choose to install it there too) but better consider also reading up instructions for your system.&lt;br /&gt;
&lt;br /&gt;
== First start of element ==&lt;br /&gt;
&lt;br /&gt;
Element can be started like any other program, from the command line the simplest is to type &amp;lt;code&amp;gt;element-desktop&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On first start you might be greeted with an error message about ''not finding save storage for secrets'' if so, this is already your first encounter with what makes the matrix system slightly more difficult than your off-the-shelf chat software. Here is the TLDR: Matrix is a distributed protocol, so no central authority. Therefore it is vital that every user can authenticate themself to a server and, more importantly, authenticate any other user. This is done by encryption keys (if you encrypt your emails, the very same mechanism is used).&lt;br /&gt;
&lt;br /&gt;
To store keys a keyring is used (something like a managed safe, also for login credentials, credit card information, etc.). And for some reason this keyring storage might not be found correctly. To give element a hint type in a terminal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
element-desktop --password-store=&amp;quot;gnome-libsecret&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This should greet you with a window as shown in the image.&lt;br /&gt;
&lt;br /&gt;
[[File:matrix-element-startup.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
After the first start the option &amp;lt;code&amp;gt;--password-store&amp;lt;/code&amp;gt; is no longer required as it should be configured in your preferences now.&lt;br /&gt;
&lt;br /&gt;
== Login with FAU credentials ==&lt;br /&gt;
&lt;br /&gt;
To login with your valid IdM account click on (you guessed it): '''Sign In'''. The next page asks you to specify a home server&amp;lt;ref&amp;gt;Again due to the non-centralized aspects of the matrix protocol there must be a server ''your'' identity is associated with. Think of it as your email server. Everyone with an email address can send you message, despite not being registered with the same email server.&amp;lt;/ref&amp;gt;, to change it to the RRZE hosted server click on '''Edit''' and input &amp;lt;code&amp;gt;matrix.fau.de&amp;lt;/code&amp;gt; in the opening window under ''Other homeserver''. After hitting continue you should see this&lt;br /&gt;
&lt;br /&gt;
[[File:matrix-element-fau.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
By clicking on ''Continue with FAU IdM'' you will be forwarded to the IdM webpage&amp;lt;ref&amp;gt;If your default browser is firefox you might find it giving an error message. This is because of many different security ''features''. If the admin team has not yet figured out how to circumvent this, the simplest is to temporarily change the default browser to google-chrome. For this simply open google-chrome and change the setting with the opening pop-up. To change back to firefox run this command in a terminal &amp;lt;code&amp;gt;xdg-settings set default-web-browser firefox_firefox.desktop&amp;lt;/code&amp;gt;&amp;lt;/ref&amp;gt;. Login there to confirm your credentials and open elements from the drop-down (if it does not do it automatically).&lt;br /&gt;
&lt;br /&gt;
==Securing Key==&lt;br /&gt;
&lt;br /&gt;
'''Important:''' Do not skip this step or you might lose access to your messages!&lt;br /&gt;
&lt;br /&gt;
With your newly activated account a secure key will be stored. This key represents you within the matrix network. If you lose this key ''you'' will have to create a different key which authenticates you. This has two consequences: All logins on other devices are reset (not so dramatic), and you will not be able to decrypt any messages that you (your previous you) send! Quite problematic. To help with this follow the steps prompted for. If they are not, click on the button in the top left corner (a letter for your initial). There select ''All settings'' and go to ''Encryption''. The checkbox for ''Key storage'' should be checked and you can add a recovery key below. You will be asked for a password and a key will be shown. '''Both''' are independently able to recover your identity and should not be shared with anyone. So store them at a safe place.&lt;br /&gt;
&lt;br /&gt;
==Login on other device==&lt;br /&gt;
&lt;br /&gt;
When you login from another device you will likely get a message saying something along the lines of ''unverified identity''. You can use the password form the key storage from the section above to set your identity, or you can use your already verified device. Simply follow the instructions on screen. You can also skip identifying, but this will not allow you to see encrypted messages that have been send to you, nor can you send encrypted messages (but not all chats are encrypted)!&lt;br /&gt;
&lt;br /&gt;
==Final steps==&lt;br /&gt;
&lt;br /&gt;
Explore! You can create private and groups chats and explore rooms. Of course you can also create your own rooms, with different visibility settings etc. For Remeisens a room exists [https://matrix.to/#/!lwQEiefDYDQwfkZxgH:fau.de?via=fau.de here]&lt;br /&gt;
&lt;br /&gt;
===LaTeX integration===&lt;br /&gt;
&lt;br /&gt;
One handy feature of elements is the ability to chat with latex commands. This is currently an experimental feature which needs to be enabled by hand. To do this create a file here &amp;lt;code&amp;gt;~/.config/Element/config.json&amp;lt;/code&amp;gt; which contains the following&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{                                                                                                       &lt;br /&gt;
  &amp;quot;features&amp;quot;: {                                                                                         &lt;br /&gt;
    &amp;quot;feature_latex_maths&amp;quot;: true                                                                         &lt;br /&gt;
  }                                                                                                     &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After restarting &amp;lt;code&amp;gt;element-desktop&amp;lt;/code&amp;gt; you can type things like &amp;lt;code&amp;gt;$E = mc^2$&amp;lt;/code&amp;gt; and they will appear nicely typeset.&lt;br /&gt;
&lt;br /&gt;
===Some more information===&lt;br /&gt;
&lt;br /&gt;
If you want to know more about matrix and why and how it does things you might find this beginner friendly introduction interesting: [https://joinmatrix.org/guide/ joinmatrix].&lt;br /&gt;
&lt;br /&gt;
===Joining rooms outside and let others join your rooms===&lt;br /&gt;
&lt;br /&gt;
You can join (public) rooms on other servers by searching them. There is a small drop-down menu that allows you to change other servers and search by names. In the same menu you can also add other external servers, this is relevant if you want to join groups hosted in other university networks.&lt;br /&gt;
&lt;br /&gt;
For users outside of FAU to join and where their network does not provide a matrix instance it is simplest to join [https://matrix.org matrix.org] and register there. Just make sure that when you create a room which is meant to be accessed by someone from the outside this access is not restricted (under the advanced settings of the room creation dialog).&lt;br /&gt;
&lt;br /&gt;
That's it, happy chatting :)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Chat&amp;diff=3995</id>
		<title>Chat</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Chat&amp;diff=3995"/>
		<updated>2026-01-14T13:02:51Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The university hosts a matrix server which can be used with the university internal credentials. This page gives a quick introduction on how to setup 'element', the reference implementation of the client. You can of course use other implementations (there are plenty) and similar steps probably apply to those as well. However, you are on your own! Also, element is by far the most feature complete as of now. You might want to consider that. For a list of other clients and general information about matrix check [https://matrix.org/ matrix.org].&lt;br /&gt;
&lt;br /&gt;
There is also some information on the [https://www.rrze.fau.de/serverdienste/matrix/ RRZE page].&lt;br /&gt;
&lt;br /&gt;
The rest of the page describes the setup on our cluster, it should be similar on your laptop (if you choose to install it there too) but better consider also reading up instructions for your system.&lt;br /&gt;
&lt;br /&gt;
== First start of element ==&lt;br /&gt;
&lt;br /&gt;
Element can be started like any other program, from the command line the simplest is to type &amp;lt;code&amp;gt;element-desktop&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On first start you might be greeted with an error message about ''not finding save storage for secrets'' if so, this is already your first encounter with what makes the matrix system slightly more difficult than your off-the-shelf chat software. Here is the TLDR: Matrix is a distributed protocol, so no central authority. Therefore it is vital that every user can authenticate themself to a server and, more importantly, authenticate any other user. This is done by encryption keys (if you encrypt your emails, the very same mechanism is used).&lt;br /&gt;
&lt;br /&gt;
To store keys a keyring is used (something like a managed safe, also for login credentials, credit card information, etc.). And for some reason this keyring storage might not be found correctly. To give element a hint type in a terminal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
element-desktop --password-store=&amp;quot;gnome-libsecret&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This should greet you with a window as shown in the image.&lt;br /&gt;
&lt;br /&gt;
[[File:matrix-element-startup.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After the first start the option &amp;lt;code&amp;gt;--password-store&amp;lt;/code&amp;gt; is no longer required as it should be configured in your preferences now.&lt;br /&gt;
&lt;br /&gt;
== Login with FAU credentials ==&lt;br /&gt;
&lt;br /&gt;
To login with your valid IdM account click on (you guessed it): '''Sign In'''. The next page asks you to specify a home server&amp;lt;ref&amp;gt;Again due to the non-centralized aspects of the matrix protocol there must be a server ''your'' identity is associated with. Think of it as your email server. Everyone with an email address can send you message, despite not being registered with the same email server.&amp;lt;/ref&amp;gt;, to change it to the RRZE hosted server click on '''Edit''' and input &amp;lt;code&amp;gt;matrix.fau.de&amp;lt;/code&amp;gt; in the opening window under ''Other homeserver''. After hitting continue you should see this&lt;br /&gt;
&lt;br /&gt;
[[File:matrix-element-fau.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
By clicking on ''Continue with FAU IdM'' you will be forwarded to a webpage&amp;lt;ref&amp;gt;If your default browser is firefox you might find it giving an error message. This is because of many different security ''features''. If the admin team has not yet figured out how to circumvent this, the simplest is to temporarily change the default browser to google-chrome. For this simply open google-chrome and change the setting with the opening pop-up. To change back to firefox run this command in a terminal &amp;lt;code&amp;gt;xdg-settings set default-web-browser firefox_firefox.desktop&amp;lt;/code&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Securing Key==&lt;br /&gt;
&lt;br /&gt;
'''Important:''' Do not skip this step or you might lose access to your messages!&lt;br /&gt;
&lt;br /&gt;
With your newly activated account a secure key will be stored. This key represents you within the matrix network. If you lose this key ''you'' will have to create a different key which authenticates you. This has two consequences: All logins on other devices are reset (not so dramatic), and you will not be able to decrypt any messages that you (your previous you) send! Quite problematic. To help with this follow the steps prompted for. If they are not, click on the button in the top left corner (a letter for your initial). There select ''All settings'' and go to ''Encryption''. The checkbox for ''Key storage'' should be checked and you can add a recovery key below. You will be asked for a password and a key will be shown. '''Both''' are independently able to recover your identity and should not be shared with anyone. So store them at a safe place.&lt;br /&gt;
&lt;br /&gt;
==Login on other device==&lt;br /&gt;
&lt;br /&gt;
When you login from another device you will likely get a message saying something along the lines of ''unverified identity''. You can use the password form the key storage from the section above to set your identity, or you can use your already verified device. Simply follow the instructions on screen. You can also skip identifying, but this will not allow you to see encrypted messages that have been send to you, nor can you send encrypted messages (but not all chats are encrypted)!&lt;br /&gt;
&lt;br /&gt;
==Final steps==&lt;br /&gt;
&lt;br /&gt;
Explore! You can create private and groups chats and explore rooms. Of course you can also create your own rooms, with different visibility settings etc. For Remeisens a room exists [https://matrix.to/#/!lwQEiefDYDQwfkZxgH:fau.de?via=fau.de here]&lt;br /&gt;
&lt;br /&gt;
===LaTeX integration===&lt;br /&gt;
&lt;br /&gt;
One handy feature of elements is the ability to chat with latex commands. This is currently an experimental feature which needs to be enabled by hand. To do this create a file here &amp;lt;code&amp;gt;~/.config/Element/config.json&amp;lt;/code&amp;gt; which contains the following&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{                                                                                                       &lt;br /&gt;
  &amp;quot;features&amp;quot;: {                                                                                         &lt;br /&gt;
    &amp;quot;feature_latex_maths&amp;quot;: true                                                                         &lt;br /&gt;
  }                                                                                                     &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After restarting &amp;lt;code&amp;gt;element-desktop&amp;lt;/code&amp;gt; you can type things like &amp;lt;code&amp;gt;$E = mc^2$&amp;lt;/code&amp;gt; and they will appear nicely typeset.&lt;br /&gt;
&lt;br /&gt;
===Some more information===&lt;br /&gt;
&lt;br /&gt;
If you want to know more about matrix and why and how it does things you might find this beginner friendly introduction interesting: [https://joinmatrix.org/guide/ joinmatrix].&lt;br /&gt;
&lt;br /&gt;
===Joining rooms outside and let others join your rooms===&lt;br /&gt;
&lt;br /&gt;
You can join (public) rooms on other servers by searching them. There is a small drop-down menu that allows you to change other servers and search by names. In the same menu you can also add other external servers, this is relevant if you want to join groups hosted in other university networks.&lt;br /&gt;
&lt;br /&gt;
For users outside of FAU to join and where their network does not provide a matrix instance it is simplest to join [https://matrix.org matrix.org] and register there. Just make sure that when you create a room which is meant to be accessed by someone from the outside this access is not restricted (under the advanced settings of the room creation dialog).&lt;br /&gt;
&lt;br /&gt;
That's it, happy chatting :)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Chat&amp;diff=3994</id>
		<title>Chat</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Chat&amp;diff=3994"/>
		<updated>2026-01-14T11:53:36Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The university hosts a matrix server which can be used with the university internal credentials. This page gives a quick introduction on how to setup 'element', the reference implementation of the client. You can of course use other implementations (there are plenty) and similar steps probably apply to those as well. However, you are on your own! Also, element is by far the most feature complete as of now. You might want to consider that. For a list of other clients and general information about matrix check [https://matrix.org/ matrix.org].&lt;br /&gt;
&lt;br /&gt;
There is also some information on the [https://www.rrze.fau.de/serverdienste/matrix/ RRZE page].&lt;br /&gt;
&lt;br /&gt;
The rest of the page describes the setup on our cluster, it should be similar on your laptop (if you choose to install it there too) but better consider also reading up instructions for your system.&lt;br /&gt;
&lt;br /&gt;
== First start of element ===&lt;br /&gt;
&lt;br /&gt;
Element can be started like any other program, from the command line the simplest is to type &amp;lt;code&amp;gt;element-desktop&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On first start you might be greeted with an error message about ''not finding save storage for secrets'' if so, this is already your first encounter with what makes the matrix system slightly more difficult than your off-the-shelf chat software. Here is the TLDR: Matrix is a distributed protocol, so no central authority. Therefore it is vital that every user can authenticate themself to a server and, more importantly, authenticate any other user. This is done by encryption keys (if you encrypt your emails, the very same mechanism is used).&lt;br /&gt;
&lt;br /&gt;
To store keys a keyring is used (something like a managed safe, also for login credentials, credit card information, etc.). And for some reason this keyring storage might not be found correctly. To give element a hint type in a terminal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
element-desktop --password-store=&amp;quot;gnome-libsecret&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This should greet you with a window as shown in the image.&lt;br /&gt;
&lt;br /&gt;
[[File:matrix-element-startup.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After the first start the option &amp;lt;code&amp;gt;--password-store&amp;lt;/code&amp;gt; is no longer required as it should be configured in your preferences now.&lt;br /&gt;
&lt;br /&gt;
== Login with FAU credentials ==&lt;br /&gt;
&lt;br /&gt;
To login with your valid IdM account click on (you guessed it): '''Sign In'''. The next page asks you to specify a home server&amp;lt;ref&amp;gt;Again due to the non-centralized aspects of the matrix protocol there must be a server ''your'' identity is associated with. Think of it as your email server. Everyone with an email address can send you message, despite not being registered with the same email server.&amp;lt;/ref&amp;gt;, to change it to the RRZE hosted server click on '''Edit''' and input &amp;lt;code&amp;gt;matrix.fau.de&amp;lt;/code&amp;gt; in the opening window under ''Other homeserver''. After hitting continue you should see this&lt;br /&gt;
&lt;br /&gt;
[[File:matrix-element-fau.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
By clicking on ''Continue with FAU IdM'' you will be forwarded to a webpage&amp;lt;ref&amp;gt;If your default browser is firefox you might find it giving an error message. This is because of many different security ''features''. If the admin team has not yet figured out how to circumvent this, the simplest is to temporarily change the default browser to google-chrome. For this simply open google-chrome and change the setting with the opening pop-up. To change back to firefox run this command in a terminal &amp;lt;code&amp;gt;xdg-settings set default-web-browser firefox_firefox.desktop&amp;lt;/code&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Chat&amp;diff=3993</id>
		<title>Chat</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Chat&amp;diff=3993"/>
		<updated>2026-01-14T11:37:56Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The university hosts a matrix server which can be used with the university internal credentials. This page gives a quick introduction on how to setup 'element', the reference implementation of the client. You can of course use other implementations (there are plenty) and similar steps probably apply to those as well. However, you are on your own! Also, element is by far the most feature complete as of now. You might want to consider that. For a list of other clients and general information about matrix check [https://matrix.org/ matrix.org].&lt;br /&gt;
&lt;br /&gt;
There is also some information on the [https://www.rrze.fau.de/serverdienste/matrix/ RRZE page].&lt;br /&gt;
&lt;br /&gt;
The rest of the page describes the setup on our cluster, it should be similar on your laptop (if you choose to install it there too) but better consider also reading up instructions for your system.&lt;br /&gt;
&lt;br /&gt;
== First start of element ===&lt;br /&gt;
&lt;br /&gt;
Element can be started like any other program, from the command line the simplest is to type &amp;lt;code&amp;gt;element-desktop&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On first start you might be greeted with an error message about ''not finding save storage for secrets'' if so, this is already your first encounter with what makes the matrix system slightly more difficult than your off-the-shelf chat software. Here is the TLDR: Matrix is a distributed protocol, so no central authority. Therefore it is vital that every user can authenticate themself to a server and, more importantly, authenticate any other user. This is done by encryption keys (if you encrypt your emails, the very same mechanism is used).&lt;br /&gt;
&lt;br /&gt;
To store keys a keyring is used (something like a managed safe, also for login credentials, credit card information, etc.). And for some reason this keyring storage might not be found correctly. To give element a hint type in a terminal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
element-desktop --password-store=&amp;quot;gnome-libsecret&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This should greet you with a window as shown in the image.&lt;br /&gt;
&lt;br /&gt;
[[File:matrix-element-startup.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After the first start the option &amp;lt;code&amp;gt;--password-store&amp;lt;/code&amp;gt; is no longer required as it should be configured in your preferences now.&lt;br /&gt;
&lt;br /&gt;
== Login with FAU credentials ==&lt;br /&gt;
&lt;br /&gt;
To login with your valid IdM account click on (you guessed it): '''Sign In'''. The next page asks you to specify a home server&amp;lt;ref&amp;gt;Again due to the non-centralized aspects of the matrix protocol there must be a server ''your'' identity is associated with. Think of it as your email server. Everyone with an email address can send you message, despite not being registered with the same email server.&amp;lt;/ref&amp;gt;, to change it to the RRZE hosted server click on '''Edit''' and input &amp;lt;code&amp;gt;matrix.fau.de&amp;lt;/code&amp;gt; in the opening window under ''Other homeserver''. After hitting continue you should see this&lt;br /&gt;
&lt;br /&gt;
[[File:matrix-element-fau.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
By clicking on ''Continue with FAU IdM'' you will be forwarded to a webpage&amp;lt;ref&amp;gt;If your default browser is firefox you might find it giving an error message. This is because of many different security ''features''. If the admin team has not yet figured out how to circumvent this, the simplest is to temporarily change the default browser to google-chrome. For this simply open google-chrome and change the setting with the opening pop-up.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Chat&amp;diff=3992</id>
		<title>Chat</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Chat&amp;diff=3992"/>
		<updated>2026-01-14T11:25:21Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Created page with &amp;quot;The university hosts a matrix server which can be used with the university internal credentials. This page gives a quick introduction on how to setup 'element', the reference...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The university hosts a matrix server which can be used with the university internal credentials. This page gives a quick introduction on how to setup 'element', the reference implementation of the client. You can of course use other implementations (there are plenty) and similar steps probably apply to those as well. However, you are on your own! Also, element is by far the most feature complete as of now. You might want to consider that. For a list of other clients and general information about matrix check [https://matrix.org/ matrix.org].&lt;br /&gt;
&lt;br /&gt;
There is also some information on the [https://www.rrze.fau.de/serverdienste/matrix/ RRZE page].&lt;br /&gt;
&lt;br /&gt;
The rest of the page describes the setup on our cluster, it should be similar on your laptop (if you choose to install it there too) but better consider also reading up instructions for your system.&lt;br /&gt;
&lt;br /&gt;
== First start of element ===&lt;br /&gt;
&lt;br /&gt;
Element can be started like any other program, from the command line the simplest is to type &amp;lt;code&amp;gt;element-desktop&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On first start you might be greeted with an error message about ''not finding save storage for secrets'' if so, this is already your first encounter with what makes the matrix system slightly more difficult than your off-the-shelf chat software. Here is the TLDR: Matrix is a distributed protocol, so no central authority. Therefore it is vital that every user can authenticate themself to a server and, more importantly, authenticate any other user. This is done by encryption keys (if you encrypt your emails, the very same mechanism is used).&lt;br /&gt;
&lt;br /&gt;
To store keys a keyring is used (something like a managed safe, also for login credentials, credit card information, etc.). And for some reason this keyring storage might not be found correctly. To give element a hint type in a terminal&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
element-desktop --password-store=&amp;quot;gnome-libsecret&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This should greet you with a window as shown in the image.&lt;br /&gt;
&lt;br /&gt;
[[File:matrix-element-startup.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
After the first start the option &amp;lt;code&amp;gt;--password-store&amp;lt;/code&amp;gt; is no longer required as it should be configured in your preferences now.&lt;br /&gt;
&lt;br /&gt;
== Login with FAU credentials ==&lt;br /&gt;
&lt;br /&gt;
To login with your valid IdM account click on (you guessed it): '''Sign In'''. The next page asks you to specify a home server&amp;lt;ref&amp;gt;Again due to the non-centralized aspects of the matrix protocol there must be a server ''your'' identity is associated with. Think of it as your email server. Everyone with an email address can send you message, despite not being registered with the same email server.&amp;lt;/ref&amp;gt;, to change it to the RRZE hosted server click on '''Edit''' and input &amp;lt;code&amp;gt;matrix.fau.de&amp;lt;/code&amp;gt; in the opening window under ''Other homeserver''. After hitting continue you should see this&lt;br /&gt;
&lt;br /&gt;
[[File:matrix-element-fau.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
By clicking on ''Continue with FAU IdM'' &lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Matrix-element-fau.png&amp;diff=3991</id>
		<title>File:Matrix-element-fau.png</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Matrix-element-fau.png&amp;diff=3991"/>
		<updated>2026-01-14T11:04:59Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Matrix FAU server setting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Matrix FAU server setting&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Matrix-element-startup.png&amp;diff=3990</id>
		<title>File:Matrix-element-startup.png</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Matrix-element-startup.png&amp;diff=3990"/>
		<updated>2026-01-14T10:39:47Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Matrix/Element Desktop startup screen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Matrix/Element Desktop startup screen&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Matrix_Chat&amp;diff=3989</id>
		<title>Matrix Chat</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Matrix_Chat&amp;diff=3989"/>
		<updated>2026-01-14T08:07:56Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Created page with &amp;quot;This are some notes how to setup a matrix chat using element (reminder matrix is a protocol and element just one implementation, but for now the most matured one).  == Install...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This are some notes how to setup a matrix chat using element (reminder matrix is a protocol and element just one implementation, but for now the most matured one).&lt;br /&gt;
&lt;br /&gt;
== Install element on Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# probably there already&lt;br /&gt;
sudo apt install -y wget apt-transport-https&lt;br /&gt;
&lt;br /&gt;
# add signatures to keyring&lt;br /&gt;
sudo wget -O /usr/share/keyrings/element-io-archive-keyring.gpg https://packages.element.io/debian/element-io-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# fetch package list&lt;br /&gt;
echo &amp;quot;deb [signed-by=/usr/share/keyrings/element-io-archive-keyring.gpg] https://packages.element.io/debian/ default main&amp;quot; | sudo tee /etc/apt/sources.list.d/element-io.list&lt;br /&gt;
&lt;br /&gt;
# update world&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
# install&lt;br /&gt;
sudo apt install element-desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Requires of course root privileges. Probably will be added to puppet anyway.&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Puppet_git_integration&amp;diff=3979</id>
		<title>Puppet git integration</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Puppet_git_integration&amp;diff=3979"/>
		<updated>2025-12-04T13:40:07Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Puppet distributes the configuration for our cluster from a git repository ([https://www.sternwarte.uni-erlangen.de/gitlab/Admins/puppet puppet-git]). The gitlab runner that is used for admin related repositories is setup to execute the code on the machine where the puppet server is running. See /etc/gitlab-runner/config.toml on the gitlab server. In there are the credential information given for a root login to the puppet server. The CI pipeline copies the contents of the repository to the relevant directory structure.&lt;br /&gt;
&lt;br /&gt;
To run command on the target machine (where the puppet server is running) the key files for root have to be set. That is, the public key must be added to /root/.ssh/authorized_keys and the finger-print of the server must be added to /home_local/ubuntuadmin/.ssh/know_hosts (on the machine that servers gitlab).&lt;br /&gt;
&lt;br /&gt;
[[Category:Puppet]][[Category:Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3978</id>
		<title>Setup puppet</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3978"/>
		<updated>2025-12-03T09:37:03Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Puppet is a configuration management software which has a server providing the configuration and agents which request configuration from the server.&lt;br /&gt;
&lt;br /&gt;
Puppet itself is now (as of 2023) owned by Perforce and they decided to move it to closed-source. The community did not like that so they came up with a fork called 'openvox' (see [https://thenewstack.io/openvox-the-community-driven-fork-of-puppet-has-arrived/ this article] and [https://github.com/OpenVoxProject/openvox the github of the fork]).&lt;br /&gt;
&lt;br /&gt;
For legal reasons the package is renamed to openvox, but all commands and paths including 'puppet' are still kept (as of 2025).&lt;br /&gt;
&lt;br /&gt;
== Installing puppet ==&lt;br /&gt;
&lt;br /&gt;
To install puppet three components are required: The agent, the server, and the database (not really required, but helps to reduce load).&lt;br /&gt;
&lt;br /&gt;
=== Installing the server ===&lt;br /&gt;
&lt;br /&gt;
Essentially follow [https://voxpupuli.org/openvox/install/ this page], that is, download the .dep file and install openvox-server. If puppet was installed before on this machine it has to be removed first. I had some issues keeping the old configuration. I think this is due to configuration being stored in some generated files. I was successful by backing only relevant config files and delete all folders related to puppet (/etc/puppetlabs, /opt/puppetlabs, /var/puppetlabs).&lt;br /&gt;
&lt;br /&gt;
Once the server is installed change /etc/puppetlabs/puppet/puppet.conf to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
server = puppet.service&lt;br /&gt;
runtimeout = 10800&lt;br /&gt;
&lt;br /&gt;
[agent]&lt;br /&gt;
splay=true&lt;br /&gt;
environment=noble&lt;br /&gt;
runinterval=1800&lt;br /&gt;
number_of_facts_soft_limit=4096&lt;br /&gt;
&lt;br /&gt;
[server]&lt;br /&gt;
server = puppet.service&lt;br /&gt;
ca_server = puppet.service&lt;br /&gt;
vardir = /opt/puppetlabs/server/data/puppetserver&lt;br /&gt;
logdir = /var/log/puppetlabs/puppetserver&lt;br /&gt;
rundir = /var/run/puppetlabs/puppetserver&lt;br /&gt;
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid&lt;br /&gt;
codedir = /etc/puppetlabs/code&lt;br /&gt;
tagmap = $confdir/tagmail.conf&lt;br /&gt;
reports = tagmail,puppetdb&lt;br /&gt;
storeconfigs = true&lt;br /&gt;
storeconfigs_backend = puppetdb&lt;br /&gt;
allow_duplicate_certs = true&lt;br /&gt;
dns_alt_names = puppet.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(here 'puppet.service' is the server name puppet is supposed to run on, change accordingly, dns_alt_names allows us to have the dns record changed only and certificates are still matching).&lt;br /&gt;
&lt;br /&gt;
Normally puppet requires signed certificates so there is control of who accesses the configuration. This is a bit annoying, so we allow auto-signing. For this add /etc/puppetlabs/puppet/autosign.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*.sternwarte.uni-erlangen.de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to allow all hosts matching this pattern to get a config.&lt;br /&gt;
&lt;br /&gt;
A 'systemctl start puppetserver' should spin up the server from here.&lt;br /&gt;
&lt;br /&gt;
=== Installing agent ===&lt;br /&gt;
&lt;br /&gt;
For the agent on each machine install 'openvox-agent' (similar to server, better get rid of previous puppet stuff). Add the same config (the &amp;lt;code&amp;gt;[server]&amp;lt;/code&amp;gt; section is not needed), change the environment accordingly. And fire it up with 'systemctl start puppet'.&lt;br /&gt;
&lt;br /&gt;
Now in principle a 'sudo /opt/puppetlabs/bin/puppet agent -t' requests the configuration for the current node. However, this will fail as we set the server to use the puppetdb, which is not yet there. So to finish of we need to&lt;br /&gt;
&lt;br /&gt;
=== Install the puppet database ===&lt;br /&gt;
&lt;br /&gt;
This requires that postgreSQL is installed on the server (we have the db and the puppetserver on the same machine). Setup a table for puppetdb, for this change to the postgres users (sudo su - postgres). Create a table with &amp;lt;code&amp;gt;createuser -DRSP puppetdb&amp;lt;/code&amp;gt;. This will ask for a password (twice).&lt;br /&gt;
&lt;br /&gt;
Now create the database with &amp;lt;code&amp;gt;createdb -E UTF8 -O puppetdb puppetdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Install necessary addons with &amp;lt;code&amp;gt;psql puppetdb -c 'create extension pg_trgm'&amp;lt;/code&amp;gt; and leave the postgres user.&lt;br /&gt;
&lt;br /&gt;
For puppet check latest versions with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb ensure=latest&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb-termini ensure=latest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the package names!&lt;br /&gt;
&lt;br /&gt;
It is necessary to add the config values to /etc/puppetlabs/puppetdb/conf.d/database.ini as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[database]&lt;br /&gt;
&lt;br /&gt;
# The database address, i.e. //HOST:PORT/DATABASE_NAME&lt;br /&gt;
subname = //localhost:5432/puppetdb&lt;br /&gt;
&lt;br /&gt;
# Connect as a specific user&lt;br /&gt;
username = puppetdb&lt;br /&gt;
&lt;br /&gt;
# Use a specific password&lt;br /&gt;
password = RemeisPuppet&lt;br /&gt;
&lt;br /&gt;
# How often (in minutes) to compact the database&lt;br /&gt;
# gc-interval = 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Password must be the one for the puppetdb database entered in postgreSQL before.&lt;br /&gt;
&lt;br /&gt;
Check setup with &amp;lt;code&amp;gt;sudo /opt/puppetlabs/bin/puppetdb ssl-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and add /etc/puppetlabs/puppet/puppetdb.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
&lt;br /&gt;
server_urls = https://puppet.service:8081&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, add /etc/puppetlabs/puppet/routes.yaml with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
master:&lt;br /&gt;
  facts:&lt;br /&gt;
    terminus: puppetdb&lt;br /&gt;
    cache: yaml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and spin up the database with 'systemctl start puppetdb' (if this does not complete chances are that the database PW is wrong, unfortunately this does not error meaningfully per default).&lt;br /&gt;
&lt;br /&gt;
Restart the server ('systemctl restart puppetserver') and run puppet from a node again. Everything should work now!&lt;br /&gt;
&lt;br /&gt;
[[Category:Puppet]]&lt;br /&gt;
[[Category:Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Puppet_git_integration&amp;diff=3977</id>
		<title>Puppet git integration</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Puppet_git_integration&amp;diff=3977"/>
		<updated>2025-12-03T09:36:24Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Puppet distributes the configuration for our cluster from a git repository ([https://www.sternwarte.uni-erlangen.de/gitlab/Admins/puppet puppet-git]). The gitlab runner that is used for admin related repositories is setup to execute the code on the machine where the puppet server is running. See /etc/gitlab-runner/config.toml on the gitlab server. In there are the credential information given for a root login to the puppet server. The CI pipeline copies the contents of the repository to the relevant directory structure.&lt;br /&gt;
&lt;br /&gt;
[[Category:Puppet]][[Category:Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=LDAP&amp;diff=3976</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=LDAP&amp;diff=3976"/>
		<updated>2025-12-02T15:21:26Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;br /&gt;
= LDAP =&lt;br /&gt;
The LDAP server at Remeis is running on vela. The service itself is called ''slapd''. A backup LDAP server is running on libra.&lt;br /&gt;
&lt;br /&gt;
Every interaction with the ''slapd'' requires root access.&lt;br /&gt;
&lt;br /&gt;
== Where LDAP is used ==&lt;br /&gt;
LDAP is not only used for the authentication to login into the variety of machines at Remeis. Also a lot of other services/scripts use ldap:&lt;br /&gt;
&lt;br /&gt;
* This wiki&lt;br /&gt;
* The internal webpage&lt;br /&gt;
* [[GitLab]]&lt;br /&gt;
* [[#phpLDAPadmin|phpLDAPadmin]]&lt;br /&gt;
* The &amp;lt;code&amp;gt;who_takes_the_minutes.pl&amp;lt;/code&amp;gt; script of the X-ray group&lt;br /&gt;
* The ''cgnotifier'' for the [[cgroups]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Config files ===&lt;br /&gt;
The main LDAP configuration file is &amp;lt;code&amp;gt;/etc/ldap.conf&amp;lt;/code&amp;gt;. Note that this is not the default location for the configuration file. Therefore the defaults for the slapd are changed in &amp;lt;code&amp;gt;/etc/default/slapd&amp;lt;/code&amp;gt;, see the entry &amp;lt;code&amp;gt;SLAPD_CONF&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;/etc/ldap.conf&amp;lt;/code&amp;gt; is also present on all the clients and specifies via IP-Address which LDAP server to contact for authentication. The LDAP requests are then handled on taurus by the ''slapd'' which is configured via &amp;lt;code&amp;gt;/etc/ldap/slapd.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== phpLDAPadmin ===&lt;br /&gt;
phpLDAPadmin is a web interface based on [https://de.wikipedia.org/wiki/PHP PHP] which allows simple modifications to the directory for example to [[:Category:Admin#Add new Users|add new users]] or change group memberships. It is accessible via the [https://www.sternwarte.uni-erlangen.de/intern/phpldapadmin/ internal webpages] and only out of the network at the Remeis observatory.&lt;br /&gt;
&lt;br /&gt;
==== Configuration of phpLADPadmin ====&lt;br /&gt;
The configuration files for phpLDAPadmin are located in &amp;lt;code&amp;gt;/etc/phpldapadmin/&amp;lt;/code&amp;gt; on the webserver, in this case [[cetus]]. The important file is &amp;lt;code&amp;gt;config.php&amp;lt;/code&amp;gt; which holds information about which LDAP servers can be queried, in this case [[taurus]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Starting/Stopping the service ==&lt;br /&gt;
The slapd can be stopped via [https://de.wikipedia.org/wiki/Systemd systemd]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop slapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Important:''' If you do so no authentication on the whole cluster is possible anymore. You can not open a new shell on any host until you start the service again!&lt;br /&gt;
&lt;br /&gt;
Starting the ''slapd'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start slapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You also can have a look at the output produced by the running service via&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status slapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/Berkeley_DB Berkeley DB] containing all the active directory information is located at &amp;lt;code&amp;gt;/var/lib/ldap&amp;lt;/code&amp;gt;. Files in this directory must not be touched manually in any way. The only secure way to see the content of the database is by using ''slapcat''. For example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
slapcat -f /etc/ldap/slapd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
will show all entries of the database.&lt;br /&gt;
&lt;br /&gt;
== Backup ==&lt;br /&gt;
Each night the database is dumped to &amp;lt;code&amp;gt;/data/system/backup/ldap/&amp;lt;/code&amp;gt; via a cronjob in &amp;lt;code&amp;gt;/etc/cron.d/ldap_backup&amp;lt;/code&amp;gt;. Also a tarball of the ''slapd'' and &amp;lt;code&amp;gt;ldap.conf&amp;lt;/code&amp;gt; is created there. All backups older than 14 days are deleted.&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&lt;br /&gt;
See also https://serverfault.com/questions/730088/how-to-migrate-ldap-database-schema-configuration-to-other-machine&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Export configuration trees and database ===&lt;br /&gt;
&lt;br /&gt;
'''From old provider (`vela`)'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo slapcat -n 0 -l ldap_config_vela.ldif&lt;br /&gt;
sudo slapcat -n 1 -l ldap_data_vela.ldif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''From old consumer (`libra`)'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo slapcat -n 0 -l ldap_config_libra.ldif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Save certificates ===&lt;br /&gt;
&lt;br /&gt;
'''vela:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/ssl/certs/openldap.pem&lt;br /&gt;
/etc/ldap/grus_slapd_cert.pem&lt;br /&gt;
/etc/ldap/grus_slapd_key.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''libra:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/ssl/certs/openldap.pem&lt;br /&gt;
/etc/ldap/phoenix_slapd_cert.pem&lt;br /&gt;
/etc/ldap/phoenix_slapd_key.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Set up new provider ===&lt;br /&gt;
&lt;br /&gt;
'''Install packages'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install slapd ldap-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Stop slapd and remove existing configuration and data'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo systemctl stop slapd&lt;br /&gt;
sudo rm -rf /etc/ldap/slapd.d/*&lt;br /&gt;
sudo rm -rf /var/lib/ldap/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Import configuration and data'''&lt;br /&gt;
&lt;br /&gt;
*Important:* ldif files may need modification to be importable. One is that&lt;br /&gt;
eventually spaces need to be added to mask spaces (two spaces at beginning of line&lt;br /&gt;
collapse to one space!, 1 space to 0!!).&lt;br /&gt;
&lt;br /&gt;
Further, since version 2.5 of openldap, the ppoly is included per default, so&lt;br /&gt;
this needs to be removed from schema files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo slapadd -n 0 -F /etc/ldap/slapd.d -l /path/to/ldap_config_vela.ldif&lt;br /&gt;
sudo slapadd -n 1 -l /path/to/ldap_data_vela.ldif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Set ownership of /etc/ldap/slapd.d and /var/lib/ldap to openldap'''&lt;br /&gt;
&lt;br /&gt;
'''Restore certificates'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lrwxrwxrwx 1 root root     45 Jul 10  2023 /etc/ssl/certs/openldap.pem -&amp;gt; /usr/local/share/ca-certificates/openldap.pem&lt;br /&gt;
-rw-r--r-- 1 root root   1614 Jul 10  2023 /etc/ldap/grus_slapd_cert.pem&lt;br /&gt;
-rw-r----- 1 root openldap 8170 Jul 10  2023 /etc/ldap/grus_slapd_key.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Start slapd'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo systemctl start slapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Verify'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldapsearch -H ldap://localhost -x -b dc=sternwarte,dc=uni-erlangen,dc=de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Set up new consumer for replication ===&lt;br /&gt;
&lt;br /&gt;
'''Install packages'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install slapd ldap-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Stop slapd and remove existing configuration and data'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo systemctl stop slapd&lt;br /&gt;
sudo rm -rf /etc/ldap/slapd.d/*&lt;br /&gt;
sudo rm -rf /var/lib/ldap/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Import configuration'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo slapadd -n 0 -F /etc/ldap/slapd.d -l /path/to/ldap_config_libra.ldif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Set ownership of /etc/ldap/slapd.d and /var/lib/ldap to openldap'''&lt;br /&gt;
&lt;br /&gt;
'''Restore certificates''' (guess other r permission on key is wrong currently)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lrwxrwxrwx 1 root root     45 May 13  2023 /etc/ssl/certs/openldap.pem -&amp;gt; /usr/local/share/ca-certificates/openldap.crt&lt;br /&gt;
-rw-r--r-- 1 root root   1619 Jul 11  2023 /etc/ldap/phoenix_slapd_cert.pem&lt;br /&gt;
-rw-r--r-- 1 root root   8180 Jul 11  2023 /etc/ldap/phoenix_slapd_key.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Start slapd'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo systemctl start slapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Check replication'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
journalctl -fu slapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Verify'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldapsearch -H ldap://localhost -x -b dc=sternwarte,dc=uni-erlangen,dc=de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Check dependent services ===&lt;br /&gt;
&lt;br /&gt;
* ldap backup&lt;br /&gt;
* Wiki&lt;br /&gt;
* Internal webpage&lt;br /&gt;
* Gitlab&lt;br /&gt;
* phpLDAPadmin (web interface)&lt;br /&gt;
* `who_takes_the_minutes`&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3971</id>
		<title>Setup puppet</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3971"/>
		<updated>2025-11-21T15:33:31Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Puppet is a configuration management software which has a server providing the configuration and agents which request configuration from the server.&lt;br /&gt;
&lt;br /&gt;
Puppet itself is now (as of 2023) owned by Perforce and they decided to move it to closed-source. The community did not like that so they came up with a fork called 'openvox' (see [https://thenewstack.io/openvox-the-community-driven-fork-of-puppet-has-arrived/ this article] and [https://github.com/OpenVoxProject/openvox the github of the fork]).&lt;br /&gt;
&lt;br /&gt;
For legal reasons the package is renamed to openvox, but all commands and paths including 'puppet' are still kept (as of 2025).&lt;br /&gt;
&lt;br /&gt;
== Installing puppet ==&lt;br /&gt;
&lt;br /&gt;
To install puppet three components are required: The agent, the server, and the database (not really required, but helps to reduce load).&lt;br /&gt;
&lt;br /&gt;
=== Installing the server ===&lt;br /&gt;
&lt;br /&gt;
Essentially follow [https://voxpupuli.org/openvox/install/ this page], that is, download the .dep file and install openvox-server. If puppet was installed before on this machine it has to be removed first. I had some issues keeping the old configuration. I think this is due to configuration being stored in some generated files. I was successful by backing only relevant config files and delete all folders related to puppet (/etc/puppetlabs, /opt/puppetlabs, /var/puppetlabs).&lt;br /&gt;
&lt;br /&gt;
Once the server is installed change /etc/puppetlabs/puppet/puppet.conf to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
server = puppet.service&lt;br /&gt;
runtimeout = 10800&lt;br /&gt;
&lt;br /&gt;
[agent]&lt;br /&gt;
splay=true&lt;br /&gt;
environment=noble&lt;br /&gt;
runinterval=1800&lt;br /&gt;
number_of_facts_soft_limit=4096&lt;br /&gt;
&lt;br /&gt;
[server]&lt;br /&gt;
server = puppet.service&lt;br /&gt;
ca_server = puppet.service&lt;br /&gt;
vardir = /opt/puppetlabs/server/data/puppetserver&lt;br /&gt;
logdir = /var/log/puppetlabs/puppetserver&lt;br /&gt;
rundir = /var/run/puppetlabs/puppetserver&lt;br /&gt;
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid&lt;br /&gt;
codedir = /etc/puppetlabs/code&lt;br /&gt;
tagmap = $confdir/tagmail.conf&lt;br /&gt;
reports = tagmail,puppetdb&lt;br /&gt;
storeconfigs = true&lt;br /&gt;
storeconfigs_backend = puppetdb&lt;br /&gt;
allow_duplicate_certs = true&lt;br /&gt;
dns_alt_names = puppet.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(here 'puppet.service' is the server name puppet is supposed to run on, change accordingly, dns_alt_names allows us to have the dns record changed only and certificates are still matching).&lt;br /&gt;
&lt;br /&gt;
Normally puppet requires signed certificates so there is control of who accesses the configuration. This is a bit annoying, so we allow auto-signing. For this add /etc/puppetlabs/puppet/autosign.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*.sternwarte.uni-erlangen.de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to allow all hosts matching this pattern to get a config.&lt;br /&gt;
&lt;br /&gt;
A 'systemctl start puppetserver' should spin up the server from here.&lt;br /&gt;
&lt;br /&gt;
=== Installing agent ===&lt;br /&gt;
&lt;br /&gt;
For the agent on each machine install 'openvox-agent' (similar to server, better get rid of previous puppet stuff). Add the same config (the &amp;lt;code&amp;gt;[server]&amp;lt;/code&amp;gt; section is not needed), change the environment accordingly. And fire it up with 'systemctl start puppet'.&lt;br /&gt;
&lt;br /&gt;
Now in principle a 'sudo /opt/puppetlabs/bin/puppet agent -t' requests the configuration for the current node. However, this will fail as we set the server to use the puppetdb, which is not yet there. So to finish of we need to&lt;br /&gt;
&lt;br /&gt;
=== Install the puppet database ===&lt;br /&gt;
&lt;br /&gt;
This requires that postgreSQL is installed on the server (we have the db and the puppetserver on the same machine). Setup a table for puppetdb, for this change to the postgres users (sudo su - postgres). Create a table with &amp;lt;code&amp;gt;createuser -DRSP puppetdb&amp;lt;/code&amp;gt;. This will ask for a password (twice).&lt;br /&gt;
&lt;br /&gt;
Now create the database with &amp;lt;code&amp;gt;createdb -E UTF8 -O puppetdb puppetdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Install necessary addons with &amp;lt;code&amp;gt;psql puppetdb -c 'create extension pg_trgm'&amp;lt;/code&amp;gt; and leave the postgres user.&lt;br /&gt;
&lt;br /&gt;
For puppet check latest versions with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb ensure=latest&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb-termini ensure=latest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the package names!&lt;br /&gt;
&lt;br /&gt;
It is necessary to add the config values to /etc/puppetlabs/puppetdb/conf.d/database.ini as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[database]&lt;br /&gt;
&lt;br /&gt;
# The database address, i.e. //HOST:PORT/DATABASE_NAME&lt;br /&gt;
subname = //localhost:5432/puppetdb&lt;br /&gt;
&lt;br /&gt;
# Connect as a specific user&lt;br /&gt;
username = puppetdb&lt;br /&gt;
&lt;br /&gt;
# Use a specific password&lt;br /&gt;
password = RemeisPuppet&lt;br /&gt;
&lt;br /&gt;
# How often (in minutes) to compact the database&lt;br /&gt;
# gc-interval = 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Password must be the one for the puppetdb database entered in postgreSQL before.&lt;br /&gt;
&lt;br /&gt;
Check setup with &amp;lt;code&amp;gt;sudo /opt/puppetlabs/bin/puppetdb ssl-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and add /etc/puppetlabs/puppet/puppetdb.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
&lt;br /&gt;
server_urls = https://puppet.service:8081&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, add /etc/puppetlabs/puppet/routes.yaml with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
master:&lt;br /&gt;
  facts:&lt;br /&gt;
    terminus: puppetdb&lt;br /&gt;
    cache: yaml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and spin up the database with 'systemctl start puppetdb' (if this does not complete chances are that the database PW is wrong, unfortunately this does not error meaningfully per default).&lt;br /&gt;
&lt;br /&gt;
Restart the server ('systemctl restart puppetserver') and run puppet from a node again. Everything should work now!&lt;br /&gt;
&lt;br /&gt;
[[Category:Puppet]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3970</id>
		<title>Setup puppet</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3970"/>
		<updated>2025-11-21T15:32:31Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Puppet is a configuration management software which has a server providing the configuration and agents which request configuration from the server.&lt;br /&gt;
&lt;br /&gt;
Puppet itself is now (as of 2023) owned by Perforce and they decided to move it to closed-source. The community did not like that so they came up with a fork called 'openvox' (see [https://thenewstack.io/openvox-the-community-driven-fork-of-puppet-has-arrived/| this article] and [https://github.com/OpenVoxProject/openvox| the github of the fork]).&lt;br /&gt;
&lt;br /&gt;
For legal reasons the package is renamed to openvox, but all commands and paths including 'puppet' are still kept (as of 2025).&lt;br /&gt;
&lt;br /&gt;
== Installing puppet ==&lt;br /&gt;
&lt;br /&gt;
To install puppet three components are required: The agent, the server, and the database (not really required, but helps to reduce load).&lt;br /&gt;
&lt;br /&gt;
=== Installing the server ===&lt;br /&gt;
&lt;br /&gt;
Essentially follow [https://voxpupuli.org/openvox/install/| this page], that is, download the .dep file and install openvox-server. If puppet was installed before on this machine it has to be removed first. I had some issues keeping the old configuration. I think this is due to configuration being stored in some generated files. I was successful by backing only relevant config files and delete all folders related to puppet (/etc/puppetlabs, /opt/puppetlabs, /var/puppetlabs).&lt;br /&gt;
&lt;br /&gt;
Once the server is installed change /etc/puppetlabs/puppet/puppet.conf to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
server = puppet.service&lt;br /&gt;
runtimeout = 10800&lt;br /&gt;
&lt;br /&gt;
[agent]&lt;br /&gt;
splay=true&lt;br /&gt;
environment=noble&lt;br /&gt;
runinterval=1800&lt;br /&gt;
number_of_facts_soft_limit=4096&lt;br /&gt;
&lt;br /&gt;
[server]&lt;br /&gt;
server = puppet.service&lt;br /&gt;
ca_server = puppet.service&lt;br /&gt;
vardir = /opt/puppetlabs/server/data/puppetserver&lt;br /&gt;
logdir = /var/log/puppetlabs/puppetserver&lt;br /&gt;
rundir = /var/run/puppetlabs/puppetserver&lt;br /&gt;
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid&lt;br /&gt;
codedir = /etc/puppetlabs/code&lt;br /&gt;
tagmap = $confdir/tagmail.conf&lt;br /&gt;
reports = tagmail,puppetdb&lt;br /&gt;
storeconfigs = true&lt;br /&gt;
storeconfigs_backend = puppetdb&lt;br /&gt;
allow_duplicate_certs = true&lt;br /&gt;
dns_alt_names = puppet.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(here 'puppet.service' is the server name puppet is supposed to run on, change accordingly, dns_alt_names allows us to have the dns record changed only and certificates are still matching).&lt;br /&gt;
&lt;br /&gt;
Normally puppet requires signed certificates so there is control of who accesses the configuration. This is a bit annoying, so we allow auto-signing. For this add /etc/puppetlabs/puppet/autosign.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*.sternwarte.uni-erlangen.de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to allow all hosts matching this pattern to get a config.&lt;br /&gt;
&lt;br /&gt;
A 'systemctl start puppetserver' should spin up the server from here.&lt;br /&gt;
&lt;br /&gt;
=== Installing agent ===&lt;br /&gt;
&lt;br /&gt;
For the agent on each machine install 'openvox-agent' (similar to server, better get rid of previous puppet stuff). Add the same config (the &amp;lt;code&amp;gt;[server]&amp;lt;/code&amp;gt; section is not needed), change the environment accordingly. And fire it up with 'systemctl start puppet'.&lt;br /&gt;
&lt;br /&gt;
Now in principle a 'sudo /opt/puppetlabs/bin/puppet agent -t' requests the configuration for the current node. However, this will fail as we set the server to use the puppetdb, which is not yet there. So to finish of we need to&lt;br /&gt;
&lt;br /&gt;
=== Install the puppet database ===&lt;br /&gt;
&lt;br /&gt;
This requires that postgreSQL is installed on the server (we have the db and the puppetserver on the same machine). Setup a table for puppetdb, for this change to the postgres users (sudo su - postgres). Create a table with &amp;lt;code&amp;gt;createuser -DRSP puppetdb&amp;lt;/code&amp;gt;. This will ask for a password (twice).&lt;br /&gt;
&lt;br /&gt;
Now create the database with &amp;lt;code&amp;gt;createdb -E UTF8 -O puppetdb puppetdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Install necessary addons with &amp;lt;code&amp;gt;psql puppetdb -c 'create extension pg_trgm'&amp;lt;/code&amp;gt; and leave the postgres user.&lt;br /&gt;
&lt;br /&gt;
For puppet check latest versions with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb ensure=latest&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb-termini ensure=latest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the package names!&lt;br /&gt;
&lt;br /&gt;
It is necessary to add the config values to /etc/puppetlabs/puppetdb/conf.d/database.ini as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[database]&lt;br /&gt;
&lt;br /&gt;
# The database address, i.e. //HOST:PORT/DATABASE_NAME&lt;br /&gt;
subname = //localhost:5432/puppetdb&lt;br /&gt;
&lt;br /&gt;
# Connect as a specific user&lt;br /&gt;
username = puppetdb&lt;br /&gt;
&lt;br /&gt;
# Use a specific password&lt;br /&gt;
password = RemeisPuppet&lt;br /&gt;
&lt;br /&gt;
# How often (in minutes) to compact the database&lt;br /&gt;
# gc-interval = 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Password must be the one for the puppetdb database entered in postgreSQL before.&lt;br /&gt;
&lt;br /&gt;
Check setup with &amp;lt;code&amp;gt;sudo /opt/puppetlabs/bin/puppetdb ssl-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and add /etc/puppetlabs/puppet/puppetdb.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
&lt;br /&gt;
server_urls = https://puppet.service:8081&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, add /etc/puppetlabs/puppet/routes.yaml with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
master:&lt;br /&gt;
  facts:&lt;br /&gt;
    terminus: puppetdb&lt;br /&gt;
    cache: yaml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and spin up the database with 'systemctl start puppetdb' (if this does not complete chances are that the database PW is wrong, unfortunately this does not error meaningfully per default).&lt;br /&gt;
&lt;br /&gt;
Restart the server ('systemctl restart puppetserver') and run puppet from a node again. Everything should work now!&lt;br /&gt;
&lt;br /&gt;
[[Category:Puppet]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3866</id>
		<title>Setup puppet</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3866"/>
		<updated>2025-09-08T08:16:15Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Puppet is a configuration management software which has a server providing the configuration and agents which request configuration from the server.&lt;br /&gt;
&lt;br /&gt;
Puppet itself is now (as of 2023) owned by Perforce and they decided to move it to closed-source. The community did not like that so they came up with a fork called 'openvox' (see [[https://thenewstack.io/openvox-the-community-driven-fork-of-puppet-has-arrived/| this article]] and [[https://github.com/OpenVoxProject/openvox| the github of the fork]]).&lt;br /&gt;
&lt;br /&gt;
For legal reasons the package is renamed to openvox, but all commands and paths including 'puppet' are still kept (as of 2025).&lt;br /&gt;
&lt;br /&gt;
== Installing puppet ==&lt;br /&gt;
&lt;br /&gt;
To install puppet three components are required: The agent, the server, and the database (not really required, but helps to reduce load).&lt;br /&gt;
&lt;br /&gt;
=== Installing the server ===&lt;br /&gt;
&lt;br /&gt;
Essentially follow [[https://voxpupuli.org/openvox/install/| this page]], that is, download the .dep file and install openvox-server. If puppet was installed before on this machine it has to be removed first. I had some issues keeping the old configuration. I think this is due to configuration being stored in some generated files. I was successful by backing only relevant config files and delete all folders related to puppet (/etc/puppetlabs, /opt/puppetlabs, /var/puppetlabs).&lt;br /&gt;
&lt;br /&gt;
Once the server is installed change /etc/puppetlabs/puppet/puppet.conf to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
server = puppet.service&lt;br /&gt;
runtimeout = 10800&lt;br /&gt;
&lt;br /&gt;
[agent]&lt;br /&gt;
splay=true&lt;br /&gt;
environment=noble&lt;br /&gt;
runinterval=1800&lt;br /&gt;
number_of_facts_soft_limit=4096&lt;br /&gt;
&lt;br /&gt;
[server]&lt;br /&gt;
server = puppet.service&lt;br /&gt;
ca_server = puppet.service&lt;br /&gt;
vardir = /opt/puppetlabs/server/data/puppetserver&lt;br /&gt;
logdir = /var/log/puppetlabs/puppetserver&lt;br /&gt;
rundir = /var/run/puppetlabs/puppetserver&lt;br /&gt;
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid&lt;br /&gt;
codedir = /etc/puppetlabs/code&lt;br /&gt;
tagmap = $confdir/tagmail.conf&lt;br /&gt;
reports = tagmail,puppetdb&lt;br /&gt;
storeconfigs = true&lt;br /&gt;
storeconfigs_backend = puppetdb&lt;br /&gt;
allow_duplicate_certs = true&lt;br /&gt;
dns_alt_names = puppet.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(here 'puppet.service' is the server name puppet is supposed to run on, change accordingly, dns_alt_names allows us to have the dns record changed only and certificates are still matching).&lt;br /&gt;
&lt;br /&gt;
Normally puppet requires signed certificates so there is control of who accesses the configuration. This is a bit annoying, so we allow auto-signing. For this add /etc/puppetlabs/puppet/autosign.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*.sternwarte.uni-erlangen.de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to allow all hosts matching this pattern to get a config.&lt;br /&gt;
&lt;br /&gt;
A 'systemctl start puppetserver' should spin up the server from here.&lt;br /&gt;
&lt;br /&gt;
=== Installing agent ===&lt;br /&gt;
&lt;br /&gt;
For the agent on each machine install 'openvox-agent' (similar to server, better get rid of previous puppet stuff). Add the same config (the &amp;lt;code&amp;gt;[server]&amp;lt;/code&amp;gt; section is not needed), change the environment accordingly. And fire it up with 'systemctl start puppet'.&lt;br /&gt;
&lt;br /&gt;
Now in principle a 'sudo /opt/puppetlabs/bin/puppet agent -t' requests the configuration for the current node. However, this will fail as we set the server to use the puppetdb, which is not yet there. So to finish of we need to&lt;br /&gt;
&lt;br /&gt;
=== Install the puppet database ===&lt;br /&gt;
&lt;br /&gt;
This requires that postgreSQL is installed on the server (we have the db and the puppetserver on the same machine). Setup a table for puppetdb, for this change to the postgres users (sudo su - postgres). Create a table with &amp;lt;code&amp;gt;createuser -DRSP puppetdb&amp;lt;/code&amp;gt;. This will ask for a password (twice).&lt;br /&gt;
&lt;br /&gt;
Now create the database with &amp;lt;code&amp;gt;createdb -E UTF8 -O puppetdb puppetdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Install necessary addons with &amp;lt;code&amp;gt;psql puppetdb -c 'create extension pg_trgm'&amp;lt;/code&amp;gt; and leave the postgres user.&lt;br /&gt;
&lt;br /&gt;
For puppet check latest versions with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb ensure=latest&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb-termini ensure=latest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the package names!&lt;br /&gt;
&lt;br /&gt;
It is necessary to add the config values to /etc/puppetlabs/puppetdb/conf.d/database.ini as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[database]&lt;br /&gt;
&lt;br /&gt;
# The database address, i.e. //HOST:PORT/DATABASE_NAME&lt;br /&gt;
subname = //localhost:5432/puppetdb&lt;br /&gt;
&lt;br /&gt;
# Connect as a specific user&lt;br /&gt;
username = puppetdb&lt;br /&gt;
&lt;br /&gt;
# Use a specific password&lt;br /&gt;
password = RemeisPuppet&lt;br /&gt;
&lt;br /&gt;
# How often (in minutes) to compact the database&lt;br /&gt;
# gc-interval = 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Password must be the one for the puppetdb database entered in postgreSQL before.&lt;br /&gt;
&lt;br /&gt;
Check setup with &amp;lt;code&amp;gt;sudo /opt/puppetlabs/bin/puppetdb ssl-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and add /etc/puppetlabs/puppet/puppetdb.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
&lt;br /&gt;
server_urls = https://puppet.service:8081&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, add /etc/puppetlabs/puppet/routes.yaml with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
master:&lt;br /&gt;
  facts:&lt;br /&gt;
    terminus: puppetdb&lt;br /&gt;
    cache: yaml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and spin up the database with 'systemctl start puppetdb' (if this does not complete chances are that the database PW is wrong, unfortunately this does not error meaningfully per default).&lt;br /&gt;
&lt;br /&gt;
Restart the server ('systemctl restart puppetserver') and run puppet from a node again. Everything should work now!&lt;br /&gt;
&lt;br /&gt;
[[Category:Puppet]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3865</id>
		<title>Setup puppet</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3865"/>
		<updated>2025-09-05T16:29:38Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Puppet is a configuration management software which has a server providing the configuration and agents which request configuration from the server.&lt;br /&gt;
&lt;br /&gt;
Puppet itself is now (as of 2023) owned by Perforce and they decided to move it to closed-source. The community did not like that so they came up with a fork called 'openvox' (see [[https://thenewstack.io/openvox-the-community-driven-fork-of-puppet-has-arrived/| this article]] and [[https://github.com/OpenVoxProject/openvox| the github of the fork]]).&lt;br /&gt;
&lt;br /&gt;
For legal reasons the package is renamed to openvox, but all commands and paths including 'puppet' are still kept (as of 2025).&lt;br /&gt;
&lt;br /&gt;
== Installing puppet ==&lt;br /&gt;
&lt;br /&gt;
To install puppet three components are required: The agent, the server, and the database (not really required, but helps to reduce load).&lt;br /&gt;
&lt;br /&gt;
=== Installing the server ===&lt;br /&gt;
&lt;br /&gt;
Essentially follow [[https://voxpupuli.org/openvox/install/| this page]], that is, download the .dep file and install openvox-server. If puppet was installed before on this machine it has to be removed first. I had some issues keeping the old configuration. I think this is due to configuration being stored in some generated files. I was successful by backing only relevant config files and delete all folders related to puppet (/etc/puppetlabs, /opt/puppetlabs, /var/puppetlabs).&lt;br /&gt;
&lt;br /&gt;
Once the server is installed change /etc/puppetlabs/puppet/puppet.conf to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
server = cygnus.sternwarte.uni-erlangen.de&lt;br /&gt;
runtimeout = 10800&lt;br /&gt;
&lt;br /&gt;
[agent]&lt;br /&gt;
splay=true&lt;br /&gt;
environment=noble&lt;br /&gt;
runinterval=1800&lt;br /&gt;
number_of_facts_soft_limit=4096&lt;br /&gt;
&lt;br /&gt;
[server]&lt;br /&gt;
server = cygnus.sternwarte.uni-erlangen.de&lt;br /&gt;
ca_server = cygnus.sternwarte.uni-erlangen.de&lt;br /&gt;
vardir = /opt/puppetlabs/server/data/puppetserver&lt;br /&gt;
logdir = /var/log/puppetlabs/puppetserver&lt;br /&gt;
rundir = /var/run/puppetlabs/puppetserver&lt;br /&gt;
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid&lt;br /&gt;
codedir = /etc/puppetlabs/code&lt;br /&gt;
tagmap = $confdir/tagmail.conf&lt;br /&gt;
reports = tagmail,puppetdb&lt;br /&gt;
storeconfigs = true&lt;br /&gt;
storeconfigs_backend = puppetdb&lt;br /&gt;
allow_duplicate_certs = true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(here 'cygnus' is the server name puppet is supposed to run on, change accordingly).&lt;br /&gt;
&lt;br /&gt;
Normally puppet requires signed certificates so there is control of who accesses the configuration. This is a bit annoying, so we allow auto-signing. For this add /etc/puppetlabs/puppet/autosign.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*.sternwarte.uni-erlangen.de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to allow all hosts matching this pattern to get a config.&lt;br /&gt;
&lt;br /&gt;
A 'systemctl start puppetserver' should spin up the server from here.&lt;br /&gt;
&lt;br /&gt;
=== Installing agent ===&lt;br /&gt;
&lt;br /&gt;
For the agent on each machine install 'openvox-agent' (similar to server, better get rid of previous puppet stuff). Add the same config (the &amp;lt;code&amp;gt;[server]&amp;lt;/code&amp;gt; section is not needed), change the environment accordingly. And fire it up with 'systemctl start puppet'.&lt;br /&gt;
&lt;br /&gt;
Now in principle a 'sudo /opt/puppetlabs/bin/puppet agent -t' requests the configuration for the current node. However, this will fail as we set the server to use the puppetdb, which is not yet there. So to finish of we need to&lt;br /&gt;
&lt;br /&gt;
=== Install the puppet database ===&lt;br /&gt;
&lt;br /&gt;
This requires that postgreSQL is installed on the server (we have the db and the puppetserver on the same machine). Setup a table for puppetdb, for this change to the postgres users (sudo su - postgres). Create a table with &amp;lt;code&amp;gt;createuser -DRSP puppetdb&amp;lt;/code&amp;gt;. This will ask for a password (twice).&lt;br /&gt;
&lt;br /&gt;
Now create the database with &amp;lt;code&amp;gt;createdb -E UTF8 -O puppetdb puppetdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Install necessary addons with &amp;lt;code&amp;gt;psql puppetdb -c 'create extension pg_trgm'&amp;lt;/code&amp;gt; and leave the postgres user.&lt;br /&gt;
&lt;br /&gt;
For puppet check latest versions with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb ensure=latest&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb-termini ensure=latest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the package names!&lt;br /&gt;
&lt;br /&gt;
It is necessary to add the config values to /etc/puppetlabs/puppetdb/conf.d/database.ini as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[database]&lt;br /&gt;
&lt;br /&gt;
# The database address, i.e. //HOST:PORT/DATABASE_NAME&lt;br /&gt;
subname = //localhost:5432/puppetdb&lt;br /&gt;
&lt;br /&gt;
# Connect as a specific user&lt;br /&gt;
username = puppetdb&lt;br /&gt;
&lt;br /&gt;
# Use a specific password&lt;br /&gt;
password = RemeisPuppet&lt;br /&gt;
&lt;br /&gt;
# How often (in minutes) to compact the database&lt;br /&gt;
# gc-interval = 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Password must be the one for the puppetdb database entered in postgreSQL before.&lt;br /&gt;
&lt;br /&gt;
Check setup with &amp;lt;code&amp;gt;sudo /opt/puppetlabs/bin/puppetdb ssl-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and add /etc/puppetlabs/puppet/puppetdb.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
&lt;br /&gt;
server_urls = https://cygnus.sternwarte.uni-erlangen.de:8081&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(server name again must be changed if necessary).&lt;br /&gt;
&lt;br /&gt;
Lastly, add /etc/puppetlabs/puppet/routes.yaml with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
master:&lt;br /&gt;
  facts:&lt;br /&gt;
    terminus: puppetdb&lt;br /&gt;
    cache: yaml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and spin up the database with 'systemctl start puppetdb' (if this does not complete chances are that the database PW is wrong, unfortunately this does not error meaningfully per default).&lt;br /&gt;
&lt;br /&gt;
Restart the server ('systemctl restart puppetserver') and run puppet from a node again. Everything should work now!&lt;br /&gt;
&lt;br /&gt;
[[Category:Puppet]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3864</id>
		<title>Setup puppet</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Setup_puppet&amp;diff=3864"/>
		<updated>2025-09-03T13:55:53Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Created page with &amp;quot;Puppet is a configuration management software which has a server providing the configuration and agents which request configuration from the server.  Puppet itself is now (as...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Puppet is a configuration management software which has a server providing the configuration and agents which request configuration from the server.&lt;br /&gt;
&lt;br /&gt;
Puppet itself is now (as of 2023) owned by Perforce and they decided to move it to closed-source. The community did not like that so they came up with a fork called 'openvox' (see [[https://thenewstack.io/openvox-the-community-driven-fork-of-puppet-has-arrived/| this article]] and [[https://github.com/OpenVoxProject/openvox| the github of the fork]]).&lt;br /&gt;
&lt;br /&gt;
For legal reasons the package is renamed to openvox, but all commands and paths including 'puppet' are still kept (as of 2025).&lt;br /&gt;
&lt;br /&gt;
== Installing puppet ==&lt;br /&gt;
&lt;br /&gt;
To install puppet three components are required: The agent, the server, and the database (not really required, but helps to reduce load).&lt;br /&gt;
&lt;br /&gt;
=== Installing the server ===&lt;br /&gt;
&lt;br /&gt;
Essentially follow [[https://voxpupuli.org/openvox/install/| this page]], that is, download the .dep file and install openvox-server. If puppet was installed before on this machine it has to be removed first. I had some issues keeping the old configuration. I think this is due to configuration being stored in some generated files. I was successful by backing only relevant config files and delete all folders related to puppet (/etc/puppetlabs, /opt/puppetlabs, /var/puppetlabs).&lt;br /&gt;
&lt;br /&gt;
Once the server is installed change /etc/puppetlabs/puppet/puppet.conf to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
server = cygnus.sternwarte.uni-erlangen.de&lt;br /&gt;
runtimeout = 10800&lt;br /&gt;
&lt;br /&gt;
[agent]&lt;br /&gt;
splay=true&lt;br /&gt;
environment=noble&lt;br /&gt;
runinterval=1800&lt;br /&gt;
number_of_facts_soft_limit=4096&lt;br /&gt;
&lt;br /&gt;
[server]&lt;br /&gt;
server = cygnus.sternwarte.uni-erlangen.de&lt;br /&gt;
ca_server = cygnus.sternwarte.uni-erlangen.de&lt;br /&gt;
vardir = /opt/puppetlabs/server/data/puppetserver&lt;br /&gt;
logdir = /var/log/puppetlabs/puppetserver&lt;br /&gt;
rundir = /var/run/puppetlabs/puppetserver&lt;br /&gt;
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid&lt;br /&gt;
codedir = /etc/puppetlabs/code&lt;br /&gt;
tagmap = $confdir/tagmail.conf&lt;br /&gt;
reports = tagmail,puppetdb&lt;br /&gt;
storeconfigs = true&lt;br /&gt;
storeconfigs_backend = puppetdb&lt;br /&gt;
allow_duplicate_certs = true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(here 'cygnus' is the server name puppet is supposed to run on, change accordingly).&lt;br /&gt;
&lt;br /&gt;
Normally puppet requires signed certificates so there is control of who accesses the configuration. This is a bit annoying, so we allow auto-signing. For this add /etc/puppetlabs/puppet/autosign.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*.sternwarte.uni-erlangen.de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to allow all hosts matching this pattern to get a config.&lt;br /&gt;
&lt;br /&gt;
A 'systemctl start puppetserver' should spin up the server from here.&lt;br /&gt;
&lt;br /&gt;
=== Installing agent ===&lt;br /&gt;
&lt;br /&gt;
For the agent on each machine install 'openvox-agent' (similar to server, better get rid of previous puppet stuff). Add the same config (the &amp;lt;code&amp;gt;[server]&amp;lt;/code&amp;gt; section is not needed), change the environment accordingly. And fire it up with 'systemctl start puppet'.&lt;br /&gt;
&lt;br /&gt;
Now in principle a 'sudo /opt/puppetlabs/bin/puppet agent -t' requests the configuration for the current node. However, this will fail as we set the server to use the puppetdb, which is not yet there. So to finish of we need to&lt;br /&gt;
&lt;br /&gt;
=== Install the puppet database ===&lt;br /&gt;
&lt;br /&gt;
This requires that postgreSQL is installed on the server (we have the db and the puppetserver on the same machine). Setup a table for puppetdb, for this change to the postgres users (sudo su - postgres). Create a table with &amp;lt;code&amp;gt;createuser -DRSP puppetdb&amp;lt;/code&amp;gt;. This will ask for a password (twice).&lt;br /&gt;
&lt;br /&gt;
Now create the database with &amp;lt;code&amp;gt;createdb -E UTF8 -O puppetdb puppetdb&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Install necessary addons with &amp;lt;code&amp;gt;psql puppetdb -c 'create extension pg_trgm'&amp;lt;/code&amp;gt; and leave the postgres user.&lt;br /&gt;
&lt;br /&gt;
For puppet check latest versions with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb ensure=latest&lt;br /&gt;
sudo /opt/puppetlabs/bin/puppet resource package openvoxdb-termini ensure=latest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the package names!&lt;br /&gt;
&lt;br /&gt;
It is necessary to add the config values to /etc/puppetlabs/puppetdb/conf.d/database.ini as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[database]&lt;br /&gt;
&lt;br /&gt;
# The database address, i.e. //HOST:PORT/DATABASE_NAME&lt;br /&gt;
subname = //localhost:5432/puppetdb&lt;br /&gt;
&lt;br /&gt;
# Connect as a specific user&lt;br /&gt;
username = puppetdb&lt;br /&gt;
&lt;br /&gt;
# Use a specific password&lt;br /&gt;
password = RemeisPuppet&lt;br /&gt;
&lt;br /&gt;
# How often (in minutes) to compact the database&lt;br /&gt;
# gc-interval = 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Password must be the one for the puppetdb database entered in postgreSQL before.&lt;br /&gt;
&lt;br /&gt;
Check setup with &amp;lt;code&amp;gt;sudo puppetdb ssl-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and add /etc/puppetlabs/puppet/puppetdb.conf with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
&lt;br /&gt;
server_urls = https://cygnus.sternwarte.uni-erlangen.de:8081&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(server name again must be changed if necessary).&lt;br /&gt;
&lt;br /&gt;
Lastly, add /etc/puppetlabs/puppet/routes.yaml with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
master:&lt;br /&gt;
  facts:&lt;br /&gt;
    terminus: puppetdb&lt;br /&gt;
    cache: yaml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and spin up the database with 'systemctl start puppetdb' (if this does not complete chances are that the database PW is wrong, unfortunately this does not error meaningfully per default).&lt;br /&gt;
&lt;br /&gt;
Restart the server ('systemctl restart puppetserver') and run puppet from a node again. Everything should work now!&lt;br /&gt;
&lt;br /&gt;
[[Category:Puppet]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Puppet_git_integration&amp;diff=3797</id>
		<title>Puppet git integration</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Puppet_git_integration&amp;diff=3797"/>
		<updated>2025-07-15T12:01:36Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Created page with &amp;quot;Puppet distributes the configuration for our cluster from a git repository ([https://www.sternwarte.uni-erlangen.de/gitlab/Admins/puppet puppet-git]). The gitlab runner that i...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Puppet distributes the configuration for our cluster from a git repository ([https://www.sternwarte.uni-erlangen.de/gitlab/Admins/puppet puppet-git]). The gitlab runner that is used for admin related repositories is setup to execute the code on the machine where the puppet server is running. See /etc/gitlab-runner/config.toml on the gitlab server. In there are the credential information given for a root login to the puppet server. The CI pipeline copies the contents of the repository to the relevant directory structure.&lt;br /&gt;
&lt;br /&gt;
[[Category:Puppet]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Category:Puppet&amp;diff=3796</id>
		<title>Category:Puppet</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Category:Puppet&amp;diff=3796"/>
		<updated>2025-07-15T11:57:53Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Created page with &amp;quot;  Category:Admin&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3722</id>
		<title>Travel</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3722"/>
		<updated>2025-05-07T09:23:54Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;br /&gt;
&lt;br /&gt;
This page documents how to apply for business travel and hand in the reimbursement with the online tool accessible through [https://www.mitarbeiterservice.bayern.de/ authega]. This requires you to have an account set up. If you sign up for the first time you will be send a letter (! yes, physical letter, this can take some days) with information for the login. For further logins it is best to use a certificate file with a password.&lt;br /&gt;
&lt;br /&gt;
Once logged in you can access the travel management (Reisekostenmanagement, RMS) and enter the necessary information there. Certain numbers are tied to the observatory and will always be the same, they are documented below. '''Note:''' When selecting the institution (Besch&amp;amp;auml;ftigungsbeh&amp;amp;ouml;de) do '''not''' use the Remeis-Observatory or any other smaller body. Instead use the general FAU entry with the number '''1519016'''! In the field '''Kapitel''' enter '''1519'''!&lt;br /&gt;
&lt;br /&gt;
More information for the general setup are in the [[:Media:introduction_bayrms.pdf|introductory slides]] (this is the German version, see below for additional guidance in English).&lt;br /&gt;
&lt;br /&gt;
In order to receive documents per email you need to sign the [[:Media:Bayrms_data_protection.pdf|data protection waiver]] (in German!) and hand it in (in paper form!).&lt;br /&gt;
&lt;br /&gt;
== Application for business travel ==&lt;br /&gt;
&lt;br /&gt;
Some notes on filling in these forms:&lt;br /&gt;
&lt;br /&gt;
=== Travel days (Reisetage) ===&lt;br /&gt;
On each day, you need to input the start and end of your &amp;quot;business&amp;quot;.&lt;br /&gt;
If you are, say attending a conference starting Monday at 2 PM and ending on a Friday at noon, your times should look like this:&lt;br /&gt;
* Monday: Start at 14:00, end at '''23:59'''&lt;br /&gt;
* Tue-Thur: Start at '''0:00''', end at '''23:59'''&lt;br /&gt;
* Fri: Start at '''0:00''', end at 12:00&lt;br /&gt;
&lt;br /&gt;
The point here being that you are still there &amp;quot;on business&amp;quot; even outside the main conference hours.&lt;br /&gt;
&lt;br /&gt;
(NB: There are still discussions between the administration and Joern about this)&lt;br /&gt;
&lt;br /&gt;
=== Mitzeichner (Signatory) ===&lt;br /&gt;
This needs to be your boss, who will then forward it to P6.&lt;br /&gt;
&lt;br /&gt;
== Handing in reimbursement ==&lt;br /&gt;
&lt;br /&gt;
== List of project funds ==&lt;br /&gt;
&lt;br /&gt;
Below is a list of project funds that you travel might be payed from. '''Before submitting your reimbursement form ask your supervisor what project to use! Every time!'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
 |+ Project numbers&lt;br /&gt;
 |-&lt;br /&gt;
 ! Name !! Erweiterung !! Titel !! AWK !! Kostenstelle&lt;br /&gt;
 |-&lt;br /&gt;
| DLR 50 OR 2309 (VF-ULX) || 7401 171 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2417 (THESEUS) || 7401 182 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OR 2410 (VF-XMM Aafia) || 7401 186 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2503 (eROSITA) || 7401 188 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2508 (ATHENA) || 7401 191 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2507 (AXIS) || 7401 196 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/17-2 (eRO STEP 1, P5) || 7458 208 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/19-1 (eRO STEP 1, P6) || 7458 046 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/20-1 (FOR 5195, P2) || 7458 065 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/21-1 (eRO STEP 2, P7) || 7458 209 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI bis 2022 || 5002344 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI ab 2023 || 150234 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| ESA (DALI) || 7402 745 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| Wlms Altprojekte || 7402 304 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| ETI Förderung || 5500 245 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/13-2 (eRO STEP 2, P1) || 7458 204 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/14-2 (eRO STEP 2, P2) || 7458 205 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/15-2 (eRO STEP 2, TP Z) || 7458 206 || 547 41  ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/18-1 (eROSITA Galaxien) || 7458 168 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA (Altprojekte) || 7459 704 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA bis 2022 || 5002391 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA ab 2023 || 0150178 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 4388/2-1 (Saeedi) || 7458 207 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG MA 11073/1-1 (Mayer) || 7458 221 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG HE 1356/70-2 (Heber) || 7458 225 || 547 41 ||  || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 73er Titel || 061 000-6 || 547 40 || FuL || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
| 72er Titel || 806 3141 || 547 41 ||  || 1415150000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally you need to specify the kind of expense (Kostenart): 685000. If the AWK is empty in the table above, do not put anything in the '''Info 1''' field. Otherwise add the given symbol.&lt;br /&gt;
&lt;br /&gt;
== English information ==&lt;br /&gt;
&lt;br /&gt;
Here are some PDFs you might find helpful to navigate through the German landscape of bureaucracy.&lt;br /&gt;
&lt;br /&gt;
Some [[:Media:Additional_information_BayRMS.pdf|additional information]] in Englisch&lt;br /&gt;
&lt;br /&gt;
The [[:Media:Bayrms_eng_data_protection.pdf|data protection waiver]] (you still have to sign the German one!)&lt;br /&gt;
&lt;br /&gt;
The [[:Media:Bayrms_eng_introduction_slides.pdf|introduction slides]]&lt;br /&gt;
&lt;br /&gt;
A [[:Media:Bayrms_glossary.pdf|glossary]] to match English and German terms.&lt;br /&gt;
&lt;br /&gt;
== ''OUTDATED!'' Business and private travels ==&lt;br /&gt;
&lt;br /&gt;
If you intend to combine a business trip with a vacation to save money or just because of the occasion, you need to observe a couple of issues:&lt;br /&gt;
&lt;br /&gt;
  * first of all, combining business and private travel is in principle nothing that the university likes&lt;br /&gt;
  * you *need* to get the private travel authorized on the travel request form, i.e. you need to state *both* on travel request form&lt;br /&gt;
  * obviously you will not get any reimbursement for the private part of your trip, or any extra expenses arising from your vacation&lt;br /&gt;
  * to get reimbursement for your business part of the trip, you need to document what the business part alone would have cost. In detail this means that you need to document:&lt;br /&gt;
    * fictitious cost of flights/train tickets/rental car/etc for the business part of the trip&lt;br /&gt;
    * fictitious cost of flights/train tickets/etc to and from the business destination of the trip&lt;br /&gt;
  * nevertheless you also obviously need to state your actual cost (flight tickets etc).&lt;br /&gt;
  * the university will reimburse you only the *lesser* of your actual cost and the fictitious cost!\\ This means that if your flight would have cost 1000 Eur, but because you stayed longer for private reasons (i.e. over the weekend) and the actual flight is cheaper like 700 Eur, the university will only reimburse you 700 Eur.&lt;br /&gt;
&lt;br /&gt;
Furthermore apart from the reimbursement by the university, you have also to consider the taxes: the fiscal authorities might consider such a combination of business and private trip entirely private and therefore the reimbursement as additional income. So far,&lt;br /&gt;
this has never happened in Bamberg to Jörns knowledge, but in principle tax&lt;br /&gt;
regulations state that for a trip to count as a business trip, the&lt;br /&gt;
business portion must outbalance the private portion. To give an&lt;br /&gt;
example: a 3d observing run in Australia followed by a 2 week vacation&lt;br /&gt;
there would probably not be seen as a business related trip (even if it&lt;br /&gt;
was!), even though the university would reimburse you for your flights&lt;br /&gt;
and the 3d per diem.&lt;br /&gt;
((Based on a FAQ Email sent by Jörn to allusers on April 4, 2011))&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Bayrms_data_protection.pdf&amp;diff=3721</id>
		<title>File:Bayrms data protection.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Bayrms_data_protection.pdf&amp;diff=3721"/>
		<updated>2025-05-07T09:23:44Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Einwilligung that data for travels are sent via email.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Einwilligung that data for travels are sent via email.&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Bayrms_glossary.pdf&amp;diff=3720</id>
		<title>File:Bayrms glossary.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Bayrms_glossary.pdf&amp;diff=3720"/>
		<updated>2025-05-07T09:05:31Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: German and English terms side by side.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
German and English terms side by side.&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Bayrms_eng_introduction_slides.pdf&amp;diff=3719</id>
		<title>File:Bayrms eng introduction slides.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Bayrms_eng_introduction_slides.pdf&amp;diff=3719"/>
		<updated>2025-05-07T09:04:07Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Introduction to the RMS in English.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Introduction to the RMS in English.&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Bayrms_eng_data_protection.pdf&amp;diff=3718</id>
		<title>File:Bayrms eng data protection.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Bayrms_eng_data_protection.pdf&amp;diff=3718"/>
		<updated>2025-05-07T09:03:24Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: English version of data protection waiver. Use German version when handing it in!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
English version of data protection waiver. Use German version when handing it in!&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Additional_information_BayRMS.pdf&amp;diff=3717</id>
		<title>File:Additional information BayRMS.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Additional_information_BayRMS.pdf&amp;diff=3717"/>
		<updated>2025-05-07T09:02:00Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Additional information in English about the travel management system.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Additional information in English about the travel management system.&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3711</id>
		<title>Travel</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3711"/>
		<updated>2025-05-06T10:12:29Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;br /&gt;
&lt;br /&gt;
This page documents how to apply for business travel and hand in the reimbursement with the online tool accessible through [https://www.mitarbeiterservice.bayern.de/ authega]. This requires you to have an account set up. If you sign up for the first time you will be send a letter (! yes, physical letter, this can take some days) with information for the login. For further logins it is best to use a certificate file with a password.&lt;br /&gt;
&lt;br /&gt;
Once logged in you can access the travel management (Reisekostenmanagement, RMS) and enter the necessary information there. Certain numbers are tied to the observatory and will always be the same, they are documented below. '''Note:''' When selecting the institution (Besch&amp;amp;auml;ftigungsbeh&amp;amp;ouml;de) do '''not''' use the Remeis-Observatory or any other smaller body. Instead use the general FAU entry with the number '''1519016'''! In the field '''Kapitel''' enter '''1519'''!&lt;br /&gt;
&lt;br /&gt;
More information for the general setup are in the [[:Media:introduction_bayrms.pdf|introductory slides]] (unfortunately only in German, but mostly with images so you should at least get the right buttons from it).&lt;br /&gt;
&lt;br /&gt;
== Application for business travel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Handing in reimbursement ==&lt;br /&gt;
&lt;br /&gt;
== List of project funds ==&lt;br /&gt;
&lt;br /&gt;
Below is a list of project funds that you travel might be payed from. '''Before submitting your reimbursement form ask your supervisor what project to use! Every time!'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
 |+ Project numbers&lt;br /&gt;
 |-&lt;br /&gt;
 ! Name !! Erweiterung !! Titel !! AWK !! Kostenstelle&lt;br /&gt;
 |-&lt;br /&gt;
| DLR 50 OR 2309 (VF-ULX) || 7401 171 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2417 (THESEUS) || 7401 182 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OR 2410 (VF-XMM Aafia) || 7401 186 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2503 (eROSITA) || 7401 188 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2508 (ATHENA) || 7401 191 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2507 (AXIS) || 7401 196 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/17-2 (eRO STEP 1, P5) || 7458 208 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/19-1 (eRO STEP 1, P6) || 7458 046 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/20-1 (FOR 5195, P2) || 7458 065 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/21-1 (eRO STEP 2, P7) || 7458 209 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI bis 2022 || 5002344 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI ab 2023 || 150234 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| ESA (DALI) || 7402 745 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| Wlms Altprojekte || 7402 304 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| ETI Förderung || 5500 245 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/13-2 (eRO STEP 2, P1) || 7458 204 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/14-2 (eRO STEP 2, P2) || 7458 205 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/15-2 (eRO STEP 2, TP Z) || 7458 206 || 547 41  ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/18-1 (eROSITA Galaxien) || 7458 168 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA (Altprojekte) || 7459 704 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA bis 2022 || 5002391 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA ab 2023 || 0150178 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 4388/2-1 (Saeedi) || 7458 207 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG MA 11073/1-1 (Mayer) || 7458 221 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG HE 1356/70-2 (Heber) || 7458 225 || 547 41 ||  || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 73er Titel || 061 000-6 || 547 40 || FuL || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
| 72er Titel || 806 3141 || 547 41 ||  || 1415150000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally you need to specify the kind of expense (Kostenart): 685000. If the AWK is empty in the table above, do not put anything in the '''Info 1''' field. Otherwise add the given symbol.&lt;br /&gt;
&lt;br /&gt;
== ''OUTDATED!'' Business and private travels ==&lt;br /&gt;
&lt;br /&gt;
If you intend to combine a business trip with a vacation to save money or just because of the occasion, you need to observe a couple of issues:&lt;br /&gt;
&lt;br /&gt;
  * first of all, combining business and private travel is in principle nothing that the university likes&lt;br /&gt;
  * you *need* to get the private travel authorized on the travel request form, i.e. you need to state *both* on travel request form&lt;br /&gt;
  * obviously you will not get any reimbursement for the private part of your trip, or any extra expenses arising from your vacation&lt;br /&gt;
  * to get reimbursement for your business part of the trip, you need to document what the business part alone would have cost. In detail this means that you need to document:&lt;br /&gt;
    * fictitious cost of flights/train tickets/rental car/etc for the business part of the trip&lt;br /&gt;
    * fictitious cost of flights/train tickets/etc to and from the business destination of the trip&lt;br /&gt;
  * nevertheless you also obviously need to state your actual cost (flight tickets etc).&lt;br /&gt;
  * the university will reimburse you only the *lesser* of your actual cost and the fictitious cost!\\ This means that if your flight would have cost 1000 Eur, but because you stayed longer for private reasons (i.e. over the weekend) and the actual flight is cheaper like 700 Eur, the university will only reimburse you 700 Eur.&lt;br /&gt;
&lt;br /&gt;
Furthermore apart from the reimbursement by the university, you have also to consider the taxes: the fiscal authorities might consider such a combination of business and private trip entirely private and therefore the reimbursement as additional income. So far,&lt;br /&gt;
this has never happened in Bamberg to Jörns knowledge, but in principle tax&lt;br /&gt;
regulations state that for a trip to count as a business trip, the&lt;br /&gt;
business portion must outbalance the private portion. To give an&lt;br /&gt;
example: a 3d observing run in Australia followed by a 2 week vacation&lt;br /&gt;
there would probably not be seen as a business related trip (even if it&lt;br /&gt;
was!), even though the university would reimburse you for your flights&lt;br /&gt;
and the 3d per diem.&lt;br /&gt;
((Based on a FAQ Email sent by Jörn to allusers on April 4, 2011))&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3706</id>
		<title>Travel</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3706"/>
		<updated>2025-05-05T13:27:47Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;br /&gt;
&lt;br /&gt;
This page documents how to apply for business travel and hand in the reimbursement with the online tool accessible through [https://www.mitarbeiterservice.bayern.de/ authega]. This requires you to have an account set up. If you sign up for the first time you will be send a letter (! yes, physical letter, this can take some days) with information for the login. For further logins it is best to use a certificate file with a password.&lt;br /&gt;
&lt;br /&gt;
Once logged in you can access the travel management (Reisekostenmanagement, RMS) and enter the necessary information there. Certain numbers are tied to the observatory and will always be the same, they are documented below. '''Note:''' When selecting the institution (Besch&amp;amp;auml;tigungsbeh&amp;amp;ouml;de) do '''not''' use the Remeis-Observatory or any other smaller body. Instead use the general FAU entry with the number '''1519016'''!&lt;br /&gt;
&lt;br /&gt;
More information for the general setup are in the [[:Media:introduction_bayrms.pdf|introductory slides]] (unfortunately only in German, but mostly with images so you should at least get the right buttons from it).&lt;br /&gt;
&lt;br /&gt;
== Application for business travel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Handing in reimbursement ==&lt;br /&gt;
&lt;br /&gt;
== List of project funds ==&lt;br /&gt;
&lt;br /&gt;
Below is a list of project funds that you travel might be payed from. '''Before submitting your reimbursement form ask your supervisor what project to use! Every time!'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
 |+ Project numbers&lt;br /&gt;
 |-&lt;br /&gt;
 ! Name !! Erweiterung !! Titel !! AWK !! Kostenstelle&lt;br /&gt;
 |-&lt;br /&gt;
| DLR 50 OR 2309 (VF-ULX) || 7401 171 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2417 (THESEUS) || 7401 182 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OR 2410 (VF-XMM Aafia) || 7401 186 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2503 (eROSITA) || 7401 188 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2508 (ATHENA) || 7401 191 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2507 (AXIS) || 7401 196 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/17-2 (eRO STEP 1, P5) || 7458 208 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/19-1 (eRO STEP 1, P6) || 7458 046 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/20-1 (FOR 5195, P2) || 7458 065 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/21-1 (eRO STEP 2, P7) || 7458 209 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI bis 2022 || 5002344 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI ab 2023 || 150234 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| ESA (DALI) || 7402 745 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| Wlms Altprojekte || 7402 304 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| ETI Förderung || 5500 245 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/13-2 (eRO STEP 2, P1) || 7458 204 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/14-2 (eRO STEP 2, P2) || 7458 205 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/15-2 (eRO STEP 2, TP Z) || 7458 206 || 547 41  ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/18-1 (eROSITA Galaxien) || 7458 168 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA (Altprojekte) || 7459 704 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA bis 2022 || 5002391 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA ab 2023 || 0150178 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 4388/2-1 (Saeedi) || 7458 207 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG MA 11073/1-1 (Mayer) || 7458 221 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG HE 1356/70-2 (Heber) || 7458 225 || 547 41 ||  || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 73er Titel || 061 000-6 || 547 40 || FuL || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
| 72er Titel || 806 3141 || 547 41 ||  || 1415150000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally you need to specify the kind of expense (Kostenart): 685000. If the AWK is empty in the table above, do not put anything in the '''Info 1''' field. Otherwise add the given symbol.&lt;br /&gt;
&lt;br /&gt;
== ''OUTDATED!'' Business and private travels ==&lt;br /&gt;
&lt;br /&gt;
If you intend to combine a business trip with a vacation to save money or just because of the occasion, you need to observe a couple of issues:&lt;br /&gt;
&lt;br /&gt;
  * first of all, combining business and private travel is in principle nothing that the university likes&lt;br /&gt;
  * you *need* to get the private travel authorized on the travel request form, i.e. you need to state *both* on travel request form&lt;br /&gt;
  * obviously you will not get any reimbursement for the private part of your trip, or any extra expenses arising from your vacation&lt;br /&gt;
  * to get reimbursement for your business part of the trip, you need to document what the business part alone would have cost. In detail this means that you need to document:&lt;br /&gt;
    * fictitious cost of flights/train tickets/rental car/etc for the business part of the trip&lt;br /&gt;
    * fictitious cost of flights/train tickets/etc to and from the business destination of the trip&lt;br /&gt;
  * nevertheless you also obviously need to state your actual cost (flight tickets etc).&lt;br /&gt;
  * the university will reimburse you only the *lesser* of your actual cost and the fictitious cost!\\ This means that if your flight would have cost 1000 Eur, but because you stayed longer for private reasons (i.e. over the weekend) and the actual flight is cheaper like 700 Eur, the university will only reimburse you 700 Eur.&lt;br /&gt;
&lt;br /&gt;
Furthermore apart from the reimbursement by the university, you have also to consider the taxes: the fiscal authorities might consider such a combination of business and private trip entirely private and therefore the reimbursement as additional income. So far,&lt;br /&gt;
this has never happened in Bamberg to Jörns knowledge, but in principle tax&lt;br /&gt;
regulations state that for a trip to count as a business trip, the&lt;br /&gt;
business portion must outbalance the private portion. To give an&lt;br /&gt;
example: a 3d observing run in Australia followed by a 2 week vacation&lt;br /&gt;
there would probably not be seen as a business related trip (even if it&lt;br /&gt;
was!), even though the university would reimburse you for your flights&lt;br /&gt;
and the 3d per diem.&lt;br /&gt;
((Based on a FAQ Email sent by Jörn to allusers on April 4, 2011))&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3705</id>
		<title>Travel</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3705"/>
		<updated>2025-05-05T12:24:17Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;br /&gt;
&lt;br /&gt;
This page documents how to apply for business travel and hand in the reimbursement with the online tool accessible through [https://www.mitarbeiterservice.bayern.de/ authega]. This requires you to have an account set up. If you sign up for the first time you will be send a letter (! yes, physical letter, this can take some days) with information for the login. For further logins it is best to use a certificate file with a password.&lt;br /&gt;
&lt;br /&gt;
Once logged in you can access the travel management (Reisekostenmanagement, RMS) and enter the necessary information there. Certain numbers are tied to the observatory and will always be the same, they are documented below. '''Note:''' When selecting the institution (Besch&amp;amp;auml;tigungsbeh&amp;amp;ouml;de) do '''not''' use the Remeis-Observatory or any other smaller body. Instead use the general FAU entry with the number '''1519016'''!&lt;br /&gt;
&lt;br /&gt;
More information for the general setup are in the [[:Media:introduction_bayrms.pdf|introductory slides]] (unfortunately only in German, but mostly with images so you should at least get the right buttons from it).&lt;br /&gt;
&lt;br /&gt;
== Application for business travel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Handing in reimbursement ==&lt;br /&gt;
&lt;br /&gt;
== List of project funds ==&lt;br /&gt;
&lt;br /&gt;
Below is a list of project funds that you travel might be payed from. '''Before submitting your reimbursement form ask your supervisor what project to use! Every time!'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
 |+ Project numbers&lt;br /&gt;
 |-&lt;br /&gt;
 ! Name !! Erweiterung !! Titel !! AWK !! Kostenstelle&lt;br /&gt;
 |-&lt;br /&gt;
| DLR 50 OR 2309 (VF-ULX) || 7401 171 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2417 (THESEUS) || 7401 182 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OR 2410 (VF-XMM Aafia) || 7401 186 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2503 (eROSITA) || 7401 188 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2508 (ATHENA) || 7401 191 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2507 (AXIS) || 7401 196 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/17-2 (eRO STEP 1, P5) || 7458 208 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/19-1 (eRO STEP 1, P6) || 7458 046 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/20-1 (FOR 5195, P2) || 7458 065 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/21-1 (eRO STEP 2, P7) || 7458 209 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI bis 2022 || 5002344 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI ab 2023 || 150234 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| ESA (DALI) || 7402 745 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| Wlms Altprojekte || 7402 304 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| ETI Förderung || 5500 245 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/13-2 (eRO STEP 2, P1) || 7458 204 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/14-2 (eRO STEP 2, P2) || 7458 205 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/15-2 (eRO STEP 2, TP Z) || 7458 206 || 547 41  ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/18-1 (eROSITA Galaxien) || 7458 168 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA (Altprojekte) || 7459 704 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA bis 2022 || 5002391 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA ab 2023 || 0150178 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 4388/2-1 (Saeedi) || 7458 207 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG MA 11073/1-1 (Mayer) || 7458 221 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG HE 1356/70-2 (Heber) || 7458 225 || 547 41 ||  || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 73er Titel || 061 000-6 || 547 40 || FuL || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
| 72er Titel || 806 3141 || 547 41 ||  || 1415150000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally you need to specify the kind of expense (Kostenart): 685000. If the AWK is empty in the table below, do not put anything in the '''Info 1''' field. Otherwise add the given symbol.&lt;br /&gt;
&lt;br /&gt;
== ''OUTDATED!'' Business and private travels ==&lt;br /&gt;
&lt;br /&gt;
If you intend to combine a business trip with a vacation to save money or just because of the occasion, you need to observe a couple of issues:&lt;br /&gt;
&lt;br /&gt;
  * first of all, combining business and private travel is in principle nothing that the university likes&lt;br /&gt;
  * you *need* to get the private travel authorized on the travel request form, i.e. you need to state *both* on travel request form&lt;br /&gt;
  * obviously you will not get any reimbursement for the private part of your trip, or any extra expenses arising from your vacation&lt;br /&gt;
  * to get reimbursement for your business part of the trip, you need to document what the business part alone would have cost. In detail this means that you need to document:&lt;br /&gt;
    * fictitious cost of flights/train tickets/rental car/etc for the business part of the trip&lt;br /&gt;
    * fictitious cost of flights/train tickets/etc to and from the business destination of the trip&lt;br /&gt;
  * nevertheless you also obviously need to state your actual cost (flight tickets etc).&lt;br /&gt;
  * the university will reimburse you only the *lesser* of your actual cost and the fictitious cost!\\ This means that if your flight would have cost 1000 Eur, but because you stayed longer for private reasons (i.e. over the weekend) and the actual flight is cheaper like 700 Eur, the university will only reimburse you 700 Eur.&lt;br /&gt;
&lt;br /&gt;
Furthermore apart from the reimbursement by the university, you have also to consider the taxes: the fiscal authorities might consider such a combination of business and private trip entirely private and therefore the reimbursement as additional income. So far,&lt;br /&gt;
this has never happened in Bamberg to Jörns knowledge, but in principle tax&lt;br /&gt;
regulations state that for a trip to count as a business trip, the&lt;br /&gt;
business portion must outbalance the private portion. To give an&lt;br /&gt;
example: a 3d observing run in Australia followed by a 2 week vacation&lt;br /&gt;
there would probably not be seen as a business related trip (even if it&lt;br /&gt;
was!), even though the university would reimburse you for your flights&lt;br /&gt;
and the 3d per diem.&lt;br /&gt;
((Based on a FAQ Email sent by Jörn to allusers on April 4, 2011))&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3704</id>
		<title>Travel</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3704"/>
		<updated>2025-05-05T12:17:34Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;br /&gt;
&lt;br /&gt;
This page documents how to apply for business travel and hand in the reimbursement with the online tool accessible through [https://www.mitarbeiterservice.bayern.de/ authega]. This requires you to have an account set up. If you sign up for the first time you will be send a letter (! yes, physical letter, this can take some days) with information for the login. For further logins it is best to use a certificate file with a password.&lt;br /&gt;
&lt;br /&gt;
Once logged in you can access the travel management (Reisekostenmanagement, RMS) and enter the necessary information there. Certain numbers are tied to the observatory and will always be the same, they are documented below. '''Note:''' When selecting the institution (Besch&amp;amp;auml;tigungsbeh&amp;amp;ouml;de) do '''not''' use the Remeis-Observatory or any other smaller body. Instead use the general FAU entry with the number '''1519016'''!&lt;br /&gt;
&lt;br /&gt;
More information for the general setup are in the [[:Media:introduction_bayrms.pdf|introductory slides]] (unfortunately only in German, but mostly with images so you should at least get the right buttons from it).&lt;br /&gt;
&lt;br /&gt;
== Application for business travel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Handing in reimbursement ==&lt;br /&gt;
&lt;br /&gt;
== List of project funds ==&lt;br /&gt;
&lt;br /&gt;
Below is a list of project funds that you travel might be payed from. '''Before submitting your reimbursement form ask your supervisor what project use! Every time!'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
 |+ Project numbers&lt;br /&gt;
 |-&lt;br /&gt;
 ! Name !! Erweiterung !! Titel !! AWK !! Kostenstelle&lt;br /&gt;
 |-&lt;br /&gt;
| DLR 50 OR 2309 (VF-ULX) || 7401 171 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2417 (THESEUS) || 7401 182 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OR 2410 (VF-XMM Aafia) || 7401 186 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2503 (eROSITA) || 7401 188 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2508 (ATHENA) || 7401 191 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2507 (AXIS) || 7401 196 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/17-2 (eRO STEP 1, P5) || 7458 208 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/19-1 (eRO STEP 1, P6) || 7458 046 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/20-1 (FOR 5195, P2) || 7458 065 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/21-1 (eRO STEP 2, P7) || 7458 209 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI bis 2022 || 5002344 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI ab 2023 || 150234 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| ESA (DALI) || 7402 745 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| Wlms Altprojekte || 7402 304 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| ETI Förderung || 5500 245 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/13-2 (eRO STEP 2, P1) || 7458 204 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/14-2 (eRO STEP 2, P2) || 7458 205 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/15-2 (eRO STEP 2, TP Z) || 7458 206 || 547 41  ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/18-1 (eROSITA Galaxien) || 7458 168 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA (Altprojekte) || 7459 704 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA bis 2022 || 5002391 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA ab 2023 || 0150178 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 4388/2-1 (Saeedi) || 7458 207 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG MA 11073/1-1 (Mayer) || 7458 221 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG HE 1356/70-2 (Heber) || 7458 225 || 547 41 ||  || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 73er Titel || 061 000-6 || 547 40 || FuL || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
| 72er Titel || 806 3141 || 547 41 ||  || 1415150000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally you need to specify the kind of expense (Kostenart): 685000. If the AWK is empty in the table below, do not put anything in the '''Info 1''' field. Otherwise add the given symbol.&lt;br /&gt;
&lt;br /&gt;
== ''OUTDATED!'' Business and private travels ==&lt;br /&gt;
&lt;br /&gt;
If you intend to combine a business trip with a vacation to save money or just because of the occasion, you need to observe a couple of issues:&lt;br /&gt;
&lt;br /&gt;
  * first of all, combining business and private travel is in principle nothing that the university likes&lt;br /&gt;
  * you *need* to get the private travel authorized on the travel request form, i.e. you need to state *both* on travel request form&lt;br /&gt;
  * obviously you will not get any reimbursement for the private part of your trip, or any extra expenses arising from your vacation&lt;br /&gt;
  * to get reimbursement for your business part of the trip, you need to document what the business part alone would have cost. In detail this means that you need to document:&lt;br /&gt;
    * fictitious cost of flights/train tickets/rental car/etc for the business part of the trip&lt;br /&gt;
    * fictitious cost of flights/train tickets/etc to and from the business destination of the trip&lt;br /&gt;
  * nevertheless you also obviously need to state your actual cost (flight tickets etc).&lt;br /&gt;
  * the university will reimburse you only the *lesser* of your actual cost and the fictitious cost!\\ This means that if your flight would have cost 1000 Eur, but because you stayed longer for private reasons (i.e. over the weekend) and the actual flight is cheaper like 700 Eur, the university will only reimburse you 700 Eur.&lt;br /&gt;
&lt;br /&gt;
Furthermore apart from the reimbursement by the university, you have also to consider the taxes: the fiscal authorities might consider such a combination of business and private trip entirely private and therefore the reimbursement as additional income. So far,&lt;br /&gt;
this has never happened in Bamberg to Jörns knowledge, but in principle tax&lt;br /&gt;
regulations state that for a trip to count as a business trip, the&lt;br /&gt;
business portion must outbalance the private portion. To give an&lt;br /&gt;
example: a 3d observing run in Australia followed by a 2 week vacation&lt;br /&gt;
there would probably not be seen as a business related trip (even if it&lt;br /&gt;
was!), even though the university would reimburse you for your flights&lt;br /&gt;
and the 3d per diem.&lt;br /&gt;
((Based on a FAQ Email sent by Jörn to allusers on April 4, 2011))&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3703</id>
		<title>Travel</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3703"/>
		<updated>2025-05-05T12:07:18Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;br /&gt;
&lt;br /&gt;
This page documents how to apply for business travel and hand in the reimbursement with the online tool accessible through [https://www.mitarbeiterservice.bayern.de/ authega]. This requires you to have an account set up. If you sign up for the first time you will be send a letter (! yes, physical letter, this can take some days) with information for the login. For further logins it is best to use a certificate file with a password.&lt;br /&gt;
&lt;br /&gt;
Once logged in you can access the travel management (Reisekostenmanagement, RMS) and enter the necessary information there. Certain numbers are tied to the observatory and will always be the same, they are documented below. '''Note:''' When selecting the institution (Besch&amp;amp;auml;tigungsbeh&amp;amp;ouml;de) do '''not''' use the Remeis-Observatory or any other smaller body. Instead use the general FAU entry with the number '''1519016'''!&lt;br /&gt;
&lt;br /&gt;
More information for the general setup are in the [[:Media:introduction_bayrms.pdf|introductory slides]] (unfortunately only in German, but mostly with images so you should at least get the right buttons from it).&lt;br /&gt;
&lt;br /&gt;
== Application for business travel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Handing in reimbursement ==&lt;br /&gt;
&lt;br /&gt;
== List of project funds ==&lt;br /&gt;
&lt;br /&gt;
Below is a list of project funds that you might want to add (possibly a subset thereof). This are the funds the travel is paid from.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
 |+ Project numbers&lt;br /&gt;
 |-&lt;br /&gt;
 ! Name !! Erweiterung !! Titel !! AWK !! Kostenstelle&lt;br /&gt;
 |-&lt;br /&gt;
| DLR 50 OR 2309 (VF-ULX) || 7401 171 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2417 (THESEUS) || 7401 182 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OR 2410 (VF-XMM Aafia) || 7401 186 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2503 (eROSITA) || 7401 188 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 QR 2508 (ATHENA) || 7401 191 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DLR 50 OO 2507 (AXIS) || 7401 196 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/17-2 (eRO STEP 1, P5) || 7458 208 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/19-1 (eRO STEP 1, P6) || 7458 046 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/20-1 (FOR 5195, P2) || 7458 065 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG WI 1860/21-1 (eRO STEP 2, P7) || 7458 209 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI bis 2022 || 5002344 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead WI ab 2023 || 150234 || 547 40 || PPS || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| ESA (DALI) || 7402 745 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| Wlms Altprojekte || 7402 304 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
| ETI Förderung || 5500 245 || 547 41 ||  || 1415151100&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/13-2 (eRO STEP 2, P1) || 7458 204 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/14-2 (eRO STEP 2, P2) || 7458 205 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/15-2 (eRO STEP 2, TP Z) || 7458 206 || 547 41  ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 2131/18-1 (eROSITA Galaxien) || 7458 168 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA (Altprojekte) || 7459 704 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA bis 2022 || 5002391 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG overhead SA ab 2023 || 0150178 || 547 40 || PPS || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| DFG SA 4388/2-1 (Saeedi) || 7458 207 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG MA 11073/1-1 (Mayer) || 7458 221 || 547 41 ||  || 1415150013&lt;br /&gt;
|-&lt;br /&gt;
| DFG HE 1356/70-2 (Heber) || 7458 225 || 547 41 ||  || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
|  ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 73er Titel || 061 000-6 || 547 40 || FuL || 1415150000&lt;br /&gt;
|-&lt;br /&gt;
| 72er Titel || 806 3141 || 547 41 ||  || 1415150000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additionally you need to specify the kind of expense (Kostenart): 685000. If the AWK is empty in the table below, do not put anything in the '''Info 1''' field. Otherwise add the given symbol.&lt;br /&gt;
&lt;br /&gt;
== ''OUTDATED!'' Business and private travels ==&lt;br /&gt;
&lt;br /&gt;
If you intend to combine a business trip with a vacation to save money or just because of the occasion, you need to observe a couple of issues:&lt;br /&gt;
&lt;br /&gt;
  * first of all, combining business and private travel is in principle nothing that the university likes&lt;br /&gt;
  * you *need* to get the private travel authorized on the travel request form, i.e. you need to state *both* on travel request form&lt;br /&gt;
  * obviously you will not get any reimbursement for the private part of your trip, or any extra expenses arising from your vacation&lt;br /&gt;
  * to get reimbursement for your business part of the trip, you need to document what the business part alone would have cost. In detail this means that you need to document:&lt;br /&gt;
    * fictitious cost of flights/train tickets/rental car/etc for the business part of the trip&lt;br /&gt;
    * fictitious cost of flights/train tickets/etc to and from the business destination of the trip&lt;br /&gt;
  * nevertheless you also obviously need to state your actual cost (flight tickets etc).&lt;br /&gt;
  * the university will reimburse you only the *lesser* of your actual cost and the fictitious cost!\\ This means that if your flight would have cost 1000 Eur, but because you stayed longer for private reasons (i.e. over the weekend) and the actual flight is cheaper like 700 Eur, the university will only reimburse you 700 Eur.&lt;br /&gt;
&lt;br /&gt;
Furthermore apart from the reimbursement by the university, you have also to consider the taxes: the fiscal authorities might consider such a combination of business and private trip entirely private and therefore the reimbursement as additional income. So far,&lt;br /&gt;
this has never happened in Bamberg to Jörns knowledge, but in principle tax&lt;br /&gt;
regulations state that for a trip to count as a business trip, the&lt;br /&gt;
business portion must outbalance the private portion. To give an&lt;br /&gt;
example: a 3d observing run in Australia followed by a 2 week vacation&lt;br /&gt;
there would probably not be seen as a business related trip (even if it&lt;br /&gt;
was!), even though the university would reimburse you for your flights&lt;br /&gt;
and the 3d per diem.&lt;br /&gt;
((Based on a FAQ Email sent by Jörn to allusers on April 4, 2011))&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3702</id>
		<title>Travel</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3702"/>
		<updated>2025-05-05T11:56:04Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;br /&gt;
&lt;br /&gt;
This page documents how to apply for business travel and hand in the reimbursement with the online tool accessible through [https://www.mitarbeiterservice.bayern.de/ authega]. This requires you to have an account set up. If you sign up for the first time you will be send a letter (! yes, physical letter, this can take some days) with information for the login. For further logins it is best to use a certificate file with a password.&lt;br /&gt;
&lt;br /&gt;
Once logged in you can access the travel management (Reisekostenmanagement, RMS) and enter the necessary information there. Certain numbers are tied to the observatory and will always be the same, they are documented below. '''Note:''' When selecting the institution (Besch&amp;amp;auml;tigungsbeh&amp;amp;ouml;de) do '''not''' use the Remeis-Observatory or any other smaller body. Instead use the general FAU entry with the number '''1519016'''!&lt;br /&gt;
&lt;br /&gt;
More information for the general setup are in the [[:Media:introduction_bayrms.pdf|introductory slides]].&lt;br /&gt;
&lt;br /&gt;
== Application for business travel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Handing in reimbursement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ''OUTDATED!'' Business and private travels ====&lt;br /&gt;
&lt;br /&gt;
If you intend to combine a business trip with a vacation to save money or just because of the occasion, you need to observe a couple of issues:&lt;br /&gt;
&lt;br /&gt;
  * first of all, combining business and private travel is in principle nothing that the university likes&lt;br /&gt;
  * you *need* to get the private travel authorized on the travel request form, i.e. you need to state *both* on travel request form&lt;br /&gt;
  * obviously you will not get any reimbursement for the private part of your trip, or any extra expenses arising from your vacation&lt;br /&gt;
  * to get reimbursement for your business part of the trip, you need to document what the business part alone would have cost. In detail this means that you need to document:&lt;br /&gt;
    * fictitious cost of flights/train tickets/rental car/etc for the business part of the trip&lt;br /&gt;
    * fictitious cost of flights/train tickets/etc to and from the business destination of the trip&lt;br /&gt;
  * nevertheless you also obviously need to state your actual cost (flight tickets etc).&lt;br /&gt;
  * the university will reimburse you only the *lesser* of your actual cost and the fictitious cost!\\ This means that if your flight would have cost 1000 Eur, but because you stayed longer for private reasons (i.e. over the weekend) and the actual flight is cheaper like 700 Eur, the university will only reimburse you 700 Eur.&lt;br /&gt;
&lt;br /&gt;
Furthermore apart from the reimbursement by the university, you have also to consider the taxes: the fiscal authorities might consider such a combination of business and private trip entirely private and therefore the reimbursement as additional income. So far,&lt;br /&gt;
this has never happened in Bamberg to Jörns knowledge, but in principle tax&lt;br /&gt;
regulations state that for a trip to count as a business trip, the&lt;br /&gt;
business portion must outbalance the private portion. To give an&lt;br /&gt;
example: a 3d observing run in Australia followed by a 2 week vacation&lt;br /&gt;
there would probably not be seen as a business related trip (even if it&lt;br /&gt;
was!), even though the university would reimburse you for your flights&lt;br /&gt;
and the 3d per diem.&lt;br /&gt;
((Based on a FAQ Email sent by Jörn to allusers on April 4, 2011))&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Introduction_bayrms.pdf&amp;diff=3701</id>
		<title>File:Introduction bayrms.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=File:Introduction_bayrms.pdf&amp;diff=3701"/>
		<updated>2025-05-05T11:53:00Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Slides of the introduction presentation for the travel management system.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Slides of the introduction presentation for the travel management system.&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3700</id>
		<title>Travel</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3700"/>
		<updated>2025-05-05T11:52:03Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;br /&gt;
&lt;br /&gt;
This page documents how to apply for business travel and hand in the reimbursement with the online tool accessible through [https://www.mitarbeiterservice.bayern.de/ authega]. This requires you to have an account set up. If you sign up for the first time you will be send a letter (! yes, physical letter, this can take some days) with information for the login. For further logins it is best to use a certificate file with a password.&lt;br /&gt;
&lt;br /&gt;
Once logged in you can access the travel management (Reisekostenmanagement, RMS) and enter the necessary information there. Certain numbers are tied to the observatory and will always be the same, they are documented below. '''Note:''' When selecting the institution (Besch&amp;amp;auml;tigungsbeh&amp;amp;ouml;de) do '''not''' use the Remeis-Observatory or any other smaller body. Instead use the general FAU entry with the number '''1519016'''!&lt;br /&gt;
&lt;br /&gt;
More information for the general setup are in the introductory slides.&lt;br /&gt;
&lt;br /&gt;
== Application for business travel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Handing in reimbursement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ''OUTDATED!'' Business and private travels ====&lt;br /&gt;
&lt;br /&gt;
If you intend to combine a business trip with a vacation to save money or just because of the occasion, you need to observe a couple of issues:&lt;br /&gt;
&lt;br /&gt;
  * first of all, combining business and private travel is in principle nothing that the university likes&lt;br /&gt;
  * you *need* to get the private travel authorized on the travel request form, i.e. you need to state *both* on travel request form&lt;br /&gt;
  * obviously you will not get any reimbursement for the private part of your trip, or any extra expenses arising from your vacation&lt;br /&gt;
  * to get reimbursement for your business part of the trip, you need to document what the business part alone would have cost. In detail this means that you need to document:&lt;br /&gt;
    * fictitious cost of flights/train tickets/rental car/etc for the business part of the trip&lt;br /&gt;
    * fictitious cost of flights/train tickets/etc to and from the business destination of the trip&lt;br /&gt;
  * nevertheless you also obviously need to state your actual cost (flight tickets etc).&lt;br /&gt;
  * the university will reimburse you only the *lesser* of your actual cost and the fictitious cost!\\ This means that if your flight would have cost 1000 Eur, but because you stayed longer for private reasons (i.e. over the weekend) and the actual flight is cheaper like 700 Eur, the university will only reimburse you 700 Eur.&lt;br /&gt;
&lt;br /&gt;
Furthermore apart from the reimbursement by the university, you have also to consider the taxes: the fiscal authorities might consider such a combination of business and private trip entirely private and therefore the reimbursement as additional income. So far,&lt;br /&gt;
this has never happened in Bamberg to Jörns knowledge, but in principle tax&lt;br /&gt;
regulations state that for a trip to count as a business trip, the&lt;br /&gt;
business portion must outbalance the private portion. To give an&lt;br /&gt;
example: a 3d observing run in Australia followed by a 2 week vacation&lt;br /&gt;
there would probably not be seen as a business related trip (even if it&lt;br /&gt;
was!), even though the university would reimburse you for your flights&lt;br /&gt;
and the 3d per diem.&lt;br /&gt;
((Based on a FAQ Email sent by Jörn to allusers on April 4, 2011))&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3699</id>
		<title>Travel</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3699"/>
		<updated>2025-05-05T11:37:14Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;br /&gt;
&lt;br /&gt;
This page documents how to apply for business travel and hand in the reimbursement with the online tool accessible through [https://www.mitarbeiterservice.bayern.de/ authega]. This requires you to have an account set up. If you sign up for the first time you will be send a letter (! yes, physical letter, this can take some days) with information for the login. For further logins it is best to use a certificate file with a password.&lt;br /&gt;
&lt;br /&gt;
Once logged in you can access the travel management (Reisekostenmanagement, RMS) and enter the necessary information there. Certain numbers are tied to the observatory and will always be the same, they are documented below. '''Note:''' When selecting the institution (Besch&amp;amp;auml;tigungsbeh&amp;amp;ouml;de) do '''not''' use the Remeis-Observatory or any other smaller body. Instead use the general FAU entry with the number '''1519016'''!&lt;br /&gt;
&lt;br /&gt;
== Application for business travel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Handing in reimbursement ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ''OUTDATED!'' Business and private travels ====&lt;br /&gt;
&lt;br /&gt;
If you intend to combine a business trip with a vacation to save money or just because of the occasion, you need to observe a couple of issues:&lt;br /&gt;
&lt;br /&gt;
  * first of all, combining business and private travel is in principle nothing that the university likes&lt;br /&gt;
  * you *need* to get the private travel authorized on the travel request form, i.e. you need to state *both* on travel request form&lt;br /&gt;
  * obviously you will not get any reimbursement for the private part of your trip, or any extra expenses arising from your vacation&lt;br /&gt;
  * to get reimbursement for your business part of the trip, you need to document what the business part alone would have cost. In detail this means that you need to document:&lt;br /&gt;
    * fictitious cost of flights/train tickets/rental car/etc for the business part of the trip&lt;br /&gt;
    * fictitious cost of flights/train tickets/etc to and from the business destination of the trip&lt;br /&gt;
  * nevertheless you also obviously need to state your actual cost (flight tickets etc).&lt;br /&gt;
  * the university will reimburse you only the *lesser* of your actual cost and the fictitious cost!\\ This means that if your flight would have cost 1000 Eur, but because you stayed longer for private reasons (i.e. over the weekend) and the actual flight is cheaper like 700 Eur, the university will only reimburse you 700 Eur.&lt;br /&gt;
&lt;br /&gt;
Furthermore apart from the reimbursement by the university, you have also to consider the taxes: the fiscal authorities might consider such a combination of business and private trip entirely private and therefore the reimbursement as additional income. So far,&lt;br /&gt;
this has never happened in Bamberg to Jörns knowledge, but in principle tax&lt;br /&gt;
regulations state that for a trip to count as a business trip, the&lt;br /&gt;
business portion must outbalance the private portion. To give an&lt;br /&gt;
example: a 3d observing run in Australia followed by a 2 week vacation&lt;br /&gt;
there would probably not be seen as a business related trip (even if it&lt;br /&gt;
was!), even though the university would reimburse you for your flights&lt;br /&gt;
and the 3d per diem.&lt;br /&gt;
((Based on a FAQ Email sent by Jörn to allusers on April 4, 2011))&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3698</id>
		<title>Travel</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Travel&amp;diff=3698"/>
		<updated>2025-05-05T11:22:50Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: Stierhof moved page Travel private to Travel without leaving a redirect: Outdated and needs new information regarding the new system&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Business and private travels ====&lt;br /&gt;
&lt;br /&gt;
If you intend to combine a business trip with a vacation to save money or just because of the occasion, you need to observe a couple of issues:&lt;br /&gt;
&lt;br /&gt;
  * first of all, combining business and private travel is in principle nothing that the university likes&lt;br /&gt;
  * you *need* to get the private travel authorized on the travel request form, i.e. you need to state *both* on travel request form&lt;br /&gt;
  * obviously you will not get any reimbursement for the private part of your trip, or any extra expenses arising from your vacation&lt;br /&gt;
  * to get reimbursement for your business part of the trip, you need to document what the business part alone would have cost. In detail this means that you need to document:&lt;br /&gt;
    * fictitious cost of flights/train tickets/rental car/etc for the business part of the trip&lt;br /&gt;
    * fictitious cost of flights/train tickets/etc to and from the business destination of the trip&lt;br /&gt;
  * nevertheless you also obviously need to state your actual cost (flight tickets etc).&lt;br /&gt;
  * the university will reimburse you only the *lesser* of your actual cost and the fictitious cost!\\ This means that if your flight would have cost 1000 Eur, but because you stayed longer for private reasons (i.e. over the weekend) and the actual flight is cheaper like 700 Eur, the university will only reimburse you 700 Eur.&lt;br /&gt;
&lt;br /&gt;
Furthermore apart from the reimbursement by the university, you have also to consider the taxes: the fiscal authorities might consider such a combination of business and private trip entirely private and therefore the reimbursement as additional income. So far,&lt;br /&gt;
this has never happened in Bamberg to Jörns knowledge, but in principle tax&lt;br /&gt;
regulations state that for a trip to count as a business trip, the&lt;br /&gt;
business portion must outbalance the private portion. To give an&lt;br /&gt;
example: a 3d observing run in Australia followed by a 2 week vacation&lt;br /&gt;
there would probably not be seen as a business related trip (even if it&lt;br /&gt;
was!), even though the university would reimburse you for your flights&lt;br /&gt;
and the 3d per diem.&lt;br /&gt;
((Based on a FAQ Email sent by Jörn to allusers on April 4, 2011))&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Litclub&amp;diff=3539</id>
		<title>Litclub</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Litclub&amp;diff=3539"/>
		<updated>2024-12-17T11:31:20Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is LitClub? == &lt;br /&gt;
&lt;br /&gt;
LitClub is a weekly meeting held at the Dr. Karl Remeis Observatory for all observatory members. The meeting consists of a presentation of a scientific, astrophysics-related paper chosen by a speaker, who was selected to give a talk for the current week and is followed by a general discussion. The goals of the meeting are the following:&lt;br /&gt;
&lt;br /&gt;
* to improve communication and presentation skills for bachelor, master, and PhD students&lt;br /&gt;
* to provide a platform for free and casual discussion of scientific topics&lt;br /&gt;
* to learn more ;-)&lt;br /&gt;
* to bring all our groups together&lt;br /&gt;
&lt;br /&gt;
LitClub takes place on Tuesdays at 11:30, in the conference room in the main observatory building, or (if there are too many attendees) in the library in the meridian building.&lt;br /&gt;
&lt;br /&gt;
LitClub is a mandatory activity for all observatory members. All students are on the list of presenters. All postdocs are expected to contribute to the discussion and to take over the presentation in case the speaker has to cancel last minute.&lt;br /&gt;
&lt;br /&gt;
Please find below the general rules and commonly asked questions.&lt;br /&gt;
&lt;br /&gt;
== Organization ==&lt;br /&gt;
&lt;br /&gt;
Every week a person is chosen to present a paper.&lt;br /&gt;
&lt;br /&gt;
'''How a person is chosen?'''&lt;br /&gt;
&lt;br /&gt;
The selection of a presenter is done semi-randomly by Ingo, taking into account information about people's availability. At the beginning of the semester, a table is sent around where you can enter your availability on certain weeks (yes, all students are expected to be available a respectable amount of weeks per semester to make a presentation). If an observatory member provided no information in the table, the LitClub organizers assume that this person is available on any given day. The presenter is informed about the presentation a few days in advance.&lt;br /&gt;
&lt;br /&gt;
'''How a presented paper is chosen?'''&lt;br /&gt;
&lt;br /&gt;
A presenter chooses a paper from recently published papers or a list of somewhat interesting papers below, which contain the classical (&amp;quot;must-read&amp;quot;) astrophysics-related papers, as well as some new advanced in the field. A different paper can be chosen, either from a peer-reviewed journal or the arxiv and which is related to space science (including, e.g., planetary science, instruments, methods, ...). In case you want to present something different, for example, to talk about your part or present research, please inform the organizers: [mailto:astro-literature@lists.fau.de astro-literature@lists.fau.de].&lt;br /&gt;
&lt;br /&gt;
'''The best way''' to select a paper is check [https://arxiv.org arxiv] 2 weeks before your day of the presentation. '''Only''' if you do not find anything suitable there check the list given below for a paper. If you do select a paper from the list '''make sure to inform the litclub organizers''' well in advance so it can be ensured the paper was not already presented.&lt;br /&gt;
&lt;br /&gt;
'''How presentation is done?'''&lt;br /&gt;
Presentation at the LitClub requires a few prepared slides with the most essential information, which helps to guide you (and your audience) through your talk. Any time-consuming design features are strongly discouraged: you are expected to quickly prepare simple slides with valuable content. See below the section on &amp;quot;Guidelines&amp;quot; for more details on how long the talk should be etc.&lt;br /&gt;
&lt;br /&gt;
== Guidelines and Information ==&lt;br /&gt;
&lt;br /&gt;
'''Basic guidelines and information on the purpose of the litclub, the roles of the audience and the speaker, and how to prepare and present the talk were presented in a short talk (by Thomas Dauser), which you can find here: [[File:litclub_guidelines.pdf]]'''&lt;br /&gt;
&lt;br /&gt;
If you are new to the litclub, it is very helpful to have a look there, as it is currently the most detailed resource of information on how the litclub works.&lt;br /&gt;
&lt;br /&gt;
== Frequently Asked Questions ==&lt;br /&gt;
&lt;br /&gt;
'''Is it really mandatory for all students?'''&lt;br /&gt;
&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
'''What if I cannot present when I am asked?'''&lt;br /&gt;
&lt;br /&gt;
In this case, you have to find a person who could present instead of you on the date. At the same time, you are expected to give a presentation within the following weeks.&lt;br /&gt;
&lt;br /&gt;
'''What are acceptable reasons to not present, when I was asked?'''&lt;br /&gt;
&lt;br /&gt;
Lectures and examinations - confirmed by schedule or vacation and sickness - confirmed with your supervisor. In the case of one of these reasons, please see the previous question. If you got sick on the day of the presentation and there was no time to find a different speaker, you will be shifted to one of the following weeks and LitClub will be conducted by one (or a few) of the observatory postdocs.&lt;br /&gt;
&lt;br /&gt;
'''I have an upcoming conference talk, is it a good reason to not present at LitClub a week before?'''&lt;br /&gt;
&lt;br /&gt;
No. It is expected that the LitClub will not take too much of your preparation time. If it does - you need (want) to learn how to make it quicker, which is possible only by practice.&lt;br /&gt;
&lt;br /&gt;
'''I am working on my master (bachelor/PhD) thesis, is it an acceptable reason to not present at LitClub?'''&lt;br /&gt;
&lt;br /&gt;
No. Only if you have your defence within a few days of the LitClub in question. Otherwise: it is the time for you to work with a lot of literature. Just pick one of the papers you recently read for your thesis and present it.&lt;br /&gt;
&lt;br /&gt;
'''Do I have to have slides for the presentation'''&lt;br /&gt;
&lt;br /&gt;
Yes. The current request by our professors is that you would prepare simple slides with the main information. (5 slides is plenty)&lt;br /&gt;
&lt;br /&gt;
'''How much time I am expected to spend to prepare for the LitClub presentation?'''&lt;br /&gt;
&lt;br /&gt;
It depends on the paper you choose, but in general, you should be able to prepare your talk within half of a working day.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
For questions and comments, please contact the organizers: [mailto:astro-literature@lists.fau.de astro-literature@lists.fau.de].&lt;br /&gt;
Any major modifications to the structure of LitClub will be discussed with the professors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Litclub Paper List (WILL BE UPDATED!!!)==&lt;br /&gt;
 &lt;br /&gt;
We collect potentially interesting papers in an [https://ui.adsabs.harvard.edu/user/libraries/8mOwkXjvQl206110FBulVw ADS library] to give some inspiration. But be reminded that you should check new publications first before consulting this list. Also, if you select a paper from this list '''inform the organizers as soon as possible''' so it can be checked for duplicates. It is also particularly encouraged to present any interesting scientific work, not restricted to astronomy! Also, in case you found interesting papers feel free to add them to the list below (create sections as required, beware that this page is not updated as often as it should be so the chance that they have been presented already is rather high).&lt;br /&gt;
&lt;br /&gt;
''On a best effort basis we maintain an second [https://ui.adsabs.harvard.edu/user/libraries/9B-WkBVbTAmnzI7rmQ7dtA ADS (presented) library] where already presented papers are listed.''&lt;br /&gt;
&lt;br /&gt;
=== X-ray astronomy ===&lt;br /&gt;
&lt;br /&gt;
- Electromagnetic extraction of energy from Kerr black holes (Blandford-Znajek mechanism): Blandford, Znajek, MNRAS 179, 433, 1977 &amp;lt;ref&amp;gt;[https://ui.adsabs.harvard.edu/abs/1977MNRAS.179..433B/abstract]Blandford, Znajek, MNRAS 179, 433, 1977&amp;lt;/ref&amp;gt; (although, astrophysically, the Blandford-Payne mechanism likely contributes more to jet launching, e.g., Livio, Ogilvie, Pringle, ApJ 512, 100, 1999)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;The corona contracts in a black-hole transient&amp;quot;: Kara et al., Nature 565 198, 2019 &amp;lt;ref&amp;gt;[https://ui.adsabs.harvard.edu/abs/2019Natur.565..198K/abstract]Kara et al., Nature 565 198, 2019&amp;lt;/ref&amp;gt;, although this result is disputed (e.g., arxiv/2112.08116)&lt;br /&gt;
&lt;br /&gt;
- Connection of FRBs and magnetars: &amp;quot;INTEGRAL Discovery of a Burst with Associated Radio Emission from the Magnetar SGR 1935+2154&amp;quot; (Mereghetti, 2020ApJ...898L..29M)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;Discovery of oscillations above 200 keV in a black hole X-ray binary with Insight-HXMT&amp;quot; (Ma et al., 2021NatAs...5...94M)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;Cygnus X-1 contains a 21-solar mass black hole—Implications for massive star winds&amp;quot; (Miller-Jones 2021Sci...371.1046M)&lt;br /&gt;
&lt;br /&gt;
- EuCAPT White Paper: Opportunities and Challenges for Theoretical Astroparticle Physics in the Next Decade (Batista et al., arxiv.org/abs/2110.10074) - perhaps too long but really interesting summary&lt;br /&gt;
&lt;br /&gt;
- Dark Energy Survey 3 Year Results (e.g., http://adsabs.harvard.edu/abs/2021arXiv210513549D)&lt;br /&gt;
&lt;br /&gt;
=== Aliens? :0 ===&lt;br /&gt;
&lt;br /&gt;
- Estimating the prevalence of malicious extraterrestrial civilizations (Caballero 2022arXiv220511618C) [https://arxiv.org/pdf/2205.11618.pdf]&lt;br /&gt;
&lt;br /&gt;
=== Cosmology ===&lt;br /&gt;
&lt;br /&gt;
- Is the Expansion of the Universe Accelerating? All Signs Still Point to Yes: A Local Dipole Anisotropy Cannot Explain Dark Energy [https://iopscience.iop.org/article/10.3847/1538-4357/ab7a16/pdf]&lt;br /&gt;
&lt;br /&gt;
=== Statistics ===&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;STATISTICS, HANDLE WITH CARE: DETECTING MULTIPLE MODEL COMPONENTS WITH THE LIKELIHOOD RATIO TEST&amp;quot; (Protassov, 2002ApJ...571..545P)&lt;br /&gt;
&lt;br /&gt;
=== Some more extravagant stuff ===&lt;br /&gt;
&lt;br /&gt;
- The Breakthrough Listen Search For Intelligent Life Near the Galactic Center (Gajjar et al., ApJ 162, 33, 2021)&lt;br /&gt;
&lt;br /&gt;
- An Objective Bayesian Analysis of Life's Early Start and Our Late Arrival (Kipping, 2020, https://arxiv.org/abs/2005.09008)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Non-astrophysics ===&lt;br /&gt;
&lt;br /&gt;
- creating unique random numbers using the quantum noise of the vacuum: Gabriel et al., Nature Photonics 4, 711, 2010&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Login&amp;diff=3526</id>
		<title>Login</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Login&amp;diff=3526"/>
		<updated>2024-11-21T13:00:29Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Issuses during update to 16.04 ==&lt;br /&gt;
&lt;br /&gt;
Especially in the course of the update of 14.04 to 16.04 the following issues have turned out to happen quite often. The text was copied from Ingo's mail to the admin list.&lt;br /&gt;
&lt;br /&gt;
* the .dmrc problem: if something else than &amp;quot;plasma&amp;quot; is specified in&lt;br /&gt;
this file in the home directory of the user, you'll get a &amp;quot;can not load&lt;br /&gt;
session&amp;quot; (or similar) error message. Since lightdm sort of &amp;quot;caches&amp;quot; the&lt;br /&gt;
value of this file in a file of its own, this can be very annoying to&lt;br /&gt;
sort out.&lt;br /&gt;
&lt;br /&gt;
* the .Xauthority problem: can happen if a machine is newly installed&lt;br /&gt;
and the user has worked on that machine before the update, i.e. a wrong&lt;br /&gt;
key is stored in .Xauthority&lt;br /&gt;
&lt;br /&gt;
* akonadi / baloo crap: if enabled, these daemons cause heavy IO load&lt;br /&gt;
and potentially slow down / inhibit login or make the machine barely&lt;br /&gt;
usable while creating the databases&lt;br /&gt;
&lt;br /&gt;
* useless KDE animations: on older or weaker machines, enabling (or not&lt;br /&gt;
disabling) tons of KDE animations can make the machine very slow, or&lt;br /&gt;
might even crash the graphics driver&lt;br /&gt;
&lt;br /&gt;
* reboot necessary: as it turned out in Marias case, the machine needed&lt;br /&gt;
a reboot. It seems that the new KDE is new more touchy w.r.t. a&lt;br /&gt;
necessary reboot. I.e. if KDE components have been updated by the&lt;br /&gt;
nightly cron jobs, the KDE/Ubuntu 16 system services (dbus et al)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apparantly do not get along very well any more causing these frozen&lt;br /&gt;
logins and a reboot is needed.&lt;br /&gt;
==&amp;gt; if this happens more often, we have to think about whether we can&lt;br /&gt;
continue with the nightly updates, or whether we do them only once a&lt;br /&gt;
week and have reboots afterwards (something like &amp;quot;reboot Monday&amp;quot; or&lt;br /&gt;
similar).&lt;br /&gt;
&lt;br /&gt;
* ''possibly'' some other cron job may interfere with the new KDE causing&lt;br /&gt;
these frozen logins.&lt;br /&gt;
&lt;br /&gt;
== Ubuntu 20.04 Issues ==&lt;br /&gt;
&lt;br /&gt;
For some reason it can happen that for a particular user on a particular machine lightdm (login manager) decides to load the gnome session (albeit it should load xfce per default). It does so despite no full gnome desktop environment is installed. It seems that somehow the d-bus is wrongly configured (?) or started (?), not sure. Anyway, the effect is that even logout or restart does not fix this. The user is greeted with a pretty blank gnome desktop environment running on top of xfce (the later is therefore inaccessible).&lt;br /&gt;
&lt;br /&gt;
This seems to fix this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User&amp;lt;UID&amp;gt; org.freedesktop.Accounts.User.SetXSession string:xfce&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
make sure to replace &amp;lt;code&amp;gt;&amp;lt;UID&amp;gt;&amp;lt;/code&amp;gt; with the affected users id.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Login&amp;diff=3525</id>
		<title>Login</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Login&amp;diff=3525"/>
		<updated>2024-11-21T12:55:27Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Issuses during update to 14.04 ==&lt;br /&gt;
&lt;br /&gt;
Especially in the course of the update of 14.04 to 16.04 the following issues have turned out to happen quite often. The text was copied from Ingo's mail to the admin list.&lt;br /&gt;
&lt;br /&gt;
* the .dmrc problem: if something else than &amp;quot;plasma&amp;quot; is specified in&lt;br /&gt;
this file in the home directory of the user, you'll get a &amp;quot;can not load&lt;br /&gt;
session&amp;quot; (or similar) error message. Since lightdm sort of &amp;quot;caches&amp;quot; the&lt;br /&gt;
value of this file in a file of its own, this can be very annoying to&lt;br /&gt;
sort out.&lt;br /&gt;
&lt;br /&gt;
* the .Xauthority problem: can happen if a machine is newly installed&lt;br /&gt;
and the user has worked on that machine before the update, i.e. a wrong&lt;br /&gt;
key is stored in .Xauthority&lt;br /&gt;
&lt;br /&gt;
* akonadi / baloo crap: if enabled, these daemons cause heavy IO load&lt;br /&gt;
and potentially slow down / inhibit login or make the machine barely&lt;br /&gt;
usable while creating the databases&lt;br /&gt;
&lt;br /&gt;
* useless KDE animations: on older or weaker machines, enabling (or not&lt;br /&gt;
disabling) tons of KDE animations can make the machine very slow, or&lt;br /&gt;
might even crash the graphics driver&lt;br /&gt;
&lt;br /&gt;
* reboot necessary: as it turned out in Marias case, the machine needed&lt;br /&gt;
a reboot. It seems that the new KDE is new more touchy w.r.t. a&lt;br /&gt;
necessary reboot. I.e. if KDE components have been updated by the&lt;br /&gt;
nightly cron jobs, the KDE/Ubuntu 16 system services (dbus et al)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apparantly do not get along very well any more causing these frozen&lt;br /&gt;
logins and a reboot is needed.&lt;br /&gt;
==&amp;gt; if this happens more often, we have to think about whether we can&lt;br /&gt;
continue with the nightly updates, or whether we do them only once a&lt;br /&gt;
week and have reboots afterwards (something like &amp;quot;reboot Monday&amp;quot; or&lt;br /&gt;
similar).&lt;br /&gt;
&lt;br /&gt;
* ''possibly'' some other cron job may interfere with the new KDE causing&lt;br /&gt;
these frozen logins.&lt;br /&gt;
&lt;br /&gt;
== Ubuntu 20.04 Issues ==&lt;br /&gt;
&lt;br /&gt;
For some reason it can happen that for a particular user on a particular machine lightdm (login manager) decides to load the gnome session (albeit it should load xfce per default). It does so despite no full gnome desktop environment is installed. It seems that somehow the d-bus is wrongly configured (?) or started (?), not sure. Anyway, the effect is that even logout or restart does not fix this. The user is greeted with a pretty blank gnome desktop environment running on top of xfce (the later is therefore inaccessible).&lt;br /&gt;
&lt;br /&gt;
This seems to fix this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User&amp;lt;UID&amp;gt; org.freedesktop.Accounts.User.SetXSession string:xfce&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
make sure to replace &amp;lt;code&amp;gt;&amp;lt;UID&amp;gt;&amp;lt;/code&amp;gt; with the affected users id.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Login&amp;diff=3524</id>
		<title>Login</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Login&amp;diff=3524"/>
		<updated>2024-11-21T12:54:01Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Issuses during update to 14.04&lt;br /&gt;
&lt;br /&gt;
Especially in the course of the update of 14.04 to 16.04 the following issues have turned out to happen quite often. The text was copied from Ingo's mail to the admin list.&lt;br /&gt;
&lt;br /&gt;
* the .dmrc problem: if something else than &amp;quot;plasma&amp;quot; is specified in&lt;br /&gt;
this file in the home directory of the user, you'll get a &amp;quot;can not load&lt;br /&gt;
session&amp;quot; (or similar) error message. Since lightdm sort of &amp;quot;caches&amp;quot; the&lt;br /&gt;
value of this file in a file of its own, this can be very annoying to&lt;br /&gt;
sort out.&lt;br /&gt;
&lt;br /&gt;
* the .Xauthority problem: can happen if a machine is newly installed&lt;br /&gt;
and the user has worked on that machine before the update, i.e. a wrong&lt;br /&gt;
key is stored in .Xauthority&lt;br /&gt;
&lt;br /&gt;
* akonadi / baloo crap: if enabled, these daemons cause heavy IO load&lt;br /&gt;
and potentially slow down / inhibit login or make the machine barely&lt;br /&gt;
usable while creating the databases&lt;br /&gt;
&lt;br /&gt;
* useless KDE animations: on older or weaker machines, enabling (or not&lt;br /&gt;
disabling) tons of KDE animations can make the machine very slow, or&lt;br /&gt;
might even crash the graphics driver&lt;br /&gt;
&lt;br /&gt;
* reboot necessary: as it turned out in Marias case, the machine needed&lt;br /&gt;
a reboot. It seems that the new KDE is new more touchy w.r.t. a&lt;br /&gt;
necessary reboot. I.e. if KDE components have been updated by the&lt;br /&gt;
nightly cron jobs, the KDE/Ubuntu 16 system services (dbus et al)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
apparantly do not get along very well any more causing these frozen&lt;br /&gt;
logins and a reboot is needed.&lt;br /&gt;
==&amp;gt; if this happens more often, we have to think about whether we can&lt;br /&gt;
continue with the nightly updates, or whether we do them only once a&lt;br /&gt;
week and have reboots afterwards (something like &amp;quot;reboot Monday&amp;quot; or&lt;br /&gt;
similar).&lt;br /&gt;
&lt;br /&gt;
* ''possibly'' some other cron job may interfere with the new KDE causing&lt;br /&gt;
these frozen logins.&lt;br /&gt;
&lt;br /&gt;
# Ubuntu 20.04 Issues&lt;br /&gt;
&lt;br /&gt;
For some reason it can happen that for a particular user on a particular machine lightdm (login manager) decides to load the gnome session (albeit it should load xfce per default). It does so despite no full gnome desktop environment is installed. It seems that somehow the d-bus is wrongly configured (?) or started (?), not sure. Anyway, the effect is that even logout or restart does not fix this. The user is greeted with a pretty blank gnome desktop environment running on top of xfce (the later is therefore inaccessible).&lt;br /&gt;
&lt;br /&gt;
This seems to fix this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User&amp;lt;UID&amp;gt; org.freedesktop.Accounts.User.SetXSession string:xfce&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
make sure to replace &amp;lt;code&amp;gt;&amp;lt;UID&amp;gt;&amp;lt;/code&amp;gt; with the affected users id.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=WebCalendar&amp;diff=3470</id>
		<title>WebCalendar</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=WebCalendar&amp;diff=3470"/>
		<updated>2024-09-06T09:13:26Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a lose collection of information regarding the web calendar. Currently we use [https://github.com/craigk5n/webcalendar?tab=readme-ov-file k5n's php implementation] with some custom changes (which might be possible to do in a better way, but I have no clue so far).&lt;br /&gt;
&lt;br /&gt;
== Backing up database ==&lt;br /&gt;
&lt;br /&gt;
The calendar user has no rights so you need to know the db admin login. Then you can do&lt;br /&gt;
```&lt;br /&gt;
mysqldump -uroot -p Calendar_I &amp;gt; Calendar_I.sql&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Calendar_I is what was as of this writing. Check include/settings.php in the WebCalendar folder to see what is actually used right now.&lt;br /&gt;
&lt;br /&gt;
== Update script ==&lt;br /&gt;
&lt;br /&gt;
After backing the data base unpack the new version into a new folder, set the apache address (remember it is in puppet), and go through the install script. Make sure that 'includes/' is read/writeable by www-data! (and also the parent folder).&lt;br /&gt;
&lt;br /&gt;
== PHP version ==&lt;br /&gt;
&lt;br /&gt;
For PHP v7.4 only WebCalendar v1.9.8 seems to work. They are in the process of updating to PHP v8!&lt;br /&gt;
&lt;br /&gt;
== LDAP settings ==&lt;br /&gt;
&lt;br /&gt;
After doing the initialization or updating of the database we need to connect to ldap. If you did not select LDAP autehtication during setup you can change that in 'includes/settings.php'. Adjust the settings in 'includes/auth-settings.php' such that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$user_can_update_password = false;&lt;br /&gt;
$admin_can_add_user = false;&lt;br /&gt;
$admin_can_delete_user = false;&lt;br /&gt;
...&lt;br /&gt;
   $ldap_server = '&amp;lt;server address&amp;gt;';&lt;br /&gt;
...&lt;br /&gt;
   $set_lda-_version = true;&lt;br /&gt;
...&lt;br /&gt;
   $ldap_base_dn = 'ou=People,dc=sternwarte,dc=uni-erlangen,dc=de';&lt;br /&gt;
...&lt;br /&gt;
   $ldap_admin_group_name = 'cn=leitung,ou=local,ou=Group,dc=sternwarte,dc=uni-erlangen,dc=de';&lt;br /&gt;
...&lt;br /&gt;
   $ldap_user_filter = '(|(objectclass=remeisperson)(uid=webmaster))'; // only allow real people, but also webmaster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Customization ==&lt;br /&gt;
&lt;br /&gt;
We do small changes to guide the users:&lt;br /&gt;
&lt;br /&gt;
'includes/menu.php' change&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;nav-link&amp;quot; href=&amp;quot;&amp;lt;?php echo $logout_url; ?&amp;gt;&amp;quot;&amp;gt;Logout&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;nav-link&amp;quot; href=&amp;quot;&amp;lt;?php echo $logout_url; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php if ($login == '__public__') echo \&lt;br /&gt;
'Login'; else echo 'Logout';?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are changes in 'includes/functions.php' regarding the __internal__ fake user. Check older WebCalendar files what was done. Same goes for 'includes/classes/WebCalendar.php', includes/translate.php', 'includes/user-ldap.php', 'edit_entry.php' and 'admin.php'.&lt;br /&gt;
&lt;br /&gt;
Lastly, it seems that the entry edit queries only can handle 1 selected category (or none) but the page allows to select multiple. To change, edit 'edit_entry.php' (search for &amp;quot;Edit Categories&amp;quot;) and change all buttons from &amp;quot;checkbox&amp;quot; to &amp;quot;radio&amp;quot; and remove the category id in the name for the radio buttons to communicate.&lt;br /&gt;
&lt;br /&gt;
[[Category:Web Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=WebCalendar&amp;diff=3460</id>
		<title>WebCalendar</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=WebCalendar&amp;diff=3460"/>
		<updated>2024-08-19T08:27:22Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a lose collection of information regarding the web calendar. Currently we use [https://github.com/craigk5n/webcalendar?tab=readme-ov-file k5n's php implementation] with some custom changes (which might be possible to do in a better way, but I have no clue so far).&lt;br /&gt;
&lt;br /&gt;
== Backing up database ==&lt;br /&gt;
&lt;br /&gt;
The calendar user has no rights so you need to know the db admin login. Then you can do&lt;br /&gt;
```&lt;br /&gt;
mysqldump -uroot -p Calendar_I &amp;gt; Calendar_I.sql&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Calendar_I is what was as of this writing. Check include/settings.php in the WebCalendar folder to see what is actually used right now.&lt;br /&gt;
&lt;br /&gt;
== Update script ==&lt;br /&gt;
&lt;br /&gt;
After backing the data base unpack the new version into a new folder, set the apache address (remember it is in puppet), and go through the install script. Make sure that 'includes/' is read/writeable by www-data! (and also the parent folder).&lt;br /&gt;
&lt;br /&gt;
== PHP version ==&lt;br /&gt;
&lt;br /&gt;
For PHP v7.4 only WebCalendar v1.9.8 seems to work. They are in the process of updating to PHP v8!&lt;br /&gt;
&lt;br /&gt;
== LDAP settings ==&lt;br /&gt;
&lt;br /&gt;
After doing the initialization or updating of the database we need to connect to ldap. If you did not select LDAP autehtication during setup you can change that in 'includes/settings.php'. Adjust the settings in 'includes/auth-settings.php' such that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$user_can_update_password = false;&lt;br /&gt;
$admin_can_add_user = false;&lt;br /&gt;
$admin_can_delete_user = false;&lt;br /&gt;
...&lt;br /&gt;
   $ldap_server = '&amp;lt;server address&amp;gt;';&lt;br /&gt;
...&lt;br /&gt;
   $set_lda-_version = true;&lt;br /&gt;
...&lt;br /&gt;
   $ldap_base_dn = 'ou=People,dc=sternwarte,dc=uni-erlangen,dc=de';&lt;br /&gt;
...&lt;br /&gt;
   $ldap_admin_group_name = 'cn=leitung,ou=local,ou=Group,dc=sternwarte,dc=uni-erlangen,dc=de';&lt;br /&gt;
...&lt;br /&gt;
   $ldap_user_filter = '(|(objectclass=remeisperson)(uid=webmaster))'; // only allow real people, but also webmaster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Customization ==&lt;br /&gt;
&lt;br /&gt;
We do small changes to guide the users:&lt;br /&gt;
&lt;br /&gt;
'includes/menu.php' change&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;nav-link&amp;quot; href=&amp;quot;&amp;lt;?php echo $logout_url; ?&amp;gt;&amp;quot;&amp;gt;Logout&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;nav-link&amp;quot; href=&amp;quot;&amp;lt;?php echo $logout_url; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php if ($login == '__public__') echo \&lt;br /&gt;
'Login'; else echo 'Logout';?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are changes in 'includes/functions.php' regarding the __internal__ fake user. Check older WebCalendar files what was done. Same goes for 'includes/classes/WebCalendar.php', includes/translate.php', 'includes/user-ldap.php', 'edit_entry.php' and 'admin.php'.&lt;br /&gt;
&lt;br /&gt;
[[Category:Web Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=WebCalendar&amp;diff=3452</id>
		<title>WebCalendar</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=WebCalendar&amp;diff=3452"/>
		<updated>2024-08-09T15:43:08Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a lose collection of information regarding the web calendar. Currently we use [https://github.com/craigk5n/webcalendar?tab=readme-ov-file k5n's php implementation] with some custom changes (which might be possible to do in a better way, but I have no clue so far).&lt;br /&gt;
&lt;br /&gt;
== Backing up database&lt;br /&gt;
&lt;br /&gt;
The calendar user has no rights so you need to know the db admin login. Then you can do&lt;br /&gt;
```&lt;br /&gt;
mysqldump -uroot -p Calendar_I &amp;gt; Calendar_I.sql&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Calendar_I is what was as of this writing. Check include/settings.php in the WebCalendar folder to see what is actually used right now.&lt;br /&gt;
&lt;br /&gt;
== Update script ==&lt;br /&gt;
&lt;br /&gt;
After backing the data base unpack the new version into a new folder, set the apache address (remember it is in puppet), and go through the install script. Make sure that 'includes/' is read/writeable by www-data! (and also the parent folder).&lt;br /&gt;
&lt;br /&gt;
== PHP version ==&lt;br /&gt;
&lt;br /&gt;
For PHP v7.4 only WebCalendar v1.9.8 seems to work. They are in the process of updating to PHP v8!&lt;br /&gt;
&lt;br /&gt;
== LDAP settings ==&lt;br /&gt;
&lt;br /&gt;
After doing the initialization or updating of the database we need to connect to ldap. If you did not select LDAP autehtication during setup you can change that in 'includes/settings.php'. Adjust the settings in 'includes/auth-settings.php' such that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$user_can_update_password = false;&lt;br /&gt;
$admin_can_add_user = false;&lt;br /&gt;
$admin_can_delete_user = false;&lt;br /&gt;
...&lt;br /&gt;
   $ldap_server = '&amp;lt;server address&amp;gt;';&lt;br /&gt;
...&lt;br /&gt;
   $set_lda-_version = true;&lt;br /&gt;
...&lt;br /&gt;
   $ldap_base_dn = 'ou=People,dc=sternwarte,dc=uni-erlangen,dc=de';&lt;br /&gt;
...&lt;br /&gt;
   $ldap_admin_group_name = 'cn=leitung,ou=local,ou=Group,dc=sternwarte,dc=uni-erlangen,dc=de';&lt;br /&gt;
...&lt;br /&gt;
   $ldap_user_filter = '(|(objectclass=remeisperson)(uid=webmaster))'; // only allow real people, but also webmaster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Customization ==&lt;br /&gt;
&lt;br /&gt;
We do small changes to guide the users:&lt;br /&gt;
&lt;br /&gt;
'includes/menu.php' change&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;nav-link&amp;quot; href=&amp;quot;&amp;lt;?php echo $logout_url; ?&amp;gt;&amp;quot;&amp;gt;Logout&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;nav-link&amp;quot; href=&amp;quot;&amp;lt;?php echo $logout_url; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php if ($login == '__public__') echo \&lt;br /&gt;
'Login'; else echo 'Logout';?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are changes in 'includes/functions.php' regarding the __internal__ fake user. Check older WebCalendar files what was done. Same goes for 'includes/classes/WebCalendar.php', includes/translate.php', 'includes/user-ldap.php', 'edit_entry.php' and 'admin.php'.&lt;br /&gt;
&lt;br /&gt;
[[Category:Web Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=WebCalendar&amp;diff=3451</id>
		<title>WebCalendar</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=WebCalendar&amp;diff=3451"/>
		<updated>2024-08-09T15:30:14Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a lose collection of information regarding the web calendar. Currently we use [https://github.com/craigk5n/webcalendar?tab=readme-ov-file k5n's php implementation] with some custom changes (which might be possible to do in a better way, but I have no clue so far).&lt;br /&gt;
&lt;br /&gt;
== Backing up database&lt;br /&gt;
&lt;br /&gt;
The calendar user has no rights so you need to know the db admin login. Then you can do&lt;br /&gt;
```&lt;br /&gt;
mysqldump -uroot -p Calendar_I &amp;gt; Calendar_I.sql&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Calendar_I is what was as of this writing. Check include/settings.php in the WebCalendar folder to see what is actually used right now.&lt;br /&gt;
&lt;br /&gt;
== Update script ==&lt;br /&gt;
&lt;br /&gt;
After backing the data base unpack the new version into a new folder, set the apache address (remember it is in puppet), and go through the install script. Make sure that 'includes/' is read/writeable by www-data! (and also the parent folder).&lt;br /&gt;
&lt;br /&gt;
== PHP version ==&lt;br /&gt;
&lt;br /&gt;
For PHP v7.4 only WebCalendar v1.9.8 seems to work. They are in the process of updating to PHP v8!&lt;br /&gt;
&lt;br /&gt;
== LDAP settings ==&lt;br /&gt;
&lt;br /&gt;
After doing the initialization or updating of the database we need to connect to ldap. If you did not select LDAP autehtication during setup you can change that in 'includes/settings.php'. Adjust the settings in 'includes/auth-settings.php' such that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$user_can_update_password = false;&lt;br /&gt;
$admin_can_add_user = false;&lt;br /&gt;
$admin_can_delete_user = false;&lt;br /&gt;
...&lt;br /&gt;
   $ldap_server = '&amp;lt;server address&amp;gt;';&lt;br /&gt;
...&lt;br /&gt;
   $set_lda-_version = true;&lt;br /&gt;
...&lt;br /&gt;
   $ldap_base_dn = 'ou=People,dc=sternwarte,dc=uni-erlangen,dc=de';&lt;br /&gt;
...&lt;br /&gt;
   $ldap_admin_group_name = 'cn=leitung,ou=local,ou=Group,dc=sternwarte,dc=uni-erlangen,dc=de';&lt;br /&gt;
...&lt;br /&gt;
   $ldap_user_filter = '(|(objectclass=remeisperson)(uid=webmaster))'; // only allow real people, but also webmaster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Customization ==&lt;br /&gt;
&lt;br /&gt;
We do small changes to guide the users:&lt;br /&gt;
&lt;br /&gt;
'includes/menu.php' change&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;nav-link&amp;quot; href=&amp;quot;&amp;lt;?php echo $logout_url; ?&amp;gt;&amp;quot;&amp;gt;Logout&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;nav-link&amp;quot; href=&amp;quot;&amp;lt;?php echo $logout_url; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php if ($login == '__public__') echo \&lt;br /&gt;
'Login'; else echo 'Logout';?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are changes in 'includes/functions.php' regarding the __internal__ fake user. Check older WebCalendar files what was done. Same goes for 'includes/classes/WebCalendar.php', includes/translate.php', 'includes/user-ldap.php' and 'admin.php'.&lt;br /&gt;
&lt;br /&gt;
[[Category:Web Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=WebCalendar&amp;diff=3450</id>
		<title>WebCalendar</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=WebCalendar&amp;diff=3450"/>
		<updated>2024-08-09T15:09:44Z</updated>

		<summary type="html">&lt;p&gt;Stierhof: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a lose collection of information regarding the web calendar. Currently we use [https://github.com/craigk5n/webcalendar?tab=readme-ov-file k5n's php implementation] with some custom changes (which might be possible to do in a better way, but I have no clue so far).&lt;br /&gt;
&lt;br /&gt;
== Backing up database&lt;br /&gt;
&lt;br /&gt;
The calendar user has no rights so you need to know the db admin login. Then you can do&lt;br /&gt;
```&lt;br /&gt;
mysqldump -uroot -p Calendar_I &amp;gt; Calendar_I.sql&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Calendar_I is what was as of this writing. Check include/settings.php in the WebCalendar folder to see what is actually used right now.&lt;br /&gt;
&lt;br /&gt;
== Update script ==&lt;br /&gt;
&lt;br /&gt;
After backing the data base unpack the new version into a new folder, set the apache address (remember it is in puppet), and go through the install script. Make sure that 'includes/' is read/writeable by www-data! (and also the parent folder).&lt;br /&gt;
&lt;br /&gt;
== PHP version ==&lt;br /&gt;
&lt;br /&gt;
For PHP v7.4 only WebCalendar v1.9.8 seems to work. They are in the process of updating to PHP v8!&lt;br /&gt;
&lt;br /&gt;
== LDAP settings ==&lt;br /&gt;
&lt;br /&gt;
After doing the initialization or updating of the database we need to connect to ldap. If you did not select LDAP autehtication during setup you can change that in 'includes/settings.php'. Adjust the settings in 'includes/auth-settings.php' such that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$user_can_update_password = false;&lt;br /&gt;
$admin_can_add_user = false;&lt;br /&gt;
$admin_can_delete_user = false;&lt;br /&gt;
...&lt;br /&gt;
   $ldap_server = '&amp;lt;server address&amp;gt;';&lt;br /&gt;
...&lt;br /&gt;
   $set_lda-_version = true;&lt;br /&gt;
...&lt;br /&gt;
   $ldap_base_dn = 'ou=People,dc=sternwarte,dc=uni-erlangen,dc=de';&lt;br /&gt;
...&lt;br /&gt;
   $ldap_admin_group_name = 'cn=leitung,ou=local,ou=Group,dc=sternwarte,dc=uni-erlangen,dc=de';&lt;br /&gt;
...&lt;br /&gt;
   $ldap_user_filter = '(|(objectclass=remeisperson)(uid=webmaster))'; // only allow real people, but also webmaster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Customization ==&lt;br /&gt;
&lt;br /&gt;
We do small changes to guide the users:&lt;br /&gt;
&lt;br /&gt;
'includes/menu.php' change&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;nav-link&amp;quot; href=&amp;quot;&amp;lt;?php echo $logout_url; ?&amp;gt;&amp;quot;&amp;gt;Logout&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;nav-link&amp;quot; href=&amp;quot;&amp;lt;?php echo $logout_url; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php if ($login == '__public__') echo \&lt;br /&gt;
'Login'; else echo 'Logout';?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Web Admin]]&lt;/div&gt;</summary>
		<author><name>Stierhof</name></author>
	</entry>
</feed>