diff --git a/sysutils/Makefile b/sysutils/Makefile index 8b580a38238594f9b159e86f9e7d3a7079ea8f39..472ee3b1a13024e09969ff16037e7207a1b05c56 100644 --- a/sysutils/Makefile +++ b/sysutils/Makefile @@ -150,6 +150,7 @@ SUBDIR += cbsd SUBDIR += cbsd-mq-api SUBDIR += cbsd-mq-router + SUBDIR += cbsd-plugin-wsqueue SUBDIR += ccd2iso SUBDIR += cciss_vol_status SUBDIR += ccze @@ -188,6 +189,7 @@ SUBDIR += clockspeed SUBDIR += clone SUBDIR += clonehdd + SUBDIR += clonos-ws SUBDIR += cloudabi-utils SUBDIR += clsync SUBDIR += cluster-glue diff --git a/sysutils/cbsd-plugin-wsqueue/Makefile b/sysutils/cbsd-plugin-wsqueue/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..e412ede5f68ad31b1db4c9856dc05ec883b83da6 --- /dev/null +++ b/sysutils/cbsd-plugin-wsqueue/Makefile @@ -0,0 +1,36 @@ +# $FreeBSD:$ + +PORTNAME= cbsd-plugin-wsqueue +PORTVERSION= 0.1 +CATEGORIES= sysutils + +MAINTAINER= loic.f@hardenedbsd.org +COMMENT= CBSD WEB UI + +LICENSE= BSD +RUN_DEPENDS= cbsd:sysutils/cbsd +USES= go + +SUB_FILES= pkg-message + +PLIST_FILES= cbsd/modules/cbsd_queue.d/cbsd-plugin-wsqueue + +USE_GITHUB= yes +GH_TAGNAME= c93543f +GH_ACCOUNT= cbsd +GH_PROJECT= cbsd-plugin-wsqueue + +GH_TUPLE= go-logfmt:logfmt:v0.3.0:go_logfmt/src/github.com/go-logfmt/logfmt \ + gorilla:websocket:v1.4.0:websocket/src/github.com/gorilla/websocket + +post-extract: + ${LN} -sf ${WRKSRC}/src ${WRKDIR} + ${LN} -sf ${WRKSRC} ${WRKDIR}/src/${PORTNAME} + +do-install: + ${MKDIR} ${STAGEDIR}${PREFIX}/cbsd + ${MKDIR} ${STAGEDIR}${PREFIX}/cbsd/modules + ${MKDIR} ${STAGEDIR}${PREFIX}/cbsd/modules/cbsd_queue.d + ${INSTALL_PROGRAM} ${WRKDIR}/bin/${PORTNAME} ${STAGEDIR}${PREFIX}/cbsd/modules/cbsd_queue.d/cbsd-plugin-wsqueue + +.include diff --git a/sysutils/cbsd-plugin-wsqueue/distinfo b/sysutils/cbsd-plugin-wsqueue/distinfo new file mode 100644 index 0000000000000000000000000000000000000000..bdc6618e0dac68952a2b6348da30c48707a5eb8a --- /dev/null +++ b/sysutils/cbsd-plugin-wsqueue/distinfo @@ -0,0 +1,7 @@ +TIMESTAMP = 1566902945 +SHA256 (cbsd-cbsd-plugin-wsqueue-0.1-c93543f_GH0.tar.gz) = 0c0f64cabc0e69f6290380f92fa45304f9b699e84b4f7563b359fe16f6ed8623 +SIZE (cbsd-cbsd-plugin-wsqueue-0.1-c93543f_GH0.tar.gz) = 701 +SHA256 (go-logfmt-logfmt-v0.3.0_GH0.tar.gz) = 74a958064177fc33cc66c60ae118f95faf9f986bcab0465c47f40d8cad978fce +SIZE (go-logfmt-logfmt-v0.3.0_GH0.tar.gz) = 11546 +SHA256 (gorilla-websocket-v1.4.0_GH0.tar.gz) = 2b5743c72bd0930c5a80e49c0138b5b7d27fa7c085efd0c86805cccfa7220c9d +SIZE (gorilla-websocket-v1.4.0_GH0.tar.gz) = 50228 diff --git a/sysutils/cbsd-plugin-wsqueue/files/pkg-message.in b/sysutils/cbsd-plugin-wsqueue/files/pkg-message.in new file mode 100644 index 0000000000000000000000000000000000000000..db79acd7fdb6565d5c65d0ae4ad9a3896aae5792 --- /dev/null +++ b/sysutils/cbsd-plugin-wsqueue/files/pkg-message.in @@ -0,0 +1,3 @@ +Post Installation: + +* Please add 'cbsd_queue.d' into ~cbsd/etc/modules.conf to enable wsqueue plugin diff --git a/sysutils/cbsd-plugin-wsqueue/pkg-descr b/sysutils/cbsd-plugin-wsqueue/pkg-descr new file mode 100644 index 0000000000000000000000000000000000000000..faee49418162c108a3f8f077643075afe7a727a5 --- /dev/null +++ b/sysutils/cbsd-plugin-wsqueue/pkg-descr @@ -0,0 +1,3 @@ +CBSD WEB UI + +WWW: https://clonos.tekroutine.com/ diff --git a/sysutils/clonos-ws/Makefile b/sysutils/clonos-ws/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..83741c7fefe233aafce0c4ad46762488ae60c3fb --- /dev/null +++ b/sysutils/clonos-ws/Makefile @@ -0,0 +1,35 @@ +PORTNAME= clonos-ws +PORTVERSION= 0.1 +CATEGORIES= sysutils + +MAINTAINER= loic.f@hardenedbsd.org +COMMENT= CBSD WEB UI + +LICENSE= BSD + +RUN_DEPENDS= cbsd:sysutils/cbsd + +USES= go + +USE_RC_SUBR= clonos-ws + +SUB_FILES= pkg-message + +PLIST_FILES= bin/clonos-ws + +USE_GITHUB= yes +GH_TAGNAME= 9df756c +GH_ACCOUNT= clonos +GH_PROJECT= clonos-ws + +GH_TUPLE= go-logfmt:logfmt:v0.5.1:go_logfmt/src/github.com/go-logfmt/logfmt \ + gorilla:websocket:v1.4.2:websocket/src/github.com/gorilla/websocket + +post-extract: + ${LN} -sf ${WRKSRC}/src ${WRKDIR} + ${LN} -sf ${WRKSRC} ${WRKDIR}/src/${PORTNAME} + +do-install: + ${INSTALL_PROGRAM} ${WRKDIR}/bin/${PORTNAME} ${STAGEDIR}${PREFIX}/bin/clonos-ws + +.include diff --git a/sysutils/clonos-ws/distinfo b/sysutils/clonos-ws/distinfo new file mode 100644 index 0000000000000000000000000000000000000000..276baa7b8268611f898ac51af67eb1e36d91e7c3 --- /dev/null +++ b/sysutils/clonos-ws/distinfo @@ -0,0 +1,7 @@ +TIMESTAMP = 1633191874 +SHA256 (clonos-clonos-ws-0.1-9df756c_GH0.tar.gz) = 9fc4f05ef5c1e7a2d04161c26df5552a057497cbf6fd8de4d23e56e8ed7299aa +SIZE (clonos-clonos-ws-0.1-9df756c_GH0.tar.gz) = 2415 +SHA256 (go-logfmt-logfmt-v0.5.1_GH0.tar.gz) = a9a93f7cbb92a53a587fda196bc040264a625e76064495e95cb3e907f9a93499 +SIZE (go-logfmt-logfmt-v0.5.1_GH0.tar.gz) = 12115 +SHA256 (gorilla-websocket-v1.4.2_GH0.tar.gz) = 91937a36bc9e0da3c895c73d4cb74b2cdb1aff54ab21b0d0724000e7b5b85b84 +SIZE (gorilla-websocket-v1.4.2_GH0.tar.gz) = 54101 diff --git a/sysutils/clonos-ws/files/clonos-ws.in b/sysutils/clonos-ws/files/clonos-ws.in new file mode 100644 index 0000000000000000000000000000000000000000..ebd86a24de893e9ca1853d56e6b8b5b0e79ae487 --- /dev/null +++ b/sysutils/clonos-ws/files/clonos-ws.in @@ -0,0 +1,64 @@ +#!/bin/sh + +# PROVIDE: clonos_ws +# REQUIRE: NETWORK +# BEFORE: DAEMON + +. /etc/rc.subr + +name="clonos_ws" +desc="websocket daemon for ClonOS" +rcvar="clonos_ws_enable" +pidfile="/var/run/${name}.pid" +daemon_pidfile="/var/run/${name}-daemon.pid" +logdir="/var/log/${name}" +logfile="${logdir}/clonos_ws.log" +command="%%PREFIX%%/bin/clonos-ws" +clonos_ws_user="www" +load_rc_config ${name} + +start_cmd="start" +stop_cmd="stop" +status_cmd="status" + +start() +{ + [ ! -d ${logdir} ] && mkdir -p ${logdir} + touch ${logfile} + chown ${clonos_ws_user} ${logdir} ${logfile} + /usr/sbin/daemon -u ${clonos_ws_user} -f -R5 -p ${pidfile} -P ${daemon_pidfile} -o ${logfile} ${command} ${clonos_ws_args} +} + +stop() +{ + if [ -f "${daemon_pidfile}" ]; then + pids=$( pgrep -F ${daemon_pidfile} 2>&1 ) + _err=$? + [ ${_err} -eq 0 ] && kill -9 ${pids} && /bin/rm -f ${daemon_pidfile} + fi + if [ -f "${pidfile}" ]; then + pids=$( pgrep -F ${pidfile} 2>&1 ) + _err=$? + [ ${_err} -eq 0 ] && kill -9 ${pids} && /bin/rm -f ${pidfile} + fi +} + +status() +{ + if [ -f "${pidfile}" ]; then + pids=$( pgrep -F ${pidfile} 2>&1 ) + _err=$? + if [ ${_err} -eq 0 ]; then + echo "${name} is running as pid ${pids}" + exit 0 + else + echo "wrong pid: ${pids}" + exit 1 + fi + else + echo "no pidfile $pidfile" + exit 1 + fi +} + +run_rc_command "$1" diff --git a/sysutils/clonos-ws/files/pkg-message.in b/sysutils/clonos-ws/files/pkg-message.in new file mode 100644 index 0000000000000000000000000000000000000000..9f417f872542c940717aac45781a63610a1530e3 --- /dev/null +++ b/sysutils/clonos-ws/files/pkg-message.in @@ -0,0 +1,4 @@ +To enable clonos-ws: + +service clonos-ws enable +service clonos-ws restart diff --git a/sysutils/clonos-ws/pkg-descr b/sysutils/clonos-ws/pkg-descr new file mode 100644 index 0000000000000000000000000000000000000000..faee49418162c108a3f8f077643075afe7a727a5 --- /dev/null +++ b/sysutils/clonos-ws/pkg-descr @@ -0,0 +1,3 @@ +CBSD WEB UI + +WWW: https://clonos.tekroutine.com/ diff --git a/www/Makefile b/www/Makefile index 7397ef4ef4ee66d2274e7fda9b3b3286a3787eeb..1bfa4ccf5ead3e8c7d33dd75d781dc6fed7fbe12 100644 --- a/www/Makefile +++ b/www/Makefile @@ -81,6 +81,7 @@ SUBDIR += cl-lml SUBDIR += cl-lml-sbcl SUBDIR += clearsilver + SUBDIR += clonos SUBDIR += closure-compiler SUBDIR += cntlm SUBDIR += codeigniter diff --git a/www/clonos/Makefile b/www/clonos/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..f2204d937b2fe0ff0044a97350f8efa406fcac06 --- /dev/null +++ b/www/clonos/Makefile @@ -0,0 +1,107 @@ +PORTNAME= clonos +PORTVERSION= 21.10 +CATEGORIES= www +GTAG= 136e0aa +DISTNAME= control-pane-${GTAG} + +MAINTAINER= loic.f@hardenedbsd.org +COMMENT= CBSD WEB UI + +LICENSE= BSD + +LIB_DEPENDS= libvncserver.so:net/libvncserver \ + libgnutls.so:security/gnutls \ + libsqlite3.so:databases/sqlite3 + +RUN_DEPENDS= bash:shells/bash \ + npm:www/npm \ + nginx:www/nginx \ + git:devel/git \ + ${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss \ + ${LOCALBASE}/cbsd/modules/cbsd_queue.d/cbsd-plugin-wsqueue:sysutils/cbsd-plugin-wsqueue \ + ${LOCALBASE}/bin/clonos-ws:sysutils/clonos-ws \ + node:www/node \ + sudo:security/sudo \ + sqlite3:databases/sqlite3 \ + beanstalkd:net/beanstalkd + +USES= php + +USE_RC_SUBR= clonos-node-ws + +USE_PHP= session zip sqlite3 pdo_sqlite opcache json + +WRKSRC= ${WRKDIR}/web +NO_BUILD= yes + +SUB_FILES= pkg-message + +USE_GITHUB= yes +GH_ACCOUNT= clonos +GH_PROJECT= control-pane +GH_TAGNAME= ${GTAG} + +do-install: + @${MKDIR} ${STAGEDIR}${WWWDIR} + @${MKDIR} ${STAGEDIR}/root/bin + @${MKDIR} ${STAGEDIR}/var/db/clonos + @${MKDIR} -p ${STAGEDIR}/usr/local/etc/nginx/streams-enabled + @${MKDIR} -p ${STAGEDIR}/usr/local/etc/nginx/sites-enabled/ + ${CP} -a ${WRKDIR}/control-pane-${GTAG}/logs ${STAGEDIR}${WWWDIR} + ${CP} -a ${WRKDIR}/control-pane-${GTAG}/node ${STAGEDIR}${WWWDIR} + ${CP} -a ${WRKDIR}/control-pane-${GTAG}/media_import ${STAGEDIR}${WWWDIR} + ${CP} -a ${WRKDIR}/control-pane-${GTAG}/php ${STAGEDIR}${WWWDIR} + ${CP} -a ${WRKDIR}/control-pane-${GTAG}/public ${STAGEDIR}${WWWDIR} + ${CHOWN} -R ${WWWOWN}:${WWWGRP} ${STAGEDIR}${WWWDIR}/public/novnc + +post-install: + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/sudoers.d + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/nginx/streams-enabled + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/nginx/conf.stream.d + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/nginx/sites-enabled + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/php-fpm.d + ${MKDIR} /var/log/nginx ${STAGEDIR}${PREFIX}/etc/nginx/streams-enabled ${STAGEDIR}${PREFIX}/etc/nginx/sites-enabled + ${INSTALL_DATA} ${WRKDIR}/control-pane-${GTAG}/examples/nginx.conf.sample \ + ${STAGEDIR}${PREFIX}/etc/nginx/nginx.conf.clonos.sample + + ${INSTALL_DATA} ${WRKDIR}/control-pane-${GTAG}/examples/10_www.sample \ + ${STAGEDIR}${PREFIX}/etc/sudoers_10_www.clonos.sample + + ${CHMOD} 0440 ${STAGEDIR}${PREFIX}/etc/sudoers_10_www.clonos.sample + + ${INSTALL_DATA} ${WRKDIR}/control-pane-${GTAG}/examples/cbsdweb.conf.sample \ + ${STAGEDIR}${PREFIX}/etc/nginx/sites-enabled/cbsdweb.conf.clonos.sample + + ${INSTALL_DATA} ${WRKDIR}/control-pane-${GTAG}/examples/php.ini.sample \ + ${STAGEDIR}${PREFIX}/etc/php.ini.clonos.sample + + ${INSTALL_DATA} ${WRKDIR}/control-pane-${GTAG}/examples/www-php-fpm.conf.sample \ + ${STAGEDIR}${PREFIX}/etc/php-fpm.d/www-php-fpm.conf.clonos.sample + + ${INSTALL_DATA} ${WRKDIR}/control-pane-${GTAG}/examples/php-fpm.conf.sample \ + ${STAGEDIR}${PREFIX}/etc/php-fpm.conf.clonos.sample + + ${INSTALL_DATA} ${WRKDIR}/control-pane-${GTAG}/examples/cbsd-modules.conf.sample \ + ${STAGEDIR}${PREFIX}/etc/cbsd-modules.conf.clonos.sample + + @${ECHO_CMD} "@owner ${WWWOWN}" >> ${TMPPLIST} + @${ECHO_CMD} "@group ${WWWGRP}" >> ${TMPPLIST} + @${FIND} -s ${STAGEDIR}${WWWDIR} -not -type d | ${SORT} | \ + ${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST} + @${ECHO} @dir ${WWWDIR} >> ${TMPPLIST} + @${ECHO} @dir /var/db/clonos >> ${TMPPLIST} + @${ECHO} @dir /usr/local/etc/nginx/streams-enabled >> ${TMPPLIST} + @${ECHO} @dir /usr/local/etc/nginx/sites-enabled >> ${TMPPLIST} + @${ECHO_CMD} "@group" >> ${TMPPLIST} + @${ECHO_CMD} "@owner" >> ${TMPPLIST} + @${ECHO_CMD} "@sample etc/nginx/nginx.conf.clonos.sample etc/nginx/nginx.conf" >> ${TMPPLIST} + @${ECHO_CMD} "@sample etc/nginx/sites-enabled/cbsdweb.conf.clonos.sample etc/nginx/sites-enabled/cbsdweb.conf" >> ${TMPPLIST} + @${ECHO_CMD} "@sample etc/sudoers_10_www.clonos.sample etc/sudoers.d/10_www" >> ${TMPPLIST} + @${ECHO_CMD} "@sample etc/php.ini.clonos.sample etc/php.ini" >> ${TMPPLIST} + @${ECHO_CMD} "@sample etc/php-fpm.conf.clonos.sample etc/php-fpm.conf" >> ${TMPPLIST} + @${ECHO_CMD} "@sample etc/cbsd-modules.conf.clonos.sample" >> ${TMPPLIST} + @${ECHO_CMD} "@sample etc/php-fpm.d/www-php-fpm.conf.clonos.sample etc/php-fpm.d/www.conf" >> ${TMPPLIST} + @${ECHO_CMD} "@dir(${WWWOWN},${WWWGRP},) ${WWWDIR}/public/novnc" >> ${TMPPLIST} + @${ECHO_CMD} "@dir(${WWWOWN},${WWWGRP},) ${WWWDIR}/public/novnc/utils" >> ${TMPPLIST} + +.include diff --git a/www/clonos/distinfo b/www/clonos/distinfo new file mode 100644 index 0000000000000000000000000000000000000000..45c444ff53c0187e0472c26a26168538403a59a3 --- /dev/null +++ b/www/clonos/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1634423260 +SHA256 (clonos-control-pane-21.10-136e0aa_GH0.tar.gz) = 092cac5acc4d76053bf5fc601395e3d487928c89c2201604121a16627a704347 +SIZE (clonos-control-pane-21.10-136e0aa_GH0.tar.gz) = 2629211 diff --git a/www/clonos/files/clonos-node-ws.in b/www/clonos/files/clonos-node-ws.in new file mode 100644 index 0000000000000000000000000000000000000000..ea1b7cbbbdffac67ffc9aecbd1b4fe890a21eb01 --- /dev/null +++ b/www/clonos/files/clonos-node-ws.in @@ -0,0 +1,123 @@ +#!/bin/sh + +# $FreeBSD: $ +# +# PROVIDE: clonos-node-ws +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: +# +# clonos_node_ws_enable (bool): Set to YES to enable the clonos_node_ws service. +# Default: NO +# clonos_node_ws_config (str): File containing clonos_node_ws configuration details. +# Default: %%PREFIX%%/etc/clonos_node_ws/clonos_node_ws.yml +# clonos_node_ws_user (str): The user account used to run the clonos_node_ws daemon. +# Do not specifically set this to an empty string as this +# will cause the daemon to run as root. +# Default: root +# clonos_node_ws_group (str): The group account used to run the clonos_node_ws daemon. +# Do not specifically set this to an empty string as this +# will cause the daemon to run with group wheel. +# Default: wheel +# clonos_node_ws_flags (str): Extra flags passed to clonos_node_ws +# Default: "" +# clonos_node_ws_facility (str): Syslog facility to use +# Default: local0 +# clonos_node_ws_priority (str): Syslog priority to use +# Default: alert + +. /etc/rc.subr +name=clonos_node_ws +rcvar=${name}_enable +load_rc_config $name + +: ${clonos_node_ws_enable:="NO"} +: ${clonos_node_ws_user:="www"} +: ${clonos_node_ws_group:="www"} +: ${clonos_node_ws_directory:="/tmp"} +: ${clonos_node_ws_flags:=""} +: ${clonos_node_ws_facility:="local0"} +: ${clonos_node_ws_priority:="alert"} + +pidfile="/var/run/clonos_node_ws/daemon.pid" +pidfile_daemon="/var/run/clonos_node_ws/daemon_command.pid" +command="/usr/sbin/daemon" +procname="%%PREFIX%%/bin/node" +command_args="-r -P ${pidfile_daemon} -p ${pidfile} -S -l ${clonos_node_ws_facility} -s ${clonos_node_ws_priority} -T ${name} ${procname} %%PREFIX%%/www/clonos/node/wsClonos.js" + +start_precmd="clonos_node_ws_precmd" +stop_cmd=${name}_stop +status_cmd="${name}_status" + +clonos_node_ws_precmd() +{ + cbsd_workdir="/usr/jails" + + if [ ! -d ${clonos_node_ws_directory} ]; then + echo "no such directory: ${clonos_node_ws_directory}" + exit 1 + fi + + cd ${clonos_node_ws_directory} + + if [ ! -d "/var/run/clonos_node_ws" ]; then + install -d -g ${clonos_node_ws_group} -o ${clonos_node_ws_user} -m 0700 -- "/var/run/clonos_node_ws" + fi + + if [ ! -e "${pidfile}" ]; then + install -g ${clonos_node_ws_group} -o ${clonos_node_ws_user} -- /dev/null "${pidfile}" + fi +} + +clonos_node_ws_status() +{ + local _err + + if [ -f "${pidfile}" ]; then + pids=$( pgrep -F ${pidfile} 2>&1 ) + _err=$? + if [ ${_err} -eq 0 ]; then + echo "${name} is running as pid ${pids}." + return 0 + else + echo "pgrep: ${pids}" + fi + else + echo "${name} is not running." + return 1 + fi +} + +clonos_node_ws_stop() +{ + if [ -f "${pidfile}" ]; then + pids=$( pgrep -F ${pidfile} 2>&1 ) + _err=$? + if [ ${_err} -eq 0 ]; then + kill -9 ${pids} && /bin/rm -f ${pidfile} + else + echo "pgrep: ${pids}" + #return ${_err} + fi + rm -f ${pidfile} + fi + + if [ -f "${pidfile_daemon}" ]; then + pids=$( pgrep -F ${pidfile_daemon} 2>&1 ) + _err=$? + if [ ${_err} -eq 0 ]; then + kill -9 ${pids} && /bin/rm -f ${pidfile_daemon} + else + echo "pgrep: ${pids}" + #return ${_err} + fi + rm -f ${pidfile_daemon} + fi + + return ${_err} + +} + +run_rc_command "$1" diff --git a/www/clonos/files/pkg-message.in b/www/clonos/files/pkg-message.in new file mode 100644 index 0000000000000000000000000000000000000000..0249044cbfbffdab39579d33d09503ad2399a903 --- /dev/null +++ b/www/clonos/files/pkg-message.in @@ -0,0 +1,213 @@ +ClonOS post installation setup: + +[*] Check for RACCT is enabled on the host, please add: + +kern.racct.enable="1" + + into /boot/loader.conf and reboot host + + +[*] Init CBSD workdir + + See https://www.bsdstore.ru/en/installing_cbsd.html#initenv for details + + +[*] Ensure CBSD is started: + +sysrc cbsdd_enable=YES +service cbsdd status || service cbsdd start + + +[*] Configure and run beanstalkd: + +sysrc beanstalkd_flags="-l 127.0.0.1 -p 11300" +sysrc beanstalkd_enable=YES +service beanstalkd restart + + +[*] Change in %%PREFIX%%/etc/php-fpm.conf events mechanism to BSD-specific. + To do this, uncomment and edit the events.mechanism parameter to: + vi %%PREFIX%%/etc/php-fpm.conf: + +.. +events.mechanism = kqueue +.. + + Or copy: cp %%PREFIX%%/etc/php-fpm.conf.clonos.sample %%PREFIX%%/etc/php-fpm.conf + + +[*] Uncomment and change in %%PREFIX%%/etc/php-fpm.d/www.conf port to Unix socket and + set's correct access permission: + +.. +listen = /tmp/php-fpm.sock +.. +listen.backlog = -1 +.. +listen.owner = www +listen.group = www +listen.mode = 0660 +.. + + Or copy: cp %%PREFIX%%/etc/php-fpm.d/www-php-fpm.conf.clonos.sample %%PREFIX%%/etc/php-fpm.d/www.conf + + +[*] Add "www" user to "cbsd" group: + +pw groupmod cbsd -M www + +[*] To execute CBSD commands, let the www user run CBSD through sudo. Please make + sure you have %%PREFIX%%/etc/sudoers.d/10_www with follow content: + +Defaults env_keep += "workdir DIALOG NOCOLOR CBSD_RNODE" +Cmnd_Alias WEB_CMD = /usr/local/bin/cbsd +www ALL=(ALL) NOPASSWD:SETENV: WEB_CMD + + And make sure the file permissions are safe: + +chown root:wheel %%PREFIX%%/etc/sudoers.d/10_www +chmod 0440 %%PREFIX%%/etc/sudoers.d/10_www + + Or copy: cp %%PREFIX%%/etc/sudoers_10_www.clonos.sample %%PREFIX%%/etc/sudoers.d/10_www + + +[*] Enable and start websocket daemon: + +service clonos-ws enable +service clonos-ws restart + + +[*] Enable and start ClonOS node daemon: + +service clonos-node-ws enable +service clonos-node-ws restart + + +[*] Change %%PREFIX%%/etc/php.ini params: + +.. +memory_limit = 256M +.. +post_max_size = 12G +.. +upload_tmp_dir = /tmp +.. +upload_max_filesize = 16G +.. +opcache.enable=1 + + Or copy: cp %%PREFIX%%/etc/php.ini.clonos.sample %%PREFIX%%/etc/php.ini + + +[*] Configure NGINX. Make sure/merge this settings into + %%PREFIX%%/etc/nginx/nginx.conf: + +user www; +load_module %%PREFIX%%/libexec/nginx/ngx_stream_module.so; +events { + use kqueue; +} +http { + include %%PREFIX%%/etc/nginx/mime.types; + default_type application/octet-stream; + client_max_body_size 1m; + include %%PREFIX%%/etc/nginx/sites-enabled/*.conf; +} +stream { + include %%PREFIX%%/etc/nginx/conf.stream.d/*.conf; + include %%PREFIX%%/etc/nginx/streams-enabled/*; +} + + Or copy: cp %%PREFIX%%/etc/nginx/nginx.conf.clonos.sample %%PREFIX%%/etc/nginx/nginx.conf + + +[*] Make sure %%PREFIX%%/etc/nginx/sites-enabled/cbsdweb.conf + have correct path to CBSD workdir. Please check that line "fastcgi_param WORKDIR.." + in %%PREFIX%%/etc/nginx/sites-enabled/cbsdweb.conf pointed to ~cbsd path: + + fastcgi_param WORKDIR /usr/jails; + ^^^^^^^^^^ + +[*] Enable nginx, php-fpm and clonos_vnc2wss to run at system startup: + +sysrc nginx_enable="YES" +sysrc php_fpm_enable="YES" +sysrc supervisord_enable="YES" +sysrc clonos_vnc2wss_enable="YES" + + +[*] Start nginx and php-fpm: + +service nginx restart +service php-fpm restart + + +[*] Configure CBSD: + + 1) Install and compile vncterm module: + +cbsd module mode=install vncterm +make -C /usr/local/cbsd/modules/vncterm.d + + 2) Install additional ConvectIX scripts module + +cbsd module mode=install convectix + + 3) Install Puppet module + +cbsd module mode=install puppet + + 4) Install ClonOS database module + +cbsd module mode=install clonos-database + + 5) Copy queue config file: + +cp -a /usr/local/cbsd/modules/cbsd_queue.d/etc-sample/cbsd_queue.conf ~cbsd/etc/ + + 6) Add additional module name into ~cbsd/etc/modules, + e.g. complete ~cbsd/etc/modules.conf must have: + +pkg.d +bsdconf.d +zfsinstall.d +puppet.d +convectix.d +cbsd_queue.d +vncterm.d + + Or copy: cp %%PREFIX%%/etc/cbsd-modules.conf.clonos.sample ~cbsd/etc/modules.conf + + 7) Re-run CBSD initenv to init modules: + +cbsd initenv + + 8) Init web user database: + +sh %%PREFIX%%/cbsd/modules/clonos_database/initforms.sh + + 9) Configure and run CBSD RACCT stats daemon: + +sysrc cbsd_statsd_hoster_enable=YES +sysrc cbsd_statsd_jail_enable=YES +sysrc cbsd_statsd_bhyve_enable=YES +service cbsd-statsd-hoster restart +service cbsd-statsd-jail restart +service cbsd-statsd-bhyve restart + + 10) Install/upgrade noVNC via npm: + +cd /usr/local/www/clonos/public/novnc +npm install . + + 11) Create symlink from python3 to valid python bin: + +ln -sf /usr/local/bin/python3.8 /usr/local/bin/python3 + + +[*] Open the ClonOS UI in your web browser. + + Default login: 'admin', default password: 'admin' + + +[*] Enjoy the ClonOS ! diff --git a/www/clonos/pkg-descr b/www/clonos/pkg-descr new file mode 100644 index 0000000000000000000000000000000000000000..cab0f408140c451c699045d176099c772211daff --- /dev/null +++ b/www/clonos/pkg-descr @@ -0,0 +1,3 @@ +CBSD WEB UI + +WWW: https://clonos.convectix.com/