Skip to content
Snippets Groups Projects
Verified Commit 51f7887b authored by Romain De Laage De Bellefaye's avatar Romain De Laage De Bellefaye
Browse files

[Gemini] Add all Picasoft Geminispace

parent f1fe3836
No related branches found
No related tags found
No related merge requests found
......@@ -3,3 +3,4 @@
.env
htpasswd
pica-graphbot/certs
pica-gemini/certs
# Geminispace de Picasoft
Gemini est un protocole plus léger que le web et qui respecte la vie privée des utilisateurs. Il permet de partager de l'inforamtion tout comme le web ou gopher.
Picasoft possède une capsule ainsi qu'un service de miroir Mastodon.
Gemserv fait office de reverse proxy et de serveur pour des fichiers statiques, il permet de déclarer plusieurs *virtual hosts*. La capsule est par exemple servie par celui-ci et le contenu de la capsule est sur un volume monté sur `/var/gemini`.
MastoGem est un proxy Mastodon pour Gemini, ici connecté à `mamot.fr`.
## Premier lancement
L'utilisation de TLS est obligatoire avec Gemini, on préfère utiliser des certificats signés par nous-même. Avant de lancer le service, il faut générer une clé (on ne la chiffre pas, les images supportent pas encore les clé chiffrées) :
```
openssl genrsa -out key.rsa 4096
```
Puis on génère deux certificats (un pour chaque service) en pensant à bien indiquer le domaine pour lequel le certificat est signé dans le sujet :
```
openssl req -x509 -key key.rsa -out cert.pem -days 365 -subj "/CN=picasoft.net"
openssl req -x509 -key key.rsa -out cert-toot.pem -days 365 -subj "/CN=mastogem.picasoft.net"
```
Ces certificats ainsi que la clé doivent être placés dans le dossier `certs`.
## Renouveller les certificats
On garde une durée de validité d'un an pour les certificats, ensuite il faut les renouveller (pas la clé) grâce aux même commandes que précédemment :
```
openssl req -x509 -key key.rsa -out cert.pem -days 365 -subj "/CN=picasoft.net"
openssl req -x509 -key key.rsa -out cert-toot.pem -days 365 -subj "/CN=mastogem.picasoft.net"
```
version: "3.7"
volumes:
capsule-data:
name: "capsule-data"
networks:
gemini:
name: gemini
services:
gemserv:
image: registry.picasoft.net/pica-gemserv:0.4.5
container_name: gemserv
build: gemserv
volumes:
- capsule-data:/var/gemini
- ./certs/key.rsa:/key.rsa:ro
- ./certs/cert.pem:/cert.pem:ro
- ./certs/cert-toot.pem:/cert-toot.pem:ro
environment:
HOSTNAME: gemini.test.picasoft.net
MASTOGEM_HOSTNAME: toot.gemini.test.picasoft.net
networks:
- gemini
ports:
- 1965:1965
restart: unless-stopped
mastogem:
image: registry.picasoft.net/pica-mastogem:0.0
container_name: mastogem
build: mastogem
volumes:
- ./certs/key.rsa:/key.rsa:ro
- ./certs/cert-toot.pem:/cert.pem:ro
environment:
MASTOGEM_CONFIG_PATH: /config.json
networks:
- gemini
restart: unless-stopped
FROM rust:1.50-buster as BUILD
ARG VERSION=0.4.5
RUN apt-get update && \
apt-get install -y curl && \
curl -L https://git.sr.ht/~int80h/gemserv/archive/v${VERSION}.tar.gz -o gemserv.tar.gz && \
tar xzvf gemserv.tar.gz && \
cd gemserv-v${VERSION} && \
cargo build --release && \
cp target/release/gemserv /gemserv
FROM debian:buster-slim
RUN apt-get update && apt-get install -y libssl1.1 && rm -rf /var/lib/apt/lists/*
COPY --from=BUILD /gemserv /gemserv
COPY start.sh /start.sh
RUN chmod +x /start.sh
CMD "/start.sh"
cat << EOF > /config.toml
port = 1965
host = "::"
log = "info"
[[server]]
hostname = "$HOSTNAME"
dir = "/var/gemini"
key = "/key.rsa"
cert = "/cert.pem"
index = "index.gmi"
lang = "fr"
[[server]]
hostname = "$MASTOGEM_HOSTNAME"
key = "/key.rsa"
cert = "/cert-toot.pem"
proxy_all = "mastogem:1965"
dir = "/var/gemini"
EOF
/gemserv /config.toml
FROM golang:1.16.0-buster as BUILD
RUN apt-get update && \
apt-get install -y curl && \
curl -L https://git.rdelaage.ovh/rdelaage/mastoGem/archive/main.tar.gz -o mastogem.tar.gz && \
tar xzvf mastogem.tar.gz && \
cd mastogem && \
go build -o /mastogem
FROM debian:buster-slim
COPY --from=BUILD /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=BUILD /mastogem /mastogem
COPY start.sh /start.sh
RUN chmod +x /start.sh
CMD "/start.sh"
cat << EOF > /config.json
{
"listen": "0.0.0.0:1965",
"cert_path": "/cert.pem",
"key_path": "/key.rsa",
"base_url": "https://mamot.fr",
"title": "MastoGem de Picasoft",
"home_message": "Bienvenue sur le MastoGem de Picasoft, un proxy Mastodon pour Gemini.\n\nVous pouvez voir nos toots sur :\n=> /profile/138624 Profil de Picasoft"
}
EOF
/mastogem
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment