= Server setup

== Setup scripts

`ssh` as `root`:

[source,bash]
----
ssh root@SERVER_NAME
----

Run the following (as root):

[source,bash]
----
# Install needed packages
apt update
apt install sudo python3 git -y

# Add a sudo user with the name 'admin'
sudo useradd admin
sudo usermod -aG sudo admin
sudo mkhomedir_helper admin

# Enter a new password for 'admin'
sudo passwd admin

# Break the SSH connection
exit
----

`ssh` again with the new user `admin` and password:

[source,bash]
----
ssh admin@SERVER_NAME
----

Clone the repository with `git clone` into `/home/admin/advlabdb`. Then `cd` into the new cloned repository:

[source,bash]
----
cd ~/advlabdb
----

[source,bash]
----
cp advlabdb/scripts/setup/advlabdb.conf.template advlabdb/scripts/setup/advlabdb.conf
----

Change `server_name` in `advlabdb/scripts/setup/advlabdb.conf` to your SERVER_NAME.

[source,bash]
----
cp .env.template .env
----

Generate secrets for `.env`:
[source,bash]
----
python3 advlabdb/scripts/setup/generate_secrets.py
----

Fill the secrets generated using the last script into `.env`.

Enter your SERVER_NAME in `.env`.

Run the following:

[source,bash]
----
# Run server setup script
python3 advlabdb/scripts/setup/server_setup.py
----

After reboot:

[source,bash]
----
poetry run python3 -m advlabdb.scripts.setup.init_database
----

== Stop ssh to root
// TODO: Add blocking password access

IMPORTANT: This step is important for security!

Change

----
PermitRootLogin yes
----

to

----
PermitRootLogin no
----

in the config file `/etc/ssh/sshd_config`
