first commit
This commit is contained in:
83
.gitignore
vendored
Normal file
83
.gitignore
vendored
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
# Docker volumes and data directories
|
||||||
|
# Ignore gitea directory contents but keep important configuration files
|
||||||
|
gitea/*
|
||||||
|
# Exception: Track Gitea configuration files (important for server recovery)
|
||||||
|
!gitea/gitea/
|
||||||
|
!gitea/gitea/conf/
|
||||||
|
!gitea/gitea/conf/app.ini
|
||||||
|
!gitea/gitea/home/
|
||||||
|
!gitea/gitea/home/.gitconfig
|
||||||
|
|
||||||
|
# Ignore Gitea data files (even if parent directories are un-ignored)
|
||||||
|
gitea/gitea/attachments/
|
||||||
|
gitea/gitea/avatars/
|
||||||
|
gitea/gitea/gitea.db
|
||||||
|
gitea/gitea/indexers/
|
||||||
|
gitea/gitea/queues/
|
||||||
|
gitea/gitea/repo-archive/
|
||||||
|
gitea/gitea/repo-avatars/
|
||||||
|
gitea/gitea/sessions/
|
||||||
|
gitea/gitea/gitea
|
||||||
|
gitea/gitea/cert.pem
|
||||||
|
gitea/gitea/key.pem
|
||||||
|
gitea/gitea/log/
|
||||||
|
gitea/gitea/tmp/
|
||||||
|
gitea/gitea/packages/
|
||||||
|
gitea/gitea/jwt/
|
||||||
|
gitea/gitea/actions_artifacts/
|
||||||
|
gitea/gitea/actions_log/
|
||||||
|
|
||||||
|
https_portal/data/
|
||||||
|
https_portal/log/
|
||||||
|
|
||||||
|
# Environment files
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
*.env
|
||||||
|
|
||||||
|
# SSL certificates and keys
|
||||||
|
*.pem
|
||||||
|
*.key
|
||||||
|
*.crt
|
||||||
|
*.cert
|
||||||
|
*.csr
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
logs/
|
||||||
|
*.log.*
|
||||||
|
|
||||||
|
# IDE and editor files
|
||||||
|
.cursor/
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Backup and old directories
|
||||||
|
*-OLD/
|
||||||
|
*-old/
|
||||||
|
*.bak
|
||||||
|
*.backup
|
||||||
|
*.tmp
|
||||||
|
|
||||||
|
# OS-specific files
|
||||||
|
.DS_Store
|
||||||
|
.DS_Store?
|
||||||
|
._*
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
ehthumbs.db
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Temporary files
|
||||||
|
*.tmp
|
||||||
|
*.temp
|
||||||
|
tmp/
|
||||||
|
temp/
|
||||||
|
|
||||||
|
# Containerd (if not needed in repo)
|
||||||
|
containerd/
|
||||||
28
README.md
Normal file
28
README.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# DevOps Infrastructure
|
||||||
|
|
||||||
|
This repository contains Docker Compose configuration for DevOps infrastructure services.
|
||||||
|
|
||||||
|
## Services
|
||||||
|
|
||||||
|
- **Gitea**: Self-hosted Git service
|
||||||
|
- **Node Exporter**: Prometheus node exporter for system metrics
|
||||||
|
- **HTTPS Portal**: Nginx-based reverse proxy with automatic SSL certificate management
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Important configuration files are tracked in this repository:
|
||||||
|
- `docker-compose.yml`: Service definitions and configuration
|
||||||
|
- `gitea/gitea/conf/app.ini`: Gitea application configuration
|
||||||
|
- `gitea/gitea/home/.gitconfig`: Git configuration for Gitea
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
1. Ensure Docker and Docker Compose are installed
|
||||||
|
2. Create external network: `docker network create devops`
|
||||||
|
3. Run: `docker-compose up -d`
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Data directories (databases, logs, attachments) are excluded from version control
|
||||||
|
- SSL certificates are managed by HTTPS Portal and stored in `https_portal/data/`
|
||||||
|
- Gitea data is stored in `./gitea/` directory
|
||||||
64
docker-compose.yml
Normal file
64
docker-compose.yml
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
---
|
||||||
|
networks:
|
||||||
|
devops:
|
||||||
|
name: devops
|
||||||
|
external: true
|
||||||
|
|
||||||
|
services:
|
||||||
|
gitea:
|
||||||
|
image: gitea/gitea:1.24.5
|
||||||
|
container_name: gitea
|
||||||
|
environment:
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
restart: always
|
||||||
|
networks:
|
||||||
|
- devops
|
||||||
|
volumes:
|
||||||
|
- ./gitea:/data
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
- /home/git/.ssh/:/data/git/.ssh
|
||||||
|
ports:
|
||||||
|
- "8418:8418"
|
||||||
|
- "222:22"
|
||||||
|
node_exporter:
|
||||||
|
image: quay.io/prometheus/node-exporter:latest
|
||||||
|
container_name: node_exporter
|
||||||
|
network_mode: host
|
||||||
|
pid: host
|
||||||
|
restart: unless-stopped
|
||||||
|
command:
|
||||||
|
- "--path.procfs=/host/proc"
|
||||||
|
- "--path.sysfs=/host/sys"
|
||||||
|
- "--path.rootfs=/host"
|
||||||
|
- "--collector.filesystem.ignored-mount-points=^/(sys|proc|dev)($$|/)"
|
||||||
|
volumes:
|
||||||
|
- "/proc:/host/proc:ro"
|
||||||
|
- "/sys:/host/sys:ro"
|
||||||
|
- "/:/host:ro,rslave"
|
||||||
|
https_portal:
|
||||||
|
container_name: https_portal
|
||||||
|
image: "steveltn/https-portal:1.23.0"
|
||||||
|
restart: unless-stopped
|
||||||
|
user: "root"
|
||||||
|
networks:
|
||||||
|
- devops # internal network
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
environment:
|
||||||
|
STAGE: "production" # Use Let's Encrypt production server
|
||||||
|
WEBSOCKET: "true" # Enable websocket support
|
||||||
|
DEBUG: "true"
|
||||||
|
RENEW_MARGIN_DAYS: 30
|
||||||
|
CLIENT_MAX_BODY_SIZE: 0
|
||||||
|
# FORCE_RENEW: 'true'
|
||||||
|
DOMAINS: 'gitea.phx-erp.de -> gitea:8418'
|
||||||
|
volumes:
|
||||||
|
- ./https_portal/data:/var/lib/https-portal # ssl_certs, vhost.d, htdocs
|
||||||
|
- ./https_portal/log:/var/log/nginx # nginx logs
|
||||||
|
depends_on:
|
||||||
|
- gitea
|
||||||
|
|
||||||
|
|
||||||
156
gitea/gitea/conf/app.ini
Normal file
156
gitea/gitea/conf/app.ini
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
; https://docs.gitea.com/administration/logging-config
|
||||||
|
; https://docs.gitea.com/administration/config-cheat-sheet
|
||||||
|
APP_NAME = PHX Git
|
||||||
|
RUN_MODE = prod
|
||||||
|
; RUN_USER = git
|
||||||
|
WORK_PATH = /data/gitea
|
||||||
|
|
||||||
|
[repository]
|
||||||
|
ROOT = /data/git/repositories
|
||||||
|
DEFAULT_PRIVATE = private
|
||||||
|
DEFAULT_PUSH_CREATE_PRIVATE = true
|
||||||
|
|
||||||
|
[repository.local]
|
||||||
|
LOCAL_COPY_PATH = /data/gitea/tmp/local-repo
|
||||||
|
|
||||||
|
[repository.upload]
|
||||||
|
TEMP_PATH = /data/gitea/uploads
|
||||||
|
FILE_MAX_SIZE = 500
|
||||||
|
MAX_FILES = 5
|
||||||
|
|
||||||
|
[server]
|
||||||
|
PROTOCOL = http
|
||||||
|
; CERT_FILE = cert.pem
|
||||||
|
; KEY_FILE = key.pem
|
||||||
|
APP_DATA_PATH = /data/gitea
|
||||||
|
DOMAIN = gitea.phx-erp.de
|
||||||
|
SSH_DOMAIN = gitea.phx-erp.de
|
||||||
|
HTTP_PORT = 8418
|
||||||
|
ROOT_URL = https://%(DOMAIN)s ;%(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/ ;https://%(DOMAIN)s
|
||||||
|
; ROOT_URL = https://gitea.phx-erp.de/
|
||||||
|
DISABLE_SSH = false
|
||||||
|
SSH_PORT = 222
|
||||||
|
SSH_LISTEN_PORT = 22
|
||||||
|
LFS_START_SERVER = true
|
||||||
|
LFS_JWT_SECRET = PgKhCDMdjKt3lqOaAsWOIVf314j8AiV3jvzK-fqA-fU
|
||||||
|
OFFLINE_MODE = false
|
||||||
|
; SSH_CREATE_AUTHORIZED_KEYS_FILE = false
|
||||||
|
; ENABLE_ACME=true
|
||||||
|
; ACME_ACCEPTTOS=true
|
||||||
|
; ACME_DIRECTORY=https
|
||||||
|
; ACME_EMAIL=y.m.lima19@gmail.com
|
||||||
|
; REDIRECT_OTHER_PORT = true
|
||||||
|
; PORT_TO_REDIRECT = 3080
|
||||||
|
|
||||||
|
[database]
|
||||||
|
PATH = /data/gitea/gitea.db
|
||||||
|
DB_TYPE = sqlite3
|
||||||
|
HOST = localhost:3306
|
||||||
|
NAME = gitea
|
||||||
|
USER = root
|
||||||
|
PASSWD =
|
||||||
|
LOG_SQL = false
|
||||||
|
SCHEMA =
|
||||||
|
SSL_MODE = disable
|
||||||
|
CHARSET = utf8
|
||||||
|
|
||||||
|
[indexer]
|
||||||
|
ISSUE_INDEXER_PATH = /data/gitea/indexers/issues.bleve
|
||||||
|
|
||||||
|
[session]
|
||||||
|
PROVIDER_CONFIG = /data/gitea/sessions
|
||||||
|
PROVIDER = file
|
||||||
|
|
||||||
|
[picture]
|
||||||
|
AVATAR_UPLOAD_PATH = /data/gitea/avatars
|
||||||
|
REPOSITORY_AVATAR_UPLOAD_PATH = /data/gitea/repo-avatars
|
||||||
|
|
||||||
|
[attachment]
|
||||||
|
PATH = /data/gitea/attachments
|
||||||
|
|
||||||
|
[log]
|
||||||
|
MODE = console
|
||||||
|
LEVEL = info
|
||||||
|
ROOT_PATH = /data/gitea/log
|
||||||
|
STACKTRACE_LEVEL = None
|
||||||
|
logger.router.MODE = ,
|
||||||
|
logger.xorm.MODE = ,
|
||||||
|
logger.access.MODE =
|
||||||
|
|
||||||
|
; this is the config options of "console" mode (used by MODE=console above)
|
||||||
|
[log.console]
|
||||||
|
MODE = console
|
||||||
|
FLAGS = stdflags
|
||||||
|
PREFIX =
|
||||||
|
COLORIZE = true
|
||||||
|
|
||||||
|
[security]
|
||||||
|
INSTALL_LOCK = true
|
||||||
|
SECRET_KEY =
|
||||||
|
REVERSE_PROXY_LIMIT = 1
|
||||||
|
REVERSE_PROXY_TRUSTED_PROXIES = *
|
||||||
|
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2ODI1MDcyMjd9.Y-AiH7g5yXscV6FqtRqDC_hUWs9FpM7HWLPb_EQTamM
|
||||||
|
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
|
||||||
|
|
||||||
|
[lfs]
|
||||||
|
PATH = /data/git/lfs
|
||||||
|
|
||||||
|
[mailer]
|
||||||
|
ENABLED = true
|
||||||
|
FROM = info@phx-erp.de
|
||||||
|
PROTOCOL = smtps
|
||||||
|
SMTP_ADDR = mail.phx-erp.de
|
||||||
|
SMTP_PORT = 465
|
||||||
|
USER = internal@phx-erp.de
|
||||||
|
PASSWD = `8Kb2p4!o1`
|
||||||
|
|
||||||
|
[openid]
|
||||||
|
ENABLE_OPENID_SIGNIN = true
|
||||||
|
ENABLE_OPENID_SIGNUP = true
|
||||||
|
|
||||||
|
[cron.update_checker]
|
||||||
|
ENABLED = true
|
||||||
|
|
||||||
|
[repository.pull-request]
|
||||||
|
DEFAULT_MERGE_STYLE = merge
|
||||||
|
|
||||||
|
[repository.signing]
|
||||||
|
DEFAULT_TRUST_MODEL = committer
|
||||||
|
|
||||||
|
[oauth2]
|
||||||
|
JWT_SECRET = 3NIRibkUEPf2ScwnYUsXiG5RSEX7e3h_yWWqY1zfFCQ
|
||||||
|
|
||||||
|
[cron.resync_all_sshkeys]
|
||||||
|
ENABLED = true
|
||||||
|
RUN_AT_START = true
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
[repository.issue]
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; List of reasons why a Pull Request or Issue can be locked
|
||||||
|
LOCK_REASONS = Too heated,Off-topic,Resolved,Spam
|
||||||
|
;; Maximum number of pinned Issues per repo
|
||||||
|
;; Set to 0 to disable pinning Issues
|
||||||
|
MAX_PINNED = 3
|
||||||
|
|
||||||
|
[project]
|
||||||
|
PROJECT_BOARD_BASIC_KANBAN_TYPE = To Do, In Progress, Done
|
||||||
|
PROJECT_BOARD_BUG_TRIAGE_TYPE = Needs Triage, High Priority, Low Priority, Closed
|
||||||
|
|
||||||
|
[webhook]
|
||||||
|
ALLOWED_HOST_LIST=teamcity.phx-erp.de,23.88.107.109,ansible.phx-erp.de,167.235.254.4
|
||||||
|
; 23.88.107.109 -> Teamcity Ip
|
||||||
22
gitea/gitea/home/.gitconfig
Normal file
22
gitea/gitea/home/.gitconfig
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
[user]
|
||||||
|
name = Gitea
|
||||||
|
email = gitea@fake.local
|
||||||
|
[core]
|
||||||
|
quotePath = false
|
||||||
|
logAllRefUpdates = true
|
||||||
|
commitGraph = true
|
||||||
|
[gc]
|
||||||
|
reflogExpire = 90
|
||||||
|
writeCommitGraph = true
|
||||||
|
[receive]
|
||||||
|
advertisePushOptions = true
|
||||||
|
procReceiveRefs = refs/for
|
||||||
|
[fetch]
|
||||||
|
writeCommitGraph = true
|
||||||
|
[safe]
|
||||||
|
directory = *
|
||||||
|
[uploadpack]
|
||||||
|
allowfilter = true
|
||||||
|
allowAnySHA1InWant = true
|
||||||
|
[diff]
|
||||||
|
algorithm = histogram
|
||||||
Reference in New Issue
Block a user