--- title: "Agate on Arch Linux" tags: [ "Documentation", "Networking", "Arch", "Gemini" ] --- Docs are [here](https://github.com/mbrubeck/agate). You will need DNS set up before proceeding. Install agate. `yay -S agate` Be root! In my case the domain is 'splint.rs'. `DOMAIN1=splint.rs` You can set up any number of domain names. `DOMAIN2=ttrpgs.com` Make a directory to serve the gemini files from: `GEMDIR=/srv/gemini` `mkdir -p $GEMDIR/$DOMAIN1` `mkdir -p $GEMDIR/$DOMAIN2` Put at least one gemini file into the directory: ``` echo Welcome to $DOMAIN1 > $GEMDIR/$DOMAIN1/index.gmi echo Welcome to $DOMAIN2 > $GEMDIR/$DOMAIN2/index.gmi ``` Set a language variable: `LANG=en_GB` You need to run the agate command once interactively, in order to create certs: ``` agate --content $GEMDIR --certs $GEMDIR/.certs \ --addr [::]:1965 --addr 0.0.0.0:1965 --hostname $DOMAIN1 --hostname $DOMAIN2 --lang $LANG ``` Once that works, it's time to make a service file; select any name for it: `SVFILE=st` ``` echo " CONTENT=--content $GEMDIR CERT=--certs $GEMDIR/.certs ADDR=--addr [::]:1965 --addr 0.0.0.0:1965 HOSTNAME=--hostname $DOMAIN1 --hostname $DOMAIN2 LANG=--lang $LANG " > $SVFILE.conf ``` Check the service file has all those variables and looks right: `cat $SVFILE.conf` Now move it into the agate config directory: `mv $SVFILE.conf /etc/agate/` And finally, start the service: ``` systemctl daemon-reload systemctl enable --now agate@$SVFILE.conf ``` Your Gemini capsule should be available, and you should be able to see any access in the logs: ``` journalctl -xeu agate@$SVFILE.conf ```