aboutsummaryrefslogtreecommitdiffstats
path: root/roles/jails
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2026-05-17 13:35:43 +0300
committerJan Tuomi <jan@jantuomi.fi>2026-05-17 19:32:16 +0300
commitb38e910899bad2d6ae2049b599dcdd525420c53d (patch)
treec6b277aafe1e6e278368dc5ca25a4acd624b20d2 /roles/jails
parentc1a39b7e43bed135cb1832b2b5da7c82bf7a4c78 (diff)
Fix postgres
Diffstat (limited to 'roles/jails')
-rw-r--r--roles/jails/01_ingress/defaults/main.yml1
-rw-r--r--roles/jails/02_postgres/handlers/main.yml4
-rw-r--r--roles/jails/02_postgres/tasks/main.yml21
-rw-r--r--roles/jails/20_packager/defaults/main.yml22
-rw-r--r--roles/jails/20_packager/tasks/main.yml15
-rw-r--r--roles/jails/20_packager/templates/etc_crontab5
-rw-r--r--roles/jails/20_packager/templates/usr_local_bin_build_packages.sh26
-rw-r--r--roles/jails/20_packager/templates/usr_local_etc_nginx_nginx.conf18
8 files changed, 108 insertions, 4 deletions
diff --git a/roles/jails/01_ingress/defaults/main.yml b/roles/jails/01_ingress/defaults/main.yml
index f6d5aa4..6b95ef9 100644
--- a/roles/jails/01_ingress/defaults/main.yml
+++ b/roles/jails/01_ingress/defaults/main.yml
@@ -15,6 +15,7 @@ ingress_routes:
- { host: immich.jan.systems, ip: 192.168.3.3, port: 2283 }
- { host: plex.jan.systems, jail: plex, port: 32400, presets: [streaming] }
- { host: komga.jan.systems, jail: komga, port: 25600 }
+ - { host: ports.jan.systems, jail: packager }
cert_domains:
- "jan.systems"
diff --git a/roles/jails/02_postgres/handlers/main.yml b/roles/jails/02_postgres/handlers/main.yml
index 29064ba..b4762b2 100644
--- a/roles/jails/02_postgres/handlers/main.yml
+++ b/roles/jails/02_postgres/handlers/main.yml
@@ -1,4 +1,4 @@
-- name: Restart postgresql
+- name: Reload postgresql
service:
name: postgresql
- state: restarted
+ state: reloaded
diff --git a/roles/jails/02_postgres/tasks/main.yml b/roles/jails/02_postgres/tasks/main.yml
index 226e734..81d357a 100644
--- a/roles/jails/02_postgres/tasks/main.yml
+++ b/roles/jails/02_postgres/tasks/main.yml
@@ -7,6 +7,15 @@
path: /var/db/postgres/data18/PG_VERSION
register: _pg_data
+- name: Set postgres data directory ownership
+ file:
+ path: /var/db/postgres
+ state: directory
+ owner: postgres
+ group: postgres
+ mode: "0755"
+ when: not _pg_data.stat.exists
+
- name: Initialize database
shell: /usr/local/etc/rc.d/postgresql initdb
when: not _pg_data.stat.exists
@@ -16,14 +25,22 @@
path: /var/db/postgres/data18/pg_hba.conf
line: "host all all {{ jail_lan_cidr }} scram-sha-256"
regexp: "^host.*all.*all.*scram-sha-256"
- notify: Restart postgresql
+ notify: Reload postgresql
- name: Listen on all interfaces
lineinfile:
path: /var/db/postgres/data18/postgresql.conf
line: "listen_addresses = '*'"
regexp: "^listen_addresses"
- notify: Restart postgresql
+ notify: Reload postgresql
+
+- name: Start postgres
+ service:
+ name: postgresql
+ state: started
+
+- name: Flush handlers
+ meta: flush_handlers
- import_role:
name: jail
diff --git a/roles/jails/20_packager/defaults/main.yml b/roles/jails/20_packager/defaults/main.yml
new file mode 100644
index 0000000..e9d0f26
--- /dev/null
+++ b/roles/jails/20_packager/defaults/main.yml
@@ -0,0 +1,22 @@
+userland: "15.0-RELEASE"
+
+pkg:
+ - nginx
+
+nullfs:
+ - src: /usr/local/my-ports
+ dst: /usr/local/my-ports
+ - src: /usr/ports
+ dst: /usr/ports
+
+files:
+ - src: usr_local_etc_nginx_nginx.conf
+ dest: /usr/local/etc/nginx/nginx.conf
+ - src: usr_local_bin_build_packages.sh
+ dest: /usr/local/bin/build-packages
+ mode: "0755"
+ - src: etc_crontab
+ dest: /etc/crontab
+
+services:
+ - nginx
diff --git a/roles/jails/20_packager/tasks/main.yml b/roles/jails/20_packager/tasks/main.yml
new file mode 100644
index 0000000..e1a44e1
--- /dev/null
+++ b/roles/jails/20_packager/tasks/main.yml
@@ -0,0 +1,15 @@
+- import_role:
+ name: jail
+ tasks_from: jail_setup
+
+- name: Create packages output directory
+ file:
+ path: /usr/local/packages
+ state: directory
+ owner: root
+ group: wheel
+ mode: "0755"
+
+- import_role:
+ name: jail
+ tasks_from: jail_launch
diff --git a/roles/jails/20_packager/templates/etc_crontab b/roles/jails/20_packager/templates/etc_crontab
new file mode 100644
index 0000000..ed18a07
--- /dev/null
+++ b/roles/jails/20_packager/templates/etc_crontab
@@ -0,0 +1,5 @@
+SHELL=/bin/sh
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
+
+# Build packages every hour
+0 * * * * root /usr/local/bin/build-packages >> /var/log/build-packages.log 2>&1
diff --git a/roles/jails/20_packager/templates/usr_local_bin_build_packages.sh b/roles/jails/20_packager/templates/usr_local_bin_build_packages.sh
new file mode 100644
index 0000000..b4d5ea6
--- /dev/null
+++ b/roles/jails/20_packager/templates/usr_local_bin_build_packages.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+# Build all ports in /usr/local/my-ports, skip already-built packages.
+set -eu
+
+PORTS_DIR="/usr/local/my-ports"
+PKG_DIR="/usr/local/packages"
+
+for port_dir in "${PORTS_DIR}"/*/; do
+ [ -f "${port_dir}/Makefile" ] || continue
+
+ port_name=$(make -C "${port_dir}" -V PKGNAME)
+ pkg_file="${PKG_DIR}/All/${port_name}.pkg"
+
+ if [ -f "${pkg_file}" ]; then
+ echo "SKIP ${port_name} (already built)"
+ continue
+ fi
+
+ echo "BUILD ${port_name}"
+ make -C "${port_dir}" clean package PACKAGES="${PKG_DIR}" BATCH=yes
+ make -C "${port_dir}" clean
+done
+
+# Rebuild the repository catalog
+pkg repo "${PKG_DIR}"
+echo "Done."
diff --git a/roles/jails/20_packager/templates/usr_local_etc_nginx_nginx.conf b/roles/jails/20_packager/templates/usr_local_etc_nginx_nginx.conf
new file mode 100644
index 0000000..0d140ef
--- /dev/null
+++ b/roles/jails/20_packager/templates/usr_local_etc_nginx_nginx.conf
@@ -0,0 +1,18 @@
+worker_processes 1;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ include mime.types;
+ default_type application/octet-stream;
+ sendfile on;
+
+ server {
+ listen 80;
+ server_name _;
+ root /usr/local/packages;
+ autoindex on;
+ }
+}