# Gemini from http `proxy.py` is a Gemini server that proxies all content to an http or https server. `proxy.py` loads certificates following the structure of Apache mod_md. ## Providing the certificates via systemd credentials With `/etc/systemd/system/gemini-from-http.service`: ``` [Service] LoadCredential=certificates:/etc/apache2/md/domains/ ExecStart=.../proxy.py --certificates-from-credential certificates DynamicUser=true CapabilityBoundingSet= PrivateDevices=true ProtectClock=true ProtectKernelLogs=true ProtectControlGroups=true ProtectKernelModules=true SystemCallArchitectures=native MemoryDenyWriteExecute=true RestrictNamespaces=true ProtectHostname=true LockPersonality=true ProtectKernelTunables=true RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX RestrictRealtime=true # If you don't put proxy.py in a home directory... ProtectHome=true ProtectProc=invisible ProcSubset=pid PrivateUsers=self SystemCallFilter=@system-service SystemCallErrorNumber=EPERM UMask=7777 ``` Systemd injects the certificates to a private path than only `proxy.py` can read. The injection is a one off, so you must restart the service to get updated certificates. ## Providing the certificates manually To run `proxy.py` as a regular user, you can run the `package-mod-md-certs` script as root to copy the certificates to your user: ``` su -c ./package-mod-md-certs | tar x ``` Then you can run: ``` ./proxy.py --certificates-from-path domains/ ```