Linux Server Initial Setup
Installing Docker and Setting Up the System
This guide introduces setting up a server with Docker and organizing sections to help users get started with development environments.
Sections
- From Source on a Computer: Direct installation on a local system.
- Within a Dockerfile: Create a base Dockerfile for repeatable setups.
- Remotely with Ansible: Automate Docker setup across multiple servers.
- Without Docker: General system preparation without Docker.
From Source on a Computer
Source: Docker Official Documentation
# Step 1: Install sudo and update the system apt install -y sudo sudo apt update sudo apt upgrade -y # Step 2: Enable unattended-upgrades sudo apt install -y unattended-upgrades sudo sh -c 'echo "APT::Periodic::Update-Package-Lists \"1\"; APT::Periodic::Unattended-Upgrade \"1\";" > /etc/apt/apt.conf.d/20auto-upgrades' # Step 3: Install basic tools sudo apt install -y git ca-certificates curl rsync pass p7zip-full unzip fail2ban ufw sudo install -m 0755 -d /etc/apt/keyrings # Step 4: Set up Docker sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the Docker repository to Apt sources echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Step 5: Install Docker sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # Step 6: Add current user to the Docker group sudo usermod -aG docker $USER
Remotely Setting Up with Ansible
Automate Docker setup on remote servers using this Ansible playbook:
--- - name: Install Docker on remote servers hosts: all become: yes tasks: - name: Update and upgrade the system apt: update_cache: yes upgrade: dist - name: Install essential packages apt: name: - sudo - git - ca-certificates - curl - rsync - p7zip-full - unzip state: present - name: Add Docker GPG key command: > curl -fsSL https://download.docker.com/linux/debian/gpg -o /usr/share/keyrings/docker.gpg - name: Add Docker repository lineinfile: path: /etc/apt/sources.list.d/docker.list line: > deb [arch={{ ansible_architecture }} signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable - name: Install Docker apt: name: - docker-ce - docker-ce-cli - containerd.io state: present - name: Add user to Docker group user: name: "{{ ansible_user }}" groups: docker append: yes
Without Docker
If Docker is not needed, follow these steps for a basic system setup:
# Step 1: Install sudo and update the system apt install -y sudo sudo apt update sudo apt upgrade -y # Step 2: Install basic tools sudo apt install -y git ca-certificates curl rsync pass p7zip-full unzip fail2ban ufw # Step 3: Enable unattended-upgrades sudo apt install -y unattended-upgrades sudo sh -c 'echo "APT::Periodic::Update-Package-Lists \"1\"; APT::Periodic::Unattended-Upgrade \"1\";" > /etc/apt/apt.conf.d/20auto-upgrades' # Step 4: Reload necessary services systemctl reload postfix