Menyiapkan penerimaan otomatis sertifikat letsencrypt menggunakan buruh pelabuhan di linux

Saya baru saja mengubah server virtual, dan harus mengkonfigurasi semuanya lagi. Saya lebih suka situs ini dapat diakses melalui https dan sertifikat letsencrypt diperoleh dan diperbarui secara otomatis. Hal ini dapat dicapai dengan menggunakan dua gambar buruh pelabuhan nginx-proxy dan nginx-proxy-companion.

Ini adalah panduan cara menyiapkan situs web di Docker, dengan proxy yang secara otomatis menerima sertifikat SSL. Server virtual CentOS 7 digunakan.

Saya berasumsi bahwa server telah dibeli, dikonfigurasi, login menggunakan kunci, fail2ban diinstal, dll.

Pertama, Anda perlu menginstal buruh pelabuhan.

  1. Pertama, Anda perlu menginstal dependensi
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Hubungkan repositori
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Kemudian instal edisi komunitas buruh pelabuhan
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Tambahkan buruh pelabuhan ke startup dan jalankan
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Tambahkan pengguna ke grup buruh pelabuhan untuk dapat menjalankan buruh pelabuhan tanpa sudo
    $ usermod -aG docker user

Langkah selanjutnya adalah menginstal docker-compose. Utilitas ini dapat diinstal dengan beberapa cara, tetapi saya lebih suka menginstal melalui pip manager dan virtualenv, agar tidak mengacaukan sistem dengan paket yang tidak diperlukan.

  1. Instal pip
    $ sudo yum install python-pip
  2. Instal virtualenv
    $ pip install virtualenv
  3. Selanjutnya Anda perlu membuat folder dengan proyek dan menginisialisasinya. Folder dengan semua yang Anda perlukan untuk mengelola paket akan diberi nama ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Untuk mulai menggunakan lingkungan virtual, Anda perlu menjalankan perintah berikut di folder proyek.
    $ source ve/bin/activate
  5. Anda dapat menginstal komposisi buruh pelabuhan.
    pip install docker-compose

    Agar container dapat saling melihat, kita akan membuat jaringan. Secara default, driver jembatan digunakan.

    $ docker network create network

    Selanjutnya Anda perlu mengkonfigurasi docker-compose, proxy akan berada di folder proxy, situs pengujian akan berada di folder pengujian. Misalnya saya menggunakan nama domain example.com

    $ mkdir proxy
    $ mkdir test
    $ touch proxy/docker-compose.yml
    $ touch test/docker-compose.yml

    Konten proksi/docker-compose.yml

    version: '3'
    
    networks:
      default:
        external:
          name: network
    
    services:
      nginx-proxy:
        container_name: nginx-proxy
        image: jwilder/nginx-proxy
        ports:
          - 80:80
          - 443:443
        volumes:
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/tmp/docker.sock:ro
    
      nginx-proxy-letsencrypt:
        container_name: nginx-proxy-letsencrypt
        image: jrcs/letsencrypt-nginx-proxy-companion
        volumes: 
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/var/run/docker.sock:ro
        environment:
          - NGINX_PROXY_CONTAINER=nginx-proxy
    
    volumes:
      certs:
      vhost.d:
      html:

    Variabel lingkungan NGINX_PROXY_CONTAINER wadah letsencrypt perlu melihat wadah proxy. Folder /etc/nginx/certs /etc/nginx/vhost.d dan /usr/share/nginx/html harus digunakan bersama oleh kedua container. Agar kontainer letsencrypt berfungsi dengan benar, aplikasi harus dapat diakses pada port 80 dan 443.

    Konten tes/buruh pelabuhan-compose.yml

    version: '3'
    
    networks:
      default:
        external:
          name: network
    
    services:
    
      nginx:
        container_name: nginx
        image: nginx:latest
        environment:
          - VIRTUAL_HOST=example.com
          - LETSENCRYPT_HOST=example.com
          - [email protected]

    Di sini, variabel lingkungan diperlukan agar proxy memproses permintaan ke server dengan benar dan meminta sertifikat untuk nama domain yang benar.

    Yang tersisa hanyalah menjalankan docker-compose

    $ cd proxy
    $ docker-compose up -d
    $ cd ../test
    $ docker-compose up -d

Sumber: www.habr.com

Tambah komentar