first commit
This commit is contained in:
166
gitea-registry-guide.md
Normal file
166
gitea-registry-guide.md
Normal file
@ -0,0 +1,166 @@
|
||||
# Anleitung: Gitea als Container Registry bereitstellen und konfigurieren
|
||||
|
||||
Diese Anleitung beschreibt, wie Sie eine Gitea-Instanz bereitstellen und so konfigurieren, dass sie auch als private Docker Container Registry funktioniert. Dies ist besonders nützlich für Teams oder Projekte, die eine integrierte Lösung für Code- und Image-Verwaltung suchen.
|
||||
|
||||
## 1. Einleitung
|
||||
|
||||
Gitea ist ein leichtgewichtiger, selbst gehosteter Git-Dienst, der auch Funktionen wie Issue Tracking, Code-Review und seit Version 1.12 eine integrierte Container Registry bietet. Die Verwendung einer Gitea-Registry ermöglicht es Ihnen, Ihre Docker-Images direkt neben Ihrem Quellcode zu hosten und zu verwalten.
|
||||
|
||||
## 2. Voraussetzungen
|
||||
|
||||
* **Docker und Docker Compose:** Für die einfache Bereitstellung von Gitea.
|
||||
* **Domainname oder IP-Adresse:** Die unter der Gitea erreichbar sein soll.
|
||||
* **Offener Port 3000 (HTTP) und optional 22 (SSH) und 443 (HTTPS) auf dem Host-System.**
|
||||
|
||||
## 3. Gitea mit Docker Compose bereitstellen
|
||||
|
||||
Wir verwenden Docker Compose, um Gitea zusammen mit einer PostgreSQL-Datenbank bereitzustellen. Erstellen Sie eine `docker-compose.yml` in einem neuen Verzeichnis (z.B. `gitea-setup`):
|
||||
|
||||
```yaml
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
gitea:
|
||||
image: gitea/gitea:1.21.11 # Aktuelle stabile Version verwenden
|
||||
container_name: gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
- GITEA__database__DB_TYPE=postgres
|
||||
- GITEA__database__HOST=db:5432
|
||||
- GITEA__database__NAME=gitea
|
||||
- GITEA__database__USER=gitea
|
||||
- GITEA__database__PASS=gitea_password # Starkes Passwort wählen!
|
||||
- GITEA__server__ROOT_URL=http://your_gitea_domain_or_ip:3000/ # Wichtig: Anpassen!
|
||||
- GITEA__server__SSH_DOMAIN=your_gitea_domain_or_ip # Optional, wenn SSH genutzt wird
|
||||
- GITEA__server__DISABLE_SSH=false # Optional, wenn SSH genutzt wird
|
||||
- GITEA__container_registry__ENABLED=true # Container Registry aktivieren
|
||||
- GITEA__container_registry__MAX_TAGS_PER_REPOSITORY=10 # Optional: Anzahl Tags pro Repo begrenzen
|
||||
restart: always
|
||||
ports:
|
||||
- "3000:3000" # Gitea HTTP Port
|
||||
- "2222:22" # Gitea SSH Port (intern 22, extern 2222)
|
||||
volumes:
|
||||
- ./gitea_data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
depends_on:
|
||||
- db
|
||||
networks:
|
||||
- gitea_network
|
||||
|
||||
db:
|
||||
image: postgres:15
|
||||
container_name: gitea_db
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_USER=gitea
|
||||
- POSTGRES_PASSWORD=gitea_password # Muss mit GITEA__database__PASS übereinstimmen
|
||||
- POSTGRES_DB=gitea
|
||||
volumes:
|
||||
- ./postgres_data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- gitea_network
|
||||
|
||||
networks:
|
||||
gitea_network:
|
||||
driver: bridge
|
||||
```
|
||||
|
||||
**Erste Schritte nach dem Start:**
|
||||
|
||||
1. Speichern Sie die Konfiguration als `docker-compose.yml`.
|
||||
2. Starten Sie die Dienste im Verzeichnis der Datei: `docker-compose up -d`.
|
||||
3. Öffnen Sie einen Browser und navigieren Sie zu `http://your_gitea_domain_or_ip:3000/`.
|
||||
4. Folgen Sie dem Initialisierungsassistenten. Achten Sie darauf, dass die Datenbankeinstellungen korrekt sind (sollten aus den Umgebungsvariablen übernommen werden).
|
||||
5. Erstellen Sie den ersten Administrator-Benutzer.
|
||||
|
||||
## 4. Container Registry Konfiguration (nachträglich)
|
||||
|
||||
Obwohl wir `GITEA__container_registry__ENABLED=true` in der `docker-compose.yml` gesetzt haben, kann es sein, dass die Registry nachträglich aktiviert oder angepasst werden muss, oder Sie Gitea ohne diese Einstellung bereitgestellt haben.
|
||||
|
||||
1. **Gitea-Konfigurationsdatei finden:**
|
||||
Die Konfigurationsdatei von Gitea ist `app.ini`. Sie befindet sich normalerweise im `gitea_data`-Volume, das wir gemountet haben, unter `/data/gitea/conf/app.ini` *innerhalb des Gitea-Containers*.
|
||||
|
||||
Um die Datei zu bearbeiten, können Sie entweder:
|
||||
* Den Gitea-Container stoppen, die Datei im gemounteten Volume (z.B. `./gitea_data/gitea/conf/app.ini`) auf Ihrem Host bearbeiten und Gitea neu starten.
|
||||
* Über `docker exec` in den Container gehen und die Datei mit einem Editor wie `vi` oder `nano` (falls installiert) bearbeiten. Dies ist oft komplizierter.
|
||||
|
||||
2. **`app.ini` bearbeiten:**
|
||||
Suchen Sie in der `app.ini` den Abschnitt `[container_registry]`. Falls er nicht existiert, fügen Sie ihn hinzu. Stellen Sie sicher, dass `ENABLED = true` gesetzt ist:
|
||||
|
||||
```ini
|
||||
[container_registry]
|
||||
ENABLED = true
|
||||
# MAX_TAGS_PER_REPOSITORY = 10 # Optional: Begrenzt die Anzahl der Tags pro Repository
|
||||
```
|
||||
Weitere Optionen können hier konfiguriert werden, z.B. Speicherlimits oder Zugriffsrechte.
|
||||
|
||||
3. **Gitea neu starten:**
|
||||
Nach Änderungen an der `app.ini` müssen Sie den Gitea-Container neu starten, damit die Änderungen wirksam werden:
|
||||
```bash
|
||||
docker-compose restart gitea
|
||||
```
|
||||
|
||||
## 5. Nutzung der Gitea Container Registry
|
||||
|
||||
Sobald die Registry aktiviert ist, können Sie sie wie jede andere Docker Registry verwenden.
|
||||
|
||||
**Authentifizierung:**
|
||||
|
||||
Bevor Sie Images pushen oder pullen können, müssen Sie sich bei Ihrer Gitea Registry anmelden. Verwenden Sie dafür Ihre Gitea-Benutzerdaten:
|
||||
|
||||
```bash
|
||||
docker login your_gitea_domain_or_ip:3000
|
||||
```
|
||||
Ersetzen Sie `your_gitea_domain_or_ip:3000` durch die tatsächliche Adresse und Port Ihrer Gitea-Instanz.
|
||||
|
||||
**Image Tagging:**
|
||||
|
||||
Images müssen nach folgendem Muster getaggt werden:
|
||||
`your_gitea_domain_or_ip:3000/benutzername/repository-name:tag`
|
||||
|
||||
* `your_gitea_domain_or_ip:3000`: Die Adresse Ihrer Gitea-Instanz.
|
||||
* `benutzername`: Der Gitea-Benutzer oder die Organisation, unter der das Repository liegt.
|
||||
* `repository-name`: Der Name des Gitea-Repositories, das mit dem Image verknüpft werden soll. Gitea erstellt automatisch ein Container-Image-Repository, wenn Sie das erste Image pushen.
|
||||
* `tag`: Ein beliebiges Tag (z.B. `latest`, `v1.0.0`, ein Commit-Hash).
|
||||
|
||||
**Beispiel:**
|
||||
|
||||
Angenommen, Ihre Gitea ist unter `mygitea.com:3000` erreichbar, Ihr Benutzername ist `devuser`, und Sie haben ein Git-Repository namens `my-python-app`.
|
||||
|
||||
1. **Image bauen (wie in unserem Haupt-Leitfaden beschrieben):**
|
||||
```bash
|
||||
make build # Baut my-python-app:latest
|
||||
```
|
||||
|
||||
2. **Image taggen für Gitea:**
|
||||
```bash
|
||||
docker tag my-python-app:latest mygitea.com:3000/devuser/my-python-app:latest
|
||||
```
|
||||
Oder über den `make`-Befehl aus unserem Haupt-Leitfaden:
|
||||
```bash
|
||||
make tag REGISTRY=mygitea.com:3000/devuser
|
||||
```
|
||||
|
||||
3. **Image pushen:**
|
||||
```bash
|
||||
docker push mygitea.com:3000/devuser/my-python-app:latest
|
||||
```
|
||||
Oder über den `make`-Befehl aus unserem Haupt-Leitfaden:
|
||||
```bash
|
||||
make push REGISTRY=mygitea.com:3000/devuser
|
||||
```
|
||||
|
||||
4. **Image pullen:**
|
||||
```bash
|
||||
docker pull mygitea.com:3000/devuser/my-python-app:latest
|
||||
```
|
||||
|
||||
## 6. Sicherheitsaspekte
|
||||
|
||||
* **HTTPS:** Für eine produktive Gitea-Instanz im Netzwerk wird dringend empfohlen, HTTPS zu konfigurieren. Dies schützt Ihre Anmeldeinformationen und Image-Daten während der Übertragung. Traefik kann hierfür auch verwendet werden, um HTTPS für Gitea zu terminieren.
|
||||
* **Zugriffsrechte:** Verwalten Sie die Berechtigungen für Container-Image-Repositories in Gitea wie für Git-Repositories.
|
||||
|
||||
---
|
||||
Dieser Leitfaden sollte Ihnen helfen, Gitea erfolgreich als Ihre private Container Registry zu nutzen.
|
||||
Reference in New Issue
Block a user