ALTSOGO: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Запуск ADMC)
Строка 151: Строка 151:
  
 
  chmod +x /opt/admc.sh
 
  chmod +x /opt/admc.sh
 +
 +
 +
==Ставим PostgreSQL сервер==
 +
 +
Установка
 +
 +
apt-get install -y postgresql17-server postgresql17-contrib
 +
 +
Первоначальный запуск
 +
 +
/etc/init.d/postgresql initdb
 +
 +
ВНИМАНИЕ!
 +
 +
Два последующих конфигурационных файла будут созданы без лишних комментариев внутри только для ускорения процесса демонстрации. Поэтому предварительно для них будут созданы резервные копии, в которые настоятельно рекомендуется хотя-бы один раз заглянуть, чтобы понять, что параметров значительно больше чем необходимых и достаточных для работы!
 +
 +
Делаем резервные копии
 +
 +
cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.backup
 +
cp /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.backup
 +
 +
Далее используем heredoc-синтаксис, потому что мы ленивы и прагматичны...
 +
 +
<pre>
 +
cat << 'EOF' > /var/lib/pgsql/data/pg_hba.conf
 +
# TYPE  DATABASE        USER            ADDRESS                METHOD
 +
 +
# "local" is for Unix domain socket connections only
 +
local  all            all                                    trust
 +
 +
# IPv4 local connections:
 +
host    all            all            127.0.0.1/32            trust
 +
host    all            all            0.0.0.0/0            md5
 +
 +
# Allow replication connections from localhost, by a user with the
 +
# replication privilege.
 +
local  replication    all                                    trust
 +
host    replication    all            127.0.0.1/32            trust
 +
EOF
 +
</pre>
 +
 +
<pre>
 +
cat << 'EOF' > /var/lib/pgsql/data/postgresql.conf
 +
listen_addresses = '*' # what IP address(es) to listen on;
 +
max_connections = 100 # (change requires restart)
 +
shared_buffers = 128MB # min 128kB
 +
dynamic_shared_memory_type = posix # the default is usually the first option
 +
max_wal_size = 1GB
 +
min_wal_size = 80MB
 +
log_destination = 'stderr' # Valid values are combinations of
 +
logging_collector = on # Enable capturing of stderr, jsonlog,
 +
log_directory = 'log' # directory where log files are written,
 +
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
 +
log_file_mode = 0600 # creation mode for log files,
 +
log_rotation_size = 10MB # Automatic rotation of logfiles will
 +
log_min_messages = warning # values in order of decreasing detail:
 +
log_checkpoints = off
 +
log_connections = off
 +
log_disconnections = off
 +
log_timezone = UTC
 +
datestyle = 'iso, mdy'
 +
timezone = UTC
 +
default_text_search_config = 'pg_catalog.english'
 +
EOF
 +
</pre>
 +
 +
systemctl enable --now postgresql
 +
 +
Создаём пользователя и базу данных для SOGO:
 +
 +
su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole sogo'
 +
su - postgres -s /bin/sh -c 'createdb -O sogo sogo'
 +
 +
Перезапускаем сервис
 +
 +
systemctl restart postgresql
 +
 +
Проверяем
 +
 +
psql -U sogo -W sogo -c "\l"

Версия 23:54, 3 августа 2025

План

1. Ставим ALT DC

2. Ставим PostgreSQL сервер

3. Ставим SOGO и настраиваем его на ALT DC и PostgreSQL

Делаем всё на Alt Starterkit GNOME P11, опираясь на документацию от P10 (на момент создания этой статьи для P11 официальной документации не было):

sogo--chapter

sambadc--chapter

Ставим ALT DC

После обновления системы и ядра...

Выставляем часовой пояс и синхронизируем время

timedatectl set-timezone Europe/Moscow
ntpdate pool.ntp.org

Отключаем сервисы и устанавливаем необходимые пакеты

for service in smb nmb; do systemctl disable $service; systemctl stop $service; done
apt-get install -y task-samba-dc admc

Подготовка конфигурационных файлов ситемы

Задаём имя хоста

hostnamectl set-hostname dc.domain.alt

Также проверить и при необходимости поправить имя хоста в файле

/etc/sysconfig/network

Перезагрузиться для проверки

reboot

Далее настраиваем 127.0.0.1 в качестве DNS сервера системы (далее в команде создания домена мы добавим возможность для этого DNS сервера делать запросы к внешним DNS серверам)

cat << EOF > /etc/resolv.conf
search alt
nameserver 127.0.0.1
EOF

Здесь приведена команда конфигурирования файла /etc/hosts, исходя из того, что у настраиваемого сервера локальный IP-адрес: 192.168.1.246

cat << EOF > /etc/hosts
192.168.1.246 dc.domain.alt domain.alt
127.0.0.1 localhost
EOF

Создание домена одной командой

Перед выполнением команды создания домена нужно удалить конфигурационный файл:

/bin/rm -rf /etc/samba/smb.conf /var/lib/samba /var/cache/samba

mkdir -p /var/lib/samba/sysvol

Для домена

domain.alt

с паролем

Pa$$word

и адресом внешнего DNS сервера

8.8.8.8

команда создания домена будет такой:

samba-tool domain provision --realm=domain.alt --domain domain --adminpass='Pa$$word' --dns-backend=SAMBA_INTERNAL --server-role=dc --option="dns forwarder=8.8.8.8"

Включение сервиса и проверка работы домена

Включение

systemctl enable --now samba

Проверка

samba-tool domain info 127.0.0.1

В ответ должно прилететь что-то типа этого:

Forest           : domain.alt
Domain           : domain.alt
Netbios domain   : DOMAIN
DC name          : dc.domain.alt
DC netbios name  : DC
Server site      : Default-First-Site-Name
Client site      : Default-First-Site-Name

Настройка Kerberos

/bin/cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

Запуск ADMC

ADMC -- графическая утилита. Поэтому желательно на сервере иметь графику.

В этой статье контроллер домена развёртывается на базе Alt Starterkit GNOME P11, поэтому с наличием графики проблем нет (да и кого волнует в 21 веке лишние пару сотен мегабайт на диске виртуальной машины).

Для корректной работы приложения ADMC необходимо получить билет Kerberos командой

kinit Administrator

В ответ необходимо ввести пароль от доменного администратора.


ВАЖНО! Иногда стоит эту команду вводить вручную, а не полагаться на написанный скрипт (про скрипт буквально ченез несколько строчек ниже будет), поскольку иногда утилита


kinit

предупреждает об устаревании пароля и необходимости его поменять. Также не забываем после смены пароля изменять его в скрипте...

Собственно, про скрипт: Чтобы это автоматизировать, можно, например, сделать скрипт автоматического запуска ADMC.

В примере создаётся скрипт в файле

/opt/admc.sh

для запуска ADMC с получением билета для пользователя

Administrator с паролем
Pa$$word

Пример heredoc-команды:

cat << 'EOF' > /opt/admc.sh
#!/bin/bash
echo 'Pa$$word' | kinit Administrator
admc
EOF
chmod +x /opt/admc.sh


Ставим PostgreSQL сервер

Установка

apt-get install -y postgresql17-server postgresql17-contrib

Первоначальный запуск

/etc/init.d/postgresql initdb

ВНИМАНИЕ!

Два последующих конфигурационных файла будут созданы без лишних комментариев внутри только для ускорения процесса демонстрации. Поэтому предварительно для них будут созданы резервные копии, в которые настоятельно рекомендуется хотя-бы один раз заглянуть, чтобы понять, что параметров значительно больше чем необходимых и достаточных для работы!

Делаем резервные копии

cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.backup
cp /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.backup

Далее используем heredoc-синтаксис, потому что мы ленивы и прагматичны...

cat << 'EOF' > /var/lib/pgsql/data/pg_hba.conf 
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0            md5

# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
EOF
cat << 'EOF' > /var/lib/pgsql/data/postgresql.conf 
listen_addresses = '*'		# what IP address(es) to listen on;
max_connections = 100			# (change requires restart)
shared_buffers = 128MB			# min 128kB
dynamic_shared_memory_type = posix	# the default is usually the first option
max_wal_size = 1GB
min_wal_size = 80MB
log_destination = 'stderr'		# Valid values are combinations of
logging_collector = on		# Enable capturing of stderr, jsonlog,
log_directory = 'log'			# directory where log files are written,
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'	# log file name pattern,
log_file_mode = 0600			# creation mode for log files,
log_rotation_size = 10MB		# Automatic rotation of logfiles will
log_min_messages = warning		# values in order of decreasing detail:
log_checkpoints = off
log_connections = off
log_disconnections = off
log_timezone = UTC
datestyle = 'iso, mdy'
timezone = UTC
default_text_search_config = 'pg_catalog.english'
EOF
systemctl enable --now postgresql

Создаём пользователя и базу данных для SOGO:

su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole sogo'
su - postgres -s /bin/sh -c 'createdb -O sogo sogo'

Перезапускаем сервис

systemctl restart postgresql

Проверяем

psql -U sogo -W sogo -c "\l"