<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Linux on ISG Blog · D-MATH</title><link>https://isg-blog.math.ethz.ch/tags/linux/</link><description>Recent content in Linux on ISG Blog · D-MATH</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Thu, 25 Jun 2026 21:29:22 +0200</lastBuildDate><atom:link href="https://isg-blog.math.ethz.ch/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>Torch</title><link>https://isg-blog.math.ethz.ch/posts/torch/</link><pubDate>Mon, 22 Dec 2025 14:33:30 +0100</pubDate><guid>https://isg-blog.math.ethz.ch/posts/torch/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/pytorch/pytorch/blob/main/RELEASE.md#release-compatibility-matrix"&gt;https://github.com/pytorch/pytorch/blob/main/RELEASE.md#release-compatibility-matrix&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is necessary that the required CUDA library is installed in the system, normally this is under &lt;code&gt;ls -lad /usr/local/cuda*&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="in-a-python-project"&gt;…&lt;strong&gt;in a python project&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.astral.sh/uv/guides/integration/pytorch/"&gt;https://docs.astral.sh/uv/guides/integration/pytorch/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;First create a new uv project:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export UV_CACHE_DIR&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/scratch/userdata/&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;USER&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;/CACHE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export UV_NO_CACHE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /scratch/userdata/&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;USER&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# uv will create a virtual env for each project&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv init new-uv-project
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd new-uv-project
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Customise the file &lt;code&gt;pyproject.toml&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;project&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# the following supports CUDA 12.8 w/ CUDNN 9.10.2.21&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;requires-python&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;gt;=3.10,&amp;lt;=3.15&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;dependencies&lt;/span&gt; = [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;torch&amp;gt;=2.9,&amp;lt;=2.10&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;torchvision&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;torchaudio&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;tool&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;uv&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;sources&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;torch&lt;/span&gt; = { &lt;span style="color:#a6e22e"&gt;index&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;pytorch&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[[&lt;span style="color:#a6e22e"&gt;tool&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;uv&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;index&lt;/span&gt;]]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;name&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;pytorch&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# experimental with 2.9 + 2.10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#url = &amp;#34;https://download.pytorch.org/whl/cu130&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# stable support&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;url&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;https://download.pytorch.org/whl/cu128&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;explicit&lt;/span&gt; = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now add packages defined in the &lt;code&gt;pyproject.toml&lt;/code&gt; to the new project, the packages will be installed inside a virtual environment:&lt;/p&gt;</description></item><item><title>Tensorflow</title><link>https://isg-blog.math.ethz.ch/posts/tensorflow/</link><pubDate>Mon, 13 Oct 2025 13:52:32 +0200</pubDate><guid>https://isg-blog.math.ethz.ch/posts/tensorflow/</guid><description>&lt;p&gt;Resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.tensorflow.org/guide/gpu"&gt;https://www.tensorflow.org/guide/gpu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.astral.sh/uv/"&gt;https://docs.astral.sh/uv/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To be able to use tensorflow you need to install it for your project. We recommend to use &lt;code&gt;uv&lt;/code&gt; for creating your tensorflow python project.&lt;/p&gt;
&lt;h3 id="setup-your-project"&gt;Setup your project&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;uv&lt;/code&gt; will create and use a python virtual environment transparently so there is no need to create one separately. Use the storage on &lt;code&gt;/scratch/userdata/$USER&lt;/code&gt; for your project, this is on the local disk of the ada-Xs as not all have the same python versions so the virtual environment must be recreated for every ada-X.&lt;/p&gt;</description></item><item><title>Access a remote linux desktop with ThinLinc</title><link>https://isg-blog.math.ethz.ch/posts/tango/</link><pubDate>Fri, 16 May 2025 16:21:50 +0200</pubDate><guid>https://isg-blog.math.ethz.ch/posts/tango/</guid><description>&lt;p&gt;We are using a solution based on &lt;a href="https://www.cendio.com/thinlinc"&gt;ThinLinc&lt;/a&gt; from &lt;a href="https://www.cendio.com/"&gt;Cendio&lt;/a&gt; to easily connect to a &lt;strong&gt;remote Linux desktop&lt;/strong&gt; inside the D-MATH network from anywhere.&lt;/p&gt;
&lt;h2 id="requirements"&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;You need&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;either &lt;a href="../wifi-vpn/#wi-fi"&gt;a Wi-Fi connection at ETH, as described here&lt;/a&gt; (with the “math-guest” profile),&lt;/li&gt;
&lt;li&gt;or &lt;a href="../wifi-vpn#vpn-for-d-math-users"&gt;a working VPN connection to the D-MATH network, as described here&lt;/a&gt; (with the “math-guest” profile)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cendio.com/thinlinc/download/"&gt;a ThinLinc client for your operating system&lt;/a&gt; (external link)
Note: on our managed computers, the ThinLinc client is already installed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;If you do not want or cannot install the ThinLinc client on your (private) device, you may try to use it via browser at this URL:&lt;a href="https://tango.math.ethz.ch"&gt;https://tango.math.ethz.ch&lt;/a&gt; (the correct Wi-Fi or the VPN connection is still needed!). This solution may also work on a tablet.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Linux Environment Modules at the D-MATH</title><link>https://isg-blog.math.ethz.ch/posts/modules/</link><pubDate>Fri, 09 May 2025 08:12:22 +0200</pubDate><guid>https://isg-blog.math.ethz.ch/posts/modules/</guid><description>&lt;p&gt;With &lt;strong&gt;Environment Modules&lt;/strong&gt;, or simply called &lt;strong&gt;Modules&lt;/strong&gt;, it is possible to dynamically expand the active user environment and to remove it again without closing the shell.&lt;/p&gt;
&lt;p&gt;At the D-MATH modules are used for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;providing applications in different versions,&lt;/li&gt;
&lt;li&gt;customising the personal library environment,&lt;/li&gt;
&lt;li&gt;setting environment presets for institutes and groups.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Modules are grouped by their functionality in different folders. These module collections are referenced by their MODULEPATH.&lt;/p&gt;
&lt;h2 id="default-collections"&gt;Default collections&lt;/h2&gt;
&lt;p&gt;Every bash-shell starts with two collections.&lt;/p&gt;</description></item><item><title>Sagemath</title><link>https://isg-blog.math.ethz.ch/posts/sagemath/</link><pubDate>Tue, 16 Jul 2024 15:09:50 +0200</pubDate><guid>https://isg-blog.math.ethz.ch/posts/sagemath/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hub.docker.com/r/sagemath/sagemath/"&gt;https://hub.docker.com/r/sagemath/sagemath/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since Fedora 39 &lt;a href="https://www.sagemath.org/"&gt;sagemath&lt;/a&gt; is not included as a package anymore. There are several possibilities you can use sagemath on Fedora, let’s highlight two:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Using the official docker image&lt;/li&gt;
&lt;li&gt;Installing it with conda&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="podman"&gt;Podman&lt;/h2&gt;
&lt;h5 id="sagemath-commandline"&gt;sagemath commandline&lt;/h5&gt;
&lt;p&gt;As our installation provides a fully configured rootless podman configuration, you can for example use the following commands to run the sagemath image:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# connect to a central client&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh ada-X
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# start tmux, alternativly you can use screen&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tmux
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# create a .sage folder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir $HOME/.sage
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# run sage with your home mounted to /home/sage/mydata and a mounted .sage&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman run --user &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; -ti -v $HOME/.sage:/home/sage/.sage -v $HOME:/home/sage/mydata sagemath/sagemath:latest
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# to detach from the tmux session use the following keystrokes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#CTRL+B then D&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To add an additional folder you can put another &lt;code&gt;-v&lt;/code&gt; parameter, for example:&lt;/p&gt;</description></item><item><title>Moodle Development Environment</title><link>https://isg-blog.math.ethz.ch/posts/moodle-development-environment/</link><pubDate>Thu, 20 Jun 2024 14:25:07 +0200</pubDate><guid>https://isg-blog.math.ethz.ch/posts/moodle-development-environment/</guid><description>&lt;h2 id="develop-moodle"&gt;Develop moodle&lt;/h2&gt;
&lt;p&gt;Resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/moodlehq/moodle-docker"&gt;https://github.com/moodlehq/moodle-docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/moodlehq"&gt;https://github.com/moodlehq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hub.docker.com/r/moodlehq/moodle-php-apache"&gt;https://hub.docker.com/r/moodlehq/moodle-php-apache&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following setup can be used to set up a moodle development environment, with rootless podman:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# D-MATH link podman-compose&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ln -s /usr/bin/podman-compose ~/bin/docker-compose
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# D-MATH clone moodle-docker repo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/moodlehq/moodle-docker.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd moodle-docker
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# D-MATH set variables&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export MOODLE_DOCKER_DB_PORT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;15432&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export MOODLE_DOCKER_APP_VERSION&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;18080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export MOODLE_DOCKER_SELENIUM_VNC_PORT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;15900&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export MOODLE_DOCKER_WEB_PORT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;18000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Change ./moodle to your /path/to/moodle if you already have it checked out&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export MOODLE_DOCKER_WWWROOT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;./moodle
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# D-MATH add custom configuration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt;EOF &amp;gt; local.yml
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; webserver:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; volumes:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; - &amp;#34;${MOODLE_DOCKER_WWWROOT}/../moodledata:/var/www/moodledata&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; db:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; environment:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; PGDATA: /var/lib/postgresql/data/pgdata
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; volumes:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; - &amp;#34;${MOODLE_DOCKER_WWWROOT}/../database:/var/lib/postgresql/data&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Choose a db server (Currently supported: pgsql, mariadb, mysql, mssql, oracle)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export MOODLE_DOCKER_DB&lt;span style="color:#f92672"&gt;=&lt;/span&gt;pgsql
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# D-MATH creating files with group access for moodle code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;umask &lt;span style="color:#ae81ff"&gt;007&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Get Moodle code, you could select another version branch (skip this if you already got the code)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone -b MOODLE_404_STABLE git://git.moodle.org/moodle.git $MOODLE_DOCKER_WWWROOT
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# D-MATH add folder for moodle data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir moodledata
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir database
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# D-MATH setgid for automatic setting group permission&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod &lt;span style="color:#ae81ff"&gt;2770&lt;/span&gt; moodle
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod &lt;span style="color:#ae81ff"&gt;2770&lt;/span&gt; moodledata
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod &lt;span style="color:#ae81ff"&gt;2770&lt;/span&gt; database
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Ensure customized config.php for the Docker containers is in place&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp config.docker-template.php $MOODLE_DOCKER_WWWROOT/config.php
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# D-MATH set the permission to 33 inside the container for moodle code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman unshare chown &lt;span style="color:#ae81ff"&gt;33&lt;/span&gt; -R moodle
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman unshare chown &lt;span style="color:#ae81ff"&gt;33&lt;/span&gt; -R moodledata
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman unshare chown &lt;span style="color:#ae81ff"&gt;999&lt;/span&gt; -R database
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Start up containers, choose docker.io to download the images&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bin/moodle-docker-compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Shut down and destroy containers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#bin/moodle-docker-compose down&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Above we set the webserver port to &lt;code&gt;18000&lt;/code&gt; so this means you now need to connect to http://localhost:18000 in your browser to see the application.&lt;/p&gt;</description></item><item><title>minikube (Kubernetes Development)</title><link>https://isg-blog.math.ethz.ch/posts/minikube-kubernetes-development/</link><pubDate>Tue, 31 Oct 2023 12:07:58 +0100</pubDate><guid>https://isg-blog.math.ethz.ch/posts/minikube-kubernetes-development/</guid><description>&lt;p&gt;If you want to develop something for kubernetes, you may need to run minikube. This can be done on our linux installations. The following commands should start a working “kubernetes cluster” on your installation:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir ~/bin/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -O ~/bin/minikube
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod &lt;span style="color:#ae81ff"&gt;755&lt;/span&gt; ~/bin/minikube
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd ~/bin/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./minikube config set rootless true
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./minikube config set driver podman
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./minikube config set container-runtime containerd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./minikube start --cni calico
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After minikube has started, you can check all running pods with the following:&lt;/p&gt;</description></item><item><title>Linux (Evolution) local mail archive</title><link>https://isg-blog.math.ethz.ch/posts/linux-evolution-local-mail-archive/</link><pubDate>Wed, 17 May 2023 11:01:41 +0200</pubDate><guid>https://isg-blog.math.ethz.ch/posts/linux-evolution-local-mail-archive/</guid><description>&lt;p&gt;This describes how to create a local folder in which you can move emails, which will still be available in the evolution mail client. So the mails will be removed from the mailserver and saved into a folder, which you have to backup.&lt;/p&gt;
&lt;p&gt;Requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You already use evolution as your mail client&lt;/li&gt;
&lt;li&gt;You make backups of your local files and folders&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;First create a folder in the filesystem, which will hold your mails:&lt;/p&gt;</description></item><item><title>Howto use docker at D-MATH</title><link>https://isg-blog.math.ethz.ch/posts/howto-use-docker-at-d-math/</link><pubDate>Wed, 17 May 2023 10:31:22 +0200</pubDate><guid>https://isg-blog.math.ethz.ch/posts/howto-use-docker-at-d-math/</guid><description>&lt;p&gt;To use docker at D-MATH is to use podman -&amp;gt; &lt;a href="https://podman.io/"&gt;https://podman.io/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With podman you can use all docker commands just write podman instead of docker in the command, all the parameters stay the same.&lt;/p&gt;
&lt;p&gt;With podman we are able to provide a possibility that a user without administrative rights can download and run docker images.&lt;/p&gt;
&lt;h4 id="example-1"&gt;Example 1&lt;/h4&gt;
&lt;p&gt;The following example will run the latest docker image of alpine linux (&lt;a href="https://hub.docker.com/_/alpine"&gt;https://hub.docker.com/_/alpine&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;podman run -ti -v $(pwd):/home/test alpine:latest&lt;/code&gt;&lt;/p&gt;</description></item></channel></rss>