21x9.org | System Administration | Home Automation | Smart Home
11.07.2023

Quelltextverwaltung mit Gitea

Gitea ist eine leichtgewichtige Oberfläche zur Verwaltung von Git-Repositories. Eine der besonders hervorzuhebenden Funktionen ist die Migration von Repos aus anderen Tools, wie z.B. GitHub, GitLab, etc., hierbei ist es auch möglich einen Mirror der Repos in Gitea anzulegen. So kann man vom größeren Funktionsumfang der zuvor genannten Tools profitieren, muss aber nicht fürchten, irgendwann einmal nicht mehr an seine Daten zu kommen, z.B. weil der Dienst eingestellt wird.

Die Installation kann mittels Docker erfolgen:

version: "3"  

services:  
    server:  
        image: gitea/gitea:latest  
        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__PASSWD=SECRET  
        restart: always  
        volumes:  
            - /docker/gitea/www:/data  
            - /etc/timezone:/etc/timezone:ro  
            - /etc/localtime:/etc/localtime:ro  
        ports:  
            - "3000:3000"  
            - "8022:22"  
        depends_on:  
            - db  

    db:  
        image: postgres:14  
        restart: always  
        environment:  
            - POSTGRES_USER=gitea  
            - POSTGRES_PASSWORD=SECRET  
            - POSTGRES_DB=gitea  
        volumes:  
            - /docker/gitea/postgres:/var/lib/postgresql/data

Der Wert SECRET bei den Kennwortangaben muss natürlich ersetzt werden, ein entsprechendes Kennwort kann man z.B. mit pwgen -1 64 leicht erzeugen. Die Gitea-Weboberfläche steht nach dem Start (docker-compose up -d) unter dem Port 3000 zur Verfügung. Hier kann man natürlich auch Port 80 nehmen, falls dieser noch frei ist. Da Port 22 meist bereits belegt sein dürfte, erwartet Gitea - in dieser Konfiguration - Anfragen über SSH auf Port 8022. Alternativ kann die Nutzung von SSH auch in der Gitea Konfiguration komplett abgeschaltet werden, dann kann die Zeile - "8022:22" bei ports entfallen.

Eine nginx Konfiguration (reverse-proxy) könnte wie folgt aussehen:

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name gitea.example.org;

        ssl_certificate /var/lib/dehydrated/certs/gitea.example.org/fullchain.pem;
        ssl_certificate_key /var/lib/dehydrated/certs/gitea.example.org/privkey.pem;
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_tickets off;
        ssl_dhparam /etc/ssl/dhparams.pem;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers off;
        gzip off;

        add_header Strict-Transport-Security "max-age=63072000" always;

        ssl_trusted_certificate /var/lib/dehydrated/certs/gitea.example.org/fullchain.pem;
        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 127.0.0.1;

        # for letsencrypt
        location /.well-known/acme-challenge/ {
            root /var/www/html/;
            try_files $uri $uri/ =404;
        }

        client_max_body_size 128M;

        location / {
            if ($ssl_protocol = "") {
                rewrite ^   https://$server_name$request_uri? permanent;
            }
            proxy_http_version 1.1;
            proxy_set_header "Connection" "";

            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            proxy_cookie_domain ~(?P<secure_domain>([-0-9a-z]+\.)?[-0-9a-z]+\.[a-z]+)$ "$secure_domain; secure";

            proxy_pass http://127.0.0.1:3000;
        }
}
Tags: docker linux git gitea nginx

Mehr

  • nginx sub_filter
  • Backups mit Borg und ZFS/LVM Snapshots
  • Flexible, bootfähige USB-Sticks mit Ventoy
  • Ansible: Best Practice
  • Docker

Tags

docker linux git gitea nginx

Archiv

  • Mar 2025 (2)
  • May 2024 (2)
  • Oct 2023 (1)
  • Aug 2023 (5)
  • Jul 2023 (31)

  • Ältere Einträge (95)

Feeds

Atom 1.0 RSS JSON
  • Datenschutz
  • Impressum
  • Archiv