Archived
1
0
Fork 0

Add agate

This commit is contained in:
J. Elfring 2022-05-01 17:49:19 +02:00
parent ab78eb1165
commit 728c5503a9
4 changed files with 93 additions and 0 deletions

30
agate/Dockerfile Normal file
View file

@ -0,0 +1,30 @@
FROM alpine:latest AS builder
RUN apk add cargo
RUN wget -O source.tar.gz \
$(wget -qO- https://api.github.com/repos/mbrubeck/agate/releases/latest \
| sed -nE 's/^.*"tarball_url"\s*:\s*"([^"]+)".*$/\1/p' \
) \
&& tar xzf source.tar.gz \
&& mv /mbrubeck-agate-* /agate \
&& cd agate \
&& cargo build --release
FROM alpine:latest
RUN apk add --update --no-cache libgcc \
&& mkdir -p /app/.certificates \
&& mkdir /gmi \
&& chown daemon:daemon /app/.certificates
COPY --from=builder /agate/target/release/agate /usr/bin/agate
COPY ./start.sh /app
ENV LANG=en-US \
HOSTNAME=example.com
VOLUME ["/app/.certificates", "/gmi"]
EXPOSE 1965
USER daemon
WORKDIR /app
ENTRYPOINT ["/bin/sh", "start.sh"]

53
agate/README.md Normal file
View file

@ -0,0 +1,53 @@
# Install agate in a docker container
(these instructions assume you use linux and have some experience with both docker and the command line)
## obtain the source code
There are currently no container images online so you have to build the image yourself before you can use it.
There are two options available for this: downloading a release or cloning the repository with `git`.
I will explain both methods but if you're unsure which method to use, I would recommend the release for new comers because it's probably more tested so you'll encounter less problems.
### downloading the release tarball
Download the tarball. Go to [https://github.com/mbrubeck/agate/releases/latest](https://github.com/mbrubeck/agate/releases/latest), and copy the url of the source code tarball.
```
wget URL
```
Then unpack the tarball and remove it afterwards:
```
tar -xzf tarball.tar.gz
rm tarball.tar.gz
```
### clone the repository with git
I assume you have git already installed. If not, please search on how to do it in the internet.
```
git clone https://github.com/mbrubeck/agate
cd agate
```
## build the image
Enter the `tools/docker` directory:
```
cd tools/docker
```
And now build the docker image:
```
docker build -t agate .
```
This process will take a few minutes because all the rust modules have to be compiled from source.
## start the docker container
```
docker run -t -d --name agate -p 1965:1965 -v /var/www/gmi:/gmi -v /var/www/gmi/.certificates:/app/.certificates -e HOSTNAME=example.org -e LANG=en-US agate:latest
```
You have to replace `/var/www/gmi/` with the folder where you'd like to have gemtext files and `/var/www/gmi/.certificates/` with the folder where you'd like to have your certificates stored. You also have to have to replace `example.org` with your domain name and if plan to speak in a different language than english in your gemini space than you should replace `en-US` with your countries language code (for example de-DE or fr-CA).
## That's it! Now have agate running in a docker container!

6
agate/start.sh Normal file
View file

@ -0,0 +1,6 @@
#!/bin/sh
exec agate --content /gmi/ \
--hostname ${HOSTNAME} \
--lang ${LANG}

View file

@ -14,3 +14,7 @@ services:
toolbox:
build: ./toolbox
image: elfrinjo/toolbox:latest
agate:
build: ./agate
image: elfrinjo/agate:latest