Files
second-mind-aep/Мой сервер/Инфраструктура/Развертывание.md
2025-08-04 12:49:10 +04:00

148 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Предварительные требования
### Системные требования
- Ubuntu/Debian сервер с минимум 2GB RAM
- Docker и Docker Compose установлены
- Открыты порты: 80, 443, 2222, 8080
- Настроены DNS записи для поддоменов
### Подготовка DNS
Создайте A-записи для всех поддоменов:
```dns
traefik.aepif.ru IN A YOUR_SERVER_IP
auth.aepif.ru IN A YOUR_SERVER_IP
notes.aepif.ru IN A YOUR_SERVER_IP
git.aepif.ru IN A YOUR_SERVER_IP
webhook.aepif.ru IN A YOUR_SERVER_IP
```
## Порядок развертывания
⚠️ **Важно**: Инфраструктурные сервисы должны быть развернуты **первыми**, так как все остальные приложения зависят от них.
### Последовательность установки:
1. **Traefik Reverse Proxy** (сначала)
2. **Authelia Authentication** (после Traefik)
3. **Second Mind** (после обеих частей инфраструктуры)
## 1. Развертывание Traefik
### Подготовка директорий
```bash
# Создание директории проекта
mkdir -p /DOCKER/reverse-proxy
cd /DOCKER/reverse-proxy
# Создание volume для данных Traefik
docker volume create traefik_data
```
### Создание .env файла
```bash
cat > .env << 'EOF'
DOMAIN=aepif.ru
ADMIN_EMAIL=epifantsev1aa@gmail.com
EOF
```
### Создание docker-compose.yml
```bash
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
traefik:
image: traefik:v3.0
container_name: traefik
command:
- --api.dashboard=true
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --providers.docker.network=proxy
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.ssh.address=:2222
- --certificatesresolvers.letsencrypt.acme.email=epifantsev1aa@gmail.com
- --certificatesresolvers.letsencrypt.acme.storage=/data/acme.json
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
- --providers.docker.exposedByDefault=false
- --api.insecure=true
ports:
- "80:80"
- "443:443"
- "8080:8080"
- "2222:2222"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik_data:/data
networks:
- proxy
labels:
- traefik.enable=true
- traefik.http.routers.traefik.rule=Host(`traefik.aepif.ru`)
- traefik.http.routers.traefik.tls.certresolver=letsencrypt
- traefik.http.routers.traefik.service=api@internal
- traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
- traefik.http.routers.http-catchall.entrypoints=web
- traefik.http.routers.http-catchall.middlewares=redirect-to-https
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
restart: unless-stopped
volumes:
traefik_data:
networks:
proxy:
name: proxy
driver: bridge
EOF
```
### Создание сети и запуск
```bash
# Создание внешней сети proxy
docker network create proxy
# Запуск Traefik
docker-compose up -d
# Проверка статуса
docker-compose ps
docker-compose logs -f
```
### Проверка работы Traefik
```bash
# Проверка HTTP → HTTPS редиректа
curl -I http://traefik.aepif.ru
# Проверка HTTPS
curl -I https://traefik.aepif.ru
# Проверка dashboard (должен быть доступен)
curl -I https://traefik.aepif.ru/dashboard/
```
## 2. Развертывание Authelia
### Подготовка директорий
```bash
# Создание директории проекта
mkdir -p /DOCKER/auth/authelia
cd /DOCKER/auth
```
### Генерация секретов
```bash
# Генерация всех необходимых секретов
JWT_SECRET=$(openssl rand -base64 48)
SESSION_SECRET=$(openssl rand -base64 48)
STORAGE_KEY=$(openssl rand -base64 24)
REDIS_PASSWORD=$(