NAS: выбор, обсуждение, настройка, эксплуатация

Локальные сети и Интернет
Відповісти
Автор
Повідомлення
_clawfinger_
Member
Звідки: З берегів Дніпра

Повідомлення

Scoffer дякую за пояснення.
poulk
Advanced Member
Аватар користувача
Звідки: Тернополь

Повідомлення

Scoffer
Я не дуже розумію що саме тебе не влаштовує в розрахунках.
в розрахунках мене все влаштовує. але додавати лінійні скорості читання я і сам вмію :)
частина вінтів вже є потенційно (треба лише перевірити іх стан :)) і контролер один вже є. тож сенс юзати хард рейд як би є.
ну і питання в софті не знято.
LostBoy
Member
Аватар користувача
Звідки: Оккупированный Донецк - Киев

Повідомлення

poulk
Мне кажется, вы все уже для себя решили и определились :) раз и диски есть, и контроллер есть, то они в ход и пойдут ;)

Отправлено спустя 4 часа 1 минуту 42 секунды:
Ну, и резюмируя написанное выше, лично я полностью поддерживаю мысль о софтовом рейде с максимумом шпинделей, которые вы сможете вставить в корпус и без всякого кэша, который в случае с обработкой видео будет бесполезен. Если задачи со временем изменятся, тогда можно и о кэширующем накопителе подумать.
По поводу ОС - вы сами привели все возможные примеры. Раз зфс не нужен, то отбросим фринас/трунас. Остается, по сути, бэкпорт с синолоджи, OMV и анрейд. Последний я в глаза не видел, да и модель хранения в виде JBOD меня как-то подсознательно напрягает. Синолоджи, насколько я знаю, банит на своей DDNS-службе ломаные инсталляции, так что если нет белого айпи, то тоже хорошо подумайте. Если нужна только самба, то я бы все-таки раскатал минимальную юбунту с смбд. Там делов на час.
Также имейте в виду, что диски на 7200 оборотов в количестве 10 штук устроят дома акустический ад. У меня в мой DS414j как-то были вставлены 4 сигейтовских констеллейшна, спать в одной комнате с этой коробкой под нагрузкой было невозможно. Подумайте над размещением в кладовке, если есть такая возможность.
poulk
Advanced Member
Аватар користувача
Звідки: Тернополь

Повідомлення

LostBoy
да в том то и дело, что пока ничего не решил :)
старый рейд, похоже уже слегка глючный. и винты в старом рейде уже почти 7 лет отпахали.
по сути надо получить лишь более менее стабильные скорости не меньше 500-700 МБ/с в любом месте дисков (а не только на внешних радиусах) плюс хоть немного надежности.
буду сидеть гонять софт на виртуалке, может как то попонятней станет :)
остался вопрос по контролерам, что из более менее вменяемого по цене сейчас можно найти с ссд кешем и сас (присмотрел такие диски HGST Ultrastar DC HC320 SAS 8 TB)
И есть вопрос в какой корпус это все пихать :) Кроме колхоза в каком-нибудь гробоподобном корпусе пока ничего в голову не приходит. Может у кого есть какие то идеи. Думал еще может взять серверный корпус и на бок его поставить (приделав ножки).
С большой вероятностью кейс будет стоять на застекленном балконе.
LostBoy
Member
Аватар користувача
Звідки: Оккупированный Донецк - Киев

Повідомлення

poulk:С большой вероятностью кейс будет стоять на застекленном балконе.
Балкон отапливаемый? Если нет, то конденсат зимой быстро убьет машину.
poulk:И есть вопрос в какой корпус это все пихать Кроме колхоза в каком-нибудь гробоподобном корпусе пока ничего в голову не приходит. Может у кого есть какие то идеи. Думал еще может взять серверный корпус и на бок его поставить (приделав ножки).
Если нужно воткнуть овер 10 дисков, то ищите рэкмаунт корпус, а возможно, что и сервер целиком - с бэкплэйном и фронтальной загрузкой дисков в корзину на морде. Иначе замена сбойного диска превратится в полноценный челлендж :rotate:

А по остальному решайте сами, мне уже нечего добавить.
TomMass
Member
Аватар користувача
Звідки: Харьков

Повідомлення

А мне понравилась такой способ сборки



Теперь ищу себе корпус на >9 отсеков 5,25 и буду брать HBA и китайские корзины.
А то в моем и место для дисков закончилось (6 отделов) и слоты sata на мамке. И вчера запустил пару конвертаций, синхронизацию nextcloud ( оч много файлов добавилось в книжную библиотеку). еще и фильм на телевизоре через плекс играл и понял я, что мой i3-2120 уже не вывозить :-/ - пора переезжать на 2011й сокет.

P.S. если кому нужен Fractal Design Define Mini (FD-CA-DEF-MINI-BL) - обращайтесь. Меня долгое время он устраивал
Васильович
Member
Аватар користувача

Повідомлення

TomMass
Ідея годна, в мене якраз підходящий корпус (в основному ПК) для таких корзин - може колись згодиться.
Я колись після перегляду цього відео став себе заспокоювати, що то в мене не порожній корпус в нинішньому NAS - то перспектива на апгрейд :lol:
Зображення
P.S. Якщо кому цікаво: ASUS C60M-I, OMV5 на ssd через SATA-USB, пара вінтів в LVM для бекапів (треба були квоти, тому так), решта вінтів в UnionFS об'єднана для фільмів/торрентів, вентилятор БЖ на понижених оборотах через резистор (комплектний з якогось кулера).
TomMass
Member
Аватар користувача
Звідки: Харьков

Повідомлення

Васильович
Ух...солянка конечно))

У меня сейчас так
Зображення Зображення
LostBoy
Member
Аватар користувача
Звідки: Оккупированный Донецк - Киев

Повідомлення

У меня пока так, личинка NASа :rotate:
спойлер
Зображення
Много чего еще купить надо. Может, к Новому году дособираю.
TomMass
Member
Аватар користувача
Звідки: Харьков

Повідомлення

LostBoy
А где в этой личинке будут харды?

в pci-e висит m2>pci?

Отправлено спустя 32 секунды:
а стоп. это node 804?
LostBoy
Member
Аватар користувача
Звідки: Оккупированный Донецк - Киев

Повідомлення

TomMass:это node 804?
Ага
TomMass:в pci-e висит m2>pci?
Угу
TomMass
Member
Аватар користувача
Звідки: Харьков

Повідомлення

LostBoy
Ох

Мои искренние поздравления! Давно хочу такой. Но все внутрення жаба не дает мне это сделать. А на б/у пока не встречал

Должен быть отличный кейс
zhekaice
Member
Аватар користувача

Повідомлення

але він лише на 8 Хардів. Чи є можливість прикрутити ще 2-4?
LostBoy
Member
Аватар користувача
Звідки: Оккупированный Донецк - Киев

Повідомлення

TomMass:А на б/у пока не встречал
Я его купил летом б/у на олх совсем за недорого, меньше 100 баксов. Состояние нового фактически, если его и использовали, то минимально.
Этот корпус все равно не ю-нас, который я хотел, но из-за пандемии заказать было нереально, может, сейчас уже что-то поменялось. Но в августе юнасов в официальном магазине в наличии не было. Так что буду жить пока с этим фд, а дальше посмотрим.

Отправлено спустя 6 минут 54 секунды:
zhekaice:але він лише на 8 Хардів. Чи є можливість прикрутити ще 2-4?
Вообще можно впихнуть 10 3.5'' - 8 сзади и 2 внизу крепятся, под материнской платой. Ещё 2 2.5'' девайса можно в полости фронтальной крышки разместить. И даже щель для оптического драйва есть.
Но я буду использовать только 8 винтиков сзади - RAIDZ2 из 8 дисков под пользовательские данные семьи. И 2 ссд-диска под юбунту и имэджи в мирроре. Ну и тот mlc ssd samsung, который вы видите на фото, под l2arc. По дисковой подсистеме все.
Я в профиль внёс всю комплектуху этого билда, если кому интересно :beer:
Sachu
Member
Аватар користувача
Звідки: Киев

Повідомлення

Ну и я тогда свой NAS всуну :super:
спойлер
https://fex.net/ru/s/vsflnce
Корпус Залман из маленьких потому так все напихано не по феншую, таки 4 харда и 2 ссд.
Но который год работает и кушать не просит.
LostBoy
Member
Аватар користувача
Звідки: Оккупированный Донецк - Киев

Повідомлення

TomMass
А расшарь свой компоуз, плиз. А то я уже свой допилил (почти), хочу у народа глянуть, кто еще чего впилил у себя.
Васильович
Member
Аватар користувача

Повідомлення

TomMass:Васильович
Ух...солянка конечно))
Склав, в прямому смислі, з того що було під рукою.
Докупив лише корзини на aliexpress (пластикову на два вінти 2,5" і алюмінієву на чотири 2,5"), ну і нормальний USB перехідник для SSD (на фото ще плата з якогось зовнішнього USB диска).
Для мого скромного використання вистачає.
В докері крутяться transmission i jellyfin, натівно - samba.
Весь NAS їсть 30-38 Вт з розетки :shuffle:
TomMass
Member
Аватар користувача
Звідки: Харьков

Повідомлення

zhekaice:але він лише на 8 Хардів. Чи є можливість прикрутити ще 2-4?
ну это ж тоже зависит от объема хардов

8х3тб в 6м рейде = 18 TB

а 8х6тб в той же 6ке = 36 TB

Так что на усмотрение каждого. Я решил что все буду забивать старыми 3шками без всяких srm. Штук 15. Благо куча рефурбов с годовой гарантией
LostBoy: Я его купил летом б/у на олх совсем за недорого, меньше 100 баксов. Состояние нового фактически, если его и использовали, то минимально.
Этот корпус все равно не ю-нас, который я хотел, но из-за пандемии заказать было нереально, может, сейчас уже что-то поменялось. Но в августе юнасов в официальном магазине в наличии не было. Так что буду жить пока с этим фд, а дальше посмотрим.
Я когда свой искал, на бу не было. А в магазинах от 150ти зеленых все начиналось

Отправлено спустя 7 минут 27 секунд:
LostBoy: А расшарь свой компоуз, плиз. А то я уже свой допилил (почти), хочу у народа глянуть, кто еще чего впилил у себя.
Вот основной. Vault и бекапы в соседнем. поделюсь, если нужно. Все с работой не могу статью на хабр сделать с публичный репозиторием(
спойлер

Код: Виділити все

version: '3.5'

services:

########################  MEDIA ########################
  plex:
    image: linuxserver/plex:latest
    container_name: plex
    network_mode: host
    environment:
      PUID: 1000
      PGID: 1000
      VERSION: docker
    volumes:
      - "${PLEX_DIR}/library:/config"
      - "${MEDIA_DIR}:/media"
      - "${PHOTOS_DIR}:/Photos"
      - "${PLEX_DIR}/photos:/photos"
      - "${PLEX_DIR}/transcoding:/transcode"
    ports:
      - 32400:32400
      - 32400:32400/udp
      - 32469:32469
      - 32469:32469/udp
      - 5353:5353/udp
      - 1900:1900/udp
    restart: unless-stopped
    labels:
      org.label-schema.group: "media"

  tautulli:
    image: linuxserver/tautulli
    container_name: tautulli
    restart: unless-stopped
    expose:
      - "8181"
    volumes:
      - "${DOCKER_DIR}/tautulli:/config"
      - "${PLEX_DIR}/library/Library/Application Support/Plex Media Server/Logs:/logs:ro"
    environment:
      PUID: 1000
      PGID: 1000
      TZ: Kiev/Europe
    labels:
      org.label-schema.group: "media"

  qbittorrent:
    image: linuxserver/qbittorrent
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Kiev
      - UMASK_SET=022
      - WEBUI_PORT=8090
      - TELEGRAM_TOKEN=${telegram_bot_token}
      - TELEGRAM_CHAT=${telegrem_tommass_id}
    volumes:
      - "${DOCKER_DIR}/qbittorrent/config:/config"
      - "${MEDIA_DIR}:/downloads"
      - "${TOR_WATCH_DIR}:/watch"
      - "${TOR_TMP}:/downloads/tmp"
      - ./scripts/notifications/telegram.sh:/opt/telegram.sh
    ports:
      - 6881:6881
      - 6881:6881/udp
      - 8090:8090
    restart: unless-stopped
    labels:
      org.label-schema.group: "media"

  deluge:
    image: linuxserver/deluge
    container_name: deluge
    restart: unless-stopped
    network_mode: host
    volumes:
      - "${TOR_WATCH_DIR}:/watch"
      - "${DOCKER_DIR}/deluge/config:/config"
      - "${ART_SAMBA}/objects:/downloads"
      - "${TOR_TMP}:/downloads/tmp"
    ports:
      - "8112:8112"
      - "58846:58846"
      - "58847:58847"
      - "58847:58847/udp"
    environment:
      # - VIRTUAL_HOST=deluge.bla-bla.com
      - PUID=1000
      - PGID=1000
      - TZ=Kiev/Europe
      - UMASK_SET=022
      - DELUGE_LOGLEVEL=error

  radarr:
    image: linuxserver/radarr
    container_name: radarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - UMASK_SET=022 #optional
    volumes:
      - "${DOCKER_DIR}/radarr/config:/config"
      - "${MEDIA_DIR}:/downloads"
      - "${TOR_WATCH_DIR}:/watch"
    ports:
      - 7878:7878
    restart: unless-stopped
    labels:
      org.label-schema.group: "media"

  jackett:
    image: linuxserver/jackett
    container_name: jackett
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - AUTO_UPDATE=true #optional
      # - RUN_OPTS=run options here #optional
    volumes:
      - "${DOCKER_DIR}/jackett/config:/config"
      - "${MEDIA_DIR}:/downloads"
    ports:
      - 9117:9117
    restart: unless-stopped
    labels:
      org.label-schema.group: "media"


  gramarr:
    build: ./builds/gramarr
    container_name: gramarr-telegram-bot
    restart: unless-stopped
    labels:
      org.label-schema.group: "media"


######################## Nextcloud ########################

  nextcloud-db:
    image: mariadb:latest
    container_name: nextcloud-db
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: unless-stopped
    volumes:
      - ${DB_DIR}/nextcloud:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${nextcloud_root_pass}
      - MYSQL_PASSWORD=${nextcloud_db_user_pass}
      - MYSQL_DATABASE=${nextcloud_db_name}
      - MYSQL_USER=${nextcloud_user_name}
    networks:
      nextcloud:
      backup:
    labels:
      org.label-schema.group: "nextcloud"

  nextcloud-redis:
    container_name: nextcloud-redis
    image: redis:alpine
    restart: unless-stopped
    networks:
      nextcloud:
    labels:
      org.label-schema.group: "nextcloud"

  nextcloud-app:
    container_name: nextcloud-app
    build: ./builds/nextcloud/app-fpm-full
    # image: nextcloud:fpm-alpine
    restart: unless-stopped
    links:
      - nextcloud-db
    volumes:
      - ${NEXTCLOUD_DIR}:/var/www/html
    expose:
      - "9000"
    environment:
      - MYSQL_HOST=nextcloud-db
      - REDIS_HOST=nextcloud-redis
      - MYSQL_PASSWORD=${nextcloud_db_user_pass}
      - MYSQL_DATABASE=${nextcloud_db_name}
      - MYSQL_USER=${nextcloud_user_name}
    depends_on:
      - nextcloud-db
      - nextcloud-redis
    networks:
      nextcloud:
        aliases: 
          - nextcloud-app
    labels:
      org.label-schema.group: "nextcloud"

  nextcloud-web:
    container_name: nextcloud-web
    build: ./builds/nextcloud/web
    restart: unless-stopped
    expose:
      - 8089
    volumes:
      - ${NEXTCLOUD_DIR}:/var/www/html
    depends_on:
      - nextcloud-app
    # environment:
    # - VIRTUAL_HOST=cloud.bla-bla.com
    networks:
      nextcloud:
    labels:
      org.label-schema.group: "nextcloud"

  nextcloud-client:
    container_name: nextcloud-client
    build:
      dockerfile: Dockerfile
      context: ./builds/nextcloud-client/
    volumes:
      - "./builds/nextcloud-client/sync-exclude.lst:/opt/nextcl-sync-exclude.lst"
      - "${DOCKER_DIR}/nextcloud_client:/media/nextcloud"
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Kiev/Europe
      - NC_INTERVAL=60
      - NC_USER=${nextcloud_client_user_name}
      - NC_PASS=${nextcloud_client_user_password}
      - NC_SILENT=false
      - NC_URL=https://cloud.bla-bla.com
    labels:
      org.label-schema.group: "nextcloud"
    logging:
        driver: "json-file"
        options:
            max-file: "5"
            max-size: "50m"
    # logging:
    #   driver: gelf
    #   options:
    #     gelf-address: "udp://"
    #     tag: "nextcloud-client"
      
########################  VPN ##################################

  vpn:
    image: hwdsl2/ipsec-vpn-server
    restart: unless-stopped
    environment:
      - VPN_IPSEC_PSK=${ipsec_pre_shared_key}
      - VPN_USER=${artem_vpn_username}
      - VPN_PASSWORD=${artem_vpn_password}
      - VPN_ADDL_USERS=${safon_vpn_username}
      - VPN_ADDL_PASSWORDS=${safon_vpn_password}
    ports:
      - "500:500/udp"
      - "4500:4500/udp"
    privileged: true
    hostname: vpn.bla-bla.com
    container_name: vpn-server-ipsec

########################  PROXY ##################################

  nginx-proxy:
    container_name: nginx-proxy
    build: ./builds/nginx
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - "${DOCKER_DIR}/ssl:/etc/ssl_certs"
       - "${DOCKER_DIR}/ssl:/etc/nginx/certs"
       - "${MD0}/wp_cv:/var/www/wp_cv"
    networks:
      default:
      nextcloud:
      monitor-net:
      wp-net:
    labels:
      org.label-schema.group: "proxy"

  caddy:
    image: stefanprodan/caddy
    container_name: caddy
    ports:
      - "3000:3000"
      - "9090:9090"
      - "9093:9093"
      - "9091:9091"
      - "6660:6660"
      - "6661:6661"
      - "6662:6662"
    volumes:
      - ./builds/caddy:/etc/caddy
    environment:
      - ADMIN_USER=${CADDY_ADMIN_USER:-admin}
      - ADMIN_PASSWORD=${CADDY_ADMIN_PASSWORD:-admin}
      - PLEXPY_USER=${GRAFANA_ADMIN_USER}
      - PLEXPY_USER_PASS=${GRAFANA_ADMIN_PASSWORD}
      - RADARR_USER=${RADARR_USER}
      - RADARR_USER_PASS=${RADARR_USER_PASS}
    restart: unless-stopped
    networks:
      - monitor-net
      - default
    labels:
      org.label-schema.group: "proxy"  
      

########################  Monitoring ##################################

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./monitoring/prometheus:/etc/prometheus
      - "${DOCKER_DIR}/prometheus:/prometheus"
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/etc/prometheus/console_libraries'
      - '--web.console.templates=/etc/prometheus/consoles'
      - '--storage.tsdb.retention.time=30d'
      - '--web.enable-lifecycle'
    restart: unless-stopped
    expose:
      - 9090
    networks:
      - monitor-net
    labels:
      org.label-schema.group: "monitoring"

  alertmanager:
    image: prom/alertmanager:v0.20.0
    container_name: alertmanager
    volumes:
      - ./monitoring/alertmanager:/etc/alertmanager
    command:
      - '--config.file=/etc/alertmanager/config.yml'
      - '--storage.path=/alertmanager'
    restart: unless-stopped
    expose:
      - 9093
    networks:
      - monitor-net
    labels:
      org.label-schema.group: "monitoring"

  cadvisor:
    image: gcr.io/google-containers/cadvisor:latest
    container_name: cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker:/var/lib/docker:ro
      - /cgroup:/cgroup:ro #doesn't work on MacOS only for Linux
    restart: unless-stopped
    expose:
      - 8080
    networks:
      - monitor-net
    labels:
      org.label-schema.group: "monitoring"
    privileged: true

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    volumes:
      - "${DOCKER_DIR}/grafana:/var/lib/grafana"
      - ./monitoring/grafana/provisioning:/etc/grafana/provisioning
    environment:
      - GF_SERVER_ROOT_URL=https://grafana.bla-bla.com
      - GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin}
      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin}
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_RENDERING_SERVER_URL=http://renderer:8081/render
      - GF_RENDERING_CALLBACK_URL=http://grafana:3000
      - GF_LOG_FILTERS=rendering:debug
      - GF_INSTALL_PLUGINS=grafana-piechart-panel,grafana-image-renderer,grafana-worldmap-panel,raintank-worldping-app
    expose:
      - 3000
    networks:
      - monitor-net
    restart: unless-stopped
    labels:
      org.label-schema.group: "monitoring"

  renderer:
    container_name: renderer
    image: grafana/grafana-image-renderer:latest
    restart: unless-stopped
    ports:
      - 8081
    networks:
      - monitor-net

  pushgateway:
    image: prom/pushgateway:v1.1.0
    container_name: pushgateway
    restart: unless-stopped
    expose:
      - 9091
    networks:
      - monitor-net
    labels:
      org.label-schema.group: "monitoring"

  nodeexporter:
    image: prom/node-exporter:latest
    container_name: nodeexporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
      - "${DOCKER_DIR}/nodeexporter:/mnt/data"
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
      - '--collector.textfile.directory=/mnt/data'
    restart: unless-stopped
    expose:
      - 9100
    networks:
      - monitor-net
    labels:
      org.label-schema.group: "monitoring"
    cap_add:
      - SYS_TIME

  smartmon:
    build:
      context: ./builds/smart
      dockerfile: Dockerfile
    container_name: smartmon
    restart: unless-stopped
    volumes: 
      - "${DOCKER_DIR}/nodeexporter:/var/lib/node_exporter"
      - /:/rootfs:ro
    environment:
      - SMART_INTERVAL=60
    networks:
      - monitor-net
    privileged: true
    labels:
      org.label-schema.group: "monitoring"

#################################### WP ####################################

  wp_cv_db:
    image: mariadb:latest
    container_name: wp_cv_db
    restart: unless-stopped
    # env_file: .env
    environment:
      - MYSQL_ROOT_PASSWORD=${wp_cv_root_pass}
      - MYSQL_PASSWORD=${wp_cv_db_user_pass}
      - MYSQL_USER=${wp_cv_user_name}
      - MYSQL_DATABASE=wordpress
    volumes:
      - "${DB_DIR}/db_wp_cv:/var/lib/mysql"
    command: '--default-authentication-plugin=mysql_native_password'
    networks:
      - wp-net
      - backup

  wp_cv:
    depends_on:
      - wp_cv_db
    image: wordpress:latest
    container_name: wp_cv
    restart: unless-stopped
    environment:
      - WORDPRESS_DB_HOST=wp_cv_db:3306
      - WORDPRESS_DB_USER=${wp_cv_user_name}
      - WORDPRESS_DB_PASSWORD=${wp_cv_db_user_pass}
      - WORDPRESS_DB_NAME=wordpress
    volumes:
      - "${MD0}/wp_cv:/var/www/html"
    networks:
      - wp-net

#################################### Calibre ####################################
  calibre:
    image: linuxserver/calibre
    container_name: calibre
    environment:
      - PUID=1000
      - PGID=1003
      - TZ=Europe/Kiev
      - GUAC_USER=tommass
      - GUAC_PASS=140a8497592fc18be1cab2f9832d2c7f #optional
      - UMASK_SET=022 #optional
      # - CLI_ARGS= #optional
    volumes:
      - "${DOCKER_DIR}/calibre/server:/config"
      - "${MD0}/Library:/library"
    ports:
      - 5090:8080
      - 5091:8081
    restart: unless-stopped

  calibre-web:
    image: linuxserver/calibre-web
    container_name: calibre-web
    environment:
      - PUID=1000
      - PGID=1003
      - TZ=Europe/Kiev
      - DOCKER_MODS=linuxserver/calibre-web:calibre
      - HTTPS_METHOD=redirect
    volumes:
      - "${DOCKER_DIR}/calibre/web:/config"
      - "${MD0}/Library:/library"
    expose:
      - 8083
    restart: unless-stopped

#___________________________________________________________________________

networks:
  nextcloud:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
  monitor-net:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
  wp-net:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
  backup:
    external:
      name: backup
Отправлено спустя 1 минуту 48 секунд:
Васильович
Это нормально.у меня первая версия была на Acer Veriton X2631G SFF и (простите боги :pray: ) на Винде :think:
LostBoy
Member
Аватар користувача
Звідки: Оккупированный Донецк - Киев

Повідомлення

TomMass
Спасибо. Немного критики (конструктивной) и вопросов:
1. Все эти радарры, грамарры и прочие сонарры - ты этим реально пользуешься? Если да, то расскажи о кейсах использования, пож. Как по мне, то бесполезная шляпа :-/
2. Зачем столько проксирующих контейнеров? jackett, nginx, caddy? Может, к чему-то одному прийти?
3. Зачем для некстклауда редиска? Пользовательские сессии хранить или для чего-то другого?
4. Зачем клиент некстклауда на сервере?
5. vpn в оверлейной сети у тебя работает? Разве для ipsec не нужно создание виртуального сетевого интерфейса? Вроде его создать можно только в режиме network: host :insane:
6. А самба нативно поднята средствами хоста? Или не юзаешь?

Пара советов:
1. Присмотрись к связке traefik+authelia вместо nginx. Это даст суперудобную авторизацию в каком хочешь виде (sso, otp, 2fa, etc), функционал fail2ban, валидные сертификаты даже на фейковых доменах а-ля *.home или *.lan, исключит выброс портов на хостовую машину, везде, что должно смотреть в мир, будет достаточно опции expose. Ну и реверс-прокси, само собой, так что только форвардинг 80/443 на маршрутизаторе для внешних коннектов.
2. Где логи хранишь? Советую локи, намного легче ELK, что по потреблению ресурсов, что по конфигурированию.
3. Чек смартов дисков и демон для UPS для корректного шатдауна тоже обязательно нужны, не увидел. Так что smartmontools и apcupsd нужны обязательно.
TomMass
Member
Аватар користувача
Звідки: Харьков

Повідомлення

LostBoy
Да не за что

1. Да. Юзаю радарр.И не не только я, но и домашние. Юзкейс простой: в jackett добавляются теркеры и настраивается их индексация по айди категориям.В радар прокидываются апи ключи из джакета. Связываешь торрент-клиентом и настраиваешь в нем нужную категорию. Заходишь на радар, вбиваешь имя фильма и добавляешь его в библиотеку. В идеальном флоу он ищет установленное тобой качество на трекерах и дробавляет в загрузки. Но я никак не напишу нормальные регэкспы, чтобы он корректно подхватывал имена. Так что нужно тыцнуть кнопочку "скачать". То есть жена зашла и нашла кинцо из основных (4 на данный момент подвязано) трекеров.
2. Nginx как пережиток старых конфигов и сердцу близок) jackett не прокси. caddy удобно проксить по портам, без доменов. То есть не экспортить порт контейнера в систему, а проксить через кадди в контейнер на порт. Но сам понимаю, что нужно найти более удобное решение. Думал на него полностью перелезть когда-то - но сыровато еще все у них. Не помню уже с чем столкнулся, но помню что не было какой-то элементарщины.
3. Редиска хранит сессии и кеш путей к объектам. После добавления загрузка картинок и фоток х2.
4. Есть общий для всех юзер, у которого примуанченный вольюм так же примаунчен к торренту. Там несколько директорий. Эти директории в торренте настроены как watch-dir. Соответственно закидываем торрент файлик в диру games > nextcloud синкает на сервер > клиент по крону тянет с сервера > торрент-клиент добавляет новый торрент с правилами (для games скачивать в games) > торрент удаляет или переносит файл > nx client синхронизирует это удаление. Почему через клиент? потому что в nextcloud нужно сихронизировать файлы и метаданные об этих файлах в базе.
5. Не нужно. Пробросил порт с роутера на адрес и выкинул порт контейнера. Так потому что  mac по дефолту не поддерживает l2tp over ipsec. Костылить на рабочей тачке не хотел. Так что просто поднял контейнер
6.Самба просто на системе. Ибо невозможно разобраться с владельцами файлов в вольюмах, что маунтятся на самбу и на сервисы. Точнее можно, но оооооочень много гемороя

1. traefik норм. не хватает времени его нормально разобрать. хоть на работе и крутиться в одном из кубер кластеров. как в отпуск уйду-может дойдут руки и голова. но сперва нужно добить python. это сейчас больший приоритет)))
2. Логи были сперва в elk через gelf на другой машине. потом забил. тк система работает стабильно уже долгое время особо не чего там читать. а новые сервисы через docker logs -f. но нужно бы лимиты поставить, да.
3. Смарт есть в графану через node-rexporter. smartmon контейнер называется

Отправлено спустя 30 секунд:
кстати книги нормальной по traefik нет?
Відповісти