From 33ed56accab22a363c033f6fdd50277187cdf9bb Mon Sep 17 00:00:00 2001
From: Matt Elliott
+
-
+
diff --git a/build.sh b/build.sh
index 306b8ea..31bc9c9 100755
--- a/build.sh
+++ b/build.sh
@@ -118,11 +118,6 @@ if [[ ! -z ${DOCKER_PASSWORD} ]]; then
docker tag ${BUILD_TAG} ${DOCKER_USERNAME}/${DOCKER_REPONAME}:${VERSION}
fi
docker push ${DOCKER_USERNAME}/${DOCKER_REPONAME}
- if [[ ! -z ${MICROBADGER_HOOK} ]]; then
- echo "Call MicroBadger hook"
- curl -X POST ${MICROBADGER_HOOK}
- echo
- fi
echo
fi
if [[ ! -z ${QUAY_PASSWORD} ]]; then
From d801cf45ce186ac12e727ca50fb883cf0838d2a8 Mon Sep 17 00:00:00 2001
From: CrazyMax
@@ -208,14 +218,15 @@ docker run -d --name librenms_cron \
### Syslog-ng
-If you want to enable syslog-ng, you have to run a "sidecar" container like in the [docker-compose file](examples/compose/docker-compose.yml) or run a simple container like this :
+If you want to enable syslog-ng, you have to run a "sidecar" container (see syslog-ng service in [docker-compose.yml](examples/compose/docker-compose.yml) example) or run a simple container like this :
```bash
docker run -d --name librenms_syslog \
--env-file $(pwd)/librenms.env \
+ -e SIDECAR_SYSLOGNG=1 \
-p 514 -p 514/udp \
-v librenms:/data \
- librenms/librenms:latest /usr/sbin/syslog-ng -F
+ librenms/librenms:latest
```
You have to create a configuration file to enable syslog in LibreNMS too. Create a file called for example `/data/config/syslog.php` with this content :
@@ -229,7 +240,7 @@ $config['enable_syslog'] = 1;
You can add a custom Monitoring (Nagios) plugin in `/data/monitoring-plugins/`.
-> ⚠️ Container has to be restarted to propagate changes
+> :warning: Container has to be restarted to propagate changes
## Upgrade
diff --git a/assets/etc/supervisord/cron.conf b/assets/etc/supervisord/cron.conf
new file mode 100644
index 0000000..0088ba0
--- /dev/null
+++ b/assets/etc/supervisord/cron.conf
@@ -0,0 +1,6 @@
+[program:cron]
+command = /usr/local/bin/cron
+stdout_logfile = /dev/stdout
+stdout_logfile_maxbytes = 0
+stderr_logfile = /dev/stderr
+stderr_logfile_maxbytes = 0
\ No newline at end of file
diff --git a/assets/etc/supervisord/syslog-ng.conf b/assets/etc/supervisord/syslog-ng.conf
new file mode 100644
index 0000000..3a72e45
--- /dev/null
+++ b/assets/etc/supervisord/syslog-ng.conf
@@ -0,0 +1,6 @@
+[program:syslog-ng]
+command = /usr/sbin/syslog-ng -F
+stdout_logfile = /dev/stdout
+stdout_logfile_maxbytes = 0
+stderr_logfile = /dev/stderr
+stderr_logfile_maxbytes = 0
\ No newline at end of file
diff --git a/entrypoint.sh b/entrypoint.sh
index b4b9d93..189c5d6 100644
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -15,9 +15,6 @@ REAL_IP_FROM=${REAL_IP_FROM:-"0.0.0.0/32"}
REAL_IP_HEADER=${REAL_IP_HEADER:-"X-Forwarded-For"}
LOG_IP_VAR=${LOG_IP_VAR:-remote_addr}
-MEMCACHED_PORT=${MEMCACHED_PORT:-11211}
-RRDCACHED_PORT=${RRDCACHED_PORT:-42217}
-
LIBRENMS_POLLER_THREADS=${LIBRENMS_POLLER_THREADS:-16}
LIBRENMS_POLLER_INTERVAL=${LIBRENMS_POLLER_INTERVAL:-5}
@@ -27,6 +24,7 @@ LIBRENMS_DISTRIBUTED_POLLER_GROUP=${LIBRENMS_DISTRIBUTED_POLLER_GROUP:-'0'}
LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_HOST=${LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_HOST:-${MEMCACHED_HOST}}
LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_PORT=${LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_PORT:-${MEMCACHED_PORT}}
+SIDECAR_CRON=${SIDECAR_CRON:-0}
LIBRENMS_CRON_DISCOVERY_ENABLE=${LIBRENMS_CRON_DISCOVERY_ENABLE:-true}
LIBRENMS_CRON_DAILY_ENABLE=${LIBRENMS_CRON_DAILY_ENABLE:-true}
LIBRENMS_CRON_ALERTS_ENABLE=${LIBRENMS_CRON_ALERTS_ENABLE:-true}
@@ -35,6 +33,8 @@ LIBRENMS_CRON_BILLING_CALCULATE_ENABLE=${LIBRENMS_CRON_BILLING_CALCULATE_ENABLE:
LIBRENMS_CRON_CHECK_SERVICES_ENABLE=${LIBRENMS_CRON_CHECK_SERVICES_ENABLE:-true}
LIBRENMS_CRON_POLLER_ENABLE=${LIBRENMS_CRON_POLLER_ENABLE:-true}
+SIDECAR_SYSLOGNG=${SIDECAR_SYSLOGNG:-0}
+
DB_PORT=${DB_PORT:-3306}
DB_NAME=${DB_NAME:-librenms}
DB_USER=${DB_USER:-librenms}
@@ -237,13 +237,14 @@ for mon_plugin in ${mon_plugins}; do
ln -sf ${DATA_PATH}/monitoring-plugins/${mon_plugin} /usr/lib/monitoring-plugins/${mon_plugin}
done
-# Sidecar cron container ?
-if [ "$1" == "/usr/local/bin/cron" ]; then
+# Sidecar cron container
+if [ "$SIDECAR_CRON" = "1" ]; then
echo ">>"
echo ">> Sidecar cron container detected"
echo ">>"
# Init
+ rm /etc/supervisord/syslog-ng.conf
if [ -z "$CRONTAB_PATH" ]; then
>&2 echo "ERROR: CRONTAB_PATH must be defined"
exit 1
@@ -291,15 +292,19 @@ EOL
# Fix crontab perms
echo "Fixing crontab permissions..."
chmod -R 0644 ${CRONTAB_PATH}
-elif [ "$1" == "/usr/sbin/syslog-ng" ]; then
+elif [ "$SIDECAR_SYSLOGNG" = "1" ]; then
echo ">>"
echo ">> Sidecar syslog-ng container detected"
echo ">>"
# Init
+ rm /etc/supervisord/cron.conf
mkdir -p ${DATA_PATH}/syslog-ng /run/syslog-ng
chown -R librenms. ${DATA_PATH}/syslog-ng /run/syslog-ng
else
+ # Init
+ rm /etc/supervisord/cron.conf /etc/supervisord/syslog-ng.conf
+
echo "Waiting ${DB_TIMEOUT}s for database to be ready..."
counter=1
while ! ${dbcmd} -e "show databases;" > /dev/null 2>&1; do
diff --git a/examples/compose/docker-compose.yml b/examples/compose/docker-compose.yml
index 0f8ff5a..2d630f4 100644
--- a/examples/compose/docker-compose.yml
+++ b/examples/compose/docker-compose.yml
@@ -1,4 +1,4 @@
-version: "3.2"
+version: "3.5"
services:
traefik:
@@ -123,8 +123,6 @@ services:
container_name: librenms_cron
domainname: example.com
hostname: librenms
- command:
- - "/usr/local/bin/cron"
depends_on:
- librenms
volumes:
@@ -138,6 +136,7 @@ services:
- "DB_USER=${MYSQL_USER}"
- "DB_PASSWORD=${MYSQL_PASSWORD}"
- "DB_TIMEOUT=30"
+ - "SIDECAR_CRON=1"
env_file:
- "./librenms.env"
restart: always
@@ -147,9 +146,6 @@ services:
container_name: librenms_syslog
domainname: example.com
hostname: librenms
- command:
- - "/usr/sbin/syslog-ng"
- - "-F"
depends_on:
- librenms
ports:
@@ -170,6 +166,7 @@ services:
- "DB_USER=${MYSQL_USER}"
- "DB_PASSWORD=${MYSQL_PASSWORD}"
- "DB_TIMEOUT=30"
+ - "SIDECAR_SYSLOGNG=1"
env_file:
- "./librenms.env"
restart: always
From 41c57487994688d9bd6640d6eab6724994376044 Mon Sep 17 00:00:00 2001
From: CrazyMax
+
zW=5GnV3UIZj)b42dtQ_YgTwLVe>U{>A){6Hri&jVbcDtjdYH$j1*QCoBl8DOyCLt> z##MnYT*1iW9_j1FhRra5V$z0;PM7Up`S~e4R9R#sDq|P|soN8tqL?VY#EeN7hKbD3 zjV!7Q|8O$S#x;?h#(RNY3gMoOK@R8=8#e~L1z*DEOBj>D5L)P5l3@&AnAy#%${oV z$9MH7=JA9S3ny57rE5?H$Y^a^!k#8CkzT3hB_=Iow*Dw )zty$sIN!4=o zKlxWM1exr%Td!}gvH?;TWEWAyom^ 002e^1^@s6OVXdR00007bV*G`2jT@5 z6B-nrU8I!&000SaNLh0L01FcU01FcV0GgZ_00004XF*Lt006O%3;baP0013oNkl lPEMRkzSeaE z>G6RRaH=1v2Fb_1N+4hXBq!Z<-9UPL_yqjc)P}lL2?Q)_Z%-!bx`FigzzOIyoR|Pv z9;qY~CMfDc@xJNr`ht+m7>u4sYL1>nzTm|~@;RW|wCTF<5KZ748fD-fvEnn2@D*S1 z!98p_UVkssTb`nXs_?8Y%MrS~W~CFbuQRa)vJ~=>&$#^z+PKApx1%LuB5mAiGHu+} zmp1uvZgHDI5#!#qQ5;-J7gKAJ31LF63gkeU%gwrw{jGZv{{hZ3n+43HbWSi;2qeJ< z7753v)k)3F5u|43@}W+OI2(RmsF!?xlU2eoFQ>?LwejAHwr6HYc$LNpr{e@E;@om1 zU%c!ZvC61&3Ftz`O6T&p3D|NH5Ny1L@S>YojW00_Nk2R!VvYH`G>labQHZ9lAINyO zvm+Tfcix9P6*PH4T#Y)Z;zK|#S_6~{QpG2`#_sA+3HE#rgW)9Wc~6}qSAScn1Z-wQ z!c@6l&B-T0<90ul31Ux_8m3$jJ4d7$YuhlOZkx1 $cMAJ@zw6T?!Rs?L+ zhtMG5OoJIGo?4`^r2ggMlo1?;LK|ltUOOH*iNPBE!ceH_e zU$F?d`EB>T69Gqz53T|oCFbiula6z=BcP=xU3cnwx{mB+QZjG3#HM|!X`{G}C0~La zPgr)9nspVXwCX`z03NM+k^qSPPV QcX;CAMZVNE z*|=bwcw&+gu~Ni2&QYtY$(L)t^x!~fzt`-t5I^n&H(p`cag)T8bKp60&k&b(Se!nx zQVHlXhFGGa@FpN_rfE#RCZL!K>L-m`Tq4p;HEop64#ZI@EPw=KvJa`xE(-)a#_ h2Yf1n|6EcP&qG3k*J{XJt2uiv zrIG-1;JSQWv;C=>fq|0j96C5gnN*pF*ctA)g-H#87!Q;c@XRl>g2T(p1rd?K%;4}E z4pF}vIV{>}258=I(Iz82hu7wc7U1=ofKR2U3Fpe=J8-uv6`vt4u#4GYQ>g^(U{40A zOh8&s(b)Ai7#s=GeSz&V3S1)71ey}CV_z~$iGVib>{LHRRU1Dg_!GExnWOBnnR7%; znW@vMYW72^9zfs?xN`@tzXaq%ocI{Xd!~IK;_Kv21aNK_;J6GH-AU|>*`#`3XVM1# zJ}5hnbvNxwEt=`iy#)>KsbSHL1k2Y2&pKv1ko1&vc;+4@0;XgpvFovm-O&oJy- 9z z6=x`_apr>ok-s*oR04MFLjrgckj_HMyq*Ti*Kj~6El51C95kn7X1j;~TwN3L%?Tg| zEqjn JOJm4d6SkDaXu*A9_WWMmf{kuV|dug zPvP%7tif;*T>M+t^0g-5jJY8O=61oW_z4)Ow(2!*H-)Y@DGkVXfwKYNMSs&&{iaSQ zH9)Bjvh8Zqi!2`h6Zr~I3sBF-fjDy}Qr0BTeh_8j?IZfe(l%s^wwbhfcTuX}Y+~?} zZ_uZvorC^lU+>r_Xe!%w$6>zpo7#wOu`=@FRy`>{yzU&a`g Rc` zXipF*ZF_q%Q%RAn1Gi7}3o1_>X3VB)wzMN_m6e-ppX^J%z%qj)*S5uWVXK-{g>C|F z)salmlyIn7iDmq;+1?8l*D^}F@CQeG7lS*+`Ml#$$9Yh_d=3T0a{1uiJE1+T68`K4 z^(tI9i_cgRq{fQNI}nii9y;JUZvxUah^{wbC0%d&rZ@20L>tZdoi++SKnvndsx{JZ zDaj#ngT@)~u+gL`5b%jMss-wkJ9uOWBpH;IB+gT~Ufjx#S~+YKWjxkfSk2R$R2w>q zn8H2jTqNv1fH=x*8t8%L$ZN% b{#NF_D$AOwMpq%sACY z{e-i7#)T!-GD$q)twhjd@yq7%e@%CeNc&+_Sn4OE!j{$O7Q3@I^a00&xA@+GsEv%> zmPyAaa?CSMQKz4@CZOZ+Kr?6&P@!sS%Y0dr6{mw{L_}yrK15$ 0^!T&@5~8qj5hMzR=N%o*5tsivWkK9mLdcNK c+A3-FEk||!o1U@@l92%QOjJZ)V<~b&RN+}!7gK|AEXNZ zHIU^zi-3hr9wN@QX>j>pf-64Do=0>aN4}CT2Z@mn+b$F9pcURe A0Tj_x zz^o(7DQWWg?Y{G)szRbs6 oH`x_>mO#^jRDhtG|(lqHG5xcxq z{IN-ReaOP~4YAKy1pLcK6s?vmS`jcv$Sm^nZo@b37e&`uc1eYMWn9B^z%!8Vhd8HY zlzd@F-IViw{UbM+&JJGqPD?~1J!e;i4!z7$nX(Rj$P9JsaC9NfaNdnQZ|C4jY$@tZ zIU)S+ e`|e0o^^R zYS2j6_!5xDZmB>(UWF@eoP36I5C6Fyz{ov(#kYX!z9CUs6HeK_pxSKp0s@wRsyV4! z2gG#WfJ;@HA4GTA-HCXD5;k`q7i8XTfN%_u{VYdYly(_Fd2rPY_cjF8%i|*;ZlE3N zPHJ=AYZtTKiM{BLgansYTiti-9lfO`M+}HA_HdWD-F-%er8KpP+1svB^4ZyN?jeVO z6go$)W-?&gxE=0Hy#8h|(BCI!`By3dJ-l$l6Yd7=3>omG4XRx1gP{>?8&?$BxZpO9 zYQ-^k_rk$Nq_#@T_9s=W>_`j{g)7c2mZ~Gp0+jHOsGzS4vF559*M%WOIKX)y44htr zg${gnfvcR(o`L~|x-x0O61Ba?#Ly+xA&xxF(?72zi3>A Gj^g#qxEE$ z(V}{wZrN%~-{7}G6tM_+f6xf3Az$4P-%aF5;>ue03SKxjfd4B>fH #6;2;E|iQCyzIC)$k|2$}ibMQRQfrc@p zMR#f;t4{cxI^#82q;haF8v-QmQVN`|5--y9y=H`jSA}G6GTi%8z_C^gBrC3yeDQ!; zLWaL|I_J$ZQ!b`p9X|7;4Fr;H_~q9?jc<8|Cf2P~0{+;SMDr5Rc0s9O?5R>d0z&o_ zSDEBP*bgPGAoBCWw2Yuh(p4nN0yT38n_y-8K4$h79^d?_TpGj)M zGiJ&^v)e#X7ykeeXMMefl3qZz*Q~aC+{-!G`fawfh&w!_Mf_3n21f#&B7bSF&3hrb zM(?yVO*|0_eUmOF(~(9=r&BvDPPd;B8ehGC%*H18jPmC#Jv!GZazptp7x>#v-X6Hm zagHcd?a$I^ML_#ulpQqKUO+k<#tw@z1c?`TcUD-&tG7h+p&>Ac7) IWva6HAkAd _bhOGdD=*_UQ^0PQboVo7)PK#X=w(Q9$y=pmwo;cGC3=>k8v12y0n%7y3c+ zLS$&$n@sSYCi=e|kTO&_0Vx1((cuF10lcs-Arw-~M*!rZYnyb93MZf*dT0W*2^hE_ zyvnrHZS_4jpK%+t`$iaGIbekzdZ<7OK;*sVkAc%txBeg$g=j}WpX5!o#%#YFHgfN+ z96%|6) CbgzU1e}(##cbrBoD8U->;rfaJw9%fjNFsG#V2KpKrI5g zMX#$pbjQupBlhIz+HgJoBXHZ5Q`-Nx8{0+%#@A3uz?s3}RU0LpUQ%~iW?8dUm+3CQ zUZb6UzljyldP3@ _IM9u9K``VKVpvr>ej=Q1x!fKrG5XrL;D=MLwoMeRlAN+ z8rZAJduj6Cqg1qqHuqL^UyT5`?arnLfLL|ic#XDPeT8nY{0)cX7AM3b!j^r dSbxR53q69cj~*m+1EEvgqDG$RR*TH(-24krIiq_R q)_S~vbW6`ZqW^uEPd_OrrVC0+>4M@?`axb1ef;(-n##Dxd;e&F_;CUA+^t#9 z7!va}{<41`Gv#(%f6i|c+`k#>!E!k-3hAKZ_mu42d-Db7d-LJK!vcEZfn3JcBe^ft zzAxj>D|*a6?fVB6&UF_O?grg`(>1!qnk$UT8K!cQPT`YtHgS6#cnJsveo^;>M0KPv z0z#SqAzQ7@qPqe6!PnESAivtWY oV9T|GtPKsSS89``W2{c?^-f58j4BRm{96 zz8kw78~d|gXw)a}KsfY#_FJ#hoi<#hEmmKVxm9gG2R=^~0X6;pVFfY@q%OPua*0Z! z+wLwU Sz&TVVyng3ZAw3<4#wNtvqj#B+ z&Xj?li_bh{?#E6Z13)*t c^m1ASvKJI~peKQ>5{lVLBLi~1}?hItJT639h3}majOu4VMM7$~j9(#w1 zdC4hr-KdmSAlE;xze?L}y3P=D=ne@nWr{iH$X%wxQJpYu<09!~81Y$8B^~qI)n^JF ziSgZ4xQ53iASx1+FW&p@>T`w^sHRg6-d5<0ZEy{bbWn>|MWysDaGP9iYbp#1RH@gX zP?HaG+Z%r3K0^>33<*GXJTR1aTO2y=&}~WR0Cmqhc9*vtswuVwzOOp2RpLT(=s`fV zzK|$%g=DiGh=p0&<#JbA0Yu|N(t9P~+tjii5EEazIlO%9wO8o*f8Ap`2wmk6ASX6d zxpGR?6FV;PoTMXfzbt%{pa9l_OU2H33~tl+km@*b5~xA$iz0@E@jwiDRYQVcJqhO? zGBFdDi8}c}Nh!lmJb-dEodfYH*E7ZfA+nxG2Fof?(U~~Fq@;fvQBYA)rSCymw3ROe zK$nWgeuyEljnHKdmu8}aATj8-?FMZNv06tM_*URPQ3x ^gwyx)85b_!`5Ui1W9~nk`%39~__s`*&@QwSRXq=EM!We) zB^yj>V##2_!GMDd2O$nd7a$gT4kt(g`hkLB?1+c(_+2I;z$vsQFsSP-&s0#e_e8Ld zmw*kHU!qUk&0`4U1FlWJ!I%b2kpTa00VBBx2!csQ=k=1gCQN>iH1|O<`ap)>Vck{Q zdV_?pJ>hS3H;&-;2ZAbKoP(W+os7pncV96i#tsgE7!utcCLi8F5+pWe;20JlAxB8n zcq9PrMUt$%__+MMhZGpY<$~KSDk)>)P^=pvi%;i3VuC7 n^VQ?~WD%971+jVBJ@&TvQjC9z)A3OnDugPM_lLs+Z zZ|DS7W!r!nBKeSnZNYWpIe+L-Ja9?^J4k-yvq!%n12Me-+#KV+ZoFVRwlQ?lEQlMC zAecB ph zh=qg9kY$(5Ry>cc8;`M|_H{VEnhneKg=C>jZe{=p&xb2eUzcC6>Iuk)!P{>zotgct zkm)dfSDi^afs)~Y8MCo;N+9O+!*Y_S^~{tvE`L45juM3x)633F&Lu(ohkxVwwm|q- zg(dW({36 i^`RS< z&HN)UvD$b^QuZ{|k8V{SOTZn|khtu*{+!b#;s6`A<0f-I#*TG)zw$&(ugjE#5Q#u) zd@ja)eBiG~PeA$y==d#Jl7K!=g)$&ae!fhfxi865gEQ`xmyI|fA?4;PZ&yI dI8Ha8&S!ph)LpwS5 jNOyI}=c=m5_=+Ylxv Ms))`6=gd>v;fN8)_QZ2N%{$}((RNx UrF*C6GUt$7n5lC;ACnp!Z1}#8koj^cJWeX(U>X5~k+031!A)a^eI4p*ru*1V zU8r0MS*Hu5u;V;-WiuUr0~*r^VjFZjGRSu1V9b>x?etBTpK`{DA>fjcAm~O%@5y1} zqBrhQ%(z%o70k2?fdE)uK0{tBotD9@my5s{#N#CQb;v05p$`1Li8Kkag6#LQlsM%0 zUETqJYL5g*JEtDJt#loyU~tX$3Dk|r3}2gt{B@s+CHI1&3RrE%hYx^&fxHAXPss2S z@PEL(QVAF(o#w!)1YGxA28jd$=jm|T0u=!jqqww`3B37SEXGB n!`Gi4+;p1<%QUuCw5 z<(L2aSQ_st6CEenOQ0UyOu-c+B2b;TOP32TJjz#SGd}Q5=e$Q0S;y_|&r3iD$$r2` z@7pkp$B<;Wq{Rg!-a~L{2Y^go`)(=Cow0$6gk-q$vXCL7?7+H^lz-lO$+$1}eYkl7 zpM&bjPC(>=s}HZ39W^*r^N8tG+<5skUy{6_jjB3Y=IYBB^?I(LOn5E&lw^5NRWgO@ zf8$vpZ<}$!M@3ljo{;Ggw)}fu0^-+qHA*^@@V-?L3D|Gjb=n2oFc&ae#b90HPSvb8 zMKW29qaG)lam^N!1^X@6m<*O{Sqj}eZacyyuKFsbEO56EmO nJsvXg|Uw>fKy6>Ry z+4oICJ^s@`F8%Hs5>-R3PsKSzZL}1mh)?NBs7D0=|NX`ehp1l-HTqoefT;D~fIG(j zPkURy_r1Y-=)n*ChSjX*2^n)nFHF(wbHOq|O!!H^MVlITTD)&8REGbWX|+JIZC?*P z_^=8P2Apwm4_|JG|2|gjZ${7``a^%{5B;G(^oRb?AO9D}{{X)j)|T?s51ar1002ov JPDHLkV1mzqba4Ox diff --git a/README.md b/README.md index 4c9f5e4..0c01647 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ ![]()
![]()
-
-
+
+
## About From d627abc4067f0fc90277c54d500244c60bfb816a Mon Sep 17 00:00:00 2001 From: CrazyMax
Date: Wed, 4 Sep 2019 02:56:23 +0200 Subject: [PATCH 067/477] LibreNMS 1.55 --- .travis.yml | 2 +- CHANGELOG.md | 4 ++++ Dockerfile | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 98b405d..ab5198e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ services: env: global: - - VERSION=1.54 + - VERSION=1.55 - DOCKER_USERNAME=librenms - DOCKER_REPONAME=librenms - DOCKER_LOGIN=librenmsbot diff --git a/CHANGELOG.md b/CHANGELOG.md index 602c0c3..21e0bdd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.55-RC1 (2019/09/04) + +* LibreNMS 1.55 + ## 1.54-RC2 (2019/08/28) * Add python3 modules required for new [Dispatcher Service](https://docs.librenms.org/Extensions/Dispatcher-Service/) (PR #36) diff --git a/Dockerfile b/Dockerfile index e5ec657..afd7965 100644 --- a/Dockerfile +++ b/Dockerfile @@ -85,7 +85,7 @@ RUN apk --update --no-cache add \ && setcap cap_net_raw+ep /usr/bin/nmap \ && setcap cap_net_raw+ep /usr/sbin/fping -ENV LIBRENMS_VERSION="1.54" \ +ENV LIBRENMS_VERSION="1.55" \ LIBRENMS_PATH="/opt/librenms" \ DATA_PATH="/data" \ CRONTAB_PATH="/var/spool/cron/crontabs" From 177b486e84f6a6751b076ca689847b01cf57e329 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sat, 14 Sep 2019 22:18:44 +0200 Subject: [PATCH 068/477] Update compose since latest rrdcached image --- examples/compose/docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/compose/docker-compose.yml b/examples/compose/docker-compose.yml index 2a4099e..2d630f4 100644 --- a/examples/compose/docker-compose.yml +++ b/examples/compose/docker-compose.yml @@ -67,6 +67,8 @@ services: - "./rrd-journal:/data/journal" environment: - "TZ=${TZ}" + - "PUID=${PUID}" + - "PGID=${PGID}" - "LOG_LEVEL=LOG_INFO" - "WRITE_TIMEOUT=1800" - "WRITE_JITTER=1800" From ce51083aaf946bdeffeae7f484f878b83ac9c6ce Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sat, 14 Sep 2019 23:02:43 +0200 Subject: [PATCH 069/477] Review data permissions Remove usermod/groupmod (Issue #38) --- .res/patreon.png | Bin 896 -> 956 bytes .res/paypal.png | Bin 897 -> 956 bytes CHANGELOG.md | 5 +++++ README.md | 2 ++ entrypoint.sh | 21 +++++++++++++-------- 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/.res/patreon.png b/.res/patreon.png index 9880e74993a5e2a55511aa3bef66cf672934bb12..8b716190abbdde5915e4dfe0257b56ef6f9a6d14 100644 GIT binary patch delta 843 zcmV-R1GM~r2fPQ683+ad007F8#l(>zMh6fE1=GGZ;gN19e*+OoL_t(|+U=abYui8+ z$Mr`w$v@EAg?3B>^_V47r({W%WC#QbhC;zphfM9#O_QfAp_2#GU#_WwV=r}ZT(I3Z zKJ4(VPLi!(r=PBo&V2`84AM#O>3!}!-5E{_0EK;PD6QfSw5 S>rYif$Ne_6nle)8(k iZ2e3b5pW*gp@7= zwXGt-lUW2$Vi7!vMermR!IM}^!5g&TXl)Dv`gP8#7&rTvP3+ze!#*Y#A8=F3J_xdE zweYrIW6&HSy!CN^ew=wAWYp^5ZC7x2i )i*lEF>|+XebDOOy!CMwyuNJko3u^j|^C%rW!{)G# zp0Kore+?|_T)B=JMi{I7H~e}08D7EIQ*GRR%=5Ea#chA#Z;s$;Z@=Rq4ZGV*+(g=q z&b(f&jd9s?&KW3C=9MjIo`AXsh277#Zw(Y@)?0lzEH7N|b#|Y;z}q-ZQ92p!&v#?k z^}{nWW8?xBS|&r_xd#Qe<-f0cpp1kW r~i0;uTx(EA9{0$Zn ze^4KUd6{+i7no%M?>Eo0xhF)y6BgUYb%6Iz6f+x~ehD(o_T95oC`Uaf1nWufd)Rv) zf=42F>m!0Ev6h0@d39<|KnxuwnC_D@heslKB!c( yDf9z z6e*q-n=9FuhLL@=tvUbVeCE5D`F3<;En_<0pl*CnV3R&5kZb9DTE!ROAAsQ8{sIEV VY)!K4uVnxL002ovPDHLkV1n-(l@9;_ delta 782 zcmV+p1M&R42Y?5V83+OZ002esQj?J(Mh5{EDC%nBL6L4Je*)D>L_t(|+U=XaPuoBg z$Nfh&$v@CImD({yYDN~OPO!iN0}@iDNR=vO>c9j`H&32eP^S!03r#H?nPh2DaHYf$ zd`gge=U<#J=lD!$&Q9+1RffCE^S#f#dv}4e N_UcBvw0zN7?A zK{KloGzHD9Djm(C;RK~SoN4VHsbkHY+J2A6k!hcu-qiRznKzo%PeaXe=*4_E-skRT zerQ%3_qWd60)Vm>Ko_UE`S%BKl8bqFz~9@<(>yqze=x8_MN_)Gz0Eq!{+Y=L({cWc zw)i`oX_{C~a 3lN38*w1gKN!R@Pfn#~Lf}lRma+q&LRclERu${j}M5vhR;! zSv2)8f4?3XVcwqK6j*77u{mgV$91eSbdQM5y2}xB9-9xpHL&kaPZ;=a6C{XJ#(M@$ z%b{7=XIt#x;doPLqv^(!6+)!1ZW>K&KA^#f1#EgOBI2+bmnN2BW;_3Hnq_@Q1$F{U zIKy)fo5Y?TNr=&8GKVIH&kI$exR{^|WVoTuf1W9SrE{f;fGT$E<_;#`zxEO=lPf(! znYy}@Y0~$oJkW%yZVyy_5)IO+(Hb6YF<6eFNg!jV89P16D?J-DL)CWsdx!mOen4rS^3?T0IIt9W7g zw_(B0HbN_IYA+C#-sNnd=@R;r*@gQSK~cO#@GKQ&qw*eHqPGbC0btGz%Z!&HPXGV_ M07*qoM6N<$f)j3bK>z>% diff --git a/.res/paypal.png b/.res/paypal.png index 24c3954ad6567b6dca8ab4e4f841060fa6d39ba8..e23c83d249972a4b53cd7eef56d50445ae00e4d8 100644 GIT binary patch delta 843 zcmV-R1GM~s2fPQ683+ad001_J?hcV5Mh6fC1>uNPW07tre*+OoL_t(|+U=V$Z__{& z$4&VVFu>fAkHE;t$jHc;u@YsEVClfXg5;%AI&|nzscaDg3Py?oLu6%1rGgsCLn<*4 zsmtqoPMn-y?i^oYbI)*={!$t{ckkZs?!9-eE&zbw+b;+nwgK+H!9NbYT!?&645FV9 z5R>5hH3WMee~1jd1|Sv#WD-1nC%_=D9GsNNJ=cbKttm|@u8r_A$hiSt9!#U;+yE~R zrctV+(fyAAFHZD&_FllCo1n@YL@1ZA`HDvf>PUbCq^j};KLgB4fT3%a06cf?0I90F z!KXh;QdwNRPXe4EQB^nC8ry-1`vROGQB^k>CYE3#e=HXM#az>$k1v!0ru)YZOy?Y6 zGPTS#_?sI|Tix@TCs@){FgWvL8!8B-HJX3CII{<%g2+N>Rd7-;3`A@LM-&*tOg3Fz zO#Hpu`Dd#lKm#UQtvBQPz*sq36qtT_D1#^;E_PipYtH181fjKxoX)^%pJDy-=nzT; zqpQeff43`9F6j*cUY_FMrpiNjuf4^}ELt(-*pS^@I$Gy6*5;-aLt|C@PoG!divq(F z<^>x50rxc>5&{|E{fVYHuns>OFj?OwN2HTRaU6kCOZD`A!rDvL`!w3hK}Z6_E3%_6 zC1M&m%eGwB 8dim=h8(8f01BvG50sX!LXRg r3SDBroUvJqgKA&pL0k@3Z<(L$($@wsYY+_Ik@IO4&^;ca z3c=`{E*4D0@&@itI@A1jTN`P+Vz^VX6~x0`f9`w=V}%u7iT+~{3g*>_#p7tTM=|Aq zf7-wtvK)bZhhx1BrcL9fP{#91D0Ri`pC}a=s&&f#FJtpM<1Z=(p)XQvYnW9|Rqe j<# +#uVr1@s z+rwHRvpof54jMJDXai}dtp{0eS&XdH#eAVq(Yknwe|PM4E4q PM zJg4_&iDo7jf;f4Kj7-zQ){iVPU9Q%FMCIy_add^=VsmbdmRihaMwvihlY;?{grB5) zUX%%gf5Y+Re>U{>A){6Hri&jVbcDtjdYH$j1*QCoBl8DOyCLt>##MnYT*1iW9_j1F zhRra5V$z0;PM7Up`S~e4R9R#sDq|P|soN8tqL?VY#EeN7hKbD3jV!7Q|8O$S#x iVR2~c-4SYmPGJj%VZyB)Ky!8*f!OYXxK?HTgZyn1Pefj|HN N002ovPDHLkV1j~8f(QTr diff --git a/CHANGELOG.md b/CHANGELOG.md index 21e0bdd..b3e5f04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 1.55-RC2 (2019/09/14) + +* Review data permissions +* Remove usermod/groupmod (Issue #38) + ## 1.55-RC1 (2019/09/04) * LibreNMS 1.55 diff --git a/README.md b/README.md index 0c01647..022c534 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,8 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ * `/data` : Contains configuration, rrd database, logs, additional Monitoring plugins, additional syslog-ng config files +> :warning: Note that the volume should be owned by the user/group with the specified `PUID` and `PGID`. If you don’t give the volume correct permissions, the container may not start. + ### Ports * `80` : HTTP port diff --git a/entrypoint.sh b/entrypoint.sh index ae1f93f..7303e75 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -74,11 +74,12 @@ sed -i -e "s|date\.timezone.*|date\.timezone = ${TZ}|" /etc/php7/php.ini \ # Change librenms UID / GID echo "Checking if librenms UID / GID has changed..." -if [ $(id -u librenms) != ${PUID} ]; then - usermod -u ${PUID} librenms +if [ -n "${PGID}" ] && [ "${PGID}" != "`id -g librenms`" ]; then + sed -i -e "s/^librenms:\([^:]*\):[0-9]*/librenms:\1:${PGID}/" /etc/group + sed -i -e "s/^librenms:\([^:]*\):\([0-9]*\):[0-9]*/librenms:\1:\2:${PGID}/" /etc/passwd fi -if [ $(id -g librenms) != ${PGID} ]; then - groupmod -g ${PGID} librenms +if [ -n "${PUID}" ] && [ "${PUID}" != "`id -u librenms`" ]; then + sed -i -e "s/^librenms:\([^:]*\):[0-9]*:\([0-9]*\)/librenms:\1:${PUID}:\2/" /etc/passwd fi # PHP @@ -213,8 +214,11 @@ fi # Fix perms echo "Fixing permissions..." -chown -R librenms. ${DATA_PATH} \ - ${LIBRENMS_PATH}/config.d \ +chown librenms. ${DATA_PATH}/config \ + ${DATA_PATH}/logs \ + ${DATA_PATH}/monitoring-plugins \ + ${DATA_PATH}/rrd +chown -R librenms. ${LIBRENMS_PATH}/config.d \ ${LIBRENMS_PATH}/bootstrap \ ${LIBRENMS_PATH}/storage chmod ug+rw ${DATA_PATH}/logs \ @@ -263,7 +267,7 @@ if [ "$SIDECAR_CRON" = "1" ]; then # Add crontab cat ${LIBRENMS_PATH}/librenms.nonroot.cron > ${CRONTAB_PATH}/librenms sed -i -e "s/ librenms //" ${CRONTAB_PATH}/librenms - + if [ $LIBRENMS_CRON_DISCOVERY_ENABLE != true ]; then sed -i "/discovery.php/d" ${CRONTAB_PATH}/librenms fi @@ -306,7 +310,8 @@ elif [ "$SIDECAR_SYSLOGNG" = "1" ]; then # Init rm /etc/supervisord/cron.conf /etc/supervisord/nginx.conf /etc/supervisord/php.conf /etc/supervisord/snmpd.conf mkdir -p ${DATA_PATH}/syslog-ng /run/syslog-ng - chown -R librenms. ${DATA_PATH}/syslog-ng /run/syslog-ng + chown librenms. ${DATA_PATH}/syslog-ng + chown -R librenms. /run/syslog-ng else # Init rm /etc/supervisord/cron.conf /etc/supervisord/syslog-ng.conf From 62cb36c280fa8cfb4c7cac0f768559e1fd9434dc Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sat, 14 Sep 2019 23:45:53 +0200 Subject: [PATCH 070/477] Move doc --- .dockerignore | 1 + README.md | 238 ++------------------- doc/docker/environment-variables.md | 59 +++++ doc/docker/ports.md | 4 + doc/docker/volumes.md | 5 + doc/notes/add-user.md | 15 ++ doc/notes/additional-monitoring-plugins.md | 5 + doc/notes/crons.md | 14 ++ doc/notes/edit-config.md | 11 + doc/notes/syslog-ng.md | 19 ++ doc/notes/update-database.md | 7 + doc/notes/validate.md | 28 +++ doc/upgrade.md | 8 + doc/usage.md | 26 +++ 14 files changed, 221 insertions(+), 219 deletions(-) create mode 100644 doc/docker/environment-variables.md create mode 100644 doc/docker/ports.md create mode 100644 doc/docker/volumes.md create mode 100644 doc/notes/add-user.md create mode 100644 doc/notes/additional-monitoring-plugins.md create mode 100644 doc/notes/crons.md create mode 100644 doc/notes/edit-config.md create mode 100644 doc/notes/syslog-ng.md create mode 100644 doc/notes/update-database.md create mode 100644 doc/notes/validate.md create mode 100644 doc/upgrade.md create mode 100644 doc/usage.md diff --git a/.dockerignore b/.dockerignore index 085517e..bddebf6 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,6 +4,7 @@ /.git /.res +/doc /examples /.editorconfig /.gitignore diff --git a/README.md b/README.md index 022c534..315f2b9 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,8 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ ### Included * Alpine Linux 3.10, Nginx, PHP 7.3 -* Cron tasks as a ["sidecar" container](#crons) -* Syslog-ng support through a ["sidecar" container](#syslog-ng) +* Cron tasks as a ["sidecar" container](doc/notes/crons.md) +* Syslog-ng support through a ["sidecar" container](doc/notes/syslog-ng.md) * Ability to configure [distributed polling](https://docs.librenms.org/#Extensions/Distributed-Poller/#distributed-poller) * Ability to add custom Monitoring plugins (Nagios) * OPCache enabled to store precompiled script bytecode in shared memory @@ -36,225 +36,25 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ * [RRDcached](https://github.com/crazy-max/docker-rrdcached) image ready to use for better scalability * [Postfix SMTP relay](https://github.com/juanluisbaptiste/docker-postfix) image to send emails * [MariaDB](https://github.com/docker-library/mariadb) image as database instance -* Cron jobs as a ["sidecar" container](#cron) -* Syslog-ng support through a ["sidecar" container](#syslog-ng) +* Cron jobs as a ["sidecar" container](doc/docker/environment-variables.md#cron) +* Syslog-ng support through a ["sidecar" container](doc/docker/environment-variables.md#syslog-ng) -## Docker +## Documentation -### Environment variables - -#### General - -* `TZ` : The timezone assigned to the container (default `UTC`) -* `PUID` : LibreNMS user id (default `1000`) -* `PGID`: LibreNMS group id (default `1000`) -* `MEMORY_LIMIT` : PHP memory limit (default `256M`) -* `UPLOAD_MAX_SIZE` : Upload max size (default `16M`) -* `OPCACHE_MEM_SIZE` : PHP OpCache memory consumption (default `128`) -* `REAL_IP_FROM` : Trusted addresses that are known to send correct replacement addresses (default `0.0.0.0/32`) -* `REAL_IP_HEADER` : Request header field whose value will be used to replace the client address (default `X-Forwarded-For`) -* `LOG_IP_VAR` : Use another variable to retrieve the remote IP address for access [log_format](http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format) on Nginx. (default `remote_addr`) - -#### (Distributed) Poller - -* `LIBRENMS_POLLER_THREADS` : Threads that `poller-wrapper.py` runs (default `16`) -* `LIBRENMS_POLLER_INTERVAL` : Interval in minutes at which `poller-wrapper.py` runs (defaults to `5`) [docs](https://docs.librenms.org/#Support/1-Minute-Polling/) -* `LIBRENMS_DISTRIBUTED_POLLER_ENABLE` : Enable distributed poller functionality -* `LIBRENMS_DISTRIBUTED_POLLER_NAME` : Optional name of poller (defaults to hostname) -* `LIBRENMS_DISTRIBUTED_POLLER_GROUP` : By default, all hosts are shared and have the poller_group = 0. To pin a device to a poller, set it to a value greater than 0 and set the same value here. One can also specify a comma separated string of poller groups. The poller will then poll devices from any of the groups listed. [docs](https://docs.librenms.org/#Extensions/Distributed-Poller/#distributed-poller) -* `LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_HOST` : Memcached server for poller synchronization (Defaults to `$MEMCACHED_HOST`) -* `LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_PORT` : Port of memcached server (Defaults to `$MEMCACHED_PORT`) - -#### Cron - -> :warning: Only used if you enabled and run a [sidecar cron container](#crons) - -* `SIDECAR_CRON` : Set to `1` to enable sidecar cron mode for this container (default `0`) -* `LIBRENMS_CRON_DISCOVERY_ENABLE` : Enable LibreNMS discovery for this container cronjobs (default `true`) -* `LIBRENMS_CRON_DAILY_ENABLE` : Enable LibreNMS daily script for this container cronjobs (default `true`) -* `LIBRENMS_CRON_ALERTS_ENABLE` : Enable LibreNMS alerts generation for this container cronjobs (default `true`) -* `LIBRENMS_CRON_BILLING_ENABLE` : Enable LibreNMS billing polling for this container cronjobs (default `true`) -* `LIBRENMS_CRON_BILLING_CALCULATE_ENABLE` : Enable LibreNMS billing for this container cronjobs (default `true`) -* `LIBRENMS_CRON_CHECK_SERVICES_ENABLE` : Enable LibreNMS service checks for this container cronjobs (default `true`) -* `LIBRENMS_CRON_POLLER_ENABLE` : Enable LibreNMS polling for this container cronjobs (default `true`) - -#### Syslog-ng - -> :warning: Only used if you enabled and run a [sidecar syslog-ng container](#syslog-ng-1) - -* `SIDECAR_SYSLOGNG` : Set to `1` to enable sidecar syslog-ng mode for this container (default `0`) - -#### Database - -* `DB_HOST` : MySQL database hostname / IP address -* `DB_PORT` : MySQL database port (default `3306`) -* `DB_NAME` : MySQL database name (default `librenms`) -* `DB_USER` : MySQL user (default `librenms`) -* `DB_PASSWORD` : MySQL password (default `librenms`) -* `DB_TIMEOUT` : Time in seconds after which we stop trying to reach the MySQL server (useful for clusters, default `30`) - -#### Misc - -* `LIBRENMS_SNMP_COMMUNITY` : This container's SNMP v2c community string (default `librenmsdocker`) -* `MEMCACHED_HOST` : Hostname / IP address of a Memcached server -* `MEMCACHED_PORT` : Port of the Memcached server (default `11211`) -* `RRDCACHED_HOST` : Hostname / IP address of a RRDcached server -* `RRDCACHED_PORT` : Port of the RRDcached server (default `42217`) - -### Volumes - -* `/data` : Contains configuration, rrd database, logs, additional Monitoring plugins, additional syslog-ng config files - -> :warning: Note that the volume should be owned by the user/group with the specified `PUID` and `PGID`. If you don’t give the volume correct permissions, the container may not start. - -### Ports - -* `80` : HTTP port -* `514 514/udp` : Syslog ports (Only used if you enabled and run a [sidecar syslog-ng container](#syslog-ng-1)) - -## Use this image - -### Docker Compose - -Docker compose is the recommended way to run this image. Copy the content of folder [examples/compose](examples/compose) in `/var/librenms/` on your host for example. Edit the compose and env files with your preferences and run the following commands : - -```bash -touch acme.json -chmod 600 acme.json -docker-compose up -d -docker-compose logs -f -``` - -### Command line - -You can also use the following minimal command : - -```bash -docker run -d -p 80:80 --name librenms \ - -v $(pwd)/data:/data \ - -e "DB_HOST=db" \ - librenms/librenms:latest -``` - -> `-e "DB_HOST=db"`
-> :warning: `db` must be a running MySQL instance - -## Notes - -### Edit configuration - -You can edit configuration of LibreNMS by placing `*.php` files inside `/data/config` folder. Let's say you want to edit the [WebUI config](https://docs.librenms.org/#Support/Configuration/#webui-settings). Create a file called for example `/data/config/webui.php` with this content : - -```php -10 -``` - -> :warning: Substitute your desired username ` `, password ` ` and email address ` ` - -### Validate - -If you want to validate your installation from the CLI, type the following command : - -```text -$ docker-compose exec --user librenms librenms php validate.php -==================================== -Component | Version ---------- | ------- -LibreNMS | 1.41 -DB Schema | 253 -PHP | 7.2.7 -MySQL | 10.2.16-MariaDB-10.2.16+maria~jessie -RRDTool | 1.7.0 -SNMP | NET-SNMP 5.7.3 -==================================== - -[OK] Composer Version: 1.6.5 -[OK] Dependencies up-to-date. -[OK] Database connection successful -[OK] Database schema correct -[WARN] You have not added any devices yet. - [FIX] You can add a device in the webui or with ./addhost.php -[WARN] Your install is over 24 hours out of date, last update: Sat, 30 Jun 2018 21:37:37 +0000 - [FIX] Make sure your daily.sh cron is running and run ./daily.sh by hand to see if there are any errors. -[WARN] Your local git branch is not master, this will prevent automatic updates. - [FIX] You can switch back to master with git checkout master -``` - -### Update database - -To update the database manually, type the following command : - -```bash -$ docker-compose exec --user librenms librenms php build-base.php -``` - -### Crons - -If you want to enable the cronjob, you have to run a "sidecar" container (see cron service in [docker-compose.yml](examples/compose/docker-compose.yml) example) or run a simple container like this : - -```bash -docker run -d --name librenms_cron \ - --env-file $(pwd)/librenms.env \ - -e SIDECAR_CRON=1 \ - -v librenms:/data \ - librenms/librenms:latest -``` - -> `-v librenms:/data`
-> :warning: `librenms` must be a valid volume already attached to a LibreNMS container - -### Syslog-ng - -If you want to enable syslog-ng, you have to run a "sidecar" container (see syslog-ng service in [docker-compose.yml](examples/compose/docker-compose.yml) example) or run a simple container like this : - -```bash -docker run -d --name librenms_syslog \ - --env-file $(pwd)/librenms.env \ - -e SIDECAR_SYSLOGNG=1 \ - -p 514 -p 514/udp \ - -v librenms:/data \ - librenms/librenms:latest -``` - -You have to create a configuration file to enable syslog in LibreNMS too. Create a file called for example `/data/config/syslog.php` with this content : - -```php - :warning: Container has to be restarted to propagate changes - -## Upgrade - -To upgrade to the latest version of LibreNMS, pull the newer image and launch the container. LibreNMS will upgrade automatically : - -```bash -docker-compose pull -docker-compose up -d -``` +* Docker + * [Environment variables](doc/docker/environment-variables.md) + * [Volumes](doc/docker/volumes.md) + * [Ports](doc/docker/ports.md) +* [Usage](doc/usage.md) +* Notes + * [Edit configuration](doc/notes/edit-config.md) + * [Add user](doc/notes/add-user.md) + * [Validate](doc/notes/validate.md) + * [Update database](doc/notes/update-database.md) + * [Crons](doc/notes/crons.md) + * [Syslog-ng](doc/notes/syslog-ng.md) + * [Additional Monitoring plugins (Nagios)](doc/notes/additional-monitoring-plugins.md) +* [Upgrade](doc/upgrade.md) ## How can I help ? diff --git a/doc/docker/environment-variables.md b/doc/docker/environment-variables.md new file mode 100644 index 0000000..3d56e37 --- /dev/null +++ b/doc/docker/environment-variables.md @@ -0,0 +1,59 @@ +## Environment variables + +### General + +* `TZ` : The timezone assigned to the container (default `UTC`) +* `PUID` : LibreNMS user id (default `1000`) +* `PGID`: LibreNMS group id (default `1000`) +* `MEMORY_LIMIT` : PHP memory limit (default `256M`) +* `UPLOAD_MAX_SIZE` : Upload max size (default `16M`) +* `OPCACHE_MEM_SIZE` : PHP OpCache memory consumption (default `128`) +* `REAL_IP_FROM` : Trusted addresses that are known to send correct replacement addresses (default `0.0.0.0/32`) +* `REAL_IP_HEADER` : Request header field whose value will be used to replace the client address (default `X-Forwarded-For`) +* `LOG_IP_VAR` : Use another variable to retrieve the remote IP address for access [log_format](http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format) on Nginx. (default `remote_addr`) + +### (Distributed) Poller + +* `LIBRENMS_POLLER_THREADS` : Threads that `poller-wrapper.py` runs (default `16`) +* `LIBRENMS_POLLER_INTERVAL` : Interval in minutes at which `poller-wrapper.py` runs (defaults to `5`) [docs](https://docs.librenms.org/#Support/1-Minute-Polling/) +* `LIBRENMS_DISTRIBUTED_POLLER_ENABLE` : Enable distributed poller functionality +* `LIBRENMS_DISTRIBUTED_POLLER_NAME` : Optional name of poller (defaults to hostname) +* `LIBRENMS_DISTRIBUTED_POLLER_GROUP` : By default, all hosts are shared and have the poller_group = 0. To pin a device to a poller, set it to a value greater than 0 and set the same value here. One can also specify a comma separated string of poller groups. The poller will then poll devices from any of the groups listed. [docs](https://docs.librenms.org/#Extensions/Distributed-Poller/#distributed-poller) +* `LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_HOST` : Memcached server for poller synchronization (Defaults to `$MEMCACHED_HOST`) +* `LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_PORT` : Port of memcached server (Defaults to `$MEMCACHED_PORT`) + +### Cron + +> :warning: Only used if you enabled and run a [sidecar cron container](../notes/crons.md) + +* `SIDECAR_CRON` : Set to `1` to enable sidecar cron mode for this container (default `0`) +* `LIBRENMS_CRON_DISCOVERY_ENABLE` : Enable LibreNMS discovery for this container cronjobs (default `true`) +* `LIBRENMS_CRON_DAILY_ENABLE` : Enable LibreNMS daily script for this container cronjobs (default `true`) +* `LIBRENMS_CRON_ALERTS_ENABLE` : Enable LibreNMS alerts generation for this container cronjobs (default `true`) +* `LIBRENMS_CRON_BILLING_ENABLE` : Enable LibreNMS billing polling for this container cronjobs (default `true`) +* `LIBRENMS_CRON_BILLING_CALCULATE_ENABLE` : Enable LibreNMS billing for this container cronjobs (default `true`) +* `LIBRENMS_CRON_CHECK_SERVICES_ENABLE` : Enable LibreNMS service checks for this container cronjobs (default `true`) +* `LIBRENMS_CRON_POLLER_ENABLE` : Enable LibreNMS polling for this container cronjobs (default `true`) + +### Syslog-ng + +> :warning: Only used if you enabled and run a [sidecar syslog-ng container](../notes/syslog-ng.md) + +* `SIDECAR_SYSLOGNG` : Set to `1` to enable sidecar syslog-ng mode for this container (default `0`) + +### Database + +* `DB_HOST` : MySQL database hostname / IP address +* `DB_PORT` : MySQL database port (default `3306`) +* `DB_NAME` : MySQL database name (default `librenms`) +* `DB_USER` : MySQL user (default `librenms`) +* `DB_PASSWORD` : MySQL password (default `librenms`) +* `DB_TIMEOUT` : Time in seconds after which we stop trying to reach the MySQL server (useful for clusters, default `30`) + +### Misc + +* `LIBRENMS_SNMP_COMMUNITY` : This container's SNMP v2c community string (default `librenmsdocker`) +* `MEMCACHED_HOST` : Hostname / IP address of a Memcached server +* `MEMCACHED_PORT` : Port of the Memcached server (default `11211`) +* `RRDCACHED_HOST` : Hostname / IP address of a RRDcached server +* `RRDCACHED_PORT` : Port of the RRDcached server (default `42217`) diff --git a/doc/docker/ports.md b/doc/docker/ports.md new file mode 100644 index 0000000..a7412bb --- /dev/null +++ b/doc/docker/ports.md @@ -0,0 +1,4 @@ +### Ports + +* `80` : HTTP port +* `514 514/udp` : Syslog ports (only used if you enabled and run a [sidecar syslog-ng container](../notes/syslog-ng.md)) diff --git a/doc/docker/volumes.md b/doc/docker/volumes.md new file mode 100644 index 0000000..87115c4 --- /dev/null +++ b/doc/docker/volumes.md @@ -0,0 +1,5 @@ +## Volumes + +* `/data` : Contains configuration, rrd database, logs, additional Monitoring plugins, additional syslog-ng config files + +> :warning: Note that the volume should be owned by the user/group with the specified `PUID` and `PGID`. If you don’t give the volume correct permissions, the container may not start. diff --git a/doc/notes/add-user.md b/doc/notes/add-user.md new file mode 100644 index 0000000..70c40e3 --- /dev/null +++ b/doc/notes/add-user.md @@ -0,0 +1,15 @@ +## Add user + +On first launch, an initial administrator user will be created : + +| Login | Password | +|------------|------------| +| `librenms` | `librenms` | + +You can create an other user using the commande line : + +```text +$ docker-compose exec --user librenms librenms php adduser.php10 +``` + +> :warning: Substitute your desired username ` `, password ` ` and email address ` ` diff --git a/doc/notes/additional-monitoring-plugins.md b/doc/notes/additional-monitoring-plugins.md new file mode 100644 index 0000000..1a2429a --- /dev/null +++ b/doc/notes/additional-monitoring-plugins.md @@ -0,0 +1,5 @@ +## Additional Monitoring plugins (Nagios) + +You can add a custom Monitoring (Nagios) plugin in `/data/monitoring-plugins/`. + +> :warning: Container has to be restarted to propagate changes diff --git a/doc/notes/crons.md b/doc/notes/crons.md new file mode 100644 index 0000000..c89fd48 --- /dev/null +++ b/doc/notes/crons.md @@ -0,0 +1,14 @@ +## Crons + +If you want to enable the cronjob, you have to run a "sidecar" container (see cron service in [docker-compose.yml](../../examples/compose/docker-compose.yml) example) or run a simple container like this : + +```bash +docker run -d --name librenms_cron \ + --env-file $(pwd)/librenms.env \ + -e SIDECAR_CRON=1 \ + -v librenms:/data \ + librenms/librenms:latest +``` + +> `-v librenms:/data`
+> :warning: `librenms` must be a valid volume already attached to a LibreNMS container diff --git a/doc/notes/edit-config.md b/doc/notes/edit-config.md new file mode 100644 index 0000000..950fc29 --- /dev/null +++ b/doc/notes/edit-config.md @@ -0,0 +1,11 @@ +## Edit configuration + +You can edit configuration of LibreNMS by placing `*.php` files inside `/data/config` folder. Let's say you want to edit the [WebUI config](https://docs.librenms.org/#Support/Configuration/#webui-settings). Create a file called for example `/data/config/webui.php` with this content : + +```php + `-e "DB_HOST=db"`
+> :warning: `db` must be a running MySQL instance From e86031faf6749ce1cdf6acef58f275a667dfb186 Mon Sep 17 00:00:00 2001 From: CrazyMaxDate: Mon, 30 Sep 2019 15:03:53 +0200 Subject: [PATCH 071/477] LibreNMS 1.56 --- .travis.yml | 2 +- CHANGELOG.md | 4 ++++ Dockerfile | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ab5198e..48de4da 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ services: env: global: - - VERSION=1.55 + - VERSION=1.56 - DOCKER_USERNAME=librenms - DOCKER_REPONAME=librenms - DOCKER_LOGIN=librenmsbot diff --git a/CHANGELOG.md b/CHANGELOG.md index b3e5f04..4153da0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.56-RC1 (2019/09/30) + +* LibreNMS 1.56 + ## 1.55-RC2 (2019/09/14) * Review data permissions diff --git a/Dockerfile b/Dockerfile index afd7965..1252d40 100644 --- a/Dockerfile +++ b/Dockerfile @@ -85,7 +85,7 @@ RUN apk --update --no-cache add \ && setcap cap_net_raw+ep /usr/bin/nmap \ && setcap cap_net_raw+ep /usr/sbin/fping -ENV LIBRENMS_VERSION="1.55" \ +ENV LIBRENMS_VERSION="1.56" \ LIBRENMS_PATH="/opt/librenms" \ DATA_PATH="/data" \ CRONTAB_PATH="/var/spool/cron/crontabs" From 0377027362c08b0f2d52bfea1c6097e74bfc7c54 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Mon, 30 Sep 2019 15:29:19 +0200 Subject: [PATCH 072/477] Switch to GitHub Actions (#39) --- .dockerignore | 4 +- .github/workflows/build.yml | 71 +++++++++++++++++++ .github/workflows/test.yml | 71 +++++++++++++++++++ Dockerfile | 7 -- README.md | 4 +- build.sh | 134 ------------------------------------ 6 files changed, 146 insertions(+), 145 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/test.yml delete mode 100755 build.sh diff --git a/.dockerignore b/.dockerignore index bddebf6..30b8025 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,13 +3,13 @@ /*.iml /.git +/.github /.res /doc /examples /.editorconfig +/.gitattributes /.gitignore -/.travis.yml -/build.sh /CHANGELOG.md /LICENSE /README.md diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..f4f8aa9 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,71 @@ +name: build + +on: + pull_request: + branches: 'master' + push: + branches: 'master' + tags: '*' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - + # https://github.com/actions/checkout + name: Checkout + uses: actions/checkout@v1 + - + name: Prepare + id: prepare + run: | + if [[ $GITHUB_REF == refs/tags/* ]]; then + TAG=${GITHUB_REF#refs/tags/} + echo ::set-output name=tag_name::${TAG} + echo ::set-output name=version::${TAG%-*} + else + echo ::set-output name=version::1.56 + fi + echo ::set-output name=build_date::$(date -u +'%Y-%m-%dT%H:%M:%SZ') + echo ::set-output name=docker_username::librenmsbot + echo ::set-output name=docker_image::librenms/librenms + echo ::set-output name=quay_username::librenms+travis + echo ::set-output name=quay_image::quay.io/librenms/librenms + - + name: Docker Build + run: | + docker build \ + --label "org.label-schema.build-date=${{ steps.prepare.outputs.build_date }}" \ + --label "org.label-schema.version=${{ steps.prepare.outputs.version }}" \ + --label "org.label-schema.vcs-ref=${GITHUB_SHA::8}" \ + --tag "${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ + --tag "${{ steps.prepare.outputs.docker_image }}:latest" \ + --tag "${{ steps.prepare.outputs.quay_image }}:${{ steps.prepare.outputs.version }}" \ + --tag "${{ steps.prepare.outputs.quay_image }}:latest" \ + --file Dockerfile . + - + name: Docker Login + if: success() && startsWith(github.ref, 'refs/tags/') + env: + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }} + run: | + echo "${DOCKER_PASSWORD}" | docker login --username "${{ steps.prepare.outputs.docker_username }}" --password-stdin + echo "${QUAY_PASSWORD}" | docker login quay.io --username "${{ steps.prepare.outputs.quay_username }}" --password-stdin + - + name: Docker Push + if: success() && startsWith(github.ref, 'refs/tags/') + run: | + docker push ${{ steps.prepare.outputs.docker_image }} + docker push ${{ steps.prepare.outputs.quay_image }} + - + name: Docker Check Manifest + if: always() && startsWith(github.ref, 'refs/tags/') + run: | + docker run --rm mplatform/mquery ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }} + docker run --rm mplatform/mquery ${{ steps.prepare.outputs.quay_image }}:${{ steps.prepare.outputs.version }} + - + name: Clear + if: always() && startsWith(github.ref, 'refs/tags/') + run: | + rm -f ${HOME}/.docker/config.json diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..080ea37 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,71 @@ +name: test + +on: + pull_request: + branches: 'master' + push: + branches: 'master' + +jobs: + test: + runs-on: ubuntu-latest + steps: + - + # https://github.com/actions/checkout + name: Checkout + uses: actions/checkout@v1 + - + name: Prepare + id: prepare + run: | + echo ::set-output name=build_tag::test + echo ::set-output name=container_name::librenms + echo ::set-output name=running_timeout::120 + echo ::set-output name=running_log_check::snmpd entered RUNNING state + - + name: Docker Build + run: | + docker build --tag ${{ steps.prepare.outputs.build_tag }} --file ${{ matrix.docker_file }} . + - + name: Start MariaDB container + run: | + docker run -d --name mariadb --hostname mariadb \ + -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \ + -e "MYSQL_DATABASE=librenms" \ + -e "MYSQL_USER=librenms" \ + -e "MYSQL_PASSWORD=asupersecretpassword" \ + mariadb:10.2 \ + mysqld --sql-mode= --innodb-file-per-table=1 --lower-case-table-names=0 + - + name: Start container + run: | + docker run -d --name ${{ steps.prepare.outputs.container_name }} \ + -e "DB_HOST=mariadb" \ + -e "DB_NAME=librenms" \ + -e "DB_USER=librenms" \ + -e "DB_PASSWORD=asupersecretpassword" \ + ${{ steps.prepare.outputs.build_tag }} + - + name: Test run + run: | + TIMEOUT=$((SECONDS + ${{ steps.prepare.outputs.running_timeout }})) + while read LOGLINE; do + echo ${LOGLINE} + if [[ ${LOGLINE} == *"${{ steps.prepare.outputs.running_log_check }}"* ]]; then + echo "🎉 Container up!" + break + fi + if [[ $SECONDS -gt ${TIMEOUT} ]]; then + >&2 echo "❌ Failed to run ${{ steps.prepare.outputs.container_name }} container" + docker rm -f ${{ steps.prepare.outputs.container_name }} > /dev/null 2>&1 || true + exit 1 + fi + done < <(docker logs -f ${{ steps.prepare.outputs.container_name }} 2>&1) + + CONTAINER_STATUS=$(docker container inspect --format "{{.State.Status}}" ${{ steps.prepare.outputs.container_name }}) + if [[ ${CONTAINER_STATUS} != "running" ]]; then + >&2 echo "❌ Container ${{ steps.prepare.outputs.container_name }} returned status '$CONTAINER_STATUS'" + docker rm -f ${{ steps.prepare.outputs.container_name }} > /dev/null 2>&1 || true + exit 1 + fi + docker rm -f ${{ steps.prepare.outputs.container_name }} > /dev/null 2>&1 || true diff --git a/Dockerfile b/Dockerfile index 1252d40..b37b5ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,9 @@ FROM alpine:3.10 -ARG BUILD_DATE -ARG VCS_REF -ARG VERSION - LABEL maintainer="CrazyMax" \ - org.label-schema.build-date=$BUILD_DATE \ org.label-schema.name="librenms" \ org.label-schema.description="LibreNMS" \ - org.label-schema.version=$VERSION \ org.label-schema.url="https://github.com/librenms/docker" \ - org.label-schema.vcs-ref=$VCS_REF \ org.label-schema.vcs-url="https://github.com/librenms/docker" \ org.label-schema.vendor="LibreNMS" \ org.label-schema.schema-version="1.0" diff --git a/README.md b/README.md index 315f2b9..87b1f7a 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -
-
+
+
![]()
![]()
![]()
diff --git a/build.sh b/build.sh deleted file mode 100755 index 31bc9c9..0000000 --- a/build.sh +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env bash -set -e - -PROJECT=librenms -BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") -BUILD_TAG=docker_build -BUILD_WORKINGDIR=${BUILD_WORKINGDIR:-.} -DOCKERFILE=${DOCKERFILE:-Dockerfile} -VCS_REF=${TRAVIS_COMMIT::7} -RUNNING_TIMEOUT=120 -RUNNING_LOG_CHECK="snmpd entered RUNNING state" - -PUSH_LATEST=${PUSH_LATEST:-true} -DOCKER_USERNAME=${DOCKER_USERNAME:-librenms} -DOCKER_REPONAME=${DOCKER_REPONAME:-librenms} -DOCKER_LOGIN=${DOCKER_LOGIN:-librenmsbot} -QUAY_USERNAME=${QUAY_USERNAME:-librenms} -QUAY_REPONAME=${QUAY_REPONAME:-librenms} -QUAY_LOGIN=${QUAY_LOGIN:-librenms+travis} - -# Check local or travis -BRANCH=${TRAVIS_BRANCH:-local} -if [[ ${TRAVIS_PULL_REQUEST} == "true" ]]; then - BRANCH=${TRAVIS_PULL_REQUEST_BRANCH} -fi -DOCKER_TAG=${BRANCH:-local} -if [[ "$BRANCH" == "master" ]]; then - DOCKER_TAG=latest -elif [[ "$BRANCH" == "local" ]]; then - BUILD_DATE= - VERSION=local -fi - -echo "PROJECT=${PROJECT}" -echo "VERSION=${VERSION}" -echo "BUILD_DATE=${BUILD_DATE}" -echo "BUILD_TAG=${BUILD_TAG}" -echo "BUILD_WORKINGDIR=${BUILD_WORKINGDIR}" -echo "DOCKERFILE=${DOCKERFILE}" -echo "VCS_REF=${VCS_REF}" -echo "PUSH_LATEST=${PUSH_LATEST}" -echo "DOCKER_LOGIN=${DOCKER_LOGIN}" -echo "DOCKER_USERNAME=${DOCKER_USERNAME}" -echo "DOCKER_REPONAME=${DOCKER_REPONAME}" -echo "QUAY_LOGIN=${QUAY_LOGIN}" -echo "QUAY_USERNAME=${QUAY_USERNAME}" -echo "QUAY_REPONAME=${QUAY_REPONAME}" -echo "TRAVIS_BRANCH=${TRAVIS_BRANCH}" -echo "TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST}" -echo "BRANCH=${BRANCH}" -echo "DOCKER_TAG=${DOCKER_TAG}" -echo - -# Build -echo "### Build" -docker build \ - --build-arg BUILD_DATE=${BUILD_DATE} \ - --build-arg VCS_REF=${VCS_REF} \ - --build-arg VERSION=${VERSION} \ - -t ${BUILD_TAG} -f ${DOCKERFILE} ${BUILD_WORKINGDIR} -echo - -echo "### Test" -docker rm -f ${PROJECT} ${PROJECT}-db > /dev/null 2>&1 || true -docker network rm ${PROJECT} > /dev/null 2>&1 || true -docker network create -d bridge ${PROJECT} -docker run -d --network=${PROJECT} --name ${PROJECT}-db --hostname ${PROJECT}-db \ - -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \ - -e "MYSQL_DATABASE=librenms" \ - -e "MYSQL_USER=librenms" \ - -e "MYSQL_PASSWORD=asupersecretpassword" \ - mariadb:10.2 \ - mysqld --sql-mode= --innodb-file-per-table=1 --lower-case-table-names=0 -docker run -d --network=${PROJECT} --link ${PROJECT}-db \ - -e "DB_HOST=${PROJECT}-db" \ - -e "DB_NAME=librenms" \ - -e "DB_USER=librenms" \ - -e "DB_PASSWORD=asupersecretpassword" \ - --name ${PROJECT} ${BUILD_TAG} -echo - -echo "### Waiting for ${PROJECT} to be up..." -TIMEOUT=$((SECONDS + RUNNING_TIMEOUT)) -while read LOGLINE; do - echo ${LOGLINE} - if [[ ${LOGLINE} == *"${RUNNING_LOG_CHECK}"* ]]; then - echo "Container up!" - break - fi - if [[ $SECONDS -gt ${TIMEOUT} ]]; then - >&2 echo "ERROR: Failed to run ${PROJECT} container" - docker rm -f ${PROJECT} > /dev/null 2>&1 || true - exit 1 - fi -done < <(docker logs -f ${PROJECT} 2>&1) -echo - -CONTAINER_STATUS=$(docker container inspect --format "{{.State.Status}}" ${PROJECT}) -if [[ ${CONTAINER_STATUS} != "running" ]]; then - >&2 echo "ERROR: Container ${PROJECT} returned status '$CONTAINER_STATUS'" - docker rm -f ${PROJECT} > /dev/null 2>&1 || true - exit 1 -fi -docker rm -f ${PROJECT} > /dev/null 2>&1 || true -echo - -if [ "${VERSION}" == "local" -o "${TRAVIS_PULL_REQUEST}" == "true" ]; then - echo "INFO: This is a PR or a local build, skipping push..." - exit 0 -fi -if [[ ! -z ${DOCKER_PASSWORD} ]]; then - echo "### Push to Docker Hub..." - echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_LOGIN" --password-stdin > /dev/null 2>&1 - if [ "${DOCKER_TAG}" == "latest" -a "${PUSH_LATEST}" == "true" ]; then - docker tag ${BUILD_TAG} ${DOCKER_USERNAME}/${DOCKER_REPONAME}:${DOCKER_TAG} - fi - if [[ "${VERSION}" != "latest" ]]; then - docker tag ${BUILD_TAG} ${DOCKER_USERNAME}/${DOCKER_REPONAME}:${VERSION} - fi - docker push ${DOCKER_USERNAME}/${DOCKER_REPONAME} - echo -fi -if [[ ! -z ${QUAY_PASSWORD} ]]; then - echo "### Push to Quay..." - echo "$QUAY_PASSWORD" | docker login quay.io --username "$QUAY_LOGIN" --password-stdin > /dev/null 2>&1 - if [ "${DOCKER_TAG}" == "latest" -a "${PUSH_LATEST}" == "true" ]; then - docker tag ${BUILD_TAG} quay.io/${QUAY_USERNAME}/${QUAY_REPONAME}:${DOCKER_TAG} - fi - if [[ "${VERSION}" != "latest" ]]; then - docker tag ${BUILD_TAG} quay.io/${QUAY_USERNAME}/${QUAY_REPONAME}:${VERSION} - fi - docker push quay.io/${QUAY_USERNAME}/${QUAY_REPONAME} - echo -fi From 70403bfaf72b40514bea97264c555626e2e05219 Mon Sep 17 00:00:00 2001 From: CrazyMax
Date: Mon, 30 Sep 2019 15:30:40 +0200 Subject: [PATCH 073/477] Remove travis --- .travis.yml | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 48de4da..0000000 --- a/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -sudo: required - -services: - - docker - -env: - global: - - VERSION=1.56 - - DOCKER_USERNAME=librenms - - DOCKER_REPONAME=librenms - - DOCKER_LOGIN=librenmsbot - - QUAY_USERNAME=librenms - - QUAY_REPONAME=librenms - - QUAY_LOGIN=librenms+travis - - secure: I9FQ/3FSXYcFaMKM5l59307WUKDmtNMsURZY5GdxH0pS4nKYtLx9URhtR96/7YdyppzXFxW5hI9ooDm5kEvaapuFKnMltLLkFAyNKWUP2QbSq8/PdZhS5R6RCvdv4Eg8cIvS04R1u1effgbdsqg5w9CM3+WYgLnzbMX9oWcGrUzlo0PZAMeL/eTimOLi77esxYSQz9uss2lE4fmXOFnvAqlHSyfGgboHMf1ccL9y051CxQZwJHFtXuamFzoPipO/mxKkJ94Mgx6KRKlfj86bE3YC5IFg2GKFR8aANzGIE5fD0leJy8FAgXzHqxncaPws9W9EDsvm72sHy9ucZ3qd3hJv+94o1mpN2UCTH53vJfqS+FYZ1LQYGwC6OCetQbK2ydag2dFAKxmEhJ9id4KlLMDmR0S0WfQV544a9Tdy9Ej88NfpdyDRBtNkNHbAs2OKa7IP4hLOw0wq/XYAWksHoqncDuyBatBz2mcKY+lZ+oESfDOOXLDEjzhb0hzQjfjlm/J6pixtZ+WtrDpy2lwN+3gI+reRoUf06loTC5TtGe9wAvpx3m7Zj/bbD8yXHcSxRg5OKdKO2GU6WJlwdgmMWVLBlxoGeCV0EpughM/7Ho7YZ1t3PoyiezxMWmPTOIIB59xJjxPl+eKvO4njtKfCNvXJIJl82B7SGT1Pnq7NzOI= # DOCKER_PASSWORD - - secure: eoujj2pOklqQNSBmeKXSegi8PkNa57T6gCX2SJuTpuscNM7RBecZz+0ET9VhOpTxprvph43o8vB7QuvJFwM8AveoOy1GeySlRyt24Wilke3Gkg5h4NRGh25sdZZstyIhrQg7g4YS9fDV8BkcwU3RRJE9u5Cg5M3cl7H4m09Oj4g8xJZ3xJ4equZQERyq92KiKYpGgTMLDhMA65n9cyT41Wa0N9Ri52E3blrzWw8WYEGjj8CTkcgyJrWXgcbu72VFyQagQJ7ojitcwE1pci0SFonHtYJjML8Ig6MNlrrAknx0Tpx3x4OiErfU6pu5k3HiCM2OSBrqwBnNu9kz9cotLHxq8CT0ePQx2H71aew0ZJW14HOTTGHrrwbHfOhwnqI7npOY05RD97DZT0WlKInzUXDoyzypSJv4UHtjBpDa6zpoB34bcqqf+tOrtpkwO0ThxQVQPkd/ypZH6dmmO0RjP+QClByntHPefFLen8rKFRclu9FUU/7l4Lar4v0wSBYgnM58SN9PS+hssibZzrTdWTR5i82Xr8gk+qCaogpx8iE+OsBDe3yzr0IWfap+iG59V1I8+P+RMBNl4Lc0yS2gbEE30+Rhb4/vtUZlTGoVAEzPCWglASZOC/hfISPmCGkqI/jwjv38itrxQR5xrO/g0ecOi+ue4gl80tmWJnS8NRM= # QUAY_PASSWORD - -before_install: - - sudo apt-get update - - docker --version - -script: ./build.sh From d30292ec2812e0c3353ab3023580a409006c3f33 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Mon, 30 Sep 2019 15:31:56 +0200 Subject: [PATCH 074/477] Fix test workflow --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 080ea37..10ed8e1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ jobs: - name: Docker Build run: | - docker build --tag ${{ steps.prepare.outputs.build_tag }} --file ${{ matrix.docker_file }} . + docker build --tag ${{ steps.prepare.outputs.build_tag }} --file Dockerfile . - name: Start MariaDB container run: | From 48e1c8343ed5636645a80d7520b424b82de44aa0 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 20 Oct 2019 17:56:42 +0200 Subject: [PATCH 075/477] Fix Docker labels --- .github/workflows/build.yml | 6 +++--- Dockerfile | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f4f8aa9..b6ba663 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,9 +35,9 @@ jobs: name: Docker Build run: | docker build \ - --label "org.label-schema.build-date=${{ steps.prepare.outputs.build_date }}" \ - --label "org.label-schema.version=${{ steps.prepare.outputs.version }}" \ - --label "org.label-schema.vcs-ref=${GITHUB_SHA::8}" \ + --build-arg "BUILD_DATE=${{ steps.prepare.outputs.build_date }}" \ + --build-arg "VCS_REF=${GITHUB_SHA::8}" \ + --build-arg "VERSION=${{ steps.prepare.outputs.version }}" \ --tag "${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ --tag "${{ steps.prepare.outputs.docker_image }}:latest" \ --tag "${{ steps.prepare.outputs.quay_image }}:${{ steps.prepare.outputs.version }}" \ diff --git a/Dockerfile b/Dockerfile index b37b5ce..1252d40 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,16 @@ FROM alpine:3.10 +ARG BUILD_DATE +ARG VCS_REF +ARG VERSION + LABEL maintainer="CrazyMax" \ + org.label-schema.build-date=$BUILD_DATE \ org.label-schema.name="librenms" \ org.label-schema.description="LibreNMS" \ + org.label-schema.version=$VERSION \ org.label-schema.url="https://github.com/librenms/docker" \ + org.label-schema.vcs-ref=$VCS_REF \ org.label-schema.vcs-url="https://github.com/librenms/docker" \ org.label-schema.vendor="LibreNMS" \ org.label-schema.schema-version="1.0" From 21769335749ff58e00b1fae48396c5c7d7eb48be Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 20 Oct 2019 17:56:51 +0200 Subject: [PATCH 076/477] Update README --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 87b1f7a..15f52c0 100644 --- a/README.md +++ b/README.md @@ -20,17 +20,11 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ ## Features -### Included - -* Alpine Linux 3.10, Nginx, PHP 7.3 * Cron tasks as a ["sidecar" container](doc/notes/crons.md) * Syslog-ng support through a ["sidecar" container](doc/notes/syslog-ng.md) * Ability to configure [distributed polling](https://docs.librenms.org/#Extensions/Distributed-Poller/#distributed-poller) * Ability to add custom Monitoring plugins (Nagios) * OPCache enabled to store precompiled script bytecode in shared memory - -### From docker-compose - * [Traefik](https://github.com/containous/traefik-library-image) as reverse proxy and creation/renewal of Let's Encrypt certificates * [Memcached](https://github.com/docker-library/memcached) image ready to use for better scalability * [RRDcached](https://github.com/crazy-max/docker-rrdcached) image ready to use for better scalability From 62ba88cf8b7f86522db3379e90b2d2cb12cd4e72 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 20 Oct 2019 18:03:07 +0200 Subject: [PATCH 077/477] Fix rrdcached compose --- examples/compose/docker-compose.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/compose/docker-compose.yml b/examples/compose/docker-compose.yml index 2d630f4..2a4099e 100644 --- a/examples/compose/docker-compose.yml +++ b/examples/compose/docker-compose.yml @@ -67,8 +67,6 @@ services: - "./rrd-journal:/data/journal" environment: - "TZ=${TZ}" - - "PUID=${PUID}" - - "PGID=${PGID}" - "LOG_LEVEL=LOG_INFO" - "WRITE_TIMEOUT=1800" - "WRITE_JITTER=1800" From f333dd5c5266cd92781a36b31baee32ee00918d6 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 20 Oct 2019 18:07:27 +0200 Subject: [PATCH 078/477] Fix test --- .github/workflows/test.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 10ed8e1..52d1c10 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,10 +26,15 @@ jobs: name: Docker Build run: | docker build --tag ${{ steps.prepare.outputs.build_tag }} --file Dockerfile . + - + name: Create network + run: | + docker network create -d bridge ${{ steps.prepare.outputs.container_name }} - name: Start MariaDB container run: | docker run -d --name mariadb --hostname mariadb \ + --network ${{ steps.prepare.outputs.container_name }} -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \ -e "MYSQL_DATABASE=librenms" \ -e "MYSQL_USER=librenms" \ @@ -40,6 +45,7 @@ jobs: name: Start container run: | docker run -d --name ${{ steps.prepare.outputs.container_name }} \ + --network ${{ steps.prepare.outputs.container_name }} -e "DB_HOST=mariadb" \ -e "DB_NAME=librenms" \ -e "DB_USER=librenms" \ From 8dae33ad0893e2a2804a2c0fd9e21f4f7aee3fb1 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 20 Oct 2019 18:13:04 +0200 Subject: [PATCH 079/477] Fix test workflow --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 52d1c10..b3cbb9a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,7 +34,7 @@ jobs: name: Start MariaDB container run: | docker run -d --name mariadb --hostname mariadb \ - --network ${{ steps.prepare.outputs.container_name }} + --network ${{ steps.prepare.outputs.container_name }} \ -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \ -e "MYSQL_DATABASE=librenms" \ -e "MYSQL_USER=librenms" \ @@ -45,7 +45,7 @@ jobs: name: Start container run: | docker run -d --name ${{ steps.prepare.outputs.container_name }} \ - --network ${{ steps.prepare.outputs.container_name }} + --network ${{ steps.prepare.outputs.container_name }} \ -e "DB_HOST=mariadb" \ -e "DB_NAME=librenms" \ -e "DB_USER=librenms" \ From a95e1ab194bab4280b24c539b8be8176d81799a1 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 20 Oct 2019 18:13:12 +0200 Subject: [PATCH 080/477] Add ghaction-github-labeler --- .github/labels.yml | 78 ++++++++++++++++++++++++++++++++++++ .github/workflows/labels.yml | 23 +++++++++++ 2 files changed, 101 insertions(+) create mode 100644 .github/labels.yml create mode 100644 .github/workflows/labels.yml diff --git a/.github/labels.yml b/.github/labels.yml new file mode 100644 index 0000000..679d550 --- /dev/null +++ b/.github/labels.yml @@ -0,0 +1,78 @@ +## https://github.com/crazy-max/ghaction-github-labeler +- # bot + name: ":robot: bot" + color: "69cde9" + description: "" +- # bug + name: ":bug: bug" + color: "b60205" + description: "" + from_name: "bug" +- # documentation + name: ":memo: documentation" + color: "c5def5" + description: "" +- # duplicate + name: ":busts_in_silhouette: duplicate" + color: "cccccc" + description: "" + from_name: "duplicate" +- # enhancement + name: ":sparkles: enhancement" + color: "0054ca" + description: "" + from_name: "enhancement" +- # feature request + name: ":bulb: feature request" + color: "0e8a16" + description: "" +- # feedback + name: ":mega: feedback" + color: "03a9f4" + description: "" +- # future maybe + name: ":rocket: future maybe" + color: "fef2c0" + description: "" +- # good first issue + name: ":hatching_chick: good first issue" + color: "7057ff" + description: "" + from_name: "good first issue" +- # help wanted + name: ":pray: help wanted" + color: "4caf50" + description: "" + from_name: "help wanted" +- # hold + name: ":hand: hold" + color: "24292f" + description: "" +- # invalid + name: ":no_entry_sign: invalid" + color: "e6e6e6" + description: "" + from_name: "invalid" +- # maybe bug + name: ":interrobang: maybe bug" + color: "ff5722" + description: "" +- # needs more info + name: ":thinking: needs more info" + color: "795548" + description: "" + from_name: "needs info" +- # question + name: ":question: question" + color: "3f51b5" + description: "" + from_name: "question" +- # upstream + name: ":eyes: upstream" + color: "fbca04" + description: "" +- # wontfix + name: ":coffin: wontfix" + color: "ffffff" + description: "" + from_name: "wontfix" diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml new file mode 100644 index 0000000..2308ace --- /dev/null +++ b/.github/workflows/labels.yml @@ -0,0 +1,23 @@ +name: labels + +on: + push: + branches: + - 'master' + paths: + - '.github/labels.yml' + - '.github/workflows/labels.yml' + +jobs: + labeler: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v1 + - + name: Run Labeler + if: success() + uses: crazy-max/ghaction-github-labeler@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 34d842341ede8a8628e4922316db3996813b0a95 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 20 Oct 2019 18:18:21 +0200 Subject: [PATCH 081/477] Fix test workflow --- .github/workflows/test.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b3cbb9a..b6cfd9f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,15 +26,10 @@ jobs: name: Docker Build run: | docker build --tag ${{ steps.prepare.outputs.build_tag }} --file Dockerfile . - - - name: Create network - run: | - docker network create -d bridge ${{ steps.prepare.outputs.container_name }} - name: Start MariaDB container run: | docker run -d --name mariadb --hostname mariadb \ - --network ${{ steps.prepare.outputs.container_name }} \ -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \ -e "MYSQL_DATABASE=librenms" \ -e "MYSQL_USER=librenms" \ @@ -44,8 +39,7 @@ jobs: - name: Start container run: | - docker run -d --name ${{ steps.prepare.outputs.container_name }} \ - --network ${{ steps.prepare.outputs.container_name }} \ + docker run -d --link mariadb --name ${{ steps.prepare.outputs.container_name }} \ -e "DB_HOST=mariadb" \ -e "DB_NAME=librenms" \ -e "DB_USER=librenms" \ From 3313743ddb8f268b40e9755a6d4836bb0a75af64 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 20 Oct 2019 18:18:27 +0200 Subject: [PATCH 082/477] Final labels --- .github/labels.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/labels.yml b/.github/labels.yml index 679d550..09d7750 100644 --- a/.github/labels.yml +++ b/.github/labels.yml @@ -7,7 +7,6 @@ name: ":bug: bug" color: "b60205" description: "" - from_name: "bug" - # documentation name: ":memo: documentation" color: "c5def5" @@ -16,12 +15,10 @@ name: ":busts_in_silhouette: duplicate" color: "cccccc" description: "" - from_name: "duplicate" - # enhancement name: ":sparkles: enhancement" color: "0054ca" description: "" - from_name: "enhancement" - # feature request name: ":bulb: feature request" color: "0e8a16" @@ -38,12 +35,10 @@ name: ":hatching_chick: good first issue" color: "7057ff" description: "" - from_name: "good first issue" - # help wanted name: ":pray: help wanted" color: "4caf50" description: "" - from_name: "help wanted" - # hold name: ":hand: hold" color: "24292f" @@ -52,7 +47,6 @@ name: ":no_entry_sign: invalid" color: "e6e6e6" description: "" - from_name: "invalid" - # maybe bug name: ":interrobang: maybe bug" color: "ff5722" @@ -61,12 +55,10 @@ name: ":thinking: needs more info" color: "795548" description: "" - from_name: "needs info" - # question name: ":question: question" color: "3f51b5" description: "" - from_name: "question" - # upstream name: ":eyes: upstream" color: "fbca04" @@ -75,4 +67,3 @@ name: ":coffin: wontfix" color: "ffffff" description: "" - from_name: "wontfix" From 31594a783f10e4266d3bad4b966210fafd8960c5 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 20 Oct 2019 19:35:11 +0200 Subject: [PATCH 083/477] Remove workflow test for now * Fix test workflow * Fix test workflow * Fix test workflow * Update labels workflow * Remove workflow test for now --- .github/workflows/labels.yml | 2 + .github/workflows/test.yml | 71 ------------------------------------ 2 files changed, 2 insertions(+), 71 deletions(-) delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml index 2308ace..dd984b6 100644 --- a/.github/workflows/labels.yml +++ b/.github/workflows/labels.yml @@ -13,9 +13,11 @@ jobs: runs-on: ubuntu-latest steps: - + # https://github.com/actions/checkout name: Checkout uses: actions/checkout@v1 - + # https://github.com/crazy-max/ghaction-github-labeler name: Run Labeler if: success() uses: crazy-max/ghaction-github-labeler@v1 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index b6cfd9f..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: test - -on: - pull_request: - branches: 'master' - push: - branches: 'master' - -jobs: - test: - runs-on: ubuntu-latest - steps: - - - # https://github.com/actions/checkout - name: Checkout - uses: actions/checkout@v1 - - - name: Prepare - id: prepare - run: | - echo ::set-output name=build_tag::test - echo ::set-output name=container_name::librenms - echo ::set-output name=running_timeout::120 - echo ::set-output name=running_log_check::snmpd entered RUNNING state - - - name: Docker Build - run: | - docker build --tag ${{ steps.prepare.outputs.build_tag }} --file Dockerfile . - - - name: Start MariaDB container - run: | - docker run -d --name mariadb --hostname mariadb \ - -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \ - -e "MYSQL_DATABASE=librenms" \ - -e "MYSQL_USER=librenms" \ - -e "MYSQL_PASSWORD=asupersecretpassword" \ - mariadb:10.2 \ - mysqld --sql-mode= --innodb-file-per-table=1 --lower-case-table-names=0 - - - name: Start container - run: | - docker run -d --link mariadb --name ${{ steps.prepare.outputs.container_name }} \ - -e "DB_HOST=mariadb" \ - -e "DB_NAME=librenms" \ - -e "DB_USER=librenms" \ - -e "DB_PASSWORD=asupersecretpassword" \ - ${{ steps.prepare.outputs.build_tag }} - - - name: Test run - run: | - TIMEOUT=$((SECONDS + ${{ steps.prepare.outputs.running_timeout }})) - while read LOGLINE; do - echo ${LOGLINE} - if [[ ${LOGLINE} == *"${{ steps.prepare.outputs.running_log_check }}"* ]]; then - echo "🎉 Container up!" - break - fi - if [[ $SECONDS -gt ${TIMEOUT} ]]; then - >&2 echo "❌ Failed to run ${{ steps.prepare.outputs.container_name }} container" - docker rm -f ${{ steps.prepare.outputs.container_name }} > /dev/null 2>&1 || true - exit 1 - fi - done < <(docker logs -f ${{ steps.prepare.outputs.container_name }} 2>&1) - - CONTAINER_STATUS=$(docker container inspect --format "{{.State.Status}}" ${{ steps.prepare.outputs.container_name }}) - if [[ ${CONTAINER_STATUS} != "running" ]]; then - >&2 echo "❌ Container ${{ steps.prepare.outputs.container_name }} returned status '$CONTAINER_STATUS'" - docker rm -f ${{ steps.prepare.outputs.container_name }} > /dev/null 2>&1 || true - exit 1 - fi - docker rm -f ${{ steps.prepare.outputs.container_name }} > /dev/null 2>&1 || true From 616d2b901ee0ffcf56798313777d5b211fe4c69b Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 25 Oct 2019 15:15:35 +0200 Subject: [PATCH 084/477] Fix CVE-2019-11043 (#43) --- CHANGELOG.md | 4 ++++ assets/tpls/etc/nginx/nginx.conf | 19 ++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4153da0..4b2c642 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.56-RC2 (2019/10/25) + +* Fix CVE-2019-11043 + ## 1.56-RC1 (2019/09/30) * LibreNMS 1.56 diff --git a/assets/tpls/etc/nginx/nginx.conf b/assets/tpls/etc/nginx/nginx.conf index 0a2aebb..14ffd84 100644 --- a/assets/tpls/etc/nginx/nginx.conf +++ b/assets/tpls/etc/nginx/nginx.conf @@ -60,15 +60,6 @@ http { ## Serve already compressed files directly, bypassing on-the-fly compression gzip_static on; - ## FastCGI - fastcgi_index index.php; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - include fastcgi_params; - fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_buffers 256 4k; - fastcgi_intercept_errors on; - fastcgi_read_timeout 14400; - server { listen 80; listen [::]:80; @@ -85,7 +76,17 @@ http { } location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.*)$; + set $path_info $fastcgi_path_info; + try_files $fastcgi_script_name =404; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $path_info; + fastcgi_index index.php; fastcgi_pass unix:/var/run/php-fpm7.sock; + fastcgi_buffers 256 4k; + fastcgi_intercept_errors on; + fastcgi_read_timeout 14400; } location ~ /\.ht { From 66abae21893e3222ea78a3bcabe3c2b7e5bfef2f Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sat, 26 Oct 2019 17:13:46 +0200 Subject: [PATCH 085/477] Base image update --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b2c642..16f345e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.56-RC3 (2019/10/26) + +* Base image update + ## 1.56-RC2 (2019/10/25) * Fix CVE-2019-11043 From 4a5f8a0f4cc5af2c25a9bf503d6ce7a8d2ba75f8 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Wed, 30 Oct 2019 16:53:11 +0100 Subject: [PATCH 086/477] Dedicated example for Traefik (#44) --- README.md | 4 +- doc/usage.md | 4 +- examples/compose/docker-compose.yml | 40 +------ examples/traefik/.env | 11 ++ examples/traefik/docker-compose.yml | 170 ++++++++++++++++++++++++++++ examples/traefik/librenms.env | 23 ++++ 6 files changed, 211 insertions(+), 41 deletions(-) create mode 100644 examples/traefik/.env create mode 100644 examples/traefik/docker-compose.yml create mode 100644 examples/traefik/librenms.env diff --git a/README.md b/README.md index 15f52c0..12e4713 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - +
@@ -25,7 +25,7 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ * Ability to configure [distributed polling](https://docs.librenms.org/#Extensions/Distributed-Poller/#distributed-poller) * Ability to add custom Monitoring plugins (Nagios) * OPCache enabled to store precompiled script bytecode in shared memory -* [Traefik](https://github.com/containous/traefik-library-image) as reverse proxy and creation/renewal of Let's Encrypt certificates +* [Traefik](https://github.com/containous/traefik-library-image) as reverse proxy and creation/renewal of Let's Encrypt certificates (see [this template](examples/traefik)) * [Memcached](https://github.com/docker-library/memcached) image ready to use for better scalability * [RRDcached](https://github.com/crazy-max/docker-rrdcached) image ready to use for better scalability * [Postfix SMTP relay](https://github.com/juanluisbaptiste/docker-postfix) image to send emails diff --git a/doc/usage.md b/doc/usage.md index 3a7d3ba..702ff94 100644 --- a/doc/usage.md +++ b/doc/usage.md @@ -2,11 +2,9 @@ ### Docker Compose -Docker compose is the recommended way to run this image. Copy the content of folder [examples/compose](../examples/compose) in `/var/librenms/` on your host for example. Edit the compose and env files with your preferences and run the following commands : +Docker compose is the recommended way to run this image. Copy the content of folder [examples/compose](../examples/compose) in `/var/librenms/` on your host for example. Edit the compose and env files with your preferences and run the following commands: ```bash -touch acme.json -chmod 600 acme.json docker-compose up -d docker-compose logs -f ``` diff --git a/examples/compose/docker-compose.yml b/examples/compose/docker-compose.yml index 2a4099e..6601c84 100644 --- a/examples/compose/docker-compose.yml +++ b/examples/compose/docker-compose.yml @@ -1,37 +1,6 @@ version: "3.5" services: - traefik: - image: traefik:1.7-alpine - container_name: traefik - command: - - "--logLevel=INFO" - - "--defaultentrypoints=http,https" - - "--entryPoints=Name:http Address::80 Redirect.EntryPoint:https" - - "--entryPoints=Name:https Address::443 TLS" - - "--docker" - - "--docker.exposedbydefault=false" - - "--docker.domain=example.com" - - "--acme=true" - - "--acme.acmelogging=true" - - "--acme.email=webmaster@example.com" - - "--acme.storage=acme.json" - - "--acme.entryPoint=https" - - "--acme.onhostrule=true" - - "--acme.httpchallenge=true" - - "--acme.httpchallenge.entrypoint=http" - ports: - - target: 80 - published: 80 - protocol: tcp - - target: 443 - published: 443 - protocol: tcp - volumes: - - "./acme.json:/acme.json" - - "/var/run/docker.sock:/var/run/docker.sock" - restart: always - db: image: mariadb:10.2 container_name: librenms_db @@ -91,6 +60,10 @@ services: container_name: librenms domainname: example.com hostname: librenms + ports: + - target: 80 + published: 80 + protocol: tcp depends_on: - db - memcached @@ -98,11 +71,6 @@ services: - smtp volumes: - "./librenms:/data" - labels: - - "traefik.enable=true" - - "traefik.backend=librenms" - - "traefik.port=80" - - "traefik.frontend.rule=Host:librenms.example.com" environment: - "TZ=${TZ}" - "PUID=${PUID}" diff --git a/examples/traefik/.env b/examples/traefik/.env new file mode 100644 index 0000000..a847768 --- /dev/null +++ b/examples/traefik/.env @@ -0,0 +1,11 @@ +MYSQL_DATABASE=librenms +MYSQL_USER=librenms +MYSQL_PASSWORD=asupersecretpassword + +SMTP_SERVER=smtp.example.com +SMTP_USERNAME=smtp@example.com +SMTP_PASSWORD= + +TZ=Europe/Paris +PUID=1000 +PGID=1000 diff --git a/examples/traefik/docker-compose.yml b/examples/traefik/docker-compose.yml new file mode 100644 index 0000000..2a4099e --- /dev/null +++ b/examples/traefik/docker-compose.yml @@ -0,0 +1,170 @@ +version: "3.5" + +services: + traefik: + image: traefik:1.7-alpine + container_name: traefik + command: + - "--logLevel=INFO" + - "--defaultentrypoints=http,https" + - "--entryPoints=Name:http Address::80 Redirect.EntryPoint:https" + - "--entryPoints=Name:https Address::443 TLS" + - "--docker" + - "--docker.exposedbydefault=false" + - "--docker.domain=example.com" + - "--acme=true" + - "--acme.acmelogging=true" + - "--acme.email=webmaster@example.com" + - "--acme.storage=acme.json" + - "--acme.entryPoint=https" + - "--acme.onhostrule=true" + - "--acme.httpchallenge=true" + - "--acme.httpchallenge.entrypoint=http" + ports: + - target: 80 + published: 80 + protocol: tcp + - target: 443 + published: 443 + protocol: tcp + volumes: + - "./acme.json:/acme.json" + - "/var/run/docker.sock:/var/run/docker.sock" + restart: always + + db: + image: mariadb:10.2 + container_name: librenms_db + command: + - "mysqld" + - "--sql-mode=" + - "--innodb-file-per-table=1" + - "--lower-case-table-names=0" + - "--character-set-server=utf8" + - "--collation-server=utf8_unicode_ci" + volumes: + - "./db:/var/lib/mysql" + environment: + - "TZ=${TZ}" + - "MYSQL_ALLOW_EMPTY_PASSWORD=yes" + - "MYSQL_DATABASE=${MYSQL_DATABASE}" + - "MYSQL_USER=${MYSQL_USER}" + - "MYSQL_PASSWORD=${MYSQL_PASSWORD}" + restart: always + + memcached: + image: memcached:alpine + container_name: librenms_memcached + environment: + - "TZ=${TZ}" + restart: always + + rrdcached: + image: crazymax/rrdcached + container_name: librenms_rrdcached + volumes: + - "./librenms/rrd:/data/db" + - "./rrd-journal:/data/journal" + environment: + - "TZ=${TZ}" + - "LOG_LEVEL=LOG_INFO" + - "WRITE_TIMEOUT=1800" + - "WRITE_JITTER=1800" + - "WRITE_THREADS=4" + - "FLUSH_DEAD_DATA_INTERVAL=3600" + restart: always + + smtp: + image: juanluisbaptiste/postfix + container_name: librenms_smtp + volumes: + - "/etc/localtime:/etc/localtime:ro" + environment: + - "SERVER_HOSTNAME=librenms.example.com" + - "SMTP_SERVER=${SMTP_SERVER}" + - "SMTP_USERNAME=${SMTP_USERNAME}" + - "SMTP_PASSWORD=${SMTP_PASSWORD}" + restart: always + + librenms: + image: librenms/librenms:latest + container_name: librenms + domainname: example.com + hostname: librenms + depends_on: + - db + - memcached + - rrdcached + - smtp + volumes: + - "./librenms:/data" + labels: + - "traefik.enable=true" + - "traefik.backend=librenms" + - "traefik.port=80" + - "traefik.frontend.rule=Host:librenms.example.com" + environment: + - "TZ=${TZ}" + - "PUID=${PUID}" + - "PGID=${PGID}" + - "DB_HOST=db" + - "DB_NAME=${MYSQL_DATABASE}" + - "DB_USER=${MYSQL_USER}" + - "DB_PASSWORD=${MYSQL_PASSWORD}" + - "DB_TIMEOUT=30" + env_file: + - "./librenms.env" + restart: always + + cron: + image: librenms/librenms:latest + container_name: librenms_cron + domainname: example.com + hostname: librenms + depends_on: + - librenms + volumes: + - "./librenms:/data" + environment: + - "TZ=${TZ}" + - "PUID=${PUID}" + - "PGID=${PGID}" + - "DB_HOST=db" + - "DB_NAME=${MYSQL_DATABASE}" + - "DB_USER=${MYSQL_USER}" + - "DB_PASSWORD=${MYSQL_PASSWORD}" + - "DB_TIMEOUT=30" + - "SIDECAR_CRON=1" + env_file: + - "./librenms.env" + restart: always + + syslog-ng: + image: librenms/librenms:latest + container_name: librenms_syslog + domainname: example.com + hostname: librenms + depends_on: + - librenms + ports: + - target: 514 + published: 514 + protocol: tcp + - target: 514 + published: 514 + protocol: udp + volumes: + - "./librenms:/data" + environment: + - "TZ=${TZ}" + - "PUID=${PUID}" + - "PGID=${PGID}" + - "DB_HOST=db" + - "DB_NAME=${MYSQL_DATABASE}" + - "DB_USER=${MYSQL_USER}" + - "DB_PASSWORD=${MYSQL_PASSWORD}" + - "DB_TIMEOUT=30" + - "SIDECAR_SYSLOGNG=1" + env_file: + - "./librenms.env" + restart: always diff --git a/examples/traefik/librenms.env b/examples/traefik/librenms.env new file mode 100644 index 0000000..d200733 --- /dev/null +++ b/examples/traefik/librenms.env @@ -0,0 +1,23 @@ +MEMORY_LIMIT=256M +UPLOAD_MAX_SIZE=16M +OPCACHE_MEM_SIZE=128 +REAL_IP_FROM=0.0.0.0/32 +REAL_IP_HEADER=X-Forwarded-For +LOG_IP_VAR=http_x_forwarded_for + +LIBRENMS_POLLER_THREADS=16 +LIBRENMS_POLLER_INTERVAL=5 + +LIBRENMS_CRON_DISCOVERY_ENABLE=true +LIBRENMS_CRON_DAILY_ENABLE=true +LIBRENMS_CRON_ALERTS_ENABLE=true +LIBRENMS_CRON_BILLING_ENABLE=true +LIBRENMS_CRON_BILLING_CALCULATE_ENABLE=true +LIBRENMS_CRON_CHECK_SERVICES_ENABLE=true +LIBRENMS_CRON_POLLER_ENABLE=true + +LIBRENMS_SNMP_COMMUNITY=librenmsdocker +MEMCACHED_HOST=memcached +MEMCACHED_PORT=11211 +RRDCACHED_HOST=rrdcached +RRDCACHED_PORT=42217 From 1229a66464025086b1bf77115a918ab9b45a4716 Mon Sep 17 00:00:00 2001 From: CrazyMax
Date: Wed, 30 Oct 2019 16:56:34 +0100 Subject: [PATCH 087/477] LibreNMS 1.57 --- CHANGELOG.md | 4 ++++ Dockerfile | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16f345e..0c380a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.57-RC1 (2019/10/30) + +* LibreNMS 1.57 + ## 1.56-RC3 (2019/10/26) * Base image update diff --git a/Dockerfile b/Dockerfile index 1252d40..863b83a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -85,7 +85,7 @@ RUN apk --update --no-cache add \ && setcap cap_net_raw+ep /usr/bin/nmap \ && setcap cap_net_raw+ep /usr/sbin/fping -ENV LIBRENMS_VERSION="1.56" \ +ENV LIBRENMS_VERSION="1.57" \ LIBRENMS_PATH="/opt/librenms" \ DATA_PATH="/data" \ CRONTAB_PATH="/var/spool/cron/crontabs" From fbb387d0dad754da7c4418bae75afe2c7fe0e6fa Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 15 Nov 2019 11:40:42 +0100 Subject: [PATCH 088/477] Update README --- .github/FUNDING.yml | 2 +- .res/patreon.png | Bin 956 -> 0 bytes .res/paypal.png | Bin 956 -> 0 bytes README.md | 9 +++------ 4 files changed, 4 insertions(+), 7 deletions(-) delete mode 100644 .res/patreon.png delete mode 100644 .res/paypal.png diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index dffc4d3..04c13b5 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,2 @@ -patreon: crazymax +github: crazy-max custom: https://www.paypal.me/crazyws diff --git a/.res/patreon.png b/.res/patreon.png deleted file mode 100644 index 8b716190abbdde5915e4dfe0257b56ef6f9a6d14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 zcmV;t14I0YP) WdLMpZ7v`&AaiAKbS@w=FflnGFf%$bF*-3cAS*C2FfiP }oW1=GGZ;Q#;t32;bRa{vGf5&!@T5&_cPe*6Fc00d`2O+f$vv5yP eeONo8BPiSg?(!%t>O-} ztpc=-C#1Ye=hJ$+1NOC{aBd1~YKpd5z?FXT>e1uu9V7*c^ZCgc>ActvO;N6&mke-O zJ4T8x4v=$GvUY@&E(5i#BEgec1W#fSJc&i{Bo@JwSWCehwBTrM3 fmixaCeKCje)5IFemVK@%uB2 zOKy>Ye@?Owh)h}yypu~z6QVO(Q$;%mL6Jo(f!Dq0r$MK;Ul{IX9~4=%5_s<8$=c+7 zl-(*s1(~VY2XhVJy}{iuJ-lcLCOlU^wVe#0(LZ=;Ba3pEdF*2fcypVrD#2S8UauCl zwhL p*|- zNqlsC1jbwAiDsMr_m{tP$ARYoHP1#-vq10|2(!nyc5cHin{vQ20IHZo&O8~WpWdMp z+pf55`rw9@$wctNCpPN~k867$y{d+(APZ-$ItFKZ3GGI}6M;z!FLIzHE1UAcbE 4HgklAB1_Cb@&&UWdZLu&$GEFM8Ojl+sAc)_fHfv8=QU#GR^kgvs5TY zJtqX~N$-2udmn;FB6#Z~f+w+-g4cO WdLMpZ7v`&AaiAKbS@w=FflnGFf%$bFgi3aAS*C2FffnX87=?-00(qQ zO+^Re2>}oU1>uNPV*mgE32;bRa{vGf5&!@T5&_cPe*6Fc00d`2O+f$vv5yP A=8( R`1bZHc47~;*76W7wJbov@Ag>&pl*v8UhIp+hO)0L8 z@G{7`0bU+VqvYHGFAt_ss-w~Uj{q-D^m_JQz@VF;${R!|m$3PYM+oXjfCHqe@&-Qx z%u0ZvYnA{!ckKYFs=C3aKT1+rT)j^MoFGwEH`p56fr 5C= zpN}t;0;c=N4ov49U^2DLHTatwO B7`lLVo) zik!~CYM){K^5_ss1*5CTX16O*F6j*cUY_FMrpiNjuf4^}ELt(-*pS^@I$Gy6*5;-a zLt|C@PoG!divq(F<^>x50rxc>5&{|E{fVYHuns>OFj?OwN2HTRaU6kCOZD`A!rDvL z`!w3hK}Z6_E3%_6C1M&m%eGwB 8dim=h8(8kzjH$_cy@7u$al@ z8pGN)dl*9~TLYIcC#vuk&xF}$2G*2^a$_wDU1GqTv003RYG36+Tn<-nnV;;^*9I_a z5Dedu^Jx{(JszS8!RVYW7EHwQ2JTNf)BJZ^8)>^@xKpwf#KT>G?tBVkg%w_j{$mgd z=GBPB<7l- 1s%Uk4`R}ROgfn9&tf_Rg1&!% e4CtUTF}VXI=*B~T`6gok0000 ![]()
![]()
-
+
![]()
@@ -52,12 +52,9 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ ## How can I help ? -All kinds of contributions are welcome :raised_hands:!
-The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon:
-But we're not gonna lie to each other, I'd rather you buy me a beer or two :beers:! +All kinds of contributions are welcome :raised_hands:! The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon: You can also support this project by [**becoming a sponsor on GitHub**](https://github.com/sponsors/crazy-max) :clap: or by making a [Paypal donation](https://www.paypal.me/crazyws) to ensure this journey continues indefinitely! :rocket: -[](https://www.patreon.com/crazymax) -[](https://www.paypal.me/crazyws) +Thanks again for your support, it is much appreciated! :pray: ## License From 3a92d62e865ed7a18e52b781ed56f209ac40c84d Mon Sep 17 00:00:00 2001 From: CrazyMaxDate: Tue, 19 Nov 2019 14:09:34 +0100 Subject: [PATCH 089/477] Run as non-root user (#6) Switch to s6-overlay as process supervisor Prevent exposing Nginx and PHP version Bind to unprivileged port (8000) Remove php-fpm access log (already mirrored by nginx) --- .gitignore | 11 +- CHANGELOG.md | 17 ++ Dockerfile | 35 ++- README.md | 2 + assets/etc/cont-init.d/00-fix-logs.sh | 4 + assets/etc/cont-init.d/01-fix-uidgid.sh | 11 + assets/etc/cont-init.d/02-fix-perms.sh | 14 ++ .../etc/cont-init.d/03-config.sh | 211 +++--------------- assets/etc/cont-init.d/04-svc-main.sh | 92 ++++++++ assets/etc/cont-init.d/05-svc-cron.sh | 97 ++++++++ assets/etc/cont-init.d/06-svc-syslogng.sh | 25 +++ assets/etc/supervisord.conf | 21 -- assets/etc/supervisord/cron.conf | 6 - assets/etc/supervisord/nginx.conf | 8 - assets/etc/supervisord/php.conf | 8 - assets/etc/supervisord/snmpd.conf | 7 - assets/etc/supervisord/syslog-ng.conf | 6 - assets/etc/syslog-ng/syslog-ng.conf | 2 +- assets/tpls/etc/nginx/nginx.conf | 15 +- assets/tpls/etc/php7/php-fpm.d/www.conf | 14 +- assets/usr/local/bin/cron | 5 - doc/docker/environment-variables.md | 70 +++--- doc/docker/ports.md | 4 +- doc/docker/volumes.md | 4 +- doc/usage.md | 2 +- examples/compose/docker-compose.yml | 10 +- examples/traefik/docker-compose.yml | 8 +- 27 files changed, 377 insertions(+), 332 deletions(-) create mode 100644 assets/etc/cont-init.d/00-fix-logs.sh create mode 100644 assets/etc/cont-init.d/01-fix-uidgid.sh create mode 100644 assets/etc/cont-init.d/02-fix-perms.sh rename entrypoint.sh => assets/etc/cont-init.d/03-config.sh (53%) create mode 100644 assets/etc/cont-init.d/04-svc-main.sh create mode 100644 assets/etc/cont-init.d/05-svc-cron.sh create mode 100644 assets/etc/cont-init.d/06-svc-syslogng.sh delete mode 100644 assets/etc/supervisord.conf delete mode 100644 assets/etc/supervisord/cron.conf delete mode 100644 assets/etc/supervisord/nginx.conf delete mode 100644 assets/etc/supervisord/php.conf delete mode 100644 assets/etc/supervisord/snmpd.conf delete mode 100644 assets/etc/supervisord/syslog-ng.conf delete mode 100644 assets/usr/local/bin/cron diff --git a/.gitignore b/.gitignore index 44cf1be..9b9ce6b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,4 @@ -# Jetbrains -/.idea -/*.iml - -# Visual Studio Code -/.vscode - -# App /.dev +/.idea +/.vscode +/*.iml diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c380a4..d0b4178 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## 1.57-RC2 (2019/11/19) + +* :warning: Run as non-root user (#6) +* Switch to [s6-overlay](https://github.com/just-containers/s6-overlay/) as process supervisor +* Prevent exposing Nginx and PHP version +* :warning: Bind to unprivileged port (8000) +* Remove php-fpm access log (already mirrored by nginx) + +> :warning: **UPGRADE NOTES** +> As the Docker container now runs as a non-root user, you have to first stop the container and change permissions to `data` volume: +> ``` +> docker-compose stop +> chown -R ${PUID}:${PGID} data/ +> docker-compose pull +> docker-compose up -d +> ``` + ## 1.57-RC1 (2019/10/30) * LibreNMS 1.57 diff --git a/Dockerfile b/Dockerfile index 863b83a..0338d4f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -70,7 +70,7 @@ RUN apk --update --no-cache add \ rrdtool \ runit \ shadow \ - supervisor \ + su-exec \ syslog-ng \ ttf-dejavu \ tzdata \ @@ -80,6 +80,8 @@ RUN apk --update --no-cache add \ && pip2 install python-memcached \ && pip3 install --upgrade pip \ && pip3 install python-memcached \ + && wget -q "https://github.com/just-containers/s6-overlay/releases/latest/download/s6-overlay-amd64.tar.gz" -qO "/tmp/s6-overlay-amd64.tar.gz" \ + && tar xzf /tmp/s6-overlay-amd64.tar.gz -C / \ && sed -i -e "s/;date\.timezone.*/date\.timezone = UTC/" /etc/php7/php.ini \ && rm -rf /var/cache/apk/* /var/www/* /tmp/* \ && setcap cap_net_raw+ep /usr/bin/nmap \ @@ -87,39 +89,34 @@ RUN apk --update --no-cache add \ ENV LIBRENMS_VERSION="1.57" \ LIBRENMS_PATH="/opt/librenms" \ - DATA_PATH="/data" \ - CRONTAB_PATH="/var/spool/cron/crontabs" + PUID="1000" \ + PGID="1000" \ + S6_BEHAVIOUR_IF_STAGE2_FAILS="2" RUN mkdir -p /opt \ - && addgroup -g 1000 librenms \ - && adduser -u 1000 -G librenms -h ${LIBRENMS_PATH} -s /bin/sh -D librenms \ - && passwd -l librenms \ - && usermod -a -G librenms nginx \ && curl -sSL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \ && git clone --branch ${LIBRENMS_VERSION} https://github.com/librenms/librenms.git ${LIBRENMS_PATH} \ - && chown -R librenms. ${LIBRENMS_PATH} \ - && su - librenms -c "composer install --no-dev --no-interaction --no-ansi --working-dir=${LIBRENMS_PATH}" \ + && composer install --no-dev --no-interaction --no-ansi --working-dir=${LIBRENMS_PATH} \ && curl -sSLk -q https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro -o /usr/bin/distro \ && chmod +x /usr/bin/distro \ - && mkdir -p /data ${LIBRENMS_PATH}/config.d /var/log/supervisord \ + && mkdir -p ${LIBRENMS_PATH}/config.d \ && cp ${LIBRENMS_PATH}/config.php.default ${LIBRENMS_PATH}/config.php \ && cp ${LIBRENMS_PATH}/snmpd.conf.example /etc/snmp/snmpd.conf \ && sed -i "1s|.*|#!/usr/bin/env python3|" ${LIBRENMS_PATH}/snmp-scan.py \ - && echo "foreach (glob(\"${DATA_PATH}/config/*.php\") as \$filename) include \$filename;" >> ${LIBRENMS_PATH}/config.php \ + && echo "foreach (glob(\"/data/config/*.php\") as \$filename) include \$filename;" >> ${LIBRENMS_PATH}/config.php \ && echo "foreach (glob(\"${LIBRENMS_PATH}/config.d/*.php\") as \$filename) include \$filename;" >> ${LIBRENMS_PATH}/config.php \ - && chown -R librenms. ${DATA_PATH} ${LIBRENMS_PATH} \ - && chown -R nginx. /var/lib/nginx /var/log/nginx /var/log/php7 /var/tmp/nginx \ && pip3 install -r ${LIBRENMS_PATH}/requirements.txt \ + && chown -R nobody.nogroup ${LIBRENMS_PATH} \ && rm -rf /tmp/* -COPY entrypoint.sh /entrypoint.sh COPY assets / -RUN chmod a+x /entrypoint.sh /usr/local/bin/* +RUN addgroup -g ${PGID} librenms \ + && adduser -D -h ${LIBRENMS_PATH} -u ${PUID} -G librenms -s /bin/sh -D librenms \ + && mkdir -p /data /var/run/nginx /var/run/php-fpm -EXPOSE 80 514 514/udp +EXPOSE 8000 514 514/udp WORKDIR ${LIBRENMS_PATH} -VOLUME [ "${DATA_PATH}" ] +VOLUME [ "/data" ] -ENTRYPOINT [ "/entrypoint.sh" ] -CMD [ "/usr/bin/supervisord", "-c", "/etc/supervisord.conf" ] +ENTRYPOINT [ "/init" ] diff --git a/README.md b/README.md index 41ee0de..24e424d 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,13 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ ## Features +* Run as non-root user * Cron tasks as a ["sidecar" container](doc/notes/crons.md) * Syslog-ng support through a ["sidecar" container](doc/notes/syslog-ng.md) * Ability to configure [distributed polling](https://docs.librenms.org/#Extensions/Distributed-Poller/#distributed-poller) * Ability to add custom Monitoring plugins (Nagios) * OPCache enabled to store precompiled script bytecode in shared memory +* [s6-overlay](https://github.com/just-containers/s6-overlay/) as process supervisor * [Traefik](https://github.com/containous/traefik-library-image) as reverse proxy and creation/renewal of Let's Encrypt certificates (see [this template](examples/traefik)) * [Memcached](https://github.com/docker-library/memcached) image ready to use for better scalability * [RRDcached](https://github.com/crazy-max/docker-rrdcached) image ready to use for better scalability diff --git a/assets/etc/cont-init.d/00-fix-logs.sh b/assets/etc/cont-init.d/00-fix-logs.sh new file mode 100644 index 0000000..51a558c --- /dev/null +++ b/assets/etc/cont-init.d/00-fix-logs.sh @@ -0,0 +1,4 @@ +#!/usr/bin/with-contenv sh + +# Fix access rights to stdout and stderr +chown ${PUID}:${PGID} /proc/self/fd/1 /proc/self/fd/2 diff --git a/assets/etc/cont-init.d/01-fix-uidgid.sh b/assets/etc/cont-init.d/01-fix-uidgid.sh new file mode 100644 index 0000000..d8f58a4 --- /dev/null +++ b/assets/etc/cont-init.d/01-fix-uidgid.sh @@ -0,0 +1,11 @@ +#!/usr/bin/with-contenv sh + +if [ -n "${PGID}" ] && [ "${PGID}" != "$(id -g librenms)" ]; then + echo "Switching to PGID ${PGID}..." + sed -i -e "s/^librenms:\([^:]*\):[0-9]*/librenms:\1:${PGID}/" /etc/group + sed -i -e "s/^librenms:\([^:]*\):\([0-9]*\):[0-9]*/librenms:\1:\2:${PGID}/" /etc/passwd +fi +if [ -n "${PUID}" ] && [ "${PUID}" != "$(id -u librenms)" ]; then + echo "Switching to PUID ${PUID}..." + sed -i -e "s/^librenms:\([^:]*\):[0-9]*:\([0-9]*\)/librenms:\1:${PUID}:\2/" /etc/passwd +fi diff --git a/assets/etc/cont-init.d/02-fix-perms.sh b/assets/etc/cont-init.d/02-fix-perms.sh new file mode 100644 index 0000000..8ba87c0 --- /dev/null +++ b/assets/etc/cont-init.d/02-fix-perms.sh @@ -0,0 +1,14 @@ +#!/usr/bin/with-contenv sh + +echo "Fixing perms..." +chown librenms. \ + /data \ + "${LIBRENMS_PATH}" +chown -R librenms. \ + /tpls \ + /var/lib/nginx \ + /var/log/nginx \ + /var/log/php7 \ + /var/run/nginx \ + /var/run/php-fpm \ + /var/tmp/nginx diff --git a/entrypoint.sh b/assets/etc/cont-init.d/03-config.sh similarity index 53% rename from entrypoint.sh rename to assets/etc/cont-init.d/03-config.sh index 7303e75..5468ae3 100644 --- a/entrypoint.sh +++ b/assets/etc/cont-init.d/03-config.sh @@ -1,47 +1,4 @@ -#!/bin/bash - -function runas_librenms() { - su - librenms -s /bin/sh -c "$1" -} - -TZ=${TZ:-UTC} -PUID=${PUID:-1000} -PGID=${PGID:-1000} - -MEMORY_LIMIT=${MEMORY_LIMIT:-256M} -UPLOAD_MAX_SIZE=${UPLOAD_MAX_SIZE:-16M} -OPCACHE_MEM_SIZE=${OPCACHE_MEM_SIZE:-128} -REAL_IP_FROM=${REAL_IP_FROM:-"0.0.0.0/32"} -REAL_IP_HEADER=${REAL_IP_HEADER:-"X-Forwarded-For"} -LOG_IP_VAR=${LOG_IP_VAR:-remote_addr} - -LIBRENMS_POLLER_THREADS=${LIBRENMS_POLLER_THREADS:-16} -LIBRENMS_POLLER_INTERVAL=${LIBRENMS_POLLER_INTERVAL:-5} - -LIBRENMS_DISTRIBUTED_POLLER_ENABLE=${LIBRENMS_DISTRIBUTED_POLLER_ENABLE:-false} -LIBRENMS_DISTRIBUTED_POLLER_NAME=${LIBRENMS_DISTRIBUTED_POLLER_NAME:-$(hostname -f)} -LIBRENMS_DISTRIBUTED_POLLER_GROUP=${LIBRENMS_DISTRIBUTED_POLLER_GROUP:-'0'} -LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_HOST=${LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_HOST:-${MEMCACHED_HOST}} -LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_PORT=${LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_PORT:-${MEMCACHED_PORT}} - -SIDECAR_CRON=${SIDECAR_CRON:-0} -LIBRENMS_CRON_DISCOVERY_ENABLE=${LIBRENMS_CRON_DISCOVERY_ENABLE:-true} -LIBRENMS_CRON_DAILY_ENABLE=${LIBRENMS_CRON_DAILY_ENABLE:-true} -LIBRENMS_CRON_ALERTS_ENABLE=${LIBRENMS_CRON_ALERTS_ENABLE:-true} -LIBRENMS_CRON_BILLING_ENABLE=${LIBRENMS_CRON_BILLING_ENABLE:-true} -LIBRENMS_CRON_BILLING_CALCULATE_ENABLE=${LIBRENMS_CRON_BILLING_CALCULATE_ENABLE:-true} -LIBRENMS_CRON_CHECK_SERVICES_ENABLE=${LIBRENMS_CRON_CHECK_SERVICES_ENABLE:-true} -LIBRENMS_CRON_POLLER_ENABLE=${LIBRENMS_CRON_POLLER_ENABLE:-true} - -SIDECAR_SYSLOGNG=${SIDECAR_SYSLOGNG:-0} - -DB_PORT=${DB_PORT:-3306} -DB_NAME=${DB_NAME:-librenms} -DB_USER=${DB_USER:-librenms} -DB_TIMEOUT=${DB_TIMEOUT:-30} - -MEMCACHED_PORT=${MEMCACHED_PORT:-11211} -RRDCACHED_PORT=${RRDCACHED_PORT:-42217} +#!/usr/bin/with-contenv bash # From https://github.com/docker-library/mariadb/blob/master/docker-entrypoint.sh#L21-L41 # usage: file_env VAR [DEFAULT] @@ -66,21 +23,29 @@ file_env() { unset "$fileVar" } -# Timezone -echo "Setting timezone to ${TZ}..." -ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime -echo ${TZ} > /etc/timezone -sed -i -e "s|date\.timezone.*|date\.timezone = ${TZ}|" /etc/php7/php.ini \ +MEMORY_LIMIT=${MEMORY_LIMIT:-256M} +UPLOAD_MAX_SIZE=${UPLOAD_MAX_SIZE:-16M} +OPCACHE_MEM_SIZE=${OPCACHE_MEM_SIZE:-128} +REAL_IP_FROM=${REAL_IP_FROM:-"0.0.0.0/32"} +REAL_IP_HEADER=${REAL_IP_HEADER:-"X-Forwarded-For"} +LOG_IP_VAR=${LOG_IP_VAR:-remote_addr} -# Change librenms UID / GID -echo "Checking if librenms UID / GID has changed..." -if [ -n "${PGID}" ] && [ "${PGID}" != "`id -g librenms`" ]; then - sed -i -e "s/^librenms:\([^:]*\):[0-9]*/librenms:\1:${PGID}/" /etc/group - sed -i -e "s/^librenms:\([^:]*\):\([0-9]*\):[0-9]*/librenms:\1:\2:${PGID}/" /etc/passwd -fi -if [ -n "${PUID}" ] && [ "${PUID}" != "`id -u librenms`" ]; then - sed -i -e "s/^librenms:\([^:]*\):[0-9]*:\([0-9]*\)/librenms:\1:${PUID}:\2/" /etc/passwd -fi +LIBRENMS_DISTRIBUTED_POLLER_ENABLE=${LIBRENMS_DISTRIBUTED_POLLER_ENABLE:-false} +LIBRENMS_DISTRIBUTED_POLLER_NAME=${LIBRENMS_DISTRIBUTED_POLLER_NAME:-$(hostname -f)} +LIBRENMS_DISTRIBUTED_POLLER_GROUP=${LIBRENMS_DISTRIBUTED_POLLER_GROUP:-'0'} +LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_HOST=${LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_HOST:-${MEMCACHED_HOST}} +LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_PORT=${LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_PORT:-${MEMCACHED_PORT}} + +DB_PORT=${DB_PORT:-3306} +DB_NAME=${DB_NAME:-librenms} +DB_USER=${DB_USER:-librenms} +DB_TIMEOUT=${DB_TIMEOUT:-30} + +MEMCACHED_PORT=${MEMCACHED_PORT:-11211} +RRDCACHED_PORT=${RRDCACHED_PORT:-42217} + +SIDECAR_CRON=${SIDECAR_CRON:-0} +SIDECAR_SYSLOGNG=${SIDECAR_SYSLOGNG:-0} # PHP echo "Setting PHP-FPM configuration..." @@ -110,10 +75,8 @@ sed -i -e "s/RANDOMSTRINGGOESHERE/${LIBRENMS_SNMP_COMMUNITY}/" /etc/snmp/snmpd.c # Init files and folders echo "Initializing LibreNMS files / folders..." -mkdir -p ${DATA_PATH}/config \ - ${DATA_PATH}/logs \ - ${DATA_PATH}/monitoring-plugins \ - ${DATA_PATH}/rrd +mkdir -p /data/config /data/logs /data/monitoring-plugins /data/rrd +rm -rf ${LIBRENMS_PATH}/logs rm -f ${LIBRENMS_PATH}/config.d/* echo "Setting LibreNMS configuration..." @@ -122,9 +85,10 @@ echo "Setting LibreNMS configuration..." cat > ${LIBRENMS_PATH}/config.d/directories.php < ${LIBRENMS_PATH}/config.d/database.php < ${LIBRENMS_PATH}/config.d/user.php < >" - echo ">> Sidecar cron container detected" - echo ">>" - - # Init - rm /etc/supervisord/nginx.conf /etc/supervisord/php.conf /etc/supervisord/snmpd.conf /etc/supervisord/syslog-ng.conf - if [ -z "$CRONTAB_PATH" ]; then - >&2 echo "ERROR: CRONTAB_PATH must be defined" - exit 1 - fi - - rm -rf ${CRONTAB_PATH} - mkdir -m 0644 -p ${CRONTAB_PATH} - touch ${CRONTAB_PATH}/librenms - - # Add crontab - cat ${LIBRENMS_PATH}/librenms.nonroot.cron > ${CRONTAB_PATH}/librenms - sed -i -e "s/ librenms //" ${CRONTAB_PATH}/librenms - - if [ $LIBRENMS_CRON_DISCOVERY_ENABLE != true ]; then - sed -i "/discovery.php/d" ${CRONTAB_PATH}/librenms - fi - - if [ $LIBRENMS_CRON_DAILY_ENABLE != true ]; then - sed -i "/daily.sh/d" ${CRONTAB_PATH}/librenms - fi - - if [ $LIBRENMS_CRON_ALERTS_ENABLE != true ]; then - sed -i "/alerts.php/d" ${CRONTAB_PATH}/librenms - fi - - if [ $LIBRENMS_CRON_BILLING_ENABLE != true ]; then - sed -i "/poll-billing.php/d" ${CRONTAB_PATH}/librenms - fi - - if [ $LIBRENMS_CRON_BILLING_CALCULATE_ENABLE != true ]; then - sed -i "/billing-calculate.php/d" ${CRONTAB_PATH}/librenms - fi - - if [ $LIBRENMS_CRON_CHECK_SERVICES_ENABLE != true ]; then - sed -i "/check-services.php/d" ${CRONTAB_PATH}/librenms - fi - - sed -i "/poller-wrapper.py/d" ${CRONTAB_PATH}/librenms - if [ $LIBRENMS_CRON_POLLER_ENABLE = true ]; then - cat >> ${CRONTAB_PATH}/librenms < >" - echo ">> Sidecar syslog-ng container detected" - echo ">>" - - # Init - rm /etc/supervisord/cron.conf /etc/supervisord/nginx.conf /etc/supervisord/php.conf /etc/supervisord/snmpd.conf - mkdir -p ${DATA_PATH}/syslog-ng /run/syslog-ng - chown librenms. ${DATA_PATH}/syslog-ng - chown -R librenms. /run/syslog-ng -else - # Init - rm /etc/supervisord/cron.conf /etc/supervisord/syslog-ng.conf - - echo "Waiting ${DB_TIMEOUT}s for database to be ready..." - counter=1 - while ! ${dbcmd} -e "show databases;" > /dev/null 2>&1; do - sleep 1 - counter=$((counter + 1)) - if [ ${counter} -gt ${DB_TIMEOUT} ]; then - >&2 echo "ERROR: Failed to connect to database on $DB_HOST" - exit 1 - fi; - done - echo "Database ready!" - - counttables=$(echo 'SHOW TABLES' | ${dbcmd} "$DB_NAME" | wc -l) - - echo "Updating database schema..." - runas_librenms "php build-base.php" - - if [ "${counttables}" -eq "0" ]; then - echo "Creating admin user..." - runas_librenms "php adduser.php librenms librenms 10 librenms@librenms.docker" - fi -fi - -exec "$@" diff --git a/assets/etc/cont-init.d/04-svc-main.sh b/assets/etc/cont-init.d/04-svc-main.sh new file mode 100644 index 0000000..16d70b5 --- /dev/null +++ b/assets/etc/cont-init.d/04-svc-main.sh @@ -0,0 +1,92 @@ +#!/usr/bin/with-contenv bash + +# From https://github.com/docker-library/mariadb/blob/master/docker-entrypoint.sh#L21-L41 +# usage: file_env VAR [DEFAULT] +# ie: file_env 'XYZ_DB_PASSWORD' 'example' +# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of +# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature) +file_env() { + local var="$1" + local fileVar="${var}_FILE" + local def="${2:-}" + if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then + echo >&2 "error: both $var and $fileVar are set (but are exclusive)" + exit 1 + fi + local val="$def" + if [ "${!var:-}" ]; then + val="${!var}" + elif [ "${!fileVar:-}" ]; then + val="$(< "${!fileVar}")" + fi + export "$var"="$val" + unset "$fileVar" +} + +DB_PORT=${DB_PORT:-3306} +DB_NAME=${DB_NAME:-librenms} +DB_USER=${DB_USER:-librenms} +DB_TIMEOUT=${DB_TIMEOUT:-60} + +SIDECAR_CRON=${SIDECAR_CRON:-0} +SIDECAR_SYSLOGNG=${SIDECAR_SYSLOGNG:-0} + +if [ "$SIDECAR_CRON" = "1" ] || [ "$SIDECAR_SYSLOGNG" = "1" ]; then + exit 0 +fi + +file_env 'DB_PASSWORD' +if [ -z "$DB_PASSWORD" ]; then + >&2 echo "ERROR: Either DB_PASSWORD or DB_PASSWORD_FILE must be defined" + exit 1 +fi + +dbcmd="mysql -h ${DB_HOST} -P ${DB_PORT} -u "${DB_USER}" "-p${DB_PASSWORD}"" +unset DB_PASSWORD + +echo "Waiting ${DB_TIMEOUT}s for database to be ready..." +counter=1 +while ! ${dbcmd} -e "show databases;" > /dev/null 2>&1; do + sleep 1 + counter=$((counter + 1)) + if [ ${counter} -gt ${DB_TIMEOUT} ]; then + >&2 echo "ERROR: Failed to connect to database on $DB_HOST" + exit 1 + fi; +done +echo "Database ready!" +counttables=$(echo 'SHOW TABLES' | ${dbcmd} "$DB_NAME" | wc -l) + +echo "Updating database schema..." +su-exec librenms:librenms php build-base.php + +if [ "${counttables}" -eq "0" ]; then + echo "Creating admin user..." + su-exec librenms:librenms php adduser.php librenms librenms 10 librenms@librenms.docker +fi + +mkdir -p /etc/services.d/nginx +cat > /etc/services.d/nginx/run < /etc/services.d/php-fpm/run < /etc/services.d/snmpd/run < >" +echo ">> Sidecar cron container detected" +echo ">>" + +rm -rf ${CRONTAB_PATH} +mkdir -m 0644 -p ${CRONTAB_PATH} +touch ${CRONTAB_PATH}/librenms + +# Add crontab +cat "${LIBRENMS_PATH}/librenms.nonroot.cron" > ${CRONTAB_PATH}/librenms +sed -i -e "s/ librenms //" ${CRONTAB_PATH}/librenms + +if [ "$LIBRENMS_CRON_DISCOVERY_ENABLE" != "true" ]; then + echo "Disable discovery cron" + sed -i "/discovery.php/d" ${CRONTAB_PATH}/librenms +else + echo "Enable discovery cron" +fi + +if [ "$LIBRENMS_CRON_DAILY_ENABLE" != "true" ]; then + echo "Disable daily script cron" + sed -i "/daily.sh/d" ${CRONTAB_PATH}/librenms +else + echo "Enable daily script cron" +fi + +if [ "$LIBRENMS_CRON_ALERTS_ENABLE" != "true" ]; then + echo "Disable alerts generation cron" + sed -i "/alerts.php/d" ${CRONTAB_PATH}/librenms +else + echo "Enable alerts generation cron" +fi + +if [ "$LIBRENMS_CRON_BILLING_ENABLE" != "true" ]; then + echo "Disable billing polling cron" + sed -i "/poll-billing.php/d" ${CRONTAB_PATH}/librenms +else + echo "Enable billing polling cron" +fi + +if [ "$LIBRENMS_CRON_BILLING_CALCULATE_ENABLE" != "true" ]; then + echo "Disable billing cron" + sed -i "/billing-calculate.php/d" ${CRONTAB_PATH}/librenms +else + echo "Enable billing cron" +fi + +if [ "$LIBRENMS_CRON_CHECK_SERVICES_ENABLE" != "true" ]; then + echo "Disable service checks cron" + sed -i "/check-services.php/d" ${CRONTAB_PATH}/librenms +else + echo "Enable service checks cron" +fi + +sed -i "/poller-wrapper.py/d" ${CRONTAB_PATH}/librenms +if [ "$LIBRENMS_CRON_POLLER_ENABLE" = "true" ]; then + echo "Enable polling cron" + cat >> ${CRONTAB_PATH}/librenms < /etc/services.d/cron/run < >" +echo ">> Sidecar syslog-ng container detected" +echo ">>" + +mkdir -p /data/syslog-ng /run/syslog-ng +chown librenms. /data/syslog-ng +chown -R librenms. /run/syslog-ng + +# Create service +mkdir -p /etc/services.d/syslogng +cat > /etc/services.d/syslogng/run < :warning: Only used if you enabled and run a [sidecar cron container](../notes/crons.md) -* `SIDECAR_CRON` : Set to `1` to enable sidecar cron mode for this container (default `0`) -* `LIBRENMS_CRON_DISCOVERY_ENABLE` : Enable LibreNMS discovery for this container cronjobs (default `true`) -* `LIBRENMS_CRON_DAILY_ENABLE` : Enable LibreNMS daily script for this container cronjobs (default `true`) -* `LIBRENMS_CRON_ALERTS_ENABLE` : Enable LibreNMS alerts generation for this container cronjobs (default `true`) -* `LIBRENMS_CRON_BILLING_ENABLE` : Enable LibreNMS billing polling for this container cronjobs (default `true`) -* `LIBRENMS_CRON_BILLING_CALCULATE_ENABLE` : Enable LibreNMS billing for this container cronjobs (default `true`) -* `LIBRENMS_CRON_CHECK_SERVICES_ENABLE` : Enable LibreNMS service checks for this container cronjobs (default `true`) -* `LIBRENMS_CRON_POLLER_ENABLE` : Enable LibreNMS polling for this container cronjobs (default `true`) +* `SIDECAR_CRON`: Set to `1` to enable sidecar cron mode for this container (default `0`) +* `LIBRENMS_CRON_DISCOVERY_ENABLE`: Enable LibreNMS discovery for this container cronjobs (default `true`) +* `LIBRENMS_CRON_DAILY_ENABLE`: Enable LibreNMS daily script for this container cronjobs (default `true`) +* `LIBRENMS_CRON_ALERTS_ENABLE`: Enable LibreNMS alerts generation for this container cronjobs (default `true`) +* `LIBRENMS_CRON_BILLING_ENABLE`: Enable LibreNMS billing polling for this container cronjobs (default `true`) +* `LIBRENMS_CRON_BILLING_CALCULATE_ENABLE`: Enable LibreNMS billing for this container cronjobs (default `true`) +* `LIBRENMS_CRON_CHECK_SERVICES_ENABLE`: Enable LibreNMS service checks for this container cronjobs (default `true`) +* `LIBRENMS_CRON_POLLER_ENABLE`: Enable LibreNMS polling for this container cronjobs (default `true`) ### Syslog-ng > :warning: Only used if you enabled and run a [sidecar syslog-ng container](../notes/syslog-ng.md) -* `SIDECAR_SYSLOGNG` : Set to `1` to enable sidecar syslog-ng mode for this container (default `0`) +* `SIDECAR_SYSLOGNG`: Set to `1` to enable sidecar syslog-ng mode for this container (default `0`) ### Database -* `DB_HOST` : MySQL database hostname / IP address -* `DB_PORT` : MySQL database port (default `3306`) -* `DB_NAME` : MySQL database name (default `librenms`) -* `DB_USER` : MySQL user (default `librenms`) -* `DB_PASSWORD` : MySQL password (default `librenms`) -* `DB_TIMEOUT` : Time in seconds after which we stop trying to reach the MySQL server (useful for clusters, default `30`) +* `DB_HOST`: MySQL database hostname / IP address +* `DB_PORT`: MySQL database port (default `3306`) +* `DB_NAME`: MySQL database name (default `librenms`) +* `DB_USER`: MySQL user (default `librenms`) +* `DB_PASSWORD`: MySQL password (default `librenms`) +* `DB_TIMEOUT`: Time in seconds after which we stop trying to reach the MySQL server (useful for clusters, default `60`) ### Misc -* `LIBRENMS_SNMP_COMMUNITY` : This container's SNMP v2c community string (default `librenmsdocker`) -* `MEMCACHED_HOST` : Hostname / IP address of a Memcached server -* `MEMCACHED_PORT` : Port of the Memcached server (default `11211`) -* `RRDCACHED_HOST` : Hostname / IP address of a RRDcached server -* `RRDCACHED_PORT` : Port of the RRDcached server (default `42217`) +* `LIBRENMS_SNMP_COMMUNITY`: This container's SNMP v2c community string (default `librenmsdocker`) +* `MEMCACHED_HOST`: Hostname / IP address of a Memcached server +* `MEMCACHED_PORT`: Port of the Memcached server (default `11211`) +* `RRDCACHED_HOST`: Hostname / IP address of a RRDcached server +* `RRDCACHED_PORT`: Port of the RRDcached server (default `42217`) diff --git a/doc/docker/ports.md b/doc/docker/ports.md index a7412bb..4ee5562 100644 --- a/doc/docker/ports.md +++ b/doc/docker/ports.md @@ -1,4 +1,4 @@ ### Ports -* `80` : HTTP port -* `514 514/udp` : Syslog ports (only used if you enabled and run a [sidecar syslog-ng container](../notes/syslog-ng.md)) +* `8000`: HTTP port +* `514 514/udp`: Syslog ports (only used if you enabled and run a [sidecar syslog-ng container](../notes/syslog-ng.md)) diff --git a/doc/docker/volumes.md b/doc/docker/volumes.md index 87115c4..73a38aa 100644 --- a/doc/docker/volumes.md +++ b/doc/docker/volumes.md @@ -1,5 +1,5 @@ ## Volumes -* `/data` : Contains configuration, rrd database, logs, additional Monitoring plugins, additional syslog-ng config files +* `/data`: Contains configuration, rrd database, logs, additional Monitoring plugins, additional syslog-ng config files -> :warning: Note that the volume should be owned by the user/group with the specified `PUID` and `PGID`. If you don’t give the volume correct permissions, the container may not start. +> :warning: Note that the volume should be owned by the user/group with the specified `PUID` and `PGID`. If you don't give the volume correct permissions, the container may not start. diff --git a/doc/usage.md b/doc/usage.md index 702ff94..3974978 100644 --- a/doc/usage.md +++ b/doc/usage.md @@ -14,7 +14,7 @@ docker-compose logs -f You can also use the following minimal command : ```bash -docker run -d -p 80:80 --name librenms \ +docker run -d -p 8000:8000 --name librenms \ -v $(pwd)/data:/data \ -e "DB_HOST=db" \ librenms/librenms:latest diff --git a/examples/compose/docker-compose.yml b/examples/compose/docker-compose.yml index 6601c84..2d568c8 100644 --- a/examples/compose/docker-compose.yml +++ b/examples/compose/docker-compose.yml @@ -61,8 +61,8 @@ services: domainname: example.com hostname: librenms ports: - - target: 80 - published: 80 + - target: 8000 + published: 8000 protocol: tcp depends_on: - db @@ -79,7 +79,7 @@ services: - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - - "DB_TIMEOUT=30" + - "DB_TIMEOUT=60" env_file: - "./librenms.env" restart: always @@ -101,7 +101,7 @@ services: - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - - "DB_TIMEOUT=30" + - "DB_TIMEOUT=60" - "SIDECAR_CRON=1" env_file: - "./librenms.env" @@ -131,7 +131,7 @@ services: - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - - "DB_TIMEOUT=30" + - "DB_TIMEOUT=60" - "SIDECAR_SYSLOGNG=1" env_file: - "./librenms.env" diff --git a/examples/traefik/docker-compose.yml b/examples/traefik/docker-compose.yml index 2a4099e..4a9010c 100644 --- a/examples/traefik/docker-compose.yml +++ b/examples/traefik/docker-compose.yml @@ -101,7 +101,7 @@ services: labels: - "traefik.enable=true" - "traefik.backend=librenms" - - "traefik.port=80" + - "traefik.port=8000" - "traefik.frontend.rule=Host:librenms.example.com" environment: - "TZ=${TZ}" @@ -111,7 +111,7 @@ services: - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - - "DB_TIMEOUT=30" + - "DB_TIMEOUT=60" env_file: - "./librenms.env" restart: always @@ -133,7 +133,7 @@ services: - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - - "DB_TIMEOUT=30" + - "DB_TIMEOUT=60" - "SIDECAR_CRON=1" env_file: - "./librenms.env" @@ -163,7 +163,7 @@ services: - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - - "DB_TIMEOUT=30" + - "DB_TIMEOUT=60" - "SIDECAR_SYSLOGNG=1" env_file: - "./librenms.env" From 1ba2014e4d875d7d6477b60728ae9702bf6bfa10 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Tue, 19 Nov 2019 14:10:17 +0100 Subject: [PATCH 090/477] Rename to rootfs --- .editorconfig | 2 +- .gitattributes | 2 +- Dockerfile | 2 +- {assets => rootfs}/etc/cont-init.d/00-fix-logs.sh | 0 {assets => rootfs}/etc/cont-init.d/01-fix-uidgid.sh | 0 {assets => rootfs}/etc/cont-init.d/02-fix-perms.sh | 0 {assets => rootfs}/etc/cont-init.d/03-config.sh | 0 {assets => rootfs}/etc/cont-init.d/04-svc-main.sh | 0 {assets => rootfs}/etc/cont-init.d/05-svc-cron.sh | 0 {assets => rootfs}/etc/cont-init.d/06-svc-syslogng.sh | 0 {assets => rootfs}/etc/syslog-ng/syslog-ng.conf | 0 {assets => rootfs}/tpls/etc/nginx/nginx.conf | 0 {assets => rootfs}/tpls/etc/php7/conf.d/opcache.ini | 0 {assets => rootfs}/tpls/etc/php7/php-fpm.d/www.conf | 0 14 files changed, 3 insertions(+), 3 deletions(-) rename {assets => rootfs}/etc/cont-init.d/00-fix-logs.sh (100%) rename {assets => rootfs}/etc/cont-init.d/01-fix-uidgid.sh (100%) rename {assets => rootfs}/etc/cont-init.d/02-fix-perms.sh (100%) rename {assets => rootfs}/etc/cont-init.d/03-config.sh (100%) rename {assets => rootfs}/etc/cont-init.d/04-svc-main.sh (100%) rename {assets => rootfs}/etc/cont-init.d/05-svc-cron.sh (100%) rename {assets => rootfs}/etc/cont-init.d/06-svc-syslogng.sh (100%) rename {assets => rootfs}/etc/syslog-ng/syslog-ng.conf (100%) rename {assets => rootfs}/tpls/etc/nginx/nginx.conf (100%) rename {assets => rootfs}/tpls/etc/php7/conf.d/opcache.ini (100%) rename {assets => rootfs}/tpls/etc/php7/php-fpm.d/www.conf (100%) diff --git a/.editorconfig b/.editorconfig index b7801b2..10ec7fc 100644 --- a/.editorconfig +++ b/.editorconfig @@ -9,7 +9,7 @@ charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true -[assets/**] +[rootfs/**] insert_final_newline = false [*.md] diff --git a/.gitattributes b/.gitattributes index 3399cb4..eb8909a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,2 @@ /*.sh linguist-detectable=false -/assets/** linguist-detectable=false +/rootfs/** linguist-detectable=false diff --git a/Dockerfile b/Dockerfile index 0338d4f..9f6d99a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -109,7 +109,7 @@ RUN mkdir -p /opt \ && chown -R nobody.nogroup ${LIBRENMS_PATH} \ && rm -rf /tmp/* -COPY assets / +COPY rootfs / RUN addgroup -g ${PGID} librenms \ && adduser -D -h ${LIBRENMS_PATH} -u ${PUID} -G librenms -s /bin/sh -D librenms \ diff --git a/assets/etc/cont-init.d/00-fix-logs.sh b/rootfs/etc/cont-init.d/00-fix-logs.sh similarity index 100% rename from assets/etc/cont-init.d/00-fix-logs.sh rename to rootfs/etc/cont-init.d/00-fix-logs.sh diff --git a/assets/etc/cont-init.d/01-fix-uidgid.sh b/rootfs/etc/cont-init.d/01-fix-uidgid.sh similarity index 100% rename from assets/etc/cont-init.d/01-fix-uidgid.sh rename to rootfs/etc/cont-init.d/01-fix-uidgid.sh diff --git a/assets/etc/cont-init.d/02-fix-perms.sh b/rootfs/etc/cont-init.d/02-fix-perms.sh similarity index 100% rename from assets/etc/cont-init.d/02-fix-perms.sh rename to rootfs/etc/cont-init.d/02-fix-perms.sh diff --git a/assets/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh similarity index 100% rename from assets/etc/cont-init.d/03-config.sh rename to rootfs/etc/cont-init.d/03-config.sh diff --git a/assets/etc/cont-init.d/04-svc-main.sh b/rootfs/etc/cont-init.d/04-svc-main.sh similarity index 100% rename from assets/etc/cont-init.d/04-svc-main.sh rename to rootfs/etc/cont-init.d/04-svc-main.sh diff --git a/assets/etc/cont-init.d/05-svc-cron.sh b/rootfs/etc/cont-init.d/05-svc-cron.sh similarity index 100% rename from assets/etc/cont-init.d/05-svc-cron.sh rename to rootfs/etc/cont-init.d/05-svc-cron.sh diff --git a/assets/etc/cont-init.d/06-svc-syslogng.sh b/rootfs/etc/cont-init.d/06-svc-syslogng.sh similarity index 100% rename from assets/etc/cont-init.d/06-svc-syslogng.sh rename to rootfs/etc/cont-init.d/06-svc-syslogng.sh diff --git a/assets/etc/syslog-ng/syslog-ng.conf b/rootfs/etc/syslog-ng/syslog-ng.conf similarity index 100% rename from assets/etc/syslog-ng/syslog-ng.conf rename to rootfs/etc/syslog-ng/syslog-ng.conf diff --git a/assets/tpls/etc/nginx/nginx.conf b/rootfs/tpls/etc/nginx/nginx.conf similarity index 100% rename from assets/tpls/etc/nginx/nginx.conf rename to rootfs/tpls/etc/nginx/nginx.conf diff --git a/assets/tpls/etc/php7/conf.d/opcache.ini b/rootfs/tpls/etc/php7/conf.d/opcache.ini similarity index 100% rename from assets/tpls/etc/php7/conf.d/opcache.ini rename to rootfs/tpls/etc/php7/conf.d/opcache.ini diff --git a/assets/tpls/etc/php7/php-fpm.d/www.conf b/rootfs/tpls/etc/php7/php-fpm.d/www.conf similarity index 100% rename from assets/tpls/etc/php7/php-fpm.d/www.conf rename to rootfs/tpls/etc/php7/php-fpm.d/www.conf From 3156efff732f5ce1f322205990137b2bf7f9277a Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Mon, 25 Nov 2019 11:54:52 +0100 Subject: [PATCH 091/477] LibreNMS 1.58 --- CHANGELOG.md | 6 ++++++ Dockerfile | 8 +++++--- doc/notes/validate.md | 21 +++++++++------------ 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0b4178..b2bd800 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 1.58-RC1 (2019/11/25) + +* LibreNMS 1.58 +* Remove useless `.git` folder +* Add `LIBRENMS_DOCKER` env (librenms/librenms#10879) + ## 1.57-RC2 (2019/11/19) * :warning: Run as non-root user (#6) diff --git a/Dockerfile b/Dockerfile index 9f6d99a..c16ee9b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,6 +42,7 @@ RUN apk --update --no-cache add \ php7-cli \ php7-ctype \ php7-curl \ + php7-dom \ php7-fileinfo \ php7-fpm \ php7-gd \ @@ -87,8 +88,9 @@ RUN apk --update --no-cache add \ && setcap cap_net_raw+ep /usr/bin/nmap \ && setcap cap_net_raw+ep /usr/sbin/fping -ENV LIBRENMS_VERSION="1.57" \ +ENV LIBRENMS_VERSION="1.58" \ LIBRENMS_PATH="/opt/librenms" \ + LIBRENMS_DOCKER="1" \ PUID="1000" \ PGID="1000" \ S6_BEHAVIOUR_IF_STAGE2_FAILS="2" @@ -96,7 +98,7 @@ ENV LIBRENMS_VERSION="1.57" \ RUN mkdir -p /opt \ && curl -sSL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \ && git clone --branch ${LIBRENMS_VERSION} https://github.com/librenms/librenms.git ${LIBRENMS_PATH} \ - && composer install --no-dev --no-interaction --no-ansi --working-dir=${LIBRENMS_PATH} \ + && COMPOSER_CACHE_DIR="/tmp" composer install --no-dev --no-interaction --no-ansi --working-dir=${LIBRENMS_PATH} \ && curl -sSLk -q https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro -o /usr/bin/distro \ && chmod +x /usr/bin/distro \ && mkdir -p ${LIBRENMS_PATH}/config.d \ @@ -107,7 +109,7 @@ RUN mkdir -p /opt \ && echo "foreach (glob(\"${LIBRENMS_PATH}/config.d/*.php\") as \$filename) include \$filename;" >> ${LIBRENMS_PATH}/config.php \ && pip3 install -r ${LIBRENMS_PATH}/requirements.txt \ && chown -R nobody.nogroup ${LIBRENMS_PATH} \ - && rm -rf /tmp/* + && rm -rf ${LIBRENMS_PATH}/.git /tmp/* COPY rootfs / diff --git a/doc/notes/validate.md b/doc/notes/validate.md index 797d017..5248447 100644 --- a/doc/notes/validate.md +++ b/doc/notes/validate.md @@ -7,22 +7,19 @@ $ docker-compose exec --user librenms librenms php validate.php ==================================== Component | Version --------- | ------- -LibreNMS | 1.41 -DB Schema | 253 -PHP | 7.2.7 -MySQL | 10.2.16-MariaDB-10.2.16+maria~jessie -RRDTool | 1.7.0 -SNMP | NET-SNMP 5.7.3 +LibreNMS | 1.58 +DB Schema | 2019_10_03_211702_serialize_config (147) +PHP | 7.3.11 +MySQL | 10.4.8-MariaDB-1:10.4.8+maria~bionic +RRDTool | 1.7.2 +SNMP | NET-SNMP 5.8 ==================================== -[OK] Composer Version: 1.6.5 -[OK] Dependencies up-to-date. +[OK] Installed from package; no Composer required [OK] Database connection successful [OK] Database schema correct [WARN] You have not added any devices yet. [FIX] You can add a device in the webui or with ./addhost.php -[WARN] Your install is over 24 hours out of date, last update: Sat, 30 Jun 2018 21:37:37 +0000 - [FIX] Make sure your daily.sh cron is running and run ./daily.sh by hand to see if there are any errors. -[WARN] Your local git branch is not master, this will prevent automatic updates. - [FIX] You can switch back to master with git checkout master +[WARN] IPv6 is disabled on your server, you will not be able to add IPv6 devices. +[WARN] Non-git install, updates are manual or from package ``` From 705a44d9ad0bec20533f43e053cef83b765d8164 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Wed, 27 Nov 2019 16:36:14 +0100 Subject: [PATCH 092/477] LibreNMS 1.58.1 --- CHANGELOG.md | 4 ++++ Dockerfile | 2 +- doc/notes/validate.md | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2bd800..3fb7a58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.58.1-RC1 (2019/11/27) + +* LibreNMS 1.58.1 + ## 1.58-RC1 (2019/11/25) * LibreNMS 1.58 diff --git a/Dockerfile b/Dockerfile index c16ee9b..e16ad4c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -88,7 +88,7 @@ RUN apk --update --no-cache add \ && setcap cap_net_raw+ep /usr/bin/nmap \ && setcap cap_net_raw+ep /usr/sbin/fping -ENV LIBRENMS_VERSION="1.58" \ +ENV LIBRENMS_VERSION="1.58.1" \ LIBRENMS_PATH="/opt/librenms" \ LIBRENMS_DOCKER="1" \ PUID="1000" \ diff --git a/doc/notes/validate.md b/doc/notes/validate.md index 5248447..659dc55 100644 --- a/doc/notes/validate.md +++ b/doc/notes/validate.md @@ -15,11 +15,11 @@ RRDTool | 1.7.2 SNMP | NET-SNMP 5.8 ==================================== -[OK] Installed from package; no Composer required +[OK] Installed from the official Docker image; no Composer required [OK] Database connection successful [OK] Database schema correct [WARN] You have not added any devices yet. [FIX] You can add a device in the webui or with ./addhost.php [WARN] IPv6 is disabled on your server, you will not be able to add IPv6 devices. -[WARN] Non-git install, updates are manual or from package +[WARN] Updates are managed through the official Docker image ``` From 81106a65f4af9412f9451e9c65b5920a6f80b4b6 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 29 Nov 2019 15:45:05 +0100 Subject: [PATCH 093/477] Fix php date timezone (#49) --- rootfs/etc/cont-init.d/03-config.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rootfs/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh index 5468ae3..bb3f4cf 100644 --- a/rootfs/etc/cont-init.d/03-config.sh +++ b/rootfs/etc/cont-init.d/03-config.sh @@ -52,8 +52,10 @@ echo "Setting PHP-FPM configuration..." sed -e "s/@MEMORY_LIMIT@/$MEMORY_LIMIT/g" \ -e "s/@UPLOAD_MAX_SIZE@/$UPLOAD_MAX_SIZE/g" \ /tpls/etc/php7/php-fpm.d/www.conf > /etc/php7/php-fpm.d/www.conf + echo "Setting PHP INI configuration..." -sed -i -e "s|memory_limit.*|memory_limit = ${MEMORY_LIMIT}|" /etc/php7/php.ini +sed -i "s|memory_limit.*|memory_limit = ${MEMORY_LIMIT}|g" /etc/php7/php.ini +sed -i "s|date\.timezone.*|date\.timezone = ${TZ}|g" /etc/php7/php.ini # OpCache echo "Setting OpCache configuration..." From aeb070d3fc0e6ee1b5ac45288c83feb463514249 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 29 Nov 2019 15:46:28 +0100 Subject: [PATCH 094/477] MEMCACHED_PORT default port not working (#48) --- rootfs/etc/cont-init.d/03-config.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rootfs/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh index bb3f4cf..1b4f4c8 100644 --- a/rootfs/etc/cont-init.d/03-config.sh +++ b/rootfs/etc/cont-init.d/03-config.sh @@ -30,6 +30,9 @@ REAL_IP_FROM=${REAL_IP_FROM:-"0.0.0.0/32"} REAL_IP_HEADER=${REAL_IP_HEADER:-"X-Forwarded-For"} LOG_IP_VAR=${LOG_IP_VAR:-remote_addr} +MEMCACHED_PORT=${MEMCACHED_PORT:-11211} +RRDCACHED_PORT=${RRDCACHED_PORT:-42217} + LIBRENMS_DISTRIBUTED_POLLER_ENABLE=${LIBRENMS_DISTRIBUTED_POLLER_ENABLE:-false} LIBRENMS_DISTRIBUTED_POLLER_NAME=${LIBRENMS_DISTRIBUTED_POLLER_NAME:-$(hostname -f)} LIBRENMS_DISTRIBUTED_POLLER_GROUP=${LIBRENMS_DISTRIBUTED_POLLER_GROUP:-'0'} @@ -41,9 +44,6 @@ DB_NAME=${DB_NAME:-librenms} DB_USER=${DB_USER:-librenms} DB_TIMEOUT=${DB_TIMEOUT:-30} -MEMCACHED_PORT=${MEMCACHED_PORT:-11211} -RRDCACHED_PORT=${RRDCACHED_PORT:-42217} - SIDECAR_CRON=${SIDECAR_CRON:-0} SIDECAR_SYSLOGNG=${SIDECAR_SYSLOGNG:-0} From 4797423cae5f418bc8147ae4d2fe4690c8d500cc Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 29 Nov 2019 15:47:17 +0100 Subject: [PATCH 095/477] Update CHANGELOG --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fb7a58..105e4df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 1.58.1-RC2 (2019/11/29) + +* Fix php date timezone (#49) +* `MEMCACHED_PORT` default port not working (#48) + ## 1.58.1-RC1 (2019/11/27) * LibreNMS 1.58.1 From ee909221a8ab45866f53e3d011a6d74ccd1eebf0 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 6 Dec 2019 10:09:27 +0100 Subject: [PATCH 096/477] Bring back timezone management through symlink (#49) --- CHANGELOG.md | 4 ++++ Dockerfile | 8 ++++---- rootfs/etc/cont-init.d/03-config.sh | 7 +++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 105e4df..323f73c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.58.1-RC3 (2019/11/29) + +* Bring back timezone management through symlink (#49) + ## 1.58.1-RC2 (2019/11/29) * Fix php date timezone (#49) diff --git a/Dockerfile b/Dockerfile index e16ad4c..618963e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -83,17 +83,17 @@ RUN apk --update --no-cache add \ && pip3 install python-memcached \ && wget -q "https://github.com/just-containers/s6-overlay/releases/latest/download/s6-overlay-amd64.tar.gz" -qO "/tmp/s6-overlay-amd64.tar.gz" \ && tar xzf /tmp/s6-overlay-amd64.tar.gz -C / \ - && sed -i -e "s/;date\.timezone.*/date\.timezone = UTC/" /etc/php7/php.ini \ && rm -rf /var/cache/apk/* /var/www/* /tmp/* \ && setcap cap_net_raw+ep /usr/bin/nmap \ && setcap cap_net_raw+ep /usr/sbin/fping -ENV LIBRENMS_VERSION="1.58.1" \ +ENV S6_BEHAVIOUR_IF_STAGE2_FAILS="2" \ + LIBRENMS_VERSION="1.58.1" \ LIBRENMS_PATH="/opt/librenms" \ LIBRENMS_DOCKER="1" \ + TZ="UTC" \ PUID="1000" \ - PGID="1000" \ - S6_BEHAVIOUR_IF_STAGE2_FAILS="2" + PGID="1000" RUN mkdir -p /opt \ && curl -sSL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer \ diff --git a/rootfs/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh index 1b4f4c8..4d45543 100644 --- a/rootfs/etc/cont-init.d/03-config.sh +++ b/rootfs/etc/cont-init.d/03-config.sh @@ -23,6 +23,8 @@ file_env() { unset "$fileVar" } +TZ=${TZ:-UTC} + MEMORY_LIMIT=${MEMORY_LIMIT:-256M} UPLOAD_MAX_SIZE=${UPLOAD_MAX_SIZE:-16M} OPCACHE_MEM_SIZE=${OPCACHE_MEM_SIZE:-128} @@ -47,6 +49,11 @@ DB_TIMEOUT=${DB_TIMEOUT:-30} SIDECAR_CRON=${SIDECAR_CRON:-0} SIDECAR_SYSLOGNG=${SIDECAR_SYSLOGNG:-0} +# Timezone +echo "Setting timezone to ${TZ}..." +ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime +echo ${TZ} > /etc/timezone + # PHP echo "Setting PHP-FPM configuration..." sed -e "s/@MEMORY_LIMIT@/$MEMORY_LIMIT/g" \ From 0f38a58bfe20ef4d201c132acd5215615371b33a Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 6 Dec 2019 10:10:06 +0100 Subject: [PATCH 097/477] Update CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 323f73c..ca89e35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 1.58.1-RC3 (2019/11/29) +## 1.58.1-RC3 (2019/12/06) * Bring back timezone management through symlink (#49) From 7935d503718ea9948cbb5d5f1e199db6027e99ca Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 6 Dec 2019 10:44:45 +0100 Subject: [PATCH 098/477] Fix timezone php.ini --- .github/workflows/build.yml | 2 +- rootfs/etc/cont-init.d/03-config.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b6ba663..eb3189e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,7 @@ jobs: echo ::set-output name=tag_name::${TAG} echo ::set-output name=version::${TAG%-*} else - echo ::set-output name=version::1.56 + echo ::set-output name=version::snapshot fi echo ::set-output name=build_date::$(date -u +'%Y-%m-%dT%H:%M:%SZ') echo ::set-output name=docker_username::librenmsbot diff --git a/rootfs/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh index 4d45543..b316bb5 100644 --- a/rootfs/etc/cont-init.d/03-config.sh +++ b/rootfs/etc/cont-init.d/03-config.sh @@ -62,7 +62,7 @@ sed -e "s/@MEMORY_LIMIT@/$MEMORY_LIMIT/g" \ echo "Setting PHP INI configuration..." sed -i "s|memory_limit.*|memory_limit = ${MEMORY_LIMIT}|g" /etc/php7/php.ini -sed -i "s|date\.timezone.*|date\.timezone = ${TZ}|g" /etc/php7/php.ini +sed -i "s|;date\.timezone.*|date\.timezone = ${TZ}|g" /etc/php7/php.ini # OpCache echo "Setting OpCache configuration..." From 6ccfedd2a79dbbbf555f1768ade7f525fc21d86d Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 6 Dec 2019 10:45:26 +0100 Subject: [PATCH 099/477] Update CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca89e35..0ac17f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.58.1-RC4 (2019/12/06) + +* Fix timezone php.ini + ## 1.58.1-RC3 (2019/12/06) * Bring back timezone management through symlink (#49) From 2f0af5d859334dd3c214dce7bac2f3e8b4e2397a Mon Sep 17 00:00:00 2001 From: Peter Pletcher Date: Fri, 20 Dec 2019 14:22:35 -0800 Subject: [PATCH 100/477] Add snmp-scan option for cron container (#53) --- doc/docker/environment-variables.md | 5 +++++ examples/compose/librenms.env | 3 +++ rootfs/etc/cont-init.d/05-svc-cron.sh | 16 ++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/doc/docker/environment-variables.md b/doc/docker/environment-variables.md index 0a5575e..7524e47 100644 --- a/doc/docker/environment-variables.md +++ b/doc/docker/environment-variables.md @@ -34,6 +34,11 @@ * `LIBRENMS_CRON_BILLING_CALCULATE_ENABLE`: Enable LibreNMS billing for this container cronjobs (default `true`) * `LIBRENMS_CRON_CHECK_SERVICES_ENABLE`: Enable LibreNMS service checks for this container cronjobs (default `true`) * `LIBRENMS_CRON_POLLER_ENABLE`: Enable LibreNMS polling for this container cronjobs (default `true`) +* `LIBRENMS_CRON_SNMPSCAN_ENABLE`: Enable LibreNMS SNMP network scanning for this container cronjobs (default `false`) +* `LIBRENMS_CRON_SNMPSCAN_INTERVAL`: SNMP network scanning cron interval (daily, in "Minute Hour", default `5 0`) +* `LIBRENMS_CRON_SNMPSCAN_NETS`: Networks to scan for SNMP network scanning, in CIDR notation. Multiple networks can be specified separated by a comma. If this is not set the default is to scan networks defined in `$config['nets']` +* `LIBRENMS_CRON_SNMPSCAN_THREADS`: SNMP network scanning threads to use (default `32`) +* `LIBRENMS_CRON_SNMPSCAN_LOGFILE`: SNMP network scanning cron log file (default `/dev/null`) ### Syslog-ng diff --git a/examples/compose/librenms.env b/examples/compose/librenms.env index d200733..698d952 100644 --- a/examples/compose/librenms.env +++ b/examples/compose/librenms.env @@ -15,6 +15,9 @@ LIBRENMS_CRON_BILLING_ENABLE=true LIBRENMS_CRON_BILLING_CALCULATE_ENABLE=true LIBRENMS_CRON_CHECK_SERVICES_ENABLE=true LIBRENMS_CRON_POLLER_ENABLE=true +LIBRENMS_CRON_SNMPSCAN_ENABLE=true +LIBRENMS_CRON_SNMPSCAN_NETS=192.168.0.0/24,192.168.1.0/24 +LIBRENMS_CRON_SNMPSCAN_LOGFILE=/data/logs/snmp-scan.log LIBRENMS_SNMP_COMMUNITY=librenmsdocker MEMCACHED_HOST=memcached diff --git a/rootfs/etc/cont-init.d/05-svc-cron.sh b/rootfs/etc/cont-init.d/05-svc-cron.sh index a40c537..fbe4c54 100644 --- a/rootfs/etc/cont-init.d/05-svc-cron.sh +++ b/rootfs/etc/cont-init.d/05-svc-cron.sh @@ -13,6 +13,13 @@ LIBRENMS_CRON_BILLING_ENABLE=${LIBRENMS_CRON_BILLING_ENABLE:-true} LIBRENMS_CRON_BILLING_CALCULATE_ENABLE=${LIBRENMS_CRON_BILLING_CALCULATE_ENABLE:-true} LIBRENMS_CRON_CHECK_SERVICES_ENABLE=${LIBRENMS_CRON_CHECK_SERVICES_ENABLE:-true} LIBRENMS_CRON_POLLER_ENABLE=${LIBRENMS_CRON_POLLER_ENABLE:-true} +LIBRENMS_CRON_SNMPSCAN_ENABLE=${LIBRENMS_CRON_SNMPSCAN_ENABLE:-false} +LIBRENMS_CRON_SNMPSCAN_INTERVAL=${LIBRENMS_CRON_SNMPSCAN_INTERVAL:-"5 0"} +LIBRENMS_CRON_SNMPSCAN_NETS=${LIBRENMS_CRON_SNMPSCAN_NETS:-""} +LIBRENMS_CRON_SNMPSCAN_NETS=${LIBRENMS_CRON_SNMPSCAN_NETS:+",$LIBRENMS_CRON_SNMPSCAN_NETS"} +LIBRENMS_CRON_SNMPSCAN_NETS=${LIBRENMS_CRON_SNMPSCAN_NETS//,/ -r } +LIBRENMS_CRON_SNMPSCAN_THREADS=${LIBRENMS_CRON_SNMPSCAN_THREADS:-32} +LIBRENMS_CRON_SNMPSCAN_LOGFILE=${LIBRENMS_CRON_SNMPSCAN_LOGFILE:-/dev/null} # Continue only if sidecar cron container if [ "$SIDECAR_CRON" != "1" ]; then @@ -83,6 +90,15 @@ else echo "Disable polling cron" fi +if [ "$LIBRENMS_CRON_SNMPSCAN_ENABLE" = "true" ]; then + echo "Enable snmp-scan cron" + cat >> ${CRONTAB_PATH}/librenms < > ${LIBRENMS_CRON_SNMPSCAN_LOGFILE} 2>&1 +EOL +else + echo "Disable snmp-scan cron" +fi + # Fix perms echo "Fixing crontabs permissions..." chmod -R 0644 ${CRONTAB_PATH} From 027e9f48aeea2da7b22b87af4438342f8e794168 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 20 Dec 2019 23:25:15 +0100 Subject: [PATCH 101/477] Fix compose config --- examples/compose/librenms.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/compose/librenms.env b/examples/compose/librenms.env index 698d952..6a91910 100644 --- a/examples/compose/librenms.env +++ b/examples/compose/librenms.env @@ -3,7 +3,7 @@ UPLOAD_MAX_SIZE=16M OPCACHE_MEM_SIZE=128 REAL_IP_FROM=0.0.0.0/32 REAL_IP_HEADER=X-Forwarded-For -LOG_IP_VAR=http_x_forwarded_for +LOG_IP_VAR=remote_addr LIBRENMS_POLLER_THREADS=16 LIBRENMS_POLLER_INTERVAL=5 From b3c296eb2134bc4dd97cb16c0a5a8391530e7255 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 20 Dec 2019 23:26:11 +0100 Subject: [PATCH 102/477] Update CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ac17f6..a2136e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.58.1-RC5 (2019/12/20) + +* Add snmp-scan option for cron container (#53) + ## 1.58.1-RC4 (2019/12/06) * Fix timezone php.ini From a0c4a93c53176156cb3233ea4a775d8f7d412122 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Thu, 23 Jan 2020 21:00:50 +0100 Subject: [PATCH 103/477] Move Nginx temp folders to /tmp (#55) --- .github/ISSUE_TEMPLATE/bug_report.md | 1 + CHANGELOG.md | 4 ++++ LICENSE | 2 +- rootfs/etc/cont-init.d/02-fix-perms.sh | 3 +-- rootfs/tpls/etc/nginx/nginx.conf | 7 +++++++ 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 439078b..0435112 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -24,6 +24,7 @@ about: Create a report to help us improve * Docker version (type `docker --version`) : * Docker compose version if applicable (type `docker-compose --version`) : * Platform (Debian 9, Ubuntu 18.04, ...) : +* System info (type `uname -a`) : * Include all necessary configuration files : `docker-compose.yml`, `.env`, ... ### Docker info diff --git a/CHANGELOG.md b/CHANGELOG.md index a2136e6..0964637 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.58.1-RC6 (2020/01/23) + +* Move Nginx temp folders to `/tmp` (#55) + ## 1.58.1-RC5 (2019/12/20) * Add snmp-scan option for cron container (#53) diff --git a/LICENSE b/LICENSE index 8c81eb2..d24d55a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2018-2019 CrazyMax +Copyright (c) 2018-2020 CrazyMax Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/rootfs/etc/cont-init.d/02-fix-perms.sh b/rootfs/etc/cont-init.d/02-fix-perms.sh index 8ba87c0..bf334f1 100644 --- a/rootfs/etc/cont-init.d/02-fix-perms.sh +++ b/rootfs/etc/cont-init.d/02-fix-perms.sh @@ -10,5 +10,4 @@ chown -R librenms. \ /var/log/nginx \ /var/log/php7 \ /var/run/nginx \ - /var/run/php-fpm \ - /var/tmp/nginx + /var/run/php-fpm diff --git a/rootfs/tpls/etc/nginx/nginx.conf b/rootfs/tpls/etc/nginx/nginx.conf index bc4b36c..9513ff4 100644 --- a/rootfs/tpls/etc/nginx/nginx.conf +++ b/rootfs/tpls/etc/nginx/nginx.conf @@ -17,6 +17,13 @@ http { sendfile on; large_client_header_buffers 4 16k; + ## Temp folders + client_body_temp_path /tmp/nginx 1 2; + proxy_temp_path /tmp/nginx-proxy; + fastcgi_temp_path /tmp/nginx-fastcgi; + uwsgi_temp_path /tmp/nginx-uwsgi; + scgi_temp_path /tmp/nginx-scgi; + ## Timeouts client_body_timeout 60; client_header_timeout 60; From ad92ae4baef757e438c19d3cca1a7ff3c5453a78 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Tue, 4 Feb 2020 23:29:45 +0100 Subject: [PATCH 104/477] LibreNMS 1.60 --- CHANGELOG.md | 4 ++++ Dockerfile | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0964637..d0d4df7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.60-RC1 (2020/02/04) + +* LibreNMS 1.60 + ## 1.58.1-RC6 (2020/01/23) * Move Nginx temp folders to `/tmp` (#55) diff --git a/Dockerfile b/Dockerfile index 618963e..2bfae90 100644 --- a/Dockerfile +++ b/Dockerfile @@ -88,7 +88,7 @@ RUN apk --update --no-cache add \ && setcap cap_net_raw+ep /usr/sbin/fping ENV S6_BEHAVIOUR_IF_STAGE2_FAILS="2" \ - LIBRENMS_VERSION="1.58.1" \ + LIBRENMS_VERSION="1.60" \ LIBRENMS_PATH="/opt/librenms" \ LIBRENMS_DOCKER="1" \ TZ="UTC" \ From 21118128e53a54e1a4cc4c7149ace7af402d3dad Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Tue, 4 Feb 2020 23:32:47 +0100 Subject: [PATCH 105/477] Alpine Linux 3.11 --- CHANGELOG.md | 1 + Dockerfile | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0d4df7..708beb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## 1.60-RC1 (2020/02/04) * LibreNMS 1.60 +* Alpine Linux 3.11 ## 1.58.1-RC6 (2020/01/23) diff --git a/Dockerfile b/Dockerfile index 2bfae90..7484110 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.10 +FROM alpine:3.11 ARG BUILD_DATE ARG VCS_REF From ae7ed078807b8dd7b461fa85013c71eba629bb3b Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Tue, 4 Feb 2020 23:37:01 +0100 Subject: [PATCH 106/477] Revert "Alpine Linux 3.11" This reverts commit 21118128e53a54e1a4cc4c7149ace7af402d3dad. --- CHANGELOG.md | 1 - Dockerfile | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 708beb1..d0d4df7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,6 @@ ## 1.60-RC1 (2020/02/04) * LibreNMS 1.60 -* Alpine Linux 3.11 ## 1.58.1-RC6 (2020/01/23) diff --git a/Dockerfile b/Dockerfile index 7484110..2bfae90 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.11 +FROM alpine:3.10 ARG BUILD_DATE ARG VCS_REF From 260cbeef9eec0deac387fd34339ab81943d825d3 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Mon, 2 Mar 2020 11:54:06 +0100 Subject: [PATCH 107/477] LibreNMS 1.61 --- .github/CODEOWNERS | 1 + CHANGELOG.md | 4 ++++ Dockerfile | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..f7b8e1d --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @crazy-max diff --git a/CHANGELOG.md b/CHANGELOG.md index d0d4df7..b0d7afb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.61-RC1 (2020/03/02) + +* LibreNMS 1.61 + ## 1.60-RC1 (2020/02/04) * LibreNMS 1.60 diff --git a/Dockerfile b/Dockerfile index 2bfae90..ffdfe2b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -88,7 +88,7 @@ RUN apk --update --no-cache add \ && setcap cap_net_raw+ep /usr/sbin/fping ENV S6_BEHAVIOUR_IF_STAGE2_FAILS="2" \ - LIBRENMS_VERSION="1.60" \ + LIBRENMS_VERSION="1.61" \ LIBRENMS_PATH="/opt/librenms" \ LIBRENMS_DOCKER="1" \ TZ="UTC" \ From 54624eb62cb57ce8858857c32e4133ae974afffb Mon Sep 17 00:00:00 2001 From: John Jensen Date: Thu, 5 Mar 2020 11:31:50 -0500 Subject: [PATCH 108/477] add php7-sockets to be installed to fix warnings --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index ffdfe2b..b007292 100644 --- a/Dockerfile +++ b/Dockerfile @@ -61,6 +61,7 @@ RUN apk --update --no-cache add \ php7-session \ php7-simplexml \ php7-snmp \ + php7-sockets \ php7-tokenizer \ php7-xml \ php7-zip \ From 75d5046430a230d571a8730760aa581ddcaa24ae Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Thu, 5 Mar 2020 18:38:31 +0100 Subject: [PATCH 109/477] Update CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0d7afb..9b90250 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.61-RC2 (2020/03/05) + +* Add `php7-sockets` extension (#61) + ## 1.61-RC1 (2020/03/02) * LibreNMS 1.61 From 624b15beb1f7fa65f709a83806d22bb08aa149c8 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 22 Mar 2020 16:48:13 +0100 Subject: [PATCH 110/477] Allow multi discovery workers through LIBRENMS_CRON_DISCOVERY_WRAPPER_WORKERS env var (#59) --- CHANGELOG.md | 4 ++++ doc/docker/environment-variables.md | 1 + rootfs/etc/cont-init.d/05-svc-cron.sh | 3 +++ 3 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b90250..5cb576e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.61-RC3 (2020/03/22) + +* Allow multi discovery workers through `LIBRENMS_CRON_DISCOVERY_WRAPPER_WORKERS` env var (#59) + ## 1.61-RC2 (2020/03/05) * Add `php7-sockets` extension (#61) diff --git a/doc/docker/environment-variables.md b/doc/docker/environment-variables.md index 7524e47..30f0789 100644 --- a/doc/docker/environment-variables.md +++ b/doc/docker/environment-variables.md @@ -28,6 +28,7 @@ * `SIDECAR_CRON`: Set to `1` to enable sidecar cron mode for this container (default `0`) * `LIBRENMS_CRON_DISCOVERY_ENABLE`: Enable LibreNMS discovery for this container cronjobs (default `true`) +* `LIBRENMS_CRON_DISCOVERY_WRAPPER_WORKERS`: Spawn multiple discovery.php processes in parallel (default `1`) * `LIBRENMS_CRON_DAILY_ENABLE`: Enable LibreNMS daily script for this container cronjobs (default `true`) * `LIBRENMS_CRON_ALERTS_ENABLE`: Enable LibreNMS alerts generation for this container cronjobs (default `true`) * `LIBRENMS_CRON_BILLING_ENABLE`: Enable LibreNMS billing polling for this container cronjobs (default `true`) diff --git a/rootfs/etc/cont-init.d/05-svc-cron.sh b/rootfs/etc/cont-init.d/05-svc-cron.sh index fbe4c54..79a0b99 100644 --- a/rootfs/etc/cont-init.d/05-svc-cron.sh +++ b/rootfs/etc/cont-init.d/05-svc-cron.sh @@ -7,6 +7,7 @@ LIBRENMS_POLLER_THREADS=${LIBRENMS_POLLER_THREADS:-16} LIBRENMS_POLLER_INTERVAL=${LIBRENMS_POLLER_INTERVAL:-5} LIBRENMS_CRON_DISCOVERY_ENABLE=${LIBRENMS_CRON_DISCOVERY_ENABLE:-true} +LIBRENMS_CRON_DISCOVERY_WRAPPER_WORKERS=${LIBRENMS_CRON_DISCOVERY_WRAPPER_WORKERS:-1} LIBRENMS_CRON_DAILY_ENABLE=${LIBRENMS_CRON_DAILY_ENABLE:-true} LIBRENMS_CRON_ALERTS_ENABLE=${LIBRENMS_CRON_ALERTS_ENABLE:-true} LIBRENMS_CRON_BILLING_ENABLE=${LIBRENMS_CRON_BILLING_ENABLE:-true} @@ -40,9 +41,11 @@ sed -i -e "s/ librenms //" ${CRONTAB_PATH}/librenms if [ "$LIBRENMS_CRON_DISCOVERY_ENABLE" != "true" ]; then echo "Disable discovery cron" + sed -i "/discovery-wrapper.py/d" ${CRONTAB_PATH}/librenms sed -i "/discovery.php/d" ${CRONTAB_PATH}/librenms else echo "Enable discovery cron" + sed -i -e "s/discovery-wrapper.py 1/discovery-wrapper.py ${LIBRENMS_CRON_DISCOVERY_WRAPPER_WORKERS}/" ${CRONTAB_PATH}/librenms fi if [ "$LIBRENMS_CRON_DAILY_ENABLE" != "true" ]; then From 457a6149776eee28c5ed9739113ff57baf71a570 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 22 Mar 2020 16:57:11 +0100 Subject: [PATCH 111/477] Fix links --- README.md | 2 +- doc/docker/environment-variables.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 24e424d..6d634c7 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ * Run as non-root user * Cron tasks as a ["sidecar" container](doc/notes/crons.md) * Syslog-ng support through a ["sidecar" container](doc/notes/syslog-ng.md) -* Ability to configure [distributed polling](https://docs.librenms.org/#Extensions/Distributed-Poller/#distributed-poller) +* Ability to configure [distributed polling](https://docs.librenms.org/Extensions/Distributed-Poller/) * Ability to add custom Monitoring plugins (Nagios) * OPCache enabled to store precompiled script bytecode in shared memory * [s6-overlay](https://github.com/just-containers/s6-overlay/) as process supervisor diff --git a/doc/docker/environment-variables.md b/doc/docker/environment-variables.md index 30f0789..350a048 100644 --- a/doc/docker/environment-variables.md +++ b/doc/docker/environment-variables.md @@ -15,7 +15,7 @@ ### (Distributed) Poller * `LIBRENMS_POLLER_THREADS`: Threads that `poller-wrapper.py` runs (default `16`) -* `LIBRENMS_POLLER_INTERVAL`: Interval in minutes at which `poller-wrapper.py` runs (defaults to `5`) [docs](https://docs.librenms.org/#Support/1-Minute-Polling/) +* `LIBRENMS_POLLER_INTERVAL`: Interval in minutes at which `poller-wrapper.py` runs (defaults to `5`) [docs](https://docs.librenms.org/Support/1-Minute-Polling/) * `LIBRENMS_DISTRIBUTED_POLLER_ENABLE`: Enable distributed poller functionality * `LIBRENMS_DISTRIBUTED_POLLER_NAME`: Optional name of poller (defaults to hostname) * `LIBRENMS_DISTRIBUTED_POLLER_GROUP`: By default, all hosts are shared and have the poller_group = 0. To pin a device to a poller, set it to a value greater than 0 and set the same value here. One can also specify a comma separated string of poller groups. The poller will then poll devices from any of the groups listed. [docs](https://docs.librenms.org/#Extensions/Distributed-Poller/#distributed-poller) From a31f2a8840843bd4be648bbf96a6881ad2208bf9 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 27 Mar 2020 14:25:03 +0100 Subject: [PATCH 112/477] Fix folder creation (#62) --- CHANGELOG.md | 4 ++++ Dockerfile | 3 +-- rootfs/etc/cont-init.d/02-fix-perms.sh | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5cb576e..2b49fd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.61-RC4 (2020/03/27) + +* Fix folder creation (#62) + ## 1.61-RC3 (2020/03/22) * Allow multi discovery workers through `LIBRENMS_CRON_DISCOVERY_WRAPPER_WORKERS` env var (#59) diff --git a/Dockerfile b/Dockerfile index b007292..0fac21b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -115,8 +115,7 @@ RUN mkdir -p /opt \ COPY rootfs / RUN addgroup -g ${PGID} librenms \ - && adduser -D -h ${LIBRENMS_PATH} -u ${PUID} -G librenms -s /bin/sh -D librenms \ - && mkdir -p /data /var/run/nginx /var/run/php-fpm + && adduser -D -h ${LIBRENMS_PATH} -u ${PUID} -G librenms -s /bin/sh -D librenms EXPOSE 8000 514 514/udp WORKDIR ${LIBRENMS_PATH} diff --git a/rootfs/etc/cont-init.d/02-fix-perms.sh b/rootfs/etc/cont-init.d/02-fix-perms.sh index bf334f1..e763d7d 100644 --- a/rootfs/etc/cont-init.d/02-fix-perms.sh +++ b/rootfs/etc/cont-init.d/02-fix-perms.sh @@ -1,6 +1,9 @@ #!/usr/bin/with-contenv sh echo "Fixing perms..." +mkdir -p /data \ + /var/run/nginx \ + /var/run/php-fpm chown librenms. \ /data \ "${LIBRENMS_PATH}" From 345a8d9233878324d3fa5440f152a45bc07a21b4 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 27 Mar 2020 14:25:44 +0100 Subject: [PATCH 113/477] Update README --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 6d634c7..61f93d9 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@ ![]()
![]()
-
![]()
![]()
From 062de7ff85cb96ceef736ce0ec956eaf87f6ecfe Mon Sep 17 00:00:00 2001 From: Ike Devolder
Date: Sun, 29 Mar 2020 18:51:14 +0200 Subject: [PATCH 114/477] Fix docker-compose examples UID/GID settings (#64) when you change the PUID/PGID in the `.env` file, only the librenms containers UID/GID are changes which causes permission issues with rrdcached. rrdcached will still be running with UID=1000 and GID=1000. As a result of that, no graphs will be rendered. By adding: ``` - "PUID=${PUID}" - "PGID=${PGID}" ``` to the rrdcache service the graphs will rendered properly because rrdcached will also run with the same UID/GID as librenms Signed-off-by: BlackEagle --- examples/compose/docker-compose.yml | 2 ++ examples/traefik/docker-compose.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/examples/compose/docker-compose.yml b/examples/compose/docker-compose.yml index 2d568c8..7bb91f8 100644 --- a/examples/compose/docker-compose.yml +++ b/examples/compose/docker-compose.yml @@ -36,6 +36,8 @@ services: - "./rrd-journal:/data/journal" environment: - "TZ=${TZ}" + - "PUID=${PUID}" + - "PGID=${PGID}" - "LOG_LEVEL=LOG_INFO" - "WRITE_TIMEOUT=1800" - "WRITE_JITTER=1800" diff --git a/examples/traefik/docker-compose.yml b/examples/traefik/docker-compose.yml index 4a9010c..a495737 100644 --- a/examples/traefik/docker-compose.yml +++ b/examples/traefik/docker-compose.yml @@ -67,6 +67,8 @@ services: - "./rrd-journal:/data/journal" environment: - "TZ=${TZ}" + - "PUID=${PUID}" + - "PGID=${PGID}" - "LOG_LEVEL=LOG_INFO" - "WRITE_TIMEOUT=1800" - "WRITE_JITTER=1800" From 8ea06f7624e1c0c300f4d9367f66a4d8f2564d3e Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sat, 4 Apr 2020 18:21:44 +0200 Subject: [PATCH 115/477] LibreNMS 1.62.2 --- CHANGELOG.md | 4 ++++ Dockerfile | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b49fd5..5dea738 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.62.2-RC1 (2020/04/04) + +* LibreNMS 1.62.2 + ## 1.61-RC4 (2020/03/27) * Fix folder creation (#62) diff --git a/Dockerfile b/Dockerfile index 0fac21b..3be72c4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -89,7 +89,7 @@ RUN apk --update --no-cache add \ && setcap cap_net_raw+ep /usr/sbin/fping ENV S6_BEHAVIOUR_IF_STAGE2_FAILS="2" \ - LIBRENMS_VERSION="1.61" \ + LIBRENMS_VERSION="1.62.2" \ LIBRENMS_PATH="/opt/librenms" \ LIBRENMS_DOCKER="1" \ TZ="UTC" \ From d982c7a74c746f0e0af7f3e88c5023e6b240702a Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Mon, 6 Apr 2020 22:11:58 +0200 Subject: [PATCH 116/477] Fix compose (#65) --- examples/compose/docker-compose.yml | 2 -- examples/traefik/docker-compose.yml | 2 -- 2 files changed, 4 deletions(-) diff --git a/examples/compose/docker-compose.yml b/examples/compose/docker-compose.yml index 7bb91f8..5151188 100644 --- a/examples/compose/docker-compose.yml +++ b/examples/compose/docker-compose.yml @@ -48,8 +48,6 @@ services: smtp: image: juanluisbaptiste/postfix container_name: librenms_smtp - volumes: - - "/etc/localtime:/etc/localtime:ro" environment: - "SERVER_HOSTNAME=librenms.example.com" - "SMTP_SERVER=${SMTP_SERVER}" diff --git a/examples/traefik/docker-compose.yml b/examples/traefik/docker-compose.yml index a495737..4156478 100644 --- a/examples/traefik/docker-compose.yml +++ b/examples/traefik/docker-compose.yml @@ -79,8 +79,6 @@ services: smtp: image: juanluisbaptiste/postfix container_name: librenms_smtp - volumes: - - "/etc/localtime:/etc/localtime:ro" environment: - "SERVER_HOSTNAME=librenms.example.com" - "SMTP_SERVER=${SMTP_SERVER}" From 286cd8d31d113b5b4c20ca8d44f187a780b923fa Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Tue, 7 Apr 2020 20:01:29 +0200 Subject: [PATCH 117/477] Switch to Open Container Specification labels as label-schema.org ones are deprecated --- Dockerfile | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3be72c4..b351481 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,15 +5,15 @@ ARG VCS_REF ARG VERSION LABEL maintainer="CrazyMax" \ - org.label-schema.build-date=$BUILD_DATE \ - org.label-schema.name="librenms" \ - org.label-schema.description="LibreNMS" \ - org.label-schema.version=$VERSION \ - org.label-schema.url="https://github.com/librenms/docker" \ - org.label-schema.vcs-ref=$VCS_REF \ - org.label-schema.vcs-url="https://github.com/librenms/docker" \ - org.label-schema.vendor="LibreNMS" \ - org.label-schema.schema-version="1.0" + org.opencontainers.image.created=$BUILD_DATE \ + org.opencontainers.image.url="https://github.com/librenms/docker" \ + org.opencontainers.image.source="https://github.com/librenms/docker" \ + org.opencontainers.image.version=$VERSION \ + org.opencontainers.image.revision=$VCS_REF \ + org.opencontainers.image.vendor="CrazyMax" \ + org.opencontainers.image.title="LibreNMS" \ + org.opencontainers.image.description="LibreNMS" \ + org.opencontainers.image.licenses="MIT" RUN apk --update --no-cache add \ busybox-extras \ From ca84dd49cb56fcbef2f00705d3c9a42d63fef8aa Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Mon, 13 Apr 2020 21:16:02 +0200 Subject: [PATCH 118/477] Fix log file permissions (#66) --- CHANGELOG.md | 4 ++++ rootfs/etc/cont-init.d/03-config.sh | 1 + 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dea738..0362e7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.62.2-RC2 (2020/04/13) + +* Fix log file permissions (#66) + ## 1.62.2-RC1 (2020/04/04) * LibreNMS 1.62.2 diff --git a/rootfs/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh index b316bb5..7dab5e2 100644 --- a/rootfs/etc/cont-init.d/03-config.sh +++ b/rootfs/etc/cont-init.d/03-config.sh @@ -85,6 +85,7 @@ sed -i -e "s/RANDOMSTRINGGOESHERE/${LIBRENMS_SNMP_COMMUNITY}/" /etc/snmp/snmpd.c # Init files and folders echo "Initializing LibreNMS files / folders..." mkdir -p /data/config /data/logs /data/monitoring-plugins /data/rrd +touch /data/logs/librenms.log rm -rf ${LIBRENMS_PATH}/logs rm -f ${LIBRENMS_PATH}/config.d/* From d911499a47d272dc17c2b37f954feda99b865a1c Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Mon, 13 Apr 2020 21:16:40 +0200 Subject: [PATCH 119/477] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0362e7d..584d7f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## 1.62.2-RC2 (2020/04/13) * Fix log file permissions (#66) +* Switch to Open Container Specification labels as label-schema.org ones are deprecated ## 1.62.2-RC1 (2020/04/04) From 72692bce0622477aa0ebbd459781241b279eca53 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 8 May 2020 19:42:37 +0200 Subject: [PATCH 120/477] Update workflows --- .github/workflows/build.yml | 2 +- .github/workflows/labels.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eb3189e..ff7d14e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,7 +14,7 @@ jobs: - # https://github.com/actions/checkout name: Checkout - uses: actions/checkout@v1 + uses: actions/checkout@v2 - name: Prepare id: prepare diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml index dd984b6..9aa092e 100644 --- a/.github/workflows/labels.yml +++ b/.github/workflows/labels.yml @@ -15,11 +15,11 @@ jobs: - # https://github.com/actions/checkout name: Checkout - uses: actions/checkout@v1 + uses: actions/checkout@v2 - # https://github.com/crazy-max/ghaction-github-labeler name: Run Labeler if: success() - uses: crazy-max/ghaction-github-labeler@v1 + uses: crazy-max/ghaction-github-labeler@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 7693b6b44e9e8fa795467f2558fb98570c751f14 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 8 May 2020 21:39:29 +0200 Subject: [PATCH 121/477] Add LISTEN_IPV6 env var (#71) --- doc/docker/environment-variables.md | 1 + rootfs/etc/cont-init.d/03-config.sh | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/doc/docker/environment-variables.md b/doc/docker/environment-variables.md index 350a048..5e1408e 100644 --- a/doc/docker/environment-variables.md +++ b/doc/docker/environment-variables.md @@ -8,6 +8,7 @@ * `MEMORY_LIMIT`: PHP memory limit (default `256M`) * `UPLOAD_MAX_SIZE`: Upload max size (default `16M`) * `OPCACHE_MEM_SIZE`: PHP OpCache memory consumption (default `128`) +* `LISTEN_IPV6`: Enable IPv6 for Nginx (default `true`) * `REAL_IP_FROM`: Trusted addresses that are known to send correct replacement addresses (default `0.0.0.0/32`) * `REAL_IP_HEADER`: Request header field whose value will be used to replace the client address (default `X-Forwarded-For`) * `LOG_IP_VAR`: Use another variable to retrieve the remote IP address for access [log_format](http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format) on Nginx. (default `remote_addr`) diff --git a/rootfs/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh index 7dab5e2..9647c81 100644 --- a/rootfs/etc/cont-init.d/03-config.sh +++ b/rootfs/etc/cont-init.d/03-config.sh @@ -28,6 +28,7 @@ TZ=${TZ:-UTC} MEMORY_LIMIT=${MEMORY_LIMIT:-256M} UPLOAD_MAX_SIZE=${UPLOAD_MAX_SIZE:-16M} OPCACHE_MEM_SIZE=${OPCACHE_MEM_SIZE:-128} +LISTEN_IPV6=${LISTEN_IPV6:-true} REAL_IP_FROM=${REAL_IP_FROM:-"0.0.0.0/32"} REAL_IP_HEADER=${REAL_IP_HEADER:-"X-Forwarded-For"} LOG_IP_VAR=${LOG_IP_VAR:-remote_addr} @@ -77,6 +78,10 @@ sed -e "s#@UPLOAD_MAX_SIZE@#$UPLOAD_MAX_SIZE#g" \ -e "s#@LOG_IP_VAR@#$LOG_IP_VAR#g" \ /tpls/etc/nginx/nginx.conf > /etc/nginx/nginx.conf +if [ "$LISTEN_IPV6" != "true" ]; then + sed -e '/listen \[::\]:/d' -i /etc/nginx/nginx.conf +fi + # SNMP echo "Updating SNMP community..." file_env 'LIBRENMS_SNMP_COMMUNITY' 'librenmsdocker' From 7daa8602b61668e64a50db7514ab2fc6d98c803d Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 8 May 2020 21:40:24 +0200 Subject: [PATCH 122/477] LibreNMS 1.63 --- CHANGELOG.md | 5 +++++ Dockerfile | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 584d7f9..a5eea0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 1.63-RC1 (2020/05/08) + +* LibreNMS 1.63 +* Add `LISTEN_IPV6` env var (#71) + ## 1.62.2-RC2 (2020/04/13) * Fix log file permissions (#66) diff --git a/Dockerfile b/Dockerfile index b351481..e52a10f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -89,7 +89,7 @@ RUN apk --update --no-cache add \ && setcap cap_net_raw+ep /usr/sbin/fping ENV S6_BEHAVIOUR_IF_STAGE2_FAILS="2" \ - LIBRENMS_VERSION="1.62.2" \ + LIBRENMS_VERSION="1.63" \ LIBRENMS_PATH="/opt/librenms" \ LIBRENMS_DOCKER="1" \ TZ="UTC" \ From f74e790a14cbf4a6a348c32d138a93207894bc6e Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 8 May 2020 22:23:38 +0200 Subject: [PATCH 123/477] Alpine Linux 3.11 --- CHANGELOG.md | 1 + Dockerfile | 3 +-- README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5eea0c..7f3a580 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * LibreNMS 1.63 * Add `LISTEN_IPV6` env var (#71) +* Alpine Linux 3.11 ## 1.62.2-RC2 (2020/04/13) diff --git a/Dockerfile b/Dockerfile index e52a10f..34ddbad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.10 +FROM alpine:3.11 ARG BUILD_DATE ARG VCS_REF @@ -65,7 +65,6 @@ RUN apk --update --no-cache add \ php7-tokenizer \ php7-xml \ php7-zip \ - py-mysqldb \ python \ py2-pip \ python3 \ diff --git a/README.md b/README.md index 61f93d9..8c176f2 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ * [Additional Monitoring plugins (Nagios)](doc/notes/additional-monitoring-plugins.md) * [Upgrade](doc/upgrade.md) -## How can I help ? +## How can I help? All kinds of contributions are welcome :raised_hands:! The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon: You can also support this project by [**becoming a sponsor on GitHub**](https://github.com/sponsors/crazy-max) :clap: or by making a [Paypal donation](https://www.paypal.me/crazyws) to ensure this journey continues indefinitely! :rocket: From 7a2dfef43dee72fc73bb6a4fc04dc88f113d8b53 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 8 May 2020 22:26:08 +0200 Subject: [PATCH 124/477] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c176f2..a7a20b1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ @@ -20,19 +19,17 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ ## Features * Run as non-root user -* Cron tasks as a ["sidecar" container](doc/notes/crons.md) -* Syslog-ng support through a ["sidecar" container](doc/notes/syslog-ng.md) +* [Dispatcher service](doc/docker/environment-variables.md#dispatcher-service-under-test) or legacy [cron jobs](doc/docker/environment-variables.md#cron) as "sidecar" containers +* Syslog-ng support through a ["sidecar" container](doc/docker/environment-variables.md#syslog-ng) * Ability to configure [distributed polling](https://docs.librenms.org/Extensions/Distributed-Poller/) * Ability to add custom Monitoring plugins (Nagios) * OPCache enabled to store precompiled script bytecode in shared memory * [s6-overlay](https://github.com/just-containers/s6-overlay/) as process supervisor * [Traefik](https://github.com/containous/traefik-library-image) as reverse proxy and creation/renewal of Let's Encrypt certificates (see [this template](examples/traefik)) * [Memcached](https://github.com/docker-library/memcached) image ready to use for better scalability -* [RRDcached](https://github.com/crazy-max/docker-rrdcached) image ready to use for better scalability +* [RRDcached](https://github.com/crazy-max/docker-rrdcached) image ready to use for data caching and graphs * [Postfix SMTP relay](https://github.com/juanluisbaptiste/docker-postfix) image to send emails * [MariaDB](https://github.com/docker-library/mariadb) image as database instance -* Cron jobs as a ["sidecar" container](doc/docker/environment-variables.md#cron) -* Syslog-ng support through a ["sidecar" container](doc/docker/environment-variables.md#syslog-ng) ## Documentation @@ -46,6 +43,7 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ * [Add user](doc/notes/add-user.md) * [Validate](doc/notes/validate.md) * [Update database](doc/notes/update-database.md) + * [Dispatcher service](doc/notes/dispatcher-service.md) * [Crons](doc/notes/crons.md) * [Syslog-ng](doc/notes/syslog-ng.md) * [Additional Monitoring plugins (Nagios)](doc/notes/additional-monitoring-plugins.md) diff --git a/doc/docker/environment-variables.md b/doc/docker/environment-variables.md index 5e1408e..d754acf 100644 --- a/doc/docker/environment-variables.md +++ b/doc/docker/environment-variables.md @@ -13,19 +13,32 @@ * `REAL_IP_HEADER`: Request header field whose value will be used to replace the client address (default `X-Forwarded-For`) * `LOG_IP_VAR`: Use another variable to retrieve the remote IP address for access [log_format](http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format) on Nginx. (default `remote_addr`) -### (Distributed) Poller +### Dispatcher service -* `LIBRENMS_POLLER_THREADS`: Threads that `poller-wrapper.py` runs (default `16`) -* `LIBRENMS_POLLER_INTERVAL`: Interval in minutes at which `poller-wrapper.py` runs (defaults to `5`) [docs](https://docs.librenms.org/Support/1-Minute-Polling/) -* `LIBRENMS_DISTRIBUTED_POLLER_ENABLE`: Enable distributed poller functionality -* `LIBRENMS_DISTRIBUTED_POLLER_NAME`: Optional name of poller (defaults to hostname) -* `LIBRENMS_DISTRIBUTED_POLLER_GROUP`: By default, all hosts are shared and have the poller_group = 0. To pin a device to a poller, set it to a value greater than 0 and set the same value here. One can also specify a comma separated string of poller groups. The poller will then poll devices from any of the groups listed. [docs](https://docs.librenms.org/#Extensions/Distributed-Poller/#distributed-poller) -* `LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_HOST`: Memcached server for poller synchronization (Defaults to `$MEMCACHED_HOST`) -* `LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_PORT`: Port of memcached server (Defaults to `$MEMCACHED_PORT`) +> :warning: Only used if you enable and run a [sidecar dispatcher container](../notes/crons.md) + +* `SIDECAR_DISPATCHER`: Set to `1` to enable sidecar dispatcher mode for this container (default `0`) +* `LIBRENMS_SERVICE_POLLER_WORKERS`: Processes spawned for polling (default `24`) +* `LIBRENMS_SERVICE_SERVICES_WORKERS`: Processes spawned for service polling (default `8`) +* `LIBRENMS_SERVICE_DISCOVERY_WORKERS`: Processes spawned for discovery (default `16`) +* `LIBRENMS_SERVICE_POLLER_FREQUENCY`: Seconds between polling attempts (default `300`) +* `LIBRENMS_SERVICE_SERVICES_FREQUENCY`: Seconds between service polling attempts (default `300`) +* `LIBRENMS_SERVICE_DISCOVERY_FREQUENCY`: Seconds between polling attempts (default `21600`) +* `LIBRENMS_SERVICE_BILLING_FREQUENCY`: Seconds between polling attempts (default `300`) +* `LIBRENMS_SERVICE_BILLING_CALCULATE_FREQUENCY`: Billing interval (default `60`) +* `LIBRENMS_SERVICE_POLLER_DOWN_RETRY`: Seconds between failed polling attempts (default `60`) +* `LIBRENMS_SERVICE_LOGLEVEL`: Must be one of 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL' (default `INFO`) +* `LIBRENMS_SERVICE_UPDATE_FREQUENCY`: Seconds between LibreNMS update checks (default `86400`) +* `LIBRENMS_SERVICE_PING_ENABLED`: Enable fast ping scheduler (default `false`) +* `LIBRENMS_SERVICE_WATCHDOG_ENABLED`: Enable watchdog scheduler (default `false`) +* `REDIS_HOST`: Redis host for poller synchronization (default `localhost`) +* `REDIS_PORT`: Redis port (default `6379`) +* `REDIS_PASSWORD`: Redis password +* `REDIS_DB`: Redis database (default `0`) ### Cron -> :warning: Only used if you enabled and run a [sidecar cron container](../notes/crons.md) +> :warning: Only used if you enable and run a [sidecar cron container](../notes/crons.md) * `SIDECAR_CRON`: Set to `1` to enable sidecar cron mode for this container (default `0`) * `LIBRENMS_CRON_DISCOVERY_ENABLE`: Enable LibreNMS discovery for this container cronjobs (default `true`) @@ -42,9 +55,19 @@ * `LIBRENMS_CRON_SNMPSCAN_THREADS`: SNMP network scanning threads to use (default `32`) * `LIBRENMS_CRON_SNMPSCAN_LOGFILE`: SNMP network scanning cron log file (default `/dev/null`) +### Distributed Poller + +* `LIBRENMS_POLLER_THREADS`: Threads that `poller-wrapper.py` runs (default `16`) +* `LIBRENMS_POLLER_INTERVAL`: Interval in minutes at which `poller-wrapper.py` runs (default `5`) [docs](https://docs.librenms.org/Support/1-Minute-Polling/) +* `LIBRENMS_DISTRIBUTED_POLLER_ENABLE`: Enable distributed poller functionality +* `LIBRENMS_DISTRIBUTED_POLLER_NAME`: Optional name of poller (default `$(hostname)`) +* `LIBRENMS_DISTRIBUTED_POLLER_GROUP`: By default, all hosts are shared and have the poller_group = 0. To pin a device to a poller, set it to a value greater than 0 and set the same value here. One can also specify a comma separated string of poller groups. The poller will then poll devices from any of the groups listed. [docs](https://docs.librenms.org/#Extensions/Distributed-Poller/#distributed-poller) +* `LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_HOST`: Memcached server for poller synchronization (default `$MEMCACHED_HOST`) +* `LIBRENMS_DISTRIBUTED_POLLER_MEMCACHED_PORT`: Port of memcached server (default `$MEMCACHED_PORT`) + ### Syslog-ng -> :warning: Only used if you enabled and run a [sidecar syslog-ng container](../notes/syslog-ng.md) +> :warning: Only used if you enable and run a [sidecar syslog-ng container](../notes/syslog-ng.md) * `SIDECAR_SYSLOGNG`: Set to `1` to enable sidecar syslog-ng mode for this container (default `0`) diff --git a/doc/docker/ports.md b/doc/docker/ports.md index 4ee5562..0e7b9f9 100644 --- a/doc/docker/ports.md +++ b/doc/docker/ports.md @@ -1,4 +1,4 @@ ### Ports * `8000`: HTTP port -* `514 514/udp`: Syslog ports (only used if you enabled and run a [sidecar syslog-ng container](../notes/syslog-ng.md)) +* `514 514/udp`: Syslog ports (only used if you enable and run a [sidecar syslog-ng container](../notes/syslog-ng.md)) diff --git a/doc/notes/crons.md b/doc/notes/crons.md index c89fd48..dcde7cc 100644 --- a/doc/notes/crons.md +++ b/doc/notes/crons.md @@ -12,3 +12,5 @@ docker run -d --name librenms_cron \ > `-v librenms:/data`
-
+
![]()
![]()
![]()
From 3cdecd3e0003d8d55eb5c824e049669f070c8ff0 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Fri, 8 May 2020 22:35:43 +0200 Subject: [PATCH 125/477] Dispatcher service (#70) * Stop publishing Docker image on Quay Co-authored-by: CrazyMax
--- .github/workflows/build.yml | 8 - README.md | 10 +- doc/docker/environment-variables.md | 43 +++-- doc/docker/ports.md | 2 +- doc/notes/crons.md | 2 + doc/notes/dispatcher-service.md | 16 ++ examples/dispatcher/.env | 11 ++ examples/dispatcher/docker-compose.yml | 149 ++++++++++++++++++ examples/dispatcher/librenms.env | 28 ++++ rootfs/etc/cont-init.d/03-config.sh | 3 - rootfs/etc/cont-init.d/04-svc-main.sh | 3 +- rootfs/etc/cont-init.d/05-svc-dispatcher.sh | 112 +++++++++++++ .../{05-svc-cron.sh => 06-svc-cron.sh} | 0 ...{06-svc-syslogng.sh => 07-svc-syslogng.sh} | 0 14 files changed, 358 insertions(+), 29 deletions(-) create mode 100644 doc/notes/dispatcher-service.md create mode 100644 examples/dispatcher/.env create mode 100644 examples/dispatcher/docker-compose.yml create mode 100644 examples/dispatcher/librenms.env create mode 100644 rootfs/etc/cont-init.d/05-svc-dispatcher.sh rename rootfs/etc/cont-init.d/{05-svc-cron.sh => 06-svc-cron.sh} (100%) rename rootfs/etc/cont-init.d/{06-svc-syslogng.sh => 07-svc-syslogng.sh} (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ff7d14e..db9403f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,8 +29,6 @@ jobs: echo ::set-output name=build_date::$(date -u +'%Y-%m-%dT%H:%M:%SZ') echo ::set-output name=docker_username::librenmsbot echo ::set-output name=docker_image::librenms/librenms - echo ::set-output name=quay_username::librenms+travis - echo ::set-output name=quay_image::quay.io/librenms/librenms - name: Docker Build run: | @@ -40,30 +38,24 @@ jobs: --build-arg "VERSION=${{ steps.prepare.outputs.version }}" \ --tag "${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ --tag "${{ steps.prepare.outputs.docker_image }}:latest" \ - --tag "${{ steps.prepare.outputs.quay_image }}:${{ steps.prepare.outputs.version }}" \ - --tag "${{ steps.prepare.outputs.quay_image }}:latest" \ --file Dockerfile . - name: Docker Login if: success() && startsWith(github.ref, 'refs/tags/') env: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }} run: | echo "${DOCKER_PASSWORD}" | docker login --username "${{ steps.prepare.outputs.docker_username }}" --password-stdin - echo "${QUAY_PASSWORD}" | docker login quay.io --username "${{ steps.prepare.outputs.quay_username }}" --password-stdin - name: Docker Push if: success() && startsWith(github.ref, 'refs/tags/') run: | docker push ${{ steps.prepare.outputs.docker_image }} - docker push ${{ steps.prepare.outputs.quay_image }} - name: Docker Check Manifest if: always() && startsWith(github.ref, 'refs/tags/') run: | docker run --rm mplatform/mquery ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }} - docker run --rm mplatform/mquery ${{ steps.prepare.outputs.quay_image }}:${{ steps.prepare.outputs.version }} - name: Clear if: always() && startsWith(github.ref, 'refs/tags/') diff --git a/README.md b/README.md index a7a20b1..9393545 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ ![]()
![]()
-
![]()
![]()
![]()
> :warning: `librenms` must be a valid volume already attached to a LibreNMS container + +> :no_entry: Can't be used with [sidecar dispatcher container](crons.md). diff --git a/doc/notes/dispatcher-service.md b/doc/notes/dispatcher-service.md new file mode 100644 index 0000000..bc73802 --- /dev/null +++ b/doc/notes/dispatcher-service.md @@ -0,0 +1,16 @@ +## Dispatcher service + +If you want to enable the new [Dispatcher service](https://docs.librenms.org/Extensions/Dispatcher-Service/), you have to run a "sidecar" container (see dispatcher service in [docker-compose.yml](../../examples/dispatcher/docker-compose.yml) example) or run a simple container like this: + +```bash +docker run -d --name librenms_dispatcher \ + --env-file $(pwd)/librenms.env \ + -e SIDECAR_DISPATCHER=1 \ + -v librenms:/data \ + librenms/librenms:latest +``` + +> `-v librenms:/data`
+> :warning: `librenms` must be a valid volume already attached to a LibreNMS container + +> :no_entry: Can't be used with [sidecar cron container](crons.md). diff --git a/examples/dispatcher/.env b/examples/dispatcher/.env new file mode 100644 index 0000000..a847768 --- /dev/null +++ b/examples/dispatcher/.env @@ -0,0 +1,11 @@ +MYSQL_DATABASE=librenms +MYSQL_USER=librenms +MYSQL_PASSWORD=asupersecretpassword + +SMTP_SERVER=smtp.example.com +SMTP_USERNAME=smtp@example.com +SMTP_PASSWORD= + +TZ=Europe/Paris +PUID=1000 +PGID=1000 diff --git a/examples/dispatcher/docker-compose.yml b/examples/dispatcher/docker-compose.yml new file mode 100644 index 0000000..47f61c6 --- /dev/null +++ b/examples/dispatcher/docker-compose.yml @@ -0,0 +1,149 @@ +version: "3.5" + +services: + db: + image: mariadb:10.2 + container_name: librenms_db + command: + - "mysqld" + - "--sql-mode=" + - "--innodb-file-per-table=1" + - "--lower-case-table-names=0" + - "--character-set-server=utf8" + - "--collation-server=utf8_unicode_ci" + volumes: + - "./db:/var/lib/mysql" + environment: + - "TZ=${TZ}" + - "MYSQL_ALLOW_EMPTY_PASSWORD=yes" + - "MYSQL_DATABASE=${MYSQL_DATABASE}" + - "MYSQL_USER=${MYSQL_USER}" + - "MYSQL_PASSWORD=${MYSQL_PASSWORD}" + restart: always + + memcached: + image: memcached:alpine + container_name: librenms_memcached + environment: + - "TZ=${TZ}" + restart: always + + redis: + image: redis:5.0-alpine + container_name: librenms_redis + environment: + - "TZ=${TZ}" + restart: always + + rrdcached: + image: crazymax/rrdcached + container_name: librenms_rrdcached + volumes: + - "./librenms/rrd:/data/db" + - "./rrd-journal:/data/journal" + environment: + - "TZ=${TZ}" + - "PUID=${PUID}" + - "PGID=${PGID}" + - "LOG_LEVEL=LOG_INFO" + - "WRITE_TIMEOUT=1800" + - "WRITE_JITTER=1800" + - "WRITE_THREADS=4" + - "FLUSH_DEAD_DATA_INTERVAL=3600" + restart: always + + smtp: + image: juanluisbaptiste/postfix + container_name: librenms_smtp + environment: + - "SERVER_HOSTNAME=librenms.example.com" + - "SMTP_SERVER=${SMTP_SERVER}" + - "SMTP_USERNAME=${SMTP_USERNAME}" + - "SMTP_PASSWORD=${SMTP_PASSWORD}" + restart: always + + librenms: + image: librenms/librenms:latest + container_name: librenms + domainname: example.com + hostname: librenms + ports: + - target: 8000 + published: 8000 + protocol: tcp + depends_on: + - db + - memcached + - rrdcached + - smtp + volumes: + - "./librenms:/data" + environment: + - "TZ=${TZ}" + - "PUID=${PUID}" + - "PGID=${PGID}" + - "DB_HOST=db" + - "DB_NAME=${MYSQL_DATABASE}" + - "DB_USER=${MYSQL_USER}" + - "DB_PASSWORD=${MYSQL_PASSWORD}" + - "DB_TIMEOUT=60" + env_file: + - "./librenms.env" + restart: always + + dispatcher: + image: librenms/librenms:latest + container_name: librenms_dispatcher + domainname: example.com + hostname: librenms + depends_on: + - librenms + - redis + volumes: + - "./librenms:/data" + environment: + - "TZ=${TZ}" + - "PUID=${PUID}" + - "PGID=${PGID}" + - "DB_HOST=db" + - "DB_NAME=${MYSQL_DATABASE}" + - "DB_USER=${MYSQL_USER}" + - "DB_PASSWORD=${MYSQL_PASSWORD}" + - "DB_TIMEOUT=60" + - "REDIS_HOST=redis" + - "REDIS_PORT=6379" + - "REDIS_DB=0" + - "SIDECAR_DISPATCHER=1" + env_file: + - "./librenms.env" + restart: always + + syslog-ng: + image: librenms/librenms:latest + container_name: librenms_syslog + domainname: example.com + hostname: librenms + depends_on: + - librenms + ports: + - target: 514 + published: 514 + protocol: tcp + - target: 514 + published: 514 + protocol: udp + volumes: + - "./librenms:/data" + environment: + - "TZ=${TZ}" + - "PUID=${PUID}" + - "PGID=${PGID}" + - "DB_HOST=db" + - "DB_NAME=${MYSQL_DATABASE}" + - "DB_USER=${MYSQL_USER}" + - "DB_PASSWORD=${MYSQL_PASSWORD}" + - "DB_TIMEOUT=60" + - "SIDECAR_SYSLOGNG=1" + env_file: + - "./librenms.env" + restart: always diff --git a/examples/dispatcher/librenms.env b/examples/dispatcher/librenms.env new file mode 100644 index 0000000..6b8655e --- /dev/null +++ b/examples/dispatcher/librenms.env @@ -0,0 +1,28 @@ +MEMORY_LIMIT=256M +UPLOAD_MAX_SIZE=16M +OPCACHE_MEM_SIZE=128 +REAL_IP_FROM=0.0.0.0/32 +REAL_IP_HEADER=X-Forwarded-For +LOG_IP_VAR=remote_addr + +LIBRENMS_SNMP_COMMUNITY=librenmsdocker +MEMCACHED_HOST=memcached +MEMCACHED_PORT=11211 +RRDCACHED_HOST=rrdcached +RRDCACHED_PORT=42217 + +LIBRENMS_SERVICE_POLLER_WORKERS=24 +LIBRENMS_SERVICE_SERVICES_WORKERS=8 +LIBRENMS_SERVICE_DISCOVERY_WORKERS=16 + +LIBRENMS_SERVICE_POLLER_FREQUENCY=300 +LIBRENMS_SERVICE_SERVICES_FREQUENCY=300 +LIBRENMS_SERVICE_DISCOVERY_FREQUENCY=21600 +LIBRENMS_SERVICE_BILLING_FREQUENCY=300 +LIBRENMS_SERVICE_BILLING_CALCULATE_FREQUENCY=60 +LIBRENMS_SERVICE_POLLER_DOWN_RETRY=60 +LIBRENMS_SERVICE_LOGLEVEL=INFO +LIBRENMS_SERVICE_UPDATE_FREQUENCY=86400 + +LIBRENMS_SERVICE_PING_ENABLED=false +LIBRENMS_SERVICE_WATCHDOG_ENABLED=false diff --git a/rootfs/etc/cont-init.d/03-config.sh b/rootfs/etc/cont-init.d/03-config.sh index 9647c81..b26bd31 100644 --- a/rootfs/etc/cont-init.d/03-config.sh +++ b/rootfs/etc/cont-init.d/03-config.sh @@ -47,9 +47,6 @@ DB_NAME=${DB_NAME:-librenms} DB_USER=${DB_USER:-librenms} DB_TIMEOUT=${DB_TIMEOUT:-30} -SIDECAR_CRON=${SIDECAR_CRON:-0} -SIDECAR_SYSLOGNG=${SIDECAR_SYSLOGNG:-0} - # Timezone echo "Setting timezone to ${TZ}..." ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime diff --git a/rootfs/etc/cont-init.d/04-svc-main.sh b/rootfs/etc/cont-init.d/04-svc-main.sh index 16d70b5..5dda362 100644 --- a/rootfs/etc/cont-init.d/04-svc-main.sh +++ b/rootfs/etc/cont-init.d/04-svc-main.sh @@ -29,9 +29,10 @@ DB_USER=${DB_USER:-librenms} DB_TIMEOUT=${DB_TIMEOUT:-60} SIDECAR_CRON=${SIDECAR_CRON:-0} +SIDECAR_DISPATCHER=${SIDECAR_DISPATCHER:-0} SIDECAR_SYSLOGNG=${SIDECAR_SYSLOGNG:-0} -if [ "$SIDECAR_CRON" = "1" ] || [ "$SIDECAR_SYSLOGNG" = "1" ]; then +if [ "$SIDECAR_CRON" = "1" ] || [ "$SIDECAR_DISPATCHER" = "1" ] || [ "$SIDECAR_SYSLOGNG" = "1" ]; then exit 0 fi diff --git a/rootfs/etc/cont-init.d/05-svc-dispatcher.sh b/rootfs/etc/cont-init.d/05-svc-dispatcher.sh new file mode 100644 index 0000000..ebe8f02 --- /dev/null +++ b/rootfs/etc/cont-init.d/05-svc-dispatcher.sh @@ -0,0 +1,112 @@ +#!/usr/bin/with-contenv bash + +# From https://github.com/docker-library/mariadb/blob/master/docker-entrypoint.sh#L21-L41 +# usage: file_env VAR [DEFAULT] +# ie: file_env 'XYZ_DB_PASSWORD' 'example' +# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of +# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature) +file_env() { + local var="$1" + local fileVar="${var}_FILE" + local def="${2:-}" + if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then + echo >&2 "error: both $var and $fileVar are set (but are exclusive)" + exit 1 + fi + local val="$def" + if [ "${!var:-}" ]; then + val="${!var}" + elif [ "${!fileVar:-}" ]; then + val="$(< "${!fileVar}")" + fi + export "$var"="$val" + unset "$fileVar" +} + +DB_PORT=${DB_PORT:-3306} +DB_DATABASE=${DB_DATABASE:-librenms} +DB_USERNAME=${DB_USERNAME:-librenms} +DB_TIMEOUT=${DB_TIMEOUT:-60} + +SIDECAR_DISPATCHER=${SIDECAR_DISPATCHER:-0} + +LIBRENMS_SERVICE_POLLER_WORKERS=${LIBRENMS_SERVICE_POLLER_WORKERS:-24} +LIBRENMS_SERVICE_SERVICES_WORKERS=${LIBRENMS_SERVICE_SERVICES_WORKERS:-8} +LIBRENMS_SERVICE_DISCOVERY_WORKERS=${LIBRENMS_SERVICE_DISCOVERY_WORKERS:-16} + +LIBRENMS_SERVICE_POLLER_FREQUENCY=${LIBRENMS_SERVICE_POLLER_FREQUENCY:-300} +LIBRENMS_SERVICE_SERVICES_FREQUENCY=${LIBRENMS_SERVICE_SERVICES_FREQUENCY:-300} +LIBRENMS_SERVICE_DISCOVERY_FREQUENCY=${LIBRENMS_SERVICE_DISCOVERY_FREQUENCY:-21600} +LIBRENMS_SERVICE_BILLING_FREQUENCY=${LIBRENMS_SERVICE_BILLING_FREQUENCY:-300} +LIBRENMS_SERVICE_BILLING_CALCULATE_FREQUENCY=${LIBRENMS_SERVICE_BILLING_CALCULATE_FREQUENCY:-60} +LIBRENMS_SERVICE_POLLER_DOWN_RETRY=${LIBRENMS_SERVICE_POLLER_DOWN_RETRY:-60} +LIBRENMS_SERVICE_LOGLEVEL=${LIBRENMS_SERVICE_LOGLEVEL:-INFO} +LIBRENMS_SERVICE_UPDATE_FREQUENCY=${LIBRENMS_SERVICE_UPDATE_FREQUENCY:-86400} + +LIBRENMS_SERVICE_PING_ENABLED=${LIBRENMS_SERVICE_PING_ENABLED:-false} +LIBRENMS_SERVICE_WATCHDOG_ENABLED=${LIBRENMS_SERVICE_WATCHDOG_ENABLED:-false} + +REDIS_HOST=${REDIS_HOST:-localhost} +REDIS_PORT=${REDIS_PORT:-6379} +file_env 'REDIS_PASSWORD' +REDIS_DB=${REDIS_DB:-0} + +# Continue only if sidecar dispatcher container +if [ "$SIDECAR_DISPATCHER" != "1" ]; then + exit 0 +fi + +echo ">>" +echo ">> Sidecar dispatcher container detected" +echo ">>" + +file_env 'DB_PASSWORD' +if [ -z "$DB_PASSWORD" ]; then + >&2 echo "ERROR: Either DB_PASSWORD or DB_PASSWORD_FILE must be defined" + exit 1 +fi + +dbcmd="mysql -h ${DB_HOST} -P ${DB_PORT} -u "${DB_USERNAME}" "-p${DB_PASSWORD}"" +unset DB_PASSWORD + +echo "Waiting ${DB_TIMEOUT}s for database to be ready..." +counter=1 +while ! ${dbcmd} -e "show databases;" > /dev/null 2>&1; do + sleep 1 + counter=$((counter + 1)) + if [ ${counter} -gt ${DB_TIMEOUT} ]; then + >&2 echo "ERROR: Failed to connect to database on $DB_HOST" + exit 1 + fi; +done +echo "Database ready!" +counttables=$(echo 'SHOW TABLES' | ${dbcmd} "$DB_DATABASE" | wc -l) + +# Configuration +cat > ${LIBRENMS_PATH}/config.d/dispatcher.php </etc/services.d/dispatcher/run < Date: Fri, 8 May 2020 22:38:51 +0200 Subject: [PATCH 126/477] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f3a580..cf5e2c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## 1.63-RC1 (2020/05/08) * LibreNMS 1.63 +* Add sidecar dispatcher container (#70) * Add `LISTEN_IPV6` env var (#71) * Alpine Linux 3.11 From 7bd652f10a304e42c6c4bd2cb18a48c66c0a25fe Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 8 May 2020 23:10:27 +0200 Subject: [PATCH 127/477] Fix poller-wrapper --- CHANGELOG.md | 4 ++++ Dockerfile | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf5e2c6..7a9e3b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.63-RC2 (2020/05/08) + +* Fix poller-wrapper + ## 1.63-RC1 (2020/05/08) * LibreNMS 1.63 diff --git a/Dockerfile b/Dockerfile index 34ddbad..720ff3f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -77,12 +77,20 @@ RUN apk --update --no-cache add \ tzdata \ util-linux \ whois \ + && apk --update --no-cache add -t build-dependencies \ + gcc \ + make \ + mariadb-dev \ + musl-dev \ + python-dev \ + python3-dev \ && pip2 install --upgrade pip \ - && pip2 install python-memcached \ + && pip2 install python-memcached mysqlclient \ && pip3 install --upgrade pip \ - && pip3 install python-memcached \ + && pip3 install python-memcached mysqlclient \ && wget -q "https://github.com/just-containers/s6-overlay/releases/latest/download/s6-overlay-amd64.tar.gz" -qO "/tmp/s6-overlay-amd64.tar.gz" \ && tar xzf /tmp/s6-overlay-amd64.tar.gz -C / \ + && apk del build-dependencies \ && rm -rf /var/cache/apk/* /var/www/* /tmp/* \ && setcap cap_net_raw+ep /usr/bin/nmap \ && setcap cap_net_raw+ep /usr/sbin/fping From 68c9b01c0f237930d9754841cd6d9c9c3d538c0c Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 8 May 2020 23:33:07 +0200 Subject: [PATCH 128/477] Update compose and set crons sidecar as legacy --- doc/notes/crons.md | 4 +-- doc/notes/dispatcher-service.md | 2 +- examples/{dispatcher => compose-legacy}/.env | 0 .../docker-compose.yml | 17 ++--------- examples/compose-legacy/librenms.env | 26 ++++++++++++++++ examples/compose/docker-compose.yml | 17 +++++++++-- examples/compose/librenms.env | 30 ++++++++++--------- examples/dispatcher/librenms.env | 28 ----------------- 8 files changed, 62 insertions(+), 62 deletions(-) rename examples/{dispatcher => compose-legacy}/.env (100%) rename examples/{dispatcher => compose-legacy}/docker-compose.yml (91%) create mode 100644 examples/compose-legacy/librenms.env delete mode 100644 examples/dispatcher/librenms.env diff --git a/doc/notes/crons.md b/doc/notes/crons.md index dcde7cc..ed44718 100644 --- a/doc/notes/crons.md +++ b/doc/notes/crons.md @@ -1,6 +1,6 @@ -## Crons +## Crons (legacy) -If you want to enable the cronjob, you have to run a "sidecar" container (see cron service in [docker-compose.yml](../../examples/compose/docker-compose.yml) example) or run a simple container like this : +If you want to enable the old crons, you have to run a "sidecar" container (see cron service in [docker-compose.yml](../../examples/compose-legacy/docker-compose.yml) example) or run a simple container like this : ```bash docker run -d --name librenms_cron \ diff --git a/doc/notes/dispatcher-service.md b/doc/notes/dispatcher-service.md index bc73802..a25fc31 100644 --- a/doc/notes/dispatcher-service.md +++ b/doc/notes/dispatcher-service.md @@ -1,6 +1,6 @@ ## Dispatcher service -If you want to enable the new [Dispatcher service](https://docs.librenms.org/Extensions/Dispatcher-Service/), you have to run a "sidecar" container (see dispatcher service in [docker-compose.yml](../../examples/dispatcher/docker-compose.yml) example) or run a simple container like this: +If you want to enable the new [Dispatcher service](https://docs.librenms.org/Extensions/Dispatcher-Service/), you have to run a "sidecar" container (see dispatcher service in [docker-compose.yml](../../examples/compose/docker-compose.yml) example) or run a simple container like this: ```bash docker run -d --name librenms_dispatcher \ diff --git a/examples/dispatcher/.env b/examples/compose-legacy/.env similarity index 100% rename from examples/dispatcher/.env rename to examples/compose-legacy/.env diff --git a/examples/dispatcher/docker-compose.yml b/examples/compose-legacy/docker-compose.yml similarity index 91% rename from examples/dispatcher/docker-compose.yml rename to examples/compose-legacy/docker-compose.yml index 47f61c6..5151188 100644 --- a/examples/dispatcher/docker-compose.yml +++ b/examples/compose-legacy/docker-compose.yml @@ -28,13 +28,6 @@ services: - "TZ=${TZ}" restart: always - redis: - image: redis:5.0-alpine - container_name: librenms_redis - environment: - - "TZ=${TZ}" - restart: always - rrdcached: image: crazymax/rrdcached container_name: librenms_rrdcached @@ -91,14 +84,13 @@ services: - "./librenms.env" restart: always - dispatcher: + cron: image: librenms/librenms:latest - container_name: librenms_dispatcher + container_name: librenms_cron domainname: example.com hostname: librenms depends_on: - librenms - - redis volumes: - "./librenms:/data" environment: @@ -110,10 +102,7 @@ services: - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - - "REDIS_HOST=redis" - - "REDIS_PORT=6379" - - "REDIS_DB=0" - - "SIDECAR_DISPATCHER=1" + - "SIDECAR_CRON=1" env_file: - "./librenms.env" restart: always diff --git a/examples/compose-legacy/librenms.env b/examples/compose-legacy/librenms.env new file mode 100644 index 0000000..6a91910 --- /dev/null +++ b/examples/compose-legacy/librenms.env @@ -0,0 +1,26 @@ +MEMORY_LIMIT=256M +UPLOAD_MAX_SIZE=16M +OPCACHE_MEM_SIZE=128 +REAL_IP_FROM=0.0.0.0/32 +REAL_IP_HEADER=X-Forwarded-For +LOG_IP_VAR=remote_addr + +LIBRENMS_POLLER_THREADS=16 +LIBRENMS_POLLER_INTERVAL=5 + +LIBRENMS_CRON_DISCOVERY_ENABLE=true +LIBRENMS_CRON_DAILY_ENABLE=true +LIBRENMS_CRON_ALERTS_ENABLE=true +LIBRENMS_CRON_BILLING_ENABLE=true +LIBRENMS_CRON_BILLING_CALCULATE_ENABLE=true +LIBRENMS_CRON_CHECK_SERVICES_ENABLE=true +LIBRENMS_CRON_POLLER_ENABLE=true +LIBRENMS_CRON_SNMPSCAN_ENABLE=true +LIBRENMS_CRON_SNMPSCAN_NETS=192.168.0.0/24,192.168.1.0/24 +LIBRENMS_CRON_SNMPSCAN_LOGFILE=/data/logs/snmp-scan.log + +LIBRENMS_SNMP_COMMUNITY=librenmsdocker +MEMCACHED_HOST=memcached +MEMCACHED_PORT=11211 +RRDCACHED_HOST=rrdcached +RRDCACHED_PORT=42217 diff --git a/examples/compose/docker-compose.yml b/examples/compose/docker-compose.yml index 5151188..47f61c6 100644 --- a/examples/compose/docker-compose.yml +++ b/examples/compose/docker-compose.yml @@ -28,6 +28,13 @@ services: - "TZ=${TZ}" restart: always + redis: + image: redis:5.0-alpine + container_name: librenms_redis + environment: + - "TZ=${TZ}" + restart: always + rrdcached: image: crazymax/rrdcached container_name: librenms_rrdcached @@ -84,13 +91,14 @@ services: - "./librenms.env" restart: always - cron: + dispatcher: image: librenms/librenms:latest - container_name: librenms_cron + container_name: librenms_dispatcher domainname: example.com hostname: librenms depends_on: - librenms + - redis volumes: - "./librenms:/data" environment: @@ -102,7 +110,10 @@ services: - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - - "SIDECAR_CRON=1" + - "REDIS_HOST=redis" + - "REDIS_PORT=6379" + - "REDIS_DB=0" + - "SIDECAR_DISPATCHER=1" env_file: - "./librenms.env" restart: always diff --git a/examples/compose/librenms.env b/examples/compose/librenms.env index 6a91910..6b8655e 100644 --- a/examples/compose/librenms.env +++ b/examples/compose/librenms.env @@ -5,22 +5,24 @@ REAL_IP_FROM=0.0.0.0/32 REAL_IP_HEADER=X-Forwarded-For LOG_IP_VAR=remote_addr -LIBRENMS_POLLER_THREADS=16 -LIBRENMS_POLLER_INTERVAL=5 - -LIBRENMS_CRON_DISCOVERY_ENABLE=true -LIBRENMS_CRON_DAILY_ENABLE=true -LIBRENMS_CRON_ALERTS_ENABLE=true -LIBRENMS_CRON_BILLING_ENABLE=true -LIBRENMS_CRON_BILLING_CALCULATE_ENABLE=true -LIBRENMS_CRON_CHECK_SERVICES_ENABLE=true -LIBRENMS_CRON_POLLER_ENABLE=true -LIBRENMS_CRON_SNMPSCAN_ENABLE=true -LIBRENMS_CRON_SNMPSCAN_NETS=192.168.0.0/24,192.168.1.0/24 -LIBRENMS_CRON_SNMPSCAN_LOGFILE=/data/logs/snmp-scan.log - LIBRENMS_SNMP_COMMUNITY=librenmsdocker MEMCACHED_HOST=memcached MEMCACHED_PORT=11211 RRDCACHED_HOST=rrdcached RRDCACHED_PORT=42217 + +LIBRENMS_SERVICE_POLLER_WORKERS=24 +LIBRENMS_SERVICE_SERVICES_WORKERS=8 +LIBRENMS_SERVICE_DISCOVERY_WORKERS=16 + +LIBRENMS_SERVICE_POLLER_FREQUENCY=300 +LIBRENMS_SERVICE_SERVICES_FREQUENCY=300 +LIBRENMS_SERVICE_DISCOVERY_FREQUENCY=21600 +LIBRENMS_SERVICE_BILLING_FREQUENCY=300 +LIBRENMS_SERVICE_BILLING_CALCULATE_FREQUENCY=60 +LIBRENMS_SERVICE_POLLER_DOWN_RETRY=60 +LIBRENMS_SERVICE_LOGLEVEL=INFO +LIBRENMS_SERVICE_UPDATE_FREQUENCY=86400 + +LIBRENMS_SERVICE_PING_ENABLED=false +LIBRENMS_SERVICE_WATCHDOG_ENABLED=false diff --git a/examples/dispatcher/librenms.env b/examples/dispatcher/librenms.env deleted file mode 100644 index 6b8655e..0000000 --- a/examples/dispatcher/librenms.env +++ /dev/null @@ -1,28 +0,0 @@ -MEMORY_LIMIT=256M -UPLOAD_MAX_SIZE=16M -OPCACHE_MEM_SIZE=128 -REAL_IP_FROM=0.0.0.0/32 -REAL_IP_HEADER=X-Forwarded-For -LOG_IP_VAR=remote_addr - -LIBRENMS_SNMP_COMMUNITY=librenmsdocker -MEMCACHED_HOST=memcached -MEMCACHED_PORT=11211 -RRDCACHED_HOST=rrdcached -RRDCACHED_PORT=42217 - -LIBRENMS_SERVICE_POLLER_WORKERS=24 -LIBRENMS_SERVICE_SERVICES_WORKERS=8 -LIBRENMS_SERVICE_DISCOVERY_WORKERS=16 - -LIBRENMS_SERVICE_POLLER_FREQUENCY=300 -LIBRENMS_SERVICE_SERVICES_FREQUENCY=300 -LIBRENMS_SERVICE_DISCOVERY_FREQUENCY=21600 -LIBRENMS_SERVICE_BILLING_FREQUENCY=300 -LIBRENMS_SERVICE_BILLING_CALCULATE_FREQUENCY=60 -LIBRENMS_SERVICE_POLLER_DOWN_RETRY=60 -LIBRENMS_SERVICE_LOGLEVEL=INFO -LIBRENMS_SERVICE_UPDATE_FREQUENCY=86400 - -LIBRENMS_SERVICE_PING_ENABLED=false -LIBRENMS_SERVICE_WATCHDOG_ENABLED=false From 39c753d1e852e28201045432cecbbbfb22cf93b5 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sat, 9 May 2020 15:01:58 +0200 Subject: [PATCH 129/477] Fix links --- README.md | 4 ++-- doc/docker/environment-variables.md | 6 +++--- doc/notes/{crons.md => cron.md} | 4 ++-- doc/notes/dispatcher-service.md | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) rename doc/notes/{crons.md => cron.md} (82%) diff --git a/README.md b/README.md index 9393545..5ae1fba 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ ## Features * Run as non-root user -* [Dispatcher service](doc/docker/environment-variables.md#dispatcher-service-under-test) or legacy [cron jobs](doc/docker/environment-variables.md#cron) as "sidecar" containers +* [Dispatcher service](doc/docker/environment-variables.md#dispatcher-service) or legacy [cron](doc/docker/environment-variables.md#cron-legacy) as "sidecar" containers * Syslog-ng support through a ["sidecar" container](doc/docker/environment-variables.md#syslog-ng) * Ability to configure [distributed polling](https://docs.librenms.org/Extensions/Distributed-Poller/) * Ability to add custom Monitoring plugins (Nagios) @@ -44,7 +44,7 @@ It's a fork of [CrazyMax's LibreNMS Docker image repository](https://github.com/ * [Validate](doc/notes/validate.md) * [Update database](doc/notes/update-database.md) * [Dispatcher service](doc/notes/dispatcher-service.md) - * [Crons](doc/notes/crons.md) + * [Cron (legacy)](doc/notes/cron.md) * [Syslog-ng](doc/notes/syslog-ng.md) * [Additional Monitoring plugins (Nagios)](doc/notes/additional-monitoring-plugins.md) * [Upgrade](doc/upgrade.md) diff --git a/doc/docker/environment-variables.md b/doc/docker/environment-variables.md index d754acf..a975ed1 100644 --- a/doc/docker/environment-variables.md +++ b/doc/docker/environment-variables.md @@ -15,7 +15,7 @@ ### Dispatcher service -> :warning: Only used if you enable and run a [sidecar dispatcher container](../notes/crons.md) +> :warning: Only used if you enable and run a [sidecar dispatcher container](../notes/dispatcher-service.md) * `SIDECAR_DISPATCHER`: Set to `1` to enable sidecar dispatcher mode for this container (default `0`) * `LIBRENMS_SERVICE_POLLER_WORKERS`: Processes spawned for polling (default `24`) @@ -36,9 +36,9 @@ * `REDIS_PASSWORD`: Redis password * `REDIS_DB`: Redis database (default `0`) -### Cron +### Cron (legacy) -> :warning: Only used if you enable and run a [sidecar cron container](../notes/crons.md) +> :warning: Only used if you enable and run a [sidecar cron container](../notes/cron.md) * `SIDECAR_CRON`: Set to `1` to enable sidecar cron mode for this container (default `0`) * `LIBRENMS_CRON_DISCOVERY_ENABLE`: Enable LibreNMS discovery for this container cronjobs (default `true`) diff --git a/doc/notes/crons.md b/doc/notes/cron.md similarity index 82% rename from doc/notes/crons.md rename to doc/notes/cron.md index ed44718..ab40d91 100644 --- a/doc/notes/crons.md +++ b/doc/notes/cron.md @@ -1,4 +1,4 @@ -## Crons (legacy) +## Cron (legacy) If you want to enable the old crons, you have to run a "sidecar" container (see cron service in [docker-compose.yml](../../examples/compose-legacy/docker-compose.yml) example) or run a simple container like this : @@ -13,4 +13,4 @@ docker run -d --name librenms_cron \ > `-v librenms:/data`
> :warning: `librenms` must be a valid volume already attached to a LibreNMS container -> :no_entry: Can't be used with [sidecar dispatcher container](crons.md). +> :no_entry: Can't be used with [sidecar dispatcher container](dispatcher-service.md). diff --git a/doc/notes/dispatcher-service.md b/doc/notes/dispatcher-service.md index a25fc31..d34c4cb 100644 --- a/doc/notes/dispatcher-service.md +++ b/doc/notes/dispatcher-service.md @@ -13,4 +13,4 @@ docker run -d --name librenms_dispatcher \ > `-v librenms:/data`
> :warning: `librenms` must be a valid volume already attached to a LibreNMS container -> :no_entry: Can't be used with [sidecar cron container](crons.md). +> :no_entry: Can't be used with [sidecar cron container](cron.md). From 6acb3577a79c2bf282db0a2e856241e0fcb41d8f Mon Sep 17 00:00:00 2001 From: CrazyMaxDate: Sat, 9 May 2020 16:56:11 +0200 Subject: [PATCH 130/477] Update compose examples --- examples/compose-legacy/docker-compose.yml | 12 ++++----- examples/compose/docker-compose.yml | 12 ++++----- examples/traefik/docker-compose.yml | 29 +++++++++++++++------- examples/traefik/librenms.env | 27 ++++++++++++-------- 4 files changed, 48 insertions(+), 32 deletions(-) diff --git a/examples/compose-legacy/docker-compose.yml b/examples/compose-legacy/docker-compose.yml index 5151188..da38f5f 100644 --- a/examples/compose-legacy/docker-compose.yml +++ b/examples/compose-legacy/docker-compose.yml @@ -71,6 +71,8 @@ services: - smtp volumes: - "./librenms:/data" + env_file: + - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" @@ -80,8 +82,6 @@ services: - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - env_file: - - "./librenms.env" restart: always cron: @@ -93,6 +93,8 @@ services: - librenms volumes: - "./librenms:/data" + env_file: + - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" @@ -103,8 +105,6 @@ services: - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - "SIDECAR_CRON=1" - env_file: - - "./librenms.env" restart: always syslog-ng: @@ -123,6 +123,8 @@ services: protocol: udp volumes: - "./librenms:/data" + env_file: + - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" @@ -133,6 +135,4 @@ services: - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - "SIDECAR_SYSLOGNG=1" - env_file: - - "./librenms.env" restart: always diff --git a/examples/compose/docker-compose.yml b/examples/compose/docker-compose.yml index 47f61c6..0a7a12b 100644 --- a/examples/compose/docker-compose.yml +++ b/examples/compose/docker-compose.yml @@ -78,6 +78,8 @@ services: - smtp volumes: - "./librenms:/data" + env_file: + - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" @@ -87,8 +89,6 @@ services: - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - env_file: - - "./librenms.env" restart: always dispatcher: @@ -101,6 +101,8 @@ services: - redis volumes: - "./librenms:/data" + env_file: + - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" @@ -114,8 +116,6 @@ services: - "REDIS_PORT=6379" - "REDIS_DB=0" - "SIDECAR_DISPATCHER=1" - env_file: - - "./librenms.env" restart: always syslog-ng: @@ -134,6 +134,8 @@ services: protocol: udp volumes: - "./librenms:/data" + env_file: + - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" @@ -144,6 +146,4 @@ services: - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - "SIDECAR_SYSLOGNG=1" - env_file: - - "./librenms.env" restart: always diff --git a/examples/traefik/docker-compose.yml b/examples/traefik/docker-compose.yml index 4156478..2c3624f 100644 --- a/examples/traefik/docker-compose.yml +++ b/examples/traefik/docker-compose.yml @@ -59,6 +59,13 @@ services: - "TZ=${TZ}" restart: always + redis: + image: redis:5.0-alpine + container_name: librenms_redis + environment: + - "TZ=${TZ}" + restart: always + rrdcached: image: crazymax/rrdcached container_name: librenms_rrdcached @@ -103,6 +110,8 @@ services: - "traefik.backend=librenms" - "traefik.port=8000" - "traefik.frontend.rule=Host:librenms.example.com" + env_file: + - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" @@ -112,19 +121,20 @@ services: - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - env_file: - - "./librenms.env" restart: always - cron: + dispatcher: image: librenms/librenms:latest - container_name: librenms_cron + container_name: librenms_dispatcher domainname: example.com hostname: librenms depends_on: - librenms + - redis volumes: - "./librenms:/data" + env_file: + - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" @@ -134,9 +144,10 @@ services: - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - - "SIDECAR_CRON=1" - env_file: - - "./librenms.env" + - "REDIS_HOST=redis" + - "REDIS_PORT=6379" + - "REDIS_DB=0" + - "SIDECAR_DISPATCHER=1" restart: always syslog-ng: @@ -155,6 +166,8 @@ services: protocol: udp volumes: - "./librenms:/data" + env_file: + - "./librenms.env" environment: - "TZ=${TZ}" - "PUID=${PUID}" @@ -165,6 +178,4 @@ services: - "DB_PASSWORD=${MYSQL_PASSWORD}" - "DB_TIMEOUT=60" - "SIDECAR_SYSLOGNG=1" - env_file: - - "./librenms.env" restart: always diff --git a/examples/traefik/librenms.env b/examples/traefik/librenms.env index d200733..bcc5fb3 100644 --- a/examples/traefik/librenms.env +++ b/examples/traefik/librenms.env @@ -5,19 +5,24 @@ REAL_IP_FROM=0.0.0.0/32 REAL_IP_HEADER=X-Forwarded-For LOG_IP_VAR=http_x_forwarded_for -LIBRENMS_POLLER_THREADS=16 -LIBRENMS_POLLER_INTERVAL=5 - -LIBRENMS_CRON_DISCOVERY_ENABLE=true -LIBRENMS_CRON_DAILY_ENABLE=true -LIBRENMS_CRON_ALERTS_ENABLE=true -LIBRENMS_CRON_BILLING_ENABLE=true -LIBRENMS_CRON_BILLING_CALCULATE_ENABLE=true -LIBRENMS_CRON_CHECK_SERVICES_ENABLE=true -LIBRENMS_CRON_POLLER_ENABLE=true - LIBRENMS_SNMP_COMMUNITY=librenmsdocker MEMCACHED_HOST=memcached MEMCACHED_PORT=11211 RRDCACHED_HOST=rrdcached RRDCACHED_PORT=42217 + +LIBRENMS_SERVICE_POLLER_WORKERS=24 +LIBRENMS_SERVICE_SERVICES_WORKERS=8 +LIBRENMS_SERVICE_DISCOVERY_WORKERS=16 + +LIBRENMS_SERVICE_POLLER_FREQUENCY=300 +LIBRENMS_SERVICE_SERVICES_FREQUENCY=300 +LIBRENMS_SERVICE_DISCOVERY_FREQUENCY=21600 +LIBRENMS_SERVICE_BILLING_FREQUENCY=300 +LIBRENMS_SERVICE_BILLING_CALCULATE_FREQUENCY=60 +LIBRENMS_SERVICE_POLLER_DOWN_RETRY=60 +LIBRENMS_SERVICE_LOGLEVEL=INFO +LIBRENMS_SERVICE_UPDATE_FREQUENCY=86400 + +LIBRENMS_SERVICE_PING_ENABLED=false +LIBRENMS_SERVICE_WATCHDOG_ENABLED=false From 944e949d116e55a17f665b531fc3501f6926171b Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Wed, 13 May 2020 13:25:20 +0200 Subject: [PATCH 131/477] Update workflows --- .github/workflows/build.yml | 1 - .github/workflows/labels.yml | 2 -- 2 files changed, 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index db9403f..c674532 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,6 @@ jobs: runs-on: ubuntu-latest steps: - - # https://github.com/actions/checkout name: Checkout uses: actions/checkout@v2 - diff --git a/.github/workflows/labels.yml b/.github/workflows/labels.yml index 9aa092e..294c3b7 100644 --- a/.github/workflows/labels.yml +++ b/.github/workflows/labels.yml @@ -13,11 +13,9 @@ jobs: runs-on: ubuntu-latest steps: - - # https://github.com/actions/checkout name: Checkout uses: actions/checkout@v2 - - # https://github.com/crazy-max/ghaction-github-labeler name: Run Labeler if: success() uses: crazy-max/ghaction-github-labeler@v2 From e35df14d42fafa50a139580aa4b6cedf9cd82fbf Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Wed, 13 May 2020 13:26:22 +0200 Subject: [PATCH 132/477] Run librenms-service as librenms user (#76) --- rootfs/etc/cont-init.d/05-svc-dispatcher.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/rootfs/etc/cont-init.d/05-svc-dispatcher.sh b/rootfs/etc/cont-init.d/05-svc-dispatcher.sh index ebe8f02..e3509a9 100644 --- a/rootfs/etc/cont-init.d/05-svc-dispatcher.sh +++ b/rootfs/etc/cont-init.d/05-svc-dispatcher.sh @@ -107,6 +107,7 @@ mkdir -p /etc/services.d/dispatcher cat > /etc/services.d/dispatcher/run < Date: Wed, 13 May 2020 13:29:35 +0200 Subject: [PATCH 133/477] Mark sidecar cron container as deprectated --- rootfs/etc/cont-init.d/06-svc-cron.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rootfs/etc/cont-init.d/06-svc-cron.sh b/rootfs/etc/cont-init.d/06-svc-cron.sh index 79a0b99..2a95e1d 100644 --- a/rootfs/etc/cont-init.d/06-svc-cron.sh +++ b/rootfs/etc/cont-init.d/06-svc-cron.sh @@ -27,9 +27,9 @@ if [ "$SIDECAR_CRON" != "1" ]; then exit 0 fi -echo ">>" -echo ">> Sidecar cron container detected" -echo ">>" +echo ">>> WARNING: Sidecar cron container is deprecated and will be removed soon." +echo ">>> Please switch to the dispatcher service." +echo ">>> https://github.com/librenms/docker/blob/master/doc/notes/dispatcher-service.md" rm -rf ${CRONTAB_PATH} mkdir -m 0644 -p ${CRONTAB_PATH} From d6336d4f5ee117214d9d9019196f0785a837020b Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Wed, 13 May 2020 13:29:49 +0200 Subject: [PATCH 134/477] Update CHANGELOG --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a9e3b8..e731847 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 1.63-RC3 (2020/05/13) + +* Run librenms-service as librenms user (#76) +* Mark sidecar cron container as deprectated + ## 1.63-RC2 (2020/05/08) * Fix poller-wrapper From 86c3d3f4b224800b91988866185f104889101d8d Mon Sep 17 00:00:00 2001 From: CrazyMax