💾 Archived View for loomcom.com › gemlog › docker.gmi captured on 2024-06-16 at 12:25:38. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-11-30)
-=-=-=-=-=-=-
My domain runs on a Linode server. To try to make my life a little easier, I've standardized on running all my services in Docker containers (whether this actually makes my life easier or not is up for debate). Since I wanted to run an agate server, too, I decided to put together a little Docker container to help me.
You'll need to generate your own key and cert, and keep them in the same file as the Dockerfile when you build your container. The quickest way is to do:
openssl req -x509 -newkey rsa:4096 -keyout key.rsa -out cert.pem \ -days 3650 -nodes -subj "/CN=example.com"
Just replace example.com with the correct domain name!
Stick the key.rsa, cert.pem, and Dockerfile into the same directory, and then build with:
docker build --rm --tag agate:latest .
To run this, you'd do something like:
docker run -d -v /your/gemini/files:/var/gemini -p 1965:1965 --rm agate:latest
Here, /your/gemini/files is where you store your actual content.
FROM alpine:3.13 RUN apk update RUN apk add --no-cache openssl-dev curl git build-base openssl-dev RUN mkdir -p /etc/agate COPY key.rsa /etc/agate/key.rsa COPY cert.pem /etc/agate/cert.pem RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y RUN git clone https://github.com/mbrubeck/agate.git /tmp/agate RUN mkdir /var/gemini RUN source ${HOME}/.cargo/env && \ cd /tmp/agate/ && \ cargo build --release && \ mv /tmp/agate/target/release/agate /usr/local/bin/agate EXPOSE 1965/tcp VOLUME ["/var/gemini"] RUN rm -rf /tmp/agate ${HOME}/.cargo ENTRYPOINT exec /usr/local/bin/agate --content /var/gemini \ --key /etc/agate/key.rsa --cert /etc/agate/cert.pem \ --log-ip --lang en-US