App catalog served from Gitea repos (app-catalog) with 35 apps. Nodes fetch catalog dynamically — new apps appear without frontend rebuild. Test app added and removed to verify pipeline. Gitea manifest updated with internal_port/nginx_proxy for iframe. Updated catalog.json, nginx configs, app session configs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
54 lines
1.4 KiB
YAML
54 lines
1.4 KiB
YAML
id: gitea
|
|
name: Gitea
|
|
version: "1.23"
|
|
description: Self-hosted Git service with built-in container registry, CI/CD, and package hosting.
|
|
category: development
|
|
icon: git-branch
|
|
port: 3000
|
|
internal_port: 3001
|
|
ssh_port: 2222
|
|
image: docker.io/gitea/gitea:1.23
|
|
tier: optional
|
|
|
|
requires:
|
|
memory_mb: 256
|
|
disk_mb: 500
|
|
|
|
volumes:
|
|
- host: /var/lib/archipelago/gitea/data
|
|
container: /data
|
|
- host: /var/lib/archipelago/gitea/config
|
|
container: /etc/gitea
|
|
|
|
environment:
|
|
GITEA__database__DB_TYPE: sqlite3
|
|
GITEA__server__SSH_PORT: "2222"
|
|
GITEA__server__SSH_LISTEN_PORT: "22"
|
|
GITEA__server__LFS_START_SERVER: "true"
|
|
GITEA__packages__ENABLED: "true"
|
|
GITEA__repository__ENABLE_PUSH_CREATE_USER: "true"
|
|
GITEA__repository__ENABLE_PUSH_CREATE_ORG: "true"
|
|
|
|
# Gitea hardcodes X-Frame-Options: SAMEORIGIN which blocks iframe embedding.
|
|
# Container binds to internal_port (3001), nginx proxies public port (3000)
|
|
# stripping the X-Frame-Options header so the app works in Archipelago's iframe.
|
|
nginx_proxy:
|
|
listen: 3000
|
|
proxy_pass: "http://127.0.0.1:3001"
|
|
extra_headers:
|
|
- "proxy_hide_header X-Frame-Options"
|
|
- "proxy_hide_header Content-Security-Policy"
|
|
|
|
health_check:
|
|
endpoint: /
|
|
interval: 120
|
|
timeout: 5
|
|
retries: 3
|
|
|
|
features:
|
|
- Git repositories with web UI
|
|
- Built-in container/package registry
|
|
- Issue tracking and pull requests
|
|
- CI/CD via Gitea Actions
|
|
- Lightweight (SQLite, no external DB needed)
|