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. 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 ## Struktur
Für jeden Artikel gibt es ein eigenes Unterverzeichnis. Der Verzeichnisname besteht aus der Ausgabennummer und einem thematischen Stichwort. Für jeden Artikel gibt es ein eigenes Unterverzeichnis. Der Verzeichnisname besteht aus der Ausgabennummer und einem thematischen Stichwort.