Corestone

Panel przez HTTPS

Panel mówi zwykłym HTTP na własnym porcie. Żeby używać go spoza swojego komputera, postaw przed nim reverse proxy z HTTPS i pozwól tylko temu proxy łączyć się z portem panelu.

1. Skieruj panel na proxy

W config.yml:

web:
  host: 127.0.0.1        # tylko proxy na tym komputerze dostanie się do panelu
  port: 8080
  public-url: "https://panel.example.com"

Gdy na tym hoście nic innego nie działa już na zwykłym http (np. plugin z mapą na innym porcie), możesz też ustawić hsts: true: przeglądarki przez rok nie spróbują tam już zwykłego http.

Zrestartuj serwer: zmiany web.* wymagają restartu. public-url służy do linków, które pokazuje plugin (konfiguracja, zaproszenia, linki do resetu, przyciski zgłoszeń w grze). To sam adres, schemat i host (oraz port, jeśli potrzebny), bez ścieżki i bez końcowego /.

2. Caddy

Caddy sam zdobywa i odnawia certyfikat.

panel.example.com {
	reverse_proxy 127.0.0.1:8080
}

3. Nginx

server {
    listen 443 ssl;
    server_name panel.example.com;
    # ssl_certificate i ssl_certificate_key z twojego certyfikatu (np. certbot)

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        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;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Linie z Upgrade utrzymują działanie części panelu na żywo (pulpit, czat, konsola).

4. Zaufaj proxy

W panelu, w Ustawienia → Serwer → Bezpieczeństwo → Zaufane proxy, dodaj adres proxy (dla proxy na tym samym komputerze: 127.0.0.1/32). Dopiero wtedy panel wierzy nagłówkom X-Forwarded-*, które wysyła proxy. Bez tego:

  • każdy odwiedzający wygląda jak proxy: lista sesji, dziennik zdarzeń i biała lista IP widzą adres proxy, więc biała lista nie odróżni odwiedzających;
  • panel nie wie, że odwiedzający przyszedł przez HTTPS, więc jego ciasteczka nie mają flagi Secure, a linki, które buduje, zaczynają się od http://;
  • części panelu na żywo (pulpit, czat, konsola) mogą odmówić połączenia, bo adres w przeglądarce nie zgadza się z tym, co widzi panel.

Limity logowania liczą się na konto, więc zaufanie proxy ich nie zmienia.

5. Opcjonalnie: biała lista IP

Ustawienia → Serwer → Bezpieczeństwo → Whitelista IP pozwala otwierać panel tylko z podanych adresów lub zakresów (203.0.113.0/24). Panel odmawia zapisania listy, która by cię zablokowała, chyba że to potwierdzisz. Jeśli mimo to się zablokujesz, wpisz /ac whitelist off w konsoli serwera.

Pod ścieżką

Żeby panel działał pod ścieżką wspólnej domeny (https://example.com/panel/):

web:
  base-path: /panel
  public-url: "https://example.com"   # sam adres; ścieżka pochodzi z base-path

Przekaż tę ścieżkę na port panelu z zachowaną ścieżką: panel oczekuje, że żądania zaczynają się od /panel. W Caddy użyj handle, nie handle_path (który ścieżkę obcina):

example.com {
	handle /panel* {
		reverse_proxy 127.0.0.1:8080
	}
}

W Nginx location /panel/ { proxy_pass http://127.0.0.1:8080; ... } bez ścieżki po porcie ją zachowuje.