From d79e4fecf4922c15f2221a41298095003ffc3b8c Mon Sep 17 00:00:00 2001 From: Arunavo Ray Date: Tue, 17 Jun 2025 10:30:33 +0530 Subject: [PATCH] Updated Docker compose dev --- README.md | 4 +-- docker-compose.dev.yml | 15 +++++--- scripts/README-dev.md | 56 +++++++++++++++++++++++++++++ scripts/gitea-app.ini | 68 +++++++++++++++++++++++++++++++++++ scripts/gitea-create-admin.sh | 14 ++++++++ scripts/gitea-dev-init.sh | 32 +++++++++++++++++ 6 files changed, 182 insertions(+), 7 deletions(-) create mode 100644 scripts/README-dev.md create mode 100644 scripts/gitea-app.ini create mode 100755 scripts/gitea-create-admin.sh create mode 100755 scripts/gitea-dev-init.sh diff --git a/README.md b/README.md index a6eab35..d15873e 100644 --- a/README.md +++ b/README.md @@ -376,13 +376,13 @@ docker run -d \ -e USER_UID=1000 \ -e USER_GID=1000 \ -e GITEA__database__DB_TYPE=sqlite3 \ - -e GITEA__database__PATH=/data/gitea.db \ + -e GITEA__database__PATH=/data/gitea/gitea.db \ -e GITEA__server__DOMAIN=localhost \ -e GITEA__server__ROOT_URL=http://localhost:3001/ \ -e GITEA__server__SSH_DOMAIN=localhost \ -e GITEA__server__SSH_PORT=2222 \ -e GITEA__server__START_SSH_SERVER=true \ - -e GITEA__security__INSTALL_LOCK=true \ + -e GITEA__security__INSTALL_LOCK=false \ -e GITEA__service__DISABLE_REGISTRATION=false \ gitea/gitea:latest ``` diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 4b820b2..76713bd 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -7,11 +7,12 @@ services: image: gitea/gitea:latest container_name: gitea restart: unless-stopped + entrypoint: ["/tmp/gitea-dev-init.sh"] environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=sqlite3 - - GITEA__database__PATH=/data/gitea.db + - GITEA__database__PATH=/data/gitea/gitea.db - GITEA__server__DOMAIN=localhost - GITEA__server__ROOT_URL=http://localhost:3001/ - GITEA__server__SSH_DOMAIN=localhost @@ -19,20 +20,24 @@ services: - GITEA__server__START_SSH_SERVER=true - GITEA__security__INSTALL_LOCK=true - GITEA__service__DISABLE_REGISTRATION=false + - GITEA__log__MODE=console + - GITEA__log__LEVEL=Info ports: - "3001:3000" - "2222:22" volumes: - gitea-data:/data - gitea-config:/etc/gitea + - ./scripts/gitea-app.ini:/tmp/app.ini:ro + - ./scripts/gitea-dev-init.sh:/tmp/gitea-dev-init.sh:ro networks: - gitea-network healthcheck: - test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/api/healthz"] + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/"] interval: 30s - timeout: 5s - retries: 3 - start_period: 10s + timeout: 10s + retries: 5 + start_period: 60s # Development service connected to local Gitea gitea-mirror-dev: diff --git a/scripts/README-dev.md b/scripts/README-dev.md new file mode 100644 index 0000000..31c15b5 --- /dev/null +++ b/scripts/README-dev.md @@ -0,0 +1,56 @@ +# Development Environment Setup + +This directory contains scripts to help set up a development environment with a pre-configured Gitea instance. + +## Default Credentials + +For development convenience, the Gitea instance is pre-configured with: + +- **Admin Username**: `admin` +- **Admin Password**: `admin123` +- **Gitea URL**: http://localhost:3001 + +## Files + +- `gitea-app.ini` - Pre-configured Gitea settings for development +- `gitea-dev-init.sh` - Initialization script that copies the config on first run +- `gitea-init.sql` - SQL script to create default admin user (not currently used) + +## Usage + +1. Start the development environment: + ```bash + docker compose -f docker-compose.dev.yml down + docker volume rm gitea-mirror_gitea-data gitea-mirror_gitea-config + docker compose -f docker-compose.dev.yml up -d + ``` + +2. Wait for Gitea to start (check logs): + ```bash + docker logs -f gitea + ``` + +3. Access Gitea at http://localhost:3001 and login with: + - Username: `admin` + - Password: `admin123` + +4. Generate an API token: + - Go to Settings → Applications + - Generate New Token + - Give it a name like "gitea-mirror" + - Select all permissions (for development) + - Copy the token + +5. Configure gitea-mirror with the token in your `.env` file or through the web UI. + +## Troubleshooting + +If Gitea doesn't start properly: + +1. Check logs: `docker logs gitea` +2. Ensure volumes are clean: `docker volume rm gitea-mirror_gitea-data gitea-mirror_gitea-config` +3. Restart: `docker compose -f docker-compose.dev.yml up -d` + +## Security Note + +⚠️ **These credentials are for development only!** Never use these settings in production. \ No newline at end of file diff --git a/scripts/gitea-app.ini b/scripts/gitea-app.ini new file mode 100644 index 0000000..d76d266 --- /dev/null +++ b/scripts/gitea-app.ini @@ -0,0 +1,68 @@ +APP_NAME = Gitea: Git with a cup of tea +RUN_MODE = prod + +[database] +DB_TYPE = sqlite3 +PATH = /data/gitea/gitea.db + +[repository] +ROOT = /data/git/repositories + +[server] +SSH_DOMAIN = localhost +DOMAIN = localhost +HTTP_PORT = 3000 +ROOT_URL = http://localhost:3001/ +DISABLE_SSH = false +SSH_PORT = 22 +LFS_START_SERVER = true +LFS_JWT_SECRET = _oaWNP5sCH5cSECa-K_HvCXeXhg-zN5H0cU5vVQAZr4 +OFFLINE_MODE = false + +[security] +INSTALL_LOCK = true +SECRET_KEY = vLu5OuX0EweZjDNxKPQ5V9DXXXX8cJiKpJyQylKkMVTrNdFAzlUlNdYLYfiCybu +INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3MjgzMTk1MDB9.Lz0cJB_DCLmJFh8FqDX0z9IUcxfY9jPftHEGvz_WeHo +PASSWORD_HASH_ALGO = pbkdf2 + +[service] +DISABLE_REGISTRATION = false +REQUIRE_SIGNIN_VIEW = false +REGISTER_EMAIL_CONFIRM = false +ENABLE_NOTIFY_MAIL = false +ALLOW_ONLY_EXTERNAL_REGISTRATION = false +ENABLE_CAPTCHA = false +DEFAULT_KEEP_EMAIL_PRIVATE = false +DEFAULT_ALLOW_CREATE_ORGANIZATION = true +DEFAULT_ENABLE_TIMETRACKING = true +NO_REPLY_ADDRESS = noreply.localhost + +[oauth2] +JWT_SECRET = gQXt_D8B-VJGCvFfJ9xEj5yp8mOd6fAza8TKc9rJJYw + +[lfs] +PATH = /data/git/lfs + +[mailer] +ENABLED = false + +[openid] +ENABLE_OPENID_SIGNIN = true +ENABLE_OPENID_SIGNUP = true + +[session] +PROVIDER = file + +[log] +MODE = console +LEVEL = Info +ROOT_PATH = /data/gitea/log + +[repository.pull-request] +DEFAULT_MERGE_STYLE = merge + +[repository.signing] +DEFAULT_TRUST_MODEL = committer + +[actions] +ENABLED = false \ No newline at end of file diff --git a/scripts/gitea-create-admin.sh b/scripts/gitea-create-admin.sh new file mode 100755 index 0000000..a8d91bc --- /dev/null +++ b/scripts/gitea-create-admin.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# Create admin user for Gitea development instance + +echo "Creating admin user for Gitea..." +docker exec -u git gitea gitea admin user create \ + --username admin \ + --password admin123 \ + --email admin@localhost \ + --admin \ + --must-change-password=false + +echo "Admin user created!" +echo "Username: admin" +echo "Password: admin123" \ No newline at end of file diff --git a/scripts/gitea-dev-init.sh b/scripts/gitea-dev-init.sh new file mode 100755 index 0000000..a49abdc --- /dev/null +++ b/scripts/gitea-dev-init.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# Initialize Gitea for development with pre-configured settings + +# Create necessary directories +mkdir -p /data/gitea/conf + +# Copy pre-configured app.ini if it doesn't exist +if [ ! -f /data/gitea/conf/app.ini ]; then + echo "Initializing Gitea with development configuration..." + cp /tmp/app.ini /data/gitea/conf/app.ini + chown 1000:1000 /data/gitea/conf/app.ini +fi + +# Start Gitea in background +/usr/bin/entrypoint "$@" & +GITEA_PID=$! + +# Wait for Gitea to be ready +echo "Waiting for Gitea to start..." +until wget --no-verbose --tries=1 --spider http://localhost:3000/ 2>/dev/null; do + sleep 2 +done + +# Create admin user if it doesn't exist +if [ ! -f /data/.admin_created ]; then + echo "Creating default admin user..." + su git -c "gitea admin user create --username admin --password admin123 --email admin@localhost --admin --must-change-password=false" && \ + touch /data/.admin_created +fi + +# Keep Gitea running in foreground +wait $GITEA_PID \ No newline at end of file