Wiki » Debian konfiguracja usług »
Przygotowanie partycji¶
Udziały Stripe i RAID do trzymania danych docker PokażUkryj
Stripe dla danych typu logi, stare obrazy
VGNAME=lxc1; \
lvcreate -L60G --type raid0 -i 2 -n lxc-${NAME}-stripe ${VGNAME} /dev/sdb2 /dev/sdc2; \
mkfs.xfs /dev/${VGNAME}/lxc-${NAME}-stripe;
Udział RAID dla danych typu konfiguracja, baza danych itp.
VGNAME=lxc1; \
lvcreate -L40G -n lxc-${NAME}-raid1 ${VGNAME}; \
lvconvert --type raid1 /dev/${VGNAME}/lxc-${NAME}-raid1 /dev/sdae1; \
mkfs.xfs /dev/${VGNAME}/lxc-${NAME}-raid1;
Mount zasobów
mkdir -p /var/lib/lxc/${NAME}/rootfs/home/storage/{raid1,stripe}; \
mount /dev/${VGNAME}/lxc-${NAME}-stripe /var/lib/lxc/${NAME}/rootfs/home/storage/stripe; \
mount /dev/${VGNAME}/lxc-${NAME}-raid1 /var/lib/lxc/${NAME}/rootfs/home/storage/raid1; \
echo -e "/dev/${VGNAME}/lxc-${NAME}-stripe \t /var/lib/lxc/${NAME}/rootfs/home/storage/stripe \t xfs \t defaults \t 0 \t 0" >> /etc/fstab; \
echo -e "/dev/${VGNAME}/lxc-${NAME}-raid1 \t /var/lib/lxc/${NAME}/rootfs/home/storage/raid1 \t xfs \t defaults \t 0 \t 0" >> /etc/fstab;
Docker¶
Instalacja docker-ce PokażUkryj
apt-get install docker-cli docker-compose docker.io; \ touch /etc/docker/docker-compose.yaml
Konfiguracja Network¶
Przykład definicji własnej sieci PokażUkryj
networks:
justnet:
ipam:
config:
- subnet: 172.19.0.0/26
gateway: 172.19.0.1
Przypisanie sieci do service PokażUkryj
networks:
justnet:
ipv4_address: 172.19.2.21
HAProxy¶
apt-get install haproxy; \
\
mkdir -p /etc/gen/firewall/host\:${SERVER_IP}/80\:tcp\:http; \
mkdir -p /etc/gen/firewall/host\:${SERVER_IP}/443\:tcp\:https; \
- Frontend PokażUkryj
frontend http-in bind x.x.x.x:80 #bind x.x.x.x:443 ssl crt /etc/letsencrypt/live/XYZ.justnet.pl/fullchain.pem mode http http-request redirect scheme https unless { ssl_fc } # Strip port from Host header http-request replace-value Host (.*):.* \1 - Ograniczenie dostępu do zasobów np. MGTM PokażUkryj
Dodajemy ACL w sekcji frontend:
acl network_allowed src x.x.x.x http-request deny if host-is-${NAME} !network_allowed !is_letsencrypt-acl
Konfiguracja SSL
Konfiguracja HAProxy PokażUkryj
Dodanie SSL na 443 w sekcji frontend
#bind :443 ssl crt /etc/letsencrypt/live/fullchains/fullchain.pem
Dodanie przekierowania w sekcji frontend:
acl is_letsencrypt-acl path_beg /.well-known/acme-challenge/ use_backend letsencrypt-backend if is_letsencrypt-acl
Dodanie backend:
backend letsencrypt-backend server letsencrypt 127.0.0.1:8888
Dodanie przekierowanie HTTP do HTTPS w sekcji frontend
http-request redirect scheme https unless { ssl_fc }
Przykład pełnego wpisu
frontend http-in
bind :80
#bind :443 ssl crt /etc/letsencrypt/live/fullchains/cert.pem
mode http
http-request redirect scheme https unless { ssl_fc }
# Strip port from Host header
http-request replace-value Host (.*):.* \1
acl is_letsencrypt-acl path_beg /.well-known/acme-challenge/
use_backend letsencrypt-backend if is_letsencrypt-acl
backend letsencrypt-backend
server letsencrypt 127.0.0.1:8888
Pobranie konfiguracji przez certbot PokażUkryj
echo -e '#!/bin/bash -x' "\n\n" >> /etc/haproxy/certbot.sh
echo "certbot -m webmaster@justnet.pl --agree-tos certonly --standalone --preferred-challenges http-01 --http-01-port 8888 --http-01-address 127.0.0.1 -d domain1.xyz -d domain1.xyz" >> /etc/haproxy/certbot.sh; \
chmod +x /etc/haproxy/certbot.sh; \
bash /etc/haproxy/certbot.sh; \
\
for domain in `find /etc/letsencrypt/live/* -maxdepth 1 -type d|xargs`; do ln -s ${domain}/privkey.pem ${domain}/fullchain.pem.key; done;
Podajemy port 8888 na którym słucha certbot, na port 8888 zostanie przekierowane zapytanie przez HAProxy z portu 80