|
|
|
|
Вверх #1 |
3Dnews fanАвтор темы Регистрация: 13.09.2016
Адрес: Citizen of the World
|
И пару слов о софте/багах/etc.
Т.к. у меня всё докеризировано, а файлопомоечные диски не рутовые, то нужно пофиксить демон докера, чтобы он ждал маунта всех дисков. В противном случае докер порой поднимается быстрее, нежели монтируются диски, легковесность дистрибутива даёт о себе знать. Так что правим openrc конфиг докера в /etc/runlevels/default/docker, добавив dev-mount в depend() секцию. По итогу получаем такой результат: СПОЙЛЕР »
Код:
#!/sbin/openrc-run
supervisor=supervise-daemon
name="Docker Daemon"
description="Persistent process that manages docker containers"
description_reload="Reload configuration without exiting"
command="${DOCKERD_BINARY:-/usr/bin/dockerd}"
command_args="${DOCKER_OPTS}"
DOCKER_LOGFILE="${DOCKER_LOGFILE:-/var/log/${RC_SVCNAME}.log}"
DOCKER_ERRFILE="${DOCKER_ERRFILE:-${DOCKER_LOGFILE}}"
DOCKER_OUTFILE="${DOCKER_OUTFILE:-${DOCKER_LOGFILE}}"
if [ "$DOCKER_ERRFILE" = "$DOCKER_OUTFILE" ]; then
LOGPROXY_OPTS="$LOGPROXY_OPTS -m"
fi
export \
LOGPROXY_CHMOD="${LOGPROXY_CHMOD:-0644}" \
LOGPROXY_LOG_DIRECTORY="${LOGPROXY_LOG_DIRECTORY:-/var/log}" \
LOGPROXY_ROTATION_SIZE="${LOGPROXY_ROTATION_SIZE:-104857600}" \
LOGPROXY_ROTATION_TIME="${LOGPROXY_ROTATION_TIME:-86400}" \
LOGPROXY_ROTATION_SUFFIX="${LOGPROXY_ROTATION_SUFFIX:-.%Y%m%d%H%M%S}" \
LOGPROXY_ROTATED_FILES="${LOGPROXY_ROTATE_FILES:-5}"
output_logger="log_proxy $LOGPROXY_OPTS $DOCKER_OUTFILE"
error_logger="log_proxy $LOGPROXY_OPTS $DOCKER_ERRFILE"
extra_started_commands="reload"
rc_ulimit="${DOCKER_ULIMIT:--c unlimited -n 1048576 -u unlimited}"
retry="${DOCKER_RETRY:-TERM/60/KILL/10}"
if [ -e /etc/profile.d/proxy.sh ]; then
. /etc/profile.d/proxy.sh
fi
depend() {
need sysfs cgroups net dev-mount
after firewall
}
start_pre() {
checkpath -f -m 0644 -o root:docker "$DOCKER_ERRFILE" "$DOCKER_OUTFILE"
}
reload() {
ebegin "Reloading configuration"
$supervisor $RC_SVCNAME --signal HUP
eend $?
}
Весь софт докеризирован для лёгкого переноса между серверами и восстановления. Даже самба ![]() Всё добро расположено в одном docker-compose,yaml файле, примерно такого вида: СПОЙЛЕР »
Код:
services:
samba:
image: samba
restart: ${RESTART_POLICY}
build:
context: .
dockerfile: docker/samba
environment:
- PUID=1000
- PGID=1000
- TZ=${TIMEZONE:-Europe/Moscow}
volumes:
- ${DOWNLOAD_FOLDER}:/downloads
- ./config/samba/smb.conf:/etc/samba/smb.conf:ro
ports:
- 445:445
deploy:
resources:
limits:
cpus: '0.5'
memory: 500M
transmission:
image: transmission
user: vitoha
restart: ${RESTART_POLICY}
build:
context: .
dockerfile: docker/transmission
environment:
- PUID=1000
- PGID=1000
- TZ=${TIMEZONE:-Europe/Moscow}
volumes:
- ./config/transmission:/transmission/config
- ${DOWNLOAD_FOLDER}:/downloads
ports:
- ${WEB_UI_PORT:-9091}:9091
- ${TORRENT_PORT:-64320}:64320
- ${TORRENT_PORT:-64320}:64320/udp
deploy:
resources:
limits:
cpus: '1'
memory: 4G
jellyfin:
image: lscr.io/linuxserver/jellyfin:10.9.11
container_name: jellyfin
devices:
- /dev/dri
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- DOCKER_MODS=linuxserver/mods:jellyfin-opencl-intel
volumes:
- ./config/jellyfin:/config
- ${DOWNLOAD_FOLDER}/tvseries:/data/tvshows
- ${DOWNLOAD_FOLDER}/movies:/data/movies
ports:
- 8096:8096
- 8920:8920
- 7359:7359/udp
- 1900:1900/udp
restart: ${RESTART_POLICY}
deploy:
resources:
limits:
cpus: '2'
memory: 1G
И содержимое .env файла, откуда подтягиваются переменные (только там что-то и надо править): СПОЙЛЕР »
Код:
RESTART_POLICY=always DOWNLOAD_FOLDER=/fileshare Transmission и samba билдятся на локальной машине, вот их контент: samba СПОЙЛЕР »
Код:
FROM alpine:edge RUN apk add --no-cache samba ENTRYPOINT ["smbd", "-F", "--no-process-group"] transmission (с закомменченым примером смены веб-интерфейса) СПОЙЛЕР »
Код:
FROM alpine:edge
ENV USER_ID=1000
ENV GROUP_ID=1000
ENV USER_NAME=vitoha
ENV GROUP_NAME=vitoha
RUN addgroup -g $GROUP_ID $GROUP_NAME && \
adduser --shell /sbin/nologin --disabled-password \
--no-create-home --uid $USER_ID --ingroup $GROUP_NAME $USER_NAME
WORKDIR /app
RUN apk add --no-cache transmission-daemon wget unzip
#RUN wget https://github.com/Secretmapper/combustion/archive/release.zip && unzip release.zip
#ENV TRANSMISSION_WEB_HOME='/app/combustion-release'
ENTRYPOINT ["/usr/bin/transmission-daemon", "--foreground", "--config-dir", "/transmission/config"]
Да, не везде "красота", но это в процессе, т.к. надо добавить ещё jakett и Radarr для автоматизации автодобавления фильмов в библиотеку, а потом только оптимизировать compose. Ибо преждевременная оптимизация - корень всех бед. По-факту система работает и работает без сбоев, после ребута автоматически поднимается очень быстро, но работы много впереди: и сервисов добавить, и нормально переписать композ, и адекватно добавить второй диск, который пока что только для "красоты". По ресурсам: чисто для файлопомойки с торрентами хватит и 4ГБ ОЗУ, у меня потребление чуть повыше, т.к. ещё много, что там в тестовых целях крутится. |
|
|
|
|
|
Вверх #2 |
МодераторРегистрация: 17.03.2004
Адрес: K-PAX
|
Цитата
(VitohA) »
докеризировано
|
|
|
|
|
|
Вверх #4 |
МодераторРегистрация: 17.03.2004
Адрес: K-PAX
|
Цитата
(Lesnik75) »
XaXoL
Это контейнеры такие. |
|
|
|