Я так понимаю у вас отдельный сервер на зеоне?
Сносим все и ставим голую 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, если явно указывать. В общем купив статику проблема решилась и сертификат установился.
Описал свои шаги по установке, надеюсь помог)