Для организации данного сервиса был выбран облачный дистрибутив Arch Linux, который в последующем был использован в Proxmox VE по средствам клонирования шаблона созданного следующим скриптом:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#!/bin/bash
VM_ID=$1
VM_IMAGE=$2
STORAGE='storage'
MEMORY=2048
if [ -z $VM_ID ] || [ -z $VM_IMAGE ]; then
printf "Using:\n import_vm.bash [VM ID] [disk image]\n"
exit 1
fi
re='^[0-9]+$'
if ! [[ $VM_ID =~ $re ]]; then
echo "VM ID must be a number value $1"
exit 2
fi
qm create ${VM_ID} --memory ${MEMORY} --net0 virtio,bridge=vmbr0
qm importdisk ${VM_ID} ${VM_IMAGE} ${STORAGE}
qm set ${VM_ID} --scsihw virtio-scsi-pci --scsi0 ${STORAGE}:vm-${VM_ID}-disk-0
qm set ${VM_ID} --ide2 ${STORAGE}:cloudinit
qm set ${VM_ID} --boot c --bootdisk scsi0
qm set ${VM_ID} --serial0 socket --vga serial0
qm template ${VM_ID}
|
Скрипт принимает на входе желаемый ID шаблона создаваемой виртуальной машины и имя файла образа диска облачного дистрибутива. После создания шаблона ВМ, нужно его клонировать, подтюнить необходимые параметры ВМ, запустить, и далее перейти уже непосредственно к ее настройке, подключившись к ней через SSH.
1 Настройка сервера MinIO
Обновляем список пакетов:
Устанавливаем пакет сервера:
Правим файл настроек /etc/minio/minio.conf
:
1
2
3
4
5
6
7
8
9
10
11
12
|
# Local export path.
MINIO_VOLUMES="/srv/minio/data/"
# Server user.
MINIO_ROOT_USER=admin
# Server password.
MINIO_ROOT_PASSWORD=admin-password
# Use if you want to run Minio on a custom port.
MINIO_OPTS="--address :9000 --console-address :9001"
# Server API URL
MINIO_SERVER_URL=https://minio.your-domain.com
# Server Console URL
MINIO_BROWSER_REDIRECT_URL=https://console.your-domain.com
|
Включаем данный сервис в системе:
И запускаем его:
Следует обратить внимание, что в приведенном выше примере конфигурации используются переменные MINIO_SERVER_URL
и MINIO_BROWSER_REDIRECT_URL
- это сделано для того чтобы сервис мог корректно работать через проксирующий сервер, в качестве которого используется NGINX. Часть конфигурация самого NGINX для проксирования выглядит примерно следующим образом:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
server {
server_name minio.your-domain.com;
listen 80
listen [::]:80
access_log /var/log/nginx/minio.your-dimain.com-access.log;
error_log /var/log/nginx/minio.your-domain.com-error.log;
# To allow special characters in headers
ignore_invalid_headers off;
# Allow any size file to be uploaded.
# Set to a value such as 1000m; to restrict file size to a specific value
client_max_body_size 0;
# To disable buffering
proxy_buffering off;
proxy_request_buffering off;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 300;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
proxy_pass http://<IP address of MinIO service>:9000;
}
}
server {
server_name console.your-domain.com;
listen 80
listen [::]:80
access_log /var/log/nginx/console.your-domain.com-access.log;
error_log /var/log/nginx/console.your-domain.com-error.log;
# To allow special characters in headers
ignore_invalid_headers off;
# Allow any size file to be uploaded.
# Set to a value such as 1000m; to restrict file size to a specific value
client_max_body_size 0;
# To disable buffering
proxy_buffering off;
proxy_request_buffering off;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
# This is necessary to pass the correct IP to be hashed
real_ip_header X-Real-IP;
proxy_connect_timeout 300;
# To support websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
chunked_transfer_encoding off;
proxy_pass http://<IP address of MinIO service>:9001;
}
}
|
Далее нужно использовать certbot --nginx
и получить соответствующие сертификаты. После чего можно начинать пользоваться полученным сервисом.