Домашний сервер с GUI

Что-то захотелось немного переделать домашний сервер, чтобы можно было им управлять через GUI. В частности хочется графического управления и еще каких-нибудь наворотов. А вот что выбрать? Хочется чего-то мощного и в то же время простого…

Portainer

Неплохо бы установить какой-то графический интерфейс (дополнительный менеджер). Я лично выбрал Portainer, а конкретно Community Edition.

Если посмотреть на hub.docker.com, то у него есть собранные контейнеры для arm64. Значит можно ставить.

Кстати, если пробежаться по документации, Portainer можно установить и на чистый Docker. Воспользуемся этим.

Идем на официальный сайт и смотрим как все это запустить:


docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 --name portainer \
    --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    portainer/portainer-ce:2.11.0

Первая команда создает том хранения данных, а вторая запускает контейнер. Но мы делать так не будем. Мы создадим Compose-файл для работы сервиса и управления через systemd (как обычно).

/opt/portainer/docker-compose.yml:


version: "2.4"

services:
  portainer:
    image: portainer/portainer-ce:2.11.1-alpine
    restart: always
    volumes:
      - type: bind
        source: /mnt/nfs/portainer
        target: /data
      - type: bind
        source: /var/run/docker.sock
        target: /var/run/docker.sock
    ports:
      - "8000:8000"
      - "9000:9000"
      - "9443:9443"
    mem_limit: 256m
    mem_reservation: 192m

Так как Portainer является менеджером, то ему необходимо как-то управлять Docker. Для этого монтируется сокет самого докера, через который и будут выполняться команды на управление контейнерами.

Далее создаем /etc/systemd/system/portainer.service:


[Unit]
Description=Portainer docker-compose
Requires=docker.service
After=docker.service

[Service]
Restart=always

WorkingDirectory=/opt/portainer/

# Compose up
ExecStart=/usr/bin/docker-compose -f docker-compose.yml up

# Compose down, remove containers
ExecStop=/usr/bin/docker-compose -f docker-compose.yml down

[Install]
WantedBy=multi-user.target

Описание сервиса создали. Теперь обновим, включим и запустим:


systemctl daemon-reload
systemctl enable portainer
systemctl start portainer

После запуска заходим по адресу http://<ip-адрес>:9000 и вводим логин с паролем администратор. После попадаем в первоначальную настройку. Выбираем Get Started, после узел local и… Все… Работает! Если зайдем в Stacks, то там будут наши приложения, которые сейчас запущены. В данный момент Portainer не может ими управлять так как они были созданы через внешнюю среду.

Управляемые компоненты

Чтобы можно было безболезненно всем этим набором технологий управлять создадим новый стэк и заполним его как в Docker Compose:


version: "2.4"

services:
  db:
    image: mariadb:10.7.1-focal
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed
    restart: always
    environment:
      MARIADB_DATABASE: nextcloud
      MARIADB_USER: nextcloud
      MARIADB_PASSWORD: 
      MARIADB_RANDOM_ROOT_PASSWORD: 1
    volumes:
      - type: bind
        source: /mnt/nfs/cloud/db
        target: /var/lib/mysql
    mem_limit: 256m
    mem_reservation: 64m

  nextcloud:
    #image: nextcloud:22.2.3-fpm-alpine
    image: nextcloud:23.0.0-fpm-alpine
    restart: always
    volumes:
      - type: bind
        source: /mnt/nfs/cloud/cloud
        target: /var/www/html
    mem_limit: 256m
    mem_reservation: 64m
    links:
      - db
    depends_on:
      - db

  nginx:
    image: nginx:1.20.1-alpine
    restart: always
    volumes:
      - type: bind
        source: /mnt/nfs/cloud/cloud
        target: /var/www/html
      - type: bind
        source: /mnt/nfs/cloud/nginx.conf
        target: /etc/nginx/nginx.conf
    ports:
      - "8082:80"
    links:
      - nextcloud
    depends_on:
      - nextcloud
    mem_limit: 128m
    mem_reservation: 32m

По сути это тот же файл, что и обычный Docker Compose, но теперь им управляет Portainer.

Следите за портами, чтобы не повторялись.

Заключение

На мой взгляд управлять кучей сервисов в таком виде проще.

Если Вам не нравится такой интерфейс, то можете поискать что-то другое. В любом случае у этого продукта или у многих других есть свое API, с помощью которого можно организовать автоматизированное управление сервисами, например CI/CD.

Поделиться
Вы можете оставить комментарий, или ссылку на Ваш сайт.
Anvands nu for att behandla ED. Det paverkar som psykosocial index orsakar stress, som behandlar en orgasm, som kan orsakas av antingen sexuella tankar

Оставить комментарий

Вы должны быть авторизованы, чтобы разместить комментарий.