Setup

Server Setup

  • Login to the server via SSH as root
  • Install sudo, create the main user, and add him to the sudoers group
    # apt install sudo
    # adduser <user>
    # vi /etc/group (add <user> to line "sudo:x:27:<user>")
  • (VPS) change the machine name:
    sudo edit /etc/hostname
    sudo edit /etc/hosts
  • enable force_color_prompt=yes in file ~/.bashrc
  • copy /home/user/.bashrc to /root and modify PS1 prompt color (32m –> 31m)

Security

  • Configure SSH Access
  • Install UFW Firewall
  • Disable root login by changing file /etc/passwd from line 1 to line 2
    root:x:0:0:root:/root:/bin/bash
    root:x:0:0:root:/root:/sbin/nologin

Install and configure packages

  • Additional packages
    $ sudo apt update
    $ sudo apt install vim
    $ sudo apt install zip
    $ sudo apt install rename
    $ sudo apt install rsync
    $ sudo apt install openjdk-17-jre openjdk-17-jdk
  • Change visudo editor
    $ sudo update-alternatives --config editor

System Startup

Debian 11 uses Systemd, not SysV, that's why your commands in /etc/rc.local file would not run at system boot time. This guide explains how to enable /etc/rc.local script to run on system startup.

  1. Create a rc.local unit file, follow Services - rc.local
  2. Create file rc.local in /etc with the following content:
    vim /etc/rc.local
    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    exit 0
  3. Add execute permissions and start daemon:
    chmod +x /etc/rc.local
    systemctl daemon-reload
    systemctl start rc-local
    systemctl status rc-local
    
    ● rc-local.service - /etc/rc.local Compatibility
       Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: 
      Drop-In: /lib/systemd/system/rc-local.service.d
               └─debian.conf
       Active: active (exited) since Sun 2019-05-05 10:55:29 +07; 11min ago
      Process: 1443 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
        Tasks: 0 (limit: 4915)
       CGroup: /system.slice/rc-local.service

System Shutdown

  1. Put a symbolic link to the script to be run at shutdown into /lib/systemd/system-shutdown