From 9bc3a953f3da062be530162d17b14e8a96b59c38 Mon Sep 17 00:00:00 2001 From: francesco Date: Thu, 25 Dec 2025 20:16:44 +0100 Subject: [PATCH] Upload files to "/" --- .env | 30 ++++++++++++++++++++++++++ docker-compose.yml | 43 ++++++++++++++++++++++++++++++++++++ gitea.conf | 28 ++++++++++++++++++++++++ setup.sh | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 155 insertions(+) create mode 100644 .env create mode 100644 docker-compose.yml create mode 100644 gitea.conf create mode 100644 setup.sh diff --git a/.env b/.env new file mode 100644 index 0000000..8f0a2c6 --- /dev/null +++ b/.env @@ -0,0 +1,30 @@ +# Gitea container settings +GITEA_IMAGE=gitea/gitea:latest +GITEA_CONTAINER_NAME=gitea +GITEA_RESTART_POLICY=always + +# User / time zone +GITEA_UID=1000 +GITEA_GID=1000 +GITEA_TZ=Europe/Rome + +# Database (SQLite) +GITEA_DB_PATH=/data/gitea/gitea.db + +# Server URLs and ports +GITEA_DOMAIN=git.pyconetwork.it +GITEA_SSH_DOMAIN=$GITEA_DOMAIN +GITEA_ROOT_URL=https://$GITEA_DOMAIN/ +GITEA_PROTOCOL=http +GITEA_HTTP_PORT=3000 +GITEA_SSH_PORT=2222 +GITEA_START_SSH_SERVER=false + +# Bind mount locations +GITEA_DATA_DIR=./data +GITEA_CONFIG_DIR=./config + +# Nginx reverse proxy +NGINX_CONTAINER_NAME=gitea-nginx +NGINX_HTTP_PORT=80 +NGINX_CONFIG_DIR=./nginx diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a926134 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,43 @@ +services: + nginx: + image: nginx:alpine + container_name: ${NGINX_CONTAINER_NAME:-gitea-nginx} + restart: ${GITEA_RESTART_POLICY} + ports: + - "${NGINX_HTTP_PORT:-80}:80" + volumes: + - ${NGINX_CONFIG_DIR:-./nginx}:/etc/nginx/conf.d:ro + depends_on: + - gitea + networks: + - gitea-network + + gitea: + image: ${GITEA_IMAGE:-gitea/gitea} + container_name: ${GITEA_CONTAINER_NAME} + restart: ${GITEA_RESTART_POLICY} + env_file: + - .env + environment: + - USER_UID=${GITEA_UID} + - USER_GID=${GITEA_GID} + - TZ=${GITEA_TZ} + - GITEA__database__DB_TYPE=sqlite3 + - GITEA__database__PATH=${GITEA_DB_PATH:-/data/gitea/gitea.db} + - GITEA__server__DOMAIN=${GITEA_DOMAIN} + - GITEA__server__ROOT_URL=${GITEA_ROOT_URL} + - GITEA__server__SSH_DOMAIN=${GITEA_SSH_DOMAIN} + - GITEA__server__PROTOCOL=${GITEA_PROTOCOL} + - GITEA__server__SSH_PORT=${GITEA_SSH_PORT} + - GITEA__server__START_SSH_SERVER=${GITEA_START_SSH_SERVER} + volumes: + - ${GITEA_DATA_DIR}:/data + - ${GITEA_CONFIG_DIR}:/etc/gitea + ports: + - "${GITEA_SSH_PORT}:22" # SSH for git over SSH + networks: + - gitea-network + +networks: + gitea-network: + driver: bridge \ No newline at end of file diff --git a/gitea.conf b/gitea.conf new file mode 100644 index 0000000..9700f47 --- /dev/null +++ b/gitea.conf @@ -0,0 +1,28 @@ +upstream gitea { + server gitea:3000; +} + +map $http_x_forwarded_proto $forwarded_proto { + default $http_x_forwarded_proto; + '' $scheme; +} + +server { + listen 80; + server_name _; + + client_max_body_size 512M; + + location / { + proxy_pass http://gitea; + 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 $forwarded_proto; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Port $server_port; + + proxy_buffering off; + proxy_request_buffering off; + } +} diff --git a/setup.sh b/setup.sh new file mode 100644 index 0000000..d39c608 --- /dev/null +++ b/setup.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ENV_FILE="$SCRIPT_DIR/.env" + +if [ -f "$ENV_FILE" ]; then + set -a + # shellcheck disable=SC1090 + . "$ENV_FILE" + set +a +fi + +: "${GITEA_UID:=1000}" +: "${GITEA_GID:=1000}" +: "${GITEA_DATA_DIR:=./data}" +: "${GITEA_CONFIG_DIR:=./config}" +: "${NGINX_CONFIG_DIR:=./nginx}" + +resolve_path() { + case "$1" in + /*) printf '%s\n' "$1" ;; + *) printf '%s/%s\n' "$SCRIPT_DIR" "$1" ;; + esac +} + +DATA_DIR="$(resolve_path "$GITEA_DATA_DIR")" +CONFIG_DIR="$(resolve_path "$GITEA_CONFIG_DIR")" +NGINX_DIR="$(resolve_path "$NGINX_CONFIG_DIR")" + +mkdir -p "$DATA_DIR" "$CONFIG_DIR" "$NGINX_DIR" + +chown_cmd=(chown -R "${GITEA_UID}:${GITEA_GID}" "$DATA_DIR" "$CONFIG_DIR") +if [ "$(id -u)" -ne 0 ]; then + if command -v sudo >/dev/null 2>&1; then + sudo "${chown_cmd[@]}" + else + echo "Need ownership change to ${GITEA_UID}:${GITEA_GID}; re-run as root or with sudo" >&2 + exit 1 + fi +else + "${chown_cmd[@]}" +fi + +if docker compose version >/dev/null 2>&1; then + COMPOSE_CMD=(docker compose) +elif command -v docker-compose >/dev/null 2>&1; then + COMPOSE_CMD=(docker-compose) +else + echo "docker compose not found" >&2 + exit 1 +fi + +(cd "$SCRIPT_DIR" && "${COMPOSE_CMD[@]}" up -d)