Первичная настройка, часть 4: HTTPS веб-интерфейса (:8443, самоподписанный сертификат на имя и адреса сервера, свой сертификат, перенаправление браузера с HTTP); сервер времени из настроек (ntpd/chrony/timesyncd — bj-system-admin); постоянный адрес — bj-network (netplan try с откатом), вопрос при первой загрузке с образа; раздел «Сервер: HTTPS, время, сеть»; HTTPS в итоговой проверке; адреса https:// на экране установщика и консоли
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -59,6 +59,7 @@ const (
|
||||
usersFile = "/var/lib/bj/.bj/users.json"
|
||||
firstRunFile = "/var/lib/bj/.bj/first-run.json"
|
||||
bjPort = 8080
|
||||
bjHTTPSPort = 8443 // веб-вход по HTTPS (самоподписанный сертификат сервера; см. lkgateway/tlsserve.go)
|
||||
)
|
||||
|
||||
type installer struct {
|
||||
@@ -890,7 +891,7 @@ func setupURLs() []string {
|
||||
addrs, _ := ifc.Addrs()
|
||||
for _, a := range addrs {
|
||||
if ipn, ok := a.(*net.IPNet); ok && ipn.IP.To4() != nil {
|
||||
out = append(out, fmt.Sprintf("http://%s:%d", ipn.IP.String(), bjPort))
|
||||
out = append(out, fmt.Sprintf("https://%s:%d", ipn.IP.String(), bjHTTPSPort))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1025,15 +1026,16 @@ func (c *console) done(code string, l *license.License) {
|
||||
if code != "" {
|
||||
fmt.Fprintf(c.w, " Откройте в браузере на своём компьютере:\n")
|
||||
if len(urls) == 0 {
|
||||
urls = []string{fmt.Sprintf("http://<адрес сервера>:%d", bjPort)}
|
||||
urls = []string{fmt.Sprintf("https://<адрес сервера>:%d", bjHTTPSPort)}
|
||||
}
|
||||
for _, u := range urls {
|
||||
fmt.Fprintf(c.w, " %s\n", c.paint("1", u+"/first-run"))
|
||||
}
|
||||
fmt.Fprintf(c.w, " Браузер предупредит о сертификате: это сертификат самого сервера bj — подтвердите исключение.\n Сертификат организации можно загрузить позже: «Настройка → Сервер».\n")
|
||||
fmt.Fprintf(c.w, "\n Одноразовый код первичной настройки: %s\n\n", c.paint("1;33", code))
|
||||
fmt.Fprintf(c.w, " По коду создаётся администратор, дальше в разделе «Настройка»:\n организация и код участника НРД, ключи и интеграционный шлюз, учётные системы, пользователи.\n")
|
||||
} else {
|
||||
fmt.Fprintf(c.w, " Адрес bj: %s\n", c.paint("1", firstOr(urls, fmt.Sprintf("http://<адрес сервера>:%d", bjPort))))
|
||||
fmt.Fprintf(c.w, " Адрес bj: %s\n", c.paint("1", firstOr(urls, fmt.Sprintf("https://<адрес сервера>:%d", bjHTTPSPort))))
|
||||
}
|
||||
if l == nil {
|
||||
fmt.Fprintf(c.w, "\n Ключ продукта ещё не введён — его спросит первая страница в браузере\n (или позже: «Настройка → Лицензия»). Он есть в портале клиента.\n")
|
||||
|
||||
Reference in New Issue
Block a user