1
0
Fork 0

docs: Dateien zum Forgejo-Artikel in Ausgabe 25/03

This commit is contained in:
Marcus Fihlon 2025-05-23 19:14:58 +02:00
parent 41abdbe549
commit d0d5280021
Signed by: McPringle
GPG key ID: C6B7F469EE363E1F
4 changed files with 160 additions and 0 deletions

45
2503-forgejo/README.md Normal file
View file

@ -0,0 +1,45 @@
# Softwareprojekte selbst hosten mit Forgejo
Dieses Verzeichnis enthält die begleitenden Konfigurationsdateien und Befehle zum Artikel in der Ausgabe 03/25.
## Dateien
- [docker-compose.yml](docker-compose.yml)
vollständige Container-Konfiguration mit Forgejo, MariaDB, Traefik und Runner
- [traefik.yml](traefik.yml)
zentrale Traefik-Konfigurationsdatei für TLS und Routing
## Befehle
```bash
# Verzeichnisse vorbereiten
mkdir -p /data/docker/mariadb
mkdir -p /data/docker/traefik
mkdir -p /data/docker/forgejo
mkdir -p /data/docker/forgejo-runner/data
# acme.json vorbereiten (für Let's Encrypt)
touch /data/docker/traefik/acme.json
chmod 600 /data/docker/traefik/acme.json
# Traefik starten und testen
docker compose up traefik
# MariaDB initialisieren
docker compose up mariadb
# Forgejo starten
docker compose up -d
# Runner Konfigurationsdatei erzeugen
docker compose run --rm \
forgejo-runner forgejo-runner generate-config \
> /data/docker/forgejo-runner/data/config.yaml
# Runner registrieren
docker compose run --rm -it \
forgejo-runner forgejo-runner register
# Runner starten
docker compose up -d forgejo-runner
```

View file

@ -0,0 +1,89 @@
networks:
forgejo:
driver: bridge
enable_ipv6: true
services:
mariadb:
image: mariadb:11
container_name: mariadb
restart: unless-stopped
networks:
- forgejo
ports:
- "127.0.0.1:3306:3306"
environment:
- MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=0
- MARIADB_DATABASE=forgejo
- MARIADB_USER=forgejo
- MARIADB_PASSWORD=forgejo-db-passwort
volumes:
- /data/docker/mariadb:/var/lib/mysql
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
networks:
- forgejo
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /data/docker/traefik/traefik.yml:/traefik.yml:ro
- /data/docker/traefik/acme.json:/acme.json
labels:
- "traefik.enable=true"
- "traefik.http.routers.dashboard.rule=Host(`traefik.example.eu`)"
- "traefik.http.routers.dashboard.entrypoints=https"
- "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
- "traefik.http.routers.dashboard.service=api@internal"
- "traefik.http.routers.dashboard.middlewares=auth"
- "traefik.http.middlewares.auth.basicauth.users=benutzername:passworthash"
forgejo:
image: codeberg.org/forgejo/forgejo:11
container_name: forgejo
restart: unless-stopped
networks:
- forgejo
ports:
- "23:22"
environment:
- USER_UID=1000
- USER_GID=1000
- FORGEJO__server__DOMAIN=git.example.eu
- FORGEJO__server__ROOT_URL=https://git.example.eu
- FORGEJO__database__DB_TYPE=mysql
- FORGEJO__database__HOST=mariadb:3306
- FORGEJO__database__NAME=forgejo
- FORGEJO__database__USER=forgejo
- FORGEJO__database__PASSWD=forgejo-db-passwort
volumes:
- /data/docker/forgejo:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
depends_on:
- mariadb
labels:
- "traefik.enable=true"
- "traefik.http.routers.forgejo.rule=Host(`git.example.eu`)"
- "traefik.http.routers.forgejo.entrypoints=https"
- "traefik.http.routers.forgejo.tls.certresolver=letsencrypt"
- "traefik.http.routers.forgejo.service=forgejo"
- "traefik.http.services.forgejo.loadbalancer.server.port=3000"
forgejo-runner:
image: code.forgejo.org/forgejo/runner:6
container_name: forgejo-runner
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /data/docker/forgejo-runner/data:/data
environment:
- DOCKER_HOST=unix:///var/run/docker.sock
networks:
- forgejo
user: 0:0
command: forgejo-runner -c /data/config.yaml daemon

21
2503-forgejo/traefik.yml Normal file
View file

@ -0,0 +1,21 @@
entryPoints:
http:
address: ":80"
https:
address: ":443"
api:
dashboard: true
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
letsencrypt:
acme:
email: admin@example.eu
storage: /acme.json
httpChallenge:
entryPoint: http

View file

@ -2,6 +2,11 @@
In diesem Repository findest du die Quelltexte und Konfigurationsbeispiele zu Artikeln, die von mir in der Zeitschrift *Java aktuell* veröffentlicht wurden. Da in einer gedruckten Zeitschrift kein direktes Kopieren von Quelltexten möglich ist (und selbst bei PDF-Versionen oft Formatierungsprobleme auftreten), stelle ich hier alle relevanten Dateien in strukturierter Form zur Verfügung.
## Artikel
- [Softwareprojekte selbst hosten mit Forgejo](2503-forgejo)
*Java aktuell 03/25*
## Struktur
Für jeden Artikel gibt es ein eigenes Unterverzeichnis. Der Verzeichnisname besteht aus der Ausgabennummer und einem thematischen Stichwort.