forgejo git

From KlavoWiki
Jump to navigationJump to search

docker

  mygit:
    image: codeberg.org/forgejo/forgejo:14
    container_name: forgejo
    restart: always
    environment:
      - USER_UID=1000
      - USER_GID=1000
    networks:
      - forgejo
    volumes:
      - ./git/data:/data
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3003:3000"
      - "2222:22"

nginx

server {
    listen 192.168.1.1:80;
    listen [fe80::4c9a:23d2:1f45:6a12]:80;

    server_name git.klaverstyn.com.au;

    return 301 https://git.klaverstyn.com.au$request_uri;

    access_log /var/log/nginx/access_git.log;
    error_log /var/log/nginx/error_git.log;
}

server {
    listen 192.168.1.1:443 ssl;
    listen [fe80::4c9a:23d2:1f45:6a12]:443 ssl;
    http2 on;

    server_name git.klaverstyn.com.au;

    access_log /var/log/nginx/access_git.log;
    error_log /var/log/nginx/error_git.log;

    ssl_certificate       /etc/letsencrypt/live/git.klaverstyn.com.au/fullchain.pem;
    ssl_certificate_key   /etc/letsencrypt/live/git.klaverstyn.com.au/privkey.pem;

    include snippets/stub-status.conf;

    # Forgejo/Gitea specific security headers (simplified CSP to prevent breaking the UI)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    # Git requires more than just GET/POST (e.g., PUT, PATCH, DELETE for API and Web UI)
    # I have removed your method restriction to ensure full Git functionality.

    location / {
        proxy_pass           http://localhost:3003;
        proxy_http_version    1.1;
        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_set_header      X-Forwarded-Host $host;
        proxy_set_header      X-Forwarded-Server $host;

        # Support for large file uploads (important for Git pushes)
        client_max_body_size  512M;

        proxy_set_header      Upgrade $http_upgrade;
        proxy_set_header      Connection "Upgrade";
    }
}