Diese Notizen erläutern, wie ich den ActivityPub-Server Epicyon auf Arch-Linux installiert habe. Die Installation unterscheidet sich insbesondere in den Kommandos und den Paketnamen sehr von der Installation auf Debian-Systemen.
Zunächst sollte das System auf den allerneuesten Stand gebracht werden:
pacman -Sy archlinux-keyring && pacman -Syu
Jetzt Klonen wir das Git-Repository von Epicyon:
cd /opt git clone https://gitlab.com/bashrc2/epicyon
Nun legen wir den User **epicyon** an. Da wir durch das Klonen schon ein Home-Directory haben, benötigen wir keine Option **-m**, die sonst dafür sorgt, dass es angelegt wird:
useradd -d /opt/epicyon -s /bin/bash -c "Epicyon" epicyon chown -R epicyon:epicyon /opt/epicyon
Damit das Ganze funktionieren kann, werden nun eine ganze Menge Python-Pakete benötigt. Die Namen wurden so angepasst, dass sie statt für Debian für Arch Linux passend sind:
pacman -S python-socks imagemagick python-setuptools python-cryptography python-dateutil python-idna python-requests flake8 python-pyqrcode python-pypng bandit perl-image-exiftool certbot
Ein Paket muss händisch aus dem Arch User Repository (AUR) erzeugt werden, da es nicht in den üblichen Repositories enthalten ist
su - epicyon cd /tmp git clone https://aur.archlinux.org/python-django-timezone-field.git cd python-django-timezone-field.git makepkg-sir exit
Nun kopieren wir den folgenden Text in ein Service-File, welches liegt unter: /etc/systemd/system/epicyon.service
Dabei ist **YOUR_DOMAIN** durch die eigene Domain zu ersetzen, unter welcher der Server laufen soll:
[Unit] Description=epicyon After=syslog.target After=network.target [Service] Type=simple User=epicyon Group=epicyon WorkingDirectory=/opt/epicyon ExecStart=/usr/bin/python /opt/epicyon/epicyon.py --port 443 --proxy 7156 --domain YOUR_DOMAIN --registration open --log_login_failures Environment=USER=epicyon Environment=PYTHONUNBUFFERED=true Restart=always StandardError=syslog CPUQuota=80% ProtectHome=true ProtectKernelTunables=true ProtectKernelModules=true ProtectControlGroups=true ProtectKernelLogs=true ProtectHostname=true ProtectClock=true ProtectProc=invisible ProcSubset=pid PrivateTmp=true PrivateUsers=true PrivateDevices=true PrivateIPC=true MemoryDenyWriteExecute=true NoNewPrivileges=true LockPersonality=true RestrictRealtime=true RestrictSUIDSGID=true RestrictNamespaces=true SystemCallArchitectures=native [Install] WantedBy=multi-user.target
Anschließend integrieren wir als User root den Service in das System:
systemctl daemon-reload systemctl start epicyon.service systemctl enable epicyon.service
Die Konfiguration eines Reverse-Proxy mit **nginx** und **certbot** erfolgt so, wie in der Original-Dokumentation weiter unten unter "Create a web server configuration":
https://epicyon.net/#install