diff --git a/src/server/apache-conf/000-default.conf b/src/server/apache-conf/000-default.conf
new file mode 100644
index 0000000..bbcdc62
--- /dev/null
+++ b/src/server/apache-conf/000-default.conf
@@ -0,0 +1,35 @@
+
+ ServerName cyberhex.srv
+ DocumentRoot /var/www/html
+
+ #SSLEngine on
+ #SSLCertificateFile /etc/apache2/certs/fullchain.pem
+ #SSLCertificateKeyFile /etc/apache2/certs/privkey.pem
+ #SSLCertificateChainFile /etc/apache2/certs/chain.pem
+
+
+ Options FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+
+
+ ServerName cyberhex.srv
+ DocumentRoot /var/www/html
+
+ SSLEngine on
+ SSLCertificateKeyFile /etc/apache2/certs/privkey.pem
+ SSLCertificateFile /etc/apache2/certs/fullchain.pem
+# SSLCertificateChainFile /etc/apache2/certs/fullchain.pem
+
+
+ Options FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+
diff --git a/src/server/cyberhex-code/install.php b/src/server/cyberhex-code/install.php
new file mode 100644
index 0000000..fe74ac9
--- /dev/null
+++ b/src/server/cyberhex-code/install.php
@@ -0,0 +1,48 @@
+connect_error) {
+ die("Connection failed: " . $conn->connect_error);
+}
+
+// Create database
+$sql = "CREATE DATABASE IF NOT EXISTS $database";
+if ($conn->query($sql) === TRUE) {
+ echo "Database created successfully\n";
+} else {
+ echo "Error creating database: " . $conn->error;
+}
+
+$conn->close();
+
+// Connect to the new database
+$conn = new mysqli($servername, $username, $password, $database);
+
+// Check connection
+if ($conn->connect_error) {
+ die("Connection failed: " . $conn->connect_error);
+}
+
+// Create sample tables
+$sql = "CREATE TABLE IF NOT EXISTS users (
+ id INT AUTO_INCREMENT PRIMARY KEY,
+ username VARCHAR(255) NOT NULL,
+ email VARCHAR(255) NOT NULL
+)";
+
+if ($conn->query($sql) === TRUE) {
+ echo "Table 'users' created successfully\n";
+} else {
+ echo "Error creating table: " . $conn->error;
+}
+
+$conn->close();
+?>
diff --git a/src/server/docker-compose.yml b/src/server/docker-compose.yml
new file mode 100644
index 0000000..3469c2d
--- /dev/null
+++ b/src/server/docker-compose.yml
@@ -0,0 +1,45 @@
+version: '3.8'
+
+services:
+ cyberhex-db:
+ image: mysql:latest
+ container_name: cyberhex-db
+ environment:
+ MYSQL_ROOT_PASSWORD: 1234
+ networks:
+ cyberhex-network:
+ ipv4_address: 192.168.178.2
+# ports:
+# - "3306:3306"
+ volumes:
+ - cyberhex-db-storage:/var/lib/mysql
+
+ cyberhex-srv:
+ build:
+ context: .
+ dockerfile: srv_dockerfile
+ container_name: cyberhex-srv
+ networks:
+ cyberhex-network:
+ ipv4_address: 192.168.178.3
+ ports:
+ - "80:80"
+ - "443:443"
+ depends_on:
+ - cyberhex-db
+ volumes:
+ - ./cyberhex-code:/var/www/html
+ - ./apache-conf:/etc/apache2/sites-available
+ - ./certs:/etc/apache2/certs
+
+networks:
+ cyberhex-network:
+ driver: bridge
+ ipam:
+ driver: default
+ config:
+ - subnet: 192.168.178.0/24
+
+volumes:
+ cyberhex-db-storage:
+ external: true
diff --git a/src/server/install.txt b/src/server/install.txt
new file mode 100644
index 0000000..6041882
--- /dev/null
+++ b/src/server/install.txt
@@ -0,0 +1,5 @@
+1: download the file docker-compose.yml and the folder cyberhex-code
+2: create the cyberhex-db-storage volume
+3: request some ssl certs via certbot form letsencrypt and put them into certs/
+sudo certbot certonly --manual --preferred-challenges=http --http-01-port=8080
+3: use docker-compose up to start the whole thing
diff --git a/src/server/srv_dockerfile b/src/server/srv_dockerfile
new file mode 100644
index 0000000..bd0dee6
--- /dev/null
+++ b/src/server/srv_dockerfile
@@ -0,0 +1,7 @@
+# Extend the official PHP image
+FROM php:apache
+
+# Install the mysqli extension
+RUN docker-php-ext-install mysqli
+RUN a2enmod ssl
+RUN service apache2 restart