Compare commits
3 Commits
cf71fb3a8d
...
90bbcd97b1
| Author | SHA1 | Date | |
|---|---|---|---|
| 90bbcd97b1 | |||
| 1be7122251 | |||
| 467e79c84b |
211
docs/gitea-email-troubleshooting.md
Normal file
211
docs/gitea-email-troubleshooting.md
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
# Gitea Email Configuration Troubleshooting
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
Attempted to configure Gitea email functionality using Titan Email (Hostinger) SMTP service. Email sending is currently **non-functional** due to SMTP authentication rejection by Titan Email servers.
|
||||||
|
|
||||||
|
## Configuration Details
|
||||||
|
|
||||||
|
### Email Provider
|
||||||
|
- **Provider:** Titan Email (by Hostinger)
|
||||||
|
- **Account:** hello@jnss.me
|
||||||
|
- **SMTP Server:** smtp.titan.email
|
||||||
|
- **Ports Tested:** 587 (STARTTLS), 465 (SSL/TLS)
|
||||||
|
|
||||||
|
### Gitea Configuration
|
||||||
|
```ini
|
||||||
|
[mailer]
|
||||||
|
ENABLED = true
|
||||||
|
PROTOCOL = smtp+starttls
|
||||||
|
SMTP_ADDR = smtp.titan.email
|
||||||
|
SMTP_PORT = 587
|
||||||
|
FROM = hello@jnss.me
|
||||||
|
USER = hello@jnss.me
|
||||||
|
PASSWD = <vault_gitea_smtp_password>
|
||||||
|
SUBJECT_PREFIX = [Gitea]
|
||||||
|
SEND_AS_PLAIN_TEXT = false
|
||||||
|
SMTP_AUTH = PLAIN
|
||||||
|
```
|
||||||
|
|
||||||
|
## Issue Description
|
||||||
|
|
||||||
|
Gitea fails to send emails with the following error:
|
||||||
|
```
|
||||||
|
Failed to send emails: failed to authenticate SMTP: 535 5.7.8 Error: authentication failed
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting Performed
|
||||||
|
|
||||||
|
### 1. Credential Verification
|
||||||
|
- ✅ **Webmail access:** Successfully logged into https://mail.titan.email/ with credentials
|
||||||
|
- ✅ **Send/Receive:** Can send and receive emails through webmail interface
|
||||||
|
- ✅ **Password confirmed:** Tested multiple times, credentials are correct
|
||||||
|
|
||||||
|
### 2. SMTP Connectivity Tests
|
||||||
|
- ✅ **Port 587 (STARTTLS):** Connection successful, TLS upgrade successful
|
||||||
|
- ✅ **Port 465 (SSL/TLS):** Connection successful with implicit TLS
|
||||||
|
- ✅ **DNS Resolution:** smtp.titan.email resolves correctly to multiple IPs
|
||||||
|
|
||||||
|
### 3. Authentication Method Testing
|
||||||
|
|
||||||
|
**Manual SMTP tests from VPS (69.62.119.31):**
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Test Results:
|
||||||
|
AUTH PLAIN: ❌ 535 5.7.8 Error: authentication failed
|
||||||
|
AUTH LOGIN: ❌ 535 5.7.8 Error: authentication failed
|
||||||
|
```
|
||||||
|
|
||||||
|
**Both authentication methods rejected by server despite correct credentials.**
|
||||||
|
|
||||||
|
### 4. Configuration Iterations Tested
|
||||||
|
|
||||||
|
#### Iteration 1: Port 465 with smtps
|
||||||
|
```ini
|
||||||
|
PROTOCOL = smtps
|
||||||
|
SMTP_PORT = 465
|
||||||
|
```
|
||||||
|
**Result:** Authentication failed (535)
|
||||||
|
|
||||||
|
#### Iteration 2: Port 587 with smtp+starttls
|
||||||
|
```ini
|
||||||
|
PROTOCOL = smtp+starttls
|
||||||
|
SMTP_PORT = 587
|
||||||
|
```
|
||||||
|
**Result:** Authentication failed (535)
|
||||||
|
|
||||||
|
#### Iteration 3: Explicit AUTH PLAIN
|
||||||
|
```ini
|
||||||
|
PROTOCOL = smtp+starttls
|
||||||
|
SMTP_PORT = 587
|
||||||
|
SMTP_AUTH = PLAIN
|
||||||
|
```
|
||||||
|
**Result:** Authentication failed (535)
|
||||||
|
|
||||||
|
#### Iteration 4: Removed conflicting TLS settings
|
||||||
|
Removed:
|
||||||
|
- `ENABLE_TLS = true` (conflicted with PROTOCOL)
|
||||||
|
- `SKIP_VERIFY = false` (deprecated)
|
||||||
|
|
||||||
|
**Result:** Authentication still failed (535)
|
||||||
|
|
||||||
|
### 5. Debug Output Analysis
|
||||||
|
|
||||||
|
SMTP conversation debug output revealed:
|
||||||
|
```
|
||||||
|
send: 'AUTH PLAIN AGhlbGxvQGpuc3MubWUASGVsbG8xMjMh\r\n'
|
||||||
|
reply: b'535 5.7.8 Error: authentication failed: \r\n'
|
||||||
|
|
||||||
|
send: 'AUTH LOGIN aGVsbG8Aam5zcy5tZQ==\r\n'
|
||||||
|
reply: b'334 UGFzc3dvcmQ6\r\n'
|
||||||
|
send: 'SGVsbG8xMjMh\r\n'
|
||||||
|
reply: b'535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6\r\n'
|
||||||
|
```
|
||||||
|
|
||||||
|
**Analysis:** Server accepts both AUTH PLAIN and AUTH LOGIN in EHLO response but rejects actual authentication attempts for both methods.
|
||||||
|
|
||||||
|
## Root Cause Analysis
|
||||||
|
|
||||||
|
### What Works
|
||||||
|
- ✅ SMTP server connectivity (both ports)
|
||||||
|
- ✅ TLS/STARTTLS negotiation
|
||||||
|
- ✅ Webmail authentication with same credentials
|
||||||
|
- ✅ Email sending through webmail
|
||||||
|
|
||||||
|
### What Doesn't Work
|
||||||
|
- ❌ SMTP AUTH PLAIN from VPS
|
||||||
|
- ❌ SMTP AUTH LOGIN from VPS
|
||||||
|
- ❌ Both fail with identical error: 535 5.7.8
|
||||||
|
|
||||||
|
### Conclusion
|
||||||
|
|
||||||
|
**The issue is NOT a Gitea configuration problem.** The SMTP server is actively rejecting authentication attempts despite:
|
||||||
|
- Correct credentials (verified in webmail)
|
||||||
|
- Proper TLS establishment
|
||||||
|
- Correct authentication protocol usage
|
||||||
|
|
||||||
|
## Possible Causes
|
||||||
|
|
||||||
|
1. **SMTP Access Disabled:** Titan Email may require SMTP/IMAP access to be explicitly enabled in Hostinger control panel or Titan settings
|
||||||
|
2. **IP-Based Restrictions:** VPS IP (69.62.119.31) may be blocked or require whitelisting
|
||||||
|
3. **Account Verification Required:** Account may need additional verification for SMTP access
|
||||||
|
4. **Service-Level Restriction:** Titan Email plan may not include SMTP access for external applications
|
||||||
|
5. **Missing Activation:** SMTP feature may require separate activation from webmail access
|
||||||
|
|
||||||
|
## Attempted Solutions
|
||||||
|
|
||||||
|
### Configuration Changes
|
||||||
|
- [x] Tested both port 587 (STARTTLS) and 465 (SSL/TLS)
|
||||||
|
- [x] Tried AUTH PLAIN and AUTH LOGIN methods
|
||||||
|
- [x] Removed conflicting TLS settings (ENABLE_TLS, SKIP_VERIFY)
|
||||||
|
- [x] Updated password in vault and redeployed
|
||||||
|
- [x] Verified minimal clean configuration
|
||||||
|
|
||||||
|
### External Tests
|
||||||
|
- [ ] Test SMTP from different IP (local machine vs VPS)
|
||||||
|
- [ ] Check Hostinger control panel for SMTP toggle
|
||||||
|
- [ ] Contact Hostinger/Titan support
|
||||||
|
- [ ] Verify account has SMTP privileges
|
||||||
|
|
||||||
|
## Recommendations
|
||||||
|
|
||||||
|
### Immediate Next Steps
|
||||||
|
1. **Check Hostinger Control Panel:**
|
||||||
|
- Log into hpanel.hostinger.com
|
||||||
|
- Navigate to Emails → hello@jnss.me
|
||||||
|
- Look for SMTP/IMAP access toggle or settings
|
||||||
|
|
||||||
|
2. **Test from Different IP:**
|
||||||
|
- Test SMTP authentication from local machine
|
||||||
|
- If successful: IP blocking issue (request VPS IP whitelist)
|
||||||
|
- If failed: Account-level restriction
|
||||||
|
|
||||||
|
3. **Contact Support:**
|
||||||
|
- Provide error: "535 5.7.8 authentication failed"
|
||||||
|
- Request SMTP access verification for hello@jnss.me
|
||||||
|
- Ask if SMTP requires separate activation
|
||||||
|
|
||||||
|
### Alternative Email Solutions
|
||||||
|
|
||||||
|
If Titan Email SMTP cannot be resolved:
|
||||||
|
|
||||||
|
1. **Use Different Email Provider:**
|
||||||
|
- Gmail (with App Passwords)
|
||||||
|
- SendGrid (free tier: 100 emails/day)
|
||||||
|
- Mailgun (free tier: 5,000 emails/month)
|
||||||
|
- AWS SES (free tier: 62,000 emails/month)
|
||||||
|
|
||||||
|
2. **Use Local Mail Server:**
|
||||||
|
- Install Postfix on VPS
|
||||||
|
- Configure as relay
|
||||||
|
- More complex but full control
|
||||||
|
|
||||||
|
3. **Disable Email Features:**
|
||||||
|
- Set `ENABLED = false` in [mailer]
|
||||||
|
- OAuth account linking won't work
|
||||||
|
- Password reset requires admin intervention
|
||||||
|
- No email notifications
|
||||||
|
|
||||||
|
## Current Status
|
||||||
|
|
||||||
|
**Email functionality: DISABLED**
|
||||||
|
|
||||||
|
Configuration is correct but non-functional due to SMTP authentication rejection by Titan Email servers.
|
||||||
|
|
||||||
|
## Files Modified
|
||||||
|
|
||||||
|
- `roles/gitea/defaults/main.yml` - Email configuration variables
|
||||||
|
- `roles/gitea/templates/app.ini.j2` - Mailer section configuration
|
||||||
|
- `host_vars/arch-vps/vault.yml` - SMTP password
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
- Gitea Mailer Documentation: https://docs.gitea.com/administration/config-cheat-sheet#mailer-mailer
|
||||||
|
- SMTP Error Codes: https://www.greenend.org.uk/rjk/tech/smtpreplies.html
|
||||||
|
- Titan Email Settings: https://support.hostinger.com/en/collections/3363865-titan-email
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Date:** 2025-12-19
|
||||||
|
**Investigated by:** OpenCode AI Assistant
|
||||||
|
**Status:** Unresolved - Awaiting Titan Email SMTP access verification
|
||||||
@@ -6,6 +6,8 @@
|
|||||||
- [ ] What gets served on jnss.me?
|
- [ ] What gets served on jnss.me?
|
||||||
- [ ] Backups
|
- [ ] Backups
|
||||||
|
|
||||||
|
- [ ] Vaultvarden
|
||||||
|
|
||||||
- [ ] Configure and set up Nextcloud
|
- [ ] Configure and set up Nextcloud
|
||||||
- [ ] OAuth
|
- [ ] OAuth
|
||||||
- [ ] Settings
|
- [ ] Settings
|
||||||
@@ -14,6 +16,7 @@
|
|||||||
|
|
||||||
- [x] Gitea
|
- [x] Gitea
|
||||||
- [x] SSH passthrough setup
|
- [x] SSH passthrough setup
|
||||||
|
- [x] Figure out how to disable registration and local password
|
||||||
|
|
||||||
- [ ] Authentik Invitations for users?
|
- [ ] Authentik Invitations for users?
|
||||||
|
|
||||||
|
|||||||
@@ -57,9 +57,100 @@ gitea_run_mode: "prod"
|
|||||||
gitea_default_branch: "main"
|
gitea_default_branch: "main"
|
||||||
gitea_enable_lfs: true
|
gitea_enable_lfs: true
|
||||||
|
|
||||||
# Security settings
|
# =================================================================
|
||||||
gitea_disable_registration: false
|
# Private Git Server & OAuth Configuration
|
||||||
gitea_require_signin: false
|
# =================================================================
|
||||||
|
|
||||||
|
# Access Control - Private server with public repos allowed
|
||||||
|
gitea_disable_registration: true # No public registration (admin only)
|
||||||
|
gitea_require_signin: true # Require sign-in (unauthorized users read-only)
|
||||||
|
gitea_show_registration_button: false # Hide registration UI
|
||||||
|
|
||||||
|
# OAuth Configuration - Preferred but not forced
|
||||||
|
gitea_enable_password_signin: false # Hide password login form
|
||||||
|
gitea_enable_basic_auth: true # Keep password API auth as backup
|
||||||
|
gitea_oauth2_auto_registration: true # Auto-create OAuth users
|
||||||
|
gitea_oauth2_account_linking: "login" # Show account linking page
|
||||||
|
gitea_oauth2_username_source: "preferred_username"
|
||||||
|
gitea_oauth2_update_avatar: true
|
||||||
|
gitea_oauth2_scopes: "profile,email,groups"
|
||||||
|
gitea_oauth2_register_email_confirm: false
|
||||||
|
|
||||||
|
# =================================================================
|
||||||
|
# Email Configuration (Titan Email via Hostinger)
|
||||||
|
# =================================================================
|
||||||
|
|
||||||
|
gitea_mailer_enabled: true
|
||||||
|
gitea_mailer_protocol: "smtp+starttls" # Port 587 with STARTTLS
|
||||||
|
gitea_smtp_addr: "smtp.titan.email"
|
||||||
|
gitea_smtp_port: 587
|
||||||
|
gitea_mailer_from: "hello@jnss.me"
|
||||||
|
gitea_mailer_user: "hello@jnss.me"
|
||||||
|
gitea_mailer_password: "{{ vault_gitea_smtp_password }}"
|
||||||
|
gitea_mailer_subject_prefix: "[Gitea]"
|
||||||
|
|
||||||
|
# =================================================================
|
||||||
|
# Enhanced Security Settings
|
||||||
|
# =================================================================
|
||||||
|
|
||||||
|
# Session Security
|
||||||
|
gitea_session_provider: "file"
|
||||||
|
gitea_session_cookie_name: "gitea_session"
|
||||||
|
gitea_session_life_time: 3600 # 1 hour
|
||||||
|
gitea_cookie_secure: true # HTTPS-only cookies
|
||||||
|
gitea_session_same_site: "strict" # Strict CSRF protection
|
||||||
|
|
||||||
|
# Security Hardening
|
||||||
|
gitea_csrf_cookie_httponly: true # Prevent XSS on CSRF token
|
||||||
|
gitea_password_check_pwn: true # Check password breach database
|
||||||
|
gitea_reverse_proxy_limit: 1 # Trust only one proxy (Caddy)
|
||||||
|
gitea_reverse_proxy_trusted_proxies: "127.0.0.0/8,::1/128"
|
||||||
|
|
||||||
|
# =================================================================
|
||||||
|
# Repository Configuration
|
||||||
|
# =================================================================
|
||||||
|
|
||||||
|
# Privacy Defaults (private by default, public allowed)
|
||||||
|
gitea_default_private: "private" # New repos are private
|
||||||
|
gitea_default_push_create_private: true # Push-created repos are private
|
||||||
|
# Note: NOT setting gitea_force_private - allows public repos
|
||||||
|
|
||||||
|
# Repository Features
|
||||||
|
gitea_disabled_repo_units: "repo.ext_issues,repo.ext_wiki"
|
||||||
|
gitea_enable_push_create_user: false # Require manual repo creation
|
||||||
|
gitea_enable_push_create_org: false
|
||||||
|
|
||||||
|
# =================================================================
|
||||||
|
# Features & Capabilities
|
||||||
|
# =================================================================
|
||||||
|
|
||||||
|
# CI/CD Actions
|
||||||
|
gitea_actions_enabled: true # Enable Gitea Actions
|
||||||
|
gitea_actions_default_url: "github" # Use GitHub actions
|
||||||
|
gitea_actions_log_retention_days: 90
|
||||||
|
gitea_actions_artifact_retention_days: 30
|
||||||
|
|
||||||
|
# Repository Mirroring
|
||||||
|
gitea_mirror_enabled: true
|
||||||
|
gitea_mirror_default_interval: "8h"
|
||||||
|
gitea_mirror_min_interval: "1h"
|
||||||
|
|
||||||
|
# Organization & User Management
|
||||||
|
gitea_allow_create_org: true # Users can create orgs
|
||||||
|
|
||||||
|
# API Configuration
|
||||||
|
gitea_api_swagger_enabled: false # Disable API docs
|
||||||
|
|
||||||
|
# Webhook Security
|
||||||
|
gitea_webhook_allowed_hosts: "private,loopback"
|
||||||
|
gitea_webhook_skip_tls_verify: false
|
||||||
|
gitea_webhook_deliver_timeout: 5
|
||||||
|
|
||||||
|
# =================================================================
|
||||||
|
# Service Explore Configuration
|
||||||
|
# =================================================================
|
||||||
|
|
||||||
|
gitea_explore_require_signin: false # Allow browsing public content
|
||||||
|
|
||||||
# =================================================================
|
# =================================================================
|
||||||
# SSH Mode Configuration
|
# SSH Mode Configuration
|
||||||
|
|||||||
@@ -6,9 +6,19 @@ APP_NAME = {{ gitea_app_name }}
|
|||||||
RUN_MODE = {{ gitea_run_mode }}
|
RUN_MODE = {{ gitea_run_mode }}
|
||||||
|
|
||||||
[repository]
|
[repository]
|
||||||
|
# === Repository Storage ===
|
||||||
ROOT = {{ gitea_home }}/repositories
|
ROOT = {{ gitea_home }}/repositories
|
||||||
DEFAULT_BRANCH = {{ gitea_default_branch }}
|
DEFAULT_BRANCH = {{ gitea_default_branch }}
|
||||||
|
|
||||||
|
# === Privacy Defaults ===
|
||||||
|
DEFAULT_PRIVATE = {{ gitea_default_private }}
|
||||||
|
DEFAULT_PUSH_CREATE_PRIVATE = {{ gitea_default_push_create_private | lower }}
|
||||||
|
|
||||||
|
# === Repository Features ===
|
||||||
|
DISABLED_REPO_UNITS = {{ gitea_disabled_repo_units }}
|
||||||
|
ENABLE_PUSH_CREATE_USER = {{ gitea_enable_push_create_user | lower }}
|
||||||
|
ENABLE_PUSH_CREATE_ORG = {{ gitea_enable_push_create_org | lower }}
|
||||||
|
|
||||||
[server]
|
[server]
|
||||||
PROTOCOL = http
|
PROTOCOL = http
|
||||||
DOMAIN = {{ gitea_http_domain }}
|
DOMAIN = {{ gitea_http_domain }}
|
||||||
@@ -41,17 +51,63 @@ SSL_MODE = disable
|
|||||||
CHARSET = utf8
|
CHARSET = utf8
|
||||||
|
|
||||||
[security]
|
[security]
|
||||||
|
# === Core Security ===
|
||||||
INSTALL_LOCK = true
|
INSTALL_LOCK = true
|
||||||
SECRET_KEY = {{ ansible_machine_id }}{{ gitea_db_password | hash('sha256') }}
|
SECRET_KEY = {{ ansible_machine_id }}{{ gitea_db_password | hash('sha256') }}
|
||||||
INTERNAL_TOKEN = {{ (ansible_machine_id + gitea_db_password) | hash('sha256') }}
|
INTERNAL_TOKEN = {{ (ansible_machine_id + gitea_db_password) | hash('sha256') }}
|
||||||
|
|
||||||
|
# === Enhanced Security ===
|
||||||
|
CSRF_COOKIE_HTTP_ONLY = {{ gitea_csrf_cookie_httponly | lower }}
|
||||||
|
PASSWORD_CHECK_PWN = {{ gitea_password_check_pwn | lower }}
|
||||||
|
REVERSE_PROXY_LIMIT = {{ gitea_reverse_proxy_limit }}
|
||||||
|
REVERSE_PROXY_TRUSTED_PROXIES = {{ gitea_reverse_proxy_trusted_proxies }}
|
||||||
|
|
||||||
[service]
|
[service]
|
||||||
|
# === Access Control ===
|
||||||
DISABLE_REGISTRATION = {{ gitea_disable_registration | lower }}
|
DISABLE_REGISTRATION = {{ gitea_disable_registration | lower }}
|
||||||
REQUIRE_SIGNIN_VIEW = {{ gitea_require_signin | lower }}
|
REQUIRE_SIGNIN_VIEW = {{ gitea_require_signin | lower }}
|
||||||
|
SHOW_REGISTRATION_BUTTON = {{ gitea_show_registration_button | lower }}
|
||||||
|
|
||||||
|
# === OAuth Configuration ===
|
||||||
|
ENABLE_PASSWORD_SIGNIN_FORM = {{ gitea_enable_password_signin | lower }}
|
||||||
|
ENABLE_BASIC_AUTHENTICATION = {{ gitea_enable_basic_auth | lower }}
|
||||||
|
|
||||||
|
# === Defaults ===
|
||||||
DEFAULT_KEEP_EMAIL_PRIVATE = true
|
DEFAULT_KEEP_EMAIL_PRIVATE = true
|
||||||
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
|
DEFAULT_ALLOW_CREATE_ORGANIZATION = {{ gitea_allow_create_org | lower }}
|
||||||
NO_REPLY_ADDRESS = noreply@{{ gitea_http_domain }}
|
NO_REPLY_ADDRESS = noreply@{{ gitea_http_domain }}
|
||||||
|
|
||||||
|
[oauth2_client]
|
||||||
|
# === Authentik OAuth Integration ===
|
||||||
|
ENABLE_AUTO_REGISTRATION = {{ gitea_oauth2_auto_registration | lower }}
|
||||||
|
ACCOUNT_LINKING = {{ gitea_oauth2_account_linking }}
|
||||||
|
USERNAME = {{ gitea_oauth2_username_source }}
|
||||||
|
UPDATE_AVATAR = {{ gitea_oauth2_update_avatar | lower }}
|
||||||
|
OPENID_CONNECT_SCOPES = {{ gitea_oauth2_scopes }}
|
||||||
|
REGISTER_EMAIL_CONFIRM = {{ gitea_oauth2_register_email_confirm | lower }}
|
||||||
|
|
||||||
|
[mailer]
|
||||||
|
ENABLED = {{ gitea_mailer_enabled | lower }}
|
||||||
|
{% if gitea_mailer_enabled %}
|
||||||
|
PROTOCOL = {{ gitea_mailer_protocol }}
|
||||||
|
SMTP_ADDR = {{ gitea_smtp_addr }}
|
||||||
|
SMTP_PORT = {{ gitea_smtp_port }}
|
||||||
|
FROM = {{ gitea_mailer_from }}
|
||||||
|
USER = {{ gitea_mailer_user }}
|
||||||
|
PASSWD = {{ gitea_mailer_password }}
|
||||||
|
SUBJECT_PREFIX = {{ gitea_mailer_subject_prefix }}
|
||||||
|
SEND_AS_PLAIN_TEXT = false
|
||||||
|
SMTP_AUTH = PLAIN
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[session]
|
||||||
|
# === Session Security ===
|
||||||
|
PROVIDER = {{ gitea_session_provider }}
|
||||||
|
COOKIE_NAME = {{ gitea_session_cookie_name }}
|
||||||
|
COOKIE_SECURE = {{ gitea_cookie_secure | lower }}
|
||||||
|
SESSION_LIFE_TIME = {{ gitea_session_life_time }}
|
||||||
|
SAME_SITE = {{ gitea_session_same_site }}
|
||||||
|
|
||||||
[log]
|
[log]
|
||||||
MODE = console
|
MODE = console
|
||||||
LEVEL = Info
|
LEVEL = Info
|
||||||
@@ -66,4 +122,37 @@ CONTENT_PATH = {{ gitea_home }}/data/lfs
|
|||||||
[git]
|
[git]
|
||||||
PATH = /usr/bin/git
|
PATH = /usr/bin/git
|
||||||
|
|
||||||
# Rick-Infra: Simplified Gitea configuration for self-contained service
|
[actions]
|
||||||
|
# === CI/CD Configuration ===
|
||||||
|
ENABLED = {{ gitea_actions_enabled | lower }}
|
||||||
|
{% if gitea_actions_enabled %}
|
||||||
|
DEFAULT_ACTIONS_URL = {{ gitea_actions_default_url }}
|
||||||
|
LOG_RETENTION_DAYS = {{ gitea_actions_log_retention_days }}
|
||||||
|
ARTIFACT_RETENTION_DAYS = {{ gitea_actions_artifact_retention_days }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[mirror]
|
||||||
|
# === Repository Mirroring ===
|
||||||
|
ENABLED = {{ gitea_mirror_enabled | lower }}
|
||||||
|
DISABLE_NEW_PULL = false
|
||||||
|
DISABLE_NEW_PUSH = false
|
||||||
|
DEFAULT_INTERVAL = {{ gitea_mirror_default_interval }}
|
||||||
|
MIN_INTERVAL = {{ gitea_mirror_min_interval }}
|
||||||
|
|
||||||
|
[api]
|
||||||
|
# === API Configuration ===
|
||||||
|
ENABLE_SWAGGER = {{ gitea_api_swagger_enabled | lower }}
|
||||||
|
MAX_RESPONSE_ITEMS = 50
|
||||||
|
DEFAULT_PAGING_NUM = 30
|
||||||
|
|
||||||
|
[webhook]
|
||||||
|
# === Webhook Security ===
|
||||||
|
ALLOWED_HOST_LIST = {{ gitea_webhook_allowed_hosts }}
|
||||||
|
SKIP_TLS_VERIFY = {{ gitea_webhook_skip_tls_verify | lower }}
|
||||||
|
DELIVER_TIMEOUT = {{ gitea_webhook_deliver_timeout }}
|
||||||
|
|
||||||
|
[service.explore]
|
||||||
|
# === Public Content Exploration ===
|
||||||
|
REQUIRE_SIGNIN_VIEW = {{ gitea_explore_require_signin | lower }}
|
||||||
|
|
||||||
|
# Rick-Infra: Private Gitea configuration with OAuth and email support
|
||||||
|
|||||||
Reference in New Issue
Block a user