Initial commit

This commit is contained in:
2025-11-06 20:28:41 +01:00
commit 5fc4fbcef3
182 changed files with 4742 additions and 0 deletions

87
.gitignore vendored Normal file
View File

@@ -0,0 +1,87 @@
# Covers JetBrains IDEs: IntelliJ, GoLand, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
.idea/sonarlint.xml # see https://community.sonarsource.com/t/is-the-file-idea-idea-idea-sonarlint-xml-intended-to-be-under-source-control/121119
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based HTTP Client
.idea/httpRequests
http-client.private.env.json
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
# Apifox Helper cache
.idea/.cache/.Apifox_Helper
.idea/ApifoxUploaderProjectSetting.xml
**/*.ign
*.iml
data/

8
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@@ -0,0 +1,741 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="AbsoluteAlignmentInUserInterface" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AbstractClassExtendsConcreteClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AbstractClassNeverImplemented" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AbstractMethodCallInConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AbstractMethodOverridesAbstractMethod" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AbstractMethodOverridesConcreteMethod" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AbstractMethodWithMissingImplementations" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AccessToNonThreadSafeStaticFieldFromInstance" enabled="true" level="WARNING" enabled_by_default="true">
<option name="nonThreadSafeClasses">
<value />
</option>
<option name="nonThreadSafeTypes" value="" />
</inspection_tool>
<inspection_tool class="AccessToStaticFieldLockedOnInstance" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AlphaUnsortedPropertiesFile" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
<inspection_tool class="AmbiguousFieldAccess" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AmbiguousMethodCall" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AnonymousClassMethodCount" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_limit" value="1" />
</inspection_tool>
<inspection_tool class="AnonymousClassVariableHidesContainingMethodVariable" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AnonymousInnerClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AnonymousInnerClassMayBeStatic" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ArrayEquality" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AssertEqualsCalledOnArray" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AssertMessageNotString" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AssertsWithoutMessages" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AssignmentOrReturnOfFieldWithMutableType" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AssignmentToForLoopParameter" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_checkForeachParameters" value="true" />
</inspection_tool>
<inspection_tool class="AssignmentToForLoopParameterJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AssignmentToFunctionParameterJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AssignmentToLambdaParameter" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AssignmentToMethodParameter" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreTransformationOfOriginalParameter" value="false" />
</inspection_tool>
<inspection_tool class="AssignmentToNull" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreAssignmentsToFields" value="true" />
</inspection_tool>
<inspection_tool class="AssignmentToStaticFieldFromInstanceMethod" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AssignmentToSuperclassField" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,ch.bger.common.dbhelper.impl.AbstractDatabaseQuerier,connection|internalConnection,ch.bger.ajonline.client.AbstractClient,client" />
</inspection_tool>
<inspection_tool class="AutoTupling" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AwaitNotInLoop" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="AwaitWithoutCorrespondingSignal" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BadExceptionCaught" enabled="true" level="WARNING" enabled_by_default="true">
<option name="exceptionsString" value="" />
<option name="exceptions">
<value />
</option>
</inspection_tool>
<inspection_tool class="BadExceptionDeclared" enabled="true" level="WARNING" enabled_by_default="true">
<option name="exceptionsString" value="" />
<option name="exceptions">
<value />
</option>
<option name="ignoreTestCases" value="false" />
<option name="ignoreLibraryOverrides" value="false" />
</inspection_tool>
<inspection_tool class="BadExceptionThrown" enabled="true" level="WARNING" enabled_by_default="true">
<option name="exceptionsString" value="" />
<option name="exceptions">
<value />
</option>
</inspection_tool>
<inspection_tool class="BadOddness" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BigDecimalEquals" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BlockMarkerComments" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BlockStatementJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BooleanExpressionMayBeConditional" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BooleanMethodIsAlwaysInverted" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="BooleanMethodNameMustStartWithQuestion" enabled="false" level="WARNING" enabled_by_default="false">
<option name="ignoreBooleanMethods" value="false" />
<option name="ignoreInAnnotationInterface" value="true" />
<option name="onlyWarnOnBaseMethods" value="true" />
<option name="questionString" value="add,are,can,check,contains,could,endsWith,equals,has,is,matches,must,put,remove,shall,should,startsWith,was,were,will,would" />
</inspection_tool>
<inspection_tool class="BooleanParameter" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BoundedWildcard" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BreakStatement" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BreakStatementJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BreakStatementWithLabel" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BreakStatementWithLabelJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="BulkFileAttributesRead" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CallToNativeMethodWhileLocked" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CallToSimpleGetterInClass" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreGetterCallsOnOtherObjects" value="false" />
<option name="onlyReportPrivateGetter" value="false" />
</inspection_tool>
<inspection_tool class="CallToSimpleSetterInClass" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreSetterCallsOnOtherObjects" value="false" />
<option name="onlyReportPrivateSetter" value="false" />
</inspection_tool>
<inspection_tool class="CallToStringConcatCanBeReplacedByOperator" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CastConflictsWithInstanceof" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CastToIncompatibleInterface" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ChainedEqualityJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ChainedFunctionCallJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ChannelResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="insideTryAllowed" value="false" />
</inspection_tool>
<inspection_tool class="ClassIndependentOfModule" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ClassNameDiffersFromFileName" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ClassNewInstance" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ClassOnlyUsedInOneModule" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ClassOnlyUsedInOnePackage" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ClassReferencesSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ClassUnconnectedToPackage" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ClassWithMultipleLoggers" enabled="true" level="WARNING" enabled_by_default="true">
<option name="loggerNamesString" value="java.util.logging.Logger,org.slf4j.Logger,org.apache.commons.logging.Log,org.apache.log4j.Logger,org.apache.logging.log4j.Logger" />
</inspection_tool>
<inspection_tool class="ClassWithOnlyPrivateConstructors" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CloneCallsConstructors" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CloneInNonCloneableClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CloneReturnsClassType" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CloneableImplementsClone" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreCloneableDueToInheritance" value="false" />
</inspection_tool>
<inspection_tool class="CollectionsFieldAccessReplaceableByMethodCall" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ComparableImplementedButEqualsNotOverridden" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ComparatorNotSerializable" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CompareToUsesNonFinalVariable" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ConditionSignal" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ConditionalExpressionWithIdenticalBranchesJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ConfusingFloatingPointLiteral" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ConfusingOctalEscape" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ConfusingPlusesOrMinusesJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ConnectionResource" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ConstantAssertArgument" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ConstantAssertCondition" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ConstantDeclaredInInterface" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ConstantJUnitAssertArgument" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ConstantMathCall" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ContinueStatement" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ContinueStatementJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ContinueStatementWithLabel" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ContinueStatementWithLabelJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CovariantEquals" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CyclicClassDependency" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="CyclicPackageDependency" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DateToString" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DeclareCollectionAsInterface" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreLocalVariables" value="false" />
<option name="ignorePrivateMethodsAndFields" value="false" />
</inspection_tool>
<inspection_tool class="DeconstructionCanBeUsed" enabled="true" level="INFORMATION" enabled_by_default="true" />
<inspection_tool class="DefaultNotLastCaseInSwitchJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DisjointPackage" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DivideByZeroJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DocumentWriteJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DollarSignInName" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DoubleLiteralMayBeFloatLiteral" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DriverManagerGetConnection" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DuplicateBooleanBranch" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DuplicateConditionJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DuplicatePropertyInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DynamicRegexReplaceableByCompiledPattern" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DynamicallyGeneratedCodeJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="EmptyCatchBlockJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="EmptyClass" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignorableAnnotations">
<value />
</option>
<option name="ignoreClassWithParameterization" value="false" />
<option name="ignoreThrowables" value="true" />
<option name="commentsAreContent" value="true" />
</inspection_tool>
<inspection_tool class="EmptyDirectory" enabled="true" level="WEAK WARNING" enabled_by_default="true" editorAttributes="INFO_ATTRIBUTES">
<option name="onlyReportDirectoriesUnderSourceRoots" value="true" />
</inspection_tool>
<inspection_tool class="EmptyTryBlockJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="EnhancedSwitchBackwardMigration" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="EnumerationCanBeIteration" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="EqualsAndHashcode" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="EqualsCalledOnEnumConstant" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="EqualsUsesNonFinalVariable" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ErrorRethrown" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ExceptionFromCatchWhichDoesntWrap" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreGetMessage" value="true" />
<option name="ignoreCantWrap" value="false" />
</inspection_tool>
<inspection_tool class="ExceptionNameDoesntEndWithException" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ExceptionPackage" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ExpectedExceptionNeverThrown" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ExtendsConcreteCollection" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ExtendsThread" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ExtendsThrowable" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ExtendsUtilityClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ExternalizableWithSerializationMethods" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="FallthruInSwitchStatement" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="FieldAccessedSynchronizedAndUnsynchronized" enabled="true" level="WARNING" enabled_by_default="true">
<option name="countGettersAndSetters" value="false" />
</inspection_tool>
<inspection_tool class="FieldHasSetterButNoGetter" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="FieldHidesSuperclassField" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreInvisibleFields" value="true" />
</inspection_tool>
<inspection_tool class="FieldMayBeStatic" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="FilterSetContains" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="Finalize" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreTrivialFinalizers" value="true" />
</inspection_tool>
<inspection_tool class="FloatingPointEquality" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="FlowJSCoverage" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
<inspection_tool class="FlowJSError" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="ForLoopReplaceableByWhileJS" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreLoopsWithoutConditions" value="false" />
</inspection_tool>
<inspection_tool class="ForLoopWithMissingComponent" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreCollectionLoops" value="false" />
</inspection_tool>
<inspection_tool class="FunctionWithInconsistentReturnsJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="GjsLint" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="Guava" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="HibernateResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="insideTryAllowed" value="false" />
</inspection_tool>
<inspection_tool class="HtmlTagCanBeJavadocTag" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="IOResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredTypesString" value="java.io.ByteArrayOutputStream,java.io.ByteArrayInputStream,java.io.StringBufferInputStream,java.io.CharArrayWriter,java.io.CharArrayReader,java.io.StringWriter,java.io.StringReader" />
<option name="insideTryAllowed" value="false" />
</inspection_tool>
<inspection_tool class="IfMayBeConditional" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="IgnoredJUnitTest" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="IllegalDependencyOnInternalPackage" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="ImplicitDefaultCharsetUsage" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="InconsistentLanguageLevel" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="InconsistentLineSeparators" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="IncorrectFormatting" enabled="false" level="WEAK WARNING" enabled_by_default="false">
<scope name="Project Files" level="WEAK WARNING" enabled="false">
<option name="reportPerFile" value="true" />
</scope>
<option name="reportPerFile" value="true" />
</inspection_tool>
<inspection_tool class="InnerClassOnInterface" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreInnerInterfaces" value="true" />
</inspection_tool>
<inspection_tool class="InnerClassReferencedViaSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="InnerClassVariableHidesOuterClassVariable" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreInvisibleFields" value="true" />
</inspection_tool>
<inspection_tool class="InnerHTMLJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="InstanceofCatchParameter" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="InstanceofChain" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreInstanceofOnLibraryClasses" value="false" />
</inspection_tool>
<inspection_tool class="InstanceofIncompatibleInterface" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="InstanceofThis" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="IntLiteralMayBeLongLiteral" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="InterfaceMayBeAnnotatedFunctional" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="InterfaceNeverImplemented" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreInterfacesThatOnlyDeclareConstants" value="false" />
</inspection_tool>
<inspection_tool class="IteratorNextDoesNotThrowNoSuchElementException" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="JDBCResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="insideTryAllowed" value="false" />
</inspection_tool>
<inspection_tool class="JNDIResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="insideTryAllowed" value="false" />
</inspection_tool>
<inspection_tool class="JSEqualityComparisonWithCoercion.TS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="JSHint" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="JSLint" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="JUnit5Converter" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="JUnitDatapoint" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="JUnitRule" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="JavaAnnotator" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
<scope name="Tests" level="WARNING" enabled="false">
<option name="TOP_LEVEL_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="package" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="INNER_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="package" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="METHOD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="package" />
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
</value>
</option>
<option name="FIELD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="IGNORE_DEPRECATED" value="false" />
<option name="IGNORE_JAVADOC_PERIOD" value="false" />
<option name="IGNORE_DUPLICATED_THROWS" value="false" />
<option name="IGNORE_POINT_TO_ITSELF" value="false" />
<option name="myAdditionalJavadocTags" value="" />
<option name="MODULE_OPTIONS">
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="public" />
<option name="REQUIRED_TAGS" value="" />
</option>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="public" />
<option name="REQUIRED_TAGS" value="" />
</scope>
<option name="TOP_LEVEL_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="package" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="INNER_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="package" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="METHOD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="package" />
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
</value>
</option>
<option name="FIELD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="IGNORE_DEPRECATED" value="false" />
<option name="IGNORE_JAVADOC_PERIOD" value="true" />
<option name="IGNORE_DUPLICATED_THROWS" value="false" />
<option name="IGNORE_POINT_TO_ITSELF" value="false" />
<option name="myAdditionalJavadocTags" value="" />
<option name="MODULE_OPTIONS">
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="public" />
<option name="REQUIRED_TAGS" value="" />
</option>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="public" />
<option name="REQUIRED_TAGS" value="" />
</inspection_tool>
<inspection_tool class="JavaLangImport" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="JavadocDeclaration" enabled="true" level="WARNING" enabled_by_default="true">
<scope name="Tests" level="WARNING" enabled="false">
<option name="IGNORE_PERIOD_PROBLEM" value="false" />
</scope>
</inspection_tool>
<inspection_tool class="JavadocHtmlLint" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="Jscs" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="KeySetIterationMayUseEntrySet" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="KotlinAnnotator" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="LabeledStatement" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="LabeledStatementJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="LambdaParameterHidingMemberVariable" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="LegacyStringFormatting" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="LengthOneStringInIndexOf" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ListenerMayUseAdapter" enabled="true" level="WARNING" enabled_by_default="true">
<option name="checkForEmptyMethods" value="true" />
</inspection_tool>
<inspection_tool class="LocalCanBeFinal" enabled="true" level="WARNING" enabled_by_default="true">
<option name="REPORT_VARIABLES" value="true" />
<option name="REPORT_PARAMETERS" value="true" />
</inspection_tool>
<inspection_tool class="LocalVariableHidingMemberVariable" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreInvisibleFields" value="true" />
<option name="m_ignoreStaticMethods" value="true" />
</inspection_tool>
<inspection_tool class="LoggerInitializedWithForeignClass" enabled="true" level="WARNING" enabled_by_default="true">
<option name="loggerFactoryMethodName" value="getLogger,getLogger,getLog,getLogger" />
</inspection_tool>
<inspection_tool class="LoggingConditionDisagreesWithLogStatement" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="LoopWithImplicitTerminationCondition" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MagicNumberJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MalformedRegex" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MalformedSetUpTearDown" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MapGetOrElse" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MapReplaceableByEnumMap" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MarkerInterface" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MethodMayBeStatic" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_onlyPrivateOrFinal" value="false" />
<option name="m_ignoreEmptyMethods" value="true" />
</inspection_tool>
<inspection_tool class="MethodNameSameAsParentName" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MethodOnlyUsedFromInnerClass" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreMethodsAccessedFromAnonymousClass" value="false" />
<option name="ignoreStaticMethodsFromNonStaticInnerClass" value="false" />
<option name="onlyReportStaticMethods" value="false" />
</inspection_tool>
<inspection_tool class="MethodOverloadsParentMethod" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MethodOverridesInaccessibleMethodOfSuper" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MethodOverridesStaticMethod" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MigrateAssertToMatcherAssert" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MisorderedAssertEqualsParameters" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MissingDeprecatedAnnotation" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MissingJavadoc" enabled="true" level="WARNING" enabled_by_default="true">
<scope name="Tests" level="WARNING" enabled="false">
<option name="TOP_LEVEL_CLASS_SETTINGS">
<Options>
<option name="MINIMAL_VISIBILITY" value="package" />
</Options>
</option>
<option name="INNER_CLASS_SETTINGS">
<Options>
<option name="MINIMAL_VISIBILITY" value="package" />
</Options>
</option>
<option name="METHOD_SETTINGS">
<Options>
<option name="MINIMAL_VISIBILITY" value="package" />
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
</Options>
</option>
<option name="FIELD_SETTINGS">
<Options>
<option name="ENABLED" value="false" />
</Options>
</option>
</scope>
<option name="IGNORE_DEPRECATED_ELEMENTS" value="true" />
<option name="IGNORE_ACCESSORS" value="true" />
<option name="TOP_LEVEL_CLASS_SETTINGS">
<Options>
<option name="MINIMAL_VISIBILITY" value="package" />
</Options>
</option>
<option name="INNER_CLASS_SETTINGS">
<Options>
<option name="MINIMAL_VISIBILITY" value="protected" />
</Options>
</option>
<option name="METHOD_SETTINGS">
<Options>
<option name="MINIMAL_VISIBILITY" value="protected" />
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
</Options>
</option>
<option name="FIELD_SETTINGS">
<Options>
<option name="ENABLED" value="false" />
</Options>
</option>
</inspection_tool>
<inspection_tool class="MissortedModifiers" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_requireAnnotationsFirst" value="true" />
</inspection_tool>
<inspection_tool class="MisspelledEquals" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MisspelledMethodName" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MultipleExceptionsDeclaredOnTestMethod" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="MultipleTopLevelClassesInFile" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NativeMethods" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NegatedConditional" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreNegatedNullComparison" value="false" />
<option name="m_ignoreNegatedZeroComparison" value="false" />
</inspection_tool>
<inspection_tool class="NegatedConditionalExpression" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NegatedConditionalExpressionJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NegatedEqualityExpression" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NegatedIfElse" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreNegatedNullComparison" value="false" />
<option name="m_ignoreNegatedZeroComparison" value="false" />
</inspection_tool>
<inspection_tool class="NegatedIfStatementJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NestedAssignment" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NestedSynchronizedStatement" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NewExceptionWithoutArguments" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonExceptionNameEndsWithException" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonFinalFieldOfException" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonFinalStaticVariableUsedInClassInitialization" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonFinalUtilityClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonProtectedConstructorInAbstractClass" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreNonPublicClasses" value="false" />
</inspection_tool>
<inspection_tool class="NonPublicClone" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonReproducibleMathCall" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonSerializableFieldInSerializableClass" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignorableAnnotations">
<value />
</option>
<option name="ignoreAnonymousInnerClasses" value="false" />
<option name="superClassString" value="java.awt.Component" />
</inspection_tool>
<inspection_tool class="NonSerializableObjectBoundToHttpSession" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonSerializableObjectPassedToObjectStream" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonShortCircuitBoolean" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonShortCircuitBooleanExpressionJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonStaticFinalLogger" enabled="true" level="WARNING" enabled_by_default="true">
<option name="loggerClassName" value="java.util.logging.Logger,org.slf4j.Logger,org.apache.commons.logging.Log,org.apache.log4j.Logger,org.apache.logging.log4j.Logger" />
</inspection_tool>
<inspection_tool class="NonSynchronizedMethodOverridesSynchronizedMethod" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NonThreadSafeLazyInitialization" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NullThrown" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="NumericToString" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ObjectAllocationInLoop" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ObjectInstantiationInEqualsHashCode" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ObjectNotify" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ObsoleteCollection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreRequiredObsoleteCollectionTypes" value="true" />
</inspection_tool>
<inspection_tool class="OctalAndDecimalIntegersMixed" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="OnDemandImport" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="OptionalContainsCollection" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="OverloadedVarargsMethod" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="OverlyStrongTypeCast" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreInMatchingInstanceof" value="true" />
</inspection_tool>
<inspection_tool class="OverridableMethodCallDuringObjectConstruction" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="OverriddenMethodCallDuringObjectConstruction" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PackageDotHtmlMayBePackageInfo" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PackageInMultipleModules" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PackageVisibleField" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ParameterHidingMemberVariable" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreInvisibleFields" value="true" />
<option name="m_ignoreStaticMethodParametersHidingInstanceFields" value="true" />
<option name="m_ignoreForConstructors" value="true" />
<option name="m_ignoreForPropertySetters" value="true" />
<option name="m_ignoreForAbstractMethods" value="true" />
</inspection_tool>
<inspection_tool class="ParameterNameDiffersFromOverriddenParameter" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreSingleCharacterNames" value="false" />
<option name="m_ignoreOverridesOfLibraryMethods" value="false" />
</inspection_tool>
<inspection_tool class="ParameterTypePreventsOverriding" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ParameterizedParametersStaticCollection" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PlatformDetectionJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PointlessIndexOfComparison" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PostfixMethodCall" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ProblematicVarargsMethodOverride" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ProblematicWhitespace" enabled="true" level="WARNING" enabled_by_default="false">
<scope name="Project Files" level="WARNING" enabled="true" />
</inspection_tool>
<inspection_tool class="PropertyValueSetToItself" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ProtectedField" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PublicConstructorInNonPublicClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PublicFieldAccessedInSynchronizedContext" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PublicMethodNotExposedInInterface" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignorableAnnotations">
<value />
</option>
<option name="onlyWarnIfContainingClassImplementsAnInterface" value="false" />
</inspection_tool>
<inspection_tool class="PyAugmentAssignmentInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
<inspection_tool class="PyClassicStyleClassInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PyCompatibilityInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ourVersions">
<value>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="3.13" />
</list>
</value>
</option>
</inspection_tool>
<inspection_tool class="PyMissingTypeHintsInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
<inspection_tool class="QodanaJavaSanity" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="QodanaKotlinSanity" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="QsUndeclaredPathMimeTypesInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
<inspection_tool class="RandomDoubleForRandomInteger" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ReadObjectAndWriteObjectPrivate" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ReadObjectInitialization" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ReadResolveAndWriteReplaceProtected" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="RecordStoreResource" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="RedundantExplicitVariableType" enabled="true" level="WEAK WARNING" enabled_by_default="true" editorAttributes="INFO_ATTRIBUTES" />
<inspection_tool class="RedundantFieldInitialization" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="RedundantImplements" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreSerializable" value="false" />
<option name="ignoreCloneable" value="false" />
</inspection_tool>
<inspection_tool class="RegExpAnonymousGroup" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="RelativeImport" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ReplaceAssignmentWithOperatorAssignment" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreLazyOperators" value="true" />
<option name="ignoreObscureOperators" value="false" />
</inspection_tool>
<inspection_tool class="ReplaceAssignmentWithOperatorAssignmentJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ResultOfObjectAllocationIgnored" enabled="true" level="WARNING" enabled_by_default="true">
<scope name="Tests" level="WARNING" enabled="false" />
</inspection_tool>
<inspection_tool class="ResultSetIndexZero" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ReturnOfInnerClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ReuseOfLocalVariableJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="RuntimeExec" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SafeLock" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SamePackageImport" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ScalaBundledInsRunner" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SerializableInnerClassWithNonSerializableOuterClass" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreAnonymousInnerClasses" value="false" />
<option name="superClassString" value="java.awt.Component" />
</inspection_tool>
<inspection_tool class="SerializableWithUnconstructableAncestor" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SetReplaceableByEnumSet" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SharedThreadLocalRandom" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SideEffectsInMonadicTransformation" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SimplifiableAnnotation" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SimplifiableEqualsExpression" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="Singleton" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SleepWhileHoldingLock" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SocketResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="insideTryAllowed" value="false" />
</inspection_tool>
<inspection_tool class="SqlGotoInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StandardJS" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="StaticCallOnSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StaticFieldReferenceOnSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StaticGuardedByInstance" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StaticInheritance" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StaticNonFinalField" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StaticPseudoFunctionalStyleMethod" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StringBufferField" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StringConcatenationArgumentToLogCall" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StringConcatenationInFormatCall" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StringConcatenationInMessageFormatCall" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StringConcatenationMissingWhitespace" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StringLiteralBreaksHTMLJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="StringReplaceableByStringBuffer" enabled="true" level="WARNING" enabled_by_default="true">
<option name="onlyWarnOnLoop" value="false" />
</inspection_tool>
<inspection_tool class="SubtractionInCompareTo" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SuperTearDownInFinally" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SuppressionAnnotation" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SuspiciousArrayCast" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SuspiciousGetterSetter" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SuspiciousLiteralUnderscore" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SuspiciousLocalesLanguages" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SynchronizationOnStaticField" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SynchronizeOnLock" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SynchronizeOnThis" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SynchronizedMethod" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_includeNativeMethods" value="true" />
<option name="ignoreSynchronizedSuperMethods" value="true" />
</inspection_tool>
<inspection_tool class="SynchronizedOnLiteralObject" enabled="true" level="WARNING" enabled_by_default="true">
<option name="warnOnAllPossiblyLiterals" value="true" />
</inspection_tool>
<inspection_tool class="SystemExit" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreInMainMethod" value="true" />
</inspection_tool>
<inspection_tool class="SystemGC" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SystemGetenv" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="SystemOutErr" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="TailRecursionJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="TestCaseInProductCode" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="TestCaseWithNoTestMethods" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="TestInProductSource" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="TestMethodInProductCode" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="TestMethodWithoutAssertion" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="TestOnlyProblems" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="TextBlockBackwardMigration" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="ThisEscapedInConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ThreadDeathRethrown" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ThreadDumpStack" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ThreadLocalNotStaticFinal" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ThreadPriority" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ThreadStartInConstruction" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ThreadStopSuspendResume" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ThreadYield" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="ThrowCaughtLocally" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreRethrownExceptions" value="false" />
</inspection_tool>
<inspection_tool class="TimeToString" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="TooBroadCatch" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreThrown" value="true" />
</inspection_tool>
<inspection_tool class="TooBroadThrows" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreLibraryOverrides" value="true" />
<option name="ignoreThrown" value="true" />
</inspection_tool>
<inspection_tool class="TransientFieldNotInitialized" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="TsLint" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="TypeMayBeWeakened" enabled="true" level="WARNING" enabled_by_default="true">
<option name="useRighthandTypeAsWeakestTypeInAssignments" value="true" />
<option name="useParameterizedTypeForCollectionMethods" value="true" />
<option name="doNotWeakenToJavaLangObject" value="true" />
<option name="onlyWeakentoInterface" value="true" />
<option name="doNotWeakenInferredVariableType" value="true" />
</inspection_tool>
<inspection_tool class="TypeParameterExtendsFinalClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnconditionalWait" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnnecessarilyQualifiedStaticUsage" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreStaticFieldAccesses" value="false" />
<option name="m_ignoreStaticMethodCalls" value="false" />
<option name="m_ignoreStaticAccessFromStaticContext" value="false" />
</inspection_tool>
<inspection_tool class="UnnecessarilyQualifiedStaticallyImportedElement" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnnecessaryConstantArrayCreationExpression" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnnecessaryConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnnecessaryExplicitNumericCast" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnnecessaryInheritDoc" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnnecessaryJavaDocLink" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreInlineLinkToSuper" value="false" />
</inspection_tool>
<inspection_tool class="UnnecessarySuperConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnnecessarySuperQualifier" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnreachableCode" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnstableTypeUsedInSignature" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UnusedCatchParameterJS" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_ignoreCatchBlocksWithComments" value="false" />
</inspection_tool>
<inspection_tool class="UnusedLibrary" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UpperCaseFieldNameNotConstant" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UseEllipsisInPropertyInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UseOfAWTPeerClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UseOfAnotherObjectsPrivateField" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreSameClass" value="false" />
<option name="ignoreEquals" value="false" />
</inspection_tool>
<inspection_tool class="UseOfClone" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UseOfJDBCDriverClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UseOfObsoleteAssert" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UseOfObsoleteDateTimeApi" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UseOfPropertiesAsHashtable" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UseOfSunClasses" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UtilityClassWithPublicConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="UtilityClassWithoutPrivateConstructor" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignorableAnnotations">
<value />
</option>
<option name="ignoreClassesWithOnlyMain" value="false" />
</inspection_tool>
<inspection_tool class="VarargParameter" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="VariablePatternShadow" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="VariableTypeCanBeExplicit" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="VoidExpressionJS" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="VolatileArrayField" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="WaitCalledOnCondition" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="WaitNotInLoop" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="WaitNotifyNotInSynchronizedContext" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="WaitOrAwaitWithoutTimeout" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="WaitWithoutCorrespondingNotify" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="WeakerAccess" enabled="true" level="WARNING" enabled_by_default="true">
<option name="SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS" value="true" />
<option name="SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES" value="true" />
<option name="SUGGEST_PRIVATE_FOR_INNERS" value="true" />
</inspection_tool>
<inspection_tool class="ZeroLengthArrayInitialization" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>

6
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/ignition.iml" filepath="$PROJECT_DIR$/ignition.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

16
files/add-secrets.sh Normal file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -o errexit -o pipefail -o noclobber -o nounset -o errtrace -o functrace
file="$1"
if [[ ! -f "${file}" ]]; then
echo "File ${file} does not exist"
exit 1
fi
while read -r line; do
secret="${line%%=*}"
value="${line#*=}"
echo "Adding secret ${secret}"
printf '%s' "${value}" | podman secret create "${secret}" -
done < "${file}"
rm -f "${file}"

9
files/copy-music.service Normal file
View File

@@ -0,0 +1,9 @@
[Unit]
Description=Copies the music from Nextcloud to Navidrome
[Service]
Type=oneshot
ExecStart=/root/scripts/copy-music.sh
[Install]
WantedBy=multi-user.target

11
files/copy-music.timer Normal file
View File

@@ -0,0 +1,11 @@
[Unit]
Description=Timer for the copy-music service
[Timer]
OnCalendar=12:00:00
OnCalendar=20:00:00
Persistent=true
Unit=copy-music.service
[Install]
WantedBy=timers.target

View File

@@ -0,0 +1,27 @@
[Unit]
Description=Layer packages with rpm-ostree
Wants=network-online.target
After=network-online.target
# We run before `zincati.service` to avoid conflicting rpm-ostree
# transactions.
Before=zincati.service
ConditionPathExists=!/var/lib/additional-packages.stamp
[Service]
Type=oneshot
RemainAfterExit=yes
# `--allow-inactive` ensures that rpm-ostree does not return an error
# if the package is already installed. This is useful if the package is
# added to the root image in a future Fedora CoreOS release as it will
# prevent the service from failing.
ExecStart=/usr/bin/rpm-ostree install -y --allow-inactive firewalld fail2ban fail2ban-firewalld setroubleshoot-server setools
ExecStart=/bin/touch /var/lib/additional-packages.stamp
ExecStart=/bin/systemctl enable configure-firewalld.service enable-all-quadlets.service move-downloads-nextcloud.timer copy-music.timer
ExecStart=semanage fcontext -a -t bin_t "/var/opt/bin(/.*)?"
ExecStart=semanage fcontext -a -t bin_t "/root/scripts(/.*)?"
ExecStart=restorecon -vR /var/opt/bin
ExecStart=restorecon -vR /root/scripts
ExecStart=/bin/systemctl --no-block reboot
[Install]
WantedBy=multi-user.target

9
files/jail.local Normal file
View File

@@ -0,0 +1,9 @@
[DEFAULT]
banaction = firewallcmd-rich-rules[actiontype=]
banaction_allports = firewallcmd-rich-rules[actiontype=]
bantime = 1h
bantime.multipliers = 1 5 30 60 300 720 1440 2880
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true

View File

@@ -0,0 +1,9 @@
[Unit]
Description=Move the completed torrents and jdownloader downloads to nextcloud
[Service]
Type=oneshot
ExecStart=/root/scripts/move-downloads-nextcloud.sh
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,11 @@
[Unit]
Description=Timer for the move-downloads-nextcloud service
[Timer]
OnCalendar=12:00:00
OnCalendar=20:00:00
Persistent=true
Unit=move-downloads-nextcloud.service
[Install]
WantedBy=timers.target

1
files/poweroff Normal file
View File

@@ -0,0 +1 @@
homeassistant ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown

2
files/smartd.conf Normal file
View File

@@ -0,0 +1,2 @@
/dev/disk/by-id/ata-WDC_WD120EFBX-68B0EN0_5QKYB19B -a -o on -S on -n standby,q -s (S/../.././12|L/../01/./08) -W 4,45,60 -m tga
/dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B00K2ELD -a -o on -S on -n standby,q -s (S/../.././12|L/../01/./08) -W 4,45,60 -m tga

2
files/sshd_config Normal file
View File

@@ -0,0 +1,2 @@
PasswordAuthentication no
AllowUsers tga homeassistant git

87
generate-config.sh Executable file
View File

@@ -0,0 +1,87 @@
#!/bin/bash
set -o errexit -o pipefail -o noclobber -o nounset -o errtrace -o functrace
shopt -s dotglob
quadlet_template="
- path: /home/__USER__/.config/containers/systemd/user/__FILE__
mode: 0644
contents:
local: quadlets/__USER__/__FILE__
user:
name: __USER__
group:
name: __USER__"
home_template="
- path: /var/home/__USER__/__FILE__
mode: 0755
contents:
local: home/__USER__/__FILE__
user:
name: __USER__
group:
name: __USER__"
service_template="
- path: /var/home/__USER__/.config/systemd/user/__FILE__
mode: 0755
contents:
local: services/__USER__/__FILE__
user:
name: __USER__
group:
name: __USER__"
directory_template="
- path: /var/mnt/nas/containers/__USER__/storage/__VOLUME__
mode: 0755
user:
name: __USER__
group:
name: __USER__"
files_template="
files:
- path: /var/lib/systemd/linger/__USER__
mode: 0644"
users=('arr' 'gitea' 'homeassistant' 'jdownloader' 'kiwix' 'komga' 'navidrome' 'nextcloud' 'nginx' 'pairdrop' 'paperless' 'pihole' 'qbittorrent' 'synapse' 'tga' 'wallabag')
mkdir -p users
for user in "${users[@]}"; do
user_butane="users/${user}.bu"
sed "s/__USER__/${user}/g" user-template.bu >| "${user_butane}"
if [[ -d "quadlets/${user}" ]]; then
directory_template_user="${directory_template//__USER__/${user}}"
for file in "quadlets/${user}/"*.volume; do
if [[ -f "${file}" ]]; then
content="$(grep "Device" "${file}")"
if [[ "${content}" =~ ^Device=/var/mnt/nas/containers/${user}/storage/(.+)$ ]]; then
volume="${BASH_REMATCH[1]}"
printf '%s' "${directory_template_user//__VOLUME__/${volume}}" >> "${user_butane}"
else
echo "Not found! ${content}"
fi
fi
done
fi
printf '%s' "${files_template//__USER__/${user}}" >> "${user_butane}"
if [[ -d "quadlets/${user}" ]]; then
quadlet_template_user="${quadlet_template//__USER__/${user}}"
for file in "quadlets/${user}/"*; do
filename="$(basename "${file}")"
printf '%s' "${quadlet_template_user//__FILE__/${filename}}" >> "${user_butane}"
done
fi
if [[ -d "home/${user}" ]]; then
home_template_user="${home_template//__USER__/${user}}"
for file in "home/${user}/"*; do
filename="$(basename "${file}")"
printf '%s' "${home_template_user//__FILE__/${filename}}" >> "${user_butane}"
done
fi
if [[ -d "services/${user}" ]]; then
service_template_user="${service_template//__USER__/${user}}"
for file in "services/${user}/"*; do
filename="$(basename "${file}")"
printf '%s' "${service_template_user//__FILE__/${filename}}" >> "${user_butane}"
done
fi
podman run --rm --interactive --security-opt label=disable --volume "${PWD}:/pwd" --workdir /pwd quay.io/coreos/butane:release --pretty --strict -d /pwd "${user_butane}" >| "users/${user}.ign"
done
podman run --rm --interactive --security-opt label=disable --volume "${PWD}:/pwd" --workdir /pwd quay.io/coreos/butane:release --pretty --strict -d /pwd pi4.bu >| pi4.ign

2
home/arr/.secrets Normal file
View File

@@ -0,0 +1,2 @@
vpn-password=em7nvgebJxKfLudBaP2kL5sW
vpn-user=qkidWqgZDC8CxDmPaHiHyMY4

1
home/gitea/.secrets Normal file
View File

@@ -0,0 +1 @@
database-password=gD6J2CRDpRGI5f14QSmF0SuBdhYAEDdy

View File

@@ -0,0 +1,2 @@
jdownloader-email=guillaume.tache@gmail.com
jdownloader-password=^v2NL*!4GL*Ry%~B

1
home/navidrome/.secrets Normal file
View File

@@ -0,0 +1 @@
encryption-key=dFUu7Iu7tDrRtOOwFrgCAbgEuTvXeFKj

6
home/nextcloud/.secrets Normal file
View File

@@ -0,0 +1,6 @@
database-password=7w6,{R_C=LdZ@9iy
database-root-password=[-B#xMVj~\3X*vC>
database-user=nextcloud
nextcloud-admin-password=tcf@fg]%2BL]K*p`
nextcloud-admin-user=admin
nextcloud-redis-password=AznBSv9lCflXg2z0

View File

@@ -0,0 +1,4 @@
#!/bin/bash
set -o errexit -o pipefail -o noclobber -o nounset
podman exec nextcloud ./occ preview:pre-generate

2
home/paperless/.secrets Normal file
View File

@@ -0,0 +1,2 @@
database-password=paperless
paperless-secret-key=9+Zw}(Nqv<>#@=s2^%a_hMlh@fBmmQch[<_dS{#tP=^b8S)*{Mc(JrI1SmK`r4=n

1
home/pihole/.secrets Normal file
View File

@@ -0,0 +1 @@
webserver-password=.\_,`>ol9=.f+Y{R

View File

@@ -0,0 +1,4 @@
#!/bin/bash
set -o errexit -o noclobber -o pipefail -o nounset
podman exec unbound sh -c "/usr/bin/curl -sSL https://www.internic.net/domain/named.cache -o /usr/local/unbound/iana.d/root.hints"

View File

@@ -0,0 +1,7 @@
#!/bin/bash
set -o errexit -o noclobber -o pipefail -o nounset
podman exec unbound sh -c "curl -sSL https://www.internic.net/domain/named.cache -o /usr/local/unbound/iana.d/root.hints"
podman exec unbound sh -c "curl -sSL https://www.internic.net/domain/root.zone -o /usr/local/unbound/iana.d/root.zone"
podman exec unbound sh -c "unbound-anchor -v -a /usr/local/unbound/iana.d/root.key"
systemctl --user restart unbound

View File

@@ -0,0 +1,2 @@
vpn-password=em7nvgebJxKfLudBaP2kL5sW
vpn-user=qkidWqgZDC8CxDmPaHiHyMY4

2
home/root/.secrets Normal file
View File

@@ -0,0 +1,2 @@
tga-credentials=tga:9yL5b4+WqM
zero-credentials=zero:38cjbsqogkHbsq36uXkWgCpla3cxYopL

8
home/root/copy-music.sh Normal file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
set -o errexit -o pipefail -o noclobber -o nounset
target=/var/mnt/nas/containers/navidrome/storage/music
ugid="$(stat -c "%U:%G" "${target}")"
source=/var/mnt/nas/containers/nextcloud/storage/data/__groupfolders/1/media/music
podman run --rm -v "${source}":/input -v "${target}":/output docker.io/eeacms/rsync -a /input /output
chown -R "${ugid}" "${target}"

View File

@@ -0,0 +1,28 @@
#!/bin/bash
set -o errexit -o pipefail -o noclobber -o nounset
echo "Running $(date)"
torrents=/var/mnt/nas/containers/qbittorrent/storage/torrents
jdownloader=/var/mnt/nas/containers/jdownloader/storage/output/completed
target=/var/mnt/nas/containers/nextcloud/storage/data/__groupfolders/1/downloads
num_torrents="$(find "${torrents}" -maxdepth 1 -type f | wc -l)" || echo 0
if [[ "${num_torrents}" -gt 0 ]]; then
find "${torrents}" -maxdepth 1 -type f -exec mv {} "${target}/" \;
fi
echo "Found ${num_torrents} torrent files"
num_jdownloader="$(ls "${jdownloader}" | wc -l)" || echo 0
if [[ "${num_jdownloader}" -gt 0 ]]; then
mv "${jdownloader}/"* "${target}/"
fi
echo "Found ${num_jdownloader} jdownloader files"
total_files=$(("${num_torrents}" + "${num_jdownloader}"))
if [[ "${total_files}" -gt 0 ]]; then
ugid="$(stat -c "%U:%G" "${target}")"
chown -R "${ugid}" "${target}/"*
chmod 755 "${target}/"*
echo "Running podman"
cd /var/home/nextcloud
sudo -u nextcloud podman exec -it nextcloud bash -c "/var/www/html/occ groupfolders:scan 1"
cd -
fi

1
home/synapse/.secrets Normal file
View File

@@ -0,0 +1 @@
database-password=EdW2lUOj6kY8Z2ti07wB

1
home/tga/.dyndns Normal file
View File

@@ -0,0 +1 @@
username=tga&password=xpkV4kGDH592WZ394fTv&hostname=gtache.ch

13
home/tga/dyndns.sh Normal file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
set -o errexit -o pipefail -o noclobber -o nounset -o errtrace -o functrace
update_url=https://infomaniak.com/nic/update
subdomains=(git home komga mail matrix mealie navidrome nextcloud nexus odoo paperless photos pihole torrent wallabag)
data_file="${HOME}/.dyndns"
file="${HOME}/tmp_data.txt"
for subdomain in "${subdomains[@]}"; do
sed "s/gtache.ch/${subdomain}.gtache.ch/" "${data_file}" >| "${file}"
curl -d "@${file}" -X POST "${update_url}"
done
rm -f "${file}"
curl -d "@${data_file}" -X POST "${update_url}"

2
home/wallabag/.secrets Normal file
View File

@@ -0,0 +1,2 @@
database-password=YdBYea47YBCpjhL7ped9
database-root-password=zUMuEkTzOG8CH8VjvLXE

View File

@@ -0,0 +1,14 @@
# Enabled by install-additional-packages.service to run after first reboot
[Unit]
After=network-online.target
Wants=network-online.target
ConditionPathExists=!/var/lib/configure-firewalld
[Service]
Type=oneshot
ExecStart=/opt/bin/configure-firewalld.sh
ExecStartPost=/usr/bin/touch /var/lib/configure-firewalld
RemainAfterExit=true
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,48 @@
#!/bin/bash
set -o errexit -o pipefail -o noclobber -o nounset -o errtrace -o functrace
# Run after first reboot when firewalld and fail2ban are installed
systemctl enable --now firewalld
firewall-cmd --zone=internal --add-source=192.168.0.0/16 --add-source=172.16.0.0/12 --add-source=10.0.0.0/8 --permanent
firewall-cmd --zone=internal --add-service=ssh --permanent
firewall-cmd --zone=internal --add-service=dns --permanent
firewall-cmd --zone=internal --add-service=samba --permanent
firewall-cmd --zone=internal --add-port=5335/tcp --permanent
firewall-cmd --zone=internal --add-port=5335/udp --permanent
firewall-cmd --zone=internal --add-port=3129/tcp --permanent
firewall-cmd --zone=internal --add-port=3129/udp --permanent
firewall-cmd --zone=internal --add-port=9090/tcp --permanent
firewall-cmd --zone=internal --add-port=9090/udp --permanent
firewall-cmd --zone=internal --add-port=2222/tcp --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --add-port=8080/udp --permanent
firewall-cmd --add-port=4443/tcp --permanent
firewall-cmd --add-port=4443/udp --permanent
firewall-cmd --add-port=6881/tcp --permanent
firewall-cmd --zone=internal --add-service=http --permanent
firewall-cmd --zone=internal --add-service=https --permanent
firewall-cmd --zone=internal --add-port=8080/tcp --permanent
firewall-cmd --zone=internal --add-port=8080/udp --permanent
firewall-cmd --zone=internal --add-port=4443/tcp --permanent
firewall-cmd --zone=internal --add-port=4443/udp --permanent
firewall-cmd --zone=internal --add-port=6881/tcp --permanent
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
firewall-cmd --add-forward-port=port=80:proto=udp:toport=8080 --permanent
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=4443 --permanent
firewall-cmd --add-forward-port=port=443:proto=udp:toport=4443 --permanent
firewall-cmd --zone=internal --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
firewall-cmd --zone=internal --add-forward-port=port=80:proto=udp:toport=8080 --permanent
firewall-cmd --zone=internal --add-forward-port=port=443:proto=tcp:toport=4443 --permanent
firewall-cmd --zone=internal --add-forward-port=port=443:proto=udp:toport=4443 --permanent
firewall-cmd --reload
mv /root/jail.local /etc/fail2ban/jail.local
restorecon -v /etc/fail2ban/jail.local
systemctl enable --now fail2ban

View File

@@ -0,0 +1,15 @@
[Unit]
After=systemd-user-sessions.service
After=network-online.target
Wants=network-online.target
Wants=systemd-user-sessions.service
ConditionPathExists=!/var/lib/quadlets-enabled
[Service]
Type=oneshot
ExecStart=/opt/bin/enable-all-quadlets.sh
ExecStartPost=/usr/bin/touch /var/lib/quadlets-enabled
RemainAfterExit=true
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,35 @@
#!/bin/bash
set -o errexit -o pipefail -o noclobber -o nounset -o errtrace -o functrace
setsebool -P container_use_devices on
setsebool -P openvpn_run_unconfined on
semanage fcontext -a -t container_file_t "/mnt/nas(/.*)?"
#semanage fcontext -a -t container_file_t "/mnt/nas/containers/.*/storage/.*(/.*)?"
restorecon -vR /mnt/nas
users=("gitea" "homeassistant" "jdownloader" "kiwix" "komga" "navidrome" "nextcloud" "nginx" "pairdrop" "paperless" "pihole" "qbittorrent" "synapse" "wallabag")
for user in "${users[@]}"; do
chown -R "${user}:${user}" "/var/home/${user}"
secrets_file="/var/home/${user}/.secrets"
if [[ -f "${secrets_file}" ]];then
sudo -u "${user}" /opt/bin/add-secrets.sh "${secrets_file}"
fi
systemctl --user -M "${user}@" daemon-reload
systemctl --user -M "${user}@" enable --now "podman-auto-update.timer" || true
systemctl --user -M "${user}@" stop "${user}.service" || true
systemctl --user -M "${user}@" start "${user}.service"
echo "${user} done"
done
systemctl --user -M "arr@" daemon-reload
systemctl --user -M "arr@" start "overseerr.service"
systemctl --user -M "tga@" daemon-reload
systemctl --user -M "tga@" enable --now "update-dyndns.timer"
systemctl --user -M "kiwix@" enable --now "clone-zim-updater.service"
systemctl --user -M "nextcloud@" enable --now "pre-generate-preview.timer"
systemctl --user -M "pihole@" enable --now "update-hints.timer"
systemctl --user -M "pihole@" enable --now "update-root.timer"
/opt/bin/add-secrets.sh /root/.secrets
systemctl daemon-reload
systemctl start samba.service

143
pi4.bu Normal file
View File

@@ -0,0 +1,143 @@
variant: fcos
version: 1.6.0
ignition:
config:
merge:
- local: users/arr.ign
- local: users/gitea.ign
- local: users/homeassistant.ign
- local: users/jdownloader.ign
- local: users/kiwix.ign
- local: users/komga.ign
- local: users/navidrome.ign
- local: users/nextcloud.ign
- local: users/nginx.ign
- local: users/pairdrop.ign
- local: users/paperless.ign
- local: users/pihole.ign
- local: users/qbittorrent.ign
- local: users/synapse.ign
- local: users/tga.ign
- local: users/wallabag.ign
passwd:
users:
- name: tga
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPU3HVxgnW01J1p7fzs3urKETfkhH++liutmaqe4xe20 tga@fedora
groups:
- sudo
- wheel
- name: zero
storage:
disks:
- device: /dev/disk/by-id/ata-WDC_WD120EFBX-68B0EN0_5QKYB19B
wipe_table: false
partitions:
- number: 1
start_mib: 0
wipe_partition_entry: false
should_exist: true
resize: false
- device : /dev/disk/by-id/ata-WDC_WD120EFGX-68CPHN0_WD-B00K2ELD
wipe_table: false
partitions:
- number: 1
start_mib: 0
wipe_partition_entry: false
should_exist: true
resize: false
filesystems:
- device: /dev/disk/by-label/nas
format: btrfs
path: /var/mnt/nas
wipe_filesystem: false
label: nas
uuid: ddc68e10-2b26-4267-ad9c-8ee7753497d9
mount_options:
- defaults
- noatime
- nofail
with_mount_unit: true
files:
- path: /opt/bin/enable-all-quadlets.sh
contents:
local: init/enable-all-quadlets.sh
mode: 0755
- path: /opt/bin/configure-firewalld.sh
contents:
local: init/configure-firewalld.sh
mode: 0755
- path: /opt/bin/add-secrets.sh
contents:
local: files/add-secrets.sh
mode: 0755
- path: /etc/containers/systemd/samba.container
contents:
local: quadlets/samba/samba.container
- path: /root/.secrets
mode: 0600
contents:
local: /home/root/.secrets
- path: /root/scripts/move-downloads-nextcloud.sh
mode: 0755
contents:
local: /home/root/move-downloads-nextcloud.sh
- path: /root/scripts/copy-music.sh
mode: 0755
contents:
local: /home/root/copy-music.sh
- path: /etc/ssh/sshd_config.d/99-custom
mode: 0644
contents:
local: files/sshd_config
- path: /etc/smartmontools/smartd.conf
mode: 0644
overwrite: true
contents:
local: files/smartd.conf
- path: /etc/sudoers.d/99-poweroff
mode: 0644
contents:
local: files/poweroff
- path: /root/jail.local
mode: 0644
contents:
local: files/jail.local
systemd:
units:
- name: fstrim.timer
enabled: true
mask: false
- name: docker.service
enabled: false
mask: true
- name: enable-all-quadlets.service
enabled: false
contents_local: init/enable-all-quadlets.service
mask: false
- name: configure-firewalld.service
enabled: false
contents_local: init/configure-firewalld.service
mask: false
- name: move-downloads-nextcloud.timer
enabled: false
contents_local: files/move-downloads-nextcloud.timer
mask: false
- name: move-downloads-nextcloud.service
enabled: false
contents_local: files/move-downloads-nextcloud.service
mask: false
- name: copy-music.timer
enabled: false
contents_local: files/copy-music.timer
mask: false
- name: copy-music.service
enabled: false
contents_local: files/copy-music.service
mask: false
- name: install-additional-packages.service
enabled: true
contents_local: files/install-additional-packages.service
mask: false
boot_device:
layout: aarch64

8
quadlets/arr/arr.pod Normal file
View File

@@ -0,0 +1,8 @@
[Pod]
PodName=arr
PublishPort=9018:8080
PublishPort=9019:8686
PublishPort=9020:8989
PublishPort=9021:9696
PublishPort=9022:7878
PublishPort=9023:6767

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/arr/storage/bazarr-config
Driver=local
Options=bind
Type=none
VolumeName=bazarr-config

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/arr/storage/bazarr-data
Driver=local
Options=bind
Type=none
VolumeName=bazarr-data

View File

@@ -0,0 +1,24 @@
[Unit]
Description=Bazarr container
After=gluetun.container
Requires=gluetun.container
[Container]
AutoUpdate=registry
ContainerName=bazarr
Environment=PGID=1000
Environment=PUID=1000
Environment=TZ=Europe/Zurich
Image=lscr.io/linuxserver/bazarr:latest
Network=gluetun.container
Pod=arr.pod
StartWithPod=true
Timezone=Europe/Zurich
Volume=bazarr-config.volume:/config
Volume=bazarr-data.volume:/data
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,26 @@
[Unit]
Description=Arr* Gluetun container
[Container]
AddCapability=NET_ADMIN
AddDevice=/dev/net/tun:/dev/net/tun
AutoUpdate=registry
ContainerName=gluetun
Environment=OPENVPN_VERSION=2.5
Environment=SERVER_COUNTRIES=Netherlands
Environment=UPDATER_PERIOD=
Environment=VPN_SERVICE_PROVIDER=nordvpn
Environment=VPN_TYPE=openvpn
Environment=TZ=Europe/Zurich
Image=docker.io/qmcgaw/gluetun:v3.40
Pod=arr.pod
Secret=vpn-user,type=env,target=OPENVPN_USER
Secret=vpn-password,type=env,target=OPENVPN_PASSWORD
StartWithPod=true
Timezone=Europe/Zurich
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/arr/storage/lidarr-config
Driver=local
Options=bind
Type=none
VolumeName=lidarr-config

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/arr/storage/lidarr-data
Driver=local
Options=bind
Type=none
VolumeName=lidarr-data

View File

@@ -0,0 +1,24 @@
[Unit]
Description=Lidarr container
After=gluetun.container
Requires=gluetun.container
[Container]
AutoUpdate=registry
ContainerName=lidarr
Environment=PGID=1000
Environment=PUID=1000
Environment=TZ=Europe/Zurich
Image=lscr.io/linuxserver/lidarr:latest
Network=gluetun.container
Pod=arr.pod
StartWithPod=true
Timezone=Europe/Zurich
Volume=lidarr-config.volume:/config
Volume=lidarr-data.volume:/data
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/arr/storage/overseerr-config
Driver=local
Options=bind
Type=none
VolumeName=overseerr-config

View File

@@ -0,0 +1,23 @@
[Unit]
Description=Overseerr container
After=gluetun.container
Requires=gluetun.container
[Container]
AutoUpdate=registry
ContainerName=overseerr
Environment=LOG_LEVEL=debug
Environment=PORT=8080
Environment=TZ=Europe/Zurich
Image=docker.io/sctx/overseerr:latest
Network=gluetun.container
Pod=arr.pod
StartWithPod=true
Timezone=Europe/Zurich
Volume=overseerr-config.volume:/app/config
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/arr/storage/prowlarr-config
Driver=local
Options=bind
Type=none
VolumeName=prowlarr-config

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/arr/storage/prowlarr-data
Driver=local
Options=bind
Type=none
VolumeName=prowlarr-data

View File

@@ -0,0 +1,24 @@
[Unit]
Description=Prowlarr container
After=gluetun.container
Requires=gluetun.container
[Container]
AutoUpdate=registry
ContainerName=prowlarr
Environment=PGID=1000
Environment=PUID=1000
Environment=TZ=Europe/Zurich
Image=lscr.io/linuxserver/prowlarr:latest
Network=gluetun.container
Pod=arr.pod
StartWithPod=true
Timezone=Europe/Zurich
Volume=prowlarr-config.volume:/config
Volume=prowlarr-data.volume:/data
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/arr/storage/radarr-config
Driver=local
Options=bind
Type=none
VolumeName=radarr-config

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/arr/storage/radarr-data
Driver=local
Options=bind
Type=none
VolumeName=radarr-data

View File

@@ -0,0 +1,24 @@
[Unit]
Description=Radarr container
After=gluetun.container
Requires=gluetun.container
[Container]
AutoUpdate=registry
ContainerName=radarr
Environment=PGID=1000
Environment=PUID=1000
Environment=TZ=Europe/Zurich
Image=lscr.io/linuxserver/radarr:latest
Network=gluetun.container
Pod=arr.pod
StartWithPod=true
Timezone=Europe/Zurich
Volume=radarr-config.volume:/config
Volume=radarr-data.volume:/data
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/arr/storage/sonarr-config
Driver=local
Options=bind
Type=none
VolumeName=sonarr-config

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/arr/storage/sonarr-data
Driver=local
Options=bind
Type=none
VolumeName=sonarr-data

View File

@@ -0,0 +1,24 @@
[Unit]
Description=Sonarr container
After=gluetun.container
Requires=gluetun.container
[Container]
AutoUpdate=registry
ContainerName=sonarr
Environment=PGID=1000
Environment=PUID=1000
Environment=TZ=Europe/Zurich
Image=lscr.io/linuxserver/sonarr:latest
Network=gluetun.container
Pod=arr.pod
StartWithPod=true
Timezone=Europe/Zurich
Volume=sonarr-config.volume:/config
Volume=sonarr-data.volume:/data
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/gitea/storage/data
Driver=local
Options=bind
Type=none
VolumeName=gitea-data

View File

@@ -0,0 +1,25 @@
[Unit]
Description=Gitea database container
[Container]
AutoUpdate=registry
ContainerName=gitea-database
Environment=POSTGRES_USER=gitea
Environment=POSTGRES_DB=gitea
Environment=TZ=Europe/Zurich
HealthCmd=pg_isready -U gitea
HealthInterval=30s
HealthTimeout=10s
HealthRetries=5
Image=docker.io/postgres:18
Pod=gitea.pod
Secret=database-password,type=env,target=POSTGRES_PASSWORD
StartWithPod=true
Timezone=Europe/Zurich
Volume=gitea-database.volume:/var/lib/postgresql
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/gitea/storage/database
Driver=local
Options=bind
Type=none
VolumeName=gitea-database

View File

@@ -0,0 +1,29 @@
[Unit]
Description=Gitea container
After=gitea-database.container
Requires=gitea-database.container
[Container]
AutoUpdate=registry
ContainerName=gitea
Environment=DOMAIN=git.gtache.ch
Environment=GITEA__database__DB_TYPE=postgres
Environment=GITEA__database__HOST=gitea-database:5432
Environment=GITEA__database__NAME=gitea
Environment=GITEA__database__USER=gitea
Environment=SSH_DOMAIN=git.gtache.ch
Environment=SSH_LISTEN_PORT=2222
Environment=SSH_PORT=2222
Environment=TZ=Europe/Zurich
Image=docker.io/gitea/gitea:latest
Pod=gitea.pod
Secret=database-password,type=env,target=GITEA__database__PASSWD
StartWithPod=true
Timezone=Europe/Zurich
Volume=gitea-data.volume:/data
[Service]
Restart=always
[Install]
WantedBy=default.target

4
quadlets/gitea/gitea.pod Normal file
View File

@@ -0,0 +1,4 @@
[Pod]
PodName=gitea
PublishPort=9007:3000
PublishPort=2222:2222

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/homeassistant/storage/config
Driver=local
Options=bind
Type=none
VolumeName=homeassistant-config

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/homeassistant/storage/ssh
Driver=local
Options=bind
Type=none
VolumeName=homeassistant-ssh

View File

@@ -0,0 +1,21 @@
[Unit]
Description=Homeassistant container
[Container]
AutoUpdate=registry
ContainerName=homeassistant
Environment=PUID=1006
Environment=PGID=1006
Environment=TZ=Europe/Zurich
Image=lscr.io/linuxserver/homeassistant:latest
Pod=homeassistant.pod
StartWithPod=true
Timezone=Europe/Zurich
Volume=homeassistant-config.volume:/config
Volume=homeassistant-ssh.volume:/root/.ssh
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,3 @@
[Pod]
PodName=homeassistant
PublishPort=9003:8123

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/jdownloader/storage/config
Driver=local
Options=bind
Type=none
VolumeName=jdownloader-config

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/jdownloader/storage/output
Driver=local
Options=bind
Type=none
VolumeName=jdownloader-output

View File

@@ -0,0 +1,25 @@
[Unit]
Description=JDownloader container
[Container]
AutoUpdate=registry
ContainerName=jdownloader
Environment=GROUP_ID=1005
Environment=JDOWNLOADER_HEADLESS=1
Environment=MYJDOWNLOADER_DEVICE_NAME=pi4
Environment=TZ=Europe/Zurich
Environment=USER_ID=1005
Image=docker.io/jlesage/jdownloader-2:latest
Pod=jdownloader.pod
Secret=jdownloader-email,type=env,target=MYJDOWNLOADER_EMAIL
Secret=jdownloader-password,type=env,target=MYJDOWNLOADER_PASSWORD
StartWithPod=true
Timezone=Europe/Zurich
Volume=jdownloader-config.volume:/config
Volume=jdownloader-output.volume:/output
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,3 @@
[Pod]
PodName=jdownloader
PublishPort=3129:3129

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/kiwix/storage/data
Driver=local
Options=bind
Type=none
VolumeName=kiwix-data

View File

@@ -0,0 +1,18 @@
[Unit]
Description=Kiwix container
[Container]
AutoUpdate=registry
ContainerName=kiwix
Exec='*.zim'
Image=ghcr.io/kiwix/kiwix-serve:latest
Pod=kiwix.pod
StartWithPod=true
Timezone=Europe/Zurich
Volume=kiwix-data.volume:/data
[Service]
Restart=always
[Install]
WantedBy=default.target

3
quadlets/kiwix/kiwix.pod Normal file
View File

@@ -0,0 +1,3 @@
[Pod]
PodName=kiwix
PublishPort=9017:8080

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/komga/storage/config
Driver=local
Options=bind
Type=none
VolumeName=komga-config

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/komga/storage/data
Driver=local
Options=bind
Type=none
VolumeName=komga-data

View File

@@ -0,0 +1,19 @@
[Unit]
Description=Komga container
[Container]
AutoUpdate=registry
ContainerName=komga
Environment=TZ=Europe/Zurich
Image=docker.io/gotson/komga:latest
Pod=komga.pod
StartWithPod=true
Timezone=Europe/Zurich
Volume=komga-config.volume:/config
Volume=komga-data.volume:/data
[Service]
Restart=always
[Install]
WantedBy=default.target

3
quadlets/komga/komga.pod Normal file
View File

@@ -0,0 +1,3 @@
[Pod]
PodName=komga
PublishPort=9015:25600

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/navidrome/storage/data
Driver=local
Options=bind
Type=none
VolumeName=navidrome-data

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/navidrome/storage/music
Driver=local
Options=bind
Type=none
VolumeName=navidrome-music

View File

@@ -0,0 +1,20 @@
[Unit]
Description=Navidrome container
[Container]
AutoUpdate=registry
ContainerName=navidrome
Environment=TZ=Europe/Zurich
Image=ghcr.io/navidrome/navidrome:latest
Pod=navidrome.pod
Secret=encryption-key,type=env,target=ND_PASSWORDENCRYPTIONKEY
StartWithPod=true
Timezone=Europe/Zurich
Volume=navidrome-data.volume:/data
Volume=navidrome-music.volume:/music:ro
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,3 @@
[Pod]
PodName=navidrome
PublishPort=9006:4533

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/nextcloud/storage/apps
Driver=local
Options=bind
Type=none
VolumeName=nextcloud-apps

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/nextcloud/storage/config
Driver=local
Options=bind
Type=none
VolumeName=nextcloud-config

View File

@@ -0,0 +1,30 @@
[Unit]
Description=Nextcloud cron container
After=nextcloud-database.container
After=nextcloud-redis.container
After=nextcloud.container
Requires=nextcloud-database.container
Requires=nextcloud-redis.container
Requires=nextcloud.container
[Container]
AutoUpdate=registry
ContainerName=nextcloud-cron
Entrypoint=/cron.sh
Environment=TZ=Europe/Zurich
Image=docker.io/nextcloud:32
Pod=nextcloud.pod
StartWithPod=true
Timezone=Europe/Zurich
Volume=nextcloud-html.volume:/var/www/html
Volume=nextcloud-config.volume:/var/www/html/config
Volume=nextcloud-apps.volume:/var/www/html/custom_apps
Volume=nextcloud-themes.volume:/var/www/html/themes
Volume=/var/mnt/nas/containers/nextcloud/storage/redis-session.ini:/usr/local/etc/php/conf.d/redis-session.ini
Volume=nextcloud-data.volume:/var/www/html/data
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/nextcloud/storage/data
Driver=local
Options=bind
Type=none
VolumeName=nextcloud-data

View File

@@ -0,0 +1,22 @@
[Unit]
Description=Nextcloud database container
[Container]
AutoUpdate=registry
ContainerName=nextcloud-database
Environment=MYSQL_DATABASE=nextcloud
Environment=TZ=Europe/Zurich
Image=docker.io/mariadb:latest
Pod=nextcloud.pod
Secret=database-user,type=env,target=MYSQL_USER
Secret=database-password,type=env,target=MYSQL_PASSWORD
Secret=database-root-password,type=env,target=MYSQL_ROOT_PASSWORD
StartWithPod=true
Timezone=Europe/Zurich
Volume=nextcloud-database.volume:/var/lib/mysql
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/nextcloud/storage/database
Driver=local
Options=bind
Type=none
VolumeName=nextcloud-database

View File

@@ -0,0 +1,29 @@
[Unit]
Description=Nextcloud HaRP container
After=nextcloud-database.container
After=nextcloud-redis.container
Requires=nextcloud-database.container
Requires=nextcloud-redis.container
[Container]
AutoUpdate=registry
ContainerName=nextcloud
Environment=NC_INSTANCE_URL=http://nextcloud.local
Environment=TZ=Europe/Zurich
Image=ghcr.io/nextcloud/nextcloud-appapi-harp:release
Pod=nextcloud.pod
Secret=hp-key,type=env,target=HP_SHARED_KEY
StartWithPod=true
Timezone=Europe/Zurich
Volume=nextcloud-html.volume:/var/www/html
Volume=nextcloud-config.volume:/var/www/html/config
Volume=nextcloud-apps.volume:/var/www/html/custom_apps
Volume=nextcloud-themes.volume:/var/www/html/themes
Volume=/var/mnt/nas/containers/nextcloud/storage/redis-session.ini:/usr/local/etc/php/conf.d/redis-session.ini
Volume=nextcloud-data.volume:/var/www/html/data
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/nextcloud/storage/html
Driver=local
Options=bind
Type=none
VolumeName=nextcloud-html

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/nextcloud/storage/php-config
Driver=local
Options=bind
Type=none
VolumeName=nextcloud-php-config

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/nextcloud/storage/redis-config
Driver=local
Options=bind
Type=none
VolumeName=nextcloud-redis-config

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/nextcloud/storage/redis-data
Driver=local
Options=bind
Type=none
VolumeName=nextcloud-redis-data

View File

@@ -0,0 +1,21 @@
[Unit]
Description=Nextcloud Redis container
[Container]
AutoUpdate=registry
ContainerName=nextcloud-redis
Environment=TZ=Europe/Zurich
Exec=/bin/sh -c 'redis-server --appendonly yes --requirepass $${REDIS_PASSWORD}'
Image=docker.io/redis:alpine
Pod=nextcloud.pod
Secret=nextcloud-redis-password,type=env,target=REDIS_PASSWORD
StartWithPod=true
Timezone=Europe/Zurich
Volume=nextcloud-redis-config.volume:/usr/local/etc/redis
Volume=nextcloud-redis-data.volume:/data
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/nextcloud/storage/themes
Driver=local
Options=bind
Type=none
VolumeName=nextcloud-themes

View File

@@ -0,0 +1,40 @@
[Unit]
Description=Nextcloud container
After=nextcloud-database.container
After=nextcloud-redis.container
Requires=nextcloud-database.container
Requires=nextcloud-redis.container
[Container]
AutoUpdate=registry
ContainerName=nextcloud
Environment=MYSQL_DATABASE=nextcloud
Environment=MYSQL_HOST=nextcloud-database
Environment=NEXTCLOUD_TRUSTED_DOMAINS=localhost host.containers.internal nextcloud.gtache.ch
Environment=PHP_MEMORY_LIMIT=1024M
Environment=PHP_UPLOAD_LIMIT=100G
Environment=REDIS_HOST=nextcloud-redis
Environment=TRUSTED_PROXIES=192.168.0.0/16 172.16.0.0/12 169.254.0.0/16 10.0.0.0/8
Environment=TZ=Europe/Zurich
Image=docker.io/nextcloud:32
Pod=nextcloud.pod
Secret=database-user,type=env,target=MYSQL_USER
Secret=database-password,type=env,target=MYSQL_PASSWORD
Secret=nextcloud-admin-user,type=env,target=NEXTCLOUD_ADMIN_USER
Secret=nextcloud-admin-password,type=env,target=NEXTCLOUD_ADMIN_PASSWORD
Secret=nextcloud-redis-password,type=env,target=REDIS_HOST_PASSWORD
StartWithPod=true
Timezone=Europe/Zurich
Volume=nextcloud-html.volume:/var/www/html
Volume=nextcloud-config.volume:/var/www/html/config
Volume=nextcloud-apps.volume:/var/www/html/custom_apps
Volume=nextcloud-themes.volume:/var/www/html/themes
Volume=/var/mnt/nas/containers/nextcloud/storage/redis-session.ini:/usr/local/etc/php/conf.d/redis-session.ini
Volume=/var/mnt/nas/containers/nextcloud/storage/remoteip.conf:/etc/apache2/conf-enabled/remoteip.conf
Volume=nextcloud-data.volume:/var/www/html/data
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,3 @@
[Pod]
PodName=nextcloud
PublishPort=9004:80

View File

@@ -0,0 +1,33 @@
[Unit]
Description=NGINX ACME container
After=nginx.container
Requires=nginx.container
[Container]
AutoUpdate=registry
ContainerName=nginx-acme
Environment=DEFAULT_EMAIL=guillaume.tache@hotmail.com
Environment=TZ=Europe/Zurich
Image=docker.io/nginxproxy/acme-companion:2.2.9
Pod=nginx.pod
StartWithPod=true
Timezone=Europe/Zurich
Volume=/var/mnt/nas/containers/nginx/storage/network_internal.conf:/etc/nginx/network_internal.conf:ro
Volume=/var/mnt/nas/containers/nginx/storage/nginx.conf:/etc/nginx/nginx.conf:ro
Volume=nginx-certs.volume:/etc/nginx/certs:z
Volume=nginx-config.volume:/etc/nginx/conf.d
Volume=nginx-html.volume:/usr/share/nginx/html
Volume=nginx-stream.volume:/etc/nginx/stream.d
Volume=nginx-vhost.volume:/etc/nginx/vhost.d
Volume=nginx-acme:/etc/acme.sh:Z
Volume=/var/mnt/nas/containers/nginx/storage/app/entrypoint.sh:/app/entrypoint.sh:ro
Volume=/var/mnt/nas/containers/nginx/storage/app/functions.sh:/app/functions.sh:ro
Volume=/var/mnt/nas/containers/nginx/storage/app/start.sh:/app/start.sh:ro
Volume=/var/mnt/nas/containers/nginx/storage/app/letsencrypt_service:/app/letsencrypt_service:ro
Volume=/var/mnt/nas/containers/nginx/storage/app/letsencrypt_user_data:/app/letsencrypt_user_data:ro
[Service]
Restart=always
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,7 @@
[Volume]
Copy=true
Device=/var/mnt/nas/containers/nginx/storage/acme
Driver=local
Options=bind
Type=none
VolumeName=nginx-acme

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