128 lines
3.6 KiB
Markdown
128 lines
3.6 KiB
Markdown
# Gitea Setup Guide
|
|
|
|
This document outlines the steps needed to create a Gitea instance on an existing server using a subdomain.
|
|
|
|
## Setup Steps
|
|
|
|
### 1. DNS Provider Configuration
|
|
Set up a CNAME record for your subdomain (e.g., `gitea.karlbreuer.com`) in your DNS provider's settings.
|
|
|
|
### 2. NGINX HTTP Configuration
|
|
Create an NGINX configuration file for your Gitea subdomain:
|
|
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name gitea.karlbreuer.com;
|
|
location / {
|
|
proxy_pass http://localhost:3000;
|
|
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;
|
|
}
|
|
# Increase max body size for large Git repositories
|
|
client_max_body_size 50m;
|
|
# Optimize for git requests
|
|
location /api/v1/repos {
|
|
proxy_pass http://localhost:3000;
|
|
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;
|
|
# Extended timeout for Git operations
|
|
proxy_read_timeout 300;
|
|
proxy_connect_timeout 300;
|
|
proxy_send_timeout 300;
|
|
}
|
|
# Allow large pushes
|
|
location ~ (/api/v1)?/repos/[^/]+/[^/]+/git-receive-pack {
|
|
proxy_pass http://localhost:3000;
|
|
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;
|
|
client_max_body_size 0;
|
|
proxy_request_buffering off;
|
|
proxy_buffering off;
|
|
}
|
|
# Log settings
|
|
access_log /var/log/nginx/gitea.access.log;
|
|
error_log /var/log/nginx/gitea.error.log;
|
|
}
|
|
```
|
|
|
|
### 3. Enable HTTPS with Certbot
|
|
Run Certbot to convert HTTP to HTTPS with SSL certificate.
|
|
|
|
### 4. Create Docker Compose File
|
|
```bash
|
|
mkdir gitea && cd gitea && sudo nano docker-compose.yml
|
|
```
|
|
|
|
Create the following `docker-compose.yml` file:
|
|
|
|
```yaml
|
|
version: "3"
|
|
networks:
|
|
gitea:
|
|
external: false
|
|
services:
|
|
server:
|
|
image: docker.gitea.com/gitea:1.23.4
|
|
container_name: gitea
|
|
environment:
|
|
- USER_UID=1000
|
|
- USER_GID=1000
|
|
restart: always
|
|
networks:
|
|
- gitea
|
|
volumes:
|
|
- ./gitea:/data
|
|
- /etc/timezone:/etc/timezone:ro
|
|
- /etc/localtime:/etc/localtime:ro
|
|
ports:
|
|
- "3000:3000"
|
|
- "222:22"
|
|
```
|
|
|
|
### 5. Start Gitea with Docker Compose
|
|
```bash
|
|
sudo docker-compose up -d
|
|
```
|
|
|
|
### 6. Complete Web Setup
|
|
Access the web UI and register the first account.
|
|
|
|
> ⚠️ **Security Warning**: The first registered user automatically receives admin permissions, but registration remains OPEN to anyone afterwards.
|
|
|
|
### 7. Disable Public Registration
|
|
To disable public registration after setting up your admin account, edit the `app.ini` file:
|
|
|
|
```ini
|
|
[service]
|
|
DISABLE_REGISTRATION = true
|
|
```
|
|
|
|
Then restart the Docker container:
|
|
```bash
|
|
docker restart gitea
|
|
```
|
|
|
|
Reference: [Gitea Configuration Cheat Sheet](https://docs.gitea.com/administration/config-cheat-sheet?_highlight=disable&_highlight=self&_highlight=registration#server-server)
|
|
|
|
### 8. Fix IPv4/IPv6 Issues
|
|
If you experience IPv6 connectivity issues, force IPv4 by adding this to your SSH config:
|
|
|
|
```
|
|
# Add to ~/.ssh/config
|
|
Host gitea.karlbreuer.com
|
|
HostName gitea.karlbreuer.com
|
|
User git
|
|
Port 222
|
|
IdentityFile ~/.ssh/gitea
|
|
AddressFamily inet # Force IPv4
|
|
```
|
|
|
|
## References
|
|
- [Gitea Docker Installation Guide](https://docs.gitea.com/installation/install-with-docker) |