4
homelab/gitea/.env.example
Normal file
4
homelab/gitea/.env.example
Normal file
@@ -0,0 +1,4 @@
|
||||
# Скопировать в .env и подставить токен после первой настройки Gitea.
|
||||
# Токен: Администрирование → Actions → Runners → Registration token.
|
||||
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN=
|
||||
138
homelab/gitea/README.md
Normal file
138
homelab/gitea/README.md
Normal file
@@ -0,0 +1,138 @@
|
||||
# Gitea + Gitea Actions на CT 103
|
||||
|
||||
LXC 103: 192.168.1.103, 1 core, 2 GB RAM, 15 GB диск (local-lvm).
|
||||
Доступ: только LAN, без домена.
|
||||
|
||||
## 1. Создание LXC 103 на Proxmox
|
||||
|
||||
Выполнять на хосте **192.168.1.150** (ssh root@192.168.1.150).
|
||||
|
||||
### 1.1. Шаблон (если ещё нет)
|
||||
|
||||
Проверить доступные шаблоны и при необходимости скачать Debian 12:
|
||||
|
||||
```bash
|
||||
pveam available | grep debian-12
|
||||
pveam download local debian-12-standard_12.7-1_amd64.tar.zst
|
||||
# или актуальный из списка pveam available
|
||||
pveam list local
|
||||
```
|
||||
|
||||
Имя шаблона для `pct create` — как в `pveam list local`, например: `local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst`.
|
||||
|
||||
### 1.2. Создать контейнер
|
||||
|
||||
**Важно:** шлюз `gw=192.168.1.1` — поправь, если у тебя другой (например роутер на .1).
|
||||
|
||||
```bash
|
||||
pct create 103 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
|
||||
--hostname gitea \
|
||||
--cores 1 \
|
||||
--memory 2048 \
|
||||
--swap 512 \
|
||||
--rootfs local-lvm:15 \
|
||||
--net0 name=eth0,bridge=vmbr0,ip=192.168.1.103/24,gw=192.168.1.1 \
|
||||
--features nesting=1 \
|
||||
--onboot 1 \
|
||||
--start 1
|
||||
```
|
||||
|
||||
`nesting=1` нужен для Docker внутри LXC.
|
||||
|
||||
### 1.3. Проверить хранилище
|
||||
|
||||
Если твоё хранилище называется иначе (не `local-lvm`):
|
||||
|
||||
```bash
|
||||
pvesm status
|
||||
```
|
||||
|
||||
Если корневой диск на другом storage — замени в команде `--rootfs local-lvm:15` на свой, например `--rootfs SSD:15`.
|
||||
|
||||
---
|
||||
|
||||
## 2. В контейнере 103: Docker и Gitea
|
||||
|
||||
### 2.1. Войти в контейнер
|
||||
|
||||
```bash
|
||||
pct enter 103
|
||||
```
|
||||
|
||||
### 2.2. Установить Docker
|
||||
|
||||
```bash
|
||||
apt update && apt install -y ca-certificates curl
|
||||
install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
|
||||
chmod a+r /etc/apt/keyrings/docker.asc
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable" > /etc/apt/sources.list.d/docker.list
|
||||
apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||
```
|
||||
|
||||
### 2.3. Развернуть Gitea
|
||||
|
||||
Файлы из репозитория (`homelab/gitea/`) нужно положить в контейнер в `/opt/gitea/`. С хоста Proxmox, если репо уже есть на хосте:
|
||||
|
||||
```bash
|
||||
pct exec 103 -- mkdir -p /opt/gitea
|
||||
pct push 103 /path/на/хосте/к/homelab/gitea/docker-compose-103.yml /opt/gitea/docker-compose.yml
|
||||
pct push 103 /path/на/хосте/к/homelab/gitea/.env.example /opt/gitea/.env.example
|
||||
```
|
||||
|
||||
В контейнере:
|
||||
|
||||
```bash
|
||||
mkdir -p /opt/gitea
|
||||
cd /opt/gitea
|
||||
# положить docker-compose-103.yml как docker-compose.yml и .env.example как .env
|
||||
cp .env.example .env
|
||||
# пока токен пустой — раннер не зарегистрируется, это нормально
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### 2.4. Первый запуск Gitea
|
||||
|
||||
1. В браузере: **http://192.168.1.103:3000**
|
||||
2. Пройти установку (админ, пароль, остальное по желанию).
|
||||
3. После входа: **Администрирование** → **Actions** → **Runners** → скопировать **Registration token**.
|
||||
4. В контейнере в `/opt/gitea/.env` прописать:
|
||||
```bash
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN=вставь_токен_сюда
|
||||
```
|
||||
5. Перезапустить раннер:
|
||||
```bash
|
||||
cd /opt/gitea && docker compose up -d runner
|
||||
```
|
||||
|
||||
Раннер должен появиться в **Actions → Runners** со статусом «Online».
|
||||
|
||||
---
|
||||
|
||||
## 3. Полезные команды (с хоста 192.168.1.150)
|
||||
|
||||
```bash
|
||||
pct enter 103
|
||||
pct exec 103 -- bash -c 'cd /opt/gitea && docker compose ps'
|
||||
pct exec 103 -- bash -c 'cd /opt/gitea && docker compose logs -f server'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Homepage (контейнер 100)
|
||||
|
||||
Добавить в `/opt/docker/homepage/config/services.yaml` запись для Gitea (в нужную группу), например:
|
||||
|
||||
```yaml
|
||||
- Gitea:
|
||||
icon: gitea.png
|
||||
href: http://192.168.1.103:3000
|
||||
description: Git-сервер (LAN)
|
||||
widget:
|
||||
type: iframe
|
||||
url: http://192.168.1.103:3000
|
||||
```
|
||||
|
||||
Иконку `gitea.png` при необходимости положить в каталог иконок Homepage.
|
||||
|
||||
Готовый фрагмент для вставки: [homepage-services-snippet.yaml](homepage-services-snippet.yaml).
|
||||
29
homelab/gitea/create-lxc-103.sh
Normal file
29
homelab/gitea/create-lxc-103.sh
Normal file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
# Создание LXC 103 для Gitea на Proxmox.
|
||||
# Запускать на хосте: ssh root@192.168.1.150 'bash -s' < create-lxc-103.sh
|
||||
# Или скопировать на хост и выполнить там.
|
||||
#
|
||||
# Перед запуском: скачать шаблон (если нет):
|
||||
# pveam download local debian-12-standard_12.7-1_amd64.tar.zst
|
||||
# pveam list local
|
||||
# Подставить актуальное имя шаблона в TEMPLATE ниже.
|
||||
# Поправить GW= если шлюз не 192.168.1.1.
|
||||
|
||||
set -e
|
||||
VMID=103
|
||||
TEMPLATE="local:vztmpl/debian-12-standard_12.12-1_amd64.tar.zst"
|
||||
GW="${GW:-192.168.1.1}"
|
||||
|
||||
echo "Creating CT ${VMID} (Gitea), template=${TEMPLATE}, gw=${GW}"
|
||||
pct create ${VMID} "${TEMPLATE}" \
|
||||
--hostname gitea \
|
||||
--cores 1 \
|
||||
--memory 2048 \
|
||||
--swap 512 \
|
||||
--rootfs local-lvm:15 \
|
||||
--net0 name=eth0,bridge=vmbr0,ip=192.168.1.103/24,gw="${GW}" \
|
||||
--features nesting=1 \
|
||||
--onboot 1 \
|
||||
--start 1
|
||||
|
||||
echo "CT ${VMID} created and started. Next: pct enter ${VMID}, install Docker, deploy compose (see README.md)."
|
||||
71
homelab/gitea/docker-compose-103.yml
Normal file
71
homelab/gitea/docker-compose-103.yml
Normal file
@@ -0,0 +1,71 @@
|
||||
# Gitea + PostgreSQL + act_runner (Gitea Actions)
|
||||
# Контейнер 103, IP 192.168.1.103
|
||||
# Запуск: в /opt/gitea на CT 103
|
||||
|
||||
services:
|
||||
db:
|
||||
image: docker.io/library/postgres:16-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: gitea
|
||||
POSTGRES_PASSWORD: gitea
|
||||
POSTGRES_DB: gitea
|
||||
volumes:
|
||||
- gitea-postgres:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U gitea"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
server:
|
||||
image: docker.gitea.com/gitea:1.25
|
||||
container_name: gitea
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
USER_UID: 1000
|
||||
USER_GID: 1000
|
||||
GITEA__database__DB_TYPE: postgres
|
||||
GITEA__database__HOST: db:5432
|
||||
GITEA__database__NAME: gitea
|
||||
GITEA__database__USER: gitea
|
||||
GITEA__database__PASSWD: gitea
|
||||
GITEA__server__DOMAIN: 192.168.1.103
|
||||
GITEA__server__ROOT_URL: http://192.168.1.103:3000/
|
||||
GITEA__server__SSH_PORT: 2222
|
||||
volumes:
|
||||
- gitea-data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "2222:22"
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:3000/"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
|
||||
runner:
|
||||
image: docker.io/gitea/act_runner:latest
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
server:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- runner-data:/data
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
environment:
|
||||
GITEA_INSTANCE_URL: http://server:3000
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN:-}
|
||||
GITEA_RUNNER_NAME: gitea-103-runner
|
||||
GITEA_RUNNER_LABELS: docker:docker://alpine:latest
|
||||
|
||||
volumes:
|
||||
gitea-data:
|
||||
gitea-postgres:
|
||||
runner-data:
|
||||
7
homelab/gitea/homepage-services-snippet.yaml
Normal file
7
homelab/gitea/homepage-services-snippet.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
# Вставить в /opt/docker/homepage/config/services.yaml на контейнере 100
|
||||
# в нужную группу (например «Разработка» или «Сервисы»).
|
||||
|
||||
- Gitea:
|
||||
icon: gitea.png
|
||||
href: http://192.168.1.103:3000
|
||||
description: Git-сервер и Gitea Actions (LAN)
|
||||
Reference in New Issue
Block a user