| Title: Run your Gemini server on Guix with Agate | |
| Author: Solène | |
| Date: 17 June 2021 | |
| Tags: guix gemini | |
| Description: | |
| # Introduction | |
| This article is about deploying the Gemini server agate on the Guix | |
| linux distribution. | |
| Gemini quickstart to explain Gemini to beginners | |
| Guix website | |
| # Configuration | |
| Guix manual about web services, search for Agate. | |
| Add the agate-service definition in your /etc/config.scm file, we will | |
| store the Gemini content in /srv/gemini/content and store the | |
| certificate and its private key in the upper directory. | |
| ```Guix configuration file | |
| (service agate-service-type | |
| (agate-configuration | |
| (content "/srv/gemini/content") | |
| (cert "/srv/gemini/cert.pem") | |
| (key "/srv/gemini/key.rsa")) | |
| ``` | |
| If you have something like %desktop-services or %base-services, you | |
| need to wrap the services list a list using "list" function and add the | |
| %something-services to that list using the function "append" like this. | |
| ```Guix configuration file | |
| (services | |
| (append | |
| (list (service openssh-service-type) | |
| (service agate-service-type | |
| (agate-configuration | |
| (content "/srv/gemini/content") | |
| (cert "/srv/gemini/cert.pem") | |
| (key "/srv/gemini/key.rsa")))) | |
| %desktop-services)) | |
| ``` | |
| # Generating the certificate | |
| - Create directories /srv/gemini/content | |
| - run the following command in /srv/gemini/ | |
| ``` | |
| openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem -days 3650 -no… | |
| ``` | |
| - Apply a chmod 400 on both files cert.pem and key.rsa | |
| - Use "guix system reconfigure /etc/config.scm" to install agate | |
| - Use "chown agate:agate cert.pem key.rsa" to allow agate user to read | |
| the certificates | |
| - Use "herd restart agate" to restart the service, you should have a | |
| working gemini server on port 1965 now | |
| # Conclusion | |
| You are now ready to publish content on Gemini by adding files in | |
| /srv/gemini/content , enjoy! |