diff --git a/.editorconfig b/.editorconfig
index 538ba2b..108a3b1 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -3,3 +3,7 @@
 [*]
 indent_style = tab
 indent_size = 2
+
+[*.yml]
+indent_style = space
+indent_size = 2
diff --git a/.env.sample b/.env.sample
new file mode 100644
index 0000000..0e442e9
--- /dev/null
+++ b/.env.sample
@@ -0,0 +1,7 @@
+DB_SERVERNAME=db
+DB_USERNAME=root
+DB_PASSWORD=
+DB_NAME=pastanaga
+DB_USERS_DB=pastanaga
+DB_MORTS_DB=pastanaga_morts
+ADMIN_TOKEN=longRandomStringForTheAdminPages
diff --git a/.gitignore b/.gitignore
index 9672757..2bb202b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-credentials.php
+docker-compose.yml
+.env
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..1de3b54
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,4 @@
+FROM php:8.1-apache
+RUN docker-php-ext-install mysqli
+RUN docker-php-ext-enable mysqli
+COPY ./ /var/www/html/
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..b066708
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,11 @@
+MUTABLE_VERSION ?= latest
+VERSION ?= $(shell git rev-parse --short HEAD)
+
+IMAGE_PROD := avm99963/fisipastanagapp
+
+docker-prod: Dockerfile
+	docker build --force-rm -f Dockerfile --tag=$(IMAGE_PROD):$(VERSION) .
+	docker tag $(IMAGE_PROD):$(VERSION) $(IMAGE_PROD):$(MUTABLE_VERSION)
+
+push-prod: docker-prod
+	docker push $(IMAGE_PROD):$(VERSION)
diff --git a/admin/createtable.php b/admin/createtable.php
index 07ad979..9db621e 100644
--- a/admin/createtable.php
+++ b/admin/createtable.php
@@ -3,7 +3,7 @@
 	require '../php/utils.php';
 
 	$credentials = new Credentials();
-	if ($credentials->adminToken != ($_GET["token"] ?? "")) {
+	if ($credentials->adminToken() != ($_GET["token"] ?? "")) {
 		exit();
 	}
 	
@@ -28,6 +28,14 @@
 	  `curs` tinyint(1) NOT NULL,
 	  `grau` tinyint(1) NOT NULL,
 	  `data` timestamp NOT NULL DEFAULT current_timestamp()
+	)",
+	"CREATE TABLE IF NOT EXISTS `missatges` (
+		`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
+		`sender_id` int(11) NOT NULL,
+		`receiver_id` int(11) NOT NULL,
+		`timestamp` timestamp NOT NULL DEFAULT current_timestamp(),
+		`content` text NOT NULL,
+		`seen` tinyint(1) DEFAULT 0
 	)"];
 	
 	foreach ($queries as $query) if (!query($query)) die('An error ocurred. ' . $query);
diff --git a/admin/insert.php b/admin/insert.php
index 9f5abb2..3a22ca4 100644
--- a/admin/insert.php
+++ b/admin/insert.php
@@ -3,7 +3,7 @@
 	require '../php/utils.php';
 
 	$credentials = new Credentials();
-	if ($credentials->adminToken != ($_POST["token"] ?? "")) {
+	if ($credentials->adminToken() != ($_POST["token"] ?? "")) {
 		exit();
 	}
 
diff --git a/credentials.php b/credentials.php
new file mode 100644
index 0000000..600bfa5
--- /dev/null
+++ b/credentials.php
@@ -0,0 +1,31 @@
+<?php
+
+class Credentials {
+	public static function servername() {
+		return getenv('DB_SERVERNAME');
+	}
+
+	public static function username() {
+		return getenv('DB_USERNAME');
+	}
+
+	public static function password() {
+		return getenv('DB_PASSWORD');
+	}
+
+	public static function dbname() {
+		return getenv('DB_NAME');
+	}
+
+	public static function usersdb() {
+		return getenv('DB_USERS_DB');
+	}
+
+	public static function mortsdb() {
+		return getenv('DB_MORTS_DB');
+	}
+
+	public static function adminToken() {
+		return getenv('ADMIN_TOKEN');
+	}
+};
diff --git a/credentials.sample.php b/credentials.sample.php
deleted file mode 100644
index 7bd7010..0000000
--- a/credentials.sample.php
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-
-class Credentials {
-  public $servername = "";
-  public $username = "";
-  public $password = "";
-  public $dbname = "pastanaga";
-  public $usersdb = "pastanaga";
-  public $mortsdb = "pastanaga_morts";
-  public $adminToken = "longRandomStringForTheAdminPages";
-};
diff --git a/docker-compose.sample.yml b/docker-compose.sample.yml
new file mode 100644
index 0000000..6f8dc16
--- /dev/null
+++ b/docker-compose.sample.yml
@@ -0,0 +1,24 @@
+version: "3.5"
+
+services:
+  pastanagapp:
+    image: avm99963/fisipastanagapp
+    env_file: .env
+    ports:
+      - "8080:80"
+    depends_on:
+      - db
+    networks:
+      - backend
+    restart: unless-stopped
+  db:
+    image: mariadb
+    environment:
+      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
+      MARIADB_DATABASE: ${DB_NAME}
+    networks:
+      - backend
+    restart: unless-stopped
+
+networks:
+  backend:
diff --git a/php/change_password.php b/php/change_password.php
index 17d64bd..26cb709 100644
--- a/php/change_password.php
+++ b/php/change_password.php
@@ -6,7 +6,7 @@
 	Security::checkIsSignedIn();
 
 	$credentials = new Credentials();
-	$usersdb = $credentials->usersdb;
+	$usersdb = $credentials->usersdb();
 
 	date_default_timezone_set("Europe/Madrid");
 
diff --git a/php/db.php b/php/db.php
index 2043b87..1291b10 100644
--- a/php/db.php
+++ b/php/db.php
@@ -3,7 +3,7 @@
 
 // Create connection
 $credentials = new Credentials();
-$conn = new mysqli($credentials->servername, $credentials->username, $credentials->password, $credentials->dbname);
+$conn = new mysqli($credentials->servername(), $credentials->username(), $credentials->password(), $credentials->dbname());
 
 if ($conn->connect_error) die("Connection failed: " . $conn->connect_error);
 $conn->set_charset("utf8");
diff --git a/php/login.php b/php/login.php
index f86aa68..c06149e 100644
--- a/php/login.php
+++ b/php/login.php
@@ -4,7 +4,7 @@
 	require_once("security.php");
 
 	$credentials = new Credentials();
-	$usersdb = $credentials->usersdb;
+	$usersdb = $credentials->usersdb();
 
 	date_default_timezone_set("Europe/Madrid");
 	
diff --git a/php/request.php b/php/request.php
index ac2c8cf..39f17dd 100644
--- a/php/request.php
+++ b/php/request.php
@@ -3,8 +3,8 @@
 	require 'utils.php';
 
 	$credentials = new Credentials();
-	$usersdb = $credentials->usersdb;
-	$mortsdb = $credentials->mortsdb;
+	$usersdb = $credentials->usersdb();
+	$mortsdb = $credentials->mortsdb();
 
 	// Do the query
 	$queries = [""];
diff --git a/php/security.php b/php/security.php
index 9842f3b..7f441ca 100644
--- a/php/security.php
+++ b/php/security.php
@@ -30,7 +30,7 @@
 
 		$credentials = new Credentials();
 
-		$query = $conn->prepare("SELECT id, password FROM ".$credentials->usersdb." WHERE id = ?");
+		$query = $conn->prepare("SELECT id, password FROM ".$credentials->usersdb()." WHERE id = ?");
 		$query->bind_param("i", $id);
 
 		$query->execute();
diff --git a/php/send_thread.php b/php/send_thread.php
index 131627d..5e03843 100644
--- a/php/send_thread.php
+++ b/php/send_thread.php
@@ -3,6 +3,7 @@
   require 'utils.php';
 	require_once("security.php");
 
+	// Yup, this is a f*ature, not a b*g. Please be responsible when exploit*ng this :) Have fun with it, but please don't cross the line!
   $victimid = (int)$_POST["victim-id"];
   $killerid = (int)$_POST["killer-id"];
   $msgcontent = mysqli_real_escape_string($conn, $_POST["msg-content"]);
diff --git a/php/utils.php b/php/utils.php
index 1c41567..80c5d84 100644
--- a/php/utils.php
+++ b/php/utils.php
@@ -55,8 +55,8 @@
 		$users = [];
 
 		$credentials = new Credentials();
-		$usersdb = $credentials->usersdb;
-		$mortsdb = $credentials->mortsdb;
+		$usersdb = $credentials->usersdb();
+		$mortsdb = $credentials->mortsdb();
 
 		// Prepare the query
 		$query = "SELECT * FROM $usersdb";
diff --git a/ranking.php b/ranking.php
index c447b80..c682d64 100644
--- a/ranking.php
+++ b/ranking.php
@@ -12,8 +12,8 @@
 	require './php/utils.php';
 	
 	$credentials = new Credentials();
-	$usersdb = $credentials->usersdb;
-	$mortsdb = $credentials->mortsdb;
+	$usersdb = $credentials->usersdb();
+	$mortsdb = $credentials->mortsdb();
 	
 	// Mateix grau i curs => 100, Mateix grau diferent curs => 150, Diferent grau => 200
 	$getranking = "SELECT $mortsdb.assassi AS id, $usersdb.nom, $usersdb.grau, $usersdb.curs, count($mortsdb.assassi) AS kills,
