sysutils/sylve: new port: lightweight GUI for managing jails & bhyve
Sponsored by: SkunkWerks, GmbH Sponsored by: Alchemilla Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D52137
This commit is contained in:
@@ -1390,6 +1390,7 @@
|
||||
SUBDIR += swapusage
|
||||
SUBDIR += sweeper
|
||||
SUBDIR += swtpm
|
||||
SUBDIR += sylve
|
||||
SUBDIR += symlinks
|
||||
SUBDIR += symon
|
||||
SUBDIR += synergy
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
PORTNAME= sylve
|
||||
DISTVERSIONPREFIX= v
|
||||
DISTVERSION= 0.2.2
|
||||
CATEGORIES= sysutils
|
||||
MASTER_SITES+= https://github.com/AlchemillaHQ/Sylve/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/:web_assets
|
||||
DISTFILES+= sylve-web-assets.tar.gz:web_assets
|
||||
|
||||
MAINTAINER= hayzam@alchemilla.io
|
||||
COMMENT= Lightweight GUI for managing Bhyve, Jails, ZFS, networking
|
||||
WWW= https://github.com/alchemillahq/sylve
|
||||
|
||||
LICENSE= BSD2CLAUSE
|
||||
|
||||
ONLY_FOR_ARCHS= aarch64 amd64
|
||||
|
||||
RUN_DEPENDS= dnsmasq>0:dns/dnsmasq \
|
||||
qemu-img:emulators/qemu@tools \
|
||||
samba423>0:net/samba423 \
|
||||
swtpm>0:sysutils/swtpm \
|
||||
virsh:devel/libvirt
|
||||
.if ${ARCH} == amd64
|
||||
RUN_DEPENDS+= bhyve-firmware>0:sysutils/bhyve-firmware
|
||||
.elif ${ARCH} == aarch64
|
||||
RUN_DEPENDS+= u-boot-bhyve-arm64>0:sysutils/u-boot-bhyve-arm64
|
||||
.endif
|
||||
|
||||
USES= go:modules
|
||||
USE_RC_SUBR= ${PORTNAME}
|
||||
|
||||
GO_MODULE= github.com/alchemillahq/sylve
|
||||
|
||||
GO_TARGET= ./cmd/sylve
|
||||
|
||||
post-extract:
|
||||
@${MKDIR} ${WRKSRC}/internal/assets/web-files
|
||||
@${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/sylve-web-assets.tar.gz \
|
||||
-C ${WRKSRC}/internal/assets/
|
||||
|
||||
do-install:
|
||||
${MKDIR} ${STAGEDIR}${ETCDIR}
|
||||
${MKDIR} ${STAGEDIR}/var/db/sylve
|
||||
${INSTALL_PROGRAM} ${WRKDIR}/bin/${PORTNAME} \
|
||||
${STAGEDIR}${PREFIX}/sbin/${PORTNAME}
|
||||
${INSTALL_DATA} ${WRKSRC}/config.example.json ${STAGEDIR}${ETCDIR}/config.json.sample
|
||||
|
||||
.include <bsd.port.mk>
|
||||
@@ -0,0 +1,7 @@
|
||||
TIMESTAMP = 1774805985
|
||||
SHA256 (go/sysutils_sylve/sylve-v0.2.2/sylve-web-assets.tar.gz) = d8d4dc99723d9352f1af6330ac8a8eb1a8cfddbd91d8e8c0d4b11663a3be5278
|
||||
SIZE (go/sysutils_sylve/sylve-v0.2.2/sylve-web-assets.tar.gz) = 2929354
|
||||
SHA256 (go/sysutils_sylve/sylve-v0.2.2/v0.2.2.mod) = 5dfaadfaf24023652042afbc41d496ea4d4fcf4972c32b3f760c9f1f291f7587
|
||||
SIZE (go/sysutils_sylve/sylve-v0.2.2/v0.2.2.mod) = 5823
|
||||
SHA256 (go/sysutils_sylve/sylve-v0.2.2/v0.2.2.zip) = c64813343c99b41b60d68576d9559a934303d1709a49296647a5d746a1f96b40
|
||||
SIZE (go/sysutils_sylve/sylve-v0.2.2/v0.2.2.zip) = 34832987
|
||||
@@ -0,0 +1,24 @@
|
||||
[
|
||||
{ type: install
|
||||
message: <<EOM
|
||||
Sylve was installed!
|
||||
|
||||
1) The default config file is located at %%ETCDIR%%/config.json. PLEASE
|
||||
change your password in this file before starting the service for the
|
||||
first time. The default username is "admin" and the default password is
|
||||
"admin".
|
||||
|
||||
2) By default, Sylve datadir is located at %%DATADIR%% directory, this can
|
||||
be modified in %%ETCDIR%%/config.json. This directory can become quite
|
||||
large, with downloaded image files.
|
||||
|
||||
3) Enable Sylve by using the command `sysrc sylve_enable=YES` and start
|
||||
the service with `service sylve start`.
|
||||
|
||||
4) You should now be able to visit https://IP:8181 to access the web
|
||||
interface!
|
||||
|
||||
5) Enjoy!
|
||||
EOM
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,61 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# PROVIDE: sylve
|
||||
# REQUIRE: DAEMON NETWORKING
|
||||
# KEYWORD: shutdown
|
||||
#
|
||||
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to enable sylve:
|
||||
#
|
||||
# sylve_enable (bool): Set to "NO" by default.
|
||||
# Set it to "YES" to enable sylve.
|
||||
# sylve_user (user): Set to "root" by default.
|
||||
# User to run sylve as.
|
||||
# sylve_group (group): Set to "wheel" by default.
|
||||
# Group to run sylve as.
|
||||
# sylve_args (str): Set to "-config %%ETCDIR%%/config.json" by default.
|
||||
# Extra flags passed to sylve.
|
||||
|
||||
. /etc/rc.subr
|
||||
|
||||
name=sylve
|
||||
rcvar=sylve_enable
|
||||
|
||||
load_rc_config $name
|
||||
|
||||
: ${sylve_enable:="NO"}
|
||||
: ${sylve_user:="root"}
|
||||
: ${sylve_group:="wheel"}
|
||||
: ${sylve_args:="-config %%ETCDIR%%/config.json"}
|
||||
|
||||
export PATH="${PATH}:/usr/local/bin:/usr/local/sbin"
|
||||
|
||||
pidfile="/var/run/${name}.pid"
|
||||
daemon_pidfile="/var/run/${name}-daemon.pid"
|
||||
procname="%%PREFIX%%/sbin/sylve"
|
||||
command="/usr/sbin/daemon"
|
||||
command_args="-f -c -T ${name} -p ${pidfile} -P ${daemon_pidfile} ${procname} ${sylve_args}"
|
||||
|
||||
start_precmd=sylve_startprecmd
|
||||
stop_postcmd=sylve_stoppostcmd
|
||||
|
||||
sylve_startprecmd()
|
||||
{
|
||||
if [ ! -e ${daemon_pidfile} ]; then
|
||||
install -o ${sylve_user} -g ${sylve_group} /dev/null ${daemon_pidfile};
|
||||
fi
|
||||
if [ ! -e ${pidfile} ]; then
|
||||
install -o ${sylve_user} -g ${sylve_group} /dev/null ${pidfile};
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
sylve_stoppostcmd()
|
||||
{
|
||||
if [ -f "${daemon_pidfile}" ]; then
|
||||
pids=$( pgrep -F ${daemon_pidfile} 2>&1 )
|
||||
_err=$?
|
||||
[ ${_err} -eq 0 ] && kill -9 ${pids}
|
||||
fi
|
||||
}
|
||||
|
||||
run_rc_command "$1"
|
||||
@@ -0,0 +1,5 @@
|
||||
Sylve is a lightweight, open-source virtualization platform for FreeBSD,
|
||||
leveraging Bhyve for VMs and Jails for containerization, with deep ZFS
|
||||
integration. It provides a streamlined, Proxmox-like experience tailored for
|
||||
FreeBSD environments. Its backend is written in Go, and the frontend is written
|
||||
in Svelte (with Kit), integrated into a single binary for easy deployment.
|
||||
@@ -0,0 +1,3 @@
|
||||
@sample %%ETCDIR%%/config.json.sample
|
||||
sbin/sylve
|
||||
@dir(root,wheel,0700) /var/db/sylve
|
||||
Reference in New Issue
Block a user