Dlaczego firmy tego chcą
Serwer odcięty od internetu to mniejsza powierzchnia ataku i prostsza odpowiedź na pytanie, gdzie są dane. Tak często działają systemy z danymi osobowymi, kadrowymi albo produkcyjnymi. Aplikacja na takim serwerze nadal może korzystać z sieci firmy: bazy danych, katalogu użytkowników czy firmowego serwera poczty.
Brak internetu nie zwalnia z aktualizacji. Serwer odcięty od sieci też potrzebuje łatek bezpieczeństwa, tylko trafiają one inną drogą: pobrane i sprawdzone na zaufanym komputerze.
Zależności bez internetu
- Pobierz paczki na komputerze z internetem
Najlepiej z tą samą wersją Pythona i tym samym systemem co serwer. Polecenie pip download zapisuje wszystkie zależności do katalogu.
- Sprawdź, czy to gotowe koła
Pliki .whl instalują się bez kompilowania. Jeśli w katalogu jest archiwum ze źródłami, na serwerze bez kompilatora instalacja się nie uda.
- Przenieś katalog na serwer
Razem z plikiem requirements.txt, w którym wersje są przypięte.
- Zainstaluj bez sieci
pip install z opcjami --no-index i --find-links bierze paczki wyłącznie z lokalnego katalogu.
# na komputerze z internetem (ta sama wersja Pythona co na serwerze) pip download -r requirements.txt -d paczki --only-binary=:all: --platform win_amd64 --python-version 3.12 # na serwerze, bez dostępu do internetu pip install --no-index --find-links paczki -r requirements.txt
Biblioteki czysto pythonowe albo dostarczane jako gotowe koła oszczędzają najwięcej kłopotów. Dwa przykłady z praktyki: do LDAP biblioteka ldap3 zamiast python-ldap, która wymaga bibliotek systemowych, a do zamiany stron PDF na obrazy PyMuPDF, które przychodzi jako jedno koło.
Serwer aplikacji na Windows
Na Linuksie standardem dla aplikacji w Pythonie jest gunicorn, ale on nie działa na Windows. Tam sprawdza się Waitress, napisany w czystym Pythonie. Przed nim stoi serwer WWW, na Windows zwykle IIS, jako reverse proxy: obsługuje HTTPS i adres strony, a ruch przekazuje do aplikacji.
Aktualizacje bez internetu
- Wersja z numerem i listą zmian
Każda aktualizacja to paczka: kod, zależności i opis, co się zmieniło.
- Test na kopii
Środowisko testowe z kopią bazy. Aktualizacja, która przeszła tam, rzadko zaskakuje na produkcji.
- Kopia bazy tuż przed aktualizacją
Niezależnie od codziennych kopii zapasowych.
- Instalacja i migracje bazy
W zaplanowanym oknie, z komunikatem dla użytkowników.
- Plan powrotu
Poprzednia paczka i kopia bazy pod ręką. Jeśli coś nie działa, wracasz w kilka minut, a poprawkę robisz spokojnie.
Diagnostyka i porządek na miejscu
Pojęcia z tego poradnika
- Reverse proxy
Serwer, który przyjmuje ruch z sieci i przekazuje go do aplikacji działającej w tle. Zwykle obsługuje też HTTPS i adres strony.
- Koło (wheel)
Gotowa do instalacji paczka biblioteki Pythona, plik .whl. Instaluje się bez kompilowania, także na serwerze bez dostępu do internetu.
Pytania i odpowiedzi
Czy aplikacja bez internetu może wysyłać maile?
Tak, przez firmowy serwer pocztowy w sieci wewnętrznej. Odcięcie dotyczy internetu, a nie sieci firmy.
Jak instalować łatki bezpieczeństwa?
Tak samo jak zależności: pobrane na zaufanym komputerze, sprawdzone i przeniesione. Dla Windows firmy często używają własnego serwera aktualizacji (WSUS).
Czy na takim serwerze da się uruchomić AI?
Tak. Lokalny model językowy działa bez internetu, jeśli serwer ma odpowiednią kartę graficzną. Szczegóły są w poradniku o sprzęcie do lokalnego modelu.
Źródła i dokumentacja
- pip download: pobieranie paczek do instalacji offlinepip.pypa.io
- pip install: instalacja z lokalnego katalogupip.pypa.io
- Waitress: serwer aplikacji Pythona działający na Windowsdocs.pylonsproject.org
- Django: lista kontrolna przed wdrożeniemdocs.djangoproject.com
- Microsoft: IIS jako reverse proxy (URL Rewrite i ARR)learn.microsoft.com