База знаний (цифровой суверенитет)
  • Cockpit - мультисерверный вход по домену

    Перенесена
    Cockpit
    1 2 14

    A
    1,168
    0

    Изменения в конфиге Nginx


    Меняем содержимое конфига на следующий текст:

    server {
        listen 443 ssl http2;
        server_name my_domain.tld;  # Вставляем нужный домен
    
        # SSL сертификаты от Let's Encrypt
        ssl_certificate /etc/letsencrypt/live/my_domain.tld/fullchain.pem;  # Вставляем нужный домен
        ssl_certificate_key /etc/letsencrypt/live/my_domain.tld/privkey.pem;  # Вставляем нужный домен
    
        # Общие SSL настройки (рекомендуется для безопасности и производительности)
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
    
        # Пример для первого контейнера: https://my_domain.tld/vm1/
        location /vm1/ {
            proxy_pass https://localhost:9090/vm1/;  # IP и порт Cockpit в первом контейнере
    
            # Поддержка WebSocket (обязательно для Cockpit)
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    
            # Важные заголовки
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            
            # Ключевое для cookie и аутентификации в subpath
            proxy_cookie_path / /vm1/;
    
            # Отключаем буферизацию для мгновенной работы терминала
            proxy_buffering off;
            proxy_request_buffering off;
    
            # Таймауты для долгоживущих соединений (WebSocket)
            proxy_read_timeout 3600s;
            proxy_send_timeout 3600s;
            
            proxy_ssl_verify off;  # если self-signed в контейнере
        }
    
        # Пример для второго контейнера: https://my_domain.tld/vm2/
        location /vm2/ {
            proxy_pass https://10.155.64.245:9090/vm2/;  # Замените на реальный IP второго контейнера
    
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            
            # Ключевое для cookie и аутентификации в subpath
            proxy_cookie_path / /vm2/;
    
            proxy_buffering off;
            proxy_request_buffering off;
    
            proxy_read_timeout 3600s;
            proxy_send_timeout 3600s;
            
            proxy_ssl_verify off;  # если self-signed в контейнере
        }
    
        # Добавляйте новые location-блоки по аналогии для каждого нового контейнера
    
        # Опционально: редирект корня домена на страницу выбора или заглушку
        location = / {
            return 301 /vm1/;  # Или можно сделать простую страницу с ссылками
        }
    
        # Запрет доступа к скрытым файлам и служебным путям
        location ~ /\. {
            deny all;
        }
    }
    
    

    Названия подкаталогов выбираем самостоятельно, либо оставляем как есть - vm1, vm2, и т.д.


    sudo nginx -t
    sudo systemctl reload nginx
    
  • A
    1,168
    0

    Изменения в конфигах Cockpit


    В каждом LXC-контейнере (/etc/cockpit/cockpit.conf):

    Для первого:

    [WebService]
    Origins = https://my_domain.tld wss://my_domain.tld  # меняем на нужный домен
    ProtocolHeader = X-Forwarded-Proto
    AllowUnencrypted = true
    UrlRoot = /vm1   # Добавляем эту строку для первого сервера
    

    Для второго:

    [WebService]
    Origins = https://my_domain.tld wss://my_domain.tld  # меняем на нужный домен
    ProtocolHeader = X-Forwarded-Proto
    AllowUnencrypted = true
    UrlRoot = /vm2   # Добавляем эту строку для второго сервера
    

    Далее - для каждой системы с Cockpit

    systemctl restart cockpit
    
  • A Admin переместил эту тему из Cockpit в
  • A Admin переместил эту тему из в