{"id":337,"date":"2025-07-25T20:11:44","date_gmt":"2025-07-25T18:11:44","guid":{"rendered":"https:\/\/netcloud24.com\/pl\/blog\/?p=337"},"modified":"2025-07-25T20:11:44","modified_gmt":"2025-07-25T18:11:44","slug":"instalacja-microsoft-sql-server-na-debianie-12","status":"publish","type":"post","link":"https:\/\/netcloud24.com\/pl\/blog\/instalacja-microsoft-sql-server-na-debianie-12\/","title":{"rendered":"Instalacja Microsoft SQL Server na Debianie 12"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>Ten obszerny przewodnik krok po kroku pomo\u017ce Ci zainstalowa\u0107 Microsoft SQL Server na systemie operacyjnym Debian 12. Przedstawimy dwie metody instalacji: bezpo\u015brednio na systemie operacyjnym oraz w kontenerze Docker. Dodatkowo om\u00f3wimy zarz\u0105dzanie u\u017cytkownikami, konfiguracj\u0119 zapory sieciowej, aby zapewni\u0107 bezpiecze\u0144stwo Twojej bazy danych, a tak\u017ce poka\u017cemy, jak zautomatyzowa\u0107 ten proces za pomoc\u0105 **Ansible**. Dowiesz si\u0119 r\u00f3wnie\u017c, dlaczego serwery **Windows VPS** mog\u0105 by\u0107 doskona\u0142ym wyborem dla Twoich rozwi\u0105za\u0144 bazodanowych.<\/p>\n<div class=\"warning\"><strong>Wa\u017cna uwaga:<\/strong> W \u015brodowiskach produkcyjnych zawsze upewnij si\u0119, \u017ce u\u017cywasz silnych i unikalnych hase\u0142 oraz stosujesz najlepsze praktyki bezpiecze\u0144stwa.<\/div>\n<h2>Spis Tre\u015bci<\/h2>\n<ol>\n<li><a href=\"#prerequisites\">Wymagania Wst\u0119pne<\/a><\/li>\n<li><a href=\"#system-update\">Aktualizacja Systemu<\/a><\/li>\n<li><a href=\"#ansible-install\">Instalacja Ansible (na maszynie kontroluj\u0105cej)<\/a><\/li>\n<li><a href=\"#docker-install\">Instalacja Dockera<\/a><\/li>\n<li><a href=\"#mssql-docker\">Instalacja SQL Server w Dockerze (Zalecane)<\/a>\n<ul>\n<li><a href=\"#mssql-docker-pull\">Pobieranie Obrazu SQL Server<\/a><\/li>\n<li><a href=\"#mssql-docker-run\">Uruchomienie Kontenera SQL Server<\/a><\/li>\n<li><a href=\"#mssql-docker-connect\">Po\u0142\u0105czenie z SQL Server w Dockerze<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#mssql-direct\">Instalacja SQL Server Bezpo\u015brednio na Debianie 12 (Alternatywna Metoda)<\/a>\n<ul>\n<li><a href=\"#mssql-direct-repo\">Dodawanie Repozytorium Microsoft SQL Server<\/a><\/li>\n<li><a href=\"#mssql-direct-install\">Instalacja Pakiet\u00f3w SQL Server<\/a><\/li>\n<li><a href=\"#mssql-direct-config\">Konfiguracja SQL Server<\/a><\/li>\n<li><a href=\"#mssql-direct-tools\">Instalacja Narz\u0119dzi Wiersza Polece\u0144 SQL Server<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#user-management\">Zarz\u0105dzanie U\u017cytkownikami SQL Server<\/a>\n<ul>\n<li><a href=\"#create-login\">Tworzenie Nowego Loginu (U\u017cytkownika Serwera)<\/a><\/li>\n<li><a href=\"#create-user\">Tworzenie U\u017cytkownika Bazy Danych i Przyznawanie Uprawnie\u0144<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#firewall-config\">Konfiguracja Firewalla (UFW)<\/a>\n<ul>\n<li><a href=\"#ufw-install\">Instalacja UFW<\/a><\/li>\n<li><a href=\"#ufw-allow\">Zezwolenie na ruch dla SQL Server<\/a><\/li>\n<li><a href=\"#ufw-enable\">W\u0142\u0105czenie UFW<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#ansible-automation\">8. Automatyzacja z Ansible<\/a>\n<ul>\n<li><a href=\"#ansible-inventory\">Plik inwentaryzacji Ansible (inventory.ini)<\/a><\/li>\n<li><a href=\"#ansible-playbook-docker\">Playbook Ansible dla instalacji SQL Server w Dockerze<\/a><\/li>\n<li><a href=\"#ansible-playbook-direct\">Playbook Ansible dla instalacji SQL Server bezpo\u015brednio na OS<\/a><\/li>\n<li><a href=\"#ansible-run\">Uruchamianie Playbooka Ansible<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#windows-vps-promotion\">9. Dlaczego warto wybra\u0107 Windows VPS dla SQL Server?<\/a><\/li>\n<li><a href=\"#conclusion\">10. Podsumowanie<\/a><\/li>\n<\/ol>\n<h2 id=\"prerequisites\">Wymagania Wst\u0119pne<\/h2>\n<ul>\n<li>\u015awie\u017ca instalacja Debian 12 (Bookworm) na serwerze docelowym.<\/li>\n<li>Dost\u0119p do konta z uprawnieniami <code>sudo<\/code> lub konto <code>root<\/code> na serwerze docelowym.<\/li>\n<li>Dedykowana **maszyna kontroluj\u0105ca Ansible** (mo\u017ce to by\u0107 Twoja lokalna stacja robocza lub osobny serwer), na kt\u00f3rej zostanie zainstalowany Ansible.<\/li>\n<li>Klucze SSH do uwierzytelniania mi\u0119dzy maszyn\u0105 kontroluj\u0105c\u0105 Ansible a serwerem docelowym (zalecane).<\/li>\n<li>Stabilne po\u0142\u0105czenie internetowe.<\/li>\n<\/ul>\n<h2 id=\"system-update\">1. Aktualizacja Systemu<\/h2>\n<p>Zawsze zaczynaj od aktualizacji list pakiet\u00f3w i uaktualnienia istniej\u0105cych pakiet\u00f3w do najnowszych wersji. To zapewnia, \u017ce masz najnowsze poprawki bezpiecze\u0144stwa i zale\u017cno\u015bci.<\/p>\n<pre><code>sudo apt update\r\nsudo apt upgrade -y\r\nsudo apt dist-upgrade -y\r\nsudo apt autoremove -y<\/code><\/pre>\n<h2 id=\"ansible-install\">2. Instalacja Ansible (na maszynie kontroluj\u0105cej)<\/h2>\n<p>Ansible to narz\u0119dzie do automatyzacji, kt\u00f3re pozwala zarz\u0105dza\u0107 wieloma serwerami z jednej centralnej lokalizacji. Zainstaluj Ansible na swojej **maszynie kontroluj\u0105cej**, nie na serwerze docelowym Debian 12.<\/p>\n<pre><code>sudo apt update\r\nsudo apt install ansible -y<\/code><\/pre>\n<p>Sprawd\u017a wersj\u0119 Ansible, aby upewni\u0107 si\u0119, \u017ce instalacja przebieg\u0142a pomy\u015blnie:<\/p>\n<pre><code>ansible --version<\/code><\/pre>\n<h2 id=\"docker-install\">3. Instalacja Dockera<\/h2>\n<p>Instalacja SQL Server w Dockerze jest zalecan\u0105 metod\u0105 ze wzgl\u0119du na jej izolacj\u0119, przeno\u015bno\u015b\u0107 i \u0142atwo\u015b\u0107 zarz\u0105dzania. Je\u015bli planujesz instalacj\u0119 bezpo\u015brednio na OS, mo\u017cesz pomin\u0105\u0107 ten krok, ale i tak gor\u0105co polecam Dockera.<\/p>\n<h3>Usuwanie Starych Wersji (je\u015bli istniej\u0105)<\/h3>\n<p>Je\u015bli masz zainstalowane starsze wersje Dockera, zaleca si\u0119 ich usuni\u0119cie przed kontynuowaniem:<\/p>\n<pre><code>for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt remove $pkg; done<\/code><\/pre>\n<h3>Instalacja Pakiet\u00f3w Wymaganych do Repozytorium Dockera<\/h3>\n<pre><code>sudo apt update\r\nsudo apt install ca-certificates curl gnupg -y<\/code><\/pre>\n<h3>Dodawanie Oficjalnego Klucza GPG Dockera<\/h3>\n<pre><code>sudo install -m 0755 -d \/etc\/apt\/keyrings\r\ncurl -fsSL https:\/\/download.docker.com\/linux\/debian\/gpg | sudo gpg --dearmor -o \/etc\/apt\/keyrings\/docker.gpg\r\nsudo chmod a+r \/etc\/apt\/keyrings\/docker.gpg<\/code><\/pre>\n<h3>Dodawanie Repozytorium Dockera<\/h3>\n<pre><code>echo \\\r\n  \"deb [arch=\"$(dpkg --print-architecture)\" signed-by=\/etc\/apt\/keyrings\/docker.gpg] https:\/\/download.docker.com\/linux\/debian \\\r\n  \"$(. \/etc\/os-release &amp;&amp; echo \"$VERSION_CODENAME\")\" stable\" | \\\r\n  sudo tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null<\/code><\/pre>\n<h3>Instalacja Dockera Engine<\/h3>\n<pre><code>sudo apt update\r\nsudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y<\/code><\/pre>\n<h3>Weryfikacja Instalacji Dockera<\/h3>\n<p>Uruchom proste polecenie, aby upewni\u0107 si\u0119, \u017ce Docker dzia\u0142a poprawnie:<\/p>\n<pre><code>sudo docker run hello-world<\/code><\/pre>\n<p>Powiniene\u015b zobaczy\u0107 komunikat powitalny.<\/p>\n<h3>Dodanie U\u017cytkownika do Grupy Docker (opcjonalnie, ale zalecane)<\/h3>\n<p>Aby unikn\u0105\u0107 konieczno\u015bci u\u017cywania <code>sudo<\/code> przed ka\u017cdym poleceniem Dockera, dodaj swojego u\u017cytkownika do grupy <code>docker<\/code>:<\/p>\n<pre><code>sudo usermod -aG docker $USER<\/code><\/pre>\n<p>Po wykonaniu tego polecenia wyloguj si\u0119 i zaloguj ponownie, aby zmiany wesz\u0142y w \u017cycie.<\/p>\n<h2 id=\"mssql-docker\">4. Instalacja SQL Server w Dockerze (Zalecane)<\/h2>\n<p>Ta metoda jest preferowana, poniewa\u017c zapewnia izolowane \u015brodowisko dla SQL Server, co u\u0142atwia zarz\u0105dzanie i unikanie konflikt\u00f3w z innymi pakietami systemowymi.<\/p>\n<h3 id=\"mssql-docker-pull\">4.1 Pobieranie Obrazu SQL Server<\/h3>\n<p>Najpierw pobierz oficjalny obraz Microsoft SQL Server z Docker Hub. Zalecam u\u017cycie wersji 2019 lub nowszej. W tym przyk\u0142adzie u\u017cyjemy SQL Server 2022.<\/p>\n<pre><code>docker pull mcr.microsoft.com\/mssql\/server:2022-latest<\/code><\/pre>\n<h3 id=\"mssql-docker-run\">4.2 Uruchomienie Kontenera SQL Server<\/h3>\n<p>Teraz uruchom kontener SQL Server. Musisz zaakceptowa\u0107 licencj\u0119 (ACCEPT_EULA), ustawi\u0107 has\u0142o SA (SA_PASSWORD) i opcjonalnie zmapowa\u0107 port oraz nazwa\u0107 kontener.<\/p>\n<pre><code>docker run -e \"ACCEPT_EULA=Y\" -e \"SA_PASSWORD=TwojeMegaSilneHaslo123!\" \\\r\n   -p 1433:1433 --name sql_server_container \\\r\n   -d mcr.microsoft.com\/mssql\/server:2022-latest<\/code><\/pre>\n<ul>\n<li><code>-e \"ACCEPT_EULA=Y\"<\/code>: Akceptuje umow\u0119 licencyjn\u0105 u\u017cytkownika ko\u0144cowego. Bez tego kontener si\u0119 nie uruchomi.<\/li>\n<li><code>-e \"SA_PASSWORD=TwojeMegaSilneHaslo123!\"<\/code>: Ustawia has\u0142o dla konta administratora (SA). Zmie\u0144 to na **bardzo silne i unikalne has\u0142o**.<\/li>\n<li><code>-p 1433:1433<\/code>: Mapuje port 1433 (domy\u015blny port SQL Server) z kontenera na port 1433 na ho\u015bcie. Je\u015bli port 1433 jest ju\u017c zaj\u0119ty na ho\u015bcie, mo\u017cesz wybra\u0107 inny (np. <code>-p 1434:1433<\/code>).<\/li>\n<li><code>--name sql_server_container<\/code>: Przypisuje nazw\u0119 do kontenera, u\u0142atwiaj\u0105c jego identyfikacj\u0119.<\/li>\n<li><code>-d<\/code>: Uruchamia kontener w tle (detached mode).<\/li>\n<li><code>mcr.microsoft.com\/mssql\/server:2022-latest<\/code>: Obraz Dockera, kt\u00f3rego u\u017cywamy.<\/li>\n<\/ul>\n<div class=\"note\"><strong>Uwaga:<\/strong> Upewnij si\u0119, \u017ce twoje has\u0142o SA jest z\u0142o\u017cone i spe\u0142nia wymagania bezpiecze\u0144stwa SQL Server (m.in. d\u0142ugo\u015b\u0107, ma\u0142e\/wielkie litery, cyfry, znaki specjalne).<\/div>\n<h3 id=\"mssql-docker-connect\">4.3 Po\u0142\u0105czenie z SQL Server w Dockerze<\/h3>\n<p>Po kilku chwilach kontener powinien by\u0107 gotowy. Mo\u017cesz sprawdzi\u0107 jego status:<\/p>\n<pre><code>docker ps<\/code><\/pre>\n<p>Powiniene\u015b zobaczy\u0107 sw\u00f3j kontener <code>sql_server_container<\/code> na li\u015bcie z statusem &#8222;Up&#8221;.<\/p>\n<p>Aby po\u0142\u0105czy\u0107 si\u0119 z serwerem SQL, mo\u017cesz u\u017cy\u0107 narz\u0119dzi takich jak Azure Data Studio, SQL Server Management Studio (SSMS) z innej maszyny lub narz\u0119dzi wiersza polece\u0144 na Debianie.<\/p>\n<p>Je\u015bli chcesz po\u0142\u0105czy\u0107 si\u0119 z narz\u0119dzi wiersza polece\u0144 na Debianie, musisz je zainstalowa\u0107 (patrz sekcja 5.4).<\/p>\n<h2 id=\"mssql-direct\">5. Instalacja SQL Server Bezpo\u015brednio na Debianie 12 (Alternatywna Metoda)<\/h2>\n<p>Ta metoda instaluje SQL Server bezpo\u015brednio w systemie operacyjnym. Jest bardziej skomplikowana i mo\u017ce prowadzi\u0107 do potencjalnych konflikt\u00f3w zale\u017cno\u015bci, dlatego zazwyczaj zaleca si\u0119 Docker.<\/p>\n<h3 id=\"mssql-direct-repo\">5.1 Dodawanie Repozytorium Microsoft SQL Server<\/h3>\n<p>Najpierw musisz zaimportowa\u0107 klucz GPG repozytorium Microsoft SQL Server i doda\u0107 repozytorium do swoich \u017ar\u00f3de\u0142 APT.<\/p>\n<pre><code>sudo apt update\r\nsudo apt install curl -y\r\ncurl https:\/\/packages.microsoft.com\/keys\/microsoft.asc | sudo apt-key add -\r\ncurl https:\/\/packages.microsoft.com\/config\/debian\/12\/prod.list | sudo tee \/etc\/apt\/sources.list.d\/mssql-release.list<\/code><\/pre>\n<h3 id=\"mssql-direct-install\">5.2 Instalacja Pakiet\u00f3w SQL Server<\/h3>\n<p>Po dodaniu repozytorium, zaktualizuj listy pakiet\u00f3w i zainstaluj SQL Server.<\/p>\n<pre><code>sudo apt update\r\nsudo apt install mssql-server -y<\/code><\/pre>\n<h3 id=\"mssql-direct-config\">5.3 Konfiguracja SQL Server<\/h3>\n<p>Po instalacji musisz uruchomi\u0107 skrypt konfiguracyjny, aby ustawi\u0107 has\u0142o SA i wybra\u0107 edycj\u0119 SQL Server (np. Developer, Express, Standard).<\/p>\n<pre><code>sudo \/opt\/mssql\/bin\/mssql-conf setup<\/code><\/pre>\n<p>Post\u0119puj zgodnie z instrukcjami na ekranie:<\/p>\n<ul>\n<li>Wybierz edycj\u0119 SQL Server. Dla cel\u00f3w testowych i deweloperskich, **Developer Edition** (opcja 2) jest bezp\u0142atna i zalecana.<\/li>\n<li>Zaakceptuj warunki licencji (wpisz 'yes&#8217;).<\/li>\n<li>Ustaw silne has\u0142o dla konta administratora SQL Server (SA). Pami\u0119taj o z\u0142o\u017cono\u015bci has\u0142a!<\/li>\n<\/ul>\n<div class=\"warning\"><strong>Pami\u0119taj:<\/strong> Upewnij si\u0119, \u017ce ustawiasz silne has\u0142o, kt\u00f3re spe\u0142nia wymagania dotycz\u0105ce z\u0142o\u017cono\u015bci (wielkie i ma\u0142e litery, cyfry, znaki specjalne, minimalna d\u0142ugo\u015b\u0107).<\/div>\n<p>Po zako\u0144czeniu konfiguracji, SQL Server zostanie uruchomiony automatycznie. Mo\u017cesz sprawdzi\u0107 jego status:<\/p>\n<pre><code>systemctl status mssql-server --no-pager<\/code><\/pre>\n<h3 id=\"mssql-direct-tools\">5.4 Instalacja Narz\u0119dzi Wiersza Polece\u0144 SQL Server (sqlcmd i bcp)<\/h3>\n<p>Do zarz\u0105dzania SQL Server z wiersza polece\u0144 potrzebne s\u0105 narz\u0119dzia <code>sqlcmd<\/code> i <code>bcp<\/code>. Dodaj repozytorium narz\u0119dzi i zainstaluj je.<\/p>\n<pre><code>curl https:\/\/packages.microsoft.com\/keys\/microsoft.asc | sudo apt-key add -\r\ncurl https:\/\/packages.microsoft.com\/config\/debian\/12\/prod.list | sudo tee \/etc\/apt\/sources.list.d\/mssql-tools.list\r\n\r\nsudo apt update\r\nsudo apt install mssql-tools unixodbc-dev -y<\/code><\/pre>\n<p>Aby narz\u0119dzia <code>sqlcmd<\/code> i <code>bcp<\/code> by\u0142y dost\u0119pne w \u015bcie\u017cce systemowej, dodaj je do <code>PATH<\/code>:<\/p>\n<pre><code>echo 'export PATH=\"$PATH:\/opt\/mssql-tools\/bin\"' &gt;&gt; ~\/.bash_profile\r\necho 'export PATH=\"$PATH:\/opt\/mssql-tools\/bin\"' &gt;&gt; ~\/.bashrc\r\nsource ~\/.bashrc<\/code><\/pre>\n<p>Teraz mo\u017cesz przetestowa\u0107 po\u0142\u0105czenie:<\/p>\n<pre><code>sqlcmd -S localhost -U SA -P 'TwojeMegaSilneHaslo123!'<\/code><\/pre>\n<p>Je\u015bli po\u0142\u0105czenie jest udane, zobaczysz prompt <code>1&gt;<\/code>. Mo\u017cesz wpisa\u0107 <code>SELECT @@VERSION<\/code> i <code>GO<\/code>, aby sprawdzi\u0107 wersj\u0119 SQL Server.<\/p>\n<pre><code>1&gt; SELECT @@VERSION\r\n2&gt; GO\r\n1&gt; exit<\/code><\/pre>\n<h2 id=\"user-management\">6. Zarz\u0105dzanie U\u017cytkownikami SQL Server<\/h2>\n<p>Bezpiecze\u0144stwo bazy danych jest kluczowe. Zawsze unikaj u\u017cywania konta SA do codziennych operacji. Zamiast tego, stw\u00f3rz dedykowanych u\u017cytkownik\u00f3w z minimalnymi niezb\u0119dnymi uprawnieniami.<\/p>\n<p>Po\u0142\u0105cz si\u0119 z SQL Server za pomoc\u0105 <code>sqlcmd<\/code> lub narz\u0119dzia GUI (np. Azure Data Studio\/SSMS).<\/p>\n<pre><code>sqlcmd -S localhost -U SA -P 'TwojeMegaSilneHaslo123!'<\/code><\/pre>\n<h3 id=\"create-login\">6.1 Tworzenie Nowego Loginu (U\u017cytkownika Serwera)<\/h3>\n<p>Login to konto na poziomie serwera, kt\u00f3re umo\u017cliwia po\u0142\u0105czenie z instancj\u0105 SQL Server.<\/p>\n<pre><code>1&gt; CREATE LOGIN NowyUzytkownik WITH PASSWORD = 'BardzoSilneHasloDlaUzytkownika!@#', CHECK_POLICY = ON;\r\n2&gt; GO<\/code><\/pre>\n<ul>\n<li>Zmie\u0144 <code>NowyUzytkownik<\/code> na wybran\u0105 nazw\u0119 loginu.<\/li>\n<li>Zmie\u0144 <code>BardzoSilneHasloDlaUzytkownika!@#<\/code> na silne has\u0142o.<\/li>\n<li><code>CHECK_POLICY = ON<\/code> wymusza stosowanie zasad dotycz\u0105cych hase\u0142.<\/li>\n<\/ul>\n<h3 id=\"create-user\">6.2 Tworzenie U\u017cytkownika Bazy Danych i Przyznawanie Uprawnie\u0144<\/h3>\n<p>Po utworzeniu loginu, mo\u017cesz utworzy\u0107 u\u017cytkownika w konkretnej bazie danych i przyzna\u0107 mu uprawnienia do tej bazy.<\/p>\n<p>Najpierw utw\u00f3rz now\u0105 baz\u0119 danych (je\u015bli jej jeszcze nie masz) lub u\u017cyj istniej\u0105cej:<\/p>\n<pre><code>1&gt; CREATE DATABASE MojaNowaBazaDanych;\r\n2&gt; GO\r\n1&gt; USE MojaNowaBazaDanych;\r\n2&gt; GO<\/code><\/pre>\n<p>Teraz utw\u00f3rz u\u017cytkownika bazy danych, mapuj\u0105c go do wcze\u015bniej utworzonego loginu:<\/p>\n<pre><code>1&gt; CREATE USER UzytkownikBazyDanych FOR LOGIN NowyUzytkownik;\r\n2&gt; GO<\/code><\/pre>\n<p>I przyznaj mu uprawnienia (np. pe\u0142ne uprawnienia do bazy danych, je\u015bli to konieczne, ale zawsze stosuj zasad\u0119 najmniejszych uprawnie\u0144):<\/p>\n<pre><code>1&gt; GRANT CONTROL ON DATABASE::MojaNowaBazaDanych TO UzytkownikBazyDanych;\r\n2&gt; GO<\/code><\/pre>\n<p>Je\u015bli chcesz bardziej szczeg\u00f3\u0142owe uprawnienia (np. tylko SELECT na konkretnej tabeli):<\/p>\n<pre><code>1&gt; GRANT SELECT ON TabelaTestowa TO UzytkownikBazyDanych;\r\n2&gt; GO<\/code><\/pre>\n<p>Aby wyj\u015b\u0107 z <code>sqlcmd<\/code>, wpisz <code>exit<\/code>:<\/p>\n<pre><code>1&gt; exit<\/code><\/pre>\n<h2 id=\"firewall-config\">7. Konfiguracja Firewalla (UFW)<\/h2>\n<p>Zapor\u0119 sieciow\u0105 jest kluczowym elementem bezpiecze\u0144stwa. Domy\u015blnie Debian mo\u017ce mie\u0107 zainstalowany <code>iptables<\/code>, ale <code>UFW (Uncomplicated Firewall)<\/code> jest znacznie \u0142atwiejszy w obs\u0142udze.<\/p>\n<h3 id=\"ufw-install\">7.1 Instalacja UFW<\/h3>\n<pre><code>sudo apt update\r\nsudo apt install ufw -y<\/code><\/pre>\n<h3 id=\"ufw-allow\">7.2 Zezwolenie na ruch dla SQL Server<\/h3>\n<p>Domy\u015blny port dla SQL Server to 1433. Musisz zezwoli\u0107 na ruch na tym porcie, aby aplikacje klienckie mog\u0142y si\u0119 po\u0142\u0105czy\u0107.<\/p>\n<pre><code>sudo ufw allow 1433\/tcp comment 'Allow SQL Server'<\/code><\/pre>\n<div class=\"note\"><strong>Uwaga:<\/strong> Je\u015bli zmieni\u0142e\u015b port SQL Server w kontenerze Docker (np. na 1434), upewnij si\u0119, \u017ce zezwalasz na odpowiedni port (np. <code>sudo ufw allow 1434\/tcp<\/code>).<\/div>\n<h3>Zezwolenie na ruch SSH (bardzo wa\u017cne!)<\/h3>\n<p>Upewnij si\u0119, \u017ce zezwalasz na ruch SSH (domy\u015blny port 22), aby unikn\u0105\u0107 utraty dost\u0119pu do serwera po w\u0142\u0105czeniu firewalla.<\/p>\n<pre><code>sudo ufw allow ssh comment 'Allow SSH access'<\/code><\/pre>\n<p>Je\u015bli u\u017cywasz niestandardowego portu SSH, zmie\u0144 <code>ssh<\/code> na numer portu (np. <code>sudo ufw allow 2222\/tcp<\/code>).<\/p>\n<h3 id=\"ufw-enable\">7.3 W\u0142\u0105czenie UFW<\/h3>\n<p>Po skonfigurowaniu regu\u0142, mo\u017cesz w\u0142\u0105czy\u0107 firewall. Zostaniesz poproszony o potwierdzenie, poniewa\u017c mo\u017ce to zak\u0142\u00f3ci\u0107 istniej\u0105ce po\u0142\u0105czenia SSH.<\/p>\n<pre><code>sudo ufw enable<\/code><\/pre>\n<p>Potwierd\u017a, wpisuj\u0105c <code>y<\/code>.<\/p>\n<h3>Sprawdzenie statusu UFW<\/h3>\n<p>Aby sprawdzi\u0107, czy firewall dzia\u0142a i jakie ma regu\u0142y:<\/p>\n<pre><code>sudo ufw status verbose<\/code><\/pre>\n<h2 id=\"ansible-automation\">8. Automatyzacja z Ansible<\/h2>\n<p>Ansible pozwala zautomatyzowa\u0107 wszystkie powy\u017csze kroki, co jest niezwykle przydatne przy wdra\u017caniu na wielu serwerach lub do powtarzalnych instalacji.<\/p>\n<h3 id=\"ansible-inventory\">8.1 Plik inwentaryzacji Ansible (<code>inventory.ini<\/code>)<\/h3>\n<p>Utw\u00f3rz plik <code>inventory.ini<\/code> na swojej maszynie kontroluj\u0105cej Ansible. Zast\u0105p <code>your_server_ip<\/code> adresem IP lub nazw\u0105 hosta Twojego serwera Debian 12.<\/p>\n<pre><code>[webservers]\r\nyour_server_ip ansible_user=your_username ansible_become=yes<\/code><\/pre>\n<p>Pami\u0119taj, aby <code>your_username<\/code> to nazwa u\u017cytkownika, kt\u00f3ry ma uprawnienia sudo na serwerze docelowym.<\/p>\n<h3 id=\"ansible-playbook-docker\">8.2 Playbook Ansible dla instalacji SQL Server w Dockerze (<code>install_mssql_docker.yml<\/code>)<\/h3>\n<p>Ten playbook zainstaluje Dockera, a nast\u0119pnie uruchomi kontener SQL Server.<\/p>\n<pre><code>---\r\n- name: Install SQL Server on Debian 12 using Docker\r\n  hosts: webservers\r\n  become: yes\r\n  vars:\r\n    mssql_sa_password: \"TwojeMegaSilneHaslo123!\" # Zmie\u0144 na silne, unikalne has\u0142o!\r\n    mssql_port: 1433\r\n    mssql_container_name: sql_server_container\r\n    mssql_image: mcr.microsoft.com\/mssql\/server:2022-latest\r\n\r\n  tasks:\r\n    - name: Update apt cache and upgrade system\r\n      ansible.builtin.apt:\r\n        update_cache: yes\r\n        upgrade: dist\r\n        autoclean: yes\r\n        autoremove: yes\r\n\r\n    - name: Install required packages for Docker\r\n      ansible.builtin.apt:\r\n        name: \"{{ item }}\"\r\n        state: present\r\n      loop:\r\n        - ca-certificates\r\n        - curl\r\n        - gnupg\r\n\r\n    - name: Add Docker GPG key\r\n      ansible.builtin.shell: |\r\n        install -m 0755 -d \/etc\/apt\/keyrings\r\n        curl -fsSL https:\/\/download.docker.com\/linux\/debian\/gpg | gpg --dearmor -o \/etc\/apt\/keyrings\/docker.gpg\r\n        chmod a+r \/etc\/apt\/keyrings\/docker.gpg\r\n      args:\r\n        creates: \/etc\/apt\/keyrings\/docker.gpg\r\n\r\n    - name: Add Docker APT repository\r\n      ansible.builtin.shell: |\r\n        echo \"deb [arch=$(dpkg --print-architecture) signed-by=\/etc\/apt\/keyrings\/docker.gpg] https:\/\/download.docker.com\/linux\/debian $(. \/etc\/os-release &amp;&amp; echo \"$VERSION_CODENAME\") stable\" | tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null\r\n      args:\r\n        creates: \/etc\/apt\/sources.list.d\/docker.list\r\n\r\n    - name: Install Docker Engine\r\n      ansible.builtin.apt:\r\n        name: \"{{ item }}\"\r\n        state: present\r\n        update_cache: yes\r\n      loop:\r\n        - docker-ce\r\n        - docker-ce-cli\r\n        - containerd.io\r\n        - docker-buildx-plugin\r\n        - docker-compose-plugin\r\n\r\n    - name: Start and enable Docker service\r\n      ansible.builtin.systemd:\r\n        name: docker\r\n        state: started\r\n        enabled: yes\r\n\r\n    - name: Pull SQL Server Docker image\r\n      community.docker.docker_image:\r\n        name: \"{{ mssql_image }}\"\r\n        source: pull\r\n        state: present\r\n\r\n    - name: Run SQL Server container\r\n      community.docker.docker_container:\r\n        name: \"{{ mssql_container_name }}\"\r\n        image: \"{{ mssql_image }}\"\r\n        state: started\r\n        restart_policy: always\r\n        published_ports:\r\n          - \"{{ mssql_port }}:1433\"\r\n        env:\r\n          ACCEPT_EULA: \"Y\"\r\n          SA_PASSWORD: \"{{ mssql_sa_password }}\"\r\n      register: sql_container_result\r\n\r\n    - name: Install UFW\r\n      ansible.builtin.apt:\r\n        name: ufw\r\n        state: present\r\n\r\n    - name: Allow SSH traffic\r\n      community.general.ufw:\r\n        rule: allow\r\n        port: \"{{ ansible_ssh_port | default(22) }}\" # Assuming default SSH port or custom\r\n        proto: tcp\r\n        comment: \"Allow SSH access\"\r\n\r\n    - name: Allow SQL Server traffic\r\n      community.general.ufw:\r\n        rule: allow\r\n        port: \"{{ mssql_port }}\"\r\n        proto: tcp\r\n        comment: \"Allow SQL Server traffic\"\r\n\r\n    - name: Enable UFW\r\n      community.general.ufw:\r\n        state: enabled\r\n        default_deny: yes # Deny incoming by default, allow outgoing\r\n      when: not ansible_check_mode\r\n\r\n    - name: Verify UFW status\r\n      ansible.builtin.command: ufw status verbose\r\n      register: ufw_status\r\n      changed_when: false\r\n    - name: Print UFW status\r\n      ansible.builtin.debug:\r\n        var: ufw_status.stdout_lines\r\n\r\n    - name: Display connection info for SQL Server\r\n      ansible.builtin.debug:\r\n        msg: \"SQL Server container '{{ mssql_container_name }}' is running on port {{ mssql_port }} with SA password '{{ mssql_sa_password }}'.\"\r\n<\/code><\/pre>\n<h3 id=\"ansible-playbook-direct\">8.3 Playbook Ansible dla instalacji SQL Server bezpo\u015brednio na OS (<code>install_mssql_direct.yml<\/code>)<\/h3>\n<p>Ten playbook zainstaluje SQL Server bezpo\u015brednio na systemie operacyjnym Debian.<\/p>\n<pre><code>---\r\n- name: Install SQL Server on Debian 12 directly\r\n  hosts: webservers\r\n  become: yes\r\n  vars:\r\n    mssql_sa_password: \"TwojeMegaSilneHaslo123!\" # Zmie\u0144 na silne, unikalne has\u0142o!\r\n    mssql_edition: 2 # 1=Developer, 2=Express, 3=Web, 4=Standard, 5=Enterprise\r\n    mssql_port: 1433\r\n\r\n  tasks:\r\n    - name: Update apt cache and upgrade system\r\n      ansible.builtin.apt:\r\n        update_cache: yes\r\n        upgrade: dist\r\n        autoclean: yes\r\n        autoremove: yes\r\n\r\n    - name: Install curl\r\n      ansible.builtin.apt:\r\n        name: curl\r\n        state: present\r\n\r\n    - name: Add Microsoft GPG key for SQL Server\r\n      ansible.builtin.shell: |\r\n        curl https:\/\/packages.microsoft.com\/keys\/microsoft.asc | apt-key add -\r\n      args:\r\n        creates: \/etc\/apt\/trusted.gpg.d\/microsoft.gpg # Check if this path is correct for debian 12\r\n        warn: false\r\n\r\n    - name: Add Microsoft SQL Server APT repository\r\n      ansible.builtin.shell: |\r\n        curl https:\/\/packages.microsoft.com\/config\/debian\/12\/prod.list | tee \/etc\/apt\/sources.list.d\/mssql-release.list\r\n      args:\r\n        creates: \/etc\/apt\/sources.list.d\/mssql-release.list\r\n\r\n    - name: Install mssql-server\r\n      ansible.builtin.apt:\r\n        name: mssql-server\r\n        state: present\r\n        update_cache: yes\r\n\r\n    - name: Configure SQL Server\r\n      ansible.builtin.command: \/opt\/mssql\/bin\/mssql-conf setup\r\n      args:\r\n        stdin: |\r\n          {{ mssql_edition }}\r\n          yes\r\n          {{ mssql_sa_password }}\r\n          {{ mssql_sa_password }}\r\n      no_log: true # Prevent sensitive info from showing in logs\r\n      changed_when: true # Always mark as changed, as it's an interactive setup\r\n\r\n    - name: Ensure mssql-server service is running and enabled\r\n      ansible.builtin.systemd:\r\n        name: mssql-server\r\n        state: started\r\n        enabled: yes\r\n\r\n    - name: Add Microsoft GPG key for mssql-tools\r\n      ansible.builtin.shell: |\r\n        curl https:\/\/packages.microsoft.com\/keys\/microsoft.asc | apt-key add -\r\n      args:\r\n        creates: \/etc\/apt\/trusted.gpg.d\/microsoft.gpg # Check if this path is correct for debian 12\r\n        warn: false\r\n\r\n    - name: Add Microsoft SQL Tools APT repository\r\n      ansible.builtin.shell: |\r\n        curl https:\/\/packages.microsoft.com\/config\/debian\/12\/prod.list | tee \/etc\/apt\/sources.list.d\/mssql-tools.list\r\n      args:\r\n        creates: \/etc\/apt\/sources.list.d\/mssql-tools.list\r\n\r\n    - name: Install mssql-tools and unixodbc-dev\r\n      ansible.builtin.apt:\r\n        name: \"{{ item }}\"\r\n        state: present\r\n        update_cache: yes\r\n      loop:\r\n        - mssql-tools\r\n        - unixodbc-dev\r\n\r\n    - name: Add mssql-tools to PATH for all users (profile.d)\r\n      ansible.builtin.copy:\r\n        content: 'export PATH=\"$PATH:\/opt\/mssql-tools\/bin\"'\r\n        dest: \/etc\/profile.d\/mssql-tools.sh\r\n        mode: '0644'\r\n      notify: Reload .bashrc for current user # This might not work immediately for active sessions\r\n\r\n    - name: Install UFW\r\n      ansible.builtin.apt:\r\n        name: ufw\r\n        state: present\r\n\r\n    - name: Allow SSH traffic\r\n      community.general.ufw:\r\n        rule: allow\r\n        port: \"{{ ansible_ssh_port | default(22) }}\"\r\n        proto: tcp\r\n        comment: \"Allow SSH access\"\r\n\r\n    - name: Allow SQL Server traffic\r\n      community.general.ufw:\r\n        rule: allow\r\n        port: \"{{ mssql_port }}\"\r\n        proto: tcp\r\n        comment: \"Allow SQL Server traffic\"\r\n\r\n    - name: Enable UFW\r\n      community.general.ufw:\r\n        state: enabled\r\n        default_deny: yes\r\n      when: not ansible_check_mode # Do not enable if in check mode\r\n\r\n    - name: Verify UFW status\r\n      ansible.builtin.command: ufw status verbose\r\n      register: ufw_status\r\n      changed_when: false\r\n    - name: Print UFW status\r\n      ansible.builtin.debug:\r\n        var: ufw_status.stdout_lines\r\n\r\n  handlers:\r\n    - name: Reload .bashrc for current user\r\n      ansible.builtin.shell: source ~\/.bashrc\r\n      # This handler is mostly symbolic for active sessions.\r\n      # Users logging in later will get the updated PATH.\r\n      # For a fully automated setup, consider a full reboot if strictly necessary.\r\n      listen: \"Reload .bashrc for current user\"\r\n\r\n<\/code><\/pre>\n<h3 id=\"ansible-run\">8.4 Uruchamianie Playbooka Ansible<\/h3>\n<p>Z maszyny kontroluj\u0105cej Ansible, przejd\u017a do katalogu, w kt\u00f3rym zapisa\u0142e\u015b pliki <code>inventory.ini<\/code> i wybrany playbook (np. <code>install_mssql_docker.yml<\/code>).<\/p>\n<p>Uruchom playbook za pomoc\u0105 polecenia:<\/p>\n<pre><code>ansible-playbook -i inventory.ini install_mssql_docker.yml<\/code><\/pre>\n<p>lub dla instalacji bezpo\u015bredniej:<\/p>\n<pre><code>ansible-playbook -i inventory.ini install_mssql_direct.yml<\/code><\/pre>\n<p>Je\u015bli u\u017cywasz has\u0142a do klucza SSH lub has\u0142a u\u017cytkownika do <code>sudo<\/code>, Ansible poprosi o nie. Mo\u017cesz u\u017cy\u0107 opcji <code>--ask-pass<\/code> (<code>-k<\/code>) dla has\u0142a SSH i <code>--ask-become-pass<\/code> (<code>-K<\/code>) dla has\u0142a sudo.<\/p>\n<pre><code>ansible-playbook -i inventory.ini install_mssql_docker.yml -k -K<\/code><\/pre>\n<div class=\"note\"><strong>Wa\u017cne:<\/strong> Ansible domy\u015blnie u\u017cywa po\u0142\u0105cze\u0144 SSH. Upewnij si\u0119, \u017ce masz skonfigurowany dost\u0119p SSH bez has\u0142a za pomoc\u0105 kluczy (najlepsza praktyka) lub podajesz odpowiednie has\u0142a.<\/div>\n<h2 id=\"windows-vps-promotion\">9. Dlaczego warto wybra\u0107 Windows VPS dla SQL Server?<\/h2>\n<div class=\"promo-box\">\n<h3>Optymalna Platforma dla Microsoft SQL Server<\/h3>\n<p>Chocia\u017c Microsoft SQL Server dzia\u0142a doskonale na Debianie i w Dockerze, \u015brodowisko Windows Server cz\u0119sto oferuje natywn\u0105 optymalizacj\u0119 i pe\u0142n\u0105 integracj\u0119 z ekosystemem Microsoft.<\/p>\n<p>Wybieraj\u0105c **Windows VPS**, zyskujesz:<\/p>\n<ul>\n<li>**Pe\u0142n\u0105 Kompatybilno\u015b\u0107:** Najlepsza wydajno\u015b\u0107 i stabilno\u015b\u0107 dla SQL Server dzi\u0119ki natywnemu \u015brodowisku Windows.<\/li>\n<li>**Narz\u0119dzia Graficzne:** \u0141atwe zarz\u0105dzanie baz\u0105 danych za pomoc\u0105 SQL Server Management Studio (SSMS) i innych narz\u0119dzi GUI.<\/li>\n<li>**Integracja z Active Directory:** Bezproblemowa integracja z istniej\u0105c\u0105 infrastruktur\u0105 Windows.<\/li>\n<li>**Wsparcie Techniczne:** Dost\u0119p do szerokiego ekosystemu wsparcia i dokumentacji Microsoft.<\/li>\n<li>**Elastyczno\u015b\u0107:** Mo\u017cliwo\u015b\u0107 skalowania zasob\u00f3w VPS w zale\u017cno\u015bci od Twoich potrzeb.<\/li>\n<\/ul>\n<p>Zainwestuj w niezawodno\u015b\u0107 i wydajno\u015b\u0107 dla swoich baz danych. Sprawd\u017a nasz\u0105 ofert\u0119 **Windows VPS** i wybierz idealne rozwi\u0105zanie dla siebie!<\/p>\n<p><a href=\"https:\/\/netcloud24.com\/\" target=\"_blank\" rel=\"noopener\">Odkryj Nasze Pakiety Windows VPS na Netcloud24.com!<\/a><\/p>\n<\/div>\n<h2 id=\"conclusion\">10. Podsumowanie<\/h2>\n<p>Gratulacje! Pomy\u015blnie zainstalowa\u0142e\u015b Microsoft SQL Server na Debianie 12, korzystaj\u0105c z Docker lub instalacji bezpo\u015bredniej. Om\u00f3wili\u015bmy zarz\u0105dzanie u\u017cytkownikami, konfiguracj\u0119 zapory sieciowej (UFW) oraz co najwa\u017cniejsze, zautomatyzowali\u015bmy ten proces za pomoc\u0105 Ansible.<\/p>\n<p>Automatyzacja z Ansible jest pot\u0119\u017cnym narz\u0119dziem, kt\u00f3re oszcz\u0119dza czas i zmniejsza ryzyko b\u0142\u0119d\u00f3w ludzkich, zapewniaj\u0105c sp\u00f3jne wdro\u017cenia w Twojej infrastrukturze. Pami\u0119taj o regularnych aktualizacjach, tworzeniu kopii zapasowych i stosowaniu silnych zasad bezpiecze\u0144stwa dla Twojej bazy danych. Niezale\u017cnie od wybranej platformy, dbaj o bezpiecze\u0144stwo i optymalizacj\u0119 swojego \u015brodowiska bazodanowego.<\/p>\n<footer>&nbsp;<\/p>\n<\/footer>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Ten obszerny przewodnik krok po kroku pomo\u017ce Ci zainstalowa\u0107 Microsoft SQL Server na systemie operacyjnym Debian 12. Przedstawimy dwie metody instalacji: bezpo\u015brednio na systemie\u2026<\/p>\n","protected":false},"author":1,"featured_media":252,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-337","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/posts\/337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/comments?post=337"}],"version-history":[{"count":1,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/posts\/337\/revisions"}],"predecessor-version":[{"id":338,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/posts\/337\/revisions\/338"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/media\/252"}],"wp:attachment":[{"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/media?parent=337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/categories?post=337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/netcloud24.com\/pl\/blog\/wp-json\/wp\/v2\/tags?post=337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}