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