@Nikityanskiy01

Как настроить caprover и docker?

Шел третий день моих пыток. Я уже начинаю думать что я далеко неувереный пользователь ПК каким я себя считал. Рассказываю суть: Начитался я всякого и понял, что мне нужен домашний сервак. Решил начать с развертывания caprover на докере. Сначала пробовал на винде, но решил что все таки надо на ubuntu. Нашел прекрасный гайд ГАЙД, изучил, но по нему что-то совсем не пошло, затем отправился на официальный сайт caprover и уже пошел по этому гайду. Казалось бы, установи ты докер и пропиши пару комманд и сиди довольный, но не тут то было. Сначала все ошибки я устранял сам, но на данный момент я в тупике.

Если я не ставлю docker desktop, то происходит след:
docker run -p 80:80 -p 443:443 -p 3000:3000 -e ACCEPTED_TERMS=true -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover
Unable to find image 'caprover/caprover:latest' locally
latest: Pulling from caprover/caprover
7264a8db6415: Pull complete 
751194035c36: Pull complete 
eff5dce73b38: Pull complete 
c8ce5be43019: Pull complete 
c6458455a173: Pull complete 
40c4b680317f: Pull complete 
4f4fb700ef54: Pull complete 
aeccc6266749: Pull complete 
2a38da3852b8: Pull complete 
Digest: sha256:905815f252fda652c99739214361ab1501b525f3063fa68b28bb19767a8b0247
Status: Downloaded newer image for caprover/caprover:latest
Captain Starting ...
Installing Captain Service ...
     
 Installation of CapRover is starting...     
For troubleshooting, please see: https://caprover.com/docs/troubleshooting.html
     
     
 
 
 
 >>> Checking System Compatibility <<<
   Docker Version passed.
   Ubuntu detected.
   X86 CPU detected.
   Total RAM 16591 MB
Pulling: nginx:1.24
Pulling: caprover/caprover-placeholder-app:latest
Pulling: caprover/certbot-sleeping:v1.6.0
January 24th 2024, 9:53:41.327 pm    Fresh installation!
January 24th 2024, 9:53:41.332 pm    Starting swarm at 5.35.114.211:2377
Installation failed.
Error: (HTTP code 400) bad parameter - must specify a listening address because the address to advertise is not recognized as a system address, and a system's IP address to use could not be uniquely identified 
    at /usr/src/app/node_modules/docker-modem/lib/modem.js:343:17
    at getCause (/usr/src/app/node_modules/docker-modem/lib/modem.js:373:7)
    at Modem.buildPayload (/usr/src/app/node_modules/docker-modem/lib/modem.js:342:5)
    at IncomingMessage.<anonymous> (/usr/src/app/node_modules/docker-modem/lib/modem.js:310:16)
    at IncomingMessage.emit (node:events:526:35)
    at endReadableNT (node:internal/streams/readable:1359:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  reason: 'bad parameter',
  statusCode: 400,
  json: {
    message: "must specify a listening address because the address to advertise is not recognized as a system address, and a system's IP address to use could not be uniquely identified"
  }
}


Тогда попробовал прописать
docker run -e ACCEPTED_TERMS=true -e "MAIN_NODE_IP_ADDRESS=АЙПИШНИК" -v /var/run/docker.sock:/var/run/docker.sock caprover/caprover

Но, теперь он ругается что у меня закрыт 80 порт, хотя это не так, порты открыл.

Методом проб и ошибок пришел к тому, что все таки docker desktop нужно поставить, поставил, контейнеры запустились, даже контейнеры запустились: 65b19016073ec744928343.png

Но, я не могу подключиться к caprover.
Также не работает настройка caprover serversetup
Происходит след:
sudo caprover serversetup


Setup CapRover machine on your server...

? have you already started CapRover container on your server? Yes
? IP address of your server: АЙПИ

You may have specified a wrong IP address or not already started CapRover container on your server!

Error: RequestError: Error: socket hang up

При этом, еще интереснее, удалил все связанное с docker, накатил заново, запускаю docker desktop, и тут сами создаются контейнеры, хотя я их не создавал...

Пожалуйста, крик души, уже хочется продать свой сервак на зеончике и уйти в закат.
Хочется услышать советы более опытных людей, можете даже говорить какой я чайник, я приму все оскарбления в свой адрес, но пожалуйста - ПОМОГИТЕ!!!

На данный момент проблема с получением доступа к веб интерфейсу caprover. Все порты открыты, все контейнеры открыты - доступа к веб интерфейсу нет.
  • Вопрос задан
  • 673 просмотра
Пригласить эксперта
Ответы на вопрос 3
AshBlade
@AshBlade
Просто хочу быть счастливым
Но, теперь он ругается что у меня закрыт 80 порт, хотя это не так, порты открыл.

Попробуй убрать пробрасывание портов у nginx.
Судя по всему Caprover подключается к 80 и 443 портам, которые заняты
Ответ написан
@StreetMagic14
Я так понимаю у вас отдельный сервер на зеоне?
Сносим все и ставим голую Ubuntu server 22, устанавливаем SSH (при установке убунты будет выбор)
Подключайтесь по SSH на своем компе, либо прямо на сервере делайте
Обновляем пакеты
sudo apt-get update
sudo apt-get install

Установить Docker Engine
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


У вас должен быть домен для быстрого доступа, если хотите конечно, там надо сделать запись А со значением * и вашем внешним IP.
Тут стоит отметить, что есть 3 вариации айпи, белый статичный, белый динамический и серый который находится на NAT провайдера. Определяем его так, заходим 2ip.ru и смотрим свой айпи, запоминаем и заходим в роутер смотрим свой айпи там, если совпадают, то вам повезло вы не за NAT, редко кто даёт статичный бесплатно, скорее всего у вас динамичный белый, а если совпадения нет, то вам придется купить статику если хотите чтоб ваш сервер был доступен извне.
  • Первый вариант белый статичный, делать ничего не надо, просто пишем его
  • Второй вариант белый динамичный, для проверки CapRover можно тоже оставить, придется думать c DDNS, если ваш роутер поддерживает, то можно либо у регистратора домена брать настройки, либо можно взять бесплатный NO-IP, либо как автор статьи на хабре через CloudFlare (но для меня был геморой с передачей домена к ним, я купил static IP
  • Третий вариант тут я не знаю, возможно есть какие то инструменты, либо лайфхаки, но легче купить статику по мне


Обязательно манипуляции с роутером делаем как в статье на хабре которую вы указали! порты тоже пробросить надо.

Настраиваем firewall
sudo ufw allow 80,443,3000,996,7946,4789,2377/tcp; sudo ufw allow 7946,4789,2377/udp;

Устанавливаем CapRover
docker run -p 80:80 -p 443:443 -p 3000:3000 -e ACCEPTED_TERMS=true -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover

Если возникает ошибка по доступу, то
sudo chmod 666 /var/run/docker.sock
После завершения установки панель управления CapRover становится доступной по адресу http://[IP_АДРЕС_СЕРВЕРА]:3000, пароль по умолчанию captain42. Однако, сейчас не стоит изменять что-то через интерфейс, а также менять пароль (можно сделать это позднее). Мы будем использовать инструмент командной строки для настройки сервера.
Устанавливаем npm и далее Caprover CLI
sudo apt install npm
sudo npm install -g caprover
Настраиваем CapRover
caprover serversetup

Have you already started CapRover container on your server? — по умолчанию отвечаем Yes
IP address of your server — здесь необходимо указать публичный IP адрес сервера
CapRover server root domain — указываем ранее приобретённый домен. Если вы укажете что-то вроде name.ru, панель управления CapRover будет доступна по адресу captain.name.ru
new CapRover password (min 8 characters) — на этом и следующем вопросе вводим новый пароль для доступа к панели управления.
"valid" email address to get certificate and enable HTTPS — для получения сертификатов Let’s Encrypt необходимо указать действующий адрес электронной почты.
CapRover machine name, with whom the login credentials are stored locally — любое удобное наименование серверу с установленным CapRover.

Если вдруг ошибка по установке сертификата возникнет, значит нет возможности достучаться по твоему IP, проблема точно в файрволе, у меня был закрыт порт 80, но caprover был доступен извне по порту 3000, если явно указывать. В общем купив статику проблема решилась и сертификат установился.

Описал свои шаги по установке, надеюсь помог)
Ответ написан
@Nikityanskiy01 Автор вопроса
Также прописал:

sudo ufw allow 80,443,3000/tcp
Пропуск добавления уже существующего правила
Пропуск добавления уже существующего правила (v6)
nikita@Server:~$ sudo ufw reload
Брандмауэр перезагружен
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы