Skip to content

Hetzner Server Setup with Docker & NGINX

This guide walks you through setting up a fresh Hetzner VPS with Docker, NGINX Proxy Manager, and Portainer for container management.


🧱 1. Initialize Hetzner Ubuntu Server

Connect to your server:

Can be done through SSH

ssh root@your.server.ip

Or through the Hetzner Server Console

adduser youruser
usermod -aG sudo youruser
su - youruser

Update system:

sudo apt update && sudo apt upgrade -y

🐳 2. Install Docker (Quick Install)

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker  # OR log out and back in

Enable Docker to start on boot:

sudo systemctl enable docker


🧭 3. Install Docker Compose

sudo apt install docker-compose-plugin -y

📦 4. Deploy NGINX Proxy Manager

Create folder and Docker Compose file:

mkdir -p ~/npm && cd ~/npm
nano docker-compose.yml

Paste:

version: '3'
services:
  npm:
    image: jc21/nginx-proxy-manager:latest
    container_name: nginx-proxy-manager
    restart: always
    ports:
      - "80:80"
      - "81:81"
      - "443:443"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

Launch:

docker compose up -d

Access Web UI:

http://your.server.ip:81
Default login: admin@example.com / changeme


Create Docker volume for Portainer:

docker volume create portainer_data

Deploy Portainer:

docker run -d \
  -p 8000:8000 \
  -p 9443:9443 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Access Portainer:

Visit https://your.server.ip:9443 to set up your admin account.


📋 Post-Setup Checklist

  • Docker is running and enabled at boot
  • NGINX Proxy Manager is accessible
  • Portainer is accessible (if installed)
  • All containers have restart: always set
  • Basic firewall rules are in place (if needed)

🔒 Security Recommendations

  1. Update the default NGINX Proxy Manager credentials
  2. Set a strong Portainer admin password
  3. Consider setting up UFW (Uncomplicated Firewall):
    sudo ufw allow ssh
    sudo ufw allow http
    sudo ufw allow https
    sudo ufw allow 9443  # For Portainer
    sudo ufw enable
    

Author: Wesley Ordonez
Last updated: April 14, 2025