vault backup: 2025-08-04 12:49:10
This commit is contained in:
148
Мой сервер/Инфраструктура/Развертывание.md
Normal file
148
Мой сервер/Инфраструктура/Развертывание.md
Normal file
@@ -0,0 +1,148 @@
|
||||
## Предварительные требования
|
||||
|
||||
### Системные требования
|
||||
- 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=$(
|
||||
Reference in New Issue
Block a user