Einrichtung eines Linux-Servers für wissenschaftliche Forschung

Kürzlich habe ich einen MiniPC in einen Server auf Basis von Ubuntu umgewandelt und ihn so konfiguriert, dass er den potenziellen Anforderungen zukünftiger Forschungsprojekte entspricht。

Da ich nur begrenzte Kenntnisse über Linux hatte, habe ich einige Zeit damit verbracht, mich einzuarbeiten und die Einrichtung zu dokumentieren – inklusive möglicher Probleme und deren Lösungen。


Einen neuen Benutzer mit Administratorrechten unter Ubuntu anlegen

Wenn Sie einen Ubuntu-Server (egal ob von einem Cloud-Anbieter oder selbst installiert) nutzen, wird standardmäßig ein Benutzerkonto erstellt。Dieser Benutzer kann mit sudo temporär Administratorrechte erhalten, ist aber kein echter Admin-Account。Um einen eigenen Benutzer mit denselben Rechten zu erstellen, gehen Sie wie folgt vor:

1. Neuen Benutzer mit Home-Verzeichnis und Shell anlegen

sudo useradd -d "/home/<user_name>" -m -s "/bin/bash" <user_name>

Parametererklärung:

  • -d "/home/<user_name>":Setzt das Home-Verzeichnis。
  • -m:Erstellt das Home-Verzeichnis automatisch。
  • -s "/bin/bash":Legt die Standardshell fest。

2. Dem neuen Benutzer Administratorrechte geben

Um einen Benutzer mit sudo-Rechten zu erstellen:

sudo useradd -d "/home/<user_name>" -m -s "/bin/bash" -G sudo <user_name>
  • -G sudo:Fügt den Benutzer der Gruppe sudo hinzu。

3. Passwort für den neuen Benutzer setzen

Standardmäßig hat der neue Benutzer kein Passwort。Setzen Sie eines mit:

sudo passwd <user_name>

Geben Sie das Passwort zweimal ein (es wird nichts angezeigt)。Danach kann der neue Benutzer mit sudo arbeiten。


Terminal-Optik verbessern

Ein schönes und funktionales Terminal erhöht die Arbeitsfreude。Ich empfehle zsh für ein ansprechendes Prompt。Details siehe frühere Anleitung


Remote-Zugriff auf den Server aktivieren

Um von außerhalb auf den Ubuntu-Server zuzugreifen, installieren und konfigurieren Sie den SSH-Dienst und passen ggf. die Firewall an。

1. SSH-Server installieren und konfigurieren

Für grundlegenden SSH-Zugang genügt die Installation von openssh-server

sudo apt update
sudo apt install openssh-server

Status prüfen:

sudo systemctl status ssh
  • Konfigurationstipps

    • Root-Login deaktivieren (empfohlen):In /etc/ssh/sshd_config PermitRootLogin no setzen。

      sudo nano /etc/ssh/sshd_config
      
      PermitRootLogin no
      
    • Zugelassene Benutzer einschränken:Mit AllowUsers nur bestimmten Benutzern SSH-Zugang erlauben。

      AllowUsers <user_name>
      
    • Nicht-Standard-Port verwenden (optional):Port z.B. auf 2200 ändern。

      Port 2200
      
    • Automatische Trennung bei Inaktivität

      ClientAliveInterval 300
      ClientAliveCountMax 2
      

Nach Änderungen SSH-Dienst neu starten:

sudo systemctl restart ssh

2. UFW-Firewall konfigurieren

Wenn UFW aktiviert ist, SSH-Port freigeben:

sudo ufw allow ssh

Bei geändertem Port (z.B. 2200):

sudo ufw allow 2200/tcp

Firewall aktivieren und Status prüfen:

sudo ufw enable
sudo ufw status

3. SSH-Verbindung testen

Unter Windows empfiehlt sich PuTTY oder Windows Terminal。Verbindung testen:

telnet <remote_ip> <remote_port>

Ersetzen Sie <remote_ip> und <remote_port> entsprechend。

4. .Xauthority-Berechtigungsproblem beheben

Falls /home/<user_name>/.Xauthority falsche Rechte hat:

sudo chown <user_name>:<user_name> -R /home/<user_name>

Falls nötig, Datei neu anlegen:

sudo -u <user_name> touch /home/<user_name>/.Xauthority
sudo chown <user_name>:<user_name> /home/<user_name>/.Xauthority

5. Fail2Ban einrichten (empfohlen)

Zum Schutz vor Brute-Force-Angriffen:

sudo apt install fail2ban

Konfiguration in /etc/fail2ban/jail.local anpassen:

[sshd]
enabled = true
port = 22
maxretry = 5
bantime = 600

SSH-Verbindung zwischen Server und GitHub einrichten

So verbinden Sie Ihren Ubuntu-Server sicher mit GitHub:

1. Git installieren und prüfen

sudo apt install git
git --version

2. Git-Benutzerdaten konfigurieren

git config --global user.name "<github_account_name>"
git config --global user.email "<github_account_email>"

3. SSH-Schlüsselpaar generieren

ssh-keygen -C "<github_account_email>" -t rsa

Drücken Sie dreimal Enter, um Standardwerte zu übernehmen。

4. SSH-Public-Key zu GitHub hinzufügen

cat ~/.ssh/id_rsa.pub

Kopieren Sie den Inhalt und fügen Sie ihn unter GitHub → Settings → SSH and GPG keys → New SSH key ein。

5. Verbindung zu GitHub testen

ssh -T git@github.com

Bei Erfolg erscheint:

Hi <github_account_name>! You've successfully authenticated, but GitHub does not provide shell access.

6. Häufige Probleme und Lösungen

  1. SSH-Key-Berechtigungen prüfen

    chmod 600 ~/.ssh/id_rsa
    chmod 644 ~/.ssh/id_rsa.pub
    
  2. Key zum SSH-Agent hinzufügen

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_rsa
    

Python-Umgebung einrichten und verwalten


Miniforge

Für das Management von Python-Umgebungen empfehle ich Miniforge (leichtgewichtig, schnell, basiert auf conda-forge und Mamba)。

1. Miniforge installieren

Siehe Miniforge GitHub

wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh
  • Empfehlung:Installation in /usr/local/miniforge3 für gemeinsame Nutzung。
  • Bei ZSH:Pfad zu .zshrc hinzufügen:

    export PATH="$usr/local/miniforge3/bin:$PATH"
    

    Danach:source ~/.zshrc

2. Mamba initialisieren

/usr/local/miniforge3/bin/mamba init

Falls ZSH nicht automatisch erkannt wird, Konfiguration aus .bashrc übernehmen。

3. Umgebungen erstellen und verwalten

Empfohlen:Umgebungen als root anlegen。

Neue Umgebung erstellen
mamba create --name <new_env_name> python=3.11 --no-default-packages

Oder für private Umgebung:

mamba create --prefix /home/username/myenv python=3.11 --no-default-packages
Umgebung löschen
mamba remove --name <env_name> --all
mamba remove --prefix /path/to/directory --all

4. Häufig genutzte Pakete installieren

Nicht direkt im base-Environment arbeiten。Beispiel für Machine-Learning-Umgebung:

mamba create --name ml_env python=3.12 jupyterhub jupyterlab notebook notebook scipy numpy numpy
mamba activate ml_env
mamba install jupyter-lsp-python jupyterlab-lsp jupyterlab-git jupyterlab_execute_time

5. Schreibschutz für Umgebungen

Normale Nutzer können Systemumgebungen nicht aktualisieren:

mamba update --all

Fehlermeldung:

EnvironmentNotWritableError: The current user does not have write permissions to the target environment.
  environment location: /usr/local/miniforge3
  uid: 1000
  gid: 1000

Mit sudo kann ein Update durchgeführt werden:

sudo /usr/local/miniforge3/bin/mamba update --all

Poetry

Poetry ist ein effizientes Tool für das Management von Python-Projekten und Abhängigkeiten。

1. Poetry installieren

Python 3.7+ erforderlich。

curl -sSL https://install.python-poetry.org | python3 -

Pfad ggf. ergänzen:

export PATH="$HOME/.local/bin:$PATH"

Installation prüfen:

poetry --version

2. Neues Projekt anlegen

poetry new my_project

Struktur:

my_project/
├── my_project/
│   └── __init__.py
├── pyproject.toml
└── tests/
    └── __init__.py

Vorhandenes Projekt initialisieren:

cd existing_project
poetry init

3. Abhängigkeiten verwalten

Produktiv-Abhängigkeit hinzufügen:

poetry add requests

Entwickler-Abhängigkeit:

poetry add pytest --dev

Alle Abhängigkeiten installieren:

poetry install

4. Virtuelle Umgebung verwalten

Aktivieren:

poetry shell

Verlassen:exit

Pfad anzeigen:

poetry env info --path

Umgebung löschen:

poetry env remove python

5. Lock-Datei verwalten

Abhängigkeiten aktualisieren:

poetry update

Installieren gemäß Lock-Datei:

poetry install

6. Skripte und Befehle ausführen

Im virtuellen Environment:

poetry run python script.py
poetry run pytest

7. Python-Paket veröffentlichen

Bauen:

poetry build

Auf PyPI veröffentlichen:

poetry publish --build

Für Test-PyPI:

poetry publish --repository testpypi

Im Folgenden eine Anleitung zur Einrichtung einer R-Umgebung für ökonometrische Analysen。


R-Umgebung unter Ubuntu für Ökonometrie einrichten

R eignet sich hervorragend für ökonometrische Analysen, Regressions- und Zeitreihenanalysen。

1. R installieren

Für die neueste Version CRAN-Repository hinzufügen:

sudo apt update
sudo apt install software-properties-common dirmngr -y

GPG-Key hinzufügen:

wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc

Key prüfen (optional):

gpg --show-keys /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc

CRAN-Repository hinzufügen:

sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"

R und Dev-Pakete installieren:

sudo apt install r-base r-base-dev -y

2. RStudio installieren

RStudio ist eine leistungsfähige IDE für R。Installationsanleitung siehe RStudio-Website

  1. RStudio Server herunterladen。
  2. Installieren:

    sudo dpkg -i rstudio-server-<version>.deb
    
  3. Status prüfen:

    sudo systemctl status rstudio-server
    

Danach erreichbar unter http://<your-server-ip>:8787

3. Ökonometrie-Pakete installieren

Systemabhängigkeiten installieren:

sudo apt-get install build-essential libssl-dev libcurl4-openssl-dev libxml2-dev

R-Konsole starten:

sudo R

Pakete installieren:

chooseCRANmirror(graphics = FALSE)
install.packages(c("tidyverse", "data.table", "broom", "plm", "forecast", "lmtest", "sandwich", "stargazer"))

Weitere Pakete:

install.packages(c("AER", "urca", "vars"))
install.packages(c("quantmod", "TTR", "zoo", "xts"))

4. GitHub-Token für private Pakete

Token generieren:

usethis::create_github_token()

Token in R speichern:

gitcreds::gitcreds_set()

5. Beispiel:Paneldatenregression mit plm

library(plm)

data("Produc", package = "plm")
pdata <- pdata.frame(Produc, index = c("state", "year"))

fe_model <- plm(log(gsp) ~ log(pcap) + log(hwy) + log(water) + log(util), data = pdata, model = "within")
summary(fe_model)

Sonstige Hinweise


1. Daten synchronisieren

Mit rsync Daten effizient übertragen。Details siehe dieses Tutorial

rsync -r /path/to/sync/ <username>@<remote_host>:<destination_directory>

Fortschritt großer Dateien überwachen:

watch -n <time_interval> du -sh /path/to/large/file

2. Standard-Schriftarten installieren

Microsoft TrueType-Fonts installieren:

sudo apt install msttcorefonts
rm -rf ~/.cache/matplotlib

3. Treiber-/Bibliotheksversionen stimmen nicht überein

Fehler bei nvidia-smi

Failed to initialize NVML: Driver/library version mismatch

Siehe Stack Overflow-Lösung

  1. Server neu starten

    sudo reboot
    
  2. Nvidia-Treiber neu installieren

    sudo apt purge nvidia* libnvidia*
    sudo ubuntu-drivers install
    sudo reboot
    

4. Nvidia-Treiber aktualisieren

  1. Alte Treiber entfernen

    sudo apt purge *nvidia* -y
    sudo apt remove *nvidia* -y
    sudo rm /etc/apt/sources.list.d/cuda*
    sudo apt autoremove -y && sudo apt autoclean -y
    sudo rm -rf /usr/local/cuda*
    
  2. Empfohlene Treiberversion suchen und installieren

    ubuntu-drivers devices
    sudo apt install libnvidia-common-550-server libnvidia-gl-550-server nvidia-driver-550-server -y
    
  3. Neustart und Prüfung

    sudo reboot now
    

    Bei Fehler:

    NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
    

    Kernel-Header neu installieren und neu starten。


5. Kernel-Header und GCC

  1. Kernel-Header neu installieren

    sudo apt install --reinstall linux-headers-$(uname -r)
    sudo reboot
    
  2. GCC-Version aktualisieren

    Wenn Fehler auftreten, GCC auf Version 12 aktualisieren:

    sudo apt-get install gcc-12
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
    

    Kernel-Header erneut installieren und Server neu starten。Danach sollte nvidia-smi funktionieren。

Diese Seite wurde automatisch von generativer KI übersetzt und kann Ungenauigkeiten oder unvollständige Informationen enthalten。 Feedback ist willkommen, um uns bei der Verbesserung zu helfen。




    Hat Ihnen dieser Artikel gefallen?

    Hier sind weitere Artikel, die Sie interessieren könnten:

  • macOS Systemkonfigurationsprotokoll
  • Praktische Konfiguration für leistungsschwache Cloud-Server
  • „Essay“ Erinnerungen an das alte Zuhause
  • „Essay“ Der erste Tag im Jahr 2025 – Ein paar Gedanken
  • Jahresrückblick 2024