DatenCloud-Server Installation
Wenn Sie eine SPG-DatenCloud auf einem Ubuntu-Server betreiben möchten, kann dieser komfortabel über Docker bereitgestellt werden.
Diese Anleitung beschreibt die Installation eines Microsoft SQL Server 2022 Express als Docker-Container auf einem Ubuntu-Server.
Vorraussetzung ist die Installation von Docker auf dem Ubuntu-Server.
Die offizielle Anleitung zur Docker-Installation unter Ubuntu finden Sie hier:
https://docs.docker.com/engine/install/ubuntu/
Firewall konfigurieren
Damit Clients den SQL-Server erreichen können, muss der verwendete SQL-Port in der Firewall freigegeben werden.
Standardmäßig verwendet Microsoft SQL Server den TCP-Port 1433.
Wenn Sie in der späteren Konfiguration einen anderen Port verwenden, ersetzen Sie 1433 entsprechend durch Ihren gewählten Port.
Beispiel:
sudo ufw allow MSSQL-Port/tcp
Prüfen Sie anschließend den Status der Firewall:
sudo ufw status
Verzeichnisse vorbereiten
Für den MSSQL-Container wird ein Verzeichnis unterhalb von /opt/docker/mssql angelegt.
Darin werden die Daten des SQL-Servers dauerhaft gespeichert.
sudo mkdir -p /opt/docker/mssql
sudo mkdir -p /opt/docker/mssql/data
cd /opt/docker/mssql
Damit der SQL-Server-Container Schreibrechte auf das Datenverzeichnis erhält, müssen die Berechtigungen angepasst werden.
sudo chown -R 10001:0 /opt/docker/mssql/data
sudo chmod -R 770 /opt/docker/mssql/data
Der Benutzer mit der ID 10001 wird vom Microsoft SQL Server Container verwendet.
Docker Compose Datei erstellen
Erstellen Sie im Verzeichnis /opt/docker/mssql die Datei compose.yml.
sudo nano /opt/docker/mssql/compose.yml
Fügen Sie folgenden Inhalt ein:
services:
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
container_name: ${MSSQL_CONTAINERNAME:-mssql}
restart: unless-stopped
env_file: .env
environment:
ACCEPT_EULA: ${ACCEPT_EULA}
MSSQL_SA_PASSWORD: ${MSSQL_SA_PASSWORD}
MSSQL_PID: ${MSSQL_PID:-Express}
TZ: ${TZ:-Europe/Berlin}
ports:
- ${MSSQL_PORT}:1433
volumes:
- ${MSSQL_DIRECTORY}:/var/opt/mssql
Speichern Sie die Datei anschließend mit:
STRG + O
ENTER
STRG + X
Konfigurationsdatei .env erstellen
Die wichtigsten Einstellungen werden in einer separaten .env-Datei gespeichert.
Erstellen Sie diese Datei mit folgendem Befehl:
sudo nano /opt/docker/mssql/.env
Fügen Sie folgenden Inhalt ein:
MSSQL_CONTAINERNAME="mssql_server"
MSSQL_SA_PASSWORD="<STARKES_PASSWORT_OHNE_ANFUEHRUNGSZEICHEN>"
MSSQL_PORT="MSSQL-Port"
ACCEPT_EULA="Y"
MSSQL_PID="Express"
TZ="Europe/Berlin"
MSSQL_DIRECTORY="/opt/docker/mssql/data"
Passen Sie mindestens das Passwort an.
Beispiel:
MSSQL_SA_PASSWORD="SehrSicheresPasswort123!"
Wichtig:
Das Passwort muss den Anforderungen von Microsoft SQL Server entsprechen. Verwenden Sie ein langes und sicheres Passwort mit Großbuchstaben, Kleinbuchstaben, Zahlen und Sonderzeichen.
Speichern Sie die Datei anschließend.
Bedeutung der wichtigsten Parameter
| Parameter | Bedeutung |
|---|---|
MSSQL_CONTAINERNAME |
Name des Docker-Containers |
MSSQL_SA_PASSWORD |
Passwort für den SQL-Administratorbenutzer sa |
MSSQL_PORT |
Extern erreichbarer TCP-Port des SQL-Servers |
ACCEPT_EULA |
Zustimmung zu den Microsoft-Lizenzbedingungen |
MSSQL_PID |
SQL Server Edition, z. B. Express |
TZ |
Zeitzone des Containers |
MSSQL_DIRECTORY |
Lokaler Speicherort der SQL-Server-Daten |
Container starten
Wechseln Sie in das Verzeichnis des Docker-Projekts:
cd /opt/docker/mssql
Starten Sie anschließend den MSSQL-Container:
docker compose up -d
Der Container wird nun im Hintergrund gestartet.
Status prüfen
Prüfen Sie, ob der Container erfolgreich gestartet wurde:
docker compose ps
Die Ausgabe sollte zeigen, dass der Container läuft.
Zusätzlich können Sie die Protokolle des Containers anzeigen:
docker compose logs -f mssql
Warten Sie, bis der SQL-Server vollständig gestartet ist.
Verbindung zum SQL-Server
Nach erfolgreichem Start ist der SQL-Server unter folgender Adresse erreichbar:
Server-IP:MSSQL-Port
Beispiel bei Standardport:
203.0.113.1:1433
Als Benutzer verwenden Sie:
sa
Das Passwort entspricht dem Wert aus der .env-Datei:
MSSQL_SA_PASSWORD
Beispiel für eine Verbindung
Bei Verwendung des Standardports kann die Verbindung beispielsweise wie folgt aufgebaut werden:
| Feld | Wert |
|---|---|
| Server | Server-IP,1433 |
| Benutzer | sa |
| Passwort | Passwort aus MSSQL_SA_PASSWORD |
| Authentifizierung | SQL Server-Authentifizierung |
Je nach Client-Programm muss der Port mit Komma statt Doppelpunkt angegeben werden.
Beispiel:
203.0.113.1,1433
Container verwalten
Den Container stoppen Sie mit:
cd /opt/docker/mssql
docker compose down
Den Container erneut starten Sie mit:
docker compose up -d
Die Logs können jederzeit mit folgendem Befehl angezeigt werden:
docker compose logs -f mssql
Hinweise zur Sicherheit
Wenn der SQL-Server über das Internet erreichbar ist, sollten Sie besonders auf die Sicherheit achten.
Empfohlen wird:
- Verwenden Sie ein sehr starkes
sa-Passwort. - Geben Sie den SQL-Port nur für bekannte IP-Adressen frei, wenn möglich.
- Verwenden Sie nach Möglichkeit nicht den Standardport
1433. - Erstellen Sie für Anwendungen eigene SQL-Benutzer.
- Nutzen Sie den
sa-Benutzer nicht dauerhaft für Anwendungen. - Führen Sie regelmäßige Datensicherungen durch.
- Halten Sie Ubuntu, Docker und den SQL-Server-Container aktuell.
Beispiel für eine eingeschränkte Firewall-Freigabe auf eine feste Client-IP:
sudo ufw allow from CLIENT-IP to any port 1433 proto tcp
Fertigstellung
Damit ist die Installation abgeschlossen.
Der Microsoft SQL Server läuft nun als Docker-Container auf dem Ubuntu-Server und speichert seine Daten dauerhaft unter:
/opt/docker/mssql/data
Der Server ist – bei passender Firewall-Freigabe – über folgende Adresse erreichbar:
Server-IP:MSSQL-Port
Beispiel:
203.0.113.1:1433
Die Einrichtung war erfolgreich, wenn der Container läuft und sich ein SQL-Client mit dem Benutzer sa und dem hinterlegten Passwort verbinden kann.