4 Commits

Author SHA1 Message Date
unkinben ffd5ae4065 feat: add metadata.yaml files for all packages
Add simplified metadata structure for all 41 packages containing:
- Package name, version, and release number
- GitHub repository for packages with GitHub releases
- Build configuration for el/8 and el/9 distributions

This metadata enables future automation for version checking and package building across different distributions.
2025-09-29 22:11:03 +10:00
unkinben 99ee31e6ab refactor: replace all wget commands with curl
Standardize download commands across all build scripts:
- HashiCorp packages: wget -O → curl -o
- VictoriaMetrics packages: wget -O → curl -o
- Other packages: wget -O → curl -o, wget → curl -O
- Update dependency lists to use curl instead of wget

This change provides consistency across all packages and uses a single download tool.
2025-09-29 21:59:01 +10:00
unkinben 80aaa8d93d refactor: move download logic from Dockerfiles to build.sh scripts
Move complex download commands from Dockerfiles to build.sh scripts for consistency:
- pgbouncer_exporter, bind_exporter, exportarr, node_exporter, postgres_exporter: GitHub downloads
- vmagent, vmalert: VictoriaMetrics vmutils downloads
- vminsert, vmselect, vmstorage: VictoriaMetrics cluster downloads

All Dockerfiles now follow the simple template pattern with download logic properly contained in build scripts.
2025-09-29 21:53:08 +10:00
unkinben 5f791e2cf7 refactor: standardize Dockerfile and build script structure
Standardize all RPM packages to use a consistent build pattern:
- Simple Dockerfiles that copy resources/ and call build.sh
- Move all build logic to resources/build.sh scripts
- Consolidate nfpm.yaml and scripts into resources/ directory
- Update base image to almalinux9-rpmbuilder for consistency

Changes:
- Refactored 37 packages total (simple + complex)
- HashiCorp tools: consul, vault, terraform, terragrunt, packer, nomad, nomad-autoscaler
- Development tools: g10k, etcd, nfpm, ruff, uv, unrar, nzbget, boilerplate
- VictoriaMetrics: vlutils, vmutils, victoria-logs
- Network tools: cni-plugins, consul-cni, unkin-ca-certificates
- Jellyfin suite: jellyfin-web, jellyfin-server, jellyfin-ffmpeg-bin
- System packages: puppet-initial, incus

This standardization improves maintainability and consistency across
the entire RPM build system while preserving all existing functionality.
2025-09-28 22:17:46 +10:00
146 changed files with 832 additions and 2450 deletions
+13
View File
@@ -0,0 +1,13 @@
{
"permissions": {
"allow": [
"Bash(chmod:*)",
"Bash(mkdir:*)",
"Bash(mv:*)",
"Bash(find:*)",
"Bash(git checkout:*)"
],
"deny": [],
"ask": []
}
}
+4 -8
View File
@@ -10,17 +10,15 @@ jobs:
runs-on: almalinux-8
container:
image: git.unkin.net/unkin/almalinux8-actionsdind:latest
options: "--privileged --volume /etc/pki/tls/vault:/etc/pki/tls/vault:ro"
options: --privileged
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Build Packages
env:
VAULT_ROLE_ID: ${{ secrets.RPMBUILDER_VAULT_ROLEID }}
run: |
make all DISTRO=el/8
make all
- name: Show RPMs
run: |
@@ -36,17 +34,15 @@ jobs:
runs-on: almalinux-8
container:
image: git.unkin.net/unkin/almalinux9-actionsdind:latest
options: "--privileged --volume /etc/pki/tls/vault:/etc/pki/tls/vault:ro"
options: --privileged
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Build Packages
env:
VAULT_ROLE_ID: ${{ secrets.RPMBUILDER_VAULT_ROLEID }}
run: |
make all DISTRO=el/9
make all
- name: Show RPMs
run: |
-2
View File
@@ -1,3 +1 @@
dist
env
.claude
+39 -66
View File
@@ -1,85 +1,58 @@
# Variables
ROOT_DIR := $(PWD)
BUILD_TOOL := $(ROOT_DIR)/tools/build
DISTRO ?= el/9 # Default to el/9 if not specified
RPMS_DIR := $(ROOT_DIR)/rpms
REPO_OPTIONS := --disablerepo=* --enablerepo=unkin
# Automatically find all packages with metadata.yaml
PACKAGES := $(shell find $(ROOT_DIR)/rpms -mindepth 1 -maxdepth 1 -type d -exec test -f {}/metadata.yaml \; -print | xargs -n1 basename | sort)
# Automatically find all package/version directories
PACKAGES := $(shell find $(RPMS_DIR) -mindepth 2 -maxdepth 2 -type d | sed "s|$(RPMS_DIR)/||" | grep -Ev '(scripts|/resources)')
# Default target to build all packages
.PHONY: all list build clean
all: build-all
# Default target to build all packages and versions
.PHONY: all list cache build clean
all: cache $(PACKAGES)
# List all available packages
list:
@echo "Available packages:"
@echo "Builds:"
@for package in $(PACKAGES); do \
echo " $$package"; \
echo " '$$package'"; \
done
# Build all packages using Python tool
build-all:
@echo "Building all packages using Python tooling for distro $(DISTRO)..."
$(BUILD_TOOL) --all --distro $(DISTRO)
cache:
echo "Refreshing DNF cache..." && \
dnf clean all && \
dnf makecache
# Build specific package using Python tool
# Build specific package/version
.PHONY: $(PACKAGES)
$(PACKAGES):
@echo "Building package: $@ for distro $(DISTRO)"
$(BUILD_TOOL) --package $@ --distro $(DISTRO)
@PACKAGE_NAME=$(shell echo $(@) | cut -d/ -f1) && \
PACKAGE_VERSION=$(shell echo $(@) | cut -d/ -f2) && \
echo "Starting build $$PACKAGE_NAME/$$PACKAGE_VERSION" && \
$(MAKE) build PACKAGE_NAME=$$PACKAGE_NAME PACKAGE_VERSION=$$PACKAGE_VERSION
# Build specific package with version/release override
# Build target
build:
@if [ -z "$(PACKAGE_NAME)" ]; then \
echo "Error: PACKAGE_NAME not specified"; \
echo "Usage: make build PACKAGE_NAME=package [PACKAGE_VERSION=version] [PACKAGE_RELEASE=release]"; \
exit 1; \
fi
@if [ -n "$(PACKAGE_VERSION)" ] && [ -n "$(PACKAGE_RELEASE)" ]; then \
echo "Building $(PACKAGE_NAME) with explicit version $(PACKAGE_VERSION)-$(PACKAGE_RELEASE) for distro $(DISTRO)"; \
$(BUILD_TOOL) --package $(PACKAGE_NAME) --version $(PACKAGE_VERSION) --release $(PACKAGE_RELEASE) --distro $(DISTRO); \
else \
echo "Building $(PACKAGE_NAME) using metadata.yaml for distro $(DISTRO)"; \
$(BUILD_TOOL) --package $(PACKAGE_NAME) --distro $(DISTRO); \
fi
# Dry run - show what would be built without building
dry-run:
@echo "Dry run - showing what would be built for distro $(DISTRO):"
$(BUILD_TOOL) --all --distro $(DISTRO) --dry-run
@mkdir -p $(ROOT_DIR)/dist/$(PACKAGE_NAME)/
@cd $(RPMS_DIR)/$(PACKAGE_NAME) && \
export PACKAGE_RELEASE=$$(cat $(PACKAGE_VERSION)/release) && \
export PACKAGE_FULL_NAME=$(PACKAGE_NAME)-$(PACKAGE_VERSION)-$$PACKAGE_RELEASE && \
echo "Checking repos for $$PACKAGE_FULL_NAME" && \
if dnf info $$PACKAGE_FULL_NAME $(REPO_OPTIONS) > /dev/null 2>&1; then \
echo "Skipping build for $(PACKAGE_NAME) version $(PACKAGE_VERSION) (already exists in the repository)"; \
else \
echo "Building RPM for $(PACKAGE_NAME) version $(PACKAGE_VERSION)"; \
docker build \
--build-arg PACKAGE_VERSION=$(PACKAGE_VERSION) \
--build-arg PACKAGE_RELEASE=$${PACKAGE_RELEASE} \
-t $$(echo $(PACKAGE_NAME)-builder \
| tr '[:upper:]' '[:lower:]') . && \
docker create --name $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder \
$$(echo $(PACKAGE_NAME)-builder | tr '[:upper:]' '[:lower:]') && \
docker start -a $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder && \
docker cp $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder:/app/dist/. $(ROOT_DIR)/dist/$(PACKAGE_NAME)/ && \
docker rm $(PACKAGE_NAME)-$(PACKAGE_VERSION)-builder; \
fi
# Clean target
clean:
@echo "Cleaning build artifacts..."
rm -rf $(ROOT_DIR)/dist
# Update packages from GitHub releases
update:
@echo "Checking for package updates from GitHub releases..."
$(ROOT_DIR)/tools/update-gh --all
# Update specific package from GitHub
update-%:
@echo "Checking for updates for package: $*"
$(ROOT_DIR)/tools/update-gh --package $*
# Help target
help:
@echo "Available targets:"
@echo " all - Build all packages (default)"
@echo " list - List all available packages"
@echo " build-all - Build all packages using Python tooling"
@echo " <package> - Build specific package (e.g., 'make consul')"
@echo " build - Build with explicit PACKAGE_NAME, PACKAGE_VERSION, PACKAGE_RELEASE"
@echo " dry-run - Show what would be built without building"
@echo " clean - Remove build artifacts"
@echo " update - Check all packages for GitHub release updates"
@echo " update-<pkg> - Check specific package for GitHub release updates"
@echo " help - Show this help message"
@echo ""
@echo "Examples:"
@echo " make consul # Build consul using metadata.yaml"
@echo " make build PACKAGE_NAME=consul # Build consul using metadata.yaml"
@echo " make build PACKAGE_NAME=consul PACKAGE_VERSION=1.21.1 PACKAGE_RELEASE=1"
@echo " make update-consul # Check consul for GitHub updates"
@echo " make dry-run # Show what would be built"
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+1 -2
View File
@@ -1,5 +1,4 @@
ARG BASE_IMAGE=git.unkin.net/unkin/almalinux9-rpmbuilder:latest
FROM ${BASE_IMAGE}
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1 -1
View File
@@ -131,7 +131,7 @@ contents:
# Scripts to run during installation/removal (optional)
scripts:
preinstall: /app/resources/scripts/preinstall.sh
preinstall: ./scripts/preinstall.sh
# postinstall: ./scripts/postinstall.sh
# preremove: ./scripts/preremove.sh
# postremove: ./scripts/postremove.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1 -1
View File
@@ -28,7 +28,7 @@ contents:
# Scripts to run during installation/removal (optional)
scripts:
preinstall: /app/resources/scripts/preinstall.sh
preinstall: ./scripts/preinstall.sh
# postinstall: ./scripts/postinstall.sh
# preremove: ./scripts/preremove.sh
# postremove: ./scripts/postremove.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
2
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
-9
View File
@@ -1,9 +0,0 @@
name: helmfile
release: 1
version: 1.1.7
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: helmfile/helmfile
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/bash
# Download the required files
curl -L -o /app/helmfile.tar.gz https://github.com/helmfile/helmfile/releases/download/v${PACKAGE_VERSION}/helmfile_${PACKAGE_VERSION}_linux_amd64.tar.gz
# Extract the binary
cd /app
tar -xzf helmfile.tar.gz
# Make the binary executable
chmod +x /app/helmfile
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-38
View File
@@ -1,38 +0,0 @@
# nfpm.yaml
name: helmfile
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "A declarative spec for deploying Helm charts. It lets you keep a directory of chart value files and maintain changes in version control; apply CI/CD to configuration changes; and periodically sync to avoid skew in environments."
maintainer: Helmfile Contributors
homepage: https://github.com/helmfile/helmfile
license: MIT
disable_globbing: false
replaces:
- helmfile
provides:
- helmfile
# Files to include in the package
contents:
- src: /app/helmfile
dst: /usr/bin/helmfile
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal (optional)
# scripts:
# preinstall: ./scripts/preinstall.sh
# postinstall: ./scripts/postinstall.sh
# preremove: ./scripts/preremove.sh
# postremove: ./scripts/postremove.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
3
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
@@ -1,9 +0,0 @@
name: jsonnet-language-server
release: 1
version: 0.16.0
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: grafana/jsonnet-language-server
@@ -1,10 +0,0 @@
#!/usr/bin/bash
# Download the required files
curl -L -o /app/jsonnet-language-server https://github.com/grafana/jsonnet-language-server/releases/download/v${PACKAGE_VERSION}/jsonnet-language-server_${PACKAGE_VERSION}_linux_amd64
# Make the binary executable
chmod +x /app/jsonnet-language-server
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
@@ -1,38 +0,0 @@
# nfpm.yaml
name: jsonnet-language-server
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Jsonnet Language Server Protocol implementation for the Jsonnet templating language."
maintainer: Grafana Labs
homepage: https://github.com/grafana/jsonnet-language-server
license: Apache-2.0
disable_globbing: false
replaces:
- jsonnet-language-server
provides:
- jsonnet-language-server
# Files to include in the package
contents:
- src: /app/jsonnet-language-server
dst: /usr/bin/jsonnet-language-server
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal (optional)
# scripts:
# preinstall: ./scripts/preinstall.sh
# postinstall: ./scripts/postinstall.sh
# preremove: ./scripts/preremove.sh
# postremove: ./scripts/postremove.sh
-9
View File
@@ -1,9 +0,0 @@
name: jsonnet-lint
release: 1
version: 0.21.0
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: google/go-jsonnet
-19
View File
@@ -1,19 +0,0 @@
#!/usr/bin/bash
# Install dependencies and Go 1.24
dnf install -y wget git make
# Download and install Go 1.24.7
wget https://go.dev/dl/go1.24.7.linux-amd64.tar.gz
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.24.7.linux-amd64.tar.gz
export PATH=/usr/local/go/bin:$PATH
# Verify Go installation
go version
# Build jsonnet-lint binary
GOBIN=/app go install github.com/google/go-jsonnet/cmd/jsonnet-lint@v${PACKAGE_VERSION}
# Build RPM package
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-30
View File
@@ -1,30 +0,0 @@
# nfpm.yaml
name: jsonnet-lint
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Linter for Jsonnet"
maintainer: Google
homepage: https://github.com/google/go-jsonnet
license: Apache-2.0
disable_globbing: false
replaces:
- jsonnet-lint
provides:
- jsonnet-lint
# Files to include in the package
contents:
- src: /app/jsonnet-lint
dst: /usr/bin/jsonnet-lint
file_info:
mode: 0755
owner: root
group: root
-9
View File
@@ -1,9 +0,0 @@
name: jsonnet
release: 1
version: 0.21.0
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
github: google/go-jsonnet
-20
View File
@@ -1,20 +0,0 @@
#!/usr/bin/bash
# Install dependencies and Go 1.24
dnf install -y wget git make
# Download and install Go 1.24.7
wget https://go.dev/dl/go1.24.7.linux-amd64.tar.gz
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.24.7.linux-amd64.tar.gz
export PATH=/usr/local/go/bin:$PATH
# Verify Go installation
go version
# Build jsonnet binaries
GOBIN=/app go install github.com/google/go-jsonnet/cmd/jsonnet@v${PACKAGE_VERSION}
GOBIN=/app go install github.com/google/go-jsonnet/cmd/jsonnetfmt@v${PACKAGE_VERSION}
# Build RPM package
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-36
View File
@@ -1,36 +0,0 @@
# nfpm.yaml
name: jsonnet
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "A data templating language"
maintainer: Google
homepage: https://github.com/google/go-jsonnet
license: Apache-2.0
disable_globbing: false
replaces:
- jsonnet
provides:
- jsonnet
# Files to include in the package
contents:
- src: /app/jsonnet
dst: /usr/bin/jsonnet
file_info:
mode: 0755
owner: root
group: root
- src: /app/jsonnetfmt
dst: /usr/bin/jsonnetfmt
file_info:
mode: 0755
owner: root
group: root
-9
View File
@@ -1,9 +0,0 @@
name: libfoundationdb
release: 1
version: 7.3.71
github: apple/foundationdb
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
-10
View File
@@ -1,10 +0,0 @@
#!/usr/bin/bash
# Download the required library
curl -L -o /app/libfdb_c.so https://github.com/apple/foundationdb/releases/download/${PACKAGE_VERSION}/libfdb_c.x86_64.so
# Make the library readable
chmod 755 /app/libfdb_c.so
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-36
View File
@@ -1,36 +0,0 @@
# nfpm.yaml
name: libfoundationdb
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "FoundationDB client library - Shared library for FoundationDB applications"
maintainer: FoundationDB Community
homepage: https://github.com/apple/foundationdb
license: Apache-2.0
disable_globbing: false
replaces:
- libfoundationdb
provides:
- libfoundationdb
- libfdb_c.so()(64bit)
# Files to include in the package
contents:
- src: /app/libfdb_c.so
dst: /usr/lib64/libfdb_c.so
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal
scripts:
postinstall: /app/resources/scripts/postinstall.sh
@@ -1,4 +0,0 @@
#!/usr/bin/env bash
# Update the dynamic linker cache to include the new library
ldconfig
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+19
View File
@@ -0,0 +1,19 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
@@ -1,9 +0,0 @@
name: openbao-plugin-secret-consul
release: 1
version: 0.1.0
github: openbao/openbao-plugins
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
@@ -1,16 +0,0 @@
#!/usr/bin/bash
# Download the required files
curl -L -o /app/openbao-plugin-secrets-consul.tar.gz https://github.com/openbao/openbao-plugins/releases/download/secrets-consul-v${PACKAGE_VERSION}/openbao-plugin-secrets-consul_linux_amd64_v1.tar.gz
# Extract the binary
tar -xzf /app/openbao-plugin-secrets-consul.tar.gz -C /app
# Rename the binary to a simpler name
mv /app/openbao-plugin-secrets-consul_linux_amd64_v1 /app/openbao-plugin-secrets-consul
# Make the binary executable
chmod +x /app/openbao-plugin-secrets-consul
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
@@ -1,35 +0,0 @@
# nfpm.yaml
name: openbao-plugin-secret-consul
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "OpenBao secrets engine plugin for HashiCorp Consul"
maintainer: OpenBao Community
homepage: https://github.com/openbao/openbao-plugins
license: MPL-2.0
disable_globbing: false
replaces:
- openbao-plugin-secret-consul
provides:
- openbao-plugin-secret-consul
# Files to include in the package
contents:
- src: /app/openbao-plugin-secrets-consul
dst: /opt/openbao-plugins/openbao-plugin-secrets-consul
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal
scripts:
preinstall: /app/resources/scripts/preinstall.sh
@@ -1,2 +0,0 @@
#!/usr/bin/env bash
mkdir -p /opt/openbao-plugins
@@ -1,9 +0,0 @@
name: openbao-plugin-secret-nomad
release: 1
version: 0.1.4
github: openbao/openbao-plugins
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
@@ -1,16 +0,0 @@
#!/usr/bin/bash
# Download the required files
curl -L -o /app/openbao-plugin-secrets-nomad.tar.gz https://github.com/openbao/openbao-plugins/releases/download/secrets-nomad-v${PACKAGE_VERSION}/openbao-plugin-secrets-nomad_linux_amd64_v1.tar.gz
# Extract the binary
tar -xzf /app/openbao-plugin-secrets-nomad.tar.gz -C /app
# Rename the binary to a simpler name
mv /app/openbao-plugin-secrets-nomad_linux_amd64_v1 /app/openbao-plugin-secrets-nomad
# Make the binary executable
chmod +x /app/openbao-plugin-secrets-nomad
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
@@ -1,35 +0,0 @@
# nfpm.yaml
name: openbao-plugin-secret-nomad
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "OpenBao secrets engine plugin for HashiCorp Nomad"
maintainer: OpenBao Community
homepage: https://github.com/openbao/openbao-plugins
license: MPL-2.0
disable_globbing: false
replaces:
- openbao-plugin-secret-nomad
provides:
- openbao-plugin-secret-nomad
# Files to include in the package
contents:
- src: /app/openbao-plugin-secrets-nomad
dst: /opt/openbao-plugins/openbao-plugin-secrets-nomad
file_info:
mode: 0755
owner: root
group: root
# Scripts to run during installation/removal
scripts:
preinstall: /app/resources/scripts/preinstall.sh
@@ -1,2 +0,0 @@
#!/usr/bin/env bash
mkdir -p /opt/openbao-plugins
-9
View File
@@ -1,9 +0,0 @@
name: openbao-plugins
release: 1
version: 1.0.0
github: openbao/openbao-plugins
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
-5
View File
@@ -1,5 +0,0 @@
#!/usr/bin/bash
# This is a meta package - no binaries to download
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-30
View File
@@ -1,30 +0,0 @@
# nfpm.yaml
name: openbao-plugins
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Meta package that installs all OpenBao plugins"
maintainer: OpenBao Community
homepage: https://github.com/openbao/openbao-plugins
license: MPL-2.0
disable_globbing: false
replaces:
- openbao-plugins
provides:
- openbao-plugins
# Dependencies - this meta package pulls in all plugin packages
depends:
- openbao-plugin-secret-consul
- openbao-plugin-secret-nomad
# No actual files in this meta package
contents: []
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+19
View File
@@ -0,0 +1,19 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
1
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy nfpm.yaml from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
+1
View File
@@ -0,0 +1 @@
6
+18
View File
@@ -0,0 +1,18 @@
FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest
# Create output directory for RPMs
RUN mkdir -p /app/dist
# Set working directory
WORKDIR /app
ARG PACKAGE_RELEASE
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
ARG PACKAGE_VERSION
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
# Copy resources from the context into the container
COPY resources /app/resources
# Default command to build RPMs
CMD /app/resources/build.sh
-9
View File
@@ -1,9 +0,0 @@
name: stalwart-cli
release: 1
version: 0.13.4
github: stalwartlabs/stalwart
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
-13
View File
@@ -1,13 +0,0 @@
#!/usr/bin/bash
# Download the required files
curl -L -o /app/stalwart-cli.tar.gz https://github.com/stalwartlabs/stalwart/releases/download/v${PACKAGE_VERSION}/stalwart-cli-x86_64-unknown-linux-gnu.tar.gz
# Extract the binary
tar -xzf /app/stalwart-cli.tar.gz -C /app
# Make the binary executable
chmod +x /app/stalwart-cli
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-31
View File
@@ -1,31 +0,0 @@
# nfpm.yaml
name: stalwart-cli
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Stalwart CLI - Command line interface for Stalwart Mail Server"
maintainer: Stalwart Labs
homepage: https://stalw.art
license: AGPL-3.0
disable_globbing: false
replaces:
- stalwart-cli
provides:
- stalwart-cli
# Files to include in the package
contents:
- src: /app/stalwart-cli
dst: /usr/bin/stalwart-cli
file_info:
mode: 0755
owner: root
group: root
-9
View File
@@ -1,9 +0,0 @@
name: stalwart-foundationdb
release: 1
version: 0.13.4
github: stalwartlabs/stalwart
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
@@ -1,13 +0,0 @@
#!/usr/bin/bash
# Download the required files
curl -L -o /app/stalwart-foundationdb.tar.gz https://github.com/stalwartlabs/stalwart/releases/download/v${PACKAGE_VERSION}/stalwart-foundationdb-x86_64-unknown-linux-gnu.tar.gz
# Extract the binary
tar -xzf /app/stalwart-foundationdb.tar.gz -C /app
# Make the binary executable
chmod +x /app/stalwart-foundationdb
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
@@ -1,50 +0,0 @@
# nfpm.yaml
name: stalwart-foundationdb
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Stalwart Mail Server with FoundationDB support - A modern, secure JMAP, IMAP and SMTP mail server"
maintainer: Stalwart Labs
homepage: https://stalw.art
license: AGPL-3.0
disable_globbing: false
replaces:
- stalwart-foundationdb
provides:
- stalwart-foundationdb
conflicts:
- stalwart
depends:
- libfoundationdb
# Files to include in the package
contents:
- src: /app/stalwart-foundationdb
dst: /opt/stalwart/bin/stalwart-foundationdb
file_info:
mode: 0755
owner: stalwart
group: stalwart
- src: /app/resources/stalwart-foundationdb.service
dst: /usr/lib/systemd/system/stalwart-foundationdb.service
file_info:
mode: 0644
owner: root
group: root
# Scripts to run during installation/removal
scripts:
preinstall: /app/resources/scripts/preinstall.sh
postinstall: /app/resources/scripts/postinstall.sh
preremove: /app/resources/scripts/preremove.sh
postremove: /app/resources/scripts/postremove.sh
@@ -1,58 +0,0 @@
#!/usr/bin/env bash
# Create default configuration if it doesn't exist
if [ ! -f /opt/stalwart/etc/config.toml ]; then
cat > /opt/stalwart/etc/config.toml << 'EOF'
# Stalwart Mail Server Configuration with FoundationDB
# This is a minimal configuration file. Please customize according to your needs.
# Full documentation: https://stalw.art/docs/
[server]
hostname = "localhost"
[server.listener.smtp]
bind = ["127.0.0.1:25"]
protocol = "smtp"
[server.listener.submission]
bind = ["127.0.0.1:587"]
protocol = "smtp"
[server.listener.imap]
bind = ["127.0.0.1:143"]
protocol = "imap"
[server.listener.http]
bind = ["[::]:8080"]
protocol = "http"
[storage]
data = "foundationdb"
fts = "foundationdb"
blob = "fs"
lookup = "foundationdb"
directory = "internal"
[store."foundationdb"]
type = "foundationdb"
cluster = "/etc/foundationdb/fdb.cluster"
[store."fs"]
type = "fs"
path = "/var/lib/stalwart/blobs"
[directory."internal"]
type = "internal"
store = "foundationdb"
[authentication.fallback-admin]
user = "admin"
secret = "$6$PAEtTGE/jbt9B/FQ$lYXn/whSh7rzegMdA6W8vuw2E/3IDFjpb0edXRqrl1d8i2KQF6Qm.ESmZ3j5jIHCTPSIH3JYBvIgvIbk9sH3p1"
EOF
chown stalwart:stalwart /opt/stalwart/etc/config.toml
chmod 600 /opt/stalwart/etc/config.toml
fi
# Reload systemd
systemctl daemon-reload
@@ -1,7 +0,0 @@
#!/usr/bin/env bash
# Reload systemd after service file removal
systemctl daemon-reload
# Note: We don't remove user data, logs, or configuration files
# to preserve user data in case of reinstallation
@@ -1,20 +0,0 @@
#!/usr/bin/env bash
# Create stalwart user and group
if ! getent group stalwart >/dev/null; then
groupadd -r stalwart
fi
if ! getent passwd stalwart >/dev/null; then
useradd -r -g stalwart -d /opt/stalwart -s /sbin/nologin -c "Stalwart Mail Server" stalwart
fi
# Create required directories
mkdir -p /opt/stalwart/{bin,etc,data,logs}
mkdir -p /var/lib/stalwart
mkdir -p /var/log/stalwart
# Set ownership
chown -R stalwart:stalwart /opt/stalwart
chown -R stalwart:stalwart /var/lib/stalwart
chown -R stalwart:stalwart /var/log/stalwart
@@ -1,7 +0,0 @@
#!/usr/bin/env bash
# Stop and disable the service if it's running
if systemctl is-enabled stalwart-foundationdb.service >/dev/null 2>&1; then
systemctl stop stalwart-foundationdb.service
systemctl disable stalwart-foundationdb.service
fi
@@ -1,26 +0,0 @@
[Unit]
Description=Stalwart Mail Server with FoundationDB
After=network.target foundationdb.service
Requires=foundationdb.service
[Service]
Type=simple
User=stalwart
Group=stalwart
ExecStart=/opt/stalwart/bin/stalwart-foundationdb --config=/opt/stalwart/etc/config.toml
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=stalwart-foundationdb
# Security settings
NoNewPrivileges=true
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=strict
ReadWritePaths=/var/lib/stalwart /var/log/stalwart /opt/stalwart/data
[Install]
WantedBy=multi-user.target
-9
View File
@@ -1,9 +0,0 @@
name: stalwart
release: 1
version: 0.13.4
github: stalwartlabs/stalwart
build:
- distro: el/8
image: git.unkin.net/unkin/almalinux8-rpmbuilder:latest
- distro: el/9
image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest
-13
View File
@@ -1,13 +0,0 @@
#!/usr/bin/bash
# Download the required files
curl -L -o /app/stalwart.tar.gz https://github.com/stalwartlabs/stalwart/releases/download/v${PACKAGE_VERSION}/stalwart-x86_64-unknown-linux-gnu.tar.gz
# Extract the binary
tar -xzf /app/stalwart.tar.gz -C /app
# Make the binary executable
chmod +x /app/stalwart
# Build the RPM
nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm
-47
View File
@@ -1,47 +0,0 @@
# nfpm.yaml
name: stalwart
version: ${PACKAGE_VERSION}
release: ${PACKAGE_RELEASE}
arch: amd64
platform: linux
section: default
priority: extra
description: "Stalwart Mail Server - A modern, secure JMAP, IMAP and SMTP mail server"
maintainer: Stalwart Labs
homepage: https://stalw.art
license: AGPL-3.0
disable_globbing: false
replaces:
- stalwart
provides:
- stalwart
conflicts:
- stalwart-foundationdb
# Files to include in the package
contents:
- src: /app/stalwart
dst: /opt/stalwart/bin/stalwart
file_info:
mode: 0755
owner: stalwart
group: stalwart
- src: /app/resources/stalwart.service
dst: /usr/lib/systemd/system/stalwart.service
file_info:
mode: 0644
owner: root
group: root
# Scripts to run during installation/removal
scripts:
preinstall: /app/resources/scripts/preinstall.sh
postinstall: /app/resources/scripts/postinstall.sh
preremove: /app/resources/scripts/preremove.sh
postremove: /app/resources/scripts/postremove.sh
@@ -1,58 +0,0 @@
#!/usr/bin/env bash
# Create default configuration if it doesn't exist
if [ ! -f /opt/stalwart/etc/config.toml ]; then
cat > /opt/stalwart/etc/config.toml << 'EOF'
# Stalwart Mail Server Configuration
# This is a minimal configuration file. Please customize according to your needs.
# Full documentation: https://stalw.art/docs/
[server]
hostname = "localhost"
[server.listener.smtp]
bind = ["127.0.0.1:25"]
protocol = "smtp"
[server.listener.submission]
bind = ["127.0.0.1:587"]
protocol = "smtp"
[server.listener.imap]
bind = ["127.0.0.1:143"]
protocol = "imap"
[server.listener.http]
bind = ["[::]:8080"]
protocol = "http"
[storage]
data = "sqlite"
fts = "sqlite"
blob = "fs"
lookup = "sqlite"
directory = "internal"
[store."sqlite"]
type = "sqlite"
path = "/var/lib/stalwart/stalwart.db"
[store."fs"]
type = "fs"
path = "/var/lib/stalwart/blobs"
[directory."internal"]
type = "internal"
store = "sqlite"
[authentication.fallback-admin]
user = "admin"
secret = "$6$PAEtTGE/jbt9B/FQ$lYXn/whSh7rzegMdA6W8vuw2E/3IDFjpb0edXRqrl1d8i2KQF6Qm.ESmZ3j5jIHCTPSIH3JYBvIgvIbk9sH3p1"
EOF
chown stalwart:stalwart /opt/stalwart/etc/config.toml
chmod 600 /opt/stalwart/etc/config.toml
fi
# Reload systemd
systemctl daemon-reload

Some files were not shown because too many files have changed in this diff Show More