Files
HomeServerServices/Services.md
2026-02-12 18:46:13 +04:00

9.6 KiB
Raw Permalink Blame History

⚙️ Настройка сервисов

Этот гайд описывает настройку и запуск всех сервисов в контейнерах.


1 Portainer — WebUI для управления контейнерами

Для запуска Portainer требуется активный Docker сокет. В Podman по умолчанию его нет, так как это является потенциальным вектором атаки. Запускайте сокет только для конкретного пользователя (не root!)

cd portainer
cp .env.example .env && vim .env
systemctl --user enable --now podman.socket
podman-compose up -d

2 Grafana — Dashboard со статистикой загруженности сервера

Proxmox предоставляет достаточно информации об использовании ресурсов системы, но если вы ставите Debian как контейнер сервисов отдельно, вам может потребоваться Grafana

cd grafana
cp .env.example .env && vim .env
podman-compose up -d

3 AutoSSH — SSH туннель, проброс портов

cd autossh
cp .env.example .env && vim .env
podman-compose up -d --build

4 Samba — сетевой диск в локальной сети

cd samba
cp .env.example .env && vim .env
podman-compose up -d

Samba работает на 139 и 445 порту, для доступа к ним нужны root права. Чтобы не запускать контейнер от имени root, пробросим порты из контейнера на 1139 и 1445 порты соответственно, и добавим правила в iptables для переадресации трафика:

sudo iptables -t nat -A PREROUTING -p tcp --dport 139 -j REDIRECT --to-ports 1139
sudo iptables -t nat -A PREROUTING -p tcp --dport 445 -j REDIRECT --to-ports 1445
sudo iptables -t nat -L -n -v # Посмотреть список правил

# Для сохранения правил iptables после перезагрузки
sudo apt install iptables-persistent
sudo netfilter-persistent save # сохранить текущие iptables

5 Transmission — BitTorrent клиент

cd transmission
cp .env.example .env && vim .env
podman-compose up -d

В настройках клиента указанная в .env папка доступна по пути /downloads. Можно подключиться с помощью Transmission Remote GUI или Transmission Qt


6 Syncthing — синхронизация файлов между устройствами

cd syncthing
cp .env.example .env && vim .env
mkdir config && podman unshare chown -R 1000:1000 config
podman-compose up -d

7 Gitea — Git-сервер

cd gitea
cp .env.example .env && vim .env
mkdir config && podman unshare chown -R 1000:1000 config
mkdir data && podman unshare chown -R 1000:1000 data
mkdir db && podman unshare chown -R 1000:1000 db
podman-compose up -d

Gitea конфигурируется позже, уже в веб-форме. Обязательно отключаем самостоятельную регистрацию и создаём администратора (пользователя по умолчанию). Остальное не трогаем, уже сконфигурировано в .env


8 FileBrowser — простой веб-интерфейс для управления файлами

cd disk
cp .env.example .env && vim .env
touch filebrowser.db && podman unshare chown -R 1000:1000 filebrowser.db
podman-compose up -d

9 Memos — быстрые заметки

Memos — это простой и быстрый способ создавать и управлять заметками через веб-интерфейс.

cd memos
cp .env.example .env && vim .env
podman-compose up -d

🔟 Matrix — собственный сервер для мессенджера Matrix

cd matrix
mkdir data && podman unshare chown -R 1000:1000 data
podman run -it --rm -v "$(pwd)/data:/data" -e SYNAPSE_SERVER_NAME=MATRIX.DOMAIN.ru -e SYNAPSE_REPORT_STATS=no docker.io/matrixdotorg/synapse:latest generate

⚠️ Замените MATRIX.DOMAIN.ru на ваш домен для Matrix сервера.

Меняем базу данных на PostgreSQL и прописываем БД, пользователя, пароль:

database:
  name: psycopg2
  args:
    user: user
    password: passw0rd
    database: db
    host: matrix-db
    cp_min: 5
    cp_max: 10
mkdir db && podman unshare chown -R 1000:1000 db
cp .env.example .env && vim .env
podman-compose up -d

Создаём пользователя:

podman exec -it matrix-synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008

11 NextCloud — личное многофункциональное облако

NextCloud — полнофункциональное облачное хранилище с возможностью синхронизации файлов, календарем, контактами, задачами и многими другими функциями.

cd cloud
cp .env.example .env && vim .env
mkdir db
mkdir config && podman unshare chown -R 33:33 config
mkdir data && podman unshare chown -R 33:33 data
mkdir apps && podman unshare chown -R 33:33 apps
podman-compose up -d

⚠️ В docker-compose.yml есть переменные, которые можно указать при первом запуске, но они мешают если пересоздавать контейнер не с нуля.

Настраиваем NextCloud через веб-форму после запуска Nginx. Выбираем пользователя по умолчанию, БД. В разделе приложений можем установить дополнительные модули:

Базовые модули:

  • Calendar — календарь
  • Contacts — контакты
  • Deck — доски задач
  • Whiteboard — виртуальная доска
  • Forms — формы

Комплексные модули:

  • NextCloud Office — конфигурируется с Collabora Office, которая запускается на отдельном домене, его нужно указать в настройках
  • NextCloud Talk — видеоконференции. Для доступа извне сети нужен модуль CoTurn, он запускается на отдельном домене

    ⚠️ Для этого модуля нужно открыть UDP порты с SSL, что проблематично. Это я пока не настраивал

Для работы NextCloud Office в config/config.php нужно добавить:

'trusted_proxies' => ['10.89.0.1'],
'overwrite.cli.url' => 'https://cloud.domain.ru',
'overwriteprotocol' => 'https',
'overwritehost' => 'cloud.domain.ru',

10.89.0.1 — это Gateway для Podman
cloud.domain.ru меняем на наш домен

Настройка внешнего хранилища:

Также устанавливаем модуль External Storage Support и в его настройках добавляем диск локального типа по пути /var/www/external_storage (это внешний диск, указанный в .env).


12 Nginx Reverse Proxy (Entrypoint)

cd proxy
cp .env.example .env && vim .env

Создание конфига для DynDNS

cp ddns/domains.txt.example ddns/domains.txt && vim ddns/domains.txt

Нужно указать ресурсные записи @ и www для доступа к домену второго уровня напрямую. Также нужно добавить домены 3-го уровня для: gitea, cloud (filebrowser), matrix server (synapse), matrix client (element).

Первоначальная настройка SSL

В первый раз SSL сертификаты нужно создать вручную.

Запускаем DDNS скрипт и HTTP сервер для Let's Encrypt:

podman-compose -f init-compose.yml up -d --build

Проверяем по логам в portainer и в личном кабинете рег.ру, что ресурсные записи обновились. Ожидаем, пока DNS обновит информацию о наших поддоменах (занимает от 15 минут до 24 часов).

Затем создаём SSL сертификаты на каждый домен(-ы) с помощью команды:

podman-compose run --rm --entrypoint "certbot" certbot certonly --webroot --webroot-path=/var/www/certbot --email your-email@gmail.com --agree-tos --no-eff-email -d domain.com -d domain2.com

⚠️ Замените your-email@gmail.com на ваш email и domain.com, domain2.com на ваши домены.

Настройка Nginx

cd nginx/conf.d
cp default.conf.example default.conf
vim default.conf

Запуск основного контейнера

podman-compose -f init-compose.yml down
podman-compose up -d --build