Kategorien
Allgemein

gemini server

Ich möchte einen eigenen gemini server mit geminid betreiben. Leider habe ich keine schöne (kurze) Anleitung gefunden mit der ich einen geminid-Server schnell unter Debian zum laufen bekomme.

Leider existiert zur Zeit kein Debian Paket für geminid, daher muss geminid aus dem Quellen installiert werden.

sudo apt install git libconfig-dev libmagic-dev flex make gcc libssl-dev
cd /usr/src
sudo git clone https://github.com/jovoro/geminid.git
cd geminid
make
mkdir /var/log/geminid
mkdir -p /etc/geminid/certs/
mkdir -p /etc/geminid/keys
mkdir -p /srv/geminid/{loteks,bin}
echo "hello gemini" > /srv/geminid/loteks/index.gmi
echo '// geminid configuration file

// Global configuration
global = {
        serverroot = "/srv/geminid";
        logdir = "/var/log/geminid";
        loglocaltime = true;
        logtimeformat = "[%d/%b/%Y:%H:%M:%S %z]";
        port = 1965;
        ipv6_enable = true;
};

// vHost definitions
vhost = (
        {
                name = "gemini.loteks.de";
                docroot = "loteks";
                accesslog = "loteks_access.log";
                errorlog = "loteks_error.log";
                cert = "/etc/geminid/certs/gemini.loteks.de.pem";
                key = "/etc/geminid/keys/gemini.loteks.de.pem";
                index = "index.gmi";
        }
);' > /etc/geminid/hosts.conf

mkdir cert && cd cert
openssl req -new > server.cert.csr
openssl rsa -in privkey.pem -out server.cert.key
openssl x509 -in server.cert.csr -out server.cert.crt  -req -signkey privkey.pem -days 9000
cat privkey.pem server.cert.crt > pw_gemini.loteks.de.pem
openssl rsa -in pw_gemini.loteks.de.pem -out /etc/geminid/keys/gemini.loteks.de.pem # remove password
cat server.cert.crt > /etc/geminid/certs/gemini.loteks.de.pem
cd ..
./geminid -c /etc/geminid/hosts.conf

Einen neuen Benutzer für gemini anlegen.
Die UserID 32 ist, genau wie die GroupID 32 noch nicht belegt. Da die UserID und GroupoID 33 dem Benutzer www-data gehört, der für den Apache Webserver verwendet wird nutze ich diese.

sudo groupadd --gid 32 -r gemini
sudo useradd --uid 32 --gid 32 --system gemini
sudo cp geminid /srv/geminid/bin/
sudo chown gemini:gemini -R /etc/geminid
sudo chown gemini:gemini -R /srv/geminid

Systemd Dienst anlegen

sudo vi /etc/systemd/system/gemini.service
[Unit]
Description=geminid service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=gemini
ExecStart=/srv/geminid/bin/geminid -c /etc/geminid/hosts.conf

[Install]
WantedBy=multi-user.target

jetzt muss der Gemini-Dienst nur noch ein Logfile in das es schreiben kann. Am schönsten geht das mit Logrotate.

cat <<EOF | sudo tee -a /etc/logrotate.d/geminid
"/var/log/geminid/loteks_access.log"
"/var/log/geminid/loteks_error.log"
{
  su gemini gemini
  rotate 5
  daily
  notifempty
  compress
  delaycompress
  create 644 gemini gemini
}
EOF
sudo mkdir /var/log/geminid
sudo chown gemini:gemini /var/log/geminid -R
sudo logrotate --force /etc/logrotate.d/geminid

Abschließend muss der neue Service nur noch aktiviert und gestartet werden.

sudo systemctl start gemini.service
sudo systemctl enable gemini.service

Das war es auch schon, jetzt haben wir einen laufenden Gemini-Server

Von der_metzger

Hi, ich bin Jan Kuehnel - Fachinformatiker für Systemintegration ,Linux-Benutzer und Blogger. Seit 2019 arbeite ich als Systemadministrator bei einem beliebten deutschen Fahrradverleih und zuvor über 10 Jahren bei einem großen deutschen Provider. Ich folge seit meiner Kindheit dem Hobby, technische Rätsel zu lösen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.