mirror of
https://codeberg.org/polyteknisk-radiogruppe/the_prg_server_configuration.git
synced 2026-10-21 11:25:46 +02:00
Compare commits
No commits in common. "63a80ae88a2343bbd980660fd7d016beb98b9100" and "279d8503c494bb81b616e0f6fc3713d84aa3b1eb" have entirely different histories.
63a80ae88a
...
279d8503c4
6 changed files with 1 additions and 301 deletions
|
|
@ -148,12 +148,6 @@
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable MariaDB
|
|
||||||
services.mysql = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.mariadb;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
# Enable the OpenSSH daemon.
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
users.users.${config.local.username or "defaultuser"} = {
|
users.users.${config.local.username or "defaultuser"} = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = config.local.userDescription or "NixOS Playground";
|
description = config.local.userDescription or "NixOS Playground";
|
||||||
extraGroups = ["networkmanager" "wheel" "seat" "acme" "wheel"];
|
extraGroups = ["networkmanager" "wheel" "seat" "acme"];
|
||||||
packages = with pkgs; [];
|
packages = with pkgs; [];
|
||||||
initialPassword = "nixos"; # Simple, change on first login
|
initialPassword = "nixos"; # Simple, change on first login
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,184 +0,0 @@
|
||||||
# Auto-generated by compose2nix.
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# Runtime
|
|
||||||
virtualisation.podman = {
|
|
||||||
enable = true;
|
|
||||||
autoPrune.enable = true;
|
|
||||||
dockerCompat = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable container name DNS for all Podman networks.
|
|
||||||
networking.firewall.interfaces = let
|
|
||||||
matchAll =
|
|
||||||
if !config.networking.nftables.enable
|
|
||||||
then "podman+"
|
|
||||||
else "podman*";
|
|
||||||
in {
|
|
||||||
"${matchAll}".allowedUDPPorts = [53];
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.oci-containers.backend = "podman";
|
|
||||||
|
|
||||||
# Containers
|
|
||||||
virtualisation.oci-containers.containers."wavelog-db" = {
|
|
||||||
image = "mariadb:11.3";
|
|
||||||
environment = {
|
|
||||||
"MARIADB_DATABASE" = "wavelog";
|
|
||||||
"MARIADB_PASSWORD" = "oijawfjiojoijoiawf";
|
|
||||||
"MARIADB_RANDOM_ROOT_PASSWORD" = "yes";
|
|
||||||
"MARIADB_USER" = "wavelog";
|
|
||||||
};
|
|
||||||
volumes = [
|
|
||||||
"wavelog_wavelog-dbdata:/var/lib/mysql:rw"
|
|
||||||
];
|
|
||||||
log-driver = "journald";
|
|
||||||
extraOptions = [
|
|
||||||
"--network-alias=wavelog-db"
|
|
||||||
"--network=wavelog_default"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
systemd.services."podman-wavelog-db" = {
|
|
||||||
serviceConfig = {
|
|
||||||
Restart = lib.mkOverride 90 "always";
|
|
||||||
};
|
|
||||||
after = [
|
|
||||||
"podman-network-wavelog_default.service"
|
|
||||||
"podman-volume-wavelog_wavelog-dbdata.service"
|
|
||||||
];
|
|
||||||
requires = [
|
|
||||||
"podman-network-wavelog_default.service"
|
|
||||||
"podman-volume-wavelog_wavelog-dbdata.service"
|
|
||||||
];
|
|
||||||
partOf = [
|
|
||||||
"podman-compose-wavelog-root.target"
|
|
||||||
];
|
|
||||||
wantedBy = [
|
|
||||||
"podman-compose-wavelog-root.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
virtualisation.oci-containers.containers."wavelog-main" = {
|
|
||||||
image = "ghcr.io/wavelog/wavelog:latest";
|
|
||||||
environment = {
|
|
||||||
"CI_ENV" = "docker";
|
|
||||||
};
|
|
||||||
volumes = [
|
|
||||||
"wavelog_wavelog-config:/var/www/html/application/config/docker:rw"
|
|
||||||
"wavelog_wavelog-uploads:/var/www/html/uploads:rw"
|
|
||||||
"wavelog_wavelog-userdata:/var/www/html/userdata:rw"
|
|
||||||
];
|
|
||||||
ports = [
|
|
||||||
"8086:80/tcp"
|
|
||||||
];
|
|
||||||
dependsOn = [
|
|
||||||
"wavelog-db"
|
|
||||||
];
|
|
||||||
log-driver = "journald";
|
|
||||||
extraOptions = [
|
|
||||||
"--network-alias=wavelog-main"
|
|
||||||
"--network=wavelog_default"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
systemd.services."podman-wavelog-main" = {
|
|
||||||
serviceConfig = {
|
|
||||||
Restart = lib.mkOverride 90 "always";
|
|
||||||
};
|
|
||||||
after = [
|
|
||||||
"podman-network-wavelog_default.service"
|
|
||||||
"podman-volume-wavelog_wavelog-config.service"
|
|
||||||
"podman-volume-wavelog_wavelog-uploads.service"
|
|
||||||
"podman-volume-wavelog_wavelog-userdata.service"
|
|
||||||
];
|
|
||||||
requires = [
|
|
||||||
"podman-network-wavelog_default.service"
|
|
||||||
"podman-volume-wavelog_wavelog-config.service"
|
|
||||||
"podman-volume-wavelog_wavelog-uploads.service"
|
|
||||||
"podman-volume-wavelog_wavelog-userdata.service"
|
|
||||||
];
|
|
||||||
partOf = [
|
|
||||||
"podman-compose-wavelog-root.target"
|
|
||||||
];
|
|
||||||
wantedBy = [
|
|
||||||
"podman-compose-wavelog-root.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Networks
|
|
||||||
systemd.services."podman-network-wavelog_default" = {
|
|
||||||
path = [pkgs.podman];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
ExecStop = "podman network rm -f wavelog_default";
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
podman network inspect wavelog_default || podman network create wavelog_default
|
|
||||||
'';
|
|
||||||
partOf = ["podman-compose-wavelog-root.target"];
|
|
||||||
wantedBy = ["podman-compose-wavelog-root.target"];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Volumes
|
|
||||||
systemd.services."podman-volume-wavelog_wavelog-config" = {
|
|
||||||
path = [pkgs.podman];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
podman volume inspect wavelog_wavelog-config || podman volume create wavelog_wavelog-config
|
|
||||||
'';
|
|
||||||
partOf = ["podman-compose-wavelog-root.target"];
|
|
||||||
wantedBy = ["podman-compose-wavelog-root.target"];
|
|
||||||
};
|
|
||||||
systemd.services."podman-volume-wavelog_wavelog-dbdata" = {
|
|
||||||
path = [pkgs.podman];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
podman volume inspect wavelog_wavelog-dbdata || podman volume create wavelog_wavelog-dbdata
|
|
||||||
'';
|
|
||||||
partOf = ["podman-compose-wavelog-root.target"];
|
|
||||||
wantedBy = ["podman-compose-wavelog-root.target"];
|
|
||||||
};
|
|
||||||
systemd.services."podman-volume-wavelog_wavelog-uploads" = {
|
|
||||||
path = [pkgs.podman];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
podman volume inspect wavelog_wavelog-uploads || podman volume create wavelog_wavelog-uploads
|
|
||||||
'';
|
|
||||||
partOf = ["podman-compose-wavelog-root.target"];
|
|
||||||
wantedBy = ["podman-compose-wavelog-root.target"];
|
|
||||||
};
|
|
||||||
systemd.services."podman-volume-wavelog_wavelog-userdata" = {
|
|
||||||
path = [pkgs.podman];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
podman volume inspect wavelog_wavelog-userdata || podman volume create wavelog_wavelog-userdata
|
|
||||||
'';
|
|
||||||
partOf = ["podman-compose-wavelog-root.target"];
|
|
||||||
wantedBy = ["podman-compose-wavelog-root.target"];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Root service
|
|
||||||
# When started, this will automatically create all resources and start
|
|
||||||
# the containers. When stopped, this will teardown all resources.
|
|
||||||
systemd.targets."podman-compose-wavelog-root" = {
|
|
||||||
unitConfig = {
|
|
||||||
Description = "Root target generated by compose2nix.";
|
|
||||||
};
|
|
||||||
wantedBy = ["multi-user.target"];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
services:
|
|
||||||
wavelog-db:
|
|
||||||
image: mariadb:11.3
|
|
||||||
container_name: wavelog-db
|
|
||||||
environment:
|
|
||||||
MARIADB_RANDOM_ROOT_PASSWORD: yes
|
|
||||||
MARIADB_DATABASE: wavelog
|
|
||||||
MARIADB_USER: wavelog
|
|
||||||
MARIADB_PASSWORD: oijawfjiojoijoiawfoij191229888dajkvhiuviuaiuhvaihuauis1123312 # THIS DATABASE WILL BE MIGRATED PROABLY - TODO CHECK OUT https://github.com/ryantm/agenix
|
|
||||||
volumes:
|
|
||||||
- wavelog-dbdata:/var/lib/mysql
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
wavelog-main:
|
|
||||||
container_name: wavelog-main
|
|
||||||
image: ghcr.io/wavelog/wavelog:latest
|
|
||||||
depends_on:
|
|
||||||
- wavelog-db
|
|
||||||
environment:
|
|
||||||
CI_ENV: docker
|
|
||||||
volumes:
|
|
||||||
- wavelog-config:/var/www/html/application/config/docker
|
|
||||||
- wavelog-uploads:/var/www/html/uploads
|
|
||||||
- wavelog-userdata:/var/www/html/userdata
|
|
||||||
ports:
|
|
||||||
- "8086:80"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
wavelog-dbdata:
|
|
||||||
wavelog-uploads:
|
|
||||||
wavelog-userdata:
|
|
||||||
wavelog-config:
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
options.local = {
|
|
||||||
hostname = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "nixos-default";
|
|
||||||
description = "System hostname";
|
|
||||||
};
|
|
||||||
username = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "user";
|
|
||||||
description = "Primary user username";
|
|
||||||
};
|
|
||||||
userDescription = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "NixOS User";
|
|
||||||
description = "Primary user description";
|
|
||||||
};
|
|
||||||
address = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "10.1.1.100";
|
|
||||||
description = "Static IP address";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
./modules/desktop-manager/sway_greetd_homemanager.nix
|
|
||||||
./modules/local/hostname_username.nix
|
|
||||||
./modules/local/networking_local.nix
|
|
||||||
./modules/bootloader/seabios-assigned-iso-at-birth.nix
|
|
||||||
./modules/lix-default.nix
|
|
||||||
# Optionally: ./modules/toolsets/remote_building.nix
|
|
||||||
#
|
|
||||||
#
|
|
||||||
## Compose modules for Portainer service
|
|
||||||
./modules/songsheet/wavelog/docker-compose.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
config = {
|
|
||||||
local.hostname = "nixos-songsheet";
|
|
||||||
local.username = "songsheetprg";
|
|
||||||
local.userDescription = "NixOS PRG Portainer-Like Songsheet Service";
|
|
||||||
local.address = "10.1.1.249";
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
80
|
|
||||||
443
|
|
||||||
8086 # Wavelog
|
|
||||||
];
|
|
||||||
networking.firewall.allowedUDPPorts = [
|
|
||||||
80
|
|
||||||
443
|
|
||||||
8086 # Wavelog
|
|
||||||
];
|
|
||||||
|
|
||||||
system.stateVersion = "25.11";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -90,13 +90,6 @@
|
||||||
entryPoints = ["websecure"];
|
entryPoints = ["websecure"];
|
||||||
tls = {};
|
tls = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
wavelog = {
|
|
||||||
rule = "Host(`wavelog.prg-radio.org`)";
|
|
||||||
service = "wavelog";
|
|
||||||
entryPoints = ["websecure"];
|
|
||||||
tls = {};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
http.services = {
|
http.services = {
|
||||||
forgejo.loadBalancer = {
|
forgejo.loadBalancer = {
|
||||||
|
|
@ -104,11 +97,6 @@
|
||||||
{url = "http://10.1.1.4:3000";}
|
{url = "http://10.1.1.4:3000";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
wavelog.loadBalancer = {
|
|
||||||
servers = [
|
|
||||||
{url = "http://10.1.1.249:8086";}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -125,9 +113,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable Tailscale for remote access to Traefik dashboard and configuration
|
|
||||||
services.tailscale.enable = true;
|
|
||||||
|
|
||||||
systemd.services.traefik = {
|
systemd.services.traefik = {
|
||||||
after = ["acme-finished-prg-radio.org.target"];
|
after = ["acme-finished-prg-radio.org.target"];
|
||||||
wants = ["acme-finished-prg-radio.org.target"];
|
wants = ["acme-finished-prg-radio.org.target"];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue