diff --git a/etc/systemd/journald.conf b/etc/systemd/journald.conf new file mode 100644 index 0000000..9a12ca7 --- /dev/null +++ b/etc/systemd/journald.conf @@ -0,0 +1,50 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Entries in this file show the compile time defaults. Local configuration +# should be created by either modifying this file (or a copy of it placed in +# /etc/ if the original file is shipped in /usr/), or by creating "drop-ins" in +# the /etc/systemd/journald.conf.d/ directory. The latter is generally +# recommended. Defaults can be restored by simply deleting the main +# configuration file and all drop-ins located in /etc/. +# +# Use 'systemd-analyze cat-config systemd/journald.conf' to display the full config. +# +# See journald.conf(5) for details. + +[Journal] +#Storage=auto +#Compress=yes +#Seal=yes +#SplitMode=uid +#SyncIntervalSec=5m +#RateLimitIntervalSec=30s +#RateLimitBurst=10000 +#SystemMaxUse= +#SystemKeepFree= +#SystemMaxFileSize= +#SystemMaxFiles=100 +#RuntimeMaxUse= +#RuntimeKeepFree= +#RuntimeMaxFileSize= +#RuntimeMaxFiles=100 +#MaxRetentionSec=0 +#MaxFileSec=1month +#ForwardToSyslog=no +#ForwardToKMsg=no +#ForwardToConsole=no +#ForwardToWall=yes +#TTYPath=/dev/console +#MaxLevelStore=debug +#MaxLevelSyslog=debug +#MaxLevelKMsg=notice +#MaxLevelConsole=info +#MaxLevelWall=emerg +#MaxLevelSocket=debug +#LineMax=48K +#ReadKMsg=yes +#Audit=yes diff --git a/etc/systemd/logind.conf b/etc/systemd/logind.conf new file mode 100644 index 0000000..b746c12 --- /dev/null +++ b/etc/systemd/logind.conf @@ -0,0 +1,54 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Entries in this file show the compile time defaults. Local configuration +# should be created by either modifying this file (or a copy of it placed in +# /etc/ if the original file is shipped in /usr/), or by creating "drop-ins" in +# the /etc/systemd/logind.conf.d/ directory. The latter is generally +# recommended. Defaults can be restored by simply deleting the main +# configuration file and all drop-ins located in /etc/. +# +# Use 'systemd-analyze cat-config systemd/logind.conf' to display the full config. +# +# See logind.conf(5) for details. + +[Login] +#NAutoVTs=6 +#ReserveVT=6 +#KillUserProcesses=no +#KillOnlyUsers= +#KillExcludeUsers=root +#InhibitDelayMaxSec=5 +#UserStopDelaySec=10 +#SleepOperation=suspend-then-hibernate suspend +#HandlePowerKey=poweroff +#HandlePowerKeyLongPress=ignore +#HandleRebootKey=reboot +#HandleRebootKeyLongPress=poweroff +#HandleSuspendKey=suspend +#HandleSuspendKeyLongPress=hibernate +#HandleHibernateKey=hibernate +#HandleHibernateKeyLongPress=ignore +#HandleLidSwitch=suspend +#HandleLidSwitchExternalPower=suspend +#HandleLidSwitchDocked=ignore +#HandleSecureAttentionKey=secure-attention-key +#PowerKeyIgnoreInhibited=no +#SuspendKeyIgnoreInhibited=no +#HibernateKeyIgnoreInhibited=no +#LidSwitchIgnoreInhibited=yes +#RebootKeyIgnoreInhibited=no +#HoldoffTimeoutSec=30s +#IdleAction=ignore +#IdleActionSec=30min +#RuntimeDirectorySize=10% +#RuntimeDirectoryInodesMax= +#RemoveIPC=yes +#InhibitorsMax=8192 +#SessionsMax=8192 +#StopIdleSessionSec=infinity +#DesignatedMaintenanceTime= diff --git a/etc/systemd/networkd.conf b/etc/systemd/networkd.conf new file mode 100644 index 0000000..06d4362 --- /dev/null +++ b/etc/systemd/networkd.conf @@ -0,0 +1,43 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Entries in this file show the compile time defaults. Local configuration +# should be created by either modifying this file (or a copy of it placed in +# /etc/ if the original file is shipped in /usr/), or by creating "drop-ins" in +# the /etc/systemd/networkd.conf.d/ directory. The latter is generally +# recommended. Defaults can be restored by simply deleting the main +# configuration file and all drop-ins located in /etc/. +# +# Use 'systemd-analyze cat-config systemd/networkd.conf' to display the full config. +# +# See networkd.conf(5) for details. + +[Network] +#SpeedMeter=no +#SpeedMeterIntervalSec=10sec +#ManageForeignRoutingPolicyRules=yes +#ManageForeignRoutes=yes +#ManageForeignNextHops=yes +#RouteTable= +#IPv6PrivacyExtensions=no +#UseDomains=no + +[IPv6AcceptRA] +#UseDomains= + +[DHCPv4] +#DUIDType=vendor +#DUIDRawData= +#UseDomains= + +[DHCPv6] +#DUIDType=vendor +#DUIDRawData= +#UseDomains= + +[DHCPServer] +#PersistLeases=yes diff --git a/etc/systemd/pstore.conf b/etc/systemd/pstore.conf new file mode 100644 index 0000000..22b18b5 --- /dev/null +++ b/etc/systemd/pstore.conf @@ -0,0 +1,21 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Entries in this file show the compile time defaults. Local configuration +# should be created by either modifying this file (or a copy of it placed in +# /etc/ if the original file is shipped in /usr/), or by creating "drop-ins" in +# the /etc/systemd/pstore.conf.d/ directory. The latter is generally +# recommended. Defaults can be restored by simply deleting the main +# configuration file and all drop-ins located in /etc/. +# +# Use 'systemd-analyze cat-config systemd/pstore.conf' to display the full config. +# +# See pstore.conf(5) for details. + +[PStore] +#Storage=external +#Unlink=yes diff --git a/etc/systemd/sleep.conf b/etc/systemd/sleep.conf new file mode 100644 index 0000000..153f747 --- /dev/null +++ b/etc/systemd/sleep.conf @@ -0,0 +1,29 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Entries in this file show the compile time defaults. Local configuration +# should be created by either modifying this file (or a copy of it placed in +# /etc/ if the original file is shipped in /usr/), or by creating "drop-ins" in +# the /etc/systemd/sleep.conf.d/ directory. The latter is generally +# recommended. Defaults can be restored by simply deleting the main +# configuration file and all drop-ins located in /etc/. +# +# Use 'systemd-analyze cat-config systemd/sleep.conf' to display the full config. +# +# See systemd-sleep.conf(5) for details. + +[Sleep] +#AllowSuspend=yes +#AllowHibernation=yes +#AllowSuspendThenHibernate=yes +#AllowHybridSleep=yes +#SuspendState=mem standby freeze +#HibernateMode=platform shutdown +#MemorySleepMode= +#HibernateDelaySec= +#HibernateOnACPower=yes +#SuspendEstimationSec=60min diff --git a/etc/systemd/system.conf b/etc/systemd/system.conf new file mode 100644 index 0000000..61a3d36 --- /dev/null +++ b/etc/systemd/system.conf @@ -0,0 +1,84 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Entries in this file show the compile time defaults. Local configuration +# should be created by either modifying this file (or a copy of it placed in +# /etc/ if the original file is shipped in /usr/), or by creating "drop-ins" in +# /etc/systemd/system.conf.d/ directory. The latter is generally recommended. +# Defaults can be restored by simply deleting the main configuration file and +# all drop-ins located in /etc/. +# +# Use 'systemd-analyze cat-config systemd/system.conf' to display the full config. +# +# See systemd-system.conf(5) for details. + +[Manager] +#LogLevel=info +#LogTarget=journal-or-kmsg +#LogColor=yes +#LogLocation=no +#LogTime=no +#DumpCore=yes +#ShowStatus=yes +#CrashChangeVT=no +#CrashShell=no +#CrashAction=freeze +#CtrlAltDelBurstAction=reboot-force +#CPUAffinity= +#NUMAPolicy=default +#NUMAMask= +#RuntimeWatchdogSec=off +#RuntimeWatchdogPreSec=off +#RuntimeWatchdogPreGovernor= +#RebootWatchdogSec=10min +#KExecWatchdogSec=off +#WatchdogDevice= +#CapabilityBoundingSet= +#NoNewPrivileges=no +#ProtectSystem=auto +#SystemCallArchitectures= +#TimerSlackNSec= +#StatusUnitFormat=combined +#DefaultTimerAccuracySec=1min +#DefaultStandardOutput=journal +#DefaultStandardError=inherit +#DefaultTimeoutStartSec=90s +#DefaultTimeoutStopSec=90s +#DefaultTimeoutAbortSec= +#DefaultDeviceTimeoutSec=90s +#DefaultRestartSec=100ms +#DefaultStartLimitIntervalSec=10s +#DefaultStartLimitBurst=5 +#DefaultEnvironment= +#DefaultCPUAccounting=yes +#DefaultIOAccounting=no +#DefaultIPAccounting=no +#DefaultMemoryAccounting=yes +#DefaultTasksAccounting=yes +#DefaultTasksMax=15% +#DefaultLimitCPU= +#DefaultLimitFSIZE= +#DefaultLimitDATA= +#DefaultLimitSTACK= +#DefaultLimitCORE= +#DefaultLimitRSS= +#DefaultLimitNOFILE=1024:524288 +#DefaultLimitAS= +#DefaultLimitNPROC= +#DefaultLimitMEMLOCK=8M +#DefaultLimitLOCKS= +#DefaultLimitSIGPENDING= +#DefaultLimitMSGQUEUE= +#DefaultLimitNICE= +#DefaultLimitRTPRIO= +#DefaultLimitRTTIME= +#DefaultMemoryPressureThresholdSec=200ms +#DefaultMemoryPressureWatch=auto +#DefaultOOMPolicy=stop +#DefaultSmackProcessLabel= +#ReloadLimitIntervalSec= +#ReloadLimitBurst= diff --git a/etc/systemd/system/getty.target.wants/getty@tty1.service b/etc/systemd/system/getty.target.wants/getty@tty1.service new file mode 100644 index 0000000..4299158 --- /dev/null +++ b/etc/systemd/system/getty.target.wants/getty@tty1.service @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +# +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Getty on %I +Documentation=man:agetty(8) man:systemd-getty-generator(8) +Documentation=https://0pointer.de/blog/projects/serial-console.html +After=systemd-user-sessions.service plymouth-quit-wait.service getty-pre.target +After=rc-local.service + +# If additional gettys are spawned during boot then we should make +# sure that this is synchronized before getty.target, even though +# getty.target didn't actually pull it in. +Before=getty.target +IgnoreOnIsolate=yes + +# IgnoreOnIsolate causes issues with sulogin, if someone isolates +# rescue.target or starts rescue.service from multi-user.target or +# graphical.target. +Conflicts=rescue.service +Before=rescue.service + +# On systems without virtual consoles, don't start any getty. Note +# that serial gettys are covered by serial-getty@.service, not this +# unit. +ConditionPathExists=/dev/tty0 + +[Service] +# The '-o' option value tells agetty to replace 'login' arguments with '--' for +# safety, and then the entered username. +ExecStart=-/sbin/agetty -o '-- \\u' --noreset --noclear - ${TERM} +Type=idle +Restart=always +RestartSec=0 +UtmpIdentifier=%I +StandardInput=tty +StandardOutput=tty +TTYPath=/dev/%I +TTYReset=yes +TTYVHangup=yes +TTYVTDisallocate=yes +IgnoreSIGPIPE=no +SendSIGHUP=yes +ImportCredential=tty.virtual.%I.agetty.*:agetty. +ImportCredential=tty.virtual.%I.login.*:login. +ImportCredential=agetty.* +ImportCredential=login.* +ImportCredential=shell.* + +# Unset locale for the console getty since the console has problems +# displaying some internationalized messages. +UnsetEnvironment=LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION + +[Install] +WantedBy=getty.target +DefaultInstance=tty1 diff --git a/etc/systemd/system/hibernate.target.wants/grub-common.service b/etc/systemd/system/hibernate.target.wants/grub-common.service new file mode 100644 index 0000000..e7bdf4b --- /dev/null +++ b/etc/systemd/system/hibernate.target.wants/grub-common.service @@ -0,0 +1,15 @@ +[Unit] +Description=Record successful boot for GRUB +After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target +ConditionPathExists=/boot/grub/grub.cfg + +[Service] +Type=oneshot +Restart=no +ExecStartPre=/bin/sh -c '[ -s /boot/grub/grubenv ] || rm -f /boot/grub/grubenv; mkdir -p /boot/grub' +ExecStart=grub-editenv /boot/grub/grubenv unset recordfail +ExecStartPost=/bin/sh -c 'if grub-editenv /boot/grub/grubenv list | grep -q initrdless_boot_fallback_triggered=1; then echo "grub: GRUB_FORCE_PARTUUID set, initrdless boot paniced, fallback triggered."; fi' +StandardOutput=kmsg + +[Install] +WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target diff --git a/etc/systemd/system/hybrid-sleep.target.wants/grub-common.service b/etc/systemd/system/hybrid-sleep.target.wants/grub-common.service new file mode 100644 index 0000000..e7bdf4b --- /dev/null +++ b/etc/systemd/system/hybrid-sleep.target.wants/grub-common.service @@ -0,0 +1,15 @@ +[Unit] +Description=Record successful boot for GRUB +After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target +ConditionPathExists=/boot/grub/grub.cfg + +[Service] +Type=oneshot +Restart=no +ExecStartPre=/bin/sh -c '[ -s /boot/grub/grubenv ] || rm -f /boot/grub/grubenv; mkdir -p /boot/grub' +ExecStart=grub-editenv /boot/grub/grubenv unset recordfail +ExecStartPost=/bin/sh -c 'if grub-editenv /boot/grub/grubenv list | grep -q initrdless_boot_fallback_triggered=1; then echo "grub: GRUB_FORCE_PARTUUID set, initrdless boot paniced, fallback triggered."; fi' +StandardOutput=kmsg + +[Install] +WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target diff --git a/etc/systemd/system/multi-user.target.wants/apache2.service b/etc/systemd/system/multi-user.target.wants/apache2.service new file mode 100644 index 0000000..cd7e663 --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/apache2.service @@ -0,0 +1,18 @@ +[Unit] +Description=The Apache HTTP Server +After=network.target remote-fs.target nss-lookup.target +Documentation=https://httpd.apache.org/docs/2.4/ + +[Service] +Type=forking +Environment=APACHE_STARTED_BY_SYSTEMD=true +ExecStart=/usr/sbin/apachectl start +ExecStop=/usr/sbin/apachectl graceful-stop +ExecReload=/usr/sbin/apachectl graceful +KillMode=mixed +PrivateTmp=true +Restart=on-abort +OOMPolicy=continue + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/caddy.service b/etc/systemd/system/multi-user.target.wants/caddy.service new file mode 100644 index 0000000..db0710e --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/caddy.service @@ -0,0 +1,36 @@ +# caddy.service +# +# For using Caddy with a config file. +# +# Make sure the ExecStart and ExecReload commands are correct +# for your installation. +# +# See https://caddyserver.com/docs/install for instructions. +# +# WARNING: This service does not use the --resume flag, so if you +# use the API to make changes, they will be overwritten by the +# Caddyfile next time the service is restarted. If you intend to +# use Caddy's API to configure it, add the --resume flag to the +# `caddy run` command or use the caddy-api.service file instead. + +[Unit] +Description=Caddy +Documentation=https://caddyserver.com/docs/ +After=network.target network-online.target +Requires=network-online.target + +[Service] +Type=notify +User=caddy +Group=caddy +ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile +ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force +TimeoutStopSec=5s +LimitNOFILE=1048576 +LimitNPROC=512 +PrivateTmp=true +ProtectSystem=full +AmbientCapabilities=CAP_NET_BIND_SERVICE + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/console-setup.service b/etc/systemd/system/multi-user.target.wants/console-setup.service new file mode 100644 index 0000000..c15f37f --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/console-setup.service @@ -0,0 +1,15 @@ +[Unit] +Description=Set console font and keymap +DefaultDependencies=no +After=console-screen.service kbd.service local-fs.target +Before=display-manager.service +RequiresMountsFor=/usr +ConditionPathExists=/bin/setupcon + +[Service] +Type=oneshot +ExecStart=/lib/console-setup/console-setup.sh +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/cron.service b/etc/systemd/system/multi-user.target.wants/cron.service new file mode 100644 index 0000000..29fe005 --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/cron.service @@ -0,0 +1,15 @@ +[Unit] +Description=Regular background program processing daemon +Documentation=man:cron(8) +After=remote-fs.target nss-user-lookup.target + +[Service] +EnvironmentFile=-/etc/default/cron +ExecStart=/usr/sbin/cron -f $EXTRA_OPTS +IgnoreSIGPIPE=false +KillMode=process +Restart=on-failure +SyslogFacility=cron + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/e2scrub_reap.service b/etc/systemd/system/multi-user.target.wants/e2scrub_reap.service new file mode 100644 index 0000000..96e6690 --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/e2scrub_reap.service @@ -0,0 +1,25 @@ +[Unit] +Description=Remove Stale Online ext4 Metadata Check Snapshots +ConditionCapability=CAP_SYS_ADMIN +ConditionCapability=CAP_SYS_RAWIO +Documentation=man:e2scrub_all(8) + +[Service] +Type=oneshot +WorkingDirectory=/ +PrivateNetwork=true +ProtectSystem=true +ProtectHome=read-only +PrivateTmp=yes +AmbientCapabilities=CAP_SYS_ADMIN CAP_SYS_RAWIO +NoNewPrivileges=yes +User=root +IOSchedulingClass=idle +CPUSchedulingPolicy=idle +Environment=SERVICE_MODE=1 +ExecStart=/sbin/e2scrub_all -A -r +SyslogIdentifier=%N +RemainAfterExit=no + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/grub-common.service b/etc/systemd/system/multi-user.target.wants/grub-common.service new file mode 100644 index 0000000..e7bdf4b --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/grub-common.service @@ -0,0 +1,15 @@ +[Unit] +Description=Record successful boot for GRUB +After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target +ConditionPathExists=/boot/grub/grub.cfg + +[Service] +Type=oneshot +Restart=no +ExecStartPre=/bin/sh -c '[ -s /boot/grub/grubenv ] || rm -f /boot/grub/grubenv; mkdir -p /boot/grub' +ExecStart=grub-editenv /boot/grub/grubenv unset recordfail +ExecStartPost=/bin/sh -c 'if grub-editenv /boot/grub/grubenv list | grep -q initrdless_boot_fallback_triggered=1; then echo "grub: GRUB_FORCE_PARTUUID set, initrdless boot paniced, fallback triggered."; fi' +StandardOutput=kmsg + +[Install] +WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target diff --git a/etc/systemd/system/multi-user.target.wants/mariadb.service b/etc/systemd/system/multi-user.target.wants/mariadb.service new file mode 100644 index 0000000..843414b --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/mariadb.service @@ -0,0 +1,179 @@ +# It's not recommended to modify this file in-place, because it will be +# overwritten during package upgrades. If you want to customize, the +# best way is to create a file "/etc/systemd/system/mariadb.service", +# containing +# .include /usr/lib/systemd/system/mariadb.service +# ...make your changes here... +# or create a file "/etc/systemd/system/mariadb.service.d/foo.conf", +# which doesn't need to include ".include" call and which will be parsed +# after the file mariadb.service itself is parsed. +# +# For more info about custom unit files, see systemd.unit(5) or +# https://mariadb.com/kb/en/mariadb/systemd/ +# +# Copyright notice: +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=MariaDB 11.8.3 database server +Documentation=man:mariadbd(8) +Documentation=https://mariadb.com/kb/en/library/systemd/ +After=network.target + +[Install] +WantedBy=multi-user.target + + +[Service] + +############################################################################## +## Core requirements +## + +Type=notify + +# Setting this to true can break replication and the Type=notify settings +# See also bind-address mariadbd option. +PrivateNetwork=false + +############################################################################## +## Package maintainers +## + +User=mysql +Group=mysql + +# CAP_IPC_LOCK To allow memlock to be used as non-root user +# These are enabled by default +AmbientCapabilities=CAP_IPC_LOCK + +# PrivateDevices=true implies NoNewPrivileges=true and +# SUID auth_pam_tool suddenly doesn't do setuid anymore +PrivateDevices=false + +# Prevent writes to /usr, /boot, and /etc +ProtectSystem=full + + + +# Doesn't yet work properly with SELinux enabled +# NoNewPrivileges=true + +# Prevent accessing /home, /root and /run/user +ProtectHome=true + +# Use an environment file to pass variable _WSREP_NEW_CLUSTER +EnvironmentFile=-/run/mysqld/wsrep-new-cluster + +# Use an environment file to pass variable _WSREP_START_POSITION +EnvironmentFile=-/run/mysqld/wsrep-start-position + +ExecStartPre=+/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld + +# Perform automatic wsrep recovery. When server is started without wsrep, +# galera_recovery simply returns an empty string. In any case, however, +# the script is not expected to return with a non-zero status. +# It is always safe to remove /run/mysqld/wsrep-start-position +# environment file. +# Do not panic if galera_recovery script is not available. (MDEV-10538) +ExecStartPre=/bin/sh -c "[ ! -e /usr/bin/galera_recovery ] && VAR= || \ + VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] \ + && echo _WSREP_START_POSITION=$VAR > /run/mysqld/wsrep-start-position || exit 1" + +# Needed to create system tables etc. +# ExecStartPre=/usr/bin/mariadb-install-db -u mysql + +# Start main service +# MYSQLD_OPTS here is for users to set in /etc/systemd/system/mariadb.service.d/MY_SPECIAL.conf +# Use the [Service] section and Environment="MYSQLD_OPTS=...". +# This isn't a replacement for my.cnf. +# _WSREP_NEW_CLUSTER is for the exclusive use of the script galera_new_cluster +ExecStart=/usr/sbin/mariadbd $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION + +# Unset _WSREP_START_POSITION environment variable. +ExecStartPost=/bin/rm -f /run/mysqld/wsrep-start-position + +ExecStartPost=+/etc/mysql/debian-start + +KillSignal=SIGTERM + +# Don't want to see an automated SIGKILL ever +SendSIGKILL=no + +# Restart crashed server only, on-failure would also restart, for example, when +# my.cnf contains unknown option +Restart=on-abnormal +RestartSec=5s + +UMask=007 + +############################################################################## +## USERs can override +## +## +## by creating a file in /etc/systemd/system/mariadb.service.d/MY_SPECIAL.conf +## and adding/setting the following under [Service] will override this file's +## settings. + +# Useful options not previously available in [mysqld_safe] + +# Kernels like killing mariadbd when out of memory because its big. +# Lets temper that preference a little. +# OOMScoreAdjust=-600 + +# Explicitly start with high IO priority +# BlockIOWeight=1000 + +# If you don't use the /tmp directory for SELECT ... OUTFILE and +# LOAD DATA INFILE you can enable PrivateTmp=true for a little more security. +PrivateTmp=false + +# Set an explicit Start and Stop timeout of 900 seconds (15 minutes!) +# this is the same value as used in SysV init scripts in the past +# Galera might need a longer timeout, check the KB if you want to change this: +# https://mariadb.com/kb/en/library/systemd/#configuring-the-systemd-service-timeout +TimeoutStartSec=900 +TimeoutStopSec=900 + +# Set the maximium number of tasks (threads) to 99% of what the system can +# handle as set by the kernel, reserve the 1% for a remote ssh connection, +# some monitoring, or that backup cron job. Without the directive this would +# be 15% (see DefaultTasksMax in systemd man pages). +TasksMax=99% + +## +## Options previously available to be set via [mysqld_safe] +## that now needs to be set by systemd config files as mysqld_safe +## isn't executed. +## + +# Number of files limit. previously [mysqld_safe] open-files-limit +LimitNOFILE=32768 +# For liburing and io_uring_setup() +LimitMEMLOCK=524288 +# Maximium core size. previously [mysqld_safe] core-file-size +# LimitCore= + +# Nice priority. previously [mysqld_safe] nice +# Nice=-5 + +# Timezone. previously [mysqld_safe] timezone +# Environment="TZ=UTC" + +# Library substitutions. previously [mysqld_safe] malloc-lib with explicit paths +# (in LD_LIBRARY_PATH) and library name (in LD_PRELOAD). +# Environment="LD_LIBRARY_PATH=/path1 /path2" "LD_PRELOAD= + +# Flush caches. previously [mysqld_safe] flush-caches=1 +# ExecStartPre=sync +# ExecStartPre=sysctl -q -w vm.drop_caches=3 + +# numa-interleave=1 equalivant +# Change ExecStart=numactl --interleave=all /usr/sbin/mariadbd...... + +# crash-script equalivent +# FailureAction= diff --git a/etc/systemd/system/multi-user.target.wants/memcached.service b/etc/systemd/system/multi-user.target.wants/memcached.service new file mode 100644 index 0000000..772a702 --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/memcached.service @@ -0,0 +1,84 @@ +# It's not recommended to modify this file in-place, because it will be +# overwritten during upgrades. If you want to customize, the best +# way is to use the "systemctl edit" command to create an override unit. +# +# For example, to pass additional options, create an override unit +# (as is done by systemctl edit) and enter the following: +# +# [Service] +# Environment=OPTIONS="-l 127.0.0.1,::1" + + +[Unit] +Description=memcached daemon +After=network.target +Documentation=man:memcached(1) + +[Service] +ExecStart=/usr/share/memcached/scripts/systemd-memcached-wrapper /etc/memcached.conf + +# Set up a new file system namespace and mounts private /tmp and /var/tmp +# directories so this service cannot access the global directories and +# other processes cannot access this service's directories. +PrivateTmp=true + +# Mounts the /usr, /boot, and /etc directories read-only for processes +# invoked by this unit. +ProtectSystem=full + +# Ensures that the service process and all its children can never gain new +# privileges +NoNewPrivileges=true + +# Sets up a new /dev namespace for the executed processes and only adds API +# pseudo devices such as /dev/null, /dev/zero or /dev/random (as well as +# the pseudo TTY subsystem) to it, but no physical devices such as /dev/sda. +PrivateDevices=true + +# Required for dropping privileges and running as a different user +CapabilityBoundingSet=CAP_SETGID CAP_SETUID CAP_SYS_RESOURCE + +# Restricts the set of socket address families accessible to the processes +# of this unit. Protects against vulnerabilities such as CVE-2016-8655 +RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX + +# Attempts to create memory mappings that are writable and executable at +# the same time, or to change existing memory mappings to become executable +# are prohibited. +MemoryDenyWriteExecute=true + +# Explicit module loading will be denied. This allows to turn off module +# load and unload operations on modular kernels. It is recommended to turn +# this on for most services that do not need special file systems or extra +# kernel modules to work. +ProtectKernelModules=true + +# Kernel variables accessible through /proc/sys, /sys, /proc/sysrq-trigger, +# /proc/latency_stats, /proc/acpi, /proc/timer_stats, /proc/fs and /proc/irq +# will be made read-only to all processes of the unit. Usually, tunable +# kernel variables should only be written at boot-time, with the sysctl.d(5) +# mechanism. Almost no services need to write to these at runtime; it is hence +# recommended to turn this on for most services. +ProtectKernelTunables=true + +# The Linux Control Groups (cgroups(7)) hierarchies accessible through +# /sys/fs/cgroup will be made read-only to all processes of the unit. +# Except for container managers no services should require write access +# to the control groups hierarchies; it is hence recommended to turn this +# on for most services +ProtectControlGroups=true + +# Any attempts to enable realtime scheduling in a process of the unit are +# refused. +RestrictRealtime=true + +# Takes away the ability to create or manage any kind of namespace +RestrictNamespaces=true + +PIDFile=/run/memcached/memcached.pid + +# try to restart if errors encountered +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/msmtpd.service b/etc/systemd/system/multi-user.target.wants/msmtpd.service new file mode 100644 index 0000000..4a566c5 --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/msmtpd.service @@ -0,0 +1,28 @@ +[Unit] +Description=msmtp daemon +Documentation=man:msmtpd(1) + +[Service] +DynamicUser=true +AmbientCapabilities=CAP_NET_BIND_SERVICE +CapabilityBoundingSet=CAP_NET_BIND_SERVICE +NoNewPrivileges=true +# NoNewPrivileges prevents the setgid mechanism from working +# so since msmtp is setgid in order to read /etc/msmtprc, the +# msmtp group need to be added in a different way +SupplementaryGroups=msmtp + +Environment=INTERFACE=127.0.0.1 PORT=25 +EnvironmentFile=-/etc/default/msmtpd + +Type=simple +ExecStart=/usr/bin/msmtpd --interface=${INTERFACE} --port=${PORT} + +Restart=always +RestartSec=60 + +ProtectHome=true +PrivateTmp=true + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/networking.service b/etc/systemd/system/multi-user.target.wants/networking.service new file mode 100644 index 0000000..cb5d6b0 --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/networking.service @@ -0,0 +1,22 @@ +[Unit] +Description=Raise network interfaces +Documentation=man:interfaces(5) +DefaultDependencies=no +Wants=network.target ifupdown-pre.service +After=local-fs.target network-pre.target apparmor.service systemd-sysctl.service systemd-modules-load.service ifupdown-pre.service +Before=network.target shutdown.target network-online.target +Conflicts=shutdown.target + +[Install] +WantedBy=multi-user.target +WantedBy=network-online.target + +[Service] +Type=oneshot +EnvironmentFile=-/etc/default/networking +ExecStart=/usr/sbin/ifup -a --read-environment +ExecStart=-/bin/sh -c 'if [ -f /run/network/restart-hotplug ]; then /usr/sbin/ifup -a --read-environment --allow=hotplug; fi' +ExecStop=/usr/sbin/ifdown -a --read-environment --exclude=lo +ExecStopPost=/usr/bin/touch /run/network/restart-hotplug +RemainAfterExit=true +TimeoutStartSec=5min diff --git a/etc/systemd/system/multi-user.target.wants/php8.4-fpm.service b/etc/systemd/system/multi-user.target.wants/php8.4-fpm.service new file mode 100644 index 0000000..5314b75 --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/php8.4-fpm.service @@ -0,0 +1,15 @@ +[Unit] +Description=The PHP 8.4 FastCGI Process Manager +Documentation=man:php-fpm8.4(8) +After=network.target + +[Service] +Type=notify +ExecStart=/usr/sbin/php-fpm8.4 --nodaemonize --fpm-config /etc/php/8.4/fpm/php-fpm.conf +ExecStartPost=-/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.4/fpm/pool.d/www.conf 84 +ExecStopPost=-/usr/lib/php/php-fpm-socket-helper remove /run/php/php-fpm.sock /etc/php/8.4/fpm/pool.d/www.conf 84 +ExecReload=/bin/kill -USR2 $MAINPID +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/prometheus-mysqld-exporter.service b/etc/systemd/system/multi-user.target.wants/prometheus-mysqld-exporter.service new file mode 100644 index 0000000..37d1dc5 --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/prometheus-mysqld-exporter.service @@ -0,0 +1,12 @@ +[Unit] +Description=Prometheus exporter for MySQL server +Documentation=man:prometheus-mysqld-exporter(1) + +[Service] +Restart=on-failure +User=prometheus +EnvironmentFile=/etc/default/prometheus-mysqld-exporter +ExecStart=/usr/bin/prometheus-mysqld-exporter $ARGS + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/prometheus-node-exporter.service b/etc/systemd/system/multi-user.target.wants/prometheus-node-exporter.service new file mode 100644 index 0000000..98c3317 --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/prometheus-node-exporter.service @@ -0,0 +1,15 @@ +[Unit] +Description=Prometheus exporter for machine metrics +Documentation=https://github.com/prometheus/node_exporter + +[Service] +Restart=on-failure +User=prometheus +EnvironmentFile=/etc/default/prometheus-node-exporter +ExecStart=/usr/bin/prometheus-node-exporter $ARGS +ExecReload=/bin/kill -HUP $MAINPID +TimeoutStopSec=20s +SendSIGKILL=no + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/reaction@reaction.jsonnet.service b/etc/systemd/system/multi-user.target.wants/reaction@reaction.jsonnet.service new file mode 100644 index 0000000..729b95b --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/reaction@reaction.jsonnet.service @@ -0,0 +1,20 @@ +# vim: ft=systemd +[Unit] +Description=A daemon that scans program outputs for repeated patterns, and takes action. +Documentation=https://reaction.ppom.me +# Ensure reaction will insert its chain after docker has inserted theirs. Only useful when iptables & docker are used +# After=docker.service + +# See `man systemd.exec` and `man systemd.service` for most options below +[Service] +ExecStart=/usr/bin/reaction start -c /etc/%i + +# Ask systemd to create /var/lib/reaction (/var/lib/ is implicit) +StateDirectory=reaction +# Ask systemd to create /run/reaction at runtime (/run/ is implicit) +RuntimeDirectory=reaction +# Start reaction in its state directory +WorkingDirectory=/var/lib/reaction + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/remote-fs.target b/etc/systemd/system/multi-user.target.wants/remote-fs.target new file mode 100644 index 0000000..74011d8 --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/remote-fs.target @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +# +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Remote File Systems +Documentation=man:systemd.special(7) +After=remote-fs-pre.target +DefaultDependencies=no +Conflicts=shutdown.target + +[Install] +WantedBy=multi-user.target diff --git a/etc/systemd/system/multi-user.target.wants/ssh.service b/etc/systemd/system/multi-user.target.wants/ssh.service new file mode 100644 index 0000000..0eb0d67 --- /dev/null +++ b/etc/systemd/system/multi-user.target.wants/ssh.service @@ -0,0 +1,22 @@ +[Unit] +Description=OpenBSD Secure Shell server +Documentation=man:sshd(8) man:sshd_config(5) +After=network.target nss-user-lookup.target auditd.service +ConditionPathExists=!/etc/ssh/sshd_not_to_be_run + +[Service] +EnvironmentFile=-/etc/default/ssh +ExecStartPre=/usr/sbin/sshd -t +ExecStart=/usr/sbin/sshd -D $SSHD_OPTS +ExecReload=/usr/sbin/sshd -t +ExecReload=/bin/kill -HUP $MAINPID +KillMode=process +Restart=on-failure +RestartPreventExitStatus=255 +Type=notify +RuntimeDirectory=sshd +RuntimeDirectoryMode=0755 + +[Install] +WantedBy=multi-user.target +Alias=sshd.service diff --git a/etc/systemd/system/network-online.target.wants/networking.service b/etc/systemd/system/network-online.target.wants/networking.service new file mode 100644 index 0000000..cb5d6b0 --- /dev/null +++ b/etc/systemd/system/network-online.target.wants/networking.service @@ -0,0 +1,22 @@ +[Unit] +Description=Raise network interfaces +Documentation=man:interfaces(5) +DefaultDependencies=no +Wants=network.target ifupdown-pre.service +After=local-fs.target network-pre.target apparmor.service systemd-sysctl.service systemd-modules-load.service ifupdown-pre.service +Before=network.target shutdown.target network-online.target +Conflicts=shutdown.target + +[Install] +WantedBy=multi-user.target +WantedBy=network-online.target + +[Service] +Type=oneshot +EnvironmentFile=-/etc/default/networking +ExecStart=/usr/sbin/ifup -a --read-environment +ExecStart=-/bin/sh -c 'if [ -f /run/network/restart-hotplug ]; then /usr/sbin/ifup -a --read-environment --allow=hotplug; fi' +ExecStop=/usr/sbin/ifdown -a --read-environment --exclude=lo +ExecStopPost=/usr/bin/touch /run/network/restart-hotplug +RemainAfterExit=true +TimeoutStartSec=5min diff --git a/etc/systemd/system/ssh.service.wants/sshd-keygen.service b/etc/systemd/system/ssh.service.wants/sshd-keygen.service new file mode 100644 index 0000000..7ad0460 --- /dev/null +++ b/etc/systemd/system/ssh.service.wants/sshd-keygen.service @@ -0,0 +1,14 @@ +[Unit] +Description=Generate sshd host keys on first boot +ConditionFirstBoot=yes +ConditionPathIsReadWrite=/etc/ssh +ConditionPathIsSymbolicLink=!/etc/ssh +Before=ssh.service sshd.service sshd@.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=ssh-keygen -A + +[Install] +WantedBy=ssh.service sshd.service sshd@.service ssh.socket diff --git a/etc/systemd/system/ssh.socket.wants/sshd-keygen.service b/etc/systemd/system/ssh.socket.wants/sshd-keygen.service new file mode 100644 index 0000000..7ad0460 --- /dev/null +++ b/etc/systemd/system/ssh.socket.wants/sshd-keygen.service @@ -0,0 +1,14 @@ +[Unit] +Description=Generate sshd host keys on first boot +ConditionFirstBoot=yes +ConditionPathIsReadWrite=/etc/ssh +ConditionPathIsSymbolicLink=!/etc/ssh +Before=ssh.service sshd.service sshd@.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=ssh-keygen -A + +[Install] +WantedBy=ssh.service sshd.service sshd@.service ssh.socket diff --git a/etc/systemd/system/sshd.service b/etc/systemd/system/sshd.service new file mode 100644 index 0000000..0eb0d67 --- /dev/null +++ b/etc/systemd/system/sshd.service @@ -0,0 +1,22 @@ +[Unit] +Description=OpenBSD Secure Shell server +Documentation=man:sshd(8) man:sshd_config(5) +After=network.target nss-user-lookup.target auditd.service +ConditionPathExists=!/etc/ssh/sshd_not_to_be_run + +[Service] +EnvironmentFile=-/etc/default/ssh +ExecStartPre=/usr/sbin/sshd -t +ExecStart=/usr/sbin/sshd -D $SSHD_OPTS +ExecReload=/usr/sbin/sshd -t +ExecReload=/bin/kill -HUP $MAINPID +KillMode=process +Restart=on-failure +RestartPreventExitStatus=255 +Type=notify +RuntimeDirectory=sshd +RuntimeDirectoryMode=0755 + +[Install] +WantedBy=multi-user.target +Alias=sshd.service diff --git a/etc/systemd/system/sshd.service.wants/sshd-keygen.service b/etc/systemd/system/sshd.service.wants/sshd-keygen.service new file mode 100644 index 0000000..7ad0460 --- /dev/null +++ b/etc/systemd/system/sshd.service.wants/sshd-keygen.service @@ -0,0 +1,14 @@ +[Unit] +Description=Generate sshd host keys on first boot +ConditionFirstBoot=yes +ConditionPathIsReadWrite=/etc/ssh +ConditionPathIsSymbolicLink=!/etc/ssh +Before=ssh.service sshd.service sshd@.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=ssh-keygen -A + +[Install] +WantedBy=ssh.service sshd.service sshd@.service ssh.socket diff --git a/etc/systemd/system/sshd@.service.wants/sshd-keygen.service b/etc/systemd/system/sshd@.service.wants/sshd-keygen.service new file mode 100644 index 0000000..7ad0460 --- /dev/null +++ b/etc/systemd/system/sshd@.service.wants/sshd-keygen.service @@ -0,0 +1,14 @@ +[Unit] +Description=Generate sshd host keys on first boot +ConditionFirstBoot=yes +ConditionPathIsReadWrite=/etc/ssh +ConditionPathIsSymbolicLink=!/etc/ssh +Before=ssh.service sshd.service sshd@.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=ssh-keygen -A + +[Install] +WantedBy=ssh.service sshd.service sshd@.service ssh.socket diff --git a/etc/systemd/system/suspend-then-hibernate.target.wants/grub-common.service b/etc/systemd/system/suspend-then-hibernate.target.wants/grub-common.service new file mode 100644 index 0000000..e7bdf4b --- /dev/null +++ b/etc/systemd/system/suspend-then-hibernate.target.wants/grub-common.service @@ -0,0 +1,15 @@ +[Unit] +Description=Record successful boot for GRUB +After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target +ConditionPathExists=/boot/grub/grub.cfg + +[Service] +Type=oneshot +Restart=no +ExecStartPre=/bin/sh -c '[ -s /boot/grub/grubenv ] || rm -f /boot/grub/grubenv; mkdir -p /boot/grub' +ExecStart=grub-editenv /boot/grub/grubenv unset recordfail +ExecStartPost=/bin/sh -c 'if grub-editenv /boot/grub/grubenv list | grep -q initrdless_boot_fallback_triggered=1; then echo "grub: GRUB_FORCE_PARTUUID set, initrdless boot paniced, fallback triggered."; fi' +StandardOutput=kmsg + +[Install] +WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target diff --git a/etc/systemd/system/suspend.target.wants/grub-common.service b/etc/systemd/system/suspend.target.wants/grub-common.service new file mode 100644 index 0000000..e7bdf4b --- /dev/null +++ b/etc/systemd/system/suspend.target.wants/grub-common.service @@ -0,0 +1,15 @@ +[Unit] +Description=Record successful boot for GRUB +After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target +ConditionPathExists=/boot/grub/grub.cfg + +[Service] +Type=oneshot +Restart=no +ExecStartPre=/bin/sh -c '[ -s /boot/grub/grubenv ] || rm -f /boot/grub/grubenv; mkdir -p /boot/grub' +ExecStart=grub-editenv /boot/grub/grubenv unset recordfail +ExecStartPost=/bin/sh -c 'if grub-editenv /boot/grub/grubenv list | grep -q initrdless_boot_fallback_triggered=1; then echo "grub: GRUB_FORCE_PARTUUID set, initrdless boot paniced, fallback triggered."; fi' +StandardOutput=kmsg + +[Install] +WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target diff --git a/etc/systemd/system/sysinit.target.wants/apparmor.service b/etc/systemd/system/sysinit.target.wants/apparmor.service new file mode 100644 index 0000000..7f8074d --- /dev/null +++ b/etc/systemd/system/sysinit.target.wants/apparmor.service @@ -0,0 +1,35 @@ +[Unit] +Description=Load AppArmor profiles +DefaultDependencies=no +Before=sysinit.target +After=local-fs.target +After=systemd-journald-audit.socket +RequiresMountsFor=/var/cache/apparmor +AssertPathIsReadWrite=/sys/kernel/security/apparmor/.load +ConditionSecurity=apparmor +Documentation=man:apparmor(7) +Documentation=https://gitlab.com/apparmor/apparmor/wikis/home/ + +# Don't start this unit on the Ubuntu Live CD +ConditionPathExists=!/rofs/etc/apparmor.d + +# Don't start this unit on the Debian Live CD when using overlayfs +ConditionPathExists=!/run/live/overlay/work + +[Service] +Type=oneshot +ExecStart=/lib/apparmor/apparmor.systemd reload +ExecReload=/lib/apparmor/apparmor.systemd reload + +# systemd maps 'restart' to 'stop; start' which means removing AppArmor confinement +# from running processes (and not being able to re-apply it later). +# Upstream systemd developers refused to implement an option that allows overriding +# this behaviour, therefore we have to make ExecStop a no-op to error out on the +# safe side. +# +# If you really want to unload all AppArmor profiles, run aa-teardown +ExecStop=/bin/true +RemainAfterExit=yes + +[Install] +WantedBy=sysinit.target diff --git a/etc/systemd/system/sysinit.target.wants/keyboard-setup.service b/etc/systemd/system/sysinit.target.wants/keyboard-setup.service new file mode 100644 index 0000000..0e5b4c0 --- /dev/null +++ b/etc/systemd/system/sysinit.target.wants/keyboard-setup.service @@ -0,0 +1,14 @@ +[Unit] +Description=Set the console keyboard layout +DefaultDependencies=no +Before=local-fs-pre.target +Wants=local-fs-pre.target +ConditionPathExists=/bin/setupcon + +[Service] +Type=oneshot +ExecStart=/lib/console-setup/keyboard-setup.sh +RemainAfterExit=yes + +[Install] +WantedBy=sysinit.target diff --git a/etc/systemd/system/sysinit.target.wants/systemd-pstore.service b/etc/systemd/system/sysinit.target.wants/systemd-pstore.service new file mode 100644 index 0000000..41db33b --- /dev/null +++ b/etc/systemd/system/sysinit.target.wants/systemd-pstore.service @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +# +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Platform Persistent Storage Archival +Documentation=man:systemd-pstore(8) +ConditionDirectoryNotEmpty=/sys/fs/pstore +ConditionVirtualization=!container +DefaultDependencies=no +Conflicts=shutdown.target +Before=sysinit.target shutdown.target +After=modprobe@efi_pstore.service +Wants=modprobe@efi_pstore.service + +[Service] +Type=oneshot +ExecStart=/usr/lib/systemd/systemd-pstore +RemainAfterExit=yes +StateDirectory=systemd/pstore + +[Install] +WantedBy=sysinit.target diff --git a/etc/systemd/system/timers.target.wants/apt-daily-upgrade.timer b/etc/systemd/system/timers.target.wants/apt-daily-upgrade.timer new file mode 100644 index 0000000..79caf3b --- /dev/null +++ b/etc/systemd/system/timers.target.wants/apt-daily-upgrade.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Daily apt upgrade and clean activities +After=apt-daily.timer + +[Timer] +OnCalendar=*-*-* 6:00 +RandomizedDelaySec=60m +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/etc/systemd/system/timers.target.wants/apt-daily.timer b/etc/systemd/system/timers.target.wants/apt-daily.timer new file mode 100644 index 0000000..3b57962 --- /dev/null +++ b/etc/systemd/system/timers.target.wants/apt-daily.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Daily apt download activities + +[Timer] +OnCalendar=*-*-* 6,18:00 +RandomizedDelaySec=12h +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/etc/systemd/system/timers.target.wants/dpkg-db-backup.timer b/etc/systemd/system/timers.target.wants/dpkg-db-backup.timer new file mode 100644 index 0000000..87392e7 --- /dev/null +++ b/etc/systemd/system/timers.target.wants/dpkg-db-backup.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Daily dpkg database backup timer +Documentation=man:dpkg(1) + +[Timer] +OnCalendar=daily +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/etc/systemd/system/timers.target.wants/e2scrub_all.timer b/etc/systemd/system/timers.target.wants/e2scrub_all.timer new file mode 100644 index 0000000..3d558bb --- /dev/null +++ b/etc/systemd/system/timers.target.wants/e2scrub_all.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Periodic ext4 Online Metadata Check for All Filesystems + +[Timer] +# Run on Sunday at 3:10am, to avoid running afoul of DST changes +OnCalendar=Sun *-*-* 03:10:00 +RandomizedDelaySec=60 +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/etc/systemd/system/timers.target.wants/fstrim.timer b/etc/systemd/system/timers.target.wants/fstrim.timer new file mode 100644 index 0000000..e75d09f --- /dev/null +++ b/etc/systemd/system/timers.target.wants/fstrim.timer @@ -0,0 +1,14 @@ +[Unit] +Description=Discard unused filesystem blocks once a week +Documentation=man:fstrim +ConditionVirtualization=!container +ConditionPathExists=!/etc/initrd-release + +[Timer] +OnCalendar=weekly +AccuracySec=1h +Persistent=true +RandomizedDelaySec=100min + +[Install] +WantedBy=timers.target diff --git a/etc/systemd/system/timers.target.wants/logrotate.timer b/etc/systemd/system/timers.target.wants/logrotate.timer new file mode 100644 index 0000000..148a49c --- /dev/null +++ b/etc/systemd/system/timers.target.wants/logrotate.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Daily rotation of log files +Documentation=man:logrotate(8) man:logrotate.conf(5) + +[Timer] +OnCalendar=daily +RandomizedDelaySec=1h +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/etc/systemd/system/timers.target.wants/phpsessionclean.timer b/etc/systemd/system/timers.target.wants/phpsessionclean.timer new file mode 100644 index 0000000..65d98c5 --- /dev/null +++ b/etc/systemd/system/timers.target.wants/phpsessionclean.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Clean PHP session files every 30 mins + +[Timer] +OnCalendar=*-*-* *:09,39:00 +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/etc/systemd/user.conf b/etc/systemd/user.conf new file mode 100644 index 0000000..ae06e27 --- /dev/null +++ b/etc/systemd/user.conf @@ -0,0 +1,59 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 2.1 of the License, or (at your option) +# any later version. +# +# Entries in this file show the compile time defaults. Local configuration +# should be created by either modifying this file (or a copy of it placed in +# /etc/ if the original file is shipped in /usr/), or by creating "drop-ins" in +# the /etc/systemd/user.conf.d/ directory. The latter is generally recommended. +# Defaults can be restored by simply deleting the main configuration file and +# all drop-ins located in /etc/. +# +# Use 'systemd-analyze cat-config systemd/user.conf' to display the full config. +# +# See systemd-user.conf(5) for details. + +[Manager] +#LogLevel=info +#LogTarget=auto +#LogColor=yes +#LogLocation=no +#LogTime=no +#SystemCallArchitectures= +#TimerSlackNSec= +#StatusUnitFormat=combined +#DefaultTimerAccuracySec=1min +#DefaultStandardOutput=inherit +#DefaultStandardError=inherit +#DefaultTimeoutStartSec=90s +#DefaultTimeoutStopSec=90s +#DefaultTimeoutAbortSec= +#DefaultDeviceTimeoutSec=90s +#DefaultRestartSec=100ms +#DefaultStartLimitIntervalSec=10s +#DefaultStartLimitBurst=5 +#DefaultEnvironment= +#DefaultLimitCPU= +#DefaultLimitFSIZE= +#DefaultLimitDATA= +#DefaultLimitSTACK= +#DefaultLimitCORE= +#DefaultLimitRSS= +#DefaultLimitNOFILE= +#DefaultLimitAS= +#DefaultLimitNPROC= +#DefaultLimitMEMLOCK= +#DefaultLimitLOCKS= +#DefaultLimitSIGPENDING= +#DefaultLimitMSGQUEUE= +#DefaultLimitNICE= +#DefaultLimitRTPRIO= +#DefaultLimitRTTIME= +#DefaultMemoryPressureThresholdSec=200ms +#DefaultMemoryPressureWatch=auto +#DefaultSmackProcessLabel= +#ReloadLimitIntervalSec= +#ReloadLimitBurst diff --git a/etc/systemd/user/sockets.target.wants/keyboxd.socket b/etc/systemd/user/sockets.target.wants/keyboxd.socket new file mode 100644 index 0000000..d4572f1 --- /dev/null +++ b/etc/systemd/user/sockets.target.wants/keyboxd.socket @@ -0,0 +1,11 @@ +[Unit] +Description=GnuPG public key management service +Documentation=man:keyboxd(8) + +[Socket] +ListenStream=%t/gnupg/S.keyboxd +SocketMode=0600 +DirectoryMode=0700 + +[Install] +WantedBy=sockets.target diff --git a/etc/systemd/user/sockets.target.wants/ssh-agent.socket b/etc/systemd/user/sockets.target.wants/ssh-agent.socket new file mode 100644 index 0000000..9980c36 --- /dev/null +++ b/etc/systemd/user/sockets.target.wants/ssh-agent.socket @@ -0,0 +1,13 @@ +[Unit] +Description=OpenSSH Agent socket +Documentation=man:ssh-agent(1) +Before=graphical-session-pre.target + +[Socket] +SocketMode=0600 +ListenStream=%t/openssh_agent +ExecStartPost=/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=%t/openssh_agent +ExecStopPre=/usr/bin/systemctl --user unset-environment SSH_AUTH_SOCK + +[Install] +WantedBy=sockets.target