Всё делаю на ВМ и в процессе установки добавляю еще один диск для больших объёмов данных и точку монтирования /portainer-data
cat /etc/fstab
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
# / was on /dev/ubuntu-vg/ubuntu-lv during curtin installation
/dev/disk/by-id/dm-uuid-LVM-kmVAQlOe219swsa9PbKu4nlQyx9zOdBMfH11L3dkdBMhlaxXB953wbr9uLx617aG / ext4 defaults 0 0
# /portainer-data was on /dev/vg01/lv-01 during curtin installation
/dev/disk/by-id/dm-uuid-LVM-NV3K1uWII2O5hpfkyfQdvJpw7yu35WnY8vuAa1jIqwCrrhRY7Aw72v8vif3mmF0Y /portainer-data ext4 defaults 0 0
# /boot was on /dev/sda2 during curtin installation
/dev/disk/by-uuid/53737001-32a8-4698-8797-050d7c243610 /boot ext4 defaults 0 0
/swap.img none swap sw 0 0
sudo su && apt update && apt dist-upgrade -y && reboot now
sudo apt install -y linux-image-extra-virtual apt-transport-https ca-certificates curl software-properties-common && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" && sudo apt update
Убедитесь, что установка будет выполняться из репозитория Docker, а не из репозитория Ubuntu по умолчанию:
apt-cache policy docker-ce
Вы должны получить следующий вывод, хотя номер версии Docker может отличаться:
docker-ce:
Installed: (none)
Candidate: 5:20.10.2~3-0~ubuntu-focal
Version table:
5:20.10.2~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
Ставим docker community edition
sudo apt install docker-ce -y
Docker должен быть установлен, демон-процесс запущен, а для процесса активирован запуск при загрузке. Проверьте, что он запущен:
sudo systemctl status docker
Если вы не хотите каждый раз вводить sudo при запуске команды docker, добавьте свое имя пользователя в группу docker:
sudo usermod -aG docker ${USER} && su - ${USER}
Проверьте, что ваш пользователь добавлен в группу docker, введя следующее:
id -nG
Затем я укажу где хранить образы докера: открываю файл на редактирование и добавляю следующее
sudo vi /etc/docker/daemon.json
{
"data-root": "/portainer-data/docker-images"
}
где /portainer-data/docker-images - точка монтирования и созданная папка docker-images
sudo systemctl daemon-reload && sudo systemctl restart docker
curl -L "https://github.com/docker/compose/releases/download/v2.14.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
Проверяем версию
docker-compose --version
docker volume create portainer_data && docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Проверяем, что portainer запущен
docker ps -a
Идем в браузер по http://ip-address:9000 и создаем пользователя
Затем выберите метод подключения: для начала можно подключиться к локальному сервису Docker, для чего выбираем Local
Нажимаем Connect - вы в панели управления докерами )
Например, в разделе Containers можно посмотреть все доступные контейнеры:
А в разделе Stacks - все доступные приложения.
создаем сеть proxynet
docker network create proxynet
Запускаем контейнер, но не забываем сменить:
MYDOMAIN.ru на свой домен
поддомены doc,it, на свои
почтовый адрес
docker run -i -t -d --name=swag \
--cap-add=NET_ADMIN \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/Moscow \
-e URL=MYDOMAIN.ru \
-e SUBDOMAINS=doc,it, \
-e VALIDATION=http \
-e EMAIL=Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. \
-e ONLY_SUBDOMAINS=true \
-e STAGING=false \
-p 443:443 \
-p 80:80 \
-v /home/grif/swag_data/config:/config \
--restart unless-stopped \
--network="proxynet" \
ghcr.io/linuxserver/swag
Для принудительного досрочного перевыпуска сертификатов заходим в контейнер SWAG и запускаем скрипт перевыпуска:
docker exec -it ID-контейнера /bin/bash
/app/le-renew.sh
sudo su
mkdir -p /portainer-data/grif/appdata/jitsi/jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody,jicofo,jvb,jigasi,jibri}
mkdir -p /portainer-data/grif/appdata/jitsi/github && cd /portainer-data/grif/appdata/jitsi/github
git clone https://github.com/jitsi/docker-jitsi-meet && cd docker-jitsi-meet
Открываем на редактирование env.example и последовательно меняем строки
vi env.example
CONFIG=~/.jitsi-meet-cfg
CONFIG=/portainer-data/grif/appdata/jitsi/jitsi-meet-cfg/
TZ=UTC
TZ=Europe/Moscow
#PUBLIC_URL=https://meet.example.com
PUBLIC_URL=https://telemed.mydomain.ru
#DOCKER_HOST_ADDRESS=192.168.1.1
DOCKER_HOST_ADDRESS=192.168.88.200
#ENABLE_AUTH=1
ENABLE_AUTH=1
#ENABLE_GUESTS=1
ENABLE_GUESTS=1
#AUTH_TYPE=internal
AUTH_TYPE=internal
В терминале
cp env.example .env
./gen-passwords.sh
docker-compose up -d
Далее в web-интерфейсе portainer заходим в 4 контейнера:
docker-jitsi-meet_jicofo_1
docker-jitsi-meet_jvb_1
docker-jitsi-meet_prosody_1
docker-jitsi-meet_web_1
и присоединяем их к заранее созданной сети proxynet, из сети бриджа выходим и переименовываем контейнеры по схеме:
docker-jitsi-meet_jvb_1 -> video.meet.jitsi
docker-jitsi-meet_jicofo_1 -> focus.meet.jitsi
docker-jitsi-meet_prosody_1 -> xmpp.meet.jitsi
docker-jitsi-meet_web_1 -> meet.jitsi
Кладем файл jitsimeet.subdomain.conf следующего содержания в папку /home/grif/swag_data/config/nginx/proxy-confs/
cat /home/grif/swag_data/config/nginx/proxy-confs/jitsimeet.subdomain.conf
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name telemed.*;
include /config/nginx/ssl.conf;
location / {
# enable the next two lines for http auth
# auth_basic "Ask for password from your organisation";
# auth_basic_user_file /config/nginx/.htpasswd;
ssi on;
proxy_pass http://meet.jitsi;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
}
# BOSH
location /http-bind {
proxy_pass http://xmpp.meet.jitsi:5280/http-bind;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
}
# xmpp websockets
location /xmpp-websocket {
proxy_pass http://xmpp.meet.jitsi:5280/xmpp-websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
tcp_nodelay on;
}
}
Перезапускаем контейнер SWAG и ГОТОВО!
Заходим по адресу https://telemed.mydomain.ru
Управление пользователями: заходим в контейнер:
docker exec -it xmpp.meet.jitsi bash
Зарегистрировать пользователя grif с паролем VeryStrongPa$$word
prosodyctl --config /config/prosody.cfg.lua register grif meet.jitsi VeryStrongPa$$word
Отменить регистрацию пользователя grif
prosodyctl --config /config/prosody.cfg.lua unregister grif meet.jitsi
Если нужно поменять логотип, картинку или надписи на стартовом экране, то:
Копируем из докера папку с сайтом
docker cp meet.jitsi:/usr/share/jitsi-meet/ /home/grif/jitsi-meet
Правим содержимое сайта и картинки как нам угодно и заливаем обратно )
docker cp /home/grif/jitsi-meet/ meet.jitsi:/usr/share/
Перезапускаем контейнер
docker restart meet.jitsi
Не забываем пробросить на тачку с докерами порты:
TCP - 80,443
UDP - 10000